@budibase/server 3.20.4 → 3.20.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builder/assets/{index-35373ad1.js → index-ca4f5326.js} +1 -1
- package/builder/index.html +1 -1
- package/dist/automation.js +6 -6
- package/dist/automation.js.map +3 -3
- package/dist/index.js +10 -10
- package/dist/index.js.map +3 -3
- package/dist/query.js +6 -6
- package/dist/query.js.map +3 -3
- package/package.json +2 -2
- package/specs/generate.ts +4 -4
- package/specs/openapi.json +2 -2
- package/specs/openapi.yaml +2 -2
package/dist/query.js
CHANGED
|
@@ -142,7 +142,7 @@ If you are using React Native, this API is not yet supported, see: https://react
|
|
|
142
142
|
`,EGt=XT.encode(wh),_Gt=2,E9=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)}"`:""}${wh}`;i?r=XT.encode(String(r).replace(/\r?\n|\r\n?/g,wh)):o+=`Content-Type: ${r.type||"application/octet-stream"}${wh}`,this.headers=XT.encode(o+wh),this.contentLength=i?r.byteLength:r.size,this.size=this.headers.byteLength+this.contentLength+_Gt,this.name=t,this.value=r}async*encode(){yield this.headers;let{value:t}=this;le.isTypedArray(t)?yield t:yield*ZDe(t),yield EGt}static escapeName(t){return String(t).replace(/[\r\n"]/g,r=>({"\r":"%0D","\n":"%0A",'"':"%22"})[r])}},SGt=a((e,t,r)=>{let{tag:n="form-data-boundary",size:i=25,boundary:o=n+"-"+le.generateString(i,wGt)}=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=XT.encode("--"+o+wh),u=XT.encode("--"+o+"--"+wh+wh),c=u.byteLength,l=Array.from(e.entries()).map(([p,d])=>{let h=new E9(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),LDe.Readable.from(async function*(){for(let p of l)yield s,yield*p.encode();yield u}())},"formDataToStream"),xGt=SGt,_9=class extends vh.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)}},TGt=_9,AGt=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"),RGt=AGt;function OGt(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(OGt,"speedometer");function IGt(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(IGt,"throttle");var Xw=a((e,t,r=3)=>{let n=0,i=OGt(50,250);return IGt(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"),SDe={flush:Eh.default.constants.Z_SYNC_FLUSH,finishFlush:Eh.default.constants.Z_SYNC_FLUSH},kGt={flush:Eh.default.constants.BROTLI_OPERATION_FLUSH,finishFlush:Eh.default.constants.BROTLI_OPERATION_FLUSH},xDe=le.isFunction(Eh.default.createBrotliDecompress),{http:CGt,https:DGt}=lWt.default,PGt=/https:?/,TDe=xa.protocols.map(e=>e+":"),ADe=a((e,[t,r])=>(e.on("end",r).on("error",r),t),"flushOnFinish");function NGt(e,t){e.beforeRedirects.proxy&&e.beforeRedirects.proxy(e),e.beforeRedirects.config&&e.beforeRedirects.config(e,t)}a(NGt,"dispatchBeforeRedirect");function ePe(e,t,r){let n=t;if(!n&&n!==!1){let i=eWt.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){ePe(o,t,o.href)},"beforeRedirect")}a(ePe,"setProxy");var LGt=typeof process<"u"&&le.kindOf(process)==="process",FGt=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"),UGt=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"),RDe=a((e,t)=>UGt(le.isObject(e)?e:{address:e,family:t}),"buildAddressEntry"),jGt=LGt&&a(function(t){return FGt(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=RGt(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=>RDe(ce)):[RDe(Le,G)];Q.all?be(Ne,Z):be(Ne,Z[0].address,Z[0].family)})},"lookup")}let g=new aWt.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 _h(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=N9(t.baseURL,t.url),w=new URL(v,xa.hasBrowserEnv?xa.origin:void 0),x=w.protocol||TDe[0];if(x==="data:"){let ae;if(p!=="GET")return Yw(n,i,{status:405,statusText:"method not allowed",headers:{},config:t});try{ae=bGt(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=vh.default.Readable.from(ae)),Yw(n,i,{data:ae,status:200,statusText:"OK",headers:new is,config:t})}if(TDe.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=xGt(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 cWt.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=vh.default.Readable.from(ZDe(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=vh.default.Readable.from(s,{objectMode:!1})),s=vh.default.pipeline([s,new EDe({maxRate:le.toFiniteNumber(k)})],le.noop),I&&s.on("progress",ADe(s,$N(M,Xw(zN(I),!1,3)))));let V;if(t.auth){let ae=t.auth.username||"",ie=t.auth.password||"";V=ae+":"+ie}if(!V&&w.username){let ae=w.username,ie=w.password;V=ae+":"+ie}V&&T.delete("authorization");let F;try{F=I9(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"+(xDe?", br":""),!1);let Y={path:F,method:p,headers:T.toJSON(),agents:{http:t.httpAgent,https:t.httpsAgent},auth:V,protocol:x,family:c,beforeRedirect:NGt,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,ePe(Y,t.proxy,x+"//"+w.hostname+(w.port?":"+w.port:"")+Y.path));let B,$=PGt.test(Y.protocol);if(Y.agent=$?t.httpsAgent:t.httpAgent,t.transport?B=t.transport:t.maxRedirects===0?B=$?uWt.default:sWt.default:(t.maxRedirects&&(Y.maxRedirects=t.maxRedirects),t.beforeRedirect&&(Y.beforeRedirects.config=t.beforeRedirect),B=$?DGt:CGt),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 EDe({maxRate:le.toFiniteNumber(U)});R&&ce.on("progress",ADe(ce,$N(be,Xw(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(Eh.default.createUnzip(SDe)),delete ie.headers["content-encoding"];break;case"deflate":Q.push(new TGt),Q.push(Eh.default.createUnzip(SDe)),delete ie.headers["content-encoding"];break;case"br":xDe&&(Q.push(Eh.default.createBrotliDecompress(kGt)),delete ie.headers["content-encoding"])}Ne=Q.length>1?vh.default.pipeline(Q,le.noop):Q[0];let G=vh.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,Yw(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))}Yw(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||k9;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 _h("Request stream has been aborted",t,m))}),s.pipe(m)}else m.end(s)},"dispatchHttpRequest"))},"httpAdapter"),MGt=xa.hasStandardBrowserEnv?a(function(){let t=xa.navigator&&/(msie|trident)/i.test(xa.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")(),BGt=xa.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(){}},ODe=a(e=>e instanceof is?{...e}:e,"headersToObject");function ly(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(ODe(l),ODe(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(ly,"mergeConfig");var tPe=a(e=>{let t=ly({},e),{data:r,withXSRFToken:n,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:u}=t;t.headers=s=is.from(s),t.url=I9(N9(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(xa.hasStandardBrowserEnv||xa.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(xa.hasStandardBrowserEnv&&(n&&le.isFunction(n)&&(n=n(t)),n||n!==!1&&MGt(t.url))){let l=i&&o&&BGt.read(o);l&&s.set(i,l)}return t},"resolveConfig"),qGt=typeof XMLHttpRequest<"u",$Gt=qGt&&function(e){return new Promise(a(function(r,n){let i=tPe(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};Yw(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||k9;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]=Xw(l,!0),y.addEventListener("progress",d)),c&&y.upload&&([p,h]=Xw(c),y.upload.addEventListener("progress",p),y.upload.addEventListener("loadend",h)),(i.cancelToken||i.signal)&&(f=a(w=>{y&&(n(!w||w.type?new _h(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=XDe(i.url);if(v&&xa.protocols.indexOf(v)===-1){n(new pt("Unsupported protocol "+v+":",pt.ERR_BAD_REQUEST,e));return}y.send(o||null)},"dispatchXhrRequest"))},zGt=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 _h(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"),WGt=zGt,GGt=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"),HGt=a(async function*(e,t){for await(let r of VGt(e))yield*GGt(r,t)},"readBytes"),VGt=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"),IDe=a((e,t,r,n)=>{let i=HGt(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",rPe=QN&&typeof ReadableStream=="function",KGt=QN&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),nPe=a((e,...t)=>{try{return!!e(...t)}catch{return!1}},"test"),QGt=rPe&&nPe(()=>{let e=!1,t=new Request(xa.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),kDe=64*1024,S9=rPe&&nPe(()=>le.isReadableStream(new Response("").body)),WN={stream:S9&&(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 YGt=a(async e=>{if(e==null)return 0;if(le.isBlob(e))return e.size;if(le.isSpecCompliantForm(e))return(await new Request(xa.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 KGt(e)).byteLength},"getBodyLength"),JGt=a(async(e,t)=>{let r=le.toFiniteNumber(e.getContentLength());return r??YGt(t)},"resolveBodyLength"),XGt=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}=tPe(e);l=l?(l+"").toLowerCase():"text";let h=WGt([i,o&&o.toAbortSignal()],s),m,g=h&&h.unsubscribe&&(()=>{h.unsubscribe()}),y;try{if(c&&QGt&&r!=="get"&&r!=="head"&&(y=await JGt(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,Xw(zN(c)));n=IDe(T.body,kDe,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=S9&&(l==="stream"||l==="response");if(S9&&(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,Xw(zN(u),!0))||[];v=new Response(IDe(v.body,kDe,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)=>{Yw(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)}}),x9={http:jGt,xhr:$Gt,fetch:XGt};le.forEach(x9,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});var CDe=a(e=>`- ${e}`,"renderReason"),ZGt=a(e=>le.isFunction(e)||e===null||e===!1,"isResolvedHandle"),iPe={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,!ZGt(r)&&(n=x9[(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(CDe).join(`
|
|
144
144
|
`):" "+CDe(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:x9};function m9(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new _h(null,e)}a(m9,"throwIfCancellationRequested");function DDe(e){return m9(e),e.headers=is.from(e.headers),e.data=d9.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),iPe.getAdapter(e.adapter||P9.adapter)(e).then(a(function(n){return m9(e),n.data=d9.call(e,e.transformResponse,n),n.headers=is.from(n.headers),n},"onAdapterResolution"),a(function(n){return JDe(n)||(m9(e),n&&n.response&&(n.response.data=d9.call(e,e.transformResponse,n.response),n.response.headers=is.from(n.response.headers))),Promise.reject(n)},"onAdapterRejection"))}a(DDe,"dispatchRequest");var L9={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{L9[e]=a(function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e},"validator")});var PDe={};L9.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&&!PDe[s]&&(PDe[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 eHt(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(eHt,"assertOptions");var T9={assertOptions:eHt,validators:L9},bh=T9.validators,Zw=class{static{a(this,"Axios")}constructor(t){this.defaults=t,this.interceptors={request:new vDe,response:new vDe}}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=ly(this.defaults,r);let{transitional:n,paramsSerializer:i,headers:o}=r;n!==void 0&&T9.assertOptions(n,{silentJSONParsing:bh.transitional(bh.boolean),forcedJSONParsing:bh.transitional(bh.boolean),clarifyTimeoutError:bh.transitional(bh.boolean)},!1),i!=null&&(le.isFunction(i)?r.paramsSerializer={serialize:i}:T9.assertOptions(i,{encode:bh.function,serialize:bh.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=[DDe.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=DDe.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=ly(this.defaults,t);let r=N9(t.baseURL,t.url);return I9(r,t.params,t.paramsSerializer)}};le.forEach(["delete","get","head","options"],a(function(t){Zw.prototype[t]=function(r,n){return this.request(ly(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(ly(u||{},{method:t,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:s}))},"httpMethod")}a(r,"generateHTTPMethod"),Zw.prototype[t]=r(),Zw.prototype[t+"Form"]=r(!0)},"forEachMethodWithData"));var BN=Zw,A9=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 _h(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}}},tHt=A9;function rHt(e){return a(function(r){return e.apply(null,r)},"wrap")}a(rHt,"spread");function nHt(e){return le.isObject(e)&&e.isAxiosError===!0}a(nHt,"isAxiosError");var R9={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(R9).forEach(([e,t])=>{R9[t]=e});var iHt=R9;function aPe(e){let t=new BN(e),r=UDe(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 aPe(ly(e,i))},"create"),r}a(aPe,"createInstance");var Bi=aPe(P9);Bi.Axios=BN;Bi.CanceledError=_h;Bi.CancelToken=tHt;Bi.isCancel=JDe;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=rHt;Bi.isAxiosError=nHt;Bi.mergeConfig=ly;Bi.AxiosHeaders=is;Bi.formToJSON=e=>YDe(le.isHTMLForm(e)?new FormData(e):e);Bi.getAdapter=iPe.getAdapter;Bi.HttpStatusCode=iHt;Bi.default=Bi;oPe.exports=Bi});var z9=S(rL=>{"use strict";Object.defineProperty(rL,"__esModule",{value:!0});var aHt=V1e(),oHt="4.0.1",Uc;(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"})(Uc||(Uc={}));function sHt(e,t){if(!e)throw new Error(t)}a(sHt,"assert");function uHt(e){return e?.replace(/\/+$/,"")}a(uHt,"removeTrailingSlash");async function cHt(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(cHt,"retriable");function lHt(){return new Date().getTime()}a(lHt,"currentTimestamp");function uPe(){return new Date().toISOString()}a(uPe,"currentISOTime");function gPe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}a(gPe,"safeSetTimeout");var eA=String.fromCharCode,cPe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",YN={};function fHt(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(fHt,"getBaseValue");var tA={compressToBase64:function(e){if(e==null)return"";let t=tA._compress(e,6,function(r){return cPe.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:tA._decompress(e.length,32,function(t){return fHt(cPe,e.charAt(t))})},compress:function(e){return tA._compress(e,16,function(t){return eA(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:tA._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=eA(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=eA(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++]=eA(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++]=eA(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++)}}},F9=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}},U9=class{static{a(this,"V7Generator")}constructor(t){this.timestamp=0,this.counter=0,this.random=t??pHt()}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)}},pHt=a(()=>({nextUint32:()=>Math.trunc(Math.random()*65536)*65536+Math.trunc(Math.random()*65536)}),"getDefaultRandom"),lPe,fPe=a(()=>dHt().toString(),"uuidv7"),dHt=a(()=>(lPe||(lPe=new U9)).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"}},rA=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 pPe(e){return typeof e=="object"&&(e instanceof ZN||e instanceof rA)}a(pPe,"isPostHogFetchError");var j9=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 F9,this._isInitialized=!1,sHt(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=uHt(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:pPe},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(Uc.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Uc.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Uc.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=fPe();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:uPe(),uuid:n?.uuid?n.uuid:fPe()};(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(Uc.Queue)||[];s.length>=this.maxQueueSize&&(s.shift(),console.info("Queue is full, the oldest event is dropped.")),s.push({message:i}),this.setPersistedProperty(Uc.Queue,s),this._events.emit(t,i),s.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=gPe(()=>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(Uc.Queue)||[];if(!t.length)return[];let r=t.slice(0,this.maxBatchSize),n=r.map(l=>l.message),i=a(()=>{let l=this.getPersistedProperty(Uc.Queue)||[];this.setPersistedProperty(Uc.Queue,l.slice(r.length))},"persistQueueChange"),o={api_key:this.apiKey,batch:n,sent_at:uPe()},s=JSON.stringify(o),u=this.captureMode==="form"?`${this.host}/e/?ip=1&_=${lHt()}&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(tA.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 rA||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 cHt(async()=>{let s=null;try{s=await this.fetch(t,{signal:AbortSignal.timeout(i??this.requestTimeout),...r})}catch(c){throw new rA(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(Uc.Queue)||[]).length!==0;){await this.flush();let i=Date.now();if(r<i)break}}catch(r){if(!pPe(r))throw r;console.error("Error while shutting down PostHog",r)}}},M9=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}},B9=typeof fetch<"u"?fetch:typeof global.fetch<"u"?global.fetch:void 0;if(!B9){let e=sPe();B9=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 yPe=B9,hHt=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)}},q9=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||yPe,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=vPe(s,i,this.cohorts,this.debugMode):c=bPe(s,i),!c)return!1}if(o==null)return!0}return!(o!=null&&dPe(t.key,r)>o/100)}getMatchingVariant(t,r){let n=dPe(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=gPe(()=>{i.abort()},this.timeout),r.signal=i.signal}try{return await this.fetch(t,r)}finally{clearTimeout(n)}}stopPoller(){clearTimeout(this.poller)}};function dPe(e,t,r=""){let n=aHt.createHash();return n.update(`${e}.${t}${r}`),parseInt(n.digest("hex").slice(0,15),16)/hHt}a(dPe,"_hash");function bPe(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 hPe(String(n))&&String(o).match(String(n))!==null;case"not_regex":return hPe(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=mHt(String(n));if(c==null&&(c=mPe(n)),c==null)throw new ia(`Invalid date: ${n}`);let l=mPe(o);return["is_date_before"].includes(i)?l<c:l>c}default:throw new ia(`Unknown operator: ${i}`)}}a(bPe,"matchProperty");function vPe(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 wPe(o,t,r,n)}a(vPe,"matchCohort");function wPe(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=wPe(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=vPe(u,t,r,n):c=bPe(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(wPe,"matchPropertyGroup");function hPe(e){try{return new RegExp(e),!0}catch{return!1}}a(hPe,"isValidRegex");function mPe(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(mPe,"convertToDateTime");function mHt(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(mHt,"relativeDateParseForFeatureFlagMatching");var gHt=30*1e3,yHt=50*1e3,$9=class extends j9{static{a(this,"PostHog")}constructor(t,r={}){r.captureMode=r?.captureMode||"json",super(t,r),this._memoryStorage=new M9,this.options=r,r.personalApiKey&&(this.featureFlagsPoller=new q9({pollingInterval:typeof r.featureFlagsPollingInterval=="number"?r.featureFlagsPollingInterval:gHt,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||yHt}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):yPe(t,r)}getLibraryId(){return"posthog-node"}getLibraryVersion(){return oHt}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=$9;rL.PostHogSentryIntegration=tL});var K9=S(nA=>{"use strict";var SHt=nA&&nA.__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)},H9,APe;Object.defineProperty(nA,"__esModule",{value:!0});var iL=Q9(),V9=class{static{a(this,"CannedPolicy")}constructor(t,r,n){H9.add(this),this.url=t,this.expireTime=Math.round(r/1e3)||void 0,this.ipRange=n}toJSON(){SHt(this,H9,"m",APe).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)}};H9=new WeakSet,APe=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");nA.default=V9});var Q9=S(Ta=>{"use strict";var xHt=Ta&&Ta.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ta,"__esModule",{value:!0});Ta.assert=Ta.getPrivateKey=Ta.getIpRange=Ta.getExpireTime=Ta.createPolicySignature=Ta.createPolicy=Ta.normalizeBase64=void 0;var THt=require("fs"),AHt=require("crypto"),RHt=xHt(K9());function OHt(e){return e.replace(/\+/g,"-").replace(/=/g,"_").replace(/\//g,"~")}a(OHt,"normalizeBase64");Ta.normalizeBase64=OHt;function IHt(e,t,r){let n=Math.round(Date.now()+18e5);return t=t||n,new RHt.default(e,t,r)}a(IHt,"createPolicy");Ta.createPolicy=IHt;function kHt(e,t){let r=(0,AHt.createSign)("RSA-SHA1");return r.update(e.toJSON()),r.sign(t,"base64")}a(kHt,"createPolicySignature");Ta.createPolicySignature=kHt;function CHt(e){return+e.expireTime||null}a(CHt,"getExpireTime");Ta.getExpireTime=CHt;function DHt(e){return e.ipRange||null}a(DHt,"getIpRange");Ta.getIpRange=DHt;function PHt(e){let t=e.privateKeyString,r;if(e.privateKeyPath&&(r=(0,THt.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(PHt,"getPrivateKey");Ta.getPrivateKey=PHt;function NHt(e,t){if(!e)throw new Error(t)}a(NHt,"assert");Ta.assert=NHt});var RPe=S(xh=>{"use strict";Object.defineProperty(xh,"__esModule",{value:!0});xh.getSignedCookies=xh.getSignedRTMPUrl=xh.getSignedUrl=void 0;var LHt=require("node:url"),as=Q9();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=new LHt.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(FHt,"getSignedUrl");xh.getSignedUrl=FHt;function UHt(){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(UHt,"getSignedRTMPUrl");xh.getSignedRTMPUrl=UHt;function jHt(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(jHt,"getSignedCookies");xh.getSignedCookies=jHt});var OPe=S(uo=>{"use strict";var MHt=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]}),BHt=uo&&uo.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),qHt=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)&&MHt(t,e,r);return BHt(t,e),t};Object.defineProperty(uo,"__esModule",{value:!0});uo.CannedPolicy=uo.getSignedCookies=uo.getSignedRTMPUrl=uo.getSignedUrl=void 0;var Y9=RPe();Object.defineProperty(uo,"getSignedUrl",{enumerable:!0,get:function(){return Y9.getSignedUrl}});Object.defineProperty(uo,"getSignedRTMPUrl",{enumerable:!0,get:function(){return Y9.getSignedRTMPUrl}});Object.defineProperty(uo,"getSignedCookies",{enumerable:!0,get:function(){return Y9.getSignedCookies}});uo.CannedPolicy=qHt(K9())});var mA=S((hKr,lNe)=>{"use strict";var DVt="2.0.0",PVt=Number.MAX_SAFE_INTEGER||9007199254740991,NVt=16,LVt=256-6,FVt=["major","premajor","minor","preminor","patch","prepatch","prerelease"];lNe.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:NVt,MAX_SAFE_BUILD_LENGTH:LVt,MAX_SAFE_INTEGER:PVt,RELEASE_TYPES:FVt,SEMVER_SPEC_VERSION:DVt,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var gA=S((mKr,fNe)=>{"use strict";var UVt=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};fNe.exports=UVt});var oE=S((Bl,pNe)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:d7,MAX_SAFE_BUILD_LENGTH:jVt,MAX_LENGTH:MVt}=mA(),BVt=gA();Bl=pNe.exports={};var qVt=Bl.re=[],$Vt=Bl.safeRe=[],dt=Bl.src=[],zVt=Bl.safeSrc=[],ht=Bl.t={},WVt=0,h7="[a-zA-Z0-9-]",GVt=[["\\s",1],["\\d",MVt],[h7,jVt]],HVt=a(e=>{for(let[t,r]of GVt)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},"makeSafeRegex"),Jt=a((e,t,r)=>{let n=HVt(t),i=WVt++;BVt(e,i,t),ht[e]=i,dt[i]=t,zVt[i]=n,qVt[i]=new RegExp(t,r?"g":void 0),$Vt[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 hL=S((yKr,dNe)=>{"use strict";var VVt=Object.freeze({loose:!0}),KVt=Object.freeze({}),QVt=a(e=>e?typeof e!="object"?VVt:e:KVt,"parseOptions");dNe.exports=QVt});var m7=S((vKr,gNe)=>{"use strict";var hNe=/^[0-9]+$/,mNe=a((e,t)=>{let r=hNe.test(e),n=hNe.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},"compareIdentifiers"),YVt=a((e,t)=>mNe(t,e),"rcompareIdentifiers");gNe.exports={compareIdentifiers:mNe,rcompareIdentifiers:YVt}});var lo=S((EKr,bNe)=>{"use strict";var mL=gA(),{MAX_LENGTH:yNe,MAX_SAFE_INTEGER:gL}=mA(),{safeRe:yL,t:bL}=oE(),JVt=hL(),{compareIdentifiers:sE}=m7(),g7=class e{static{a(this,"SemVer")}constructor(t,r){if(r=JVt(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>yNe)throw new TypeError(`version is longer than ${yNe} 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)),sE(this.major,t.major)||sE(this.minor,t.minor)||sE(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 sE(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 sE(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]),sE(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}};bNe.exports=g7});var by=S((SKr,wNe)=>{"use strict";var vNe=lo(),XVt=a((e,t,r=!1)=>{if(e instanceof vNe)return e;try{return new vNe(e,t)}catch(n){if(!r)return null;throw n}},"parse");wNe.exports=XVt});var _Ne=S((TKr,ENe)=>{"use strict";var ZVt=by(),e9t=a((e,t)=>{let r=ZVt(e,t);return r?r.version:null},"valid");ENe.exports=e9t});var xNe=S((RKr,SNe)=>{"use strict";var t9t=by(),r9t=a((e,t)=>{let r=t9t(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null},"clean");SNe.exports=r9t});var RNe=S((IKr,ANe)=>{"use strict";var TNe=lo(),n9t=a((e,t,r,n,i)=>{typeof r=="string"&&(i=n,n=r,r=void 0);try{return new TNe(e instanceof TNe?e.version:e,r).inc(t,n,i).version}catch{return null}},"inc");ANe.exports=n9t});var kNe=S((CKr,INe)=>{"use strict";var ONe=by(),i9t=a((e,t)=>{let r=ONe(e,null,!0),n=ONe(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");INe.exports=i9t});var DNe=S((PKr,CNe)=>{"use strict";var a9t=lo(),o9t=a((e,t)=>new a9t(e,t).major,"major");CNe.exports=o9t});var NNe=S((LKr,PNe)=>{"use strict";var s9t=lo(),u9t=a((e,t)=>new s9t(e,t).minor,"minor");PNe.exports=u9t});var FNe=S((UKr,LNe)=>{"use strict";var c9t=lo(),l9t=a((e,t)=>new c9t(e,t).patch,"patch");LNe.exports=l9t});var jNe=S((MKr,UNe)=>{"use strict";var f9t=by(),p9t=a((e,t)=>{let r=f9t(e,t);return r&&r.prerelease.length?r.prerelease:null},"prerelease");UNe.exports=p9t});var ku=S((qKr,BNe)=>{"use strict";var MNe=lo(),d9t=a((e,t,r)=>new MNe(e,r).compare(new MNe(t,r)),"compare");BNe.exports=d9t});var $Ne=S((zKr,qNe)=>{"use strict";var h9t=ku(),m9t=a((e,t,r)=>h9t(t,e,r),"rcompare");qNe.exports=m9t});var WNe=S((GKr,zNe)=>{"use strict";var g9t=ku(),y9t=a((e,t)=>g9t(e,t,!0),"compareLoose");zNe.exports=y9t});var vL=S((VKr,HNe)=>{"use strict";var GNe=lo(),b9t=a((e,t,r)=>{let n=new GNe(e,r),i=new GNe(t,r);return n.compare(i)||n.compareBuild(i)},"compareBuild");HNe.exports=b9t});var KNe=S((QKr,VNe)=>{"use strict";var v9t=vL(),w9t=a((e,t)=>e.sort((r,n)=>v9t(r,n,t)),"sort");VNe.exports=w9t});var YNe=S((JKr,QNe)=>{"use strict";var E9t=vL(),_9t=a((e,t)=>e.sort((r,n)=>E9t(n,r,t)),"rsort");QNe.exports=_9t});var yA=S((ZKr,JNe)=>{"use strict";var S9t=ku(),x9t=a((e,t,r)=>S9t(e,t,r)>0,"gt");JNe.exports=x9t});var wL=S((tQr,XNe)=>{"use strict";var T9t=ku(),A9t=a((e,t,r)=>T9t(e,t,r)<0,"lt");XNe.exports=A9t});var y7=S((nQr,ZNe)=>{"use strict";var R9t=ku(),O9t=a((e,t,r)=>R9t(e,t,r)===0,"eq");ZNe.exports=O9t});var b7=S((aQr,eLe)=>{"use strict";var I9t=ku(),k9t=a((e,t,r)=>I9t(e,t,r)!==0,"neq");eLe.exports=k9t});var EL=S((sQr,tLe)=>{"use strict";var C9t=ku(),D9t=a((e,t,r)=>C9t(e,t,r)>=0,"gte");tLe.exports=D9t});var _L=S((cQr,rLe)=>{"use strict";var P9t=ku(),N9t=a((e,t,r)=>P9t(e,t,r)<=0,"lte");rLe.exports=N9t});var v7=S((fQr,nLe)=>{"use strict";var L9t=y7(),F9t=b7(),U9t=yA(),j9t=EL(),M9t=wL(),B9t=_L(),q9t=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 L9t(e,r,n);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);default:throw new TypeError(`Invalid operator: ${t}`)}},"cmp");nLe.exports=q9t});var aLe=S((dQr,iLe)=>{"use strict";var $9t=lo(),z9t=by(),{safeRe:SL,t:xL}=oE(),W9t=a((e,t)=>{if(e instanceof $9t)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 z9t(`${n}.${i}.${o}${s}${u}`,t)},"coerce");iLe.exports=W9t});var sLe=S((mQr,oLe)=>{"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}};oLe.exports=w7});var Cu=S((yQr,fLe)=>{"use strict";var G9t=/\s+/g,E7=class e{static{a(this,"Range")}constructor(t,r){if(r=V9t(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(G9t," "),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=>!cLe(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&&e7t(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&&X9t)|(this.options.loose&&Z9t))+":"+t,i=uLe.get(n);if(i)return i;let o=this.options.loose,s=o?os[No.HYPHENRANGELOOSE]:os[No.HYPHENRANGE];t=t.replace(s,l7t(this.options.includePrerelease)),Fn("hyphen replace",t),t=t.replace(os[No.COMPARATORTRIM],Q9t),Fn("comparator trim",t),t=t.replace(os[No.TILDETRIM],Y9t),Fn("tilde trim",t),t=t.replace(os[No.CARETTRIM],J9t),Fn("caret trim",t);let u=t.split(" ").map(p=>t7t(p,this.options)).join(" ").split(/\s+/).map(p=>c7t(p,this.options));o&&(u=u.filter(p=>(Fn("loose invalid filter",p,this.options),!!p.match(os[No.COMPARATORLOOSE])))),Fn("range list",u);let c=new Map,l=u.map(p=>new _7(p,this.options));for(let p of l){if(cLe(p))return[p];c.set(p.value,p)}c.size>1&&c.has("")&&c.delete("");let f=[...c.values()];return uLe.set(n,f),f}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>lLe(n,r)&&t.set.some(i=>lLe(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 K9t(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(f7t(this.set[r],t,this.options))return!0;return!1}};fLe.exports=E7;var H9t=sLe(),uLe=new H9t,V9t=hL(),_7=bA(),Fn=gA(),K9t=lo(),{safeRe:os,t:No,comparatorTrimReplace:Q9t,tildeTrimReplace:Y9t,caretTrimReplace:J9t}=oE(),{FLAG_INCLUDE_PRERELEASE:X9t,FLAG_LOOSE:Z9t}=mA(),cLe=a(e=>e.value==="<0.0.0-0","isNullSet"),e7t=a(e=>e.value==="","isAny"),lLe=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"),t7t=a((e,t)=>(Fn("comp",e,t),e=i7t(e,t),Fn("caret",e),e=r7t(e,t),Fn("tildes",e),e=o7t(e,t),Fn("xrange",e),e=u7t(e,t),Fn("stars",e),e),"parseComparator"),Lo=a(e=>!e||e.toLowerCase()==="x"||e==="*","isX"),r7t=a((e,t)=>e.trim().split(/\s+/).map(r=>n7t(r,t)).join(" "),"replaceTildes"),n7t=a((e,t)=>{let r=t.loose?os[No.TILDELOOSE]:os[No.TILDE];return e.replace(r,(n,i,o,s,u)=>{Fn("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?(Fn("replaceTilde pr",u),c=`>=${i}.${o}.${s}-${u} <${i}.${+o+1}.0-0`):c=`>=${i}.${o}.${s} <${i}.${+o+1}.0-0`,Fn("tilde return",c),c})},"replaceTilde"),i7t=a((e,t)=>e.trim().split(/\s+/).map(r=>a7t(r,t)).join(" "),"replaceCarets"),a7t=a((e,t)=>{Fn("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)=>{Fn("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?(Fn("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`):(Fn("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`),Fn("caret return",l),l})},"replaceCaret"),o7t=a((e,t)=>(Fn("replaceXRanges",e,t),e.split(/\s+/).map(r=>s7t(r,t)).join(" ")),"replaceXRanges"),s7t=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)=>{Fn("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`),Fn("xRange return",n),n})},"replaceXRange"),u7t=a((e,t)=>(Fn("replaceStars",e,t),e.trim().replace(os[No.STAR],"")),"replaceStars"),c7t=a((e,t)=>(Fn("replaceGTE0",e,t),e.trim().replace(os[t.includePrerelease?No.GTE0PRE:No.GTE0],"")),"replaceGTE0"),l7t=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"),f7t=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(Fn(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((vQr,yLe)=>{"use strict";var vA=Symbol("SemVer ANY"),T7=class e{static{a(this,"Comparator")}static get ANY(){return vA}constructor(t,r){if(r=pLe(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?dLe[hLe.COMPARATORLOOSE]:dLe[hLe.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 mLe(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 mLe(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 gLe(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new gLe(this.value,r).test(t.semver):(r=pLe(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(">")))}};yLe.exports=T7;var pLe=hL(),{safeRe:dLe,t:hLe}=oE(),S7=v7(),x7=gA(),mLe=lo(),gLe=Cu()});var wA=S((EQr,bLe)=>{"use strict";var p7t=Cu(),d7t=a((e,t,r)=>{try{t=new p7t(t,r)}catch{return!1}return t.test(e)},"satisfies");bLe.exports=d7t});var wLe=S((SQr,vLe)=>{"use strict";var h7t=Cu(),m7t=a((e,t)=>new h7t(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" ")),"toComparators");vLe.exports=m7t});var _Le=S((TQr,ELe)=>{"use strict";var g7t=lo(),y7t=Cu(),b7t=a((e,t,r)=>{let n=null,i=null,o=null;try{o=new y7t(t,r)}catch{return null}return e.forEach(s=>{o.test(s)&&(!n||i.compare(s)===-1)&&(n=s,i=new g7t(n,r))}),n},"maxSatisfying");ELe.exports=b7t});var xLe=S((RQr,SLe)=>{"use strict";var v7t=lo(),w7t=Cu(),E7t=a((e,t,r)=>{let n=null,i=null,o=null;try{o=new w7t(t,r)}catch{return null}return e.forEach(s=>{o.test(s)&&(!n||i.compare(s)===1)&&(n=s,i=new v7t(n,r))}),n},"minSatisfying");SLe.exports=E7t});var RLe=S((IQr,ALe)=>{"use strict";var A7=lo(),_7t=Cu(),TLe=yA(),S7t=a((e,t)=>{e=new _7t(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||TLe(u,o))&&(o=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),o&&(!r||TLe(r,o))&&(r=o)}return r&&e.test(r)?r:null},"minVersion");ALe.exports=S7t});var ILe=S((CQr,OLe)=>{"use strict";var x7t=Cu(),T7t=a((e,t)=>{try{return new x7t(e,t).range||"*"}catch{return null}},"validRange");OLe.exports=T7t});var TL=S((PQr,PLe)=>{"use strict";var A7t=lo(),DLe=bA(),{ANY:R7t}=DLe,O7t=Cu(),I7t=wA(),kLe=yA(),CLe=wL(),k7t=_L(),C7t=EL(),D7t=a((e,t,r,n)=>{e=new A7t(e,n),t=new O7t(t,n);let i,o,s,u,c;switch(r){case">":i=kLe,o=k7t,s=CLe,u=">",c=">=";break;case"<":i=CLe,o=C7t,s=kLe,u="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(I7t(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===R7t&&(h=new DLe(">=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");PLe.exports=D7t});var LLe=S((LQr,NLe)=>{"use strict";var P7t=TL(),N7t=a((e,t,r)=>P7t(e,t,">",r),"gtr");NLe.exports=N7t});var ULe=S((UQr,FLe)=>{"use strict";var L7t=TL(),F7t=a((e,t,r)=>L7t(e,t,"<",r),"ltr");FLe.exports=F7t});var BLe=S((MQr,MLe)=>{"use strict";var jLe=Cu(),U7t=a((e,t,r)=>(e=new jLe(e,r),t=new jLe(t,r),e.intersects(t,r)),"intersects");MLe.exports=U7t});var $Le=S((qQr,qLe)=>{"use strict";var j7t=wA(),M7t=ku();qLe.exports=(e,t,r)=>{let n=[],i=null,o=null,s=e.sort((f,p)=>M7t(f,p,r));for(let f of s)j7t(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 KLe=S(($Qr,VLe)=>{"use strict";var zLe=Cu(),O7=bA(),{ANY:R7}=O7,EA=wA(),I7=ku(),B7t=a((e,t,r={})=>{if(e===t)return!0;e=new zLe(e,r),t=new zLe(t,r);let n=!1;e:for(let i of e.set){for(let o of t.set){let s=$7t(i,o,r);if(n=n||s!==null,s)continue e}if(n)return!1}return!0},"subset"),q7t=[new O7(">=0.0.0-0")],WLe=[new O7(">=0.0.0")],$7t=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=q7t:e=WLe}if(t.length===1&&t[0].semver===R7){if(r.includePrerelease)return!0;t=WLe}let n=new Set,i,o;for(let h of e)h.operator===">"||h.operator===">="?i=GLe(i,h,r):h.operator==="<"||h.operator==="<="?o=HLe(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=GLe(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=HLe(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"),GLe=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"),HLe=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");VLe.exports=B7t});var C7=S((WQr,JLe)=>{"use strict";var k7=oE(),QLe=mA(),z7t=lo(),YLe=m7(),W7t=by(),G7t=_Ne(),H7t=xNe(),V7t=RNe(),K7t=kNe(),Q7t=DNe(),Y7t=NNe(),J7t=FNe(),X7t=jNe(),Z7t=ku(),eKt=$Ne(),tKt=WNe(),rKt=vL(),nKt=KNe(),iKt=YNe(),aKt=yA(),oKt=wL(),sKt=y7(),uKt=b7(),cKt=EL(),lKt=_L(),fKt=v7(),pKt=aLe(),dKt=bA(),hKt=Cu(),mKt=wA(),gKt=wLe(),yKt=_Le(),bKt=xLe(),vKt=RLe(),wKt=ILe(),EKt=TL(),_Kt=LLe(),SKt=ULe(),xKt=BLe(),TKt=$Le(),AKt=KLe();JLe.exports={parse:W7t,valid:G7t,clean:H7t,inc:V7t,diff:K7t,major:Q7t,minor:Y7t,patch:J7t,prerelease:X7t,compare:Z7t,rcompare:eKt,compareLoose:tKt,compareBuild:rKt,sort:nKt,rsort:iKt,gt:aKt,lt:oKt,eq:sKt,neq:uKt,gte:cKt,lte:lKt,cmp:fKt,coerce:pKt,Comparator:dKt,Range:hKt,satisfies:mKt,toComparators:gKt,maxSatisfying:yKt,minSatisfying:bKt,minVersion:vKt,validRange:wKt,outside:EKt,gtr:_Kt,ltr:SKt,intersects:xKt,simplifyRange:TKt,subset:AKt,SemVer:z7t,re:k7.re,src:k7.src,tokens:k7.t,SEMVER_SPEC_VERSION:QLe.SEMVER_SPEC_VERSION,RELEASE_TYPES:QLe.RELEASE_TYPES,compareIdentifiers:YLe.compareIdentifiers,rcompareIdentifiers:YLe.rcompareIdentifiers}});var Ch=S((Wnn,Y7)=>{"use strict";var K7=function(){"use strict";return this===void 0}();K7?Y7.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:K7,propertyIsWritable:function(e,t){var r=Object.getOwnPropertyDescriptor(e,t);return!!(!r||r.writable||r.set)}}:(G2e={}.hasOwnProperty,H2e={}.toString,V2e={}.constructor.prototype,Q7=a(function(e){var t=[];for(var r in e)G2e.call(e,r)&&t.push(r);return t},"ObjectKeys"),K2e=a(function(e,t){return{value:e[t]}},"ObjectGetDescriptor"),Q2e=a(function(e,t,r){return e[t]=r.value,e},"ObjectDefineProperty"),Y2e=a(function(e){return e},"ObjectFreeze"),J2e=a(function(e){try{return Object(e).constructor.prototype}catch{return V2e}},"ObjectGetPrototypeOf"),X2e=a(function(e){try{return H2e.call(e)==="[object Array]"}catch{return!1}},"ArrayIsArray"),Y7.exports={isArray:X2e,keys:Q7,names:Q7,defineProperty:Q2e,getDescriptor:K2e,freeze:Y2e,getPrototypeOf:J2e,isES5:K7,propertyIsWritable:function(){return!0}});var G2e,H2e,V2e,Q7,K2e,Q2e,Y2e,J2e,X2e});var En=S((exports,module)=>{"use strict";var es5=Ch(),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 nFe=S((Vnn,rFe)=>{"use strict";var X7=En(),_y,MJt=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=ly(this.defaults,r);let{transitional:n,paramsSerializer:i,headers:o}=r;n!==void 0&&T9.assertOptions(n,{silentJSONParsing:bh.transitional(bh.boolean),forcedJSONParsing:bh.transitional(bh.boolean),clarifyTimeoutError:bh.transitional(bh.boolean)},!1),i!=null&&(le.isFunction(i)?r.paramsSerializer={serialize:i}:T9.assertOptions(i,{encode:bh.function,serialize:bh.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=[DDe.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=DDe.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=ly(this.defaults,t);let r=N9(t.baseURL,t.url);return I9(r,t.params,t.paramsSerializer)}};le.forEach(["delete","get","head","options"],a(function(t){Zw.prototype[t]=function(r,n){return this.request(ly(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(ly(u||{},{method:t,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:s}))},"httpMethod")}a(r,"generateHTTPMethod"),Zw.prototype[t]=r(),Zw.prototype[t+"Form"]=r(!0)},"forEachMethodWithData"));var BN=Zw,A9=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 _h(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}}},tHt=A9;function rHt(e){return a(function(r){return e.apply(null,r)},"wrap")}a(rHt,"spread");function nHt(e){return le.isObject(e)&&e.isAxiosError===!0}a(nHt,"isAxiosError");var R9={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(R9).forEach(([e,t])=>{R9[t]=e});var iHt=R9;function aPe(e){let t=new BN(e),r=UDe(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 aPe(ly(e,i))},"create"),r}a(aPe,"createInstance");var Bi=aPe(P9);Bi.Axios=BN;Bi.CanceledError=_h;Bi.CancelToken=tHt;Bi.isCancel=JDe;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=rHt;Bi.isAxiosError=nHt;Bi.mergeConfig=ly;Bi.AxiosHeaders=is;Bi.formToJSON=e=>YDe(le.isHTMLForm(e)?new FormData(e):e);Bi.getAdapter=iPe.getAdapter;Bi.HttpStatusCode=iHt;Bi.default=Bi;oPe.exports=Bi});var z9=S(rL=>{"use strict";Object.defineProperty(rL,"__esModule",{value:!0});var aHt=V1e(),oHt="4.0.1",Uc;(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"})(Uc||(Uc={}));function sHt(e,t){if(!e)throw new Error(t)}a(sHt,"assert");function uHt(e){return e?.replace(/\/+$/,"")}a(uHt,"removeTrailingSlash");async function cHt(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(cHt,"retriable");function lHt(){return new Date().getTime()}a(lHt,"currentTimestamp");function uPe(){return new Date().toISOString()}a(uPe,"currentISOTime");function gPe(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}a(gPe,"safeSetTimeout");var eA=String.fromCharCode,cPe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",YN={};function fHt(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(fHt,"getBaseValue");var tA={compressToBase64:function(e){if(e==null)return"";let t=tA._compress(e,6,function(r){return cPe.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:tA._decompress(e.length,32,function(t){return fHt(cPe,e.charAt(t))})},compress:function(e){return tA._compress(e,16,function(t){return eA(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:tA._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=eA(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=eA(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++]=eA(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++]=eA(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++)}}},F9=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}},U9=class{static{a(this,"V7Generator")}constructor(t){this.timestamp=0,this.counter=0,this.random=t??pHt()}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)}},pHt=a(()=>({nextUint32:()=>Math.trunc(Math.random()*65536)*65536+Math.trunc(Math.random()*65536)}),"getDefaultRandom"),lPe,fPe=a(()=>dHt().toString(),"uuidv7"),dHt=a(()=>(lPe||(lPe=new U9)).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"}},rA=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 pPe(e){return typeof e=="object"&&(e instanceof ZN||e instanceof rA)}a(pPe,"isPostHogFetchError");var j9=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 F9,this._isInitialized=!1,sHt(t,"You must pass your PostHog project's api key."),this.apiKey=t,this.host=uHt(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:pPe},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(Uc.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Uc.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Uc.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=fPe();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:uPe(),uuid:n?.uuid?n.uuid:fPe()};(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(Uc.Queue)||[];s.length>=this.maxQueueSize&&(s.shift(),console.info("Queue is full, the oldest event is dropped.")),s.push({message:i}),this.setPersistedProperty(Uc.Queue,s),this._events.emit(t,i),s.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=gPe(()=>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(Uc.Queue)||[];if(!t.length)return[];let r=t.slice(0,this.maxBatchSize),n=r.map(l=>l.message),i=a(()=>{let l=this.getPersistedProperty(Uc.Queue)||[];this.setPersistedProperty(Uc.Queue,l.slice(r.length))},"persistQueueChange"),o={api_key:this.apiKey,batch:n,sent_at:uPe()},s=JSON.stringify(o),u=this.captureMode==="form"?`${this.host}/e/?ip=1&_=${lHt()}&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(tA.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 rA||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 cHt(async()=>{let s=null;try{s=await this.fetch(t,{signal:AbortSignal.timeout(i??this.requestTimeout),...r})}catch(c){throw new rA(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(Uc.Queue)||[]).length!==0;){await this.flush();let i=Date.now();if(r<i)break}}catch(r){if(!pPe(r))throw r;console.error("Error while shutting down PostHog",r)}}},M9=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}},B9=typeof fetch<"u"?fetch:typeof global.fetch<"u"?global.fetch:void 0;if(!B9){let e=sPe();B9=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 yPe=B9,hHt=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)}},q9=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||yPe,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=vPe(s,i,this.cohorts,this.debugMode):c=bPe(s,i),!c)return!1}if(o==null)return!0}return!(o!=null&&dPe(t.key,r)>o/100)}getMatchingVariant(t,r){let n=dPe(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=gPe(()=>{i.abort()},this.timeout),r.signal=i.signal}try{return await this.fetch(t,r)}finally{clearTimeout(n)}}stopPoller(){clearTimeout(this.poller)}};function dPe(e,t,r=""){let n=aHt.createHash();return n.update(`${e}.${t}${r}`),parseInt(n.digest("hex").slice(0,15),16)/hHt}a(dPe,"_hash");function bPe(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 hPe(String(n))&&String(o).match(String(n))!==null;case"not_regex":return hPe(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=mHt(String(n));if(c==null&&(c=mPe(n)),c==null)throw new ia(`Invalid date: ${n}`);let l=mPe(o);return["is_date_before"].includes(i)?l<c:l>c}default:throw new ia(`Unknown operator: ${i}`)}}a(bPe,"matchProperty");function vPe(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 wPe(o,t,r,n)}a(vPe,"matchCohort");function wPe(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=wPe(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=vPe(u,t,r,n):c=bPe(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(wPe,"matchPropertyGroup");function hPe(e){try{return new RegExp(e),!0}catch{return!1}}a(hPe,"isValidRegex");function mPe(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(mPe,"convertToDateTime");function mHt(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(mHt,"relativeDateParseForFeatureFlagMatching");var gHt=30*1e3,yHt=50*1e3,$9=class extends j9{static{a(this,"PostHog")}constructor(t,r={}){r.captureMode=r?.captureMode||"json",super(t,r),this._memoryStorage=new M9,this.options=r,r.personalApiKey&&(this.featureFlagsPoller=new q9({pollingInterval:typeof r.featureFlagsPollingInterval=="number"?r.featureFlagsPollingInterval:gHt,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||yHt}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):yPe(t,r)}getLibraryId(){return"posthog-node"}getLibraryVersion(){return oHt}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=$9;rL.PostHogSentryIntegration=tL});var K9=S(nA=>{"use strict";var SHt=nA&&nA.__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)},H9,APe;Object.defineProperty(nA,"__esModule",{value:!0});var iL=Q9(),V9=class{static{a(this,"CannedPolicy")}constructor(t,r,n){H9.add(this),this.url=t,this.expireTime=Math.round(r/1e3)||void 0,this.ipRange=n}toJSON(){SHt(this,H9,"m",APe).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)}};H9=new WeakSet,APe=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");nA.default=V9});var Q9=S(Ta=>{"use strict";var xHt=Ta&&Ta.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ta,"__esModule",{value:!0});Ta.assert=Ta.getPrivateKey=Ta.getIpRange=Ta.getExpireTime=Ta.createPolicySignature=Ta.createPolicy=Ta.normalizeBase64=void 0;var THt=require("fs"),AHt=require("crypto"),RHt=xHt(K9());function OHt(e){return e.replace(/\+/g,"-").replace(/=/g,"_").replace(/\//g,"~")}a(OHt,"normalizeBase64");Ta.normalizeBase64=OHt;function IHt(e,t,r){let n=Math.round(Date.now()+18e5);return t=t||n,new RHt.default(e,t,r)}a(IHt,"createPolicy");Ta.createPolicy=IHt;function kHt(e,t){let r=(0,AHt.createSign)("RSA-SHA1");return r.update(e.toJSON()),r.sign(t,"base64")}a(kHt,"createPolicySignature");Ta.createPolicySignature=kHt;function CHt(e){return+e.expireTime||null}a(CHt,"getExpireTime");Ta.getExpireTime=CHt;function DHt(e){return e.ipRange||null}a(DHt,"getIpRange");Ta.getIpRange=DHt;function PHt(e){let t=e.privateKeyString,r;if(e.privateKeyPath&&(r=(0,THt.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(PHt,"getPrivateKey");Ta.getPrivateKey=PHt;function NHt(e,t){if(!e)throw new Error(t)}a(NHt,"assert");Ta.assert=NHt});var RPe=S(xh=>{"use strict";Object.defineProperty(xh,"__esModule",{value:!0});xh.getSignedCookies=xh.getSignedRTMPUrl=xh.getSignedUrl=void 0;var LHt=require("node:url"),as=Q9();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=new LHt.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(FHt,"getSignedUrl");xh.getSignedUrl=FHt;function UHt(){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(UHt,"getSignedRTMPUrl");xh.getSignedRTMPUrl=UHt;function jHt(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(jHt,"getSignedCookies");xh.getSignedCookies=jHt});var OPe=S(uo=>{"use strict";var MHt=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]}),BHt=uo&&uo.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),qHt=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)&&MHt(t,e,r);return BHt(t,e),t};Object.defineProperty(uo,"__esModule",{value:!0});uo.CannedPolicy=uo.getSignedCookies=uo.getSignedRTMPUrl=uo.getSignedUrl=void 0;var Y9=RPe();Object.defineProperty(uo,"getSignedUrl",{enumerable:!0,get:function(){return Y9.getSignedUrl}});Object.defineProperty(uo,"getSignedRTMPUrl",{enumerable:!0,get:function(){return Y9.getSignedRTMPUrl}});Object.defineProperty(uo,"getSignedCookies",{enumerable:!0,get:function(){return Y9.getSignedCookies}});uo.CannedPolicy=qHt(K9())});var gA=S((OKr,vNe)=>{"use strict";var LVt="2.0.0",FVt=Number.MAX_SAFE_INTEGER||9007199254740991,UVt=16,jVt=256-6,MVt=["major","premajor","minor","preminor","patch","prepatch","prerelease"];vNe.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:UVt,MAX_SAFE_BUILD_LENGTH:jVt,MAX_SAFE_INTEGER:FVt,RELEASE_TYPES:MVt,SEMVER_SPEC_VERSION:LVt,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var yA=S((IKr,wNe)=>{"use strict";var BVt=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};wNe.exports=BVt});var sE=S((Bl,ENe)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:h7,MAX_SAFE_BUILD_LENGTH:qVt,MAX_LENGTH:$Vt}=gA(),zVt=yA();Bl=ENe.exports={};var WVt=Bl.re=[],GVt=Bl.safeRe=[],dt=Bl.src=[],HVt=Bl.safeSrc=[],ht=Bl.t={},VVt=0,m7="[a-zA-Z0-9-]",KVt=[["\\s",1],["\\d",$Vt],[m7,qVt]],QVt=a(e=>{for(let[t,r]of KVt)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},"makeSafeRegex"),Jt=a((e,t,r)=>{let n=QVt(t),i=VVt++;zVt(e,i,t),ht[e]=i,dt[i]=t,HVt[i]=n,WVt[i]=new RegExp(t,r?"g":void 0),GVt[i]=new RegExp(n,r?"g":void 0)},"createToken");Jt("NUMERICIDENTIFIER","0|[1-9]\\d*");Jt("NUMERICIDENTIFIERLOOSE","\\d+");Jt("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${m7}*`);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",`${m7}+`);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,${h7}})(?:\\.(\\d{1,${h7}}))?(?:\\.(\\d{1,${h7}}))?`);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((CKr,_Ne)=>{"use strict";var YVt=Object.freeze({loose:!0}),JVt=Object.freeze({}),XVt=a(e=>e?typeof e!="object"?YVt:e:JVt,"parseOptions");_Ne.exports=XVt});var g7=S((PKr,TNe)=>{"use strict";var SNe=/^[0-9]+$/,xNe=a((e,t)=>{let r=SNe.test(e),n=SNe.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},"compareIdentifiers"),ZVt=a((e,t)=>xNe(t,e),"rcompareIdentifiers");TNe.exports={compareIdentifiers:xNe,rcompareIdentifiers:ZVt}});var lo=S((LKr,RNe)=>{"use strict";var vL=yA(),{MAX_LENGTH:ANe,MAX_SAFE_INTEGER:wL}=gA(),{safeRe:EL,t:_L}=sE(),e9t=bL(),{compareIdentifiers:uE}=g7(),y7=class e{static{a(this,"SemVer")}constructor(t,r){if(r=e9t(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>ANe)throw new TypeError(`version is longer than ${ANe} 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)),uE(this.major,t.major)||uE(this.minor,t.minor)||uE(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 uE(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 uE(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]),uE(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}};RNe.exports=y7});var by=S((UKr,INe)=>{"use strict";var ONe=lo(),t9t=a((e,t,r=!1)=>{if(e instanceof ONe)return e;try{return new ONe(e,t)}catch(n){if(!r)return null;throw n}},"parse");INe.exports=t9t});var CNe=S((MKr,kNe)=>{"use strict";var r9t=by(),n9t=a((e,t)=>{let r=r9t(e,t);return r?r.version:null},"valid");kNe.exports=n9t});var PNe=S((qKr,DNe)=>{"use strict";var i9t=by(),a9t=a((e,t)=>{let r=i9t(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null},"clean");DNe.exports=a9t});var FNe=S((zKr,LNe)=>{"use strict";var NNe=lo(),o9t=a((e,t,r,n,i)=>{typeof r=="string"&&(i=n,n=r,r=void 0);try{return new NNe(e instanceof NNe?e.version:e,r).inc(t,n,i).version}catch{return null}},"inc");LNe.exports=o9t});var MNe=S((GKr,jNe)=>{"use strict";var UNe=by(),s9t=a((e,t)=>{let r=UNe(e,null,!0),n=UNe(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");jNe.exports=s9t});var qNe=S((VKr,BNe)=>{"use strict";var u9t=lo(),c9t=a((e,t)=>new u9t(e,t).major,"major");BNe.exports=c9t});var zNe=S((QKr,$Ne)=>{"use strict";var l9t=lo(),f9t=a((e,t)=>new l9t(e,t).minor,"minor");$Ne.exports=f9t});var GNe=S((JKr,WNe)=>{"use strict";var p9t=lo(),d9t=a((e,t)=>new p9t(e,t).patch,"patch");WNe.exports=d9t});var VNe=S((ZKr,HNe)=>{"use strict";var h9t=by(),m9t=a((e,t)=>{let r=h9t(e,t);return r&&r.prerelease.length?r.prerelease:null},"prerelease");HNe.exports=m9t});var ku=S((tQr,QNe)=>{"use strict";var KNe=lo(),g9t=a((e,t,r)=>new KNe(e,r).compare(new KNe(t,r)),"compare");QNe.exports=g9t});var JNe=S((nQr,YNe)=>{"use strict";var y9t=ku(),b9t=a((e,t,r)=>y9t(t,e,r),"rcompare");YNe.exports=b9t});var ZNe=S((aQr,XNe)=>{"use strict";var v9t=ku(),w9t=a((e,t)=>v9t(e,t,!0),"compareLoose");XNe.exports=w9t});var SL=S((sQr,tLe)=>{"use strict";var eLe=lo(),E9t=a((e,t,r)=>{let n=new eLe(e,r),i=new eLe(t,r);return n.compare(i)||n.compareBuild(i)},"compareBuild");tLe.exports=E9t});var nLe=S((cQr,rLe)=>{"use strict";var _9t=SL(),S9t=a((e,t)=>e.sort((r,n)=>_9t(r,n,t)),"sort");rLe.exports=S9t});var aLe=S((fQr,iLe)=>{"use strict";var x9t=SL(),T9t=a((e,t)=>e.sort((r,n)=>x9t(n,r,t)),"rsort");iLe.exports=T9t});var bA=S((dQr,oLe)=>{"use strict";var A9t=ku(),R9t=a((e,t,r)=>A9t(e,t,r)>0,"gt");oLe.exports=R9t});var xL=S((mQr,sLe)=>{"use strict";var O9t=ku(),I9t=a((e,t,r)=>O9t(e,t,r)<0,"lt");sLe.exports=I9t});var b7=S((yQr,uLe)=>{"use strict";var k9t=ku(),C9t=a((e,t,r)=>k9t(e,t,r)===0,"eq");uLe.exports=C9t});var v7=S((vQr,cLe)=>{"use strict";var D9t=ku(),P9t=a((e,t,r)=>D9t(e,t,r)!==0,"neq");cLe.exports=P9t});var TL=S((EQr,lLe)=>{"use strict";var N9t=ku(),L9t=a((e,t,r)=>N9t(e,t,r)>=0,"gte");lLe.exports=L9t});var AL=S((SQr,fLe)=>{"use strict";var F9t=ku(),U9t=a((e,t,r)=>F9t(e,t,r)<=0,"lte");fLe.exports=U9t});var w7=S((TQr,pLe)=>{"use strict";var j9t=b7(),M9t=v7(),B9t=bA(),q9t=TL(),$9t=xL(),z9t=AL(),W9t=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 j9t(e,r,n);case"!=":return M9t(e,r,n);case">":return B9t(e,r,n);case">=":return q9t(e,r,n);case"<":return $9t(e,r,n);case"<=":return z9t(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}},"cmp");pLe.exports=W9t});var hLe=S((RQr,dLe)=>{"use strict";var G9t=lo(),H9t=by(),{safeRe:RL,t:OL}=sE(),V9t=a((e,t)=>{if(e instanceof G9t)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 H9t(`${n}.${i}.${o}${s}${u}`,t)},"coerce");dLe.exports=V9t});var gLe=S((IQr,mLe)=>{"use strict";var E7=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}};mLe.exports=E7});var Cu=S((CQr,wLe)=>{"use strict";var K9t=/\s+/g,_7=class e{static{a(this,"Range")}constructor(t,r){if(r=Y9t(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof S7)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(K9t," "),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=>!bLe(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&&n7t(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&&t7t)|(this.options.loose&&r7t))+":"+t,i=yLe.get(n);if(i)return i;let o=this.options.loose,s=o?os[No.HYPHENRANGELOOSE]:os[No.HYPHENRANGE];t=t.replace(s,d7t(this.options.includePrerelease)),Fn("hyphen replace",t),t=t.replace(os[No.COMPARATORTRIM],X9t),Fn("comparator trim",t),t=t.replace(os[No.TILDETRIM],Z9t),Fn("tilde trim",t),t=t.replace(os[No.CARETTRIM],e7t),Fn("caret trim",t);let u=t.split(" ").map(p=>i7t(p,this.options)).join(" ").split(/\s+/).map(p=>p7t(p,this.options));o&&(u=u.filter(p=>(Fn("loose invalid filter",p,this.options),!!p.match(os[No.COMPARATORLOOSE])))),Fn("range list",u);let c=new Map,l=u.map(p=>new S7(p,this.options));for(let p of l){if(bLe(p))return[p];c.set(p.value,p)}c.size>1&&c.has("")&&c.delete("");let f=[...c.values()];return yLe.set(n,f),f}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>vLe(n,r)&&t.set.some(i=>vLe(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 J9t(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(h7t(this.set[r],t,this.options))return!0;return!1}};wLe.exports=_7;var Q9t=gLe(),yLe=new Q9t,Y9t=bL(),S7=vA(),Fn=yA(),J9t=lo(),{safeRe:os,t:No,comparatorTrimReplace:X9t,tildeTrimReplace:Z9t,caretTrimReplace:e7t}=sE(),{FLAG_INCLUDE_PRERELEASE:t7t,FLAG_LOOSE:r7t}=gA(),bLe=a(e=>e.value==="<0.0.0-0","isNullSet"),n7t=a(e=>e.value==="","isAny"),vLe=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"),i7t=a((e,t)=>(Fn("comp",e,t),e=s7t(e,t),Fn("caret",e),e=a7t(e,t),Fn("tildes",e),e=c7t(e,t),Fn("xrange",e),e=f7t(e,t),Fn("stars",e),e),"parseComparator"),Lo=a(e=>!e||e.toLowerCase()==="x"||e==="*","isX"),a7t=a((e,t)=>e.trim().split(/\s+/).map(r=>o7t(r,t)).join(" "),"replaceTildes"),o7t=a((e,t)=>{let r=t.loose?os[No.TILDELOOSE]:os[No.TILDE];return e.replace(r,(n,i,o,s,u)=>{Fn("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?(Fn("replaceTilde pr",u),c=`>=${i}.${o}.${s}-${u} <${i}.${+o+1}.0-0`):c=`>=${i}.${o}.${s} <${i}.${+o+1}.0-0`,Fn("tilde return",c),c})},"replaceTilde"),s7t=a((e,t)=>e.trim().split(/\s+/).map(r=>u7t(r,t)).join(" "),"replaceCarets"),u7t=a((e,t)=>{Fn("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)=>{Fn("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?(Fn("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`):(Fn("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`),Fn("caret return",l),l})},"replaceCaret"),c7t=a((e,t)=>(Fn("replaceXRanges",e,t),e.split(/\s+/).map(r=>l7t(r,t)).join(" ")),"replaceXRanges"),l7t=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)=>{Fn("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`),Fn("xRange return",n),n})},"replaceXRange"),f7t=a((e,t)=>(Fn("replaceStars",e,t),e.trim().replace(os[No.STAR],"")),"replaceStars"),p7t=a((e,t)=>(Fn("replaceGTE0",e,t),e.trim().replace(os[t.includePrerelease?No.GTE0PRE:No.GTE0],"")),"replaceGTE0"),d7t=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"),h7t=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(Fn(e[n].semver),e[n].semver!==S7.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 vA=S((PQr,ALe)=>{"use strict";var wA=Symbol("SemVer ANY"),A7=class e{static{a(this,"Comparator")}static get ANY(){return wA}constructor(t,r){if(r=ELe(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),T7("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===wA?this.value="":this.value=this.operator+this.semver.version,T7("comp",this)}parse(t){let r=this.options.loose?_Le[SLe.COMPARATORLOOSE]:_Le[SLe.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 xLe(n[2],this.options.loose):this.semver=wA}toString(){return this.value}test(t){if(T7("Comparator.test",t,this.options.loose),this.semver===wA||t===wA)return!0;if(typeof t=="string")try{t=new xLe(t,this.options)}catch{return!1}return x7(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 TLe(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new TLe(this.value,r).test(t.semver):(r=ELe(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("=")||x7(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||x7(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};ALe.exports=A7;var ELe=bL(),{safeRe:_Le,t:SLe}=sE(),x7=w7(),T7=yA(),xLe=lo(),TLe=Cu()});var EA=S((LQr,RLe)=>{"use strict";var m7t=Cu(),g7t=a((e,t,r)=>{try{t=new m7t(t,r)}catch{return!1}return t.test(e)},"satisfies");RLe.exports=g7t});var ILe=S((UQr,OLe)=>{"use strict";var y7t=Cu(),b7t=a((e,t)=>new y7t(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" ")),"toComparators");OLe.exports=b7t});var CLe=S((MQr,kLe)=>{"use strict";var v7t=lo(),w7t=Cu(),E7t=a((e,t,r)=>{let n=null,i=null,o=null;try{o=new w7t(t,r)}catch{return null}return e.forEach(s=>{o.test(s)&&(!n||i.compare(s)===-1)&&(n=s,i=new v7t(n,r))}),n},"maxSatisfying");kLe.exports=E7t});var PLe=S((qQr,DLe)=>{"use strict";var _7t=lo(),S7t=Cu(),x7t=a((e,t,r)=>{let n=null,i=null,o=null;try{o=new S7t(t,r)}catch{return null}return e.forEach(s=>{o.test(s)&&(!n||i.compare(s)===1)&&(n=s,i=new _7t(n,r))}),n},"minSatisfying");DLe.exports=x7t});var FLe=S((zQr,LLe)=>{"use strict";var R7=lo(),T7t=Cu(),NLe=bA(),A7t=a((e,t)=>{e=new T7t(e,t);let r=new R7("0.0.0");if(e.test(r)||(r=new R7("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 R7(s.semver.version);switch(s.operator){case">":u.prerelease.length===0?u.patch++:u.prerelease.push(0),u.raw=u.format();case"":case">=":(!o||NLe(u,o))&&(o=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),o&&(!r||NLe(r,o))&&(r=o)}return r&&e.test(r)?r:null},"minVersion");LLe.exports=A7t});var jLe=S((GQr,ULe)=>{"use strict";var R7t=Cu(),O7t=a((e,t)=>{try{return new R7t(e,t).range||"*"}catch{return null}},"validRange");ULe.exports=O7t});var IL=S((VQr,$Le)=>{"use strict";var I7t=lo(),qLe=vA(),{ANY:k7t}=qLe,C7t=Cu(),D7t=EA(),MLe=bA(),BLe=xL(),P7t=AL(),N7t=TL(),L7t=a((e,t,r,n)=>{e=new I7t(e,n),t=new C7t(t,n);let i,o,s,u,c;switch(r){case">":i=MLe,o=P7t,s=BLe,u=">",c=">=";break;case"<":i=BLe,o=N7t,s=MLe,u="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(D7t(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===k7t&&(h=new qLe(">=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");$Le.exports=L7t});var WLe=S((QQr,zLe)=>{"use strict";var F7t=IL(),U7t=a((e,t,r)=>F7t(e,t,">",r),"gtr");zLe.exports=U7t});var HLe=S((JQr,GLe)=>{"use strict";var j7t=IL(),M7t=a((e,t,r)=>j7t(e,t,"<",r),"ltr");GLe.exports=M7t});var QLe=S((ZQr,KLe)=>{"use strict";var VLe=Cu(),B7t=a((e,t,r)=>(e=new VLe(e,r),t=new VLe(t,r),e.intersects(t,r)),"intersects");KLe.exports=B7t});var JLe=S((tYr,YLe)=>{"use strict";var q7t=EA(),$7t=ku();YLe.exports=(e,t,r)=>{let n=[],i=null,o=null,s=e.sort((f,p)=>$7t(f,p,r));for(let f of s)q7t(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 n2e=S((rYr,r2e)=>{"use strict";var XLe=Cu(),I7=vA(),{ANY:O7}=I7,_A=EA(),k7=ku(),z7t=a((e,t,r={})=>{if(e===t)return!0;e=new XLe(e,r),t=new XLe(t,r);let n=!1;e:for(let i of e.set){for(let o of t.set){let s=G7t(i,o,r);if(n=n||s!==null,s)continue e}if(n)return!1}return!0},"subset"),W7t=[new I7(">=0.0.0-0")],ZLe=[new I7(">=0.0.0")],G7t=a((e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===O7){if(t.length===1&&t[0].semver===O7)return!0;r.includePrerelease?e=W7t:e=ZLe}if(t.length===1&&t[0].semver===O7){if(r.includePrerelease)return!0;t=ZLe}let n=new Set,i,o;for(let h of e)h.operator===">"||h.operator===">="?i=e2e(i,h,r):h.operator==="<"||h.operator==="<="?o=t2e(o,h,r):n.add(h.semver);if(n.size>1)return null;let s;if(i&&o){if(s=k7(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&&!_A(h,String(i),r)||o&&!_A(h,String(o),r))return null;for(let m of t)if(!_A(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=e2e(i,h,r),u===h&&u!==i)return!1}else if(i.operator===">="&&!_A(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=t2e(o,h,r),c===h&&c!==o)return!1}else if(o.operator==="<="&&!_A(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"),e2e=a((e,t,r)=>{if(!e)return t;let n=k7(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},"higherGT"),t2e=a((e,t,r)=>{if(!e)return t;let n=k7(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e},"lowerLT");r2e.exports=z7t});var D7=S((iYr,o2e)=>{"use strict";var C7=sE(),i2e=gA(),H7t=lo(),a2e=g7(),V7t=by(),K7t=CNe(),Q7t=PNe(),Y7t=FNe(),J7t=MNe(),X7t=qNe(),Z7t=zNe(),eKt=GNe(),tKt=VNe(),rKt=ku(),nKt=JNe(),iKt=ZNe(),aKt=SL(),oKt=nLe(),sKt=aLe(),uKt=bA(),cKt=xL(),lKt=b7(),fKt=v7(),pKt=TL(),dKt=AL(),hKt=w7(),mKt=hLe(),gKt=vA(),yKt=Cu(),bKt=EA(),vKt=ILe(),wKt=CLe(),EKt=PLe(),_Kt=FLe(),SKt=jLe(),xKt=IL(),TKt=WLe(),AKt=HLe(),RKt=QLe(),OKt=JLe(),IKt=n2e();o2e.exports={parse:V7t,valid:K7t,clean:Q7t,inc:Y7t,diff:J7t,major:X7t,minor:Z7t,patch:eKt,prerelease:tKt,compare:rKt,rcompare:nKt,compareLoose:iKt,compareBuild:aKt,sort:oKt,rsort:sKt,gt:uKt,lt:cKt,eq:lKt,neq:fKt,gte:pKt,lte:dKt,cmp:hKt,coerce:mKt,Comparator:gKt,Range:yKt,satisfies:bKt,toComparators:vKt,maxSatisfying:wKt,minSatisfying:EKt,minVersion:_Kt,validRange:SKt,outside:xKt,gtr:TKt,ltr:AKt,intersects:RKt,simplifyRange:OKt,subset:IKt,SemVer:H7t,re:C7.re,src:C7.src,tokens:C7.t,SEMVER_SPEC_VERSION:i2e.SEMVER_SPEC_VERSION,RELEASE_TYPES:i2e.RELEASE_TYPES,compareIdentifiers:a2e.compareIdentifiers,rcompareIdentifiers:a2e.rcompareIdentifiers}});var Ch=S((Wnn,Y7)=>{"use strict";var K7=function(){"use strict";return this===void 0}();K7?Y7.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:K7,propertyIsWritable:function(e,t){var r=Object.getOwnPropertyDescriptor(e,t);return!!(!r||r.writable||r.set)}}:(G2e={}.hasOwnProperty,H2e={}.toString,V2e={}.constructor.prototype,Q7=a(function(e){var t=[];for(var r in e)G2e.call(e,r)&&t.push(r);return t},"ObjectKeys"),K2e=a(function(e,t){return{value:e[t]}},"ObjectGetDescriptor"),Q2e=a(function(e,t,r){return e[t]=r.value,e},"ObjectDefineProperty"),Y2e=a(function(e){return e},"ObjectFreeze"),J2e=a(function(e){try{return Object(e).constructor.prototype}catch{return V2e}},"ObjectGetPrototypeOf"),X2e=a(function(e){try{return H2e.call(e)==="[object Array]"}catch{return!1}},"ArrayIsArray"),Y7.exports={isArray:X2e,keys:Q7,names:Q7,defineProperty:Q2e,getDescriptor:K2e,freeze:Y2e,getPrototypeOf:J2e,isES5:K7,propertyIsWritable:function(){return!0}});var G2e,H2e,V2e,Q7,K2e,Q2e,Y2e,J2e,X2e});var En=S((exports,module)=>{"use strict";var es5=Ch(),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 nFe=S((Vnn,rFe)=>{"use strict";var X7=En(),_y,MJt=a(function(){throw new Error(`No async scheduler available
|
|
146
146
|
|
|
147
147
|
See http://goo.gl/MqrFmX
|
|
148
148
|
`)},"noAsyncScheduler"),J7=X7.getNativePromise();X7.isNode&&typeof MutationObserver>"u"?(Z2e=global.setImmediate,eFe=process.nextTick,_y=X7.isRecentNode?function(e){Z2e.call(global,e)}:function(e){eFe.call(process,e)}):typeof J7=="function"&&typeof J7.resolve=="function"?(tFe=J7.resolve(),_y=a(function(e){tFe.then(e)},"schedule")):typeof MutationObserver<"u"&&!(typeof window<"u"&&window.navigator&&(window.navigator.standalone||window.cordova))&&"classList"in document.documentElement?_y=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"?_y=a(function(e){setImmediate(e)},"schedule"):typeof setTimeout<"u"?_y=a(function(e){setTimeout(e,0)},"schedule"):_y=MJt;var Z2e,eFe,tFe;rFe.exports=_y});var aFe=S((Qnn,iFe)=>{"use strict";function BJt(e,t,r,n,i){for(var o=0;o<i;++o)r[o+n]=e[o+t],e[o+t]=void 0}a(BJt,"arrayMove");function Dh(e){this._capacity=e,this._length=0,this._front=0}a(Dh,"Queue");Dh.prototype._willBeOverCapacity=function(e){return this._capacity<e};Dh.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};Dh.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};Dh.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};Dh.prototype.length=function(){return this._length};Dh.prototype._checkCapacity=function(e){this._capacity<e&&this._resizeTo(this._capacity<<1)};Dh.prototype._resizeTo=function(e){var t=this._capacity;this._capacity=e;var r=this._front,n=this._length,i=r+n&t-1;BJt(this,0,this,t,i)};iFe.exports=Dh});var cFe=S((Jnn,Z7)=>{"use strict";var uFe;try{throw new Error}catch(e){uFe=e}var qJt=nFe(),oFe=aFe();function Du(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new oFe(16),this._normalQueue=new oFe(16),this._haveDrainedQueues=!1;var e=this;this.drainQueues=function(){e._drainQueues()},this._schedule=qJt}a(Du,"Async");Du.prototype.setScheduler=function(e){var t=this._schedule;return this._schedule=e,this._customScheduler=!0,t};Du.prototype.hasCustomScheduler=function(){return this._customScheduler};Du.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues};Du.prototype.fatalError=function(e,t){t?(process.stderr.write("Fatal "+(e instanceof Error?e.stack:e)+`
|
|
@@ -500,7 +500,7 @@ $1`)};fO.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.`;mQe.exports=gEr});var Bee=S((yQe,bQe)=>{"use strict";var ka=Va(),sb=lO(),ir=bQe.exports,yEr=gQe();ir.append=function(e,t){return typeof e=="string"&&typeof t=="string"?e+t:e};ir.camelcase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return t.toUpperCase()})};ir.capitalize=function(e){return typeof e!="string"?"":e.charAt(0).toUpperCase()+e.slice(1)};ir.capitalizeAll=function(e){if(typeof e!="string")return"";if(ka.isString(e))return e.replace(/\w\S*/g,function(t){return ir.capitalize(t)})};ir.center=function(e,t){if(typeof e!="string")return"";for(var r="",n=0;n<t;)r+=" ",n++;return r+e+r};ir.chop=function(e){return typeof e!="string"?"":sb.chop(e)};ir.dashcase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return"-"+t})};ir.dotcase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return"."+t})};ir.downcase=function(){return ir.lowercase.apply(this,arguments)};ir.ellipsis=function(e,t){if(ka.isString(e))return e.length<=t?e:ir.truncate(e,t)+"\u2026"};ir.hyphenate=function(e){return typeof e!="string"?"":e.split(" ").join("-")};ir.isString=function(e){return typeof e=="string"};ir.lowercase=function(e){return ka.isObject(e)&&e.fn?e.fn(this).toLowerCase():typeof e!="string"?"":e.toLowerCase()};ir.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};ir.pascalcase=function(e){return typeof e!="string"?"":(e=sb.changecase(e,function(t){return t.toUpperCase()}),e.charAt(0).toUpperCase()+e.slice(1))};ir.pathcase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return"/"+t})};ir.plusify=function(e,t){return typeof e!="string"?"":(ka.isString(t)||(t=" "),e.split(t).join("+"))};ir.prepend=function(e,t){return typeof e=="string"&&typeof t=="string"?t+e:e};ir.raw=function(e){var t=e.fn(),r=ka.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};ir.remove=function(e,t){return typeof e!="string"?"":ka.isString(t)?e.split(t).join(""):e};ir.removeFirst=function(e,t){return typeof e!="string"?"":ka.isString(t)?e.replace(t,""):e};ir.replace=function(e,t,r){return typeof e!="string"?"":ka.isString(t)?(ka.isString(r)||(r=""),e.split(t).join(r)):e};ir.replaceFirst=function(e,t,r){return typeof e!="string"?"":ka.isString(t)?(ka.isString(r)||(r=""),e.replace(t,r)):e};ir.reverse=v_().reverse;ir.sentence=function(e){return typeof e!="string"?"":e.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})};ir.snakecase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return"_"+t})};ir.split=function(e,t){return typeof e!="string"?"":(ka.isString(t)||(t=","),e.split(t))};ir.startsWith=function(e,t,r){var n=[].slice.call(arguments);return r=n.pop(),ka.isString(t)&&t.indexOf(e)===0?r.fn(this):typeof r.inverse=="function"?r.inverse(this):""};ir.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(yQe.capitalize(s))}return i.join(" ")};ir.trim=function(e){return typeof e=="string"?e.trim():""};ir.trimLeft=function(e){if(ka.isString(e))return e.replace(/^\s+/,"")};ir.trimRight=function(e){if(ka.isString(e))return e.replace(/\s+$/,"")};ir.truncate=function(e,t,r){if(ka.isString(e))return typeof r!="string"&&(r=""),e.length>t?e.slice(0,t-r.length)+r:e};ir.truncateWords=function(e,t,r){if(ka.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}};ir.upcase=function(){return ir.uppercase.apply(this,arguments)};ir.uppercase=function(e){return ka.isObject(e)&&e.fn?e.fn(this).toUpperCase():typeof e!="string"?"":e.toUpperCase()};ir.lorem=function(e){return(isNaN(e)||e<1||!e)&&(e=11),yEr.substring(0,e)}});var $ee=S((Z_n,vQe)=>{"use strict";var qee=require("url"),yO=Va(),bEr=require("querystring"),ub=vQe.exports;ub.encodeURI=function(e){if(yO.isString(e))return encodeURIComponent(e)};ub.escape=function(e){if(yO.isString(e))return bEr.escape(e)};ub.decodeURI=function(e){if(yO.isString(e))return decodeURIComponent(e)};ub.urlResolve=function(e,t){return qee.resolve(e,t)};ub.urlParse=function(e){return qee.parse(e)};ub.stripQuerystring=function(e){if(yO.isString(e))return e.split("?")[0]};ub.stripProtocol=function(e){if(yO.isString(e)){var t=qee.parse(e);return t.protocol="",t.format()}}});var zee=S((eSn,wQe)=>{"use strict";var vEr=require("uuid"),wEr=wQe.exports;wEr.uuid=function(){return vEr.v4()}});var _Qe=S((tSn,EQe)=>{"use strict";EQe.exports={array:v_(),code:Z9e(),collection:h7e(),comparison:yee(),html:P7e(),i18n:L7e(),inflection:j7e(),match:YKe(),math:Uee(),misc:ZKe(),number:jee(),object:xj(),path:pQe(),regex:Mee(),string:Bee(),url:$ee(),uuid:zee()}});var SQe=S((rSn,S_)=>{"use strict";var bO=_Qe();S_.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||oO();if(S_.exports.handlebars=n,t)t.forEach(function(i){n.registerHelper(bO[i])});else for(let i in bO){let o=bO[i];n.registerHelper(o)}return n.helpers},"helpers");for(let e in bO){let t=bO[e];S_.exports[e]=function(r){r=r||{};var n=r.handlebars||r.hbs||oO();return S_.exports.handlebars=n,n.registerHelper(t),t}}S_.exports.utils=lO()});var tet=S(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});An.InvalidRemoveOpPath=An.NoTarget=An.InvalidScimPatchRequest=An.NoPathInScimPatchOp=An.FilterArrayTargetNotFound=An.FilterOnEmptyArray=An.InvalidScimPatchOp=An.RemoveValueNotArray=An.RemoveValueNestedArrayNotSupported=An.InvalidScimRemoveValue=An.InvalidScimPatch=An.ScimError=void 0;var dI=class extends Error{static{a(this,"ScimError")}constructor(t){super(),this.scimCode=t}};An.ScimError=dI;var gm=class extends dI{static{a(this,"InvalidScimPatch")}constructor(t,r="invalidSyntax"){super(r),this.message=`Invalid SCIM Patch: ${t}`}};An.InvalidScimPatch=gm;var hI=class extends dI{static{a(this,"InvalidScimRemoveValue")}constructor(t,r="invalidSyntax"){super(r),this.message=`Invalid SCIM Remove Operation: ${t}`}};An.InvalidScimRemoveValue=hI;var hne=class extends hI{static{a(this,"RemoveValueNestedArrayNotSupported")}constructor(){super("Invalid patch value, remove does not support arrays inside arrays.")}};An.RemoveValueNestedArrayNotSupported=hne;var mne=class extends hI{static{a(this,"RemoveValueNotArray")}constructor(){super("Remove with patch value is supported only for array properties.")}};An.RemoveValueNotArray=mne;var mI=class extends gm{static{a(this,"InvalidScimPatchOp")}constructor(t){super(`${t}`,"invalidSyntax")}};An.InvalidScimPatchOp=mI;var gne=class extends mI{static{a(this,"FilterOnEmptyArray")}constructor(t,r,n){super(`${t}`),this.attrName=r,this.valuePath=n}};An.FilterOnEmptyArray=gne;var yne=class extends mI{static{a(this,"FilterArrayTargetNotFound")}constructor(t,r,n,i){super(`${t}`),this.attrName=r,this.valuePath=n,this.schema=i}};An.FilterArrayTargetNotFound=yne;var bne=class extends gm{static{a(this,"NoPathInScimPatchOp")}constructor(){super('Missing path in "remove" patch operation',"noTarget")}};An.NoPathInScimPatchOp=bne;var vne=class extends gm{static{a(this,"InvalidScimPatchRequest")}constructor(t){super(`The SCIM patch request is invalid: ${t}`)}};An.InvalidScimPatchRequest=vne;var wne=class extends gm{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")}};An.NoTarget=wne;var Ene=class extends gm{static{a(this,"InvalidRemoveOpPath")}constructor(){super("Path specified in 'remove' operation doesn't exist")}};An.InvalidRemoveOpPath=Ene});var oet=S(vf=>{"use strict";Object.defineProperty(vf,"__esModule",{value:!0});vf.parseExpression=vf.parseFilter=vf.Tokens=vf.tokenizer=void 0;var iet={type:"EOT",literal:""};function Jxr(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(iet),t}a(Jxr,"tokenizer");vf.tokenizer=Jxr;var _ne=class{static{a(this,"Tokens")}getList(){return this.list.map((t,r)=>r==this.i?`[${t.literal}]`:t.literal)}peek(){return this.current||iet}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}};vf.Tokens=_ne;var Xxr=new Set(["eq","ne","co","sw","ew","gt","lt","ge","le"]),Zxr=new Set(["pr"]);function Sne(e){return jM(MM(e),e,Rb.LOWEST)}a(Sne,"parseFilter");vf.parseFilter=Sne;function MM(e){let t=e.shift();if(t.literal=="("){let r=Sne(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:MM(e)};return jM(r,e,Rb.NOT)}else{if(t.type=="Word")return aet(t,e);throw new Error(`Unexpected token ${t.literal} (${t.type})`)}}a(MM,"parseExpression");vf.parseExpression=MM;var Rb;(function(e){e[e.LOWEST=1]="LOWEST",e[e.OR=2]="OR",e[e.AND=3]="AND",e[e.NOT=4]="NOT"})(Rb||(Rb={}));var net={or:Rb.OR,and:Rb.AND,not:Rb.NOT};function jM(e,t,r){let n=t.peek().literal.toLowerCase(),i=net[n];if(!i||r>=i)return e;let o=[e];for(;t.peek().literal.toLowerCase()===n;){let s=MM(t.forward()),u=t.peek().literal.toLowerCase();net[u]>i&&(s=jM(s,t,i)),o.push(s)}return jM({op:n,filters:o},t,r)}a(jM,"parseInxif");function aet(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(Xxr.has(i)){let o=eTr(t);return{op:i,attrPath:r,compValue:o}}else{if(Zxr.has(i))return{op:i,attrPath:r};if(i==="["){let o=Sne(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,aet(c,t)]}}else throw new Error(`Unexpected token ${r} ${n.literal} as valFilter operator`)}}a(aet,"readValFilter");function eTr(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(eTr,"parseCompValue")});var set=S(qM=>{"use strict";Object.defineProperty(qM,"__esModule",{value:!0});qM.Tester=void 0;var BM=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)}};qM.Tester=BM;BM.UNDEF=Symbol("undefined")});var uet=S(wf=>{"use strict";Object.defineProperty(wf,"__esModule",{value:!0});wf.log=wf.valfilter=void 0;var tTr=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,wf.valfilter)(r,t))});case"not":return Object.assign(Object.assign({},e),{filter:(0,wf.valfilter)(e,t)});case"[]":return(0,wf.valfilter)(e.valFilter,e.attrPath)}return e},"valfilter");wf.valfilter=tTr;var rTr=a(e=>{switch(e.op){case"and":case"or":let t=e.filters.map(wf.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");wf.log=rTr});var cet=S($M=>{"use strict";Object.defineProperty($M,"__esModule",{value:!0});$M.stringify=void 0;function gI(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=>gI(i)).join(` ${e.op} `);r=t?`(${n})`:n;break;case"and":r=e.filters.map(i=>gI(i,!0)).join(` ${e.op} `);break;case"not":r=`${e.op} (${gI(e.filter)})`;break;case"[]":r=`${e.attrPath}[${gI(e.valFilter)}]`;break}return r}a(gI,"stringify");$M.stringify=gI});var zM=S(nu=>{"use strict";Object.defineProperty(nu,"__esModule",{value:!0});nu.flatten=nu.parse=nu.filter=nu.Tester=nu.stringify=void 0;var xne=oet(),nTr=set(),fet=uet(),iTr=cet();Object.defineProperty(nu,"stringify",{enumerable:!0,get:function(){return iTr.stringify}});nu.Tester=nTr.Tester;function aTr(e){let t=new nu.Tester;return r=>t.test(r,e)}a(aTr,"filter");nu.filter=aTr;function oTr(e){let t=new xne.Tokens(xne.tokenizer(e)),r=xne.parseFilter(t);if(t.peek().type!=="EOT")throw new Error(`unexpected EOT ${t.getList()}`);return r}a(oTr,"parse");nu.parse=oTr;function sTr(e){return fet.log(fet.valfilter(e))}a(sTr,"flatten");nu.flatten=sTr});var Nne=S(Gn=>{"use strict";Object.defineProperty(Gn,"__esModule",{value:!0});Gn.PATCH_OPERATION_SCHEMA=Gn.InvalidScimRemoveValue=Gn.RemoveValueNotArray=Gn.RemoveValueNestedArrayNotSupported=Gn.NoTarget=Gn.InvalidScimPatchRequest=Gn.NoPathInScimPatchOp=Gn.InvalidScimPatchOp=Gn.InvalidScimPatch=Gn.ScimError=void 0;Gn.patchBodyValidation=pTr;Gn.scimPatch=dTr;var Hr=tet();Object.defineProperty(Gn,"ScimError",{enumerable:!0,get:function(){return Hr.ScimError}});Object.defineProperty(Gn,"InvalidScimPatch",{enumerable:!0,get:function(){return Hr.InvalidScimPatch}});Object.defineProperty(Gn,"InvalidScimPatchOp",{enumerable:!0,get:function(){return Hr.InvalidScimPatchOp}});Object.defineProperty(Gn,"NoPathInScimPatchOp",{enumerable:!0,get:function(){return Hr.NoPathInScimPatchOp}});Object.defineProperty(Gn,"InvalidScimPatchRequest",{enumerable:!0,get:function(){return Hr.InvalidScimPatchRequest}});Object.defineProperty(Gn,"NoTarget",{enumerable:!0,get:function(){return Hr.NoTarget}});Object.defineProperty(Gn,"RemoveValueNestedArrayNotSupported",{enumerable:!0,get:function(){return Hr.RemoveValueNestedArrayNotSupported}});Object.defineProperty(Gn,"RemoveValueNotArray",{enumerable:!0,get:function(){return Hr.RemoveValueNotArray}});Object.defineProperty(Gn,"InvalidScimRemoveValue",{enumerable:!0,get:function(){return Hr.InvalidScimRemoveValue}});var Tne=zM(),Ane=CR(),Ine=/(\[|\])/,uTr=/^(.+)\[(.+)\]$/,pet=/(?!\B"[^[]*)\.(?![^\]]*"\B)/g,cTr=["remove","add","replace"],lTr="urn:ietf:params:scim:schemas:core:2.0:User",fTr="urn:ietf:params:scim:schemas:core:2.0:Group";Gn.PATCH_OPERATION_SCHEMA="urn:ietf:params:scim:api:messages:2.0:PatchOp";function pTr(e){if(!e.schemas||!e.schemas.includes(Gn.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(kne)}a(pTr,"patchBodyValidation");function dTr(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 hTr(n,i);case"add":case"Add":case"replace":case"Replace":return het(n,i,!!r.treatMissingAsAdd);default:throw new Hr.InvalidScimPatchRequest(`Operator is invalid for SCIM patch request. ${i}`)}},e)}a(dTr,"scimPatch");function kne(e){if(typeof e.op!="string"||!bTr(e.op))throw new Hr.InvalidScimPatchRequest(`Invalid op "${e.op}" in the request.`);if(e.op==="remove"&&!e.path)throw new Hr.NoPathInScimPatchOp;if(bI(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(kne,"validatePatchOperation");function Cne(e){let t=e.lastIndexOf(":");if(t<0)return e.split(pet);let r=e.substring(0,t),n=e.substring(t+1).split(pet);switch(r){case fTr:case lTr:break;default:n.unshift(r);break}return n}a(Cne,"resolvePaths");function hTr(e,t){let r;kne(t);let n=Cne(t.path);try{r=met(e,n,{isRemoveOp:!0})}catch(o){if(o instanceof Hr.InvalidRemoveOpPath)return e;throw o}let i=n[n.length-1];if(!Ine.test(i)){for(let o of r)t.value?o[i]=yTr(o[i],t.value):delete o[i];return e}for(let o of r){let{attrName:s,valuePath:u,array:c}=Dne(i,o);o[s]=Pne(c,u,{excludeIfMatchFilter:!0}),o[s].length===0&&delete o[s]}return e}a(hTr,"applyRemoveOperation");function het(e,t,r){var n;let i;if(kne(t),!t.path)return yI(e,t);let o=Cne(t.path),s=o[o.length-1];try{i=met(e,o)}catch(u){if(u instanceof Hr.FilterOnEmptyArray||u instanceof Hr.FilterArrayTargetNotFound){let c=u.schema,l=(0,Tne.parse)(u.valuePath);if(bI(t.op)&&"compValue"in l&&l.compValue!==void 0&&l.op==="eq"){let f={};return f[l.attrPath]=l.compValue,f[s]=yI(void 0,t,!0),c[u.attrName]=[...(n=c[u.attrName])!==null&&n!==void 0?n:[],f],e}else if(r&&Rne(t.op)&&"compValue"in l&&l.compValue!==void 0&&l.op==="eq")return het(e,Object.assign(Object.assign({},t),{op:"add"}),!1);throw new Hr.NoTarget(t.path)}throw u}if(!Ine.test(s)){for(let u of i)u[s]=yI(u[s],t);return e}for(let u of i){let{valuePath:c,array:l}=Dne(s,u),f=Pne(l,c);if(Rne(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]=yI(l[p],t))}return e}a(het,"applyAddOrReplaceOperation");function Dne(e,t){let r=e.match(uTr);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 One(n,i,o)}a(Dne,"extractArray");function met(e,t,r={}){let n=[e];for(let i=0;i<t.length-1;i++){let o=t[i];Ine.test(o)?n=n.flatMap(s=>{try{let{attrName:u,valuePath:c,array:l}=Dne(o,s),f=Pne(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(met,"navigate");function yI(e,t,r){if(Array.isArray(e)){if(Array.isArray(t.value)){if(bI(t.op)){let i=t.value.filter(o=>!det(e,o));return e.concat(i)}return t.value}if(Rne(t.op))return e.map(i=>yI(i,t,r));let n=e;return det(n,t.value)||n.push(t.value),n}return e!==null&&typeof e=="object"?mTr(e,t,r):t.value}a(yI,"addOrReplaceAttribute");function mTr(e,t,r){if(typeof t.value!="object"){if(bI(t.op)&&!r)throw new Hr.InvalidScimPatchOp("Invalid patch query.");return t.value}for(let[n,i]of Object.entries(t.value))gTr(e,Cne(n),i,t.op);return e}a(mTr,"addOrReplaceObjectAttribute");function gTr(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(bI(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(gTr,"assign");function Pne(e,t,r={}){try{let n=(0,Tne.filter)((0,Tne.parse)(t));return e.filter(i=>r.excludeIfMatchFilter?!n(i):n(i))}catch(n){throw new Hr.InvalidScimPatchOp(`${n}`)}}a(Pne,"filterWithQuery");function yTr(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=>!Ane(r,n))}),e):e.filter(r=>!Ane(t,r))}a(yTr,"removeWithPatchValue");function det(e,t){return e.some(r=>Ane(t,r))}a(det,"deepIncludes");function bTr(e){return cTr.includes(e.toLowerCase())}a(bTr,"isValidOperation");function bI(e){return e!==void 0&&e.toLowerCase()==="add"}a(bI,"isAddOperation");function Rne(e){return e!==void 0&&e.toLowerCase()==="replace"}a(Rne,"isReplaceOperation");var One=class{static{a(this,"ScimSearchQuery")}constructor(t,r,n){this.attrName=t,this.valuePath=r,this.array=n}}});var O1r={};oe(O1r,{execute:()=>R1r});module.exports=YB(O1r);var Ma={};oe(Ma,{analyticsEnabled:()=>dL,generateConfigID:()=>QL,getAIConfig:()=>bXt,getConfig:()=>Pu,getDefaultGoogleConfig:()=>mK,getGoogleConfig:()=>YL,getGoogleDatasourceConfig:()=>yK,getOIDCConfig:()=>mXt,getOIDCConfigById:()=>bK,getOIDCLogosDoc:()=>dXt,getPlatformUrl:()=>MA,getRecaptchaConfig:()=>vXt,getSCIMConfig:()=>yXt,getSMTPConfig:()=>gXt,getSMTPConfigDoc:()=>IUe,getSettingsConfig:()=>gK,getSettingsConfigDoc:()=>tE,save:()=>fXt});var Cf=(r=>(r.ASCENDING="ascending",r.DESCENDING="descending",r))(Cf||{});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||{}),Yoe=["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"],Joe=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],Xoe=[...Yoe,...Joe],$b={"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 Zoe=a((e,t,r)=>e==="usage"&&t==="static","isStaticQuota"),ese=a((e,t,r)=>e==="usage"&&t==="monthly","isMonthlyQuota"),tse=a((e,t)=>e==="constant","isConstantQuota");var Am="--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||{}),ma=(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))(ma||{});var ga=(n=>(n.CONNECTION_CHECKING="connection",n.FETCH_TABLE_NAMES="fetch_table_names",n.EXPORT_SCHEMA="export_schema",n))(ga||{});var rse=te(require("lodash/isPlainObject"));var Rm=(s=>(s.EQUAL="equal",s.NOT_EQUAL="notEqual",s.EMPTY="empty",s.NOT_EMPTY="notEmpty",s.FUZZY="fuzzy",s.STRING="string",s))(Rm||{}),ll=(i=>(i.CONTAINS="contains",i.NOT_CONTAINS="notContains",i.CONTAINS_ANY="containsAny",i.ONE_OF="oneOf",i))(ll||{}),zb=(t=>(t.RANGE="range",t))(zb||{}),dS=(r=>(r.AND="$and",r.OR="$or",r))(dS||{});function fd(e){return Object.values(dS).includes(e)}a(fd,"isLogicalSearchOperator");function nse(e){return Object.values(Rm).includes(e)}a(nse,"isBasicSearchOperator");function ise(e){return Object.values(ll).includes(e)}a(ise,"isArraySearchOperator");function ek(e){return Object.values(zb).includes(e)}a(ek,"isRangeSearchOperator");function ase(e){return(0,rse.default)(e)&&"conditions"in e}a(ase,"isLogicalFilter");var ose=a(e=>typeof e=="object"&&e._id&&e._rev,"isDocument");var hS=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(hS||{});var sse={USE_ZOD_VALIDATOR:!1,AI_AGENTS:!1,USE_DYNAMIC_LOADING:!0,DIRECT_LOGIN_TO_ACCOUNT_PORTAL:!1,DEBUG_UI:!1};var pd=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(pd||{});var mS=(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))(mS||{});var tk=a(e=>e.hosting==="cloud","isCloudAccount");var rk=a(e=>e.authType==="sso","isSSOAccount");var Me="_",Pa="\uFFF0",dd=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||{}),JB=["role","datasource","datasource_plus","ta","au","wh","screen","query","metadata","view","workspace_app","workspace_favourite","inst","layout"],Df=(t=>(t.USER_METADATA="ta_users",t))(Df||{}),hd=(r=>(r.VIEW="view",r.ROW_ACTION="row_action",r))(hd||{});function Wb(e){return!!e.providerType}a(Wb,"isSSOUser");var Gb=["rows","queries","automations"],use=["queries","automations"];var cse="SYSTEM",Om="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||{}),su=(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))(su||{});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||{}),lse=[...Object.values(hr),...Object.values(su)];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||{}),fse={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 pse(e){return e.stepId==="BRANCH"}a(pse,"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 gS=(r=>(r.BACKUP="backup",r.RESTORE="restore",r))(gS||{});var Im=(i=>(i.PUBLISH="publish",i.MANUAL="manual",i.SCHEDULED="scheduled",i.RESTORING="restoring",i))(Im||{});var XB=(s=>(s.NONE="none",s.FORM_DATA="form",s.XML="xml",s.ENCODED="encoded",s.JSON="json",s.TEXT="text",s))(XB||{}),yS=(s=>(s.GET="GET",s.POST="POST",s.PATCH="PATCH",s.PUT="PUT",s.HEAD="HEAD",s.DELETE="DELETE",s))(yS||{});var Ko="bb_internal";var md=(o=>(o.CREATED_BY="createdBy",o.CREATED_AT="createdAt",o.UPDATED_BY="updatedBy",o.UPDATED_AT="updatedAt",o.AUTO_ID="autoID",o))(md||{});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 dse="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"],Lat=["number","bigint"];function ZB(e){return Lat.includes(e)}a(ZB,"isNumeric");function hse(e){return e.type==="formula"&&e.formulaType==="static"&&e.responseType&&ZB(e.responseType)}a(hse,"isNumericStaticFormula");var Fat=["string","longform","options","number","boolean","datetime","bigint","ai"];function mse(e){return Fat.includes(e)}a(mse,"canGroupBy");var gr={};oe(gr,{AutomationViewMode:()=>S4,BUDIBASE_DATASOURCE_TYPE:()=>hfe,Config:()=>wfe,Cookie:()=>fv,DEFAULT_BB_DATASOURCE_ID:()=>bS,DEFAULT_EMPLOYEE_TABLE_ID:()=>bfe,DEFAULT_EXPENSES_TABLE_ID:()=>yfe,DEFAULT_INVENTORY_TABLE_ID:()=>gfe,DEFAULT_JOBS_TABLE_ID:()=>mfe,DEFAULT_TENANT_ID:()=>pi,DeprecatedViews:()=>f0,DesignDocuments:()=>Qm,DocumentType:()=>Mt,GlobalRole:()=>vfe,Header:()=>To,InternalTable:()=>Df,MAX_VALID_DATE:()=>A4,MIN_VALID_DATE:()=>wpt,SEPARATOR:()=>Me,SQLITE_DESIGN_DOC_ID:()=>Na,SQS_DATASOURCE_INTERNAL:()=>xd,StaticDatabases:()=>bn,UNICODE_MAX:()=>Pa,USER_METADATA_PREFIX:()=>nC,UserStatus:()=>T4,ViewName:()=>Sd,WORKSPACE_DEV:()=>x4,WORKSPACE_DEV_PREFIX:()=>gc,WORKSPACE_PREFIX:()=>mc});var yse={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 ya=["_id","_rev","type","createdAt","updatedAt","tableId"],sc=["_id","_rev","tableId"];function km(e){return ya.includes(e)}a(km,"isInternalColumnName");function bse(e){return sc.includes(e)}a(bse,"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"}},vse={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var bS="datasource_internal_bb_default";var Lr={};oe(Lr,{ColumnSplitter:()=>R3,NoEmptyFilterStrings:()=>Vle,buildQuery:()=>Kle,cleanupQuery:()=>D3,fixupFilterArrays:()=>N3,getKeyNumbering:()=>P3,getValidOperatorsForType:()=>uft,hasFilters:()=>O3,limit:()=>Yle,recurseLogicalOperators:()=>C3,removeKeyNumbering:()=>dk,runQuery:()=>Xk,search:()=>fft,sort:()=>Qle,splitFiltersArray:()=>hk});var cv=te(require("dayjs"));var zt={};oe(zt,{filterValueToLabel:()=>zat,hasSchema:()=>Wat,isSupportedUserSearch:()=>Ese,parallelForeach:()=>$at,processSearchFilters:()=>eq,toMap:()=>Hat,trimOtherProps:()=>Gat,unreachable:()=>qat});var wse=te(require("lodash/pick"));var Bat=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function qat(e,t){let r=t?.message||`No such case in exhaustive switch: ${e}`;if(!!!t?.doNotThrow)throw new Error(r)}a(qat,"unreachable");async function $at(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($at,"parallelForeach");function zat(){return Object.keys(ws).reduce((e,t)=>{let n=ws[t];return e[n.value]=n.label,e},{})}a(zat,"filterValueToLabel");function Wat(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null&&!(e instanceof Date)&&Object.keys(e).length>0}a(Wat,"hasSchema");function Gat(e,t){return Object.keys(e).filter(n=>t.includes(n)).reduce((n,i)=>({...n,[i]:e[i]}),{})}a(Gat,"trimOtherProps");function Ese(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(fd(o)){for(let l of e[o].conditions)if(!Ese(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(Ese,"isSupportedUserSearch");function eq(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,wse.default)(i,Bat);return o.field=dk(o.field),o})}]}}a(eq,"processSearchFilters");function Hat(e,t){return t.reduce((r,n)=>(r[n[e]]=n,r),{})}a(Hat,"toMap");var Ye={};oe(Ye,{cancelableTimeout:()=>_se,cron:()=>ift,deepGet:()=>tq,duplicateName:()=>rft,getSequentialName:()=>nft,getUserColor:()=>Kat,getUserInitials:()=>Vat,getUserLabel:()=>Qat,isGoogleSheets:()=>Jat,isSQL:()=>Xat,lists:()=>T3,retry:()=>Zat,roles:()=>x3,schema:()=>o0,views:()=>S3,wait:()=>rq,withTimeout:()=>Yat});var tq=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"),Vat=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"),Kat=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"),Qat=a(e=>{if(!e)return"";let{firstName:t,lastName:r,email:n}=e;return t&&r?`${t} ${r}`:t||r||n},"getUserLabel");function _se(e){let t;return[new Promise((r,n)=>{t=setTimeout(()=>{n({status:301,errno:"ETIME"})},e)}),()=>{clearTimeout(t)}]}a(_se,"cancelableTimeout");async function Yat(e,t){let[r,n]=_se(e),i=await Promise.race([t(),r]);return n(),i}a(Yat,"withTimeout");function Jat(e){return e==="GOOGLE_SHEETS"}a(Jat,"isGoogleSheets");function Xat(e){return!e||!e.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(e.source)!==-1||e.isSQL===!0}a(Xat,"isSQL");async function rq(e){return new Promise(t=>setTimeout(t,e))}a(rq,"wait");async function Zat(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 rq(o);try{return await e()}catch(s){n=s}}throw n}a(Zat,"retry");var Ble=te(fl()),qle=te(jle());var Mle="(Input cron: ",qlt={"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 $lt(e){let t=[];for(let r of e){r.includes(Mle)&&(r=r.split(Mle)[0].trim());for(let[n,i]of Object.entries(qlt))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));t.push(r)}return t}a($lt,"improveErrors");function $le(e,t=4){let r=qle.default.parseExpression(e),n=[];for(let i=0;i<t;i++)n.push(r.next().toString());return n}a($le,"getNextExecutionDates");function zle(e){let t=(0,Ble.default)(e,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return t.isValid()?{valid:!0}:{valid:!1,err:$lt(t.getError())}}a(zle,"validate");var o0={};oe(o0,{decodeNonAscii:()=>E3,encodeNonAscii:()=>Glt,isDeprecatedSingleUserColumn:()=>zlt,isNumeric:()=>Hlt,isRequired:()=>Wlt});function zlt(e){return e.type==="bb_reference"&&e.subtype==="user"&&e.constraints?.type!=="array"}a(zlt,"isDeprecatedSingleUserColumn");function Wlt(e){return!!e&&(typeof e.presence!="boolean"&&e.presence?.allowEmpty===!1||e.presence===!0)}a(Wlt,"isRequired");function Glt(e){return e.split("").map(t=>t.charCodeAt(0)>127?"\\u"+t.charCodeAt(0).toString(16).padStart(4,"0"):t).join("")}a(Glt,"encodeNonAscii");function E3(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,(t,r)=>String.fromCharCode(parseInt(r,16)))}a(E3,"decodeNonAscii");function Hlt(e){return e.type==="number"||e.type==="bigint"}a(Hlt,"isNumeric");var S3={};oe(S3,{basicFields:()=>Jlt,calculationFields:()=>Ylt,hasCalculationFields:()=>Qlt,isBasicViewField:()=>Vlt,isCalculationField:()=>s0,isCalculationView:()=>Klt,isV2:()=>Xlt,isVisible:()=>Wle});var _3=te(require("lodash/pickBy"));function s0(e){return"calculationType"in e}a(s0,"isCalculationField");function Vlt(e){return!s0(e)}a(Vlt,"isBasicViewField");function Klt(e){return e.type==="calculation"}a(Klt,"isCalculationView");function Qlt(e){return Object.values(e.schema||{}).some(s0)}a(Qlt,"hasCalculationFields");function Ylt(e){return(0,_3.default)(e.schema||{},s0)}a(Ylt,"calculationFields");function Wle(e){return e.visible!==!1}a(Wle,"isVisible");function Jlt(e,t){let{visible:r=!0}=t||{};return(0,_3.default)(e.schema||{},n=>!s0(n)&&(!r||Wle(n)))}a(Jlt,"basicFields");function Xlt(e){return e.version===2}a(Xlt,"isV2");var x3={};oe(x3,{checkForRoleInheritanceLoops:()=>eft});function Zlt(e){return`role${Me}${e}`}a(Zlt,"prefixForCheck");function eft(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=Zlt(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(eft,"checkForRoleInheritanceLoops");var T3={};oe(T3,{punctuateList:()=>tft});function tft(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(tft,"punctuateList");var rft=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"),nft=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 ift={getNextExecutionDates:$le,validate:zle};var Jk=te(require("lodash/isPlainObject")),A3=te(require("lodash/isEmpty"));var oft=/{{([^{].*?)}}/g,Hle=Object.values(dS),sft=[...Object.values(Rm),...Object.values(ll),...Object.values(zb)],uft=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"||o0.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"),Vle=[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 C3(e,t){for(let r of Hle)e[r]&&(e[r].conditions=e[r].conditions.map(n=>t(n)));return e}a(C3,"recurseLogicalOperators");var D3=a(e=>{for(let t of Vle)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===""||cft(o))&&delete e[t][i]}return e=C3(e,D3),e},"cleanupQuery");function cft(e){return Array.isArray(e)&&e.length===0}a(cft,"isEmptyArray");var dk=a(e=>P3(e).key,"removeKeyNumbering"),P3=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"),R3=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}=P3(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=E3(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function lft(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(oft)||[]).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=vse[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(nse(r)||ise(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(lft,"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 Kle(e){if(!e)return{};if(Array.isArray(e)&&(e=eq(e),!e))return{};let t={};e.onEmptyFilter?t.onEmptyFilter=e.onEmptyFilter:t.onEmptyFilter="all";let r=Gle(e.logicalOperator||"all");return t[r]={conditions:(e.groups||[]).map(n=>{if(n.groups){let c=Kle(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=Gle(n.logicalOperator)),{[u]:{conditions:s.map(lft).filter(c=>c)}}})},t}a(Kle,"buildQuery");function Gle(e){return e==="all"?"$and":"$or"}a(Gle,"logicalOperatorFromUI");function N3(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 C3(e,N3),e}a(N3,"fixupFilterArrays");function fft(e,t){let r=Xk(e,t.query);t.sort&&(r=Qle(r,t.sort,t.sortOrder||"ascending",t.sortType));let n=r.length;t.limit&&(r=Yle(r,t.limit.toString()));let i={rows:r};return t.countRows&&(i.totalRows=n),i}a(fft,"search");function Xk(e,t){if(!e||!Array.isArray(e))return[];if(!t)return e;if(t=D3(t),t=N3(t),!O3(t)&&t.onEmptyFilter==="none")return[];let r=a((T,I)=>R=>{for(let[C,k]of Object.entries(t[T]||{})){let U=fd(T)?R:tq(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,A3.default)(I.low)&&(I.low=void 0),(0,Jk.default)(I.high)&&(0,A3.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,cv.default)(T);if(C.isValid()){let k=(0,cv.default)(I.low||"0000-00-00T00:00:00.000Z"),U=(0,cv.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,cv.default)(T);if(R.isValid()){let C=(0,cv.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 O3(t)?t.allOr?R.some(C=>C===!0):R.every(C=>C===!0):!0},"docMatch");return e.filter(x)}a(Xk,"runQuery");function Qle(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(Qle,"sort");function Yle(e,t){let r=typeof t=="number"?t:parseFloat(t);return isNaN(r)?e:e.slice(0,r)}a(Yle,"limit");var O3=a(e=>{if(!e)return!1;let t=a(r=>{for(let n of Hle)if(r[n])for(let i of r[n]?.conditions||[]){let o=t(i);if(o)return o}for(let n of sft){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:()=>F3,automations:()=>j3,screens:()=>$3,users:()=>q3});var F3={};oe(F3,{getDevAppID:()=>pft,getProdAppID:()=>c0});var L3=dd("app"),u0=dd("app_dev");function pft(e){if(!e)throw new Error("No app ID provided");if(e.startsWith(u0))return e;let t=e.split(L3);t.shift();let r=t.join(L3);return`${u0}${r}`}a(pft,"getDevAppID");function c0(e){if(!e)throw new Error("No app ID provided");if(!e.startsWith(u0))return e;let t=e.split(u0);t.shift();let r=t.join(u0);return`${L3}${r}`}a(c0,"getProdAppID");var j3={};oe(j3,{checkForCollectStep:()=>U3,isAppAction:()=>mft,isRowAction:()=>dft,isWebhookAction:()=>hft});function dft(e){return e.definition.trigger?.stepId==="ROW_ACTION"}a(dft,"isRowAction");function hft(e){return e.definition.trigger?.stepId==="WEBHOOK"}a(hft,"isWebhookAction");function mft(e){return e.definition.trigger?.stepId==="APP"}a(mft,"isAppAction");function Jle(e){if(!e||!Array.isArray(e))return!1;for(let t of e){if(t.stepId==="COLLECT")return!0;if(pse(t)&&t.inputs.children){for(let r of Object.values(t.inputs.children))if(Jle(r))return!0}}return!1}a(Jle,"hasCollectBlockRecursive");function U3(e){return Jle(e.definition.steps)}a(U3,"checkForCollectStep");var q3={};oe(q3,{canCreateApps:()=>gft,containsUserID:()=>xft,getGlobalUserID:()=>Sft,getUserAppGroups:()=>Tft,hasAdminPermissions:()=>B3,hasAppBuilderPermissions:()=>eC,hasBuilderPermissions:()=>Eft,hasCreatorPermissions:()=>tC,isAdmin:()=>l0,isAdminOrBuilder:()=>bft,isAdminOrGlobalBuilder:()=>vft,isAdminOrWorkspaceBuilder:()=>yft,isBuilder:()=>M3,isCreator:()=>_ft,isGlobalBuilder:()=>Zk,userAppAccessList:()=>Aft});function M3(e,t){return e?e.builder?.global?!0:!!(t&&e.builder?.apps?.includes(c0(t))):!1}a(M3,"isBuilder");function Zk(e){return M3(e)&&!eC(e)||l0(e)}a(Zk,"isGlobalBuilder");function gft(e){return Zk(e)||tC(e)}a(gft,"canCreateApps");function l0(e){return e?B3(e):!1}a(l0,"isAdmin");function yft(e,t){return e?!!(l0(e)||t&&e.builder?.apps?.includes(c0(t))):!1}a(yft,"isAdminOrWorkspaceBuilder");function bft(e,t){return M3(e,t)||l0(e)}a(bft,"isAdminOrBuilder");function vft(e){return Zk(e)||l0(e)}a(vft,"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 wft(e){return e?!!Object.values(e.roles??{}).find(t=>t==="CREATOR"):!1}a(wft,"hasAppCreatorPermissions");function Eft(e){return e?e.builder?.global||eC(e)||tC(e):!1}a(Eft,"hasBuilderPermissions");function B3(e){return e?!!e.admin?.global:!1}a(B3,"hasAdminPermissions");function tC(e){return e?!!e.builder?.creator:!1}a(tC,"hasCreatorPermissions");function _ft(e){return e?Zk(e)||B3(e)||tC(e)||eC(e)||wft(e):!1}a(_ft,"isCreator");function Sft(e){if(typeof e!="string")return e;let t=`ro${Me}ta_users${Me}`;return e.startsWith(t)?e.split(t)[1]:e}a(Sft,"getGlobalUserID");function xft(e){return typeof e!="string"?!1:e.includes(`us${Me}`)}a(xft,"containsUserID");function Xle(e,t){return t?.filter(r=>r.users?.find(n=>n._id===e))||[]}a(Xle,"getUserGroups");function Tft(e,t,r){let n=c0(e);return Xle(t,r).filter(o=>Object.keys(o.roles||{}).find(s=>s===n))}a(Tft,"getUserAppGroups");function Aft(e,t){let n=Xle(e._id,t).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(e?.roles||{}),...n];return[...new Set(i)]}a(Aft,"userAppAccessList");var $3={};oe($3,{findInSettings:()=>Rft});function Rft(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(Rft,"findInSettings");var zLr={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},WLr={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},GLr={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 Zle(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 ya)t.find(s=>s===o)&&i.push(o);return i}a(Zle,"findDuplicateInternalColumns");var Gt={};oe(Gt,{steps:()=>E4,triggers:()=>_4});var E4={};oe(E4,{apiRequest:()=>J3,bash:()=>z3,branch:()=>W3,classifyText:()=>d4,collect:()=>G3,createRow:()=>H3,delay:()=>V3,deleteRow:()=>K3,discord:()=>Q3,executeQuery:()=>Y3,executeScript:()=>X3,executeScriptV2:()=>Z3,extract:()=>b4,extractState:()=>v4,filter:()=>e4,generate:()=>y4,loop:()=>t4,loopV2:()=>w4,make:()=>r4,n8n:()=>n4,openai:()=>i4,outgoingWebhook:()=>a4,promptLLM:()=>h4,queryRows:()=>o4,sendSmtpEmail:()=>s4,serverLog:()=>u4,slack:()=>c4,summarise:()=>g4,translate:()=>m4,triggerAutomationRun:()=>l4,updateRow:()=>f4,zapier:()=>p4});var z3={};oe(z3,{definition:()=>Oft});var Oft={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 W3={};oe(W3,{definition:()=>Ift});var Ift={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 G3={};oe(G3,{definition:()=>kft});var kft={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 H3={};oe(H3,{definition:()=>Cft});var Cft={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 V3={};oe(V3,{definition:()=>Dft});var Dft={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 K3={};oe(K3,{definition:()=>Pft});var Pft={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 Q3={};oe(Q3,{definition:()=>Nft});var Nft={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 Y3={};oe(Y3,{definition:()=>Lft});var Lft={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 J3={};oe(J3,{definition:()=>Fft});var Fft={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 X3={};oe(X3,{definition:()=>Uft});var Uft={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 Z3={};oe(Z3,{definition:()=>jft});var jft={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 e4={};oe(e4,{PrettyFilterConditions:()=>efe,definition:()=>Mft});var efe={EQUAL:"Equals",NOT_EQUAL:"Not equals",GREATER_THAN:"Greater than",LESS_THAN:"Less than"},Mft={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(efe)},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 t4={};oe(t4,{definition:()=>Bft});var Bft={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 r4={};oe(r4,{definition:()=>qft});var qft={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 n4={};oe(n4,{definition:()=>$ft});var $ft={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(yS)},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 i4={};oe(i4,{definition:()=>zft});var tfe=(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))(tfe||{}),zft={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(tfe)}},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 a4={};oe(a4,{definition:()=>Wft});var rfe=(o=>(o.POST="POST",o.GET="GET",o.PUT="PUT",o.DELETE="DELETE",o.PATCH="PATCH",o))(rfe||{}),Wft={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(rfe),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 o4={};oe(o4,{definition:()=>Hft});var Gft={ascending:"Ascending",descending:"Descending"},Hft={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(Cf),pretty:Object.values(Gft)},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 s4={};oe(s4,{definition:()=>Vft});var Vft={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 u4={};oe(u4,{definition:()=>Kft});var Kft={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 c4={};oe(c4,{definition:()=>Qft});var Qft={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 l4={};oe(l4,{definition:()=>Yft});var Yft={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 f4={};oe(f4,{definition:()=>Jft});var Jft={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 p4={};oe(p4,{definition:()=>Xft});var Xft={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 d4={};oe(d4,{definition:()=>Zft});var Zft={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 h4={};oe(h4,{definition:()=>ept});var ept={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 m4={};oe(m4,{definition:()=>tpt});var tpt={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 g4={};oe(g4,{definition:()=>rpt});var nfe=(n=>(n.SHORT="Short",n.MEDIUM="Medium",n.LONG="Long",n))(nfe||{}),rpt={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(nfe)}},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 y4={};oe(y4,{definition:()=>npt});var npt={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(fse)},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 b4={};oe(b4,{definition:()=>ipt});var ipt={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 v4={};oe(v4,{definition:()=>apt});var apt={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 w4={};oe(w4,{definition:()=>opt});var opt={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 _4={};oe(_4,{definitions:()=>hpt});var ife={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 afe={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 ofe={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 sfe={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 ufe={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 cfe={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 lfe={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 hpt={ROW_SAVED:sfe,ROW_UPDATED:ufe,ROW_DELETED:ofe,WEBHOOK:cfe,APP:ife,CRON:afe,ROW_ACTION:lfe};var mpt=Object.values(Mt).sort((e,t)=>t.length-e.length);function ffe(e){return mpt.find(t=>e.startsWith(`${t}${Me}`))}a(ffe,"getDocumentType");var gpt=Object.values(hd).sort((e,t)=>t.length-e.length);function pfe(e){return gpt.find(t=>e.startsWith(`${t}${Me}`))}a(pfe,"getVirtualDocumentType");var ypt=new RegExp("^datasource_plus_(.+)__(.+)$"),rC=a(e=>t=>!!t&&t.startsWith(`${e}${Me}`),"idCheckFor"),bpt=a(e=>{let t=e.match(ypt);return!!e&&t!==null},"isExternalTableId"),hc=a(e=>vpt(e)||bpt(e),"isTableIdOrExternalTableId"),vpt=rC("ta"),Ji=rC("view"),lv=rC("datasource"),dfe=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 S4=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(S4||{}),Sd=(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))(Sd||{}),f0={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"}},mc=dd("app"),x4=dd("app_dev"),gc=x4,xd="internal",hfe="budibase",Na="_design/sqlite",mfe="ta_bb_jobs",gfe="ta_bb_inventory",yfe="ta_bb_expenses",bfe="ta_bb_employee",nC=`ro${Me}ta_users${Me}`,Qm=(r=>(r[r.SQLITE=Na]="SQLITE",r.MIGRATIONS="_design/migrations",r))(Qm||{});var T4=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(T4||{}),fv=(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))(fv||{}),vfe=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(vfe||{}),wfe=(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))(wfe||{}),wpt=new Date(-2147483647e3),A4=new Date(2147483647e3),pi="default";var qt={};oe(qt,{CacheKey:()=>aa,TTL:()=>hy,bustCache:()=>iE,destroy:()=>oA,docWritethrough:()=>a7,generic:()=>sA,get:()=>my,invite:()=>s7,keys:()=>lL,passwordReset:()=>u7,store:()=>gp,user:()=>kh,withCache:()=>Ah,withCacheWithDynamicTTL:()=>QPe,workspace:()=>Ax,writethrough:()=>hK});var a7={};oe(a7,{DocWritethrough:()=>i7,DocWritethroughProcessor:()=>aA,getProcessor:()=>oVt,init:()=>KPe});var co={};oe(co,{BudibaseQueue:()=>xc,InMemoryQueue:()=>T1,JobQueue:()=>tw,QueuedProcessor:()=>n7,UnretriableError:()=>uL,shutdown:()=>L0t});var R4=require("crypto"),aC=require("fs"),_pt=require("lodash"),p0=require("path");var Spt=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,p0.resolve)((0,p0.join)(__dirname,"..","..","..")),Efe=!1;!Efe&&iC()&&!O4()&&(require("dotenv").config({path:(0,p0.join)(Spt,".env")}),Efe=!0);function O4(){return Sfe()}a(O4,"isTest");function Sfe(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}a(Sfe,"isJest");function iC(){return process.env.NODE_ENV!=="production"}a(iC,"isDev");function xpt(e){if(e)return parseInt(e)}a(xpt,"parseIntSafe");var pv={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},_fe=!!parseInt(process.env.SELF_HOSTED||"");function Tpt(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}a(Tpt,"getAPIEncryptionKey");function Apt(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}a(Apt,"httpLogging");function Rpt(){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()&&!O4())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(Rpt,"getPackageJsonFields");function Opt(){return Td.SERVICE_TYPE==="worker"}a(Opt,"isWorker");function Ipt(){return Td.SERVICE_TYPE==="apps"}a(Ipt,"isApps");function kpt(){return Td.BUDIBASE_ENVIRONMENT==="QA"}a(kpt,"isQA");function Cpt(){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(Cpt,"getServiceName");var Td={isTest:O4,isJest:Sfe,isDev:iC,isWorker:Opt,isApps:Ipt,isQA:kpt,isProd:()=>!iC(),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JS_BCRYPT:process.env.JS_BCRYPT,JWT_SECRET:process.env.JWT_SECRET?(0,R4.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,R4.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:Tpt(),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:_fe,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||pv.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||pv.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||pv.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||pv.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||pv.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||pv.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:Cpt(),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:Apt(),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:_fe?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...Rpt(),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,Td[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:xpt(process.env.BSON_BUFFER_SIZE)};var xfe=["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(Td))t==="0"&&(Td[e]=0),t==="false"&&(Td[e]=0);var K=Td;var uC={};oe(uC,{Databases:()=>I4,SEPARATOR:()=>dv,SelectableDatabase:()=>oC,getRedisClusterOptions:()=>k4,getRedisConnectionDetails:()=>sC,getRedisOptions:()=>Ym,removeDbPrefix:()=>C4});var dv="-",I4=(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))(I4||{}),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=K.REDIS_PASSWORD,t=K.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 k4(){return{slotsRefreshTimeout:2e3,dnsLookup:(e,t)=>t(null,e),redisOptions:{...Ym(),tls:{}}}}a(k4,"getRedisClusterOptions");function Ym(){let{host:e,password:t,port:r}=sC();return{connectTimeout:3e4,port:r,host:e,password:t}}a(Ym,"getRedisOptions");function C4(e){let t=e.split(dv);return t.length>=2?(t.shift(),t.join(dv)):t[0]}a(C4,"removeDbPrefix");var Gbe=te(require("events"));var Cr={};oe(Cr,{Duration:()=>mi,DurationType:()=>Wbe,clearCookie:()=>Qd,compare:()=>N4,getAppIdFromCtx:()=>_g,getCookie:()=>ep,hasCircularStructure:()=>x0t,hash:()=>P4,isAudited:()=>sz,isClient:()=>S0t,isPublicApiRequest:()=>E0t,isServingApp:()=>b0t,isServingBuilder:()=>v0t,isServingBuilderPreview:()=>w0t,isValidInternalAPIKey:()=>Nx,newid:()=>Cn,openJwt:()=>S1,setCookie:()=>zbe,time:()=>A0t,timeout:()=>oz,urlHasProtocol:()=>T0t,validEmail:()=>uz});var Tfe=require("uuid");function Cn(){return(0,Tfe.v4)().replace(/-/g,"")}a(Cn,"newid");var D4=K.JS_BCRYPT?require("bcryptjs"):require("bcrypt"),Dpt=K.SALT_ROUNDS||10;async function P4(e){let t=await D4.genSalt(Dpt);return D4.hash(e,t)}a(P4,"hash");async function N4(e,t){return D4.compare(e,t)}a(N4,"compare");var _1=te(require("jsonwebtoken"));var z={};oe(z,{DEFAULT_TENANT_ID:()=>pi,baseGlobalDBName:()=>mx,doInAutomationContext:()=>TSt,doInContext:()=>N$,doInEnvironmentContext:()=>LSt,doInFeatureFlagOverrideContext:()=>q$,doInIPContext:()=>U$,doInIdentityContext:()=>m0,doInLicenseContext:()=>RSt,doInScimContext:()=>FSt,doInSelfHostTenantUsingCloud:()=>ASt,doInTenant:()=>Xo,doInWorkspaceContext:()=>kSt,doInWorkspaceMigrationContext:()=>DSt,ensureSnippetContext:()=>nbe,getAuditLogDBName:()=>tbe,getAuditLogsDB:()=>jSt,getAutomationId:()=>L$,getCurrentContext:()=>yg,getDevWorkspaceDB:()=>BSt,getDevWorkspaceId:()=>PSt,getEnvironmentVariables:()=>USt,getFeatureFlagOverrides:()=>B$,getFeatureFlags:()=>j$,getGlobalDB:()=>Ar,getGlobalDBName:()=>gg,getIP:()=>F$,getIdentity:()=>Bf,getLicense:()=>OSt,getPlatformURL:()=>P$,getProdWorkspaceDB:()=>MSt,getProdWorkspaceId:()=>NSt,getScimDBName:()=>ESt,getSelfHostCloudDB:()=>ISt,getTableForView:()=>qSt,getTenantIDFromWorkspaceID:()=>Yv,getTenantId:()=>Pt,getWorkspaceDB:()=>Jv,getWorkspaceId:()=>Zo,identity:()=>h0,isMultiTenant:()=>Vd,isScim:()=>_c,isSelfHostUsingCloud:()=>h1,isTenancyEnabled:()=>SSt,isTenantIdSet:()=>_St,setFeatureFlags:()=>M$,setTableForView:()=>$St});var h0={};oe(h0,{doInAccountContext:()=>Ppt,doInIdentityContext:()=>F4,doInUserContext:()=>U4,getAccountUserId:()=>Afe,getIdentity:()=>L4});function L4(){return Bf()}a(L4,"getIdentity");function F4(e,t){return m0(e,t)}a(F4,"doInIdentityContext");function U4(e,t,r){let n={...e,_id:e._id,type:"user",hostInfo:{ipAddress:t.request.ip,userAgent:t.userAgent.source}};return F4(n,r)}a(U4,"doInUserContext");function Ppt(e,t){let r=Afe(e),n=e.tenantId,i={_id:r,type:"user",tenantId:n,account:e};return F4(i,t)}a(Ppt,"doInAccountContext");function Afe(e){let t;return tk(e)?t=e.budibaseUserId:t=e.accountId,t}a(Afe,"getAccountUserId");var yc=a(e=>{let t=j4(e),r,n;if(t.auth?.username)r=t.auth.username;else if(K.COUCH_DB_USERNAME)r=K.COUCH_DB_USERNAME;else if(!K.isTest())throw new Error("CouchDB username not set");if(t.auth?.password)n=t.auth.password;else if(K.COUCH_DB_PASSWORD)n=K.COUCH_DB_PASSWORD;else if(!K.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=K.COUCH_DB_SQL_URL;if(K.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:j4(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),j4=a((e=K.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 Xye=te(require("@budibase/nano"));var Rfe=te(require("node-fetch"));function cC(e){return e.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}a(cC,"checkSlashesInUrl");async function Ofe(e,t="GET",r){let{url:n,cookie:i}=yc(),o=`${n}/${e}`;return await g0({url:o,cookie:i,method:t,body:r})}a(Ofe,"directCouchCall");async function g0({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,Rfe.default)(cC(encodeURI(e)),i)}a(g0,"directCouchUrlCall");async function M4(e,t="GET",r){let n=await Ofe(e,t,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}a(M4,"directCouchQuery");var mg=te(require("pouchdb"));var Vye,Kye=!1,_$=a((e={})=>{let{url:t,cookie:r}=yc(),n={prefix:t,fetch:(i,o)=>(o.headers.set("Authorization",r),mg.default.fetch(i,o))};if(e.inMemory){let i=qme();mg.default.plugin(i),n={adapter:"memory"}}if(e.onDisk&&(n={adapter:"leveldb"}),e.replication){let i=Hye();mg.default.plugin(i.plugin),mg.default.adapter("writableStream",i.adapters.writableStream)}if(e.find){let i=require("pouchdb-find");mg.default.plugin(i)}return mg.default.defaults(n)},"getPouch");function c1(e){Vye=_$(e),Kye=!0}a(c1,"init");var nSt=a(()=>{if(!Kye)throw new Error("init has not been called")},"checkInitialised");function bu(e,t){nSt();let r=new Vye(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(bu,"getPouchDB");async function px(e){if(!(!e||K.isTest()))try{return await e.close()}catch{}}a(px,"closePouchDB");var hi=te(require("dd-trace"));var Vv=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 k$={};oe(k$,{breakExternalTableId:()=>T$,breakRowIdField:()=>gSt,buildExternalTableId:()=>lSt,convertRowId:()=>mSt,encodeTableId:()=>fSt,encodeViewId:()=>pSt,extractDate:()=>R$,generateRowIdField:()=>dSt,getNativeSql:()=>Kv,isExternalTable:()=>x$,isExternalTableID:()=>l1,isInternalTableID:()=>cSt,isRowId:()=>hSt,isValidFilter:()=>p1,isValidISODateString:()=>f1,isValidISODateStringWithoutTimezone:()=>A$,isValidTime:()=>O$,sqlLog:()=>dx,validateManyToMany:()=>I$});var S$=`${Me}${Me}`,Qye=/^\[.*]$/g,iSt=encodeURIComponent(" "),aSt=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,oSt=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,sSt=/(\d{4}-\d{2}-\d{2})/,uSt=/^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;function l1(e){return e.startsWith("datasource"+Me)}a(l1,"isExternalTableID");function cSt(e){return!l1(e)}a(cSt,"isInternalTableID");function Kv(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(Kv,"getNativeSql");function x$(e){return e?.sourceId&&e.sourceId.includes("datasource"+Me)&&e?.sourceId!==bS||e?.sourceType==="external"?!0:!!(e?._id&&l1(e._id))}a(x$,"isExternalTable");function lSt(e,t){return`${e}${S$}${encodeURIComponent(t)}`}a(lSt,"buildExternalTableId");function fSt(e){return l1(e)?encodeURIComponent(e):e}a(fSt,"encodeTableId");function pSt(e){return encodeURIComponent(e)}a(pSt,"encodeViewId");function T$(e){let t=e.split(S$),r=t.shift(),n=t.join(S$);if(n.includes(iSt)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}a(T$,"breakExternalTableId");function dSt(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(dSt,"generateRowIdField");function hSt(e){return Array.isArray(e)||typeof e=="string"&&e.match(Qye)!=null}a(hSt,"isRowId");function mSt(e){return Array.isArray(e)?e[0]:typeof e=="string"&&e.match(Qye)!=null?e.substring(1,e.length-1):e}a(mSt,"convertRowId");function gSt(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(gSt,"breakRowIdField");function f1(e){let t=e.trim();if(!aSt.test(t))return!1;let r=new Date(t);return!isNaN(r.getTime())}a(f1,"isValidISODateString");function A$(e){let t=e.trim();if(!oSt.test(t))return!1;let r=new Date(t);return!isNaN(r.getTime())}a(A$,"isValidISODateStringWithoutTimezone");function R$(e){let t=e.match(sSt);if(t)return t[0]}a(R$,"extractDate");function p1(e){return e!=null&&e!==""}a(p1,"isValidFilter");function O$(e){return uSt.test(e)}a(O$,"isValidTime");function dx(e,t,r){if(!K.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${e.toUpperCase()}] query="${t}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}a(dx,"sqlLog");function ySt(e){return!!e.through&&!!e.fromPrimary&&!!e.from&&!!e.toPrimary&&!!e.to}a(ySt,"isValidManyToManyRelationship");function I$(e){if(ySt(e))return e}a(I$,"validateManyToMany");var Yye="Database does not exist.";function Jye(e){return(0,Xye.default)({url:e.url,requestDefaults:{headers:{Authorization:e.cookie}},parseUrl:!1})}a(Jye,"buildNano");var Gd=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 bSt(e,t,r){if(!e||!t)throw new Error("Unable to create database without database name or connection");let n=new Qv(e,r,t);return new Vv(n)}a(bSt,"DatabaseWithConnection");var Qv=class e{constructor(t,r,n){this.couchInfo=yc();this.name=t,this.pouchOpts=r||{},n&&(this.couchInfo=yc(n),this.instanceNano=Jye(this.couchInfo)),e.nano||e.init()}static{a(this,"DatabaseImpl")}static init(){let t=yc();e.nano=Jye(t)}exists(t){return t===void 0?this.dbExists():this.docExists(t)}async dbExists(){return(await g0({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 Gd(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===Yye)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(t);throw new Gd(`CouchDB error: ${i.message}`,i)}}async performCall(t){let r=this.getDb(),n=await t(r);try{return await n()}catch(i){throw new Gd(`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(ose(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 Gd(o,{name:this.name,status:400})}async post(t,r){return t._id||(t._id=Cn()),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===Yye)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 g0(i),s=await o.text();if(o.status>300){let u;try{u=JSON.parse(s)}catch{throw console.error(`SQS error: ${s}`),new Gd("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}/${Na}`;return dx("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(Na)){let t=await this.get(Na);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 Gd(t.message,t)}}async compact(){return this.performCall(t=>()=>t.compact())}async dump(t,r){return bu(this.name).dump(t,r)}async load(t){return bu(this.name).load(t)}async createIndex(t){return bu(this.name).createIndex(t)}async deleteIndex(t){return bu(this.name).deleteIndex(t)}async getIndexes(){return bu(this.name).getIndexes()}};function Io(e,t){return new Vv(new Qv(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 C$(e){let t="/_all_dbs";return e&&(t+=`?${e}`),await M4(t)}a(C$,"directCouchAllDbs");var D$="No app provided";function Hd(e){if(!e)throw D$;return e.startsWith(gc)}a(Hd,"isDevWorkspaceID");function vSt(e){if(!e)throw D$;return e.startsWith(mc)&&!Hd(e)}a(vSt,"isProdWorkspaceID");function hx(e){if(!e)throw D$;return Hd(e.appId)}a(hx,"isDevWorkspace");function d1(e){if(!e||e.startsWith(gc))return e;let t=e.split(mc);t.shift();let r=t.join(mc);return`${gc}${r}`}a(d1,"getDevWorkspaceID");function Us(e){if(!e||!e.startsWith(gc))return e;let t=e.split(gc);t.shift();let r=t.join(gc);return`${mc}${r}`}a(Us,"getProdWorkspaceID");var Zye=require("async_hooks");var ji=class e{static{a(this,"Context")}static{this.storage=new Zye.AsyncLocalStorage}static run(t,r){return e.storage.run(t,()=>r())}static get(){return e.storage.getStore()}};var ebe=null;function gg(e){return e||(e=Pt()),mx(e)}a(gg,"getGlobalDBName");function tbe(e){return e||(e=Pt()),e===pi?bn.AUDIT_LOGS.name:`${e}${Me}${bn.AUDIT_LOGS.name}`}a(tbe,"getAuditLogDBName");function ESt(e){return e||(e=Pt()),e===pi?bn.SCIM_LOGS.name:`${e}${Me}${bn.SCIM_LOGS.name}`}a(ESt,"getScimDBName");function mx(e){return!e||e===pi?bn.GLOBAL.name:`${e}${Me}${bn.GLOBAL.name}`}a(mx,"baseGlobalDBName");function P$(){return K.PLATFORM_URL}a(P$,"getPlatformURL");function Vd(){return!!K.MULTI_TENANCY}a(Vd,"isMultiTenant");function _St(){return!!ji.get()?.tenantId}a(_St,"isTenantIdSet");function SSt(){return K.MULTI_TENANCY}a(SSt,"isTenancyEnabled");function Yv(e){if(!e)return;if(!Vd())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(Yv,"getTenantIDFromWorkspaceID");function xSt(e){let t;try{t=ji.get()}catch{t={}}return t={...t,...e},t}a(xSt,"updateContext");async function Ec(e,t){CSt();let r=xSt(e);return ji.run(r,t)}a(Ec,"newContext");async function TSt(e){return await nbe(),await Ec({tenantId:Yv(e.workspaceId),appId:e.workspaceId,automationId:e.automationId},e.task)}a(TSt,"doInAutomationContext");async function N$(e,t){let r=Yv(e);return Ec({tenantId:r,appId:e},t)}a(N$,"doInContext");async function Xo(e,t){return K.MULTI_TENANCY||(e=e||pi),Ec(e?{tenantId:e}:{},t)}a(Xo,"doInTenant");async function ASt(e,t){return Ec({tenantId:e,isSelfHostUsingCloud:!0},t)}a(ASt,"doInSelfHostTenantUsingCloud");async function RSt(e,t){return Ec({license:e},t)}a(RSt,"doInLicenseContext");function OSt(){return ji.get()?.license}a(OSt,"getLicense");function h1(){return!!ji.get()?.isSelfHostUsingCloud}a(h1,"isSelfHostUsingCloud");function ISt(){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(ISt,"getSelfHostCloudDB");async function kSt(e,t){return rbe(e,t)}a(kSt,"doInWorkspaceContext");async function rbe(e,t,r){if(!e)throw new Error("workspaceId is required");let n=Yv(e),i={appId:e,...r};return n&&(i.tenantId=n),Ec(i,t)}a(rbe,"_doInWorkspaceContext");async function m0(e,t){if(!e)throw new Error("identity is required");let r={identity:e};return e.tenantId&&(r.tenantId=e.tenantId),Ec(r,t)}a(m0,"doInIdentityContext");function CSt(){if(ji.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}a(CSt,"guardMigration");async function DSt(e,t){return rbe(e,t,{isMigrating:!0})}a(DSt,"doInWorkspaceMigrationContext");function Bf(){try{return ji.get()?.identity}catch{}}a(Bf,"getIdentity");function Pt(){if(!Vd())return pi;let t=ji.get()?.tenantId;if(!t)throw new Error("Tenant id not found");return t}a(Pt,"getTenantId");function L$(){return ji.get()?.automationId}a(L$,"getAutomationId");function Zo(){let t=ji.get()?.appId;return!t&&K.isTest()&&ebe?ebe:t}a(Zo,"getWorkspaceId");function F$(){return ji.get()?.ip}a(F$,"getIP");var PSt=a(()=>{let e=Zo();if(!e)throw new Error("Could not get workspaceId");return d1(e)},"getDevWorkspaceId"),NSt=a(()=>{let e=Zo();if(!e)throw new Error("Could not get workspaceId");return Us(e)},"getProdWorkspaceId");function LSt(e,t){if(!e)throw new Error("Must supply environment variables.");return Ec({environmentVariables:e},t)}a(LSt,"doInEnvironmentContext");function FSt(e){return Ec({isScim:!0},e)}a(FSt,"doInScimContext");function U$(e,t){return Ec({ip:e},t)}a(U$,"doInIPContext");async function nbe(){let e=yg();if(!e||e.snippets)return;let t,r=Jv();r&&(t=(await r.tryGet("app_metadata"))?.snippets),e.snippets=t||[]}a(nbe,"ensureSnippetContext");function USt(){let e=ji.get();return e.environmentVariables?e.environmentVariables:null}a(USt,"getEnvironmentVariables");function Ar(){let e=ji.get();if(!e||K.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(mx(e?.tenantId))}a(Ar,"getGlobalDB");function jSt(){if(!Pt())throw new Error("No tenant ID found - cannot open audit log DB");return Io(tbe())}a(jSt,"getAuditLogsDB");function Jv(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(Jv,"getWorkspaceDB");function MSt(e){let t=Zo();if(!t)throw new Error("Unable to retrieve prod DB - no workspace ID.");return Io(Us(t),e)}a(MSt,"getProdWorkspaceDB");function BSt(e){let t=Zo();if(!t)throw new Error("Unable to retrieve dev DB - no workspace ID.");return Io(d1(t),e)}a(BSt,"getDevWorkspaceDB");function _c(){return!!ji.get()?.isScim}a(_c,"isScim");function yg(){try{return ji.get()}catch{return}}a(yg,"getCurrentContext");function j$(e){let t=yg();if(t)return t.featureFlagCache?.[e]}a(j$,"getFeatureFlags");function M$(e,t){let r=yg();r&&(r.featureFlagCache??={},r.featureFlagCache[e]=t)}a(M$,"setFeatureFlags");function B$(){return yg()?.featureFlagOverrides||{}}a(B$,"getFeatureFlagOverrides");async function q$(e,t){return await Ec({featureFlagOverrides:e},t)}a(q$,"doInFeatureFlagOverrideContext");function qSt(e){let t=yg();if(t)return t.viewToTableCache?.[e]}a(qSt,"getTableForView");function $St(e,t){let r=yg();r&&(r.viewToTableCache??={},r.viewToTableCache[e]=t)}a($St,"setTableForView");var ne={};oe(ne,{AutomationViewMode:()=>S4,BUDIBASE_DATASOURCE_TYPE:()=>hfe,DEFAULT_BB_DATASOURCE_ID:()=>bS,DEFAULT_EMPLOYEE_TABLE_ID:()=>bfe,DEFAULT_EXPENSES_TABLE_ID:()=>yfe,DEFAULT_INVENTORY_TABLE_ID:()=>gfe,DEFAULT_JOBS_TABLE_ID:()=>mfe,DatabaseImpl:()=>Qv,DatabaseWithConnection:()=>bSt,DeprecatedViews:()=>f0,DesignDocuments:()=>Qm,DocumentType:()=>Mt,InternalTable:()=>Df,QueryBuilder:()=>Zf,Replication:()=>Fbe,SEPARATOR:()=>Me,SQLITE_DESIGN_DOC_ID:()=>Na,SQS_DATASOURCE_INTERNAL:()=>xd,StaticDatabases:()=>bn,UNICODE_MAX:()=>Pa,USER_METADATA_PREFIX:()=>nC,ViewName:()=>Sd,WORKSPACE_DEV:()=>x4,WORKSPACE_DEV_PREFIX:()=>gc,WORKSPACE_PREFIX:()=>mc,baseGlobalDBName:()=>mx,checkErrorCode:()=>Bbe,closePouchDB:()=>px,createApiKeyView:()=>Cbe,createNewUserEmailView:()=>Ibe,createPlatformAccountEmailView:()=>Pbe,createPlatformUserView:()=>Nbe,createUserAppView:()=>kbe,createView:()=>ew,dbExists:()=>n0t,directCouchAllDbs:()=>C$,directCouchCall:()=>Ofe,directCouchQuery:()=>M4,directCouchUrlCall:()=>g0,doWithDB:()=>Fs,fullSearch:()=>u0t,generateAgentChatID:()=>ybe,generateAgentToolSourceID:()=>bbe,generateAppUserID:()=>v1,generateDevInfoID:()=>hbe,generateGlobalUserID:()=>Zv,generateOAuth2LogID:()=>gbe,generatePluginID:()=>mbe,generateRoleID:()=>Q$,generateRowID:()=>K$,generateTableID:()=>cbe,generateTemplateID:()=>dbe,generateUserMetadataID:()=>fbe,generateWorkspaceAppID:()=>vbe,generateWorkspaceFavouriteID:()=>wbe,generateWorkspaceID:()=>ube,getAllDbs:()=>Obe,getAllWorkspaces:()=>Ox,getCouchInfo:()=>yc,getDB:()=>Io,getDevWorkspaceID:()=>d1,getDevWorkspaceIDs:()=>t0t,getDocParams:()=>Jf,getGlobalDBName:()=>gg,getGlobalIDFromUserMetadataID:()=>pbe,getGlobalUserParams:()=>wg,getOAuth2ConfigParams:()=>Tbe,getPluginParams:()=>xbe,getPouch:()=>_$,getPouchDB:()=>bu,getProdWorkpaceIDs:()=>e0t,getProdWorkspaceID:()=>Us,getQueryIndex:()=>Ebe,getRoleParams:()=>E1,getRowParams:()=>Y$,getStartEndKeyURL:()=>Rx,getTemplateParams:()=>Sbe,getUrlInfo:()=>j4,getUserMetadataParams:()=>_be,getUsersByWorkspaceParams:()=>w1,getWorkspaceAppParams:()=>Abe,getWorkspaceFavouriteParams:()=>Rbe,getWorkspacesByIDs:()=>ZSt,init:()=>c1,isDevWorkspace:()=>hx,isDevWorkspaceID:()=>Hd,isDocumentConflictError:()=>l0t,isGlobalUserID:()=>lbe,isProdWorkspaceID:()=>vSt,isSameWorkspaceID:()=>r0t,paginatedSearch:()=>s0t,pagination:()=>J$,prefixRoleID:()=>Yf,queryGlobalView:()=>Xf,queryGlobalViewRaw:()=>ez,queryPlatformView:()=>kx,queryView:()=>Z$,queryViewRaw:()=>Ix,removeKeyNumbering:()=>Cx,searchIndexes:()=>nz});var Ax={};oe(Ax,{WorkspaceState:()=>V$,getWorkspaceMetadata:()=>b1,invalidateWorkspaceMetadata:()=>JSt});var Kd={};oe(Kd,{getCacheClient:()=>W$,getDocWritethroughClient:()=>VSt,getInviteClient:()=>vg,getLockClient:()=>H$,getPasswordResetClient:()=>Tx,getSessionClient:()=>Xv,getSocketClient:()=>HSt,getUserClient:()=>xx,getWorkspaceClient:()=>y1,getWritethroughClient:()=>G$,init:()=>Sc,shutdown:()=>obe});var g1=te(require("ioredis"));var m1=require("dd-trace"),abe=require("lodash");var ibe;if(K.MOCK_REDIS)try{ibe=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function zSt(e=0){return await m1.tracer.trace("Redis.init",async t=>{if(K.MOCK_REDIS)return t.addTags({mock:!0}),new ibe(Ym());let r;if(K.REDIS_CLUSTERED){t.addTags({clustered:!0});let{host:n,port:i}=sC();r=new g1.Cluster([{host:n,port:i}],k4())}else r=new g1.default(Ym());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(zSt,"init");function WSt(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:C4(s),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}a(WSt,"promisifyStream");function GSt(e){return e.isCluster}a(GSt,"isCluster");var $$=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 zSt(r);return r&&!K.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}${dv}${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}${dv}${t}`;let n;GSt(this.client)?n=this.client.nodes("master")[0].scanStream({match:t+"*",count:100}):n=this.client.scanStream({match:t+"*",count:100});let i=await WSt(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,abe.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.`;mQe.exports=gEr});var Bee=S((yQe,bQe)=>{"use strict";var ka=Va(),sb=lO(),ir=bQe.exports,yEr=gQe();ir.append=function(e,t){return typeof e=="string"&&typeof t=="string"?e+t:e};ir.camelcase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return t.toUpperCase()})};ir.capitalize=function(e){return typeof e!="string"?"":e.charAt(0).toUpperCase()+e.slice(1)};ir.capitalizeAll=function(e){if(typeof e!="string")return"";if(ka.isString(e))return e.replace(/\w\S*/g,function(t){return ir.capitalize(t)})};ir.center=function(e,t){if(typeof e!="string")return"";for(var r="",n=0;n<t;)r+=" ",n++;return r+e+r};ir.chop=function(e){return typeof e!="string"?"":sb.chop(e)};ir.dashcase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return"-"+t})};ir.dotcase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return"."+t})};ir.downcase=function(){return ir.lowercase.apply(this,arguments)};ir.ellipsis=function(e,t){if(ka.isString(e))return e.length<=t?e:ir.truncate(e,t)+"\u2026"};ir.hyphenate=function(e){return typeof e!="string"?"":e.split(" ").join("-")};ir.isString=function(e){return typeof e=="string"};ir.lowercase=function(e){return ka.isObject(e)&&e.fn?e.fn(this).toLowerCase():typeof e!="string"?"":e.toLowerCase()};ir.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};ir.pascalcase=function(e){return typeof e!="string"?"":(e=sb.changecase(e,function(t){return t.toUpperCase()}),e.charAt(0).toUpperCase()+e.slice(1))};ir.pathcase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return"/"+t})};ir.plusify=function(e,t){return typeof e!="string"?"":(ka.isString(t)||(t=" "),e.split(t).join("+"))};ir.prepend=function(e,t){return typeof e=="string"&&typeof t=="string"?t+e:e};ir.raw=function(e){var t=e.fn(),r=ka.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};ir.remove=function(e,t){return typeof e!="string"?"":ka.isString(t)?e.split(t).join(""):e};ir.removeFirst=function(e,t){return typeof e!="string"?"":ka.isString(t)?e.replace(t,""):e};ir.replace=function(e,t,r){return typeof e!="string"?"":ka.isString(t)?(ka.isString(r)||(r=""),e.split(t).join(r)):e};ir.replaceFirst=function(e,t,r){return typeof e!="string"?"":ka.isString(t)?(ka.isString(r)||(r=""),e.replace(t,r)):e};ir.reverse=v_().reverse;ir.sentence=function(e){return typeof e!="string"?"":e.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})};ir.snakecase=function(e){return typeof e!="string"?"":sb.changecase(e,function(t){return"_"+t})};ir.split=function(e,t){return typeof e!="string"?"":(ka.isString(t)||(t=","),e.split(t))};ir.startsWith=function(e,t,r){var n=[].slice.call(arguments);return r=n.pop(),ka.isString(t)&&t.indexOf(e)===0?r.fn(this):typeof r.inverse=="function"?r.inverse(this):""};ir.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(yQe.capitalize(s))}return i.join(" ")};ir.trim=function(e){return typeof e=="string"?e.trim():""};ir.trimLeft=function(e){if(ka.isString(e))return e.replace(/^\s+/,"")};ir.trimRight=function(e){if(ka.isString(e))return e.replace(/\s+$/,"")};ir.truncate=function(e,t,r){if(ka.isString(e))return typeof r!="string"&&(r=""),e.length>t?e.slice(0,t-r.length)+r:e};ir.truncateWords=function(e,t,r){if(ka.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}};ir.upcase=function(){return ir.uppercase.apply(this,arguments)};ir.uppercase=function(e){return ka.isObject(e)&&e.fn?e.fn(this).toUpperCase():typeof e!="string"?"":e.toUpperCase()};ir.lorem=function(e){return(isNaN(e)||e<1||!e)&&(e=11),yEr.substring(0,e)}});var $ee=S((Z_n,vQe)=>{"use strict";var qee=require("url"),yO=Va(),bEr=require("querystring"),ub=vQe.exports;ub.encodeURI=function(e){if(yO.isString(e))return encodeURIComponent(e)};ub.escape=function(e){if(yO.isString(e))return bEr.escape(e)};ub.decodeURI=function(e){if(yO.isString(e))return decodeURIComponent(e)};ub.urlResolve=function(e,t){return qee.resolve(e,t)};ub.urlParse=function(e){return qee.parse(e)};ub.stripQuerystring=function(e){if(yO.isString(e))return e.split("?")[0]};ub.stripProtocol=function(e){if(yO.isString(e)){var t=qee.parse(e);return t.protocol="",t.format()}}});var zee=S((eSn,wQe)=>{"use strict";var vEr=require("uuid"),wEr=wQe.exports;wEr.uuid=function(){return vEr.v4()}});var _Qe=S((tSn,EQe)=>{"use strict";EQe.exports={array:v_(),code:Z9e(),collection:h7e(),comparison:yee(),html:P7e(),i18n:L7e(),inflection:j7e(),match:YKe(),math:Uee(),misc:ZKe(),number:jee(),object:xj(),path:pQe(),regex:Mee(),string:Bee(),url:$ee(),uuid:zee()}});var SQe=S((rSn,S_)=>{"use strict";var bO=_Qe();S_.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||oO();if(S_.exports.handlebars=n,t)t.forEach(function(i){n.registerHelper(bO[i])});else for(let i in bO){let o=bO[i];n.registerHelper(o)}return n.helpers},"helpers");for(let e in bO){let t=bO[e];S_.exports[e]=function(r){r=r||{};var n=r.handlebars||r.hbs||oO();return S_.exports.handlebars=n,n.registerHelper(t),t}}S_.exports.utils=lO()});var tet=S(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});An.InvalidRemoveOpPath=An.NoTarget=An.InvalidScimPatchRequest=An.NoPathInScimPatchOp=An.FilterArrayTargetNotFound=An.FilterOnEmptyArray=An.InvalidScimPatchOp=An.RemoveValueNotArray=An.RemoveValueNestedArrayNotSupported=An.InvalidScimRemoveValue=An.InvalidScimPatch=An.ScimError=void 0;var dI=class extends Error{static{a(this,"ScimError")}constructor(t){super(),this.scimCode=t}};An.ScimError=dI;var gm=class extends dI{static{a(this,"InvalidScimPatch")}constructor(t,r="invalidSyntax"){super(r),this.message=`Invalid SCIM Patch: ${t}`}};An.InvalidScimPatch=gm;var hI=class extends dI{static{a(this,"InvalidScimRemoveValue")}constructor(t,r="invalidSyntax"){super(r),this.message=`Invalid SCIM Remove Operation: ${t}`}};An.InvalidScimRemoveValue=hI;var hne=class extends hI{static{a(this,"RemoveValueNestedArrayNotSupported")}constructor(){super("Invalid patch value, remove does not support arrays inside arrays.")}};An.RemoveValueNestedArrayNotSupported=hne;var mne=class extends hI{static{a(this,"RemoveValueNotArray")}constructor(){super("Remove with patch value is supported only for array properties.")}};An.RemoveValueNotArray=mne;var mI=class extends gm{static{a(this,"InvalidScimPatchOp")}constructor(t){super(`${t}`,"invalidSyntax")}};An.InvalidScimPatchOp=mI;var gne=class extends mI{static{a(this,"FilterOnEmptyArray")}constructor(t,r,n){super(`${t}`),this.attrName=r,this.valuePath=n}};An.FilterOnEmptyArray=gne;var yne=class extends mI{static{a(this,"FilterArrayTargetNotFound")}constructor(t,r,n,i){super(`${t}`),this.attrName=r,this.valuePath=n,this.schema=i}};An.FilterArrayTargetNotFound=yne;var bne=class extends gm{static{a(this,"NoPathInScimPatchOp")}constructor(){super('Missing path in "remove" patch operation',"noTarget")}};An.NoPathInScimPatchOp=bne;var vne=class extends gm{static{a(this,"InvalidScimPatchRequest")}constructor(t){super(`The SCIM patch request is invalid: ${t}`)}};An.InvalidScimPatchRequest=vne;var wne=class extends gm{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")}};An.NoTarget=wne;var Ene=class extends gm{static{a(this,"InvalidRemoveOpPath")}constructor(){super("Path specified in 'remove' operation doesn't exist")}};An.InvalidRemoveOpPath=Ene});var oet=S(vf=>{"use strict";Object.defineProperty(vf,"__esModule",{value:!0});vf.parseExpression=vf.parseFilter=vf.Tokens=vf.tokenizer=void 0;var iet={type:"EOT",literal:""};function Jxr(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(iet),t}a(Jxr,"tokenizer");vf.tokenizer=Jxr;var _ne=class{static{a(this,"Tokens")}getList(){return this.list.map((t,r)=>r==this.i?`[${t.literal}]`:t.literal)}peek(){return this.current||iet}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}};vf.Tokens=_ne;var Xxr=new Set(["eq","ne","co","sw","ew","gt","lt","ge","le"]),Zxr=new Set(["pr"]);function Sne(e){return jM(MM(e),e,Rb.LOWEST)}a(Sne,"parseFilter");vf.parseFilter=Sne;function MM(e){let t=e.shift();if(t.literal=="("){let r=Sne(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:MM(e)};return jM(r,e,Rb.NOT)}else{if(t.type=="Word")return aet(t,e);throw new Error(`Unexpected token ${t.literal} (${t.type})`)}}a(MM,"parseExpression");vf.parseExpression=MM;var Rb;(function(e){e[e.LOWEST=1]="LOWEST",e[e.OR=2]="OR",e[e.AND=3]="AND",e[e.NOT=4]="NOT"})(Rb||(Rb={}));var net={or:Rb.OR,and:Rb.AND,not:Rb.NOT};function jM(e,t,r){let n=t.peek().literal.toLowerCase(),i=net[n];if(!i||r>=i)return e;let o=[e];for(;t.peek().literal.toLowerCase()===n;){let s=MM(t.forward()),u=t.peek().literal.toLowerCase();net[u]>i&&(s=jM(s,t,i)),o.push(s)}return jM({op:n,filters:o},t,r)}a(jM,"parseInxif");function aet(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(Xxr.has(i)){let o=eTr(t);return{op:i,attrPath:r,compValue:o}}else{if(Zxr.has(i))return{op:i,attrPath:r};if(i==="["){let o=Sne(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,aet(c,t)]}}else throw new Error(`Unexpected token ${r} ${n.literal} as valFilter operator`)}}a(aet,"readValFilter");function eTr(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(eTr,"parseCompValue")});var set=S(qM=>{"use strict";Object.defineProperty(qM,"__esModule",{value:!0});qM.Tester=void 0;var BM=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)}};qM.Tester=BM;BM.UNDEF=Symbol("undefined")});var uet=S(wf=>{"use strict";Object.defineProperty(wf,"__esModule",{value:!0});wf.log=wf.valfilter=void 0;var tTr=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,wf.valfilter)(r,t))});case"not":return Object.assign(Object.assign({},e),{filter:(0,wf.valfilter)(e,t)});case"[]":return(0,wf.valfilter)(e.valFilter,e.attrPath)}return e},"valfilter");wf.valfilter=tTr;var rTr=a(e=>{switch(e.op){case"and":case"or":let t=e.filters.map(wf.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");wf.log=rTr});var cet=S($M=>{"use strict";Object.defineProperty($M,"__esModule",{value:!0});$M.stringify=void 0;function gI(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=>gI(i)).join(` ${e.op} `);r=t?`(${n})`:n;break;case"and":r=e.filters.map(i=>gI(i,!0)).join(` ${e.op} `);break;case"not":r=`${e.op} (${gI(e.filter)})`;break;case"[]":r=`${e.attrPath}[${gI(e.valFilter)}]`;break}return r}a(gI,"stringify");$M.stringify=gI});var zM=S(nu=>{"use strict";Object.defineProperty(nu,"__esModule",{value:!0});nu.flatten=nu.parse=nu.filter=nu.Tester=nu.stringify=void 0;var xne=oet(),nTr=set(),fet=uet(),iTr=cet();Object.defineProperty(nu,"stringify",{enumerable:!0,get:function(){return iTr.stringify}});nu.Tester=nTr.Tester;function aTr(e){let t=new nu.Tester;return r=>t.test(r,e)}a(aTr,"filter");nu.filter=aTr;function oTr(e){let t=new xne.Tokens(xne.tokenizer(e)),r=xne.parseFilter(t);if(t.peek().type!=="EOT")throw new Error(`unexpected EOT ${t.getList()}`);return r}a(oTr,"parse");nu.parse=oTr;function sTr(e){return fet.log(fet.valfilter(e))}a(sTr,"flatten");nu.flatten=sTr});var Nne=S(Gn=>{"use strict";Object.defineProperty(Gn,"__esModule",{value:!0});Gn.PATCH_OPERATION_SCHEMA=Gn.InvalidScimRemoveValue=Gn.RemoveValueNotArray=Gn.RemoveValueNestedArrayNotSupported=Gn.NoTarget=Gn.InvalidScimPatchRequest=Gn.NoPathInScimPatchOp=Gn.InvalidScimPatchOp=Gn.InvalidScimPatch=Gn.ScimError=void 0;Gn.patchBodyValidation=pTr;Gn.scimPatch=dTr;var Hr=tet();Object.defineProperty(Gn,"ScimError",{enumerable:!0,get:function(){return Hr.ScimError}});Object.defineProperty(Gn,"InvalidScimPatch",{enumerable:!0,get:function(){return Hr.InvalidScimPatch}});Object.defineProperty(Gn,"InvalidScimPatchOp",{enumerable:!0,get:function(){return Hr.InvalidScimPatchOp}});Object.defineProperty(Gn,"NoPathInScimPatchOp",{enumerable:!0,get:function(){return Hr.NoPathInScimPatchOp}});Object.defineProperty(Gn,"InvalidScimPatchRequest",{enumerable:!0,get:function(){return Hr.InvalidScimPatchRequest}});Object.defineProperty(Gn,"NoTarget",{enumerable:!0,get:function(){return Hr.NoTarget}});Object.defineProperty(Gn,"RemoveValueNestedArrayNotSupported",{enumerable:!0,get:function(){return Hr.RemoveValueNestedArrayNotSupported}});Object.defineProperty(Gn,"RemoveValueNotArray",{enumerable:!0,get:function(){return Hr.RemoveValueNotArray}});Object.defineProperty(Gn,"InvalidScimRemoveValue",{enumerable:!0,get:function(){return Hr.InvalidScimRemoveValue}});var Tne=zM(),Ane=CR(),Ine=/(\[|\])/,uTr=/^(.+)\[(.+)\]$/,pet=/(?!\B"[^[]*)\.(?![^\]]*"\B)/g,cTr=["remove","add","replace"],lTr="urn:ietf:params:scim:schemas:core:2.0:User",fTr="urn:ietf:params:scim:schemas:core:2.0:Group";Gn.PATCH_OPERATION_SCHEMA="urn:ietf:params:scim:api:messages:2.0:PatchOp";function pTr(e){if(!e.schemas||!e.schemas.includes(Gn.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(kne)}a(pTr,"patchBodyValidation");function dTr(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 hTr(n,i);case"add":case"Add":case"replace":case"Replace":return het(n,i,!!r.treatMissingAsAdd);default:throw new Hr.InvalidScimPatchRequest(`Operator is invalid for SCIM patch request. ${i}`)}},e)}a(dTr,"scimPatch");function kne(e){if(typeof e.op!="string"||!bTr(e.op))throw new Hr.InvalidScimPatchRequest(`Invalid op "${e.op}" in the request.`);if(e.op==="remove"&&!e.path)throw new Hr.NoPathInScimPatchOp;if(bI(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(kne,"validatePatchOperation");function Cne(e){let t=e.lastIndexOf(":");if(t<0)return e.split(pet);let r=e.substring(0,t),n=e.substring(t+1).split(pet);switch(r){case fTr:case lTr:break;default:n.unshift(r);break}return n}a(Cne,"resolvePaths");function hTr(e,t){let r;kne(t);let n=Cne(t.path);try{r=met(e,n,{isRemoveOp:!0})}catch(o){if(o instanceof Hr.InvalidRemoveOpPath)return e;throw o}let i=n[n.length-1];if(!Ine.test(i)){for(let o of r)t.value?o[i]=yTr(o[i],t.value):delete o[i];return e}for(let o of r){let{attrName:s,valuePath:u,array:c}=Dne(i,o);o[s]=Pne(c,u,{excludeIfMatchFilter:!0}),o[s].length===0&&delete o[s]}return e}a(hTr,"applyRemoveOperation");function het(e,t,r){var n;let i;if(kne(t),!t.path)return yI(e,t);let o=Cne(t.path),s=o[o.length-1];try{i=met(e,o)}catch(u){if(u instanceof Hr.FilterOnEmptyArray||u instanceof Hr.FilterArrayTargetNotFound){let c=u.schema,l=(0,Tne.parse)(u.valuePath);if(bI(t.op)&&"compValue"in l&&l.compValue!==void 0&&l.op==="eq"){let f={};return f[l.attrPath]=l.compValue,f[s]=yI(void 0,t,!0),c[u.attrName]=[...(n=c[u.attrName])!==null&&n!==void 0?n:[],f],e}else if(r&&Rne(t.op)&&"compValue"in l&&l.compValue!==void 0&&l.op==="eq")return het(e,Object.assign(Object.assign({},t),{op:"add"}),!1);throw new Hr.NoTarget(t.path)}throw u}if(!Ine.test(s)){for(let u of i)u[s]=yI(u[s],t);return e}for(let u of i){let{valuePath:c,array:l}=Dne(s,u),f=Pne(l,c);if(Rne(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]=yI(l[p],t))}return e}a(het,"applyAddOrReplaceOperation");function Dne(e,t){let r=e.match(uTr);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 One(n,i,o)}a(Dne,"extractArray");function met(e,t,r={}){let n=[e];for(let i=0;i<t.length-1;i++){let o=t[i];Ine.test(o)?n=n.flatMap(s=>{try{let{attrName:u,valuePath:c,array:l}=Dne(o,s),f=Pne(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(met,"navigate");function yI(e,t,r){if(Array.isArray(e)){if(Array.isArray(t.value)){if(bI(t.op)){let i=t.value.filter(o=>!det(e,o));return e.concat(i)}return t.value}if(Rne(t.op))return e.map(i=>yI(i,t,r));let n=e;return det(n,t.value)||n.push(t.value),n}return e!==null&&typeof e=="object"?mTr(e,t,r):t.value}a(yI,"addOrReplaceAttribute");function mTr(e,t,r){if(typeof t.value!="object"){if(bI(t.op)&&!r)throw new Hr.InvalidScimPatchOp("Invalid patch query.");return t.value}for(let[n,i]of Object.entries(t.value))gTr(e,Cne(n),i,t.op);return e}a(mTr,"addOrReplaceObjectAttribute");function gTr(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(bI(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(gTr,"assign");function Pne(e,t,r={}){try{let n=(0,Tne.filter)((0,Tne.parse)(t));return e.filter(i=>r.excludeIfMatchFilter?!n(i):n(i))}catch(n){throw new Hr.InvalidScimPatchOp(`${n}`)}}a(Pne,"filterWithQuery");function yTr(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=>!Ane(r,n))}),e):e.filter(r=>!Ane(t,r))}a(yTr,"removeWithPatchValue");function det(e,t){return e.some(r=>Ane(t,r))}a(det,"deepIncludes");function bTr(e){return cTr.includes(e.toLowerCase())}a(bTr,"isValidOperation");function bI(e){return e!==void 0&&e.toLowerCase()==="add"}a(bI,"isAddOperation");function Rne(e){return e!==void 0&&e.toLowerCase()==="replace"}a(Rne,"isReplaceOperation");var One=class{static{a(this,"ScimSearchQuery")}constructor(t,r,n){this.attrName=t,this.valuePath=r,this.array=n}}});var O1r={};oe(O1r,{execute:()=>R1r});module.exports=YB(O1r);var Ma={};oe(Ma,{analyticsEnabled:()=>yL,generateConfigID:()=>QL,getAIConfig:()=>bXt,getConfig:()=>Pu,getDefaultGoogleConfig:()=>mK,getGoogleConfig:()=>YL,getGoogleDatasourceConfig:()=>yK,getOIDCConfig:()=>mXt,getOIDCConfigById:()=>bK,getOIDCLogosDoc:()=>dXt,getPlatformUrl:()=>MA,getRecaptchaConfig:()=>vXt,getSCIMConfig:()=>yXt,getSMTPConfig:()=>gXt,getSMTPConfigDoc:()=>IUe,getSettingsConfig:()=>gK,getSettingsConfigDoc:()=>tE,save:()=>fXt});var Cf=(r=>(r.ASCENDING="ascending",r.DESCENDING="descending",r))(Cf||{});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||{}),Yoe=["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"],Joe=["automation:deleted","workspace_app:deleted","datasource:deleted","table:deleted","query:deleted","view:deleted"],Xoe=[...Yoe,...Joe],$b={"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 Zoe=a((e,t,r)=>e==="usage"&&t==="static","isStaticQuota"),ese=a((e,t,r)=>e==="usage"&&t==="monthly","isMonthlyQuota"),tse=a((e,t)=>e==="constant","isConstantQuota");var Am="--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||{}),ma=(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))(ma||{});var ga=(n=>(n.CONNECTION_CHECKING="connection",n.FETCH_TABLE_NAMES="fetch_table_names",n.EXPORT_SCHEMA="export_schema",n))(ga||{});var rse=te(require("lodash/isPlainObject"));var Rm=(s=>(s.EQUAL="equal",s.NOT_EQUAL="notEqual",s.EMPTY="empty",s.NOT_EMPTY="notEmpty",s.FUZZY="fuzzy",s.STRING="string",s))(Rm||{}),ll=(i=>(i.CONTAINS="contains",i.NOT_CONTAINS="notContains",i.CONTAINS_ANY="containsAny",i.ONE_OF="oneOf",i))(ll||{}),zb=(t=>(t.RANGE="range",t))(zb||{}),dS=(r=>(r.AND="$and",r.OR="$or",r))(dS||{});function fd(e){return Object.values(dS).includes(e)}a(fd,"isLogicalSearchOperator");function nse(e){return Object.values(Rm).includes(e)}a(nse,"isBasicSearchOperator");function ise(e){return Object.values(ll).includes(e)}a(ise,"isArraySearchOperator");function ek(e){return Object.values(zb).includes(e)}a(ek,"isRangeSearchOperator");function ase(e){return(0,rse.default)(e)&&"conditions"in e}a(ase,"isLogicalFilter");var ose=a(e=>typeof e=="object"&&e._id&&e._rev,"isDocument");var hS=(o=>(o.USER="user",o.HEADER="header",o.QUERY="query",o.SUBDOMAIN="subdomain",o.PATH="path",o))(hS||{});var sse={USE_ZOD_VALIDATOR:!1,AI_AGENTS:!1,USE_DYNAMIC_LOADING:!0,DIRECT_LOGIN_TO_ACCOUNT_PORTAL:!1,DEBUG_UI:!1};var pd=(i=>(i.READ="read",i.WRITE="write",i.EXECUTE="execute",i.ADMIN="admin",i))(pd||{});var mS=(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))(mS||{});var tk=a(e=>e.hosting==="cloud","isCloudAccount");var rk=a(e=>e.authType==="sso","isSSOAccount");var Me="_",Pa="\uFFF0",dd=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||{}),JB=["role","datasource","datasource_plus","ta","au","wh","screen","query","metadata","view","workspace_app","workspace_favourite","inst","layout"],Df=(t=>(t.USER_METADATA="ta_users",t))(Df||{}),hd=(r=>(r.VIEW="view",r.ROW_ACTION="row_action",r))(hd||{});function Wb(e){return!!e.providerType}a(Wb,"isSSOUser");var Gb=["rows","queries","automations"],use=["queries","automations"];var cse="SYSTEM",Om="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||{}),su=(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))(su||{});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||{}),lse=[...Object.values(hr),...Object.values(su)];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||{}),fse={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 pse(e){return e.stepId==="BRANCH"}a(pse,"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 gS=(r=>(r.BACKUP="backup",r.RESTORE="restore",r))(gS||{});var Im=(i=>(i.PUBLISH="publish",i.MANUAL="manual",i.SCHEDULED="scheduled",i.RESTORING="restoring",i))(Im||{});var XB=(s=>(s.NONE="none",s.FORM_DATA="form",s.XML="xml",s.ENCODED="encoded",s.JSON="json",s.TEXT="text",s))(XB||{}),yS=(s=>(s.GET="GET",s.POST="POST",s.PATCH="PATCH",s.PUT="PUT",s.HEAD="HEAD",s.DELETE="DELETE",s))(yS||{});var Ko="bb_internal";var md=(o=>(o.CREATED_BY="createdBy",o.CREATED_AT="createdAt",o.UPDATED_BY="updatedBy",o.UPDATED_AT="updatedAt",o.AUTO_ID="autoID",o))(md||{});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 dse="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"],Lat=["number","bigint"];function ZB(e){return Lat.includes(e)}a(ZB,"isNumeric");function hse(e){return e.type==="formula"&&e.formulaType==="static"&&e.responseType&&ZB(e.responseType)}a(hse,"isNumericStaticFormula");var Fat=["string","longform","options","number","boolean","datetime","bigint","ai"];function mse(e){return Fat.includes(e)}a(mse,"canGroupBy");var gr={};oe(gr,{AutomationViewMode:()=>S4,BUDIBASE_DATASOURCE_TYPE:()=>hfe,Config:()=>wfe,Cookie:()=>fv,DEFAULT_BB_DATASOURCE_ID:()=>bS,DEFAULT_EMPLOYEE_TABLE_ID:()=>bfe,DEFAULT_EXPENSES_TABLE_ID:()=>yfe,DEFAULT_INVENTORY_TABLE_ID:()=>gfe,DEFAULT_JOBS_TABLE_ID:()=>mfe,DEFAULT_TENANT_ID:()=>pi,DeprecatedViews:()=>f0,DesignDocuments:()=>Qm,DocumentType:()=>Mt,GlobalRole:()=>vfe,Header:()=>To,InternalTable:()=>Df,MAX_VALID_DATE:()=>A4,MIN_VALID_DATE:()=>wpt,SEPARATOR:()=>Me,SQLITE_DESIGN_DOC_ID:()=>Na,SQS_DATASOURCE_INTERNAL:()=>xd,StaticDatabases:()=>bn,UNICODE_MAX:()=>Pa,USER_METADATA_PREFIX:()=>nC,UserStatus:()=>T4,ViewName:()=>Sd,WORKSPACE_DEV:()=>x4,WORKSPACE_DEV_PREFIX:()=>gc,WORKSPACE_PREFIX:()=>mc});var yse={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 ya=["_id","_rev","type","createdAt","updatedAt","tableId"],sc=["_id","_rev","tableId"];function km(e){return ya.includes(e)}a(km,"isInternalColumnName");function bse(e){return sc.includes(e)}a(bse,"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"}},vse={integer:{max:2147483647,min:-2147483648},int:{max:2147483647,min:-2147483648},smallint:{max:32767,min:-32768},mediumint:{max:8388607,min:-8388608}};var bS="datasource_internal_bb_default";var Lr={};oe(Lr,{ColumnSplitter:()=>R3,NoEmptyFilterStrings:()=>Vle,buildQuery:()=>Kle,cleanupQuery:()=>D3,fixupFilterArrays:()=>N3,getKeyNumbering:()=>P3,getValidOperatorsForType:()=>uft,hasFilters:()=>O3,limit:()=>Yle,recurseLogicalOperators:()=>C3,removeKeyNumbering:()=>dk,runQuery:()=>Xk,search:()=>fft,sort:()=>Qle,splitFiltersArray:()=>hk});var cv=te(require("dayjs"));var zt={};oe(zt,{filterValueToLabel:()=>zat,hasSchema:()=>Wat,isSupportedUserSearch:()=>Ese,parallelForeach:()=>$at,processSearchFilters:()=>eq,toMap:()=>Hat,trimOtherProps:()=>Gat,unreachable:()=>qat});var wse=te(require("lodash/pick"));var Bat=["field","operator","value","type","externalType","valueType","noValue","formulaType"];function qat(e,t){let r=t?.message||`No such case in exhaustive switch: ${e}`;if(!!!t?.doNotThrow)throw new Error(r)}a(qat,"unreachable");async function $at(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($at,"parallelForeach");function zat(){return Object.keys(ws).reduce((e,t)=>{let n=ws[t];return e[n.value]=n.label,e},{})}a(zat,"filterValueToLabel");function Wat(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null&&!(e instanceof Date)&&Object.keys(e).length>0}a(Wat,"hasSchema");function Gat(e,t){return Object.keys(e).filter(n=>t.includes(n)).reduce((n,i)=>({...n,[i]:e[i]}),{})}a(Gat,"trimOtherProps");function Ese(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(fd(o)){for(let l of e[o].conditions)if(!Ese(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(Ese,"isSupportedUserSearch");function eq(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,wse.default)(i,Bat);return o.field=dk(o.field),o})}]}}a(eq,"processSearchFilters");function Hat(e,t){return t.reduce((r,n)=>(r[n[e]]=n,r),{})}a(Hat,"toMap");var Ye={};oe(Ye,{cancelableTimeout:()=>_se,cron:()=>ift,deepGet:()=>tq,duplicateName:()=>rft,getSequentialName:()=>nft,getUserColor:()=>Kat,getUserInitials:()=>Vat,getUserLabel:()=>Qat,isGoogleSheets:()=>Jat,isSQL:()=>Xat,lists:()=>T3,retry:()=>Zat,roles:()=>x3,schema:()=>o0,views:()=>S3,wait:()=>rq,withTimeout:()=>Yat});var tq=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"),Vat=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"),Kat=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"),Qat=a(e=>{if(!e)return"";let{firstName:t,lastName:r,email:n}=e;return t&&r?`${t} ${r}`:t||r||n},"getUserLabel");function _se(e){let t;return[new Promise((r,n)=>{t=setTimeout(()=>{n({status:301,errno:"ETIME"})},e)}),()=>{clearTimeout(t)}]}a(_se,"cancelableTimeout");async function Yat(e,t){let[r,n]=_se(e),i=await Promise.race([t(),r]);return n(),i}a(Yat,"withTimeout");function Jat(e){return e==="GOOGLE_SHEETS"}a(Jat,"isGoogleSheets");function Xat(e){return!e||!e.source?!1:["POSTGRES","SQL_SERVER","MYSQL","ORACLE"].indexOf(e.source)!==-1||e.isSQL===!0}a(Xat,"isSQL");async function rq(e){return new Promise(t=>setTimeout(t,e))}a(rq,"wait");async function Zat(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 rq(o);try{return await e()}catch(s){n=s}}throw n}a(Zat,"retry");var Ble=te(fl()),qle=te(jle());var Mle="(Input cron: ",qlt={"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 $lt(e){let t=[];for(let r of e){r.includes(Mle)&&(r=r.split(Mle)[0].trim());for(let[n,i]of Object.entries(qlt))r.includes(n)&&(r=r.replace(new RegExp(n,"g"),i));t.push(r)}return t}a($lt,"improveErrors");function $le(e,t=4){let r=qle.default.parseExpression(e),n=[];for(let i=0;i<t;i++)n.push(r.next().toString());return n}a($le,"getNextExecutionDates");function zle(e){let t=(0,Ble.default)(e,{preset:"npm-cron-schedule",override:{useSeconds:!1}});return t.isValid()?{valid:!0}:{valid:!1,err:$lt(t.getError())}}a(zle,"validate");var o0={};oe(o0,{decodeNonAscii:()=>E3,encodeNonAscii:()=>Glt,isDeprecatedSingleUserColumn:()=>zlt,isNumeric:()=>Hlt,isRequired:()=>Wlt});function zlt(e){return e.type==="bb_reference"&&e.subtype==="user"&&e.constraints?.type!=="array"}a(zlt,"isDeprecatedSingleUserColumn");function Wlt(e){return!!e&&(typeof e.presence!="boolean"&&e.presence?.allowEmpty===!1||e.presence===!0)}a(Wlt,"isRequired");function Glt(e){return e.split("").map(t=>t.charCodeAt(0)>127?"\\u"+t.charCodeAt(0).toString(16).padStart(4,"0"):t).join("")}a(Glt,"encodeNonAscii");function E3(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,(t,r)=>String.fromCharCode(parseInt(r,16)))}a(E3,"decodeNonAscii");function Hlt(e){return e.type==="number"||e.type==="bigint"}a(Hlt,"isNumeric");var S3={};oe(S3,{basicFields:()=>Jlt,calculationFields:()=>Ylt,hasCalculationFields:()=>Qlt,isBasicViewField:()=>Vlt,isCalculationField:()=>s0,isCalculationView:()=>Klt,isV2:()=>Xlt,isVisible:()=>Wle});var _3=te(require("lodash/pickBy"));function s0(e){return"calculationType"in e}a(s0,"isCalculationField");function Vlt(e){return!s0(e)}a(Vlt,"isBasicViewField");function Klt(e){return e.type==="calculation"}a(Klt,"isCalculationView");function Qlt(e){return Object.values(e.schema||{}).some(s0)}a(Qlt,"hasCalculationFields");function Ylt(e){return(0,_3.default)(e.schema||{},s0)}a(Ylt,"calculationFields");function Wle(e){return e.visible!==!1}a(Wle,"isVisible");function Jlt(e,t){let{visible:r=!0}=t||{};return(0,_3.default)(e.schema||{},n=>!s0(n)&&(!r||Wle(n)))}a(Jlt,"basicFields");function Xlt(e){return e.version===2}a(Xlt,"isV2");var x3={};oe(x3,{checkForRoleInheritanceLoops:()=>eft});function Zlt(e){return`role${Me}${e}`}a(Zlt,"prefixForCheck");function eft(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=Zlt(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(eft,"checkForRoleInheritanceLoops");var T3={};oe(T3,{punctuateList:()=>tft});function tft(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(tft,"punctuateList");var rft=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"),nft=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 ift={getNextExecutionDates:$le,validate:zle};var Jk=te(require("lodash/isPlainObject")),A3=te(require("lodash/isEmpty"));var oft=/{{([^{].*?)}}/g,Hle=Object.values(dS),sft=[...Object.values(Rm),...Object.values(ll),...Object.values(zb)],uft=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"||o0.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"),Vle=[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 C3(e,t){for(let r of Hle)e[r]&&(e[r].conditions=e[r].conditions.map(n=>t(n)));return e}a(C3,"recurseLogicalOperators");var D3=a(e=>{for(let t of Vle)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===""||cft(o))&&delete e[t][i]}return e=C3(e,D3),e},"cleanupQuery");function cft(e){return Array.isArray(e)&&e.length===0}a(cft,"isEmptyArray");var dk=a(e=>P3(e).key,"removeKeyNumbering"),P3=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"),R3=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}=P3(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=E3(n.slice(this.columnPrefix.length))),{tableName:i,numberPrefix:r,relationshipPrefix:o,column:n}}};function lft(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(oft)||[]).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=vse[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(nse(r)||ise(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(lft,"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 Kle(e){if(!e)return{};if(Array.isArray(e)&&(e=eq(e),!e))return{};let t={};e.onEmptyFilter?t.onEmptyFilter=e.onEmptyFilter:t.onEmptyFilter="all";let r=Gle(e.logicalOperator||"all");return t[r]={conditions:(e.groups||[]).map(n=>{if(n.groups){let c=Kle(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=Gle(n.logicalOperator)),{[u]:{conditions:s.map(lft).filter(c=>c)}}})},t}a(Kle,"buildQuery");function Gle(e){return e==="all"?"$and":"$or"}a(Gle,"logicalOperatorFromUI");function N3(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 C3(e,N3),e}a(N3,"fixupFilterArrays");function fft(e,t){let r=Xk(e,t.query);t.sort&&(r=Qle(r,t.sort,t.sortOrder||"ascending",t.sortType));let n=r.length;t.limit&&(r=Yle(r,t.limit.toString()));let i={rows:r};return t.countRows&&(i.totalRows=n),i}a(fft,"search");function Xk(e,t){if(!e||!Array.isArray(e))return[];if(!t)return e;if(t=D3(t),t=N3(t),!O3(t)&&t.onEmptyFilter==="none")return[];let r=a((T,I)=>R=>{for(let[C,k]of Object.entries(t[T]||{})){let U=fd(T)?R:tq(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,A3.default)(I.low)&&(I.low=void 0),(0,Jk.default)(I.high)&&(0,A3.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,cv.default)(T);if(C.isValid()){let k=(0,cv.default)(I.low||"0000-00-00T00:00:00.000Z"),U=(0,cv.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,cv.default)(T);if(R.isValid()){let C=(0,cv.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 O3(t)?t.allOr?R.some(C=>C===!0):R.every(C=>C===!0):!0},"docMatch");return e.filter(x)}a(Xk,"runQuery");function Qle(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(Qle,"sort");function Yle(e,t){let r=typeof t=="number"?t:parseFloat(t);return isNaN(r)?e:e.slice(0,r)}a(Yle,"limit");var O3=a(e=>{if(!e)return!1;let t=a(r=>{for(let n of Hle)if(r[n])for(let i of r[n]?.conditions||[]){let o=t(i);if(o)return o}for(let n of sft){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:()=>F3,automations:()=>j3,screens:()=>$3,users:()=>q3});var F3={};oe(F3,{getDevAppID:()=>pft,getProdAppID:()=>c0});var L3=dd("app"),u0=dd("app_dev");function pft(e){if(!e)throw new Error("No app ID provided");if(e.startsWith(u0))return e;let t=e.split(L3);t.shift();let r=t.join(L3);return`${u0}${r}`}a(pft,"getDevAppID");function c0(e){if(!e)throw new Error("No app ID provided");if(!e.startsWith(u0))return e;let t=e.split(u0);t.shift();let r=t.join(u0);return`${L3}${r}`}a(c0,"getProdAppID");var j3={};oe(j3,{checkForCollectStep:()=>U3,isAppAction:()=>mft,isRowAction:()=>dft,isWebhookAction:()=>hft});function dft(e){return e.definition.trigger?.stepId==="ROW_ACTION"}a(dft,"isRowAction");function hft(e){return e.definition.trigger?.stepId==="WEBHOOK"}a(hft,"isWebhookAction");function mft(e){return e.definition.trigger?.stepId==="APP"}a(mft,"isAppAction");function Jle(e){if(!e||!Array.isArray(e))return!1;for(let t of e){if(t.stepId==="COLLECT")return!0;if(pse(t)&&t.inputs.children){for(let r of Object.values(t.inputs.children))if(Jle(r))return!0}}return!1}a(Jle,"hasCollectBlockRecursive");function U3(e){return Jle(e.definition.steps)}a(U3,"checkForCollectStep");var q3={};oe(q3,{canCreateApps:()=>gft,containsUserID:()=>xft,getGlobalUserID:()=>Sft,getUserAppGroups:()=>Tft,hasAdminPermissions:()=>B3,hasAppBuilderPermissions:()=>eC,hasBuilderPermissions:()=>Eft,hasCreatorPermissions:()=>tC,isAdmin:()=>l0,isAdminOrBuilder:()=>bft,isAdminOrGlobalBuilder:()=>vft,isAdminOrWorkspaceBuilder:()=>yft,isBuilder:()=>M3,isCreator:()=>_ft,isGlobalBuilder:()=>Zk,userAppAccessList:()=>Aft});function M3(e,t){return e?e.builder?.global?!0:!!(t&&e.builder?.apps?.includes(c0(t))):!1}a(M3,"isBuilder");function Zk(e){return M3(e)&&!eC(e)||l0(e)}a(Zk,"isGlobalBuilder");function gft(e){return Zk(e)||tC(e)}a(gft,"canCreateApps");function l0(e){return e?B3(e):!1}a(l0,"isAdmin");function yft(e,t){return e?!!(l0(e)||t&&e.builder?.apps?.includes(c0(t))):!1}a(yft,"isAdminOrWorkspaceBuilder");function bft(e,t){return M3(e,t)||l0(e)}a(bft,"isAdminOrBuilder");function vft(e){return Zk(e)||l0(e)}a(vft,"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 wft(e){return e?!!Object.values(e.roles??{}).find(t=>t==="CREATOR"):!1}a(wft,"hasAppCreatorPermissions");function Eft(e){return e?e.builder?.global||eC(e)||tC(e):!1}a(Eft,"hasBuilderPermissions");function B3(e){return e?!!e.admin?.global:!1}a(B3,"hasAdminPermissions");function tC(e){return e?!!e.builder?.creator:!1}a(tC,"hasCreatorPermissions");function _ft(e){return e?Zk(e)||B3(e)||tC(e)||eC(e)||wft(e):!1}a(_ft,"isCreator");function Sft(e){if(typeof e!="string")return e;let t=`ro${Me}ta_users${Me}`;return e.startsWith(t)?e.split(t)[1]:e}a(Sft,"getGlobalUserID");function xft(e){return typeof e!="string"?!1:e.includes(`us${Me}`)}a(xft,"containsUserID");function Xle(e,t){return t?.filter(r=>r.users?.find(n=>n._id===e))||[]}a(Xle,"getUserGroups");function Tft(e,t,r){let n=c0(e);return Xle(t,r).filter(o=>Object.keys(o.roles||{}).find(s=>s===n))}a(Tft,"getUserAppGroups");function Aft(e,t){let n=Xle(e._id,t).flatMap(o=>Object.keys(o.roles||{})),i=[...Object.keys(e?.roles||{}),...n];return[...new Set(i)]}a(Aft,"userAppAccessList");var $3={};oe($3,{findInSettings:()=>Rft});function Rft(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(Rft,"findInSettings");var zLr={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},WLr={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},GLr={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 Zle(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 ya)t.find(s=>s===o)&&i.push(o);return i}a(Zle,"findDuplicateInternalColumns");var Gt={};oe(Gt,{steps:()=>E4,triggers:()=>_4});var E4={};oe(E4,{apiRequest:()=>J3,bash:()=>z3,branch:()=>W3,classifyText:()=>d4,collect:()=>G3,createRow:()=>H3,delay:()=>V3,deleteRow:()=>K3,discord:()=>Q3,executeQuery:()=>Y3,executeScript:()=>X3,executeScriptV2:()=>Z3,extract:()=>b4,extractState:()=>v4,filter:()=>e4,generate:()=>y4,loop:()=>t4,loopV2:()=>w4,make:()=>r4,n8n:()=>n4,openai:()=>i4,outgoingWebhook:()=>a4,promptLLM:()=>h4,queryRows:()=>o4,sendSmtpEmail:()=>s4,serverLog:()=>u4,slack:()=>c4,summarise:()=>g4,translate:()=>m4,triggerAutomationRun:()=>l4,updateRow:()=>f4,zapier:()=>p4});var z3={};oe(z3,{definition:()=>Oft});var Oft={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 W3={};oe(W3,{definition:()=>Ift});var Ift={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 G3={};oe(G3,{definition:()=>kft});var kft={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 H3={};oe(H3,{definition:()=>Cft});var Cft={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 V3={};oe(V3,{definition:()=>Dft});var Dft={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 K3={};oe(K3,{definition:()=>Pft});var Pft={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 Q3={};oe(Q3,{definition:()=>Nft});var Nft={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 Y3={};oe(Y3,{definition:()=>Lft});var Lft={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 J3={};oe(J3,{definition:()=>Fft});var Fft={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 X3={};oe(X3,{definition:()=>Uft});var Uft={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 Z3={};oe(Z3,{definition:()=>jft});var jft={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 e4={};oe(e4,{PrettyFilterConditions:()=>efe,definition:()=>Mft});var efe={EQUAL:"Equals",NOT_EQUAL:"Not equals",GREATER_THAN:"Greater than",LESS_THAN:"Less than"},Mft={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(efe)},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 t4={};oe(t4,{definition:()=>Bft});var Bft={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 r4={};oe(r4,{definition:()=>qft});var qft={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 n4={};oe(n4,{definition:()=>$ft});var $ft={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(yS)},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 i4={};oe(i4,{definition:()=>zft});var tfe=(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))(tfe||{}),zft={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(tfe)}},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 a4={};oe(a4,{definition:()=>Wft});var rfe=(o=>(o.POST="POST",o.GET="GET",o.PUT="PUT",o.DELETE="DELETE",o.PATCH="PATCH",o))(rfe||{}),Wft={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(rfe),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 o4={};oe(o4,{definition:()=>Hft});var Gft={ascending:"Ascending",descending:"Descending"},Hft={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(Cf),pretty:Object.values(Gft)},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 s4={};oe(s4,{definition:()=>Vft});var Vft={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 u4={};oe(u4,{definition:()=>Kft});var Kft={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 c4={};oe(c4,{definition:()=>Qft});var Qft={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 l4={};oe(l4,{definition:()=>Yft});var Yft={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 f4={};oe(f4,{definition:()=>Jft});var Jft={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 p4={};oe(p4,{definition:()=>Xft});var Xft={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 d4={};oe(d4,{definition:()=>Zft});var Zft={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 h4={};oe(h4,{definition:()=>ept});var ept={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 m4={};oe(m4,{definition:()=>tpt});var tpt={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 g4={};oe(g4,{definition:()=>rpt});var nfe=(n=>(n.SHORT="Short",n.MEDIUM="Medium",n.LONG="Long",n))(nfe||{}),rpt={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(nfe)}},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 y4={};oe(y4,{definition:()=>npt});var npt={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(fse)},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 b4={};oe(b4,{definition:()=>ipt});var ipt={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 v4={};oe(v4,{definition:()=>apt});var apt={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 w4={};oe(w4,{definition:()=>opt});var opt={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 _4={};oe(_4,{definitions:()=>hpt});var ife={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 afe={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 ofe={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 sfe={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 ufe={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 cfe={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 lfe={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 hpt={ROW_SAVED:sfe,ROW_UPDATED:ufe,ROW_DELETED:ofe,WEBHOOK:cfe,APP:ife,CRON:afe,ROW_ACTION:lfe};var mpt=Object.values(Mt).sort((e,t)=>t.length-e.length);function ffe(e){return mpt.find(t=>e.startsWith(`${t}${Me}`))}a(ffe,"getDocumentType");var gpt=Object.values(hd).sort((e,t)=>t.length-e.length);function pfe(e){return gpt.find(t=>e.startsWith(`${t}${Me}`))}a(pfe,"getVirtualDocumentType");var ypt=new RegExp("^datasource_plus_(.+)__(.+)$"),rC=a(e=>t=>!!t&&t.startsWith(`${e}${Me}`),"idCheckFor"),bpt=a(e=>{let t=e.match(ypt);return!!e&&t!==null},"isExternalTableId"),hc=a(e=>vpt(e)||bpt(e),"isTableIdOrExternalTableId"),vpt=rC("ta"),Ji=rC("view"),lv=rC("datasource"),dfe=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 S4=(n=>(n.ALL="all",n.AUTOMATION="automation",n.STATUS="status",n))(S4||{}),Sd=(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))(Sd||{}),f0={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"}},mc=dd("app"),x4=dd("app_dev"),gc=x4,xd="internal",hfe="budibase",Na="_design/sqlite",mfe="ta_bb_jobs",gfe="ta_bb_inventory",yfe="ta_bb_expenses",bfe="ta_bb_employee",nC=`ro${Me}ta_users${Me}`,Qm=(r=>(r[r.SQLITE=Na]="SQLITE",r.MIGRATIONS="_design/migrations",r))(Qm||{});var T4=(r=>(r.ACTIVE="active",r.INACTIVE="inactive",r))(T4||{}),fv=(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))(fv||{}),vfe=(i=>(i.OWNER="owner",i.ADMIN="admin",i.BUILDER="builder",i.WORKSPACE_MANAGER="workspace_manager",i))(vfe||{}),wfe=(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))(wfe||{}),wpt=new Date(-2147483647e3),A4=new Date(2147483647e3),pi="default";var qt={};oe(qt,{CacheKey:()=>aa,TTL:()=>hy,bustCache:()=>iE,destroy:()=>oA,docWritethrough:()=>a7,generic:()=>sA,get:()=>my,invite:()=>s7,keys:()=>lL,passwordReset:()=>u7,store:()=>gp,user:()=>kh,withCache:()=>Ah,withCacheWithDynamicTTL:()=>QPe,workspace:()=>Ax,writethrough:()=>hK});var a7={};oe(a7,{DocWritethrough:()=>i7,DocWritethroughProcessor:()=>aA,getProcessor:()=>oVt,init:()=>KPe});var co={};oe(co,{BudibaseQueue:()=>xc,InMemoryQueue:()=>T1,JobQueue:()=>tw,QueuedProcessor:()=>n7,UnretriableError:()=>uL,shutdown:()=>L0t});var R4=require("crypto"),aC=require("fs"),_pt=require("lodash"),p0=require("path");var Spt=process.env.TOP_LEVEL_PATH||process.env.SERVER_TOP_LEVEL_PATH||(0,p0.resolve)((0,p0.join)(__dirname,"..","..","..")),Efe=!1;!Efe&&iC()&&!O4()&&(require("dotenv").config({path:(0,p0.join)(Spt,".env")}),Efe=!0);function O4(){return Sfe()}a(O4,"isTest");function Sfe(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}a(Sfe,"isJest");function iC(){return process.env.NODE_ENV!=="production"}a(iC,"isDev");function xpt(e){if(e)return parseInt(e)}a(xpt,"parseIntSafe");var pv={BACKUPS:"backups",APPS:"prod-budi-app-assets",TEMPLATES:"templates",GLOBAL:"global",PLUGINS:"plugins",TEMP:"tmp-file-attachments"},_fe=!!parseInt(process.env.SELF_HOSTED||"");function Tpt(){return process.env.API_ENCRYPTION_KEY?process.env.API_ENCRYPTION_KEY:process.env.JWT_SECRET}a(Tpt,"getAPIEncryptionKey");function Apt(){return process.env.HTTP_LOGGING===void 0?!0:process.env.HTTP_LOGGING}a(Apt,"httpLogging");function Rpt(){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()&&!O4())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(Rpt,"getPackageJsonFields");function Opt(){return Td.SERVICE_TYPE==="worker"}a(Opt,"isWorker");function Ipt(){return Td.SERVICE_TYPE==="apps"}a(Ipt,"isApps");function kpt(){return Td.BUDIBASE_ENVIRONMENT==="QA"}a(kpt,"isQA");function Cpt(){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(Cpt,"getServiceName");var Td={isTest:O4,isJest:Sfe,isDev:iC,isWorker:Opt,isApps:Ipt,isQA:kpt,isProd:()=>!iC(),BUDIBASE_ENVIRONMENT:process.env.BUDIBASE_ENVIRONMENT,JS_BCRYPT:process.env.JS_BCRYPT,JWT_SECRET:process.env.JWT_SECRET?(0,R4.createSecretKey)(process.env.JWT_SECRET,"utf8"):void 0,JWT_SECRET_FALLBACK:process.env.JWT_SECRET_FALLBACK?(0,R4.createSecretKey)(process.env.JWT_SECRET_FALLBACK,"utf8"):void 0,ENCRYPTION_KEY:process.env.ENCRYPTION_KEY,API_ENCRYPTION_KEY:Tpt(),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:_fe,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||pv.BACKUPS,APPS_BUCKET_NAME:process.env.APPS_BUCKET_NAME||pv.APPS,TEMPLATES_BUCKET_NAME:process.env.TEMPLATES_BUCKET_NAME||pv.TEMPLATES,GLOBAL_BUCKET_NAME:process.env.GLOBAL_BUCKET_NAME||pv.GLOBAL,PLUGIN_BUCKET_NAME:process.env.PLUGIN_BUCKET_NAME||pv.PLUGINS,TEMP_BUCKET_NAME:process.env.TEMP_BUCKET_NAME||pv.TEMP,USE_COUCH:process.env.USE_COUCH||!0,MOCK_REDIS:process.env.MOCK_REDIS,DEFAULT_LICENSE:process.env.DEFAULT_LICENSE,SERVICE:Cpt(),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:Apt(),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:_fe?process.env.ENABLE_SSO_MAINTENANCE_MODE:!1,...Rpt(),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,Td[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:xpt(process.env.BSON_BUFFER_SIZE)};var xfe=["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(Td))t==="0"&&(Td[e]=0),t==="false"&&(Td[e]=0);var K=Td;var uC={};oe(uC,{Databases:()=>I4,SEPARATOR:()=>dv,SelectableDatabase:()=>oC,getRedisClusterOptions:()=>k4,getRedisConnectionDetails:()=>sC,getRedisOptions:()=>Ym,removeDbPrefix:()=>C4});var dv="-",I4=(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))(I4||{}),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=K.REDIS_PASSWORD,t=K.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 k4(){return{slotsRefreshTimeout:2e3,dnsLookup:(e,t)=>t(null,e),redisOptions:{...Ym(),tls:{}}}}a(k4,"getRedisClusterOptions");function Ym(){let{host:e,password:t,port:r}=sC();return{connectTimeout:3e4,port:r,host:e,password:t}}a(Ym,"getRedisOptions");function C4(e){let t=e.split(dv);return t.length>=2?(t.shift(),t.join(dv)):t[0]}a(C4,"removeDbPrefix");var Gbe=te(require("events"));var Cr={};oe(Cr,{Duration:()=>mi,DurationType:()=>Wbe,clearCookie:()=>Qd,compare:()=>N4,getAppIdFromCtx:()=>_g,getCookie:()=>ep,hasCircularStructure:()=>x0t,hash:()=>P4,isAudited:()=>sz,isClient:()=>S0t,isPublicApiRequest:()=>E0t,isServingApp:()=>b0t,isServingBuilder:()=>v0t,isServingBuilderPreview:()=>w0t,isValidInternalAPIKey:()=>Nx,newid:()=>Cn,openJwt:()=>S1,setCookie:()=>zbe,time:()=>A0t,timeout:()=>oz,urlHasProtocol:()=>T0t,validEmail:()=>uz});var Tfe=require("uuid");function Cn(){return(0,Tfe.v4)().replace(/-/g,"")}a(Cn,"newid");var D4=K.JS_BCRYPT?require("bcryptjs"):require("bcrypt"),Dpt=K.SALT_ROUNDS||10;async function P4(e){let t=await D4.genSalt(Dpt);return D4.hash(e,t)}a(P4,"hash");async function N4(e,t){return D4.compare(e,t)}a(N4,"compare");var _1=te(require("jsonwebtoken"));var z={};oe(z,{DEFAULT_TENANT_ID:()=>pi,baseGlobalDBName:()=>mx,doInAutomationContext:()=>TSt,doInContext:()=>N$,doInEnvironmentContext:()=>LSt,doInFeatureFlagOverrideContext:()=>q$,doInIPContext:()=>U$,doInIdentityContext:()=>m0,doInLicenseContext:()=>RSt,doInScimContext:()=>FSt,doInSelfHostTenantUsingCloud:()=>ASt,doInTenant:()=>Xo,doInWorkspaceContext:()=>kSt,doInWorkspaceMigrationContext:()=>DSt,ensureSnippetContext:()=>nbe,getAuditLogDBName:()=>tbe,getAuditLogsDB:()=>jSt,getAutomationId:()=>L$,getCurrentContext:()=>yg,getDevWorkspaceDB:()=>BSt,getDevWorkspaceId:()=>PSt,getEnvironmentVariables:()=>USt,getFeatureFlagOverrides:()=>B$,getFeatureFlags:()=>j$,getGlobalDB:()=>Ar,getGlobalDBName:()=>gg,getIP:()=>F$,getIdentity:()=>Bf,getLicense:()=>OSt,getPlatformURL:()=>P$,getProdWorkspaceDB:()=>MSt,getProdWorkspaceId:()=>NSt,getScimDBName:()=>ESt,getSelfHostCloudDB:()=>ISt,getTableForView:()=>qSt,getTenantIDFromWorkspaceID:()=>Yv,getTenantId:()=>Pt,getWorkspaceDB:()=>Jv,getWorkspaceId:()=>Zo,identity:()=>h0,isMultiTenant:()=>Vd,isScim:()=>_c,isSelfHostUsingCloud:()=>h1,isTenancyEnabled:()=>SSt,isTenantIdSet:()=>_St,setFeatureFlags:()=>M$,setTableForView:()=>$St});var h0={};oe(h0,{doInAccountContext:()=>Ppt,doInIdentityContext:()=>F4,doInUserContext:()=>U4,getAccountUserId:()=>Afe,getIdentity:()=>L4});function L4(){return Bf()}a(L4,"getIdentity");function F4(e,t){return m0(e,t)}a(F4,"doInIdentityContext");function U4(e,t,r){let n={...e,_id:e._id,type:"user",hostInfo:{ipAddress:t.request.ip,userAgent:t.userAgent.source}};return F4(n,r)}a(U4,"doInUserContext");function Ppt(e,t){let r=Afe(e),n=e.tenantId,i={_id:r,type:"user",tenantId:n,account:e};return F4(i,t)}a(Ppt,"doInAccountContext");function Afe(e){let t;return tk(e)?t=e.budibaseUserId:t=e.accountId,t}a(Afe,"getAccountUserId");var yc=a(e=>{let t=j4(e),r,n;if(t.auth?.username)r=t.auth.username;else if(K.COUCH_DB_USERNAME)r=K.COUCH_DB_USERNAME;else if(!K.isTest())throw new Error("CouchDB username not set");if(t.auth?.password)n=t.auth.password;else if(K.COUCH_DB_PASSWORD)n=K.COUCH_DB_PASSWORD;else if(!K.isTest())throw new Error("CouchDB password not set");let i=Buffer.from(`${r}:${n}`).toString("base64"),o=K.COUCH_DB_SQL_URL;if(K.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:j4(o).url,auth:{username:r,password:n},cookie:`Basic ${i}`}},"getCouchInfo"),j4=a((e=K.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 Xye=te(require("@budibase/nano"));var Rfe=te(require("node-fetch"));function cC(e){return e.replace(/(https?:\/\/)|(\/)+/g,"$1$2")}a(cC,"checkSlashesInUrl");async function Ofe(e,t="GET",r){let{url:n,cookie:i}=yc(),o=`${n}/${e}`;return await g0({url:o,cookie:i,method:t,body:r})}a(Ofe,"directCouchCall");async function g0({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,Rfe.default)(cC(encodeURI(e)),i)}a(g0,"directCouchUrlCall");async function M4(e,t="GET",r){let n=await Ofe(e,t,r);if(n.status<300)return await n.json();throw"Cannot connect to CouchDB instance"}a(M4,"directCouchQuery");var mg=te(require("pouchdb"));var Vye,Kye=!1,_$=a((e={})=>{let{url:t,cookie:r}=yc(),n={prefix:t,fetch:(i,o)=>(o.headers.set("Authorization",r),mg.default.fetch(i,o))};if(e.inMemory){let i=qme();mg.default.plugin(i),n={adapter:"memory"}}if(e.onDisk&&(n={adapter:"leveldb"}),e.replication){let i=Hye();mg.default.plugin(i.plugin),mg.default.adapter("writableStream",i.adapters.writableStream)}if(e.find){let i=require("pouchdb-find");mg.default.plugin(i)}return mg.default.defaults(n)},"getPouch");function c1(e){Vye=_$(e),Kye=!0}a(c1,"init");var nSt=a(()=>{if(!Kye)throw new Error("init has not been called")},"checkInitialised");function bu(e,t){nSt();let r=new Vye(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(bu,"getPouchDB");async function px(e){if(!(!e||K.isTest()))try{return await e.close()}catch{}}a(px,"closePouchDB");var hi=te(require("dd-trace"));var Vv=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 k$={};oe(k$,{breakExternalTableId:()=>T$,breakRowIdField:()=>gSt,buildExternalTableId:()=>lSt,convertRowId:()=>mSt,encodeTableId:()=>fSt,encodeViewId:()=>pSt,extractDate:()=>R$,generateRowIdField:()=>dSt,getNativeSql:()=>Kv,isExternalTable:()=>x$,isExternalTableID:()=>l1,isInternalTableID:()=>cSt,isRowId:()=>hSt,isValidFilter:()=>p1,isValidISODateString:()=>f1,isValidISODateStringWithoutTimezone:()=>A$,isValidTime:()=>O$,sqlLog:()=>dx,validateManyToMany:()=>I$});var S$=`${Me}${Me}`,Qye=/^\[.*]$/g,iSt=encodeURIComponent(" "),aSt=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?Z)?$/,oSt=/^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:.\d{3})?)?$/,sSt=/(\d{4}-\d{2}-\d{2})/,uSt=/^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;function l1(e){return e.startsWith("datasource"+Me)}a(l1,"isExternalTableID");function cSt(e){return!l1(e)}a(cSt,"isInternalTableID");function Kv(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(Kv,"getNativeSql");function x$(e){return e?.sourceId&&e.sourceId.includes("datasource"+Me)&&e?.sourceId!==bS||e?.sourceType==="external"?!0:!!(e?._id&&l1(e._id))}a(x$,"isExternalTable");function lSt(e,t){return`${e}${S$}${encodeURIComponent(t)}`}a(lSt,"buildExternalTableId");function fSt(e){return l1(e)?encodeURIComponent(e):e}a(fSt,"encodeTableId");function pSt(e){return encodeURIComponent(e)}a(pSt,"encodeViewId");function T$(e){let t=e.split(S$),r=t.shift(),n=t.join(S$);if(n.includes(iSt)&&(n=decodeURIComponent(n)),!r||!n)throw new Error("Unable to get datasource/table name from table ID");return{datasourceId:r,tableName:n}}a(T$,"breakExternalTableId");function dSt(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(dSt,"generateRowIdField");function hSt(e){return Array.isArray(e)||typeof e=="string"&&e.match(Qye)!=null}a(hSt,"isRowId");function mSt(e){return Array.isArray(e)?e[0]:typeof e=="string"&&e.match(Qye)!=null?e.substring(1,e.length-1):e}a(mSt,"convertRowId");function gSt(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(gSt,"breakRowIdField");function f1(e){let t=e.trim();if(!aSt.test(t))return!1;let r=new Date(t);return!isNaN(r.getTime())}a(f1,"isValidISODateString");function A$(e){let t=e.trim();if(!oSt.test(t))return!1;let r=new Date(t);return!isNaN(r.getTime())}a(A$,"isValidISODateStringWithoutTimezone");function R$(e){let t=e.match(sSt);if(t)return t[0]}a(R$,"extractDate");function p1(e){return e!=null&&e!==""}a(p1,"isValidFilter");function O$(e){return uSt.test(e)}a(O$,"isValidTime");function dx(e,t,r){if(!K.SQL_LOGGING_ENABLE)return;let n=`[SQL] [${e.toUpperCase()}] query="${t}"`;r&&(n+=` values="${r.join(", ")}"`),console.log(n)}a(dx,"sqlLog");function ySt(e){return!!e.through&&!!e.fromPrimary&&!!e.from&&!!e.toPrimary&&!!e.to}a(ySt,"isValidManyToManyRelationship");function I$(e){if(ySt(e))return e}a(I$,"validateManyToMany");var Yye="Database does not exist.";function Jye(e){return(0,Xye.default)({url:e.url,requestDefaults:{headers:{Authorization:e.cookie}},parseUrl:!1})}a(Jye,"buildNano");var Gd=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 bSt(e,t,r){if(!e||!t)throw new Error("Unable to create database without database name or connection");let n=new Qv(e,r,t);return new Vv(n)}a(bSt,"DatabaseWithConnection");var Qv=class e{constructor(t,r,n){this.couchInfo=yc();this.name=t,this.pouchOpts=r||{},n&&(this.couchInfo=yc(n),this.instanceNano=Jye(this.couchInfo)),e.nano||e.init()}static{a(this,"DatabaseImpl")}static init(){let t=yc();e.nano=Jye(t)}exists(t){return t===void 0?this.dbExists():this.docExists(t)}async dbExists(){return(await g0({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 Gd(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===Yye)return await this.checkAndCreateDb(),await this.performCallWithDBCreation(t);throw new Gd(`CouchDB error: ${i.message}`,i)}}async performCall(t){let r=this.getDb(),n=await t(r);try{return await n()}catch(i){throw new Gd(`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(ose(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 Gd(o,{name:this.name,status:400})}async post(t,r){return t._id||(t._id=Cn()),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===Yye)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 g0(i),s=await o.text();if(o.status>300){let u;try{u=JSON.parse(s)}catch{throw console.error(`SQS error: ${s}`),new Gd("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}/${Na}`;return dx("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(Na)){let t=await this.get(Na);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 Gd(t.message,t)}}async compact(){return this.performCall(t=>()=>t.compact())}async dump(t,r){return bu(this.name).dump(t,r)}async load(t){return bu(this.name).load(t)}async createIndex(t){return bu(this.name).createIndex(t)}async deleteIndex(t){return bu(this.name).deleteIndex(t)}async getIndexes(){return bu(this.name).getIndexes()}};function Io(e,t){return new Vv(new Qv(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 C$(e){let t="/_all_dbs";return e&&(t+=`?${e}`),await M4(t)}a(C$,"directCouchAllDbs");var D$="No app provided";function Hd(e){if(!e)throw D$;return e.startsWith(gc)}a(Hd,"isDevWorkspaceID");function vSt(e){if(!e)throw D$;return e.startsWith(mc)&&!Hd(e)}a(vSt,"isProdWorkspaceID");function hx(e){if(!e)throw D$;return Hd(e.appId)}a(hx,"isDevWorkspace");function d1(e){if(!e||e.startsWith(gc))return e;let t=e.split(mc);t.shift();let r=t.join(mc);return`${gc}${r}`}a(d1,"getDevWorkspaceID");function Us(e){if(!e||!e.startsWith(gc))return e;let t=e.split(gc);t.shift();let r=t.join(gc);return`${mc}${r}`}a(Us,"getProdWorkspaceID");var Zye=require("async_hooks");var ji=class e{static{a(this,"Context")}static{this.storage=new Zye.AsyncLocalStorage}static run(t,r){return e.storage.run(t,()=>r())}static get(){return e.storage.getStore()}};var ebe=null;function gg(e){return e||(e=Pt()),mx(e)}a(gg,"getGlobalDBName");function tbe(e){return e||(e=Pt()),e===pi?bn.AUDIT_LOGS.name:`${e}${Me}${bn.AUDIT_LOGS.name}`}a(tbe,"getAuditLogDBName");function ESt(e){return e||(e=Pt()),e===pi?bn.SCIM_LOGS.name:`${e}${Me}${bn.SCIM_LOGS.name}`}a(ESt,"getScimDBName");function mx(e){return!e||e===pi?bn.GLOBAL.name:`${e}${Me}${bn.GLOBAL.name}`}a(mx,"baseGlobalDBName");function P$(){return K.PLATFORM_URL}a(P$,"getPlatformURL");function Vd(){return!!K.MULTI_TENANCY}a(Vd,"isMultiTenant");function _St(){return!!ji.get()?.tenantId}a(_St,"isTenantIdSet");function SSt(){return K.MULTI_TENANCY}a(SSt,"isTenancyEnabled");function Yv(e){if(!e)return;if(!Vd())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(Yv,"getTenantIDFromWorkspaceID");function xSt(e){let t;try{t=ji.get()}catch{t={}}return t={...t,...e},t}a(xSt,"updateContext");async function Ec(e,t){CSt();let r=xSt(e);return ji.run(r,t)}a(Ec,"newContext");async function TSt(e){return await nbe(),await Ec({tenantId:Yv(e.workspaceId),appId:e.workspaceId,automationId:e.automationId},e.task)}a(TSt,"doInAutomationContext");async function N$(e,t){let r=Yv(e);return Ec({tenantId:r,appId:e},t)}a(N$,"doInContext");async function Xo(e,t){return K.MULTI_TENANCY||(e=e||pi),Ec(e?{tenantId:e}:{},t)}a(Xo,"doInTenant");async function ASt(e,t){return Ec({tenantId:e,isSelfHostUsingCloud:!0},t)}a(ASt,"doInSelfHostTenantUsingCloud");async function RSt(e,t){return Ec({license:e},t)}a(RSt,"doInLicenseContext");function OSt(){return ji.get()?.license}a(OSt,"getLicense");function h1(){return!!ji.get()?.isSelfHostUsingCloud}a(h1,"isSelfHostUsingCloud");function ISt(){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(ISt,"getSelfHostCloudDB");async function kSt(e,t){return rbe(e,t)}a(kSt,"doInWorkspaceContext");async function rbe(e,t,r){if(!e)throw new Error("workspaceId is required");let n=Yv(e),i={appId:e,...r};return n&&(i.tenantId=n),Ec(i,t)}a(rbe,"_doInWorkspaceContext");async function m0(e,t){if(!e)throw new Error("identity is required");let r={identity:e};return e.tenantId&&(r.tenantId=e.tenantId),Ec(r,t)}a(m0,"doInIdentityContext");function CSt(){if(ji.get()?.isMigrating)throw new Error("The context cannot be changed, a migration is currently running")}a(CSt,"guardMigration");async function DSt(e,t){return rbe(e,t,{isMigrating:!0})}a(DSt,"doInWorkspaceMigrationContext");function Bf(){try{return ji.get()?.identity}catch{}}a(Bf,"getIdentity");function Pt(){if(!Vd())return pi;let t=ji.get()?.tenantId;if(!t)throw new Error("Tenant id not found");return t}a(Pt,"getTenantId");function L$(){return ji.get()?.automationId}a(L$,"getAutomationId");function Zo(){let t=ji.get()?.appId;return!t&&K.isTest()&&ebe?ebe:t}a(Zo,"getWorkspaceId");function F$(){return ji.get()?.ip}a(F$,"getIP");var PSt=a(()=>{let e=Zo();if(!e)throw new Error("Could not get workspaceId");return d1(e)},"getDevWorkspaceId"),NSt=a(()=>{let e=Zo();if(!e)throw new Error("Could not get workspaceId");return Us(e)},"getProdWorkspaceId");function LSt(e,t){if(!e)throw new Error("Must supply environment variables.");return Ec({environmentVariables:e},t)}a(LSt,"doInEnvironmentContext");function FSt(e){return Ec({isScim:!0},e)}a(FSt,"doInScimContext");function U$(e,t){return Ec({ip:e},t)}a(U$,"doInIPContext");async function nbe(){let e=yg();if(!e||e.snippets)return;let t,r=Jv();r&&(t=(await r.tryGet("app_metadata"))?.snippets),e.snippets=t||[]}a(nbe,"ensureSnippetContext");function USt(){let e=ji.get();return e.environmentVariables?e.environmentVariables:null}a(USt,"getEnvironmentVariables");function Ar(){let e=ji.get();if(!e||K.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(mx(e?.tenantId))}a(Ar,"getGlobalDB");function jSt(){if(!Pt())throw new Error("No tenant ID found - cannot open audit log DB");return Io(tbe())}a(jSt,"getAuditLogsDB");function Jv(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(Jv,"getWorkspaceDB");function MSt(e){let t=Zo();if(!t)throw new Error("Unable to retrieve prod DB - no workspace ID.");return Io(Us(t),e)}a(MSt,"getProdWorkspaceDB");function BSt(e){let t=Zo();if(!t)throw new Error("Unable to retrieve dev DB - no workspace ID.");return Io(d1(t),e)}a(BSt,"getDevWorkspaceDB");function _c(){return!!ji.get()?.isScim}a(_c,"isScim");function yg(){try{return ji.get()}catch{return}}a(yg,"getCurrentContext");function j$(e){let t=yg();if(t)return t.featureFlagCache?.[e]}a(j$,"getFeatureFlags");function M$(e,t){let r=yg();r&&(r.featureFlagCache??={},r.featureFlagCache[e]=t)}a(M$,"setFeatureFlags");function B$(){return yg()?.featureFlagOverrides||{}}a(B$,"getFeatureFlagOverrides");async function q$(e,t){return await Ec({featureFlagOverrides:e},t)}a(q$,"doInFeatureFlagOverrideContext");function qSt(e){let t=yg();if(t)return t.viewToTableCache?.[e]}a(qSt,"getTableForView");function $St(e,t){let r=yg();r&&(r.viewToTableCache??={},r.viewToTableCache[e]=t)}a($St,"setTableForView");var ne={};oe(ne,{AutomationViewMode:()=>S4,BUDIBASE_DATASOURCE_TYPE:()=>hfe,DEFAULT_BB_DATASOURCE_ID:()=>bS,DEFAULT_EMPLOYEE_TABLE_ID:()=>bfe,DEFAULT_EXPENSES_TABLE_ID:()=>yfe,DEFAULT_INVENTORY_TABLE_ID:()=>gfe,DEFAULT_JOBS_TABLE_ID:()=>mfe,DatabaseImpl:()=>Qv,DatabaseWithConnection:()=>bSt,DeprecatedViews:()=>f0,DesignDocuments:()=>Qm,DocumentType:()=>Mt,InternalTable:()=>Df,QueryBuilder:()=>Zf,Replication:()=>Fbe,SEPARATOR:()=>Me,SQLITE_DESIGN_DOC_ID:()=>Na,SQS_DATASOURCE_INTERNAL:()=>xd,StaticDatabases:()=>bn,UNICODE_MAX:()=>Pa,USER_METADATA_PREFIX:()=>nC,ViewName:()=>Sd,WORKSPACE_DEV:()=>x4,WORKSPACE_DEV_PREFIX:()=>gc,WORKSPACE_PREFIX:()=>mc,baseGlobalDBName:()=>mx,checkErrorCode:()=>Bbe,closePouchDB:()=>px,createApiKeyView:()=>Cbe,createNewUserEmailView:()=>Ibe,createPlatformAccountEmailView:()=>Pbe,createPlatformUserView:()=>Nbe,createUserAppView:()=>kbe,createView:()=>ew,dbExists:()=>n0t,directCouchAllDbs:()=>C$,directCouchCall:()=>Ofe,directCouchQuery:()=>M4,directCouchUrlCall:()=>g0,doWithDB:()=>Fs,fullSearch:()=>u0t,generateAgentChatID:()=>ybe,generateAgentToolSourceID:()=>bbe,generateAppUserID:()=>v1,generateDevInfoID:()=>hbe,generateGlobalUserID:()=>Zv,generateOAuth2LogID:()=>gbe,generatePluginID:()=>mbe,generateRoleID:()=>Q$,generateRowID:()=>K$,generateTableID:()=>cbe,generateTemplateID:()=>dbe,generateUserMetadataID:()=>fbe,generateWorkspaceAppID:()=>vbe,generateWorkspaceFavouriteID:()=>wbe,generateWorkspaceID:()=>ube,getAllDbs:()=>Obe,getAllWorkspaces:()=>Ox,getCouchInfo:()=>yc,getDB:()=>Io,getDevWorkspaceID:()=>d1,getDevWorkspaceIDs:()=>t0t,getDocParams:()=>Jf,getGlobalDBName:()=>gg,getGlobalIDFromUserMetadataID:()=>pbe,getGlobalUserParams:()=>wg,getOAuth2ConfigParams:()=>Tbe,getPluginParams:()=>xbe,getPouch:()=>_$,getPouchDB:()=>bu,getProdWorkpaceIDs:()=>e0t,getProdWorkspaceID:()=>Us,getQueryIndex:()=>Ebe,getRoleParams:()=>E1,getRowParams:()=>Y$,getStartEndKeyURL:()=>Rx,getTemplateParams:()=>Sbe,getUrlInfo:()=>j4,getUserMetadataParams:()=>_be,getUsersByWorkspaceParams:()=>w1,getWorkspaceAppParams:()=>Abe,getWorkspaceFavouriteParams:()=>Rbe,getWorkspacesByIDs:()=>ZSt,init:()=>c1,isDevWorkspace:()=>hx,isDevWorkspaceID:()=>Hd,isDocumentConflictError:()=>l0t,isGlobalUserID:()=>lbe,isProdWorkspaceID:()=>vSt,isSameWorkspaceID:()=>r0t,paginatedSearch:()=>s0t,pagination:()=>J$,prefixRoleID:()=>Yf,queryGlobalView:()=>Xf,queryGlobalViewRaw:()=>ez,queryPlatformView:()=>kx,queryView:()=>Z$,queryViewRaw:()=>Ix,removeKeyNumbering:()=>Cx,searchIndexes:()=>nz});var Ax={};oe(Ax,{WorkspaceState:()=>V$,getWorkspaceMetadata:()=>b1,invalidateWorkspaceMetadata:()=>JSt});var Kd={};oe(Kd,{getCacheClient:()=>W$,getDocWritethroughClient:()=>VSt,getInviteClient:()=>vg,getLockClient:()=>H$,getPasswordResetClient:()=>Tx,getSessionClient:()=>Xv,getSocketClient:()=>HSt,getUserClient:()=>xx,getWorkspaceClient:()=>y1,getWritethroughClient:()=>G$,init:()=>Sc,shutdown:()=>obe});var g1=te(require("ioredis"));var m1=require("dd-trace"),abe=require("lodash");var ibe;if(K.MOCK_REDIS)try{ibe=require("ioredis-mock")}catch{console.log("Mock redis unavailable")}async function zSt(e=0){return await m1.tracer.trace("Redis.init",async t=>{if(K.MOCK_REDIS)return t.addTags({mock:!0}),new ibe(Ym());let r;if(K.REDIS_CLUSTERED){t.addTags({clustered:!0});let{host:n,port:i}=sC();r=new g1.Cluster([{host:n,port:i}],k4())}else r=new g1.default(Ym());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(zSt,"init");function WSt(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:C4(s),value:u}});r(await Promise.all(o))}catch(o){n(o)}})})}a(WSt,"promisifyStream");function GSt(e){return e.isCluster}a(GSt,"isCluster");var $$=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 zSt(r);return r&&!K.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}${dv}${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}${dv}${t}`;let n;GSt(this.client)?n=this.client.nodes("master")[0].scanStream({match:t+"*",count:100}):n=this.client.scanStream({match:t+"*",count:100});let i=await WSt(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,abe.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`)};fO.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"),kx=a(async(e,t)=>{let r={account_by_email:Pbe,platform_users_lowercase_2:Nbe};return Fs(bn.PLATFORM_INFO.name,async n=>{let i=r[e];return Z$(e,t,n,i,{arrayResponse:!0})})},"queryPlatformView"),Lbe={by_email2:Ibe,by_api_key:Cbe,by_app:kbe},Xf=a(async(e,t,r,n)=>{r||(r=Ar());let i=Lbe[e];return Z$(e,t,r,i,n)},"queryGlobalView");async function ez(e,t,r){let n=Ar(),i=Lbe[e];return Ix(e,t,n,i,r)}a(ez,"queryGlobalViewRaw");var o0t=te(require("pouchdb"));var tz=class{static{a(this,"Replication")}constructor({source:t,target:r}){this.source=bu(t),this.target=bu(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([px(this.source),px(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=bu(this.target.name),await this.replicate()}},Fbe=tz;var jbe=te(require("node-fetch"));var Cx=Lr.removeKeyNumbering;function Eg(e){return e==null||e===""}a(Eg,"isEmpty");var Zf=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=Cx(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)=>Eg(g)?null:`${m}:${t.preprocess(g,o)}`,"equal"),c=a((m,g,y="AND")=>{if(Eg(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)=>Eg(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(Eg(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=Cx(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)=>Eg(g)?null:(g=t.preprocess(g,{escape:!0,lowercase:!0,type:"string"}),`${m}:${g}*`)),this.#e.range&&h(this.#e.range,(m,g)=>{if(Eg(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)=>Eg(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}=yc(),n=`${t}/${this.#l}/_design/database/_search/${this.#f}`,i=this.buildSearchBody();try{return await Ube(n,i,r)}catch(o){if(o.status===404&&this.#s)return await this.#s(),await Ube(n,i,r);throw o}}};async function Ube(e,t,r){let n=await(0,jbe.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(Ube,"runQuery");async function Mbe(e,t,r,n){let i=n.bookmark,o=n.rows||[];if(n.limit&&o.length>=n.limit)return o;let s=Zf.maxLimit;n.limit&&o.length>n.limit-Zf.maxLimit&&(s=n.limit-o.length);let u=new Zf(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<Zf.maxLimit)return[...o,...c.rows];let l={...n,bookmark:c.bookmark,rows:[...o,...c.rows]};return await Mbe(e,t,r,l)}a(Mbe,"recursiveSearch");async function s0t(e,t,r,n){let i=n.limit;(i==null||isNaN(i)||i<0)&&(i=50),i=Math.min(i,Zf.maxLimit);let o=new Zf(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(s0t,"paginatedSearch");async function u0t(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 Mbe(e,t,r,n)}}a(u0t,"fullSearch");var nz={};oe(nz,{createUserIndex:()=>c0t});async function c0t(){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(c0t,"createUserIndex");function Bbe(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(Bbe,"checkErrorCode");function l0t(e){return Bbe(e,409)}a(l0t,"isDocumentConflictError");var Px={};oe(Px,{addTenantToUrl:()=>f0t,getTenantDB:()=>iz,getTenantIDFromCtx:()=>Dx,isUserInAppTenant:()=>p0t});function iz(e){return Io(gg(e))}a(iz,"getTenantDB");function f0t(e){let t=Pt();if(Vd()){let r=e.indexOf("?")===-1?"?":"&";e+=`${r}tenantId=${t}`}return e}a(f0t,"addTenantToUrl");var p0t=a((e,t)=>{let r;return t?r=t.tenantId||pi:r=Pt(),(Yv(e)||pi)===r},"isUserInAppTenant"),d0t=Object.values(hS),Dx=a((e,t)=>{if(!Vd())return pi;t.allowNoTenant===void 0&&(t.allowNoTenant=!1),t.includeStrategies||(t.includeStrategies=d0t),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(P$()).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 az="app"+Me,qbe="/app/",h0t="/builder",m0t=`${h0t}/workspace/`,g0t="/api/public/v";async function y0t(e){let r=`/${e.path.split("/")[2].toLowerCase()}`,n=Pt();!K.isDev()&&K.MULTI_TENANCY&&(n=Dx(e,{includeStrategies:["subdomain"]}));let o=(await Xo(n,()=>Ox({dev:!1}))).filter(s=>s.url&&s.url.toLowerCase()===r)[0];return o&&o.appId?o.appId:void 0}a(y0t,"resolveAppUrl");function b0t(e){return e.path.startsWith(`/${az}`)?!0:e.path.startsWith(qbe)}a(b0t,"isServingApp");function v0t(e){return e.path.startsWith(m0t)}a(v0t,"isServingBuilder");function w0t(e){return $be(e.path)}a(w0t,"isServingBuilderPreview");function $be(e){return new RegExp(/^\/app\/app_\w+\/preview$/).test(e)}a($be,"isBuilderPreviewUrl");function E0t(e){return e.path.startsWith(g0t)}a(E0t,"isPublicApiRequest");async function _g(e){let t;function r(u){return!u||!u.startsWith(az)?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=_0t(e.path);i&&(t=r(i)),e.query?.appId&&(t=r(e.query?.appId));let o=$be(e.path);return e.path.startsWith(qbe)&&!o&&(t=r(await y0t(e))),t}a(_g,"getAppIdFromCtx");function _0t(e){if(e)return e.split("?")[0].split("/").find(t=>t.startsWith(az))}a(_0t,"parseAppIdFromUrlPath");function S1(e){if(e)try{return _1.default.verify(e,K.JWT_SECRET)}catch(t){if(K.JWT_SECRET_FALLBACK)return _1.default.verify(e,K.JWT_SECRET_FALLBACK);throw t}}a(S1,"openJwt");function Nx(e){return K.INTERNAL_API_KEY&&K.INTERNAL_API_KEY===e?!0:!!(K.INTERNAL_API_KEY_FALLBACK&&K.INTERNAL_API_KEY_FALLBACK===e)}a(Nx,"isValidInternalAPIKey");function ep(e,t){let r=e.cookies.get(t);if(r)return S1(r)}a(ep,"getCookie");function zbe(e,t,r="builder",n={sign:!0}){t&&n&&n.sign&&(t=_1.default.sign(t,K.JWT_SECRET));let i={expires:A4,path:"/",httpOnly:!1,overwrite:!0};K.COOKIE_DOMAIN&&(i.domain=K.COOKIE_DOMAIN),e.cookies.set(r,t,i)}a(zbe,"setCookie");function Qd(e,t){zbe(e,null,t)}a(Qd,"clearCookie");function S0t(e){return e.headers["x-budibase-type"]==="client"}a(S0t,"isClient");function oz(e){return new Promise(t=>setTimeout(t,e))}a(oz,"timeout");function sz(e){return!!$b[e]}a(sz,"isAudited");function x0t(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(x0t,"hasCircularStructure");function T0t(e){return!!e.match(/^.+:\/\/.+$/)}a(T0t,"urlHasProtocol");function uz(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(uz,"validEmail");var Wbe=(o=>(o.MILLISECONDS="milliseconds",o.SECONDS="seconds",o.MINUTES="minutes",o.HOURS="hours",o.DAYS="days",o))(Wbe||{}),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 A0t(e){let t=performance.now();return[await e(),mi.fromMilliseconds(performance.now()-t)]}a(A0t,"time");function R0t(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(R0t,"jobToJobInformation");var T1=class{static{a(this,"InMemoryQueue")}constructor(t,r){this._name=t,this._opts=r,this._messages=[],this._emitter=new Gbe.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=Cn(),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=>R0t(t))}async whenCurrentJobsFinished(){do await oz(50);while(this.hasRunningJobs())}hasRunningJobs(){return this._addCount>this._runCount}},Hbe=T1;var lz=te(require("bull"));var tw=(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))(tw||{});function Vbe(e,t,r){k0t(e,t),r&&O0t(e,r)}a(Vbe,"addListeners");function O0t(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(O0t,"handleStalled");function vu(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(vu,"getLogParams");var I0t={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 k0t(e,t){let r=I0t[t];function n(i,o){let s=i.data.event?.appId;if(s)return N$(s,o);o()}a(n,"doInJobContext"),e.on("stalled",async i=>{await n(i,()=>{console.error(...vu(r,"stalled",{job:i}))})}).on("error",i=>{console.error(...vu(r,"error",{error:i}))}),process.env.NODE_DEBUG?.includes("bull")&&e.on("waiting",i=>{console.info(...vu(r,"waiting",{jobId:i}))}).on("active",async i=>{await n(i,()=>{console.info(...vu(r,"active",{job:i}))})}).on("progress",async(i,o)=>{await n(i,()=>{console.info(...vu(r,"progress",{job:i},{progress:o}))})}).on("completed",async(i,o)=>{await n(i,()=>{console.info(...vu(r,"completed",{job:i},{result:o}))})}).on("failed",async(i,o)=>{await n(i,()=>{console.error(...vu(r,"failed",{job:i,error:o}))})}).on("paused",()=>{console.info(...vu(r,"paused"))}).on("resumed",()=>{console.info(...vu(r,"resumed"))}).on("cleaned",(i,o)=>{console.info(...vu(r,"cleaned",{},{length:i.length,type:o}))}).on("drained",()=>{console.info(...vu(r,"drained"))}).on("removed",i=>{console.info(...vu(r,"removed",{job:i}))})}a(k0t,"logging");var cz=[];function Kbe(e,t){let r=setInterval(e,t);return cz.push(r),r}a(Kbe,"set");function Qbe(e){let t=cz.indexOf(e);t!==-1&&cz.splice(t,1),clearInterval(e)}a(Qbe,"clear");var tp=te(require("dd-trace")),Lx=te(require("object-sizeof"));var C0t=mi.fromMinutes(5).toMs(),D0t=mi.fromSeconds(30).toMs(),fz=mi.fromSeconds(60).toMs(),Fx=[],A1;async function Jbe(){for(let e of Fx)await e.clean(fz,"completed"),await e.clean(fz,"failed")}a(Jbe,"cleanup");async function P0t(e,t,r){let n=performance.now();try{let i=await t();return tp.default.dogstatsd.increment(`${e}.success`,1,r),i}catch(i){throw tp.default.dogstatsd.increment(`${e}.error`,1,r),i}finally{let i=performance.now()-n;tp.default.dogstatsd.distribution(`${e}.duration.ms`,i,r),tp.default.dogstatsd.increment(e,1,r)}}a(P0t,"withMetrics");function Xbe(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(Xbe,"jobOptsTags");function N0t(e){return{"job.id":e.id,"job.attemptsMade":e.attemptsMade,"job.timestamp":e.timestamp,"job.data.sizeBytes":(0,Lx.default)(e.data),...Xbe(e.opts||{})}}a(N0t,"jobTags");var xc=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:Ym(),settings:{maxStalledCount:this.opts.maxStalledCount?this.opts.maxStalledCount:0,lockDuration:C0t,lockRenewTime:D0t}};this.opts.jobOptions&&(r.defaultJobOptions=this.opts.jobOptions);let n;return K.isTest()?process.env.BULL_TEST_REDIS_PORT&&!isNaN(+process.env.BULL_TEST_REDIS_PORT)?n=new lz.default(this.jobQueue,{...r,redis:{host:"localhost",port:+process.env.BULL_TEST_REDIS_PORT}}):n=new Hbe(this.jobQueue,r):n=new lz.default(this.jobQueue,r),Vbe(n,this.jobQueue,this.opts.removeStalledCb),Fx.push(n),!A1&&!K.isTest()&&(A1=Kbe(Jbe,fz),Jbe().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 tp.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,...N0t(s)}),this.opts.jobTags&&c.addTags(this.opts.jobTags(s.data)),tp.default.dogstatsd.distribution("queue.process.sizeBytes",(0,Lx.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 tp.default.trace("queue.add",async n=>(n.addTags({"queue.name":this.jobQueue,"job.data.sizeBytes":(0,Lx.default)(t),...Xbe(r||{})}),this.opts.jobTags&&n.addTags(this.opts.jobTags(t)),t._parentSpanContext={traceId:n.context().toTraceId(),spanId:n.context().toSpanId()},tp.default.dogstatsd.distribution("queue.add.sizeBytes",(0,Lx.default)(t),this.metricTags()),await this.withMetrics("queue.add",()=>this.queue.add(t,r))))}withMetrics(t,r){return P0t(t,r,this.metricTags())}metricTags(){return{queueName:this.jobQueue}}close(t){return this.queue.close(t)}whenCurrentJobsFinished(){return this.queue.whenCurrentJobsFinished()}};async function L0t(){A1&&Qbe(A1),console.log("Waiting for current queue jobs to finish...");for(let e of Fx)await e.whenCurrentJobsFinished();console.log("Closing queue Redis connections...");for(let e of Fx)await e.close();Fx=[],console.log("Queues shutdown")}a(L0t,"shutdown");var kt={};oe(kt,{correlation:()=>Ux,logAlert:()=>fy,logAlertWithInfo:()=>iVt,logWarn:()=>nE,logger:()=>sL,system:()=>t7});var Ux={};oe(Ux,{getId:()=>dz,setHeader:()=>$0t});var tve=R1(),$0t=a(e=>{let t=tve.getId();t&&(e["x-budibase-correlation-id"]=t)},"setHeader");function dz(){return tve.getId()}a(dz,"getId");var oL=te(oEe()),HPe=te(uH()),r7=te(require("dd-trace")),VPe=require("dd-trace/ext");var t7={};oe(t7,{getLogReadStream:()=>XHt,getSingleFileMaxSizeInfo:()=>GPe,localFileDestination:()=>e7});var iA=te(require("fs")),Z9=te(require("path")),qPe=te(SRe());var gt={};oe(gt,{ObjectStore:()=>Ou,ObjectStoreBuckets:()=>Vzt,SIGNED_FILE_PREFIX:()=>WV,bucketTTLConfig:()=>IN,budibaseTempDir:()=>ay,client3rdPartyLibrary:()=>WHt,clientLibraryCDNUrl:()=>GHt,clientLibraryPath:()=>CPe,clientLibraryUrl:()=>HHt,createBucketIfNotExists:()=>WT,deleteFile:()=>c8t,deleteFiles:()=>l8t,deleteFolder:()=>H1e,downloadTarball:()=>p8t,downloadTarballDirect:()=>f8t,enrichPWAImages:()=>VHt,enrichPluginURLs:()=>QHt,extractBucketAndPath:()=>jV,getAllFiles:()=>o8t,getAppFileUrl:()=>PPe,getClientCacheKey:()=>DPe,getGlobalFileS3Key:()=>NPe,getGlobalFileUrl:()=>KHt,getObjectMetadata:()=>d8t,getPluginIconKey:()=>UPe,getPluginJSKey:()=>FPe,getPluginS3Dir:()=>MPe,getPresignedUrl:()=>gh,getReadStream:()=>kN,listAllObjects:()=>GV,objectExists:()=>VV,processAutomationAttachment:()=>Qzt,processObjectStoreAttachment:()=>F1e,retrieve:()=>G1e,retrieveDirectory:()=>u8t,retrieveToTmp:()=>s8t,sanitizeBucket:()=>Po,sanitizeKey:()=>Mi,streamUpload:()=>W1e,upload:()=>a8t,uploadDirectory:()=>HV});var DN=require("@aws-sdk/client-s3"),MV=te(zCe()),z1e=require("@aws-sdk/s3-request-presigner");var mh=te(require("dd-trace")),Gw=te(require("fs")),$T=te(require("fs/promises")),BV=te(require("node-fetch")),hh=require("path"),PN=te(require("stream")),zT=require("stream/promises"),qV=te(C1e()),$V=require("uuid"),zV=te(require("zlib"));var D1e=te(require("fs")),P1e=require("os"),qT=te(require("path")),N1e=te(require("stream"));var Vzt={BACKUPS:K.BACKUPS_BUCKET_NAME,APPS:K.APPS_BUCKET_NAME,TEMPLATES:K.TEMPLATES_BUCKET_NAME,GLOBAL:K.GLOBAL_BUCKET_NAME,PLUGINS:K.PLUGIN_BUCKET_NAME,TEMP:K.TEMP_BUCKET_NAME},L1e=(0,qT.join)((0,P1e.tmpdir)(),".budibase");try{D1e.default.mkdirSync(L1e)}catch(e){if(e.code!=="EEXIST")throw e}function ay(){return L1e}a(ay,"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 Kzt(e){let t=await fetch(e.url);if(!t.ok||!t.body)throw new Error(`Unexpected response ${t.statusText}`);let r=qT.default.basename(new URL(e.url).pathname);if(!t.body)throw new Error("No response received for attachment");return{filename:e.filename||r,content:N1e.default.Readable.fromWeb(t.body)}}a(Kzt,"processUrlAttachment");async function F1e(e){let t=jV(e.url);if(t===null)throw new Error("Invalid signed URL");let{bucket:r,path:n}=t,{stream:i}=await kN(r,n),o=qT.default.basename(n);return{bucket:r,path:n,filename:e.filename||o,content:i}}a(F1e,"processObjectStoreAttachment");async function Qzt(e){return e.url?.startsWith("http://")||e.url?.startsWith("https://")?await Kzt(e):await F1e(e)}a(Qzt,"processAutomationAttachment");var r8t=$1e(),n8t={bucketCreationPromises:{}},WV="/files/signed",dh={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"},i8t=[dh.html,dh.css,dh.js,dh.json];function Mi(e){return r8t(Po(e)).replace(/\\/g,"/")}a(Mi,"sanitizeKey");function Po(e){return e.replace(new RegExp(gc,"g"),mc)}a(Po,"sanitizeBucket");function Ou(e={presigning:!1}){let t={forcePathStyle:!0,credentials:{accessKeyId:K.MINIO_ACCESS_KEY,secretAccessKey:K.MINIO_SECRET_KEY},region:K.AWS_REGION};return!K.MINIO_ENABLED&&K.AWS_SESSION_TOKEN&&(t.credentials={accessKeyId:K.MINIO_ACCESS_KEY,secretAccessKey:K.MINIO_SECRET_KEY,sessionToken:K.AWS_SESSION_TOKEN}),K.MINIO_URL&&(e.presigning&&K.MINIO_ENABLED?t.endpoint="http://minio-service":t.endpoint=K.MINIO_URL),new DN.S3(t)}a(Ou,"ObjectStore");async function WT(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=n8t.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(WT,"createBucketIfNotExists");async function a8t({bucket:e,filename:t,path:r,type:n,metadata:i,body:o,ttl:s}){let u=t.split(".").pop(),c=r?(await $T.default.open(r)).createReadStream():o,l=Ou(),f=await WT(l,e);if(s&&f.created){let g=IN(e,s);await l.putBucketLifecycleConfiguration(g)}let p=n,d=p||(u?dh[u.toLowerCase()]:dh.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 MV.Upload({client:l,params:h}).done()}a(a8t,"upload");async function W1e({bucket:e,stream:t,filename:r,type:n,extra:i,ttl:o}){return await mh.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=Ou(),l=await WT(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?dh[u.toLowerCase()]:dh.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 MV.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(W1e,"streamUpload");async function G1e(e,t){return await mh.default.trace("retrieve",async r=>{r.addTags({bucketName:e,filepath:t});let n=Ou(),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}),i8t.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(G1e,"retrieve");async function*GV(e,t){let r=Ou(),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(GV,"listAllObjects");async function o8t(e,t){let r={};return await zt.parallelForeach(GV(e,t),async n=>{if(!n.Key)throw new Error("file.Key must be defined");r[n.Key]=n},5),r}a(o8t,"getAllFiles");async function gh(e,t,r=3600){let n=Ou({presigning:!0}),i={Bucket:Po(e),Key:Mi(t)},o=await(0,z1e.getSignedUrl)(n,new DN.GetObjectCommand(i),{expiresIn:r});if(K.MINIO_ENABLED){let s=new URL(o),u=s.pathname,c=s.search;return`${WV}${u}${c}`}else return o}a(gh,"getPresignedUrl");async function s8t(e,t){return await mh.default.trace("retrieveToTmp",async r=>{r.addTags({bucketName:e,filepath:t}),e=Po(e),t=Mi(t);let n=await G1e(e,t),i=(0,hh.join)(ay(),(0,$V.v4)());return r.addTags({outputPath:i}),n instanceof PN.default.Readable?(r.addTags({stream:!0}),await(0,zT.pipeline)(n,Gw.default.createWriteStream(i))):(r.addTags({stream:!1}),Gw.default.writeFileSync(i,n)),i})}a(s8t,"retrieveToTmp");async function u8t(e,t,r){return await mh.default.trace("retrieveDirectory",async n=>{n.addTags({bucketName:e,path:t});let i=(0,hh.join)(ay(),(0,$V.v4)());await $T.default.mkdir(i,{recursive:!0});let o=0;return await zt.parallelForeach(GV(e,t),async s=>{let{Key:u}=s;!u||r?.some(c=>c.test(u))||(o++,await mh.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,hh.join)(i,...d);p.length>1&&!Gw.default.existsSync(h)&&await $T.default.mkdir(h,{recursive:!0}),await(0,zT.pipeline)(f,Gw.default.createWriteStream((0,hh.join)(i,...p),{mode:420}))}))},5),n.addTags({numObjects:o}),i})}a(u8t,"retrieveDirectory");async function c8t(e,t){let r=Ou();await WT(r,e);let n={Bucket:e,Key:Mi(t)};return r.deleteObject(n)}a(c8t,"deleteFile");async function l8t(e,t){let r=Ou();await WT(r,e);let n={Bucket:e,Delete:{Objects:t.map(i=>({Key:Mi(i)}))}};return r.deleteObjects(n)}a(l8t,"deleteFiles");async function H1e(e,t){e=Po(e),t=Mi(t);let r=Ou(),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 H1e(e,t)}a(H1e,"deleteFolder");async function HV(e,t,r){return await mh.default.trace("uploadDirectory",async n=>{n.addTags({bucketName:e,localPath:t,bucketPath:r}),e=Po(e);let i=await $T.default.readdir(t,{withFileTypes:!0});n.addTags({numFiles:i.length});for(let o of i){let s=Mi((0,hh.join)(r,o.name)),u=(0,hh.join)(t,o.name);o.isDirectory()?await HV(e,u,s):await W1e({bucket:e,filename:s,stream:Gw.default.createReadStream(u)})}return i})}a(HV,"uploadDirectory");async function f8t(e,t,r={}){t=Mi(t);let n=await(0,BV.default)(e,{headers:r});if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);await(0,zT.pipeline)(n.body,zV.default.createUnzip(),qV.default.extract(t))}a(f8t,"downloadTarballDirect");async function p8t(e,t,r){t=Po(t),r=Mi(r);let n=await(0,BV.default)(e);if(!n.ok)throw new Error(`unexpected response ${n.statusText}`);let i=(0,hh.join)(ay(),r);return await(0,zT.pipeline)(n.body,zV.default.createUnzip(),qV.default.extract(i)),!K.isTest()&&K.SELF_HOSTED&&await HV(t,i,r),i}a(p8t,"downloadTarball");async function kN(e,t){return await mh.default.trace("getReadStream",async r=>{e=Po(e),t=Mi(t),r.addTags({bucketName:e,path:t});let n=Ou(),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 d8t(e,t){e=Po(e),t=Mi(t);let r=Ou(),n={Bucket:e,Key:t};try{return await r.headObject(n)}catch{throw new Error("Unable to retrieve metadata from object")}}a(d8t,"getObjectMetadata");async function VV(e,t){e=Po(e),t=Mi(t);let r=Ou(),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(VV,"objectExists");function jV(e){let t=e.split("?")[0],r=new RegExp(`^${WV}/(?<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(jV,"extractBucketAndPath");var kPe=te(require("querystring"));var nL=te(require("crypto"));var bHt=te(z9()),_Pe=te(require("dd-trace"));var SPe=require("lodash");var EPe;function xPe(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(xPe,"parseEnvFlags");function vHt(){return xPe(K.TENANT_FEATURE_FLAGS||"")}a(vHt,"getEnvFlags");var W9=class{constructor(t){this.flagSchema=t;this.setId=nL.randomUUID()}static{a(this,"FlagSet")}defaults(){return(0,SPe.cloneDeep)(this.flagSchema)}isFlagName(t){return this.flagSchema[t]!==void 0}async isEnabled(t){return(await this.fetch())[t]}async fetch(){return await _Pe.default.trace("features.fetch",async t=>{let r=j$(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 vHt())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=Bf(),c=u?._id;if(!c){let p=F$();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,EPe&&c){n.readFromPostHog=!0;let p=await tE(),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 EPe.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=B$();for(let[p,d]of Object.entries(f))this.isFlagName(p)&&typeof d=="boolean"&&(i[p]=d,n[`flags.${p}.source`]="override");M$(this.setId,i);for(let[p,d]of Object.entries(i))n[`flags.${p}.value`]=d;return t?.addTags(n),i})}},wHt=new W9(sse);async function G9(e){return await wHt.isEnabled(e)}a(G9,"isEnabled");var IPe=te(OPe());var aL;function $Ht(){if(!K.CLOUDFRONT_PRIVATE_KEY_64)throw new Error("CLOUDFRONT_PRIVATE_KEY_64 is not set");return aL||(aL=Buffer.from(K.CLOUDFRONT_PRIVATE_KEY_64,"base64").toString("utf-8"),aL)}a($Ht,"getPrivateKey");var zHt=a(()=>({keypairId:K.CLOUDFRONT_PUBLIC_KEY_ID,privateKeyString:$Ht(),expireTime:new Date().getTime()+1e3*60*60*24}),"getCloudfrontSignParams"),rE=a(e=>{let t=J9(e);return IPe.getSignedUrl(t,zHt())},"getPresignedUrl"),J9=a(e=>{let t="/";return e.startsWith("/")&&(t=""),`${K.CLOUDFRONT_CDN}${t}${e}`},"getUrl");async function CPe(e){let t=`${Mi(e)}/budibase-client.js`,r=`${Mi(e)}/budibase-client.new.js`;return await G9("USE_DYNAMIC_LOADING")&&await VV(K.APPS_BUCKET_NAME,r)?r:t}a(CPe,"clientLibraryPath");function WHt(e,t){return`${Mi(e)}/_dependencies/${t}`}a(WHt,"client3rdPartyLibrary");async function GHt(e,t){let r=await CPe(e);return K.CLOUDFRONT_CDN?(t&&(r+=`?v=${t}`),J9(r)):await gh(K.APPS_BUCKET_NAME,r)}a(GHt,"clientLibraryCDNUrl");async function HHt(e,t){return`/api/assets/client?${await DPe(e,t)}`}a(HHt,"clientLibraryUrl");async function DPe(e,t){let r,n;try{r=Pt()}finally{n={appId:e,version:t}}return r&&r!==pi&&(n.tenantId=r),n.dynamic=await G9("USE_DYNAMIC_LOADING"),kPe.default.encode(n)}a(DPe,"getClientCacheKey");async function PPe(e){return K.CLOUDFRONT_CDN?rE(e):await gh(K.APPS_BUCKET_NAME,e)}a(PPe,"getAppFileUrl");async function VHt(e){if(e.length===0)return[];try{return await Promise.all(e.map(async t=>({...t,src:await PPe(t.src),type:t.type||"image/png"})))}catch(t){return console.error("Error enriching PWA images:",t),e}}a(VHt,"enrichPWAImages");var KHt=a(async(e,t,r)=>{let n=NPe(e,t);return K.CLOUDFRONT_CDN?(r&&(n=`${n}?etag=${r}`),rE(n)):await gh(K.GLOBAL_BUCKET_NAME,n)},"getGlobalFileUrl"),NPe=a((e,t)=>{let r=`${e}/${t}`;return K.MULTI_TENANCY&&(r=`${Pt()}/${r}`),r},"getGlobalFileS3Key");async function QHt(e){return!e||!e.length?[]:await Promise.all(e.map(async t=>{let r=await YHt(t),n=await JHt(t);return{...t,jsUrl:r,iconUrl:n}}))}a(QHt,"enrichPluginURLs");async function YHt(e){let t=FPe(e);return LPe(t)}a(YHt,"getPluginJSUrl");async function JHt(e){let t=UPe(e);if(t)return LPe(t)}a(JHt,"getPluginIconUrl");async function LPe(e){return K.CLOUDFRONT_CDN?rE(e):await gh(K.PLUGIN_BUCKET_NAME,e)}a(LPe,"getPluginUrl");function FPe(e){return jPe(e,"plugin.min.js")}a(FPe,"getPluginJSKey");function UPe(e){let t=e.iconUrl?"icon.svg":e.iconFileName;if(t)return jPe(e,t)}a(UPe,"getPluginIconKey");function jPe(e,t){return`${MPe(e.name)}/${t}`}a(jPe,"getPluginS3Key");function MPe(e){let t=`${e}`;return K.MULTI_TENANCY&&(t=`${Pt()}/${t}`),K.CLOUDFRONT_CDN&&(t=`plugins/${t}`),t}a(MPe,"getPluginS3Dir");var $Pe="budibase.log",zPe="budibase-logs-history.txt",WPe=Z9.default.join(ay(),"systemlogs");function BPe(e){return Z9.default.join(WPe,e)}a(BPe,"getFullPath");function GPe(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(GPe,"getSingleFileMaxSizeInfo");function e7(){let e=GPe(K.ROLLING_LOG_MAX_SIZE);return qPe.createStream($Pe,{size:e?.size,path:WPe,maxFiles:e?.totalHistoryFiles||1,immutable:!0,history:zPe,initialRotation:!1})}a(e7,"localFileDestination");function XHt(){let e=[],t=BPe(zPe);if(iA.default.existsSync(t)){let i=iA.default.readFileSync(t,"utf-8").split(`
|
|
535
|
-
`);for(let o of i.filter(s=>s))e.push(iA.default.readFileSync(o))}return e.push(iA.default.readFileSync(BPe($Pe))),Buffer.concat(e.map(n=>new Uint8Array(n)))}a(XHt,"getLogReadStream");function ZHt(e){return typeof e=="object"&&e!==null&&!(e instanceof Error)}a(ZHt,"isPlainObject");function eVt(e){return e instanceof Error}a(eVt,"isError");function tVt(e){return typeof e=="string"}a(tVt,"isMessage");var Th;if(!K.DISABLE_PINO_LOGGER){let e=K.LOG_LEVEL,t={level:e,formatters:{level:c=>({level:c.toUpperCase()}),bindings:()=>K.SELF_HOSTED?{service:K.SERVICE_NAME}:{}},timestamp:()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`},r=[];r.push(K.isDev()?{stream:(0,HPe.default)({singleLine:!0}),level:e}:{stream:process.stdout,level:e}),K.SELF_HOSTED&&r.push({stream:e7(),level:e}),Th=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=>{tVt(y)&&(p=`${p} ${y}`.trimStart()),ZHt(y)&&f.push(y),eVt(y)&&(l=y)});let d=u(),h={};h={tenantId:i(),appId:o(),automationId:s(),identityId:d?._id,identityType:d?.type,correlationId:dz()};let m=r7.default.scope().active();m&&r7.default.inject(m.context(),VPe.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);Th?.info(l,f)},console.info=(...c)=>{let[l,f]=n(c);Th?.info(l,f)},console.warn=(...c)=>{let[l,f]=n(c);Th?.warn(l,f)},console.error=(...c)=>{let[l,f]=n(c);Th?.error(l,f)},console.trace=(...c)=>{let[l,f]=n(c);l.err||(l.err=new Error),Th?.trace(l,f)},console.debug=(...c)=>{let[l,f]=n(c);Th?.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=L$()}catch{}return c},"getAutomationId"),u=a(()=>{let c;try{c=Bf()}catch{}return c},"getIdentity")}var sL=Th;var rVt=["AccountError"];function nVt(e){return e&&e.suppressAlert}a(nVt,"isSuppressed");function fy(e,t){t&&rVt.includes(t.name)&&nVt(t)||console.error(`bb-alert: ${e}`,t)}a(fy,"logAlert");function iVt(e,t,r,n){e=`${e} - db: ${t} - doc: ${r} - error: `,fy(e,n)}a(iVt,"logAlertWithInfo");function nE(e,t){console.warn(`bb-warn: ${e}`,t)}a(nE,"logWarn");var uL=class extends Error{static{a(this,"UnretriableError")}constructor(t){super(t),this.name="PermanentError"}},n7=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 xc(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(),fy(`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 aVt=100,cL,aA=class e{static{a(this,"DocWritethroughProcessor")}static get queue(){return e._queue||(e._queue=new xc("docWritethroughQueue",{jobOptions:{attempts:aVt}})),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)}},i7=class{static{a(this,"DocWritethrough")}constructor(t,r){this.db=t,this._docId=r}get docId(){return this._docId}async patch(t){await aA.queue.add({dbName:this.db.name,docId:this.docId,data:t})}};function KPe(){return cL=new aA().init(),cL}a(KPe,"init");function oVt(){return cL||KPe()}a(oVt,"getProcessor");var sA={};oe(sA,{CacheKey:()=>aa,TTL:()=>hy,bustCache:()=>iE,destroy:()=>oA,get:()=>my,keys:()=>lL,store:()=>gp,withCache:()=>Ah,withCacheWithDynamicTTL:()=>QPe});function jl(e){let t=Pt();return`${e}:${t}`}a(jl,"generateTenantKey");var py=class{static{a(this,"BaseCache")}constructor(t=void 0){this.client=t}async getClient(){return this.client?this.client:await W$()}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 dy=new py,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}`},hy=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(hy||{}),lL=a((...e)=>dy.keys(...e),"keys"),my=a((...e)=>dy.get(...e),"get"),gp=a((...e)=>dy.store(...e),"store"),oA=a((...e)=>dy.delete(...e),"destroy"),Ah=a((...e)=>dy.withCache(...e),"withCache"),QPe=a((...e)=>dy.withCacheWithDynamicTTL(...e),"withCacheWithDynamicTTL"),iE=a((...e)=>dy.bustCache(...e),"bustCache");var s7={};oe(s7,{createCode:()=>uVt,deleteCode:()=>lVt,getCode:()=>cVt,getExistingInvites:()=>o7,getInviteCodes:()=>JPe,updateCode:()=>sVt});var YPe=mi.fromDays(7).toSeconds();async function sVt(e,t){await(await vg()).store(e,t,YPe)}a(sVt,"updateCode");async function uVt(e,t){let r=Cn();return await(await vg()).store(r,{email:e,info:t},YPe),r}a(uVt,"createCode");async function cVt(e){let r=await(await vg()).get(e);if(!r)throw"Invitation is not valid or has expired, please request a new one.";return r}a(cVt,"getCode");async function lVt(e){await(await vg()).delete(e)}a(lVt,"deleteCode");async function JPe(){let r=(await(await vg()).scan()).map(i=>({...i.value,code:i.key}));if(!K.MULTI_TENANCY)return r;let n=Pt();return r.filter(i=>n===i.info.tenantId)}a(JPe,"getInviteCodes");async function o7(e){return(await JPe()).filter(t=>e.includes(t.email))}a(o7,"getExistingInvites");var u7={};oe(u7,{createCode:()=>pVt,getCode:()=>dVt,invalidateCode:()=>hVt});var fVt=mi.fromHours(1).toSeconds();async function pVt(e,t){let r=Cn();return await(await Tx()).store(r,{userId:e,info:t},fVt),r}a(pVt,"createCode");async function dVt(e){let r=await(await Tx()).get(e);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}a(dVt,"getCode");async function hVt(e){await(await Tx()).delete(e)}a(hVt,"invalidateCode");var kh={};oe(kh,{getUser:()=>NA,getUsers:()=>jJt,invalidateUser:()=>LA});var Ml={};oe(Ml,{addSsoUser:()=>ZPe,addUser:()=>wVt,getUserDoc:()=>XPe,lookupTenantId:()=>mVt,removeUser:()=>EVt,updateUserDoc:()=>gVt});function gy(){return Io(bn.PLATFORM_INFO.name)}a(gy,"getPlatformDB");async function mVt(e){return K.MULTI_TENANCY?(await XPe(e)).tenantId:pi}a(mVt,"lookupTenantId");async function XPe(e){return gy().get(e)}a(XPe,"getUserDoc");async function gVt(e){await gy().put(e)}a(gVt,"updateUserDoc");function yVt(e,t){return{_id:e,tenantId:t}}a(yVt,"newUserIdDoc");function bVt(e,t,r){return{_id:t,userId:e,tenantId:r}}a(bVt,"newUserEmailDoc");function vVt(e,t,r,n){return{_id:e,userId:r,email:t,tenantId:n}}a(vVt,"newUserSsoIdDoc");async function c7(e,t){let r=gy(),n;try{await r.get(e)}catch(i){if(i.status===404)n=t(),await r.put(n);else throw i}}a(c7,"addUserDoc");async function ZPe(e,t,r,n){return c7(e,()=>vVt(e,t,r,n))}a(ZPe,"addSsoUser");async function wVt(e,t,r,n){let i=[c7(t,()=>yVt(t,e)),c7(r,()=>bVt(t,r,e))];n&&i.push(ZPe(n,r,t,e)),await Promise.all(i)}a(wVt,"addUser");async function EVt(e){let t=gy(),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(EVt,"removeUser");var eNe=te(require("node-fetch"));var uA=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";Ux.setHeader(n.headers);let o={method:t,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,eNe.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 tNe=new uA(K.INTERNAL_ACCOUNT_PORTAL_URL),rNe=K.SELF_HOSTED||K.DISABLE_ACCOUNT_PORTAL,yy=a(async e=>{if(rNe)return;let t={email:e},r=await tNe.post("/api/accounts/search",{body:t,headers:{"x-budibase-api-key":K.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${e}`);return(await r.json())[0]},"getAccount"),cA=a(async e=>{if(rNe)return;let t={tenantId:e},r=await tNe.post("/api/accounts/search",{body:t,headers:{"x-budibase-api-key":K.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${e}`);return(await r.json())[0]},"getAccountByTenantId");var nr={};oe(nr,{UserDB:()=>$l,addAppBuilder:()=>NJt,bulkGetGlobalUsersById:()=>jL,bulkUpdateGlobalUsers:()=>DA,cleanseUserObject:()=>V7,creatorsInList:()=>wy,doesUserExist:()=>IJt,getAccountHolderFromUsers:()=>FL,getAllUserIds:()=>RJt,getAllUsers:()=>OJt,getById:()=>Ey,getCreatorCount:()=>DJt,getExistingAccounts:()=>uE,getExistingPlatformUsers:()=>I2e,getExistingTenantUsers:()=>O2e,getFirstPlatformUser:()=>IA,getGlobalUserByAppPage:()=>q2e,getGlobalUserByEmail:()=>Mc,getPlatformUsers:()=>DL,getUserCount:()=>CJt,hasAdminPermissions:()=>Oh,hasAppBuilderPermissions:()=>D2e,hasBuilderPermissions:()=>ss,isAdmin:()=>ql,isAdminOrBuilder:()=>C2e,isAdminOrWorkspaceBuilder:()=>PL,isBuilder:()=>fE,isCreatorAsync:()=>kA,isCreatorSync:()=>NL,isGlobalBuilder:()=>k2e,paginatedUsers:()=>z2e,removeAppBuilder:()=>LJt,removePortalUserPermissions:()=>PJt,searchExistingEmails:()=>$7,searchGlobalUsersByApp:()=>ML,searchGlobalUsersByAppAccess:()=>H7,searchGlobalUsersByEmail:()=>$2e,validateUniqueUser:()=>LL});var Tt={};oe(Tt,{account:()=>t2e,action:()=>r2e,ai:()=>s2e,analytics:()=>pL,app:()=>n2e,auditLog:()=>_2e,auth:()=>OL,automation:()=>i2e,backfill:()=>y2e,backfillCache:()=>RL,backup:()=>w2e,datasource:()=>a2e,email:()=>o2e,environmentVariable:()=>E2e,group:()=>b2e,identification:()=>jc,initAsyncEvents:()=>lJt,installation:()=>_A,layout:()=>c2e,license:()=>u2e,org:()=>l2e,plugin:()=>v2e,processors:()=>p7,publishEvent:()=>fe,query:()=>f2e,role:()=>OA,rowAction:()=>S2e,rows:()=>d2e,screen:()=>p2e,serve:()=>m2e,shutdown:()=>fJt,table:()=>h2e,user:()=>us,view:()=>g2e,workspace:()=>x2e});var p7={};oe(p7,{analyticsProcessor:()=>cNe,init:()=>CVt,processors:()=>yp});var pL={};oe(pL,{enabled:()=>fL});var fL=a(async()=>dL(),"enabled");var sNe=te(z9());var _Vt=a(e=>e==="served:builder"||e==="served:app:preview"||e==="served:app","isRateLimited"),SVt=a(e=>e==="served:app:preview"||e==="served:app","isPerApp");var iNe={"served:app":"calendarDay","served:app:preview":"calendarDay","served:builder":"calendarDay"},aNe=a(async e=>{if(!_Vt(e))return!1;let t=await xVt(e);if(t){let r=new Date(t.timestamp);switch(iNe[e]){case"calendarDay":return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),Date.now()>r.getTime()?(await nNe(e,{timestamp:Date.now()}),!1):!0}}else return await nNe(e,{timestamp:Date.now()}),!1},"limited"),oNe=a(e=>{let t=`${aa.EVENTS_RATE_LIMIT}:${e}`;return SVt(e)&&(t=t+":"+Zo()),t},"eventKey"),xVt=a(async e=>{let t=oNe(e);return await my(t)},"readEvent"),nNe=a(async(e,t)=>{let r=oNe(e),n=iNe[e],i;switch(n){case"calendarDay":i=86400}await gp(r,t,i)},"recordEvent");var AVt=["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 sNe.PostHog(t)}async processEvent(t,r,n,i){if(AVt.includes(t)||await aNe(t))return;n=this.clearPIIProperties(n),n.version=K.VERSION,n.service=K.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 uNe=fA;var RVt=["installation:version:upgraded","installation:version:downgraded"],OVt=["installation","tenant"],pA=class{static{a(this,"AnalyticsProcessor")}constructor(){K.POSTHOG_TOKEN&&!K.isTest()&&(this.posthog=new uNe(K.POSTHOG_TOKEN))}async processEvent(t,r,n,i){!RVt.includes(t)&&!await fL()||this.posthog&&await this.posthog.processEvent(t,r,n,i)}async identify(t,r){!OVt.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 f7=K.SELF_HOSTED&&!K.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 aE=class e{static{a(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(t){e.auditLogsEnabled=!0;let r=t;return e.auditLogQueue=new xc("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={};K.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&&sz(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 cNe=new pA,IVt=new dA,kVt=new aE;function CVt(e){return aE.init(e)}a(CVt,"init");var yp=new hA([cNe,IVt,kVt]);var Rh={};oe(Rh,{checkInstallVersion:()=>IKt,getInstall:()=>SA,getInstallFromDB:()=>P7});var D7=te(C7());var SA=a(async()=>Ah(aa.INSTALLATION,86400,P7,{useTenancy:!1}),"getInstall");async function RKt(e){let t={_id:bn.PLATFORM_INFO.docs.install,installId:Cn(),version:K.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(RKt,"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 RKt(e);else throw r}return t}),"getInstallFromDB"),OKt=a(async e=>{try{await Fs(bn.PLATFORM_INFO.name,async t=>{let r=await SA();r.version=e,await t.put(r),await iE(aa.INSTALLATION)})}catch(t){if(t.status===409)return!1;throw t}return!0},"updateVersion"),IKt=a(async()=>{let e=await SA(),t=e.version,r=K.VERSION;try{if(t!==r){let n=D7.default.gt(r,t),i=D7.default.lt(r,t);await OKt(r)&&(await m0({_id:e.installId,type:"installation"},async()=>{n?await _A.upgraded(t,r):i&&await _A.downgraded(t,r)}),await jc.identifyInstallationGroup(e.installId))}}catch(n){n?.message?.includes("Invalid Version")?fy(`Invalid version "${r}" - is it semver?`):fy("Failed to retrieve version",n)}},"checkInstallVersion");var kKt=a(async()=>{let e=L4(),t=AA(),r;if(e?r=e.type:r="tenant",r==="installation"){let n=await vy(),i=xA();return{id:XLe(n,r),hosting:i,type:r,installationId:n,environment:t}}else if(r==="tenant"){let n=await vy(),i=await AL(Pt()),o=xA();return{id:XLe(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 vy(),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"),CKt=a(async(e,t)=>{let r=e,n="installation",i=xA(),o=K.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"),DKt=a(async(e,t,r,n=K.VERSION)=>{let i=await AL(e),o="tenant",s=await vy(),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"),PKt=a(async(e,t,r)=>{let n=e._id,i=await AL(e.tenantId),o="user",s=ss(e),u=Oh(e),c;Wb(e)&&(c=e.providerType);let f=(await uE([e.email])).length>0,p=!!t&&f&&t.verified,d=await vy(),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"),NKt=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 vy(),l=AA();if(tk(e)){let p=await Mc(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(()=>K.isDev()?"development":K.DEPLOYMENT_ENVIRONMENT,"getDeploymentEnvironment"),xA=a(()=>K.SELF_HOSTED?"self":"cloud","getHostingFromEnv"),vy=a(async()=>LKt()?"account-portal":(await SA()).installId,"getInstallationId"),AL=a(async e=>K.SELF_HOSTED?ZLe(e):e,"getEventTenantId"),ZLe=a(async e=>Xo(e,()=>Ah(aa.UNIQUE_TENANT_ID,86400,async()=>{let t=Ar(),r=await tE(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${Cn()}_${e}`,r.config.uniqueTenantId=n,r.config.createdVersion=K.VERSION,await t.put(r),n)})),"getUniqueTenantId"),LKt=a(()=>K.SERVICE==="account-portal","isAccountPortal"),XLe=a((e,t)=>t==="installation"||t==="tenant"?`$${t}_${e}`:e,"formatDistinctId"),jc={getCurrentIdentity:kKt,identifyInstallationGroup:CKt,identifyTenantGroup:DKt,identifyUser:PKt,identifyAccount:NKt,identify:TA,identifyGroup:L7,getInstallationId:vy,getUniqueTenantId:ZLe};var RL={};oe(RL,{end:()=>UKt,isAlreadySent:()=>j7,isBackfillingEvent:()=>U7,recordEvent:()=>F7,start:()=>FKt});var FKt=a(async e=>MKt({eventWhitelist:e}),"start"),F7=a(async(e,t)=>{let r=M7(e,t);await gp(r,t,void 0,{useTenancy:!1})},"recordEvent"),UKt=a(async()=>{await BKt(),await qKt()},"end"),jKt=a(async()=>my(aa.BACKFILL_METADATA),"getBackfillMetadata"),MKt=a(async e=>gp(aa.BACKFILL_METADATA,e),"saveBackfillMetadata"),BKt=a(async()=>{await oA(aa.BACKFILL_METADATA)},"deleteBackfillMetadata"),qKt=a(async()=>{let e=M7(),t=await lL(e);for(let r of t)await oA(r,{useTenancy:!1})},"clearEvents"),U7=a(async e=>{let r=(await jKt())?.eventWhitelist;return!!(r&&r.includes(e))},"isBackfillingEvent"),j7=a(async(e,t)=>{let r=M7(e,t);return!!await my(r,{useTenancy:!1})},"isAlreadySent"),$Kt={"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=$Kt[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 xc("systemEventQueue",{jobTags:e=>({"event.name":e.event})})}a(B7,"init");async function e2e(e){RA||B7();let{event:t,identity:r}=e;Xoe.indexOf(t)!==-1&&r.tenantId&&await RA.add(e)}a(e2e,"publishAsyncEvent");var fe=a(async(e,t,r,n)=>{let i=n||await jc.getCurrentIdentity();if(!(n?!1:await U7(e))){await e2e({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 zKt(e,t){let r={tenantId:e.tenantId};await fe("account:created",r,void 0,t)}a(zKt,"created");async function WKt(e){let t={tenantId:e.tenantId};await fe("account:deleted",t)}a(WKt,"deleted");async function GKt(e){let t={tenantId:e.tenantId};await fe("account:verified",t)}a(GKt,"verified");var t2e={created:zKt,deleted:WKt,verified:GKt};async function HKt(e,t){await fe("action:automation_step:executed",e,t)}a(HKt,"automationStepExecuted");async function VKt(e,t){await fe("action:crud:executed",e,t)}a(VKt,"crudExecuted");async function KKt(e,t){await fe("action:ai_agent:executed",e,t)}a(KKt,"aiAgentExecuted");var r2e={aiAgentExecuted:KKt,automationStepExecuted:HKt,crudExecuted:VKt};var QKt=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 YKt(e){let t={appId:e.appId,version:e.version,audited:{name:e.name}};await fe("app:updated",t)}a(YKt,"updated");async function JKt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:deleted",t)}a(JKt,"deleted");async function XKt(e,t){let r={appId:e.appId,audited:{name:e.name}};await fe("app:published",r,t)}a(XKt,"published");async function ZKt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:unpublished",t)}a(ZKt,"unpublished");async function eQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:file:imported",t)}a(eQt,"fileImported");async function tQt(e,t){let r={duplicateAppId:t,appId:e.appId,audited:{name:e.name}};await fe("app:duplicated",r)}a(tQt,"duplicated");async function rQt(e,t){let r={appId:e.appId,templateKey:t,audited:{name:e.name}};await fe("app:template:imported",r)}a(rQt,"templateImported");async function nQt(e,t,r){let n={appId:e.appId,currentVersion:t,updatedToVersion:r,audited:{name:e.name}};await fe("app:version:updated",n)}a(nQt,"versionUpdated");async function iQt(e,t,r){let n={appId:e.appId,currentVersion:t,revertedToVersion:r,audited:{name:e.name}};await fe("app:version:reverted",n)}a(iQt,"versionReverted");async function aQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:reverted",t)}a(aQt,"reverted");async function oQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:exported",t)}a(oQt,"exported");var n2e={created:QKt,updated:YKt,deleted:JKt,published:XKt,unpublished:ZKt,fileImported:eQt,duplicated:tQt,templateImported:rQt,versionUpdated:nQt,versionReverted:iQt,reverted:aQt,exported:oQt};async function sQt(e,t){let n={userId:(await jc.getCurrentIdentity()).id,source:e,audited:{email:t}};await fe("auth:login",n)}a(sQt,"login");async function uQt(e){let r={userId:(await jc.getCurrentIdentity()).id,audited:{email:e}};await fe("auth:logout",r)}a(uQt,"logout");async function cQt(e,t){let r={type:e};await fe("auth:sso:created",r,t)}a(cQt,"SSOCreated");async function lQt(e){let t={type:e};await fe("auth:sso:updated",t)}a(lQt,"SSOUpdated");async function fQt(e,t){let r={type:e};await fe("auth:sso:activated",r,t)}a(fQt,"SSOActivated");async function pQt(e){let t={type:e};await fe("auth:sso:deactivated",t)}a(pQt,"SSODeactivated");var OL={login:sQt,logout:uQt,SSOCreated:cQt,SSOUpdated:lQt,SSOActivated:fQt,SSODeactivated:pQt};async function dQt(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(dQt,"created");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:trigger:updated",t)}a(hQt,"triggerUpdated");async function mQt(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(mQt,"deleted");async function gQt(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(gQt,"tested");var yQt=a(async(e,t)=>{let r={count:e};await fe("automations:run",r,t)},"run");async function bQt(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(bQt,"stepCreated");async function vQt(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(vQt,"stepDeleted");var i2e={created:dQt,triggerUpdated:hQt,deleted:mQt,tested:gQt,run:yQt,stepCreated:bQt,stepDeleted:vQt};function q7(e){return!Object.values(ma).includes(e.source)}a(q7,"isCustom");async function wQt(e,t){let r={datasourceId:e._id,source:e.source,custom:q7(e)};await fe("datasource:created",r,t)}a(wQt,"created");async function EQt(e){let t={datasourceId:e._id,source:e.source,custom:q7(e)};await fe("datasource:updated",t)}a(EQt,"updated");async function _Qt(e){let t={datasourceId:e._id,source:e.source,custom:q7(e)};await fe("datasource:deleted",t)}a(_Qt,"deleted");var a2e={created:wQt,updated:EQt,deleted:_Qt};async function SQt(e){let t={};await fe("email:smtp:created",t,e)}a(SQt,"SMTPCreated");async function xQt(){let e={};await fe("email:smtp:updated",e)}a(xQt,"SMTPUpdated");var o2e={SMTPCreated:SQt,SMTPUpdated:xQt};async function TQt(e){let t={};await fe("ai:config:created",t,e)}a(TQt,"AIConfigCreated");async function AQt(){let e={};await fe("ai:config:updated",e)}a(AQt,"AIConfigUpdated");var s2e={AIConfigCreated:TQt,AIConfigUpdated:AQt};async function RQt(e,t){let r={accountId:e.accountId,...t};await fe("license:plan:changed",r)}a(RQt,"planChanged");async function OQt(e){let t={accountId:e.accountId};await fe("license:activated",t)}a(OQt,"activated");async function IQt(e){let t={accountId:e.accountId};await fe("license:checkout:opened",t)}a(IQt,"checkoutOpened");async function kQt(e){let t={accountId:e.accountId};await fe("license:checkout:success",t)}a(kQt,"checkoutSuccess");async function CQt(e){let t={accountId:e.accountId};await fe("license:portal:opened",t)}a(CQt,"portalOpened");async function DQt(e){let t={accountId:e.accountId};await fe("license:payment:failed",t)}a(DQt,"paymentFailed");async function PQt(e){let t={accountId:e.accountId};await fe("license:payment:recovered",t)}a(PQt,"paymentRecovered");var u2e={planChanged:RQt,activated:OQt,checkoutOpened:IQt,checkoutSuccess:kQt,portalOpened:CQt,paymentFailed:DQt,paymentRecovered:PQt};async function NQt(e,t){let r={layoutId:e._id};await fe("layout:created",r,t)}a(NQt,"created");async function LQt(e){let t={layoutId:e};await fe("layout:deleted",t)}a(LQt,"deleted");var c2e={created:NQt,deleted:LQt};async function FQt(e){let t={};await fe("org:info:name:updated",t,e)}a(FQt,"nameUpdated");async function UQt(e){let t={};await fe("org:info:logo:updated",t,e)}a(UQt,"logoUpdated");async function jQt(e){let t={};await fe("org:platformurl:updated",t,e)}a(jQt,"platformURLUpdated");async function MQt(){let e={};await fe("analytics:opt:out",e)}a(MQt,"analyticsOptOut");async function BQt(){let e={};await fe("analytics:opt:out",e)}a(BQt,"analyticsOptIn");var l2e={nameUpdated:FQt,logoUpdated:UQt,platformURLUpdated:jQt,analyticsOptOut:MQt,analyticsOptIn:BQt};var qQt=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"),$Qt=a(async(e,t)=>{let r={queryId:t._id,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:updated",r)},"updated"),zQt=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"),WQt=a(async(e,t,r)=>{let n={datasourceId:e._id,source:e.source,count:r,importSource:t};await fe("query:import",n)},"imported"),GQt=a(async(e,t)=>{let r={count:e};await fe("queries:run",r,t)},"run"),HQt=a(async(e,t)=>{let r={queryId:t.queryId,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:previewed",r)},"previewed"),f2e={created:qQt,updated:$Qt,deleted:zQt,imported:WQt,run:GQt,previewed:HQt};async function VQt(e,t){let r={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:created",r,t)}a(VQt,"created");async function KQt(e){let t={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:updated",t)}a(KQt,"updated");async function QQt(e){let t={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:deleted",t)}a(QQt,"deleted");async function YQt(e,t,r){let n={userId:e._id,roleId:t};await fe("role:assigned",n,r)}a(YQt,"assigned");async function JQt(e,t){let r={userId:e._id,roleId:t};await fe("role:unassigned",r)}a(JQt,"unassigned");var OA={created:VQt,updated:KQt,deleted:QQt,assigned:YQt,unassigned:JQt};async function XQt(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(XQt,"created");async function ZQt(e){let t={layoutId:e.layoutId,screenId:e._id,roleId:e.routing.roleId,audited:{name:e.routing?.route}};await fe("screen:deleted",t)}a(ZQt,"deleted");var p2e={created:XQt,deleted:ZQt};var eYt=a(async(e,t)=>{let r={count:e};await fe("rows:created",r,t)},"created"),tYt=a(async(e,t)=>{let r={tableId:e._id,count:t};await fe("rows:imported",r)},"imported"),d2e={created:eYt,imported:tYt};async function rYt(e,t){let r={tableId:e._id,audited:{name:e.name}};await fe("table:created",r,t)}a(rYt,"created");async function nYt(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(nYt,"updated");async function iYt(e,t){let r={tableId:e._id,audited:{name:e.name},appId:t};await fe("table:deleted",r)}a(iYt,"deleted");async function aYt(e,t){let r={tableId:e._id,format:t,audited:{name:e.name}};await fe("table:exported",r)}a(aYt,"exported");async function oYt(e){let t={tableId:e._id,audited:{name:e.name}};await fe("table:imported",t)}a(oYt,"imported");var h2e={created:rYt,updated:nYt,deleted:iYt,exported:aYt,imported:oYt};async function sYt(e){let t={timezone:e};await fe("served:builder",t)}a(sYt,"servedBuilder");async function uYt(e,t,r){let n={appVersion:e.version,timezone:t,embed:r===!0};await fe("served:app",n)}a(uYt,"servedApp");async function cYt(e,t){let r={appId:e.appId,appVersion:e.version,timezone:t};await fe("served:app:preview",r)}a(cYt,"servedAppPreview");var m2e={servedBuilder:sYt,servedApp:uYt,servedAppPreview:cYt};async function lYt(e,t){let r={userId:e._id,viaScim:_c(),audited:{email:e.email}};await fe("user:created",r,t)}a(lYt,"created");async function fYt(e){let t={userId:e._id,viaScim:_c(),audited:{email:e.email}};await fe("user:updated",t)}a(fYt,"updated");async function pYt(e){let t={userId:e._id,viaScim:_c(),audited:{email:e.email}};await fe("user:deleted",t)}a(pYt,"deleted");async function dYt(e,t){let r={userId:e._id,audited:{email:e.email}};await fe("user:admin:assigned",r,t)}a(dYt,"permissionAdminAssigned");async function hYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:admin:removed",t)}a(hYt,"permissionAdminRemoved");async function mYt(e,t){let r={userId:e._id,audited:{email:e.email}};await fe("user:builder:assigned",r,t)}a(mYt,"permissionBuilderAssigned");async function gYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:builder:removed",t)}a(gYt,"permissionBuilderRemoved");async function yYt(e){let t={audited:{email:e}};await fe("user:invited",t)}a(yYt,"invited");async function bYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:invite:accepted",t)}a(bYt,"inviteAccepted");async function vYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:force:reset",t)}a(vYt,"passwordForceReset");async function wYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:updated",t)}a(wYt,"passwordUpdated");async function EYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:reset:requested",t)}a(EYt,"passwordResetRequested");async function _Yt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:reset",t)}a(_Yt,"passwordReset");async function SYt(e){let t={users:e};await fe("user:data:collaboration",t)}a(SYt,"dataCollaboration");var us={created:lYt,updated:fYt,deleted:pYt,permissionAdminAssigned:dYt,permissionAdminRemoved:hYt,permissionBuilderAssigned:mYt,permissionBuilderRemoved:gYt,invited:yYt,inviteAccepted:bYt,passwordForceReset:vYt,passwordUpdated:wYt,passwordResetRequested:EYt,passwordReset:_Yt,dataCollaboration:SYt};async function xYt(e,t){let r={name:e.name,type:e.type,tableId:e.tableId};await fe("view:created",r,t)}a(xYt,"created");async function TYt(e){let t={tableId:e.tableId};await fe("view:updated",t)}a(TYt,"updated");async function AYt(e,t){let r={...Ye.views.isV2(e)?{id:e.id,tableId:e.tableId,appId:t}:{}};await fe("view:deleted",r)}a(AYt,"deleted");async function RYt(e,t){let r={tableId:e._id,format:t};await fe("view:exported",r)}a(RYt,"exported");async function OYt({tableId:e,filterGroups:t},r){let n={tableId:e,filterGroups:t};await fe("view:filter:created",n,r)}a(OYt,"filterCreated");async function IYt({tableId:e,filterGroups:t}){let r={tableId:e,filterGroups:t};await fe("view:filter:updated",r)}a(IYt,"filterUpdated");async function kYt(e){let t={tableId:e.tableId};await fe("view:filter:deleted",t)}a(kYt,"filterDeleted");async function CYt({tableId:e,calculationType:t},r){let n={tableId:e,calculation:t};await fe("view:calculation:created",n,r)}a(CYt,"calculationCreated");async function DYt(e){let t={tableId:e.tableId,calculation:e.calculation};await fe("view:calculation:updated",t)}a(DYt,"calculationUpdated");async function PYt(e){let t={tableId:e.tableId,calculation:e.calculation};await fe("view:calculation:deleted",t)}a(PYt,"calculationDeleted");async function NYt(e,t){let r={tableId:e};await fe("view:join:created",r,t)}a(NYt,"viewJoinCreated");var g2e={created:xYt,updated:TYt,deleted:AYt,exported:RYt,filterCreated:OYt,filterUpdated:IYt,filterDeleted:kYt,calculationCreated:CYt,calculationUpdated:DYt,calculationDeleted:PYt,viewJoinCreated:NYt};async function LYt(e){let t={currentVersion:e};await fe("installation:version:checked",t)}a(LYt,"versionChecked");async function FYt(e,t){let r={from:e,to:t};await fe("installation:version:upgraded",r)}a(FYt,"upgraded");async function UYt(e,t){let r={from:e,to:t};await fe("installation:version:downgraded",r)}a(UYt,"downgraded");async function jYt(){let e={};await fe("installation:firstStartup",e)}a(jYt,"firstStartup");var _A={versionChecked:LYt,upgraded:FYt,downgraded:UYt,firstStartup:jYt};var cE=!K.SELF_HOSTED&&!K.isDev();async function MYt(e){cE||await fe("app:backfill:succeeded",e)}a(MYt,"appSucceeded");async function BYt(e){if(cE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("app:backfill:failed",t)}a(BYt,"appFailed");async function qYt(e){cE||await fe("tenant:backfill:succeeded",e)}a(qYt,"tenantSucceeded");async function $Yt(e){if(cE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("tenant:backfill:failed",t)}a($Yt,"tenantFailed");async function zYt(){if(cE)return;let e={};await fe("installation:backfill:succeeded",e)}a(zYt,"installationSucceeded");async function WYt(e){if(cE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("installation:backfill:failed",t)}a(WYt,"installationFailed");var y2e={appSucceeded:MYt,appFailed:BYt,tenantSucceeded:qYt,tenantFailed:$Yt,installationSucceeded:zYt,installationFailed:WYt};async function GYt(e,t){let r={groupId:e._id,viaScim:_c(),audited:{name:e.name}};await fe("user_group:created",r,t)}a(GYt,"created");async function HYt(e){let t={groupId:e._id,viaScim:_c(),audited:{name:e.name}};await fe("user_group:updated",t)}a(HYt,"updated");async function VYt(e){let t={groupId:e._id,viaScim:_c(),audited:{name:e.name}};await fe("user_group:deleted",t)}a(VYt,"deleted");async function KYt(e,t){let r={count:e,groupId:t._id,viaScim:_c(),audited:{name:t.name}};await fe("user_group:user_added",r)}a(KYt,"usersAdded");async function QYt(e,t){let r={count:e,groupId:t._id,viaScim:_c(),audited:{name:t.name}};await fe("user_group:users_deleted",r)}a(QYt,"usersDeleted");async function YYt(e){let t={groupId:e,onboarding:!0};await fe("user_group:onboarding_added",t)}a(YYt,"createdOnboarding");async function JYt(e){let t={permissions:e.roles,groupId:e._id,audited:{name:e.name}};await fe("user_group:permissions_edited",t)}a(JYt,"permissionsEdited");var b2e={created:GYt,updated:HYt,deleted:VYt,usersAdded:KYt,usersDeleted:QYt,createdOnboarding:YYt,permissionsEdited:JYt};async function XYt(e){let t={type:e.schema.type,name:e.name,description:e.description,version:e.version};await fe("plugin:init",t)}a(XYt,"init");async function ZYt(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(ZYt,"imported");async function eJt(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(eJt,"deleted");var v2e={init:XYt,imported:ZYt,deleted:eJt};async function tJt(e){let t={appId:e.appId,restoreId:e._id,backupCreatedAt:e.timestamp,name:e.name};await fe("app:backup:restored",t)}a(tJt,"appBackupRestored");async function rJt(e,t,r,n,i){let o={appId:e,backupId:t,type:r,trigger:n,name:i};await fe("app:backup:triggered",o)}a(rJt,"appBackupTriggered");var w2e={appBackupRestored:tJt,appBackupTriggered:rJt};async function nJt(e,t){let r={name:e,environments:t};await fe("environment_variable:created",r)}a(nJt,"created");async function iJt(e){let t={name:e};await fe("environment_variable:deleted",t)}a(iJt,"deleted");async function aJt(e){let t={userId:e};await fe("environment_variable:upgrade_panel_opened",t)}a(aJt,"upgradePanelOpened");var E2e={created:nJt,deleted:iJt,upgradePanelOpened:aJt};async function oJt(e){let t={filters:e};await fe("audit_log:filtered",t)}a(oJt,"filtered");async function sJt(e){let t={filters:e};await fe("audit_log:downloaded",t)}a(sJt,"downloaded");var _2e={filtered:oJt,downloaded:sJt};async function uJt(e,t){await fe("row_action:created",e,t)}a(uJt,"created");var S2e={created:uJt};async function cJt(e,t){let r={workspaceAppId:e._id,audited:{name:e.name},appId:t};await fe("workspace_app:deleted",r)}a(cJt,"deleted");var x2e={deleted:cJt};function lJt(){}a(lJt,"initAsyncEvents");var fJt=a(async()=>{await yp.shutdown(),console.log("Events shutdown")},"shutdown");var Ih={};oe(Ih,{creatorsInList:()=>wy,getAccountHolderFromUsers:()=>FL,hasAdminPermissions:()=>Oh,hasAppBuilderPermissions:()=>D2e,hasBuilderPermissions:()=>ss,isAdmin:()=>ql,isAdminOrBuilder:()=>C2e,isAdminOrWorkspaceBuilder:()=>PL,isBuilder:()=>fE,isCreatorAsync:()=>kA,isCreatorSync:()=>NL,isGlobalBuilder:()=>k2e,validateUniqueUser:()=>LL});var IL=class extends Error{constructor(r,n){super(r);this.code=n}static{a(this,"BudibaseError")}},A2e=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 Ba=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}}},lE=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")}},bp=class extends Error{static{a(this,"EmailUnavailableError")}constructor(t){super(`Email already in use: '${t}'`)}};async function $7(e){let t=[],r=await O2e(e);t.push(...r.map(s=>s.email));let n=await I2e(e);t.push(...n.map(s=>s._id));let i=await uE(e);t.push(...i.map(s=>s.email));let o=await o7(e);return t.push(...o.map(s=>s.email)),[...new Set(t.map(s=>s.toLowerCase()))]}a($7,"searchExistingEmails");async function DL(e){return await kx("platform_users_lowercase_2",{keys:[e.toLowerCase()],include_docs:!0})}a(DL,"getPlatformUsers");async function IA(e){return(await DL(e))[0]??null}a(IA,"getFirstPlatformUser");async function O2e(e){let r={keys:e.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await Xf("by_email2",r,void 0,n)}a(O2e,"getExistingTenantUsers");async function I2e(e){let r={keys:e.map(n=>n.toLowerCase()),include_docs:!0};return await kx("platform_users_lowercase_2",r)}a(I2e,"getExistingPlatformUsers");async function uE(e){let r={keys:e.map(n=>n.toLowerCase()),include_docs:!0};return await kx("account_by_email",r)}a(uE,"getExistingAccounts");var fE=Yi.users.isBuilder,ql=Yi.users.isAdmin,k2e=Yi.users.isGlobalBuilder,C2e=Yi.users.isAdminOrBuilder,Oh=Yi.users.hasAdminPermissions,ss=Yi.users.hasBuilderPermissions,D2e=Yi.users.hasAppBuilderPermissions,PL=Yi.users.isAdminOrWorkspaceBuilder;async function wy(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(wy,"creatorsInList");async function kA(e){let t=[];return e.userGroups&&(t=await Ar().getMultiple(e.userGroups)),NL(e,t)}a(kA,"isCreatorAsync");function NL(e,t){let r=Yi.users.isCreator(e);return!r&&e?pJt(e,t):r}a(NL,"isCreatorSync");function pJt(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(pJt,"isCreatorByGroupMembership");async function LL(e,t){if(K.MULTI_TENANCY){let r=await IA(e);if(r!=null&&r.tenantId!==t)throw new bp(e)}if(!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let r=await yy(e);if(r&&r.verified&&r.tenantId!==t)throw new bp(e)}}a(LL,"validateUniqueUser");async function FL(e){if(!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let t=await uE(e.map(r=>r.email));return e.find(r=>t.map(n=>n.email).includes(r.email))}}a(FL,"getAccountHolderFromUsers");var z7=a(async e=>{await us.deleted(e),ss(e)&&await us.permissionBuilderRemoved(e),Oh(e)&&await us.permissionAdminRemoved(e)},"handleDeleteEvents"),dJt=a(async(e,t,r)=>{for(let[n,i]of Object.entries(t))(!r||r[n]!==i)&&await OA.assigned(e,i)},"assignAppRoleEvents"),hJt=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"),mJt=a(async(e,t)=>{let r=e.roles,n=t?.roles;await dJt(e,r,n),await hJt(e,r,n)},"handleAppRoleEvents"),W7=a(async(e,t)=>{let r=Pt(),n;!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL&&(n=await cA(r)),await jc.identifyUser(e,n),t?(await us.updated(e),yJt(e,t)&&await us.permissionBuilderRemoved(e),vJt(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),gJt(e,t)&&await us.permissionBuilderAssigned(e),bJt(e,t)&&await us.permissionAdminAssigned(e),await mJt(e,t)},"handleSaveEvents"),gJt=a((e,t)=>P2e(e,t,ss),"isAddingBuilder"),yJt=a((e,t)=>N2e(e,t,ss),"isRemovingBuilder"),bJt=a((e,t)=>P2e(e,t,Oh),"isAddingAdmin"),vJt=a((e,t)=>N2e(e,t,Oh),"isRemovingAdmin"),P2e=a((e,t,r)=>!(!r(e)||t&&r(t)),"isAddingPermission"),N2e=a((e,t,r)=>!(r(e)||!t||!r(t)),"isRemovingPermission");var EJt=require("uuid");var _Jt=K.SESSION_EXPIRY_SECONDS?parseInt(K.SESSION_EXPIRY_SECONDS):mi.fromDays(7).toSeconds();function UL(e,t){return`${e}/${t}`}a(UL,"makeSessionID");async function G7(e){return e?(await(await Xv()).scan(e)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}a(G7,"getSessionsForUser");async function CA(e,t={}){try{let r=t?.reason||"unknown",n=t.sessionIds||[],i;if(n.length===0?i=(await G7(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 Xv(),s=[];for(let u of i)s.push(o.delete(u.key));K.isTest()||nE(`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(CA,"invalidateSessions");async function L2e(e){let t=await Xv(),r=UL(e.userId,e.sessionId);e.lastAccessedAt=new Date().toISOString(),await t.store(r,e,_Jt)}a(L2e,"updateSessionTTL");async function F2e(e,t){if(!e||!t)throw new Error(`Invalid session details - ${e} - ${t}`);let n=await(await Xv()).get(UL(e,t));if(!n)throw new Error(`Session not found - ${e} - ${t}`);return n}a(F2e,"getSession");var j2e=+(K.PASSWORD_MIN_LENGTH||12),M2e=+(K.PASSWORD_MAX_LENGTH||512);function B2e(e){return!e||e.length<j2e?{valid:!1,error:`Password invalid. Minimum ${j2e} characters.`}:e.length>M2e?{valid:!1,error:`Password invalid. Maximum ${M2e} characters.`}:{valid:!0}}a(B2e,"validatePassword");var TJt=a(async e=>{let t=e._id;await Ml.removeUser(e),await z7(e),await kh.invalidateUser(t),await CA(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 K.ENABLE_SSO_MAINTENANCE_MODE&&ql(t)?!1:await e.features.isSSOEnforced()||Wb(t)?!0:(r||(r=await cA(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=B2e(s);if(!p.valid)throw new Re(p.error,400)}c=r.hashPassword?await P4(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||Zv();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(wg(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 H7(t.appId,{limit:t.limit||50})}static async getUserByEmail(t){return Mc(t)}static async getUser(t){let r=await Ey(t);return r&&delete r.password,r}static async bulkGet(t){return await jL(t)}static async bulkUpdate(t){return await DA(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 Ey(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 Mc(o),l&&l._id!==s))throw new bp(o);let f=1,p=0;if((r.isAccountHolder||l)&&(f=0,p=1),l){let[d,h]=await wy([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=V7(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 kh.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 cA(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 DA(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 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 DA(u),f=(await wy(s)).filter(h=>h).length,p=[];for(let h of s){let g=(await IA(h._id)).ssoId;g&&(await DL(g)).filter(b=>b.ssoId==null).forEach(b=>{p.push({...b,_deleted:!0})}),await TJt(h)}await gy().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(!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let s=n.email;if(await yy(s))throw n.userId===Bf()._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 kh.invalidateUser(i),await CA(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 iE(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 PA(e){return Array.isArray(e)?e.map(t=>{if(t)return delete t.password,t}):e&&(delete e.password,e)}a(PA,"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=PA(n)),n}a(jL,"bulkGetGlobalUsersById");async function RJt(){let e=Ar(),t=`us${Me}`;return(await e.allDocs({startkey:t,endkey:`${t}${Pa}`})).rows.map(n=>n.id)}a(RJt,"getAllUserIds");async function OJt(){let e=Ar(),t=`us${Me}`;return(await e.allDocs({startkey:t,endkey:`${t}${Pa}`,include_docs:!0})).rows.map(n=>n.doc)}a(OJt,"getAllUsers");async function DA(e){return await Ar().bulkDocs(e)}a(DA,"bulkUpdateGlobalUsers");async function Ey(e,t){let n=await Ar().get(e);return t?.cleanup&&(n=PA(n)),n}a(Ey,"getById");async function Mc(e,t){if(e==null)throw"Must supply an email address to view";let r=await Xf("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=PA(n)),n}a(Mc,"getGlobalUserByEmail");async function IJt(e){try{let t=await Mc(e);if(Array.isArray(t)||t!=null)return!0}catch{return!1}return!1}a(IJt,"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 Xf("by_app",n);i||(i=[]);let o=Array.isArray(i)?i:[i];return r?.cleanup&&(o=PA(o)),o}a(ML,"searchGlobalUsersByApp");async function H7(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(H7,"searchGlobalUsersByAppAccess");function q2e(e,t){if(t)return v1(Us(e),t._id)}a(q2e,"getGlobalUserByAppPage");async function $2e(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 Xf("by_email2",{...t,startkey:i,endkey:`${n}${Pa}`});o||(o=[]);let s=Array.isArray(o)?o:[o];return r?.cleanup&&(s=PA(s)),s}a($2e,"searchGlobalUsersByEmail");var kJt=8;async function z2e({bookmark:e,query:t,appId:r,limit:n}={}){let i=Ar(),o=n??kJt,u={include_docs:!0,limit:o+1};e&&(u.startkey=e);let c,l="_id",f;return t?.equal?._id?c=[await Ey(t.equal._id)]:r?(c=await ML(r,u),f=a(p=>q2e(r,p),"getKey")):t?.string?.email?(c=await $2e(t?.string?.email,u),l="email"):t?.oneOf?._id?c=await jL(t?.oneOf?._id,{cleanup:!0}):t?(c=(await i.allDocs(wg(null,{...u,limit:void 0}))).rows.map(d=>d.doc),c=Lr.search(c,{query:t,limit:u.limit}).rows):c=(await i.allDocs(wg(null,u))).rows.map(d=>d.doc),J$(c,o,{paginate:!0,property:l,getKey:f})}a(z2e,"paginatedUsers");async function CJt(){return(await ez("by_email2",{limit:0,include_docs:!1})).total_rows}a(CJt,"getUserCount");async function DJt(){let e=0;async function t(r){let n=await z2e({bookmark:r}),i=await wy(n.data);e+=i.filter(o=>o).length,n.hasNextPage&&await t(n.nextPage)}return a(t,"iterate"),await t(),e}a(DJt,"getCreatorCount");function PJt(e){return delete e.admin,delete e.builder,e}a(PJt,"removePortalUserPermissions");function V7(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(V7,"cleanseUserObject");async function NJt(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(NJt,"addAppBuilder");async function LJt(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(LJt,"removeAppBuilder");var W2e=3600;async function FJt(e,t){let n=await iz(t).get(e);if(n.budibaseAccess=!0,!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let i=await yy(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}a(FJt,"populateFromDB");async function UJt(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,!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let o=await yy(i.email);o&&(i.account=o,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}a(UJt,"populateUsersFromDB");async function NA({userId:e,tenantId:t,email:r,populateUser:n}){if(n||(n=FJt),!t)try{t=Pt()}catch{t=await Ml.lookupTenantId(e)}let i=await xx(),o=await i.get(e);return o||(o=await n(e,t,r),await i.store(e,o,W2e)),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(NA,"getUser");async function jJt(e){let t=await xx(),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 UJt(n);o=s.notFoundIds;for(let u of s.users)await t.store(u._id,u,W2e);i.push(...s.users)}return{users:i,notFoundIds:o}}a(jJt,"getUsers");async function LA(e){await(await xx()).delete(e)}a(LA,"invalidateUser");var hK={};oe(hK,{Writethrough:()=>fK});var Bc={};oe(Bc,{AUTO_EXTEND_POLLING_MS:()=>RUe,doWithLock:()=>cK,newRedlock:()=>xy});var AUe=te(TUe());async function aXt(e,t){if(e==="custom")return xy(t);switch(e){case"try_once":return xy(gE.TRY_ONCE);case"try_twice":return xy(gE.TRY_TWICE);case"default":return xy(gE.DEFAULT);case"delay_500":return xy(gE.DELAY_500);case"auto_extend":return xy(gE.AUTO_EXTEND);default:throw zt.unreachable(e)}}a(aXt,"getClient");var gE={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 xy(e={}){let t={...gE.DEFAULT,...e},n=(await H$()).client;return new AUe.default([n],t)}a(xy,"newRedlock");function oXt(e){let r=`lock:${e.systemLock?"system":Pt()}_${e.name}`;return e.resource&&(r=r+`_${e.resource}`),r}a(oXt,"getLockName");var RUe=mi.fromSeconds(10).toMs();async function cK(e,t){let r=await aXt(e.type,e.customOptions),n,i;try{let o=oXt(e),s=e.type==="auto_extend"?RUe: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(cK,"doWithLock");var OUe=1e4,lK=null;async function VL(){if(!lK){let e=await G$();lK=new py(e)}return lK}a(VL,"getCache");function jA(e,t){return e.name+t}a(jA,"makeCacheKey");function dK(e,t=null){return{doc:e,lastWrite:t||Date.now()}}a(dK,"makeCacheItem");async function sXt(e,t,r=OUe){let n=await VL(),i=t._id,o;i&&(o=await n.get(jA(e,i)));let s=!o||o.lastWrite<Date.now()-r,u=t;return s&&((await cK({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;nE("Ignoring conflict in write-through cache")}})).executed||nE("Ignoring redlock conflict in write-through cache")),o=dK(u,s?null:o?.lastWrite),u._id&&await n.store(jA(e,u._id),o),{ok:!0,id:u._id,rev:u._rev}}a(sXt,"put");async function uXt(e,t){let r=await VL(),n=jA(e,t),i=await r.get(n);if(!i){let o=await e.get(t);i=dK(o),await r.store(n,i)}return i.doc}a(uXt,"get");async function cXt(e,t){let r=await VL(),n=jA(e,t),i=await r.get(n);if(!i){let o=await e.tryGet(t);if(!o)return null;i=dK(o),await r.store(n,i)}return i.doc}a(cXt,"tryGet");async function lXt(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(jA(e,i))}finally{await e.remove(i,r)}}a(lXt,"remove");var fK=class{static{a(this,"Writethrough")}constructor(t,r=OUe){this.db=t,this.writeRateMs=r}async put(t,r=this.writeRateMs){return sXt(this.db,t,r)}async get(t){return uXt(this.db,t)}async tryGet(t){return cXt(this.db,t)}async remove(t,r){return lXt(this.db,t,r)}};function QL(e){return`config${Me}${e}`}a(QL,"generateConfigID");async function Pu(e){let t=Ar();try{return await t.get(QL(e))}catch(r){if(r.status===404)return;throw r}}a(Pu,"getConfig");async function fXt(e){return e._id||(e._id=QL(e.type)),Ar().put(e)}a(fXt,"save");async function tE(){let e=await Pu("settings");return e||(e={_id:QL("settings"),type:"settings",config:{}}),e.config.platformUrl=await MA({tenantAware:!0,config:e.config}),e.config.analyticsEnabled=await dL({config:e.config}),e}a(tE,"getSettingsConfigDoc");async function gK(){return(await tE()).config}a(gK,"getSettingsConfig");async function MA(e={tenantAware:!0}){let t=K.PLATFORM_URL||"http://localhost:10000";if(!K.SELF_HOSTED&&K.MULTI_TENANCY&&e.tenantAware){let r=Pt();t.includes("localhost:")||(t=t.replace("://",`://${r}.`))}else if(K.SELF_HOSTED){let r=e?.config?e.config:(await Pu("settings"))?.config;r?.platformUrl&&(t=r.platformUrl)}return t}a(MA,"getPlatformUrl");var dL=a(async e=>{if(!K.SELF_HOSTED)return!!K.ENABLE_ANALYTICS;let t=await Ah(aa.ANALYTICS_ENABLED,86400,async()=>{let n=e?.config?e.config:(await Pu("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(t!==void 0)return t;let r=K.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");async function pXt(){return await Pu("google")}a(pXt,"getGoogleConfigDoc");async function YL(){return(await pXt())?.config}a(YL,"getGoogleConfig");async function yK(){if(!K.SELF_HOSTED)return mK();let e=await YL();return(!e||!e.activated)&&(e=mK()),e}a(yK,"getGoogleDatasourceConfig");function mK(){if(K.GOOGLE_CLIENT_ID&&K.GOOGLE_CLIENT_SECRET)return{clientID:K.GOOGLE_CLIENT_ID,clientSecret:K.GOOGLE_CLIENT_SECRET,activated:!0}}a(mK,"getDefaultGoogleConfig");async function dXt(){return Pu("logos_oidc")}a(dXt,"getOIDCLogosDoc");async function hXt(){return Pu("oidc")}a(hXt,"getOIDCConfigDoc");async function mXt(){let e=(await hXt())?.config;return e?.configs&&e.configs[0]}a(mXt,"getOIDCConfig");async function bK(e){let t=(await Pu("oidc"))?.config;return t&&t.configs.filter(r=>r.uuid===e)[0]}a(bK,"getOIDCConfigById");async function IUe(){return Pu("smtp")}a(IUe,"getSMTPConfigDoc");async function gXt(e){let t=await IUe();if(t)return t.config;let r=K.SELF_HOSTED||!e;if(K.SMTP_FALLBACK_ENABLED&&r)return{port:K.SMTP_PORT,host:K.SMTP_HOST,secure:!1,from:K.SMTP_FROM_ADDRESS,auth:{user:K.SMTP_USER,pass:K.SMTP_PASSWORD},fallback:!0}}a(gXt,"getSMTPConfig");async function yXt(){return(await Pu("scim"))?.config}a(yXt,"getSCIMConfig");async function bXt(){return Pu("ai")}a(bXt,"getAIConfig");async function vXt(){return Pu("recaptcha")}a(vXt,"getRecaptchaConfig");var Dr={};oe(Dr,{AccessController:()=>EK,BUILTIN_ROLE_IDS:()=>_K,Role:()=>Ph,RoleHierarchyTraversal:()=>JL,RoleIDVersion:()=>SK,builtinRoleToNumber:()=>BA,checkForRoleResourceArray:()=>PUe,externalRole:()=>TXt,findRole:()=>qA,getAllRoleIds:()=>IXt,getAllRoles:()=>RK,getBuiltinRole:()=>CUe,getBuiltinRoles:()=>TK,getDBRoleID:()=>NUe,getExternalRoleID:()=>Nh,getExternalRoleIDs:()=>LUe,getRole:()=>AXt,getUserRoleHierarchy:()=>AK,getUserRoleIdHierarchy:()=>DUe,isBuiltin:()=>Ty,lowerBuiltinRoleID:()=>xXt,prefixRoleIDNoBuiltin:()=>wK,roleIDsAreEqual:()=>Nu,roleToNumber:()=>SXt,saveRoles:()=>RXt,validInherits:()=>_Xt});var kUe=require("lodash"),XL=te(require("lodash/fp/cloneDeep")),vK=te(C7());var _K={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},Un={..._K,BUILDER:"BUILDER"},SK={UUID:void 0,NAME:"name"};function EXt(e,t){return Array.isArray(t)?t.filter(r=>e.includes(r)).length===t.length:e.includes(t)}a(EXt,"rolesInList");var Ph=class{constructor(t,r,n,i){this.permissions={};this._id=t,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=SK.NAME}static{a(this,"Role")}addInheritance(t){return t&&typeof t=="string"?t=wK(t):t&&Array.isArray(t)&&(t=t.map(wK)),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=qA(o,n,r);s&&(i=i.concat(this.walk(s)))}else{let o=[],s=t;for(;s&&s.inherits&&!EXt(o,s.inherits);){if(Array.isArray(s.inherits))return i.concat(this.walk(s));if(o.push(s.inherits),s=qA(s.inherits,n,r),s&&i.push(s),Ye.roles.checkForRoleInheritanceLoops(i))break}}return(0,kUe.uniqBy)(i,o=>o._id)}},xK={ADMIN:new Ph(Un.ADMIN,Un.ADMIN,"admin",{displayName:"App admin",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(Un.POWER),POWER:new Ph(Un.POWER,Un.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(Un.BASIC),BASIC:new Ph(Un.BASIC,Un.BASIC,"write",{displayName:"App user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(Un.PUBLIC),PUBLIC:new Ph(Un.PUBLIC,Un.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new Ph(Un.BUILDER,Un.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function TK(){return(0,XL.default)(xK)}a(TK,"getBuiltinRoles");function Ty(e){return Object.values(_K).includes(e)}a(Ty,"isBuiltin");function wK(e){return Ty(e)?e:Yf(e)}a(wK,"prefixRoleIDNoBuiltin");function CUe(e){let t=Object.values(xK).find(r=>e.includes(r._id));if(t)return(0,XL.default)(t)}a(CUe,"getBuiltinRole");function _Xt(e,t){if(!t)return!1;let r=a(n=>e.find(i=>Nu(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(_Xt,"validInherits");function BA(e){let t=TK(),r=Object.values(t).length+1;if(Nu(e,Un.ADMIN)||Nu(e,Un.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(BA,"builtinRoleToNumber");async function SXt(e){if(Ty(e))return BA(e);let t=await AK(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=>Nu(u._id,o));if(s)return r(s)+1}).filter(o=>o).sort().pop();if(i!=null)return i}else if(Ty(n.inherits))return BA(n.inherits)+1;return 0},"findNumber");return Math.max(...t.map(r))}a(SXt,"roleToNumber");function xXt(e,t){return e?t&&BA(e)>BA(t)?t:e:t}a(xXt,"lowerBuiltinRoleID");function Nu(e,t){return Yf(e)===Yf(t)}a(Nu,"roleIDsAreEqual");function TXt(e){let t;return e._id&&(t=Nh(e._id)),{...e,_id:t,inherits:LUe(e.inherits,e.version)}}a(TXt,"externalRole");function qA(e,t,r){let n=CUe(e);n||(e=Yf(e));let i=t.find(o=>o._id&&Nu(o._id,e));return!i&&!Ty(e)&&r?.defaultPublic?(0,XL.default)(xK.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=Nh(n._id,n.version)),Object.keys(n).length===0?void 0:n)}a(qA,"findRole");async function AXt(e,t){let r=Jv(),n=[];if(!Ty(e)){let i=await r.tryGet(NUe(e));i&&n.push(i)}return qA(e,n,t)}a(AXt,"getRole");async function RXt(e){await Jv().bulkDocs(e.filter(r=>r._id).map(r=>({...r,_id:Yf(r._id)})))}a(RXt,"saveRoles");async function OXt(e,t){let r=await RK();if(Nu(e,Un.ADMIN))return r;let n=qA(e,r,t),i=[];return n&&(i=new JL(r,t).walk(n)),i}a(OXt,"getAllUserRoles");async function DUe(e){return(await AK(e)).map(r=>r._id)}a(DUe,"getUserRoleIdHierarchy");async function AK(e,t){return OXt(e,t)}a(AK,"getUserRoleHierarchy");function PUe(e,t){if(e&&!Array.isArray(e[t])){let r=e[t];e[t]=[r],r==="write"&&e[t].push("read")}return e}a(PUe,"checkForRoleResourceArray");async function IXt(e){return(await RK(e)).map(r=>r._id)}a(IXt,"getAllRoleIds");async function RK(e){if(e)return Fs(e,t);{let r;try{r=Jv()}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=Nh(u._id,u.version)));let i=TK(),o=[];!r||await kXt(r)?o=[Un.ADMIN,Un.POWER,Un.BASIC,Un.PUBLIC]:o=[Un.ADMIN,Un.BASIC,Un.PUBLIC];for(let s of o){let u=i[s],c=n.filter(l=>Nu(l._id,s))[0];c==null?n.push(u||i.BASIC):(n=n.filter(l=>l._id!==c._id),c._id=Nh(u._id,c.version),n.push({...u,...c,name:u.name,_id:Nh(u._id,u.version)}))}for(let s of n)if(s.permissions)for(let u of Object.keys(s.permissions))s.permissions=PUe(s.permissions,u);return n}a(t,"internal")}a(RK,"getAllRoles");async function kXt(e){let r=(await e.tryGet("app_metadata"))?.creationVersion;return!r||!vK.default.valid(r)?!0:!vK.default.gte(r,K.MIN_VERSION_WITHOUT_POWER_ROLE)}a(kXt,"shouldIncludePowerRole");var EK=class{static{a(this,"AccessController")}constructor(){this.userHierarchies={}}async hasAccess(t,r){if(t==null||t===""||Nu(t,Un.BUILDER)||Nu(r,t)||Nu(r,Un.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await DUe(r),this.userHierarchies[r]=n),n?.find(i=>Nu(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 NUe(e){return e?.startsWith("role")?e:Yf(e)}a(NUe,"getDBRoleID");function Nh(e,t){if(e.startsWith(`role${Me}`)&&(Ty(e)||t===SK.NAME)){let r=e.split(Me);return r.shift(),r.join(Me)}return e}a(Nh,"getExternalRoleID");function LUe(e,t){return e&&(typeof e=="string"?Nh(e,t):e.map(r=>Nh(r,t)))}a(LUe,"getExternalRoleIDs");var xi={};oe(xi,{BUILDER:()=>LXt,BUILTIN_PERMISSIONS:()=>ZL,CREATOR:()=>FXt,GLOBAL_BUILDER:()=>UXt,PermissionImpl:()=>jn,PermissionLevel:()=>pd,PermissionType:()=>mS,doesHaveBasePermission:()=>PXt,getAllowedLevels:()=>MUe,getBuiltinPermissionByID:()=>DXt,getBuiltinPermissions:()=>CXt,isPermissionLevelHigherThanRead:()=>NXt,levelToNumber:()=>jUe});var FUe=te(require("lodash/flatten")),UUe=te(require("lodash/fp/cloneDeep"));var jn=class{static{a(this,"PermissionImpl")}constructor(t,r){this.type=t,this.level=r}};function jUe(e){switch(e){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}a(jUe,"levelToNumber");function MUe(e){switch(e){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}a(MUe,"getAllowedLevels");var ZL={PUBLIC:{_id:"public",name:"Public",permissions:[new jn("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new jn("query","read"),new jn("table","read"),new jn("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new jn("query","write"),new jn("table","write"),new jn("automation","execute"),new jn("legacy_view","read"),new jn("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new jn("table","write"),new jn("user","read"),new jn("automation","execute"),new jn("webhook","read"),new jn("legacy_view","read"),new jn("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new jn("table","admin"),new jn("user","admin"),new jn("automation","admin"),new jn("webhook","read"),new jn("query","admin"),new jn("legacy_view","read"),new jn("app","read")]}};function CXt(){return(0,UUe.default)(ZL)}a(CXt,"getBuiltinPermissions");function DXt(e){return Object.values(ZL).find(r=>r._id===e)}a(DXt,"getBuiltinPermissionByID");function PXt(e,t,r){let n=[...new Set(r.map(s=>s.permissionId))],i=Object.values(ZL),o=(0,FUe.default)(i.filter(s=>n.indexOf(s._id)!==-1).map(s=>s.permissions));for(let s of o)if(s.type===e&&MUe(s.level).indexOf(t)!==-1)return!0;return!1}a(PXt,"doesHaveBasePermission");function NXt(e){return jUe(e)>1}a(NXt,"isPermissionLevelHigherThanRead");var LXt="builder",FXt="creator",UXt="globalBuilder";var er={};oe(er,{adminOnly:()=>y2,auditLog:()=>b2,authError:()=>$a,buildAuthMiddleware:()=>ymr,buildCsrfMiddleware:()=>vmr,buildTenancyMiddleware:()=>bmr,builderOnly:()=>x2,builderOrAdmin:()=>T2,google:()=>Rp,internalApi:()=>R2,joiValidator:()=>HA,oidc:()=>Mp,passport:()=>wmr,platformLogout:()=>Tmr,refreshOAuthToken:()=>Smr,ssoCallbackUrl:()=>Fh,updateUserOAuth:()=>xmr,workspaceBuilderOrAdmin:()=>TU});var AU={};oe(AU,{adminOnly:()=>y2,auditLog:()=>b2,authError:()=>$a,authenticated:()=>S2,builderOnly:()=>x2,builderOrAdmin:()=>T2,correlation:()=>qUe,csp:()=>iBe,csrf:()=>A2,datasource:()=>emr,errorHandling:()=>oBe,featureFlagCookie:()=>sBe,google:()=>Rp,internalApi:()=>R2,ip:()=>uBe,joiValidator:()=>HA,local:()=>_E,oidc:()=>Mp,pino:()=>YMe,querystringToBody:()=>vGe,ssoCallbackUrl:()=>Fh,tenancy:()=>xU,workspaceBuilderOrAdmin:()=>TU});var BUe=require("uuid");var jXt=R1(),qUe=a((e,t)=>{let r=e.headers["x-budibase-correlation-id"];return r||(r=(0,BUe.v4)()),jXt.withId(r,()=>t())},"correlationMiddleware");var xrr=QMe(),Trr=R1();function Arr(){return{logger:sL,genReqId:Trr.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(Arr,"pinoSettings");function Rrr(){return K.HTTP_LOGGING?xrr(Arr()):(e,t)=>t()}a(Rrr,"getMiddleware");var YMe=Rrr();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 Orr=/\/:(.*?)(\/.*)?$/g,Iy=a(e=>e?e.map(t=>{let r=t.route,n=t.method,i=r.match(Orr);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"),ky=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 $c={};oe($c,{SecretOption:()=>ZMe,decrypt:()=>TQ,decryptFile:()=>Nrr,encrypt:()=>Crr,encryptFile:()=>Drr,getSecret:()=>xQ});var _p=te(require("crypto")),Lh=te(require("fs")),EQ=require("path"),_Q=te(require("zlib"));var v2="aes-256-ctr",XMe="-",Irr=1e4,krr=32,w2=16,SQ=16,ZMe=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(ZMe||{});function xQ(e){let t,r;switch(e){case"encryption":t=K.ENCRYPTION_KEY,r="ENCRYPTION_KEY";break;case"api":default:t=K.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY";break}if(!t)throw new Error(`Secret "${r}" has not been set in environment.`);return t}a(xQ,"getSecret");function E2(e,t){return _p.default.pbkdf2Sync(e,new Uint8Array(t),Irr,krr,"sha512")}a(E2,"stretchString");function Crr(e,t="api"){let r=_p.default.randomBytes(w2),n=E2(xQ(t),r),i=_p.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")}${XMe}${u}`}a(Crr,"encrypt");function TQ(e,t="api"){let[r,n]=e.split(XMe),i=Buffer.from(r,"hex"),o=E2(xQ(t),i),s=_p.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(TQ,"decrypt");async function Drr({dir:e,filename:t},r){let n=`${t}.enc`,i=(0,EQ.join)(e,t);if(Lh.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let o=Lh.default.createReadStream(i),s=Lh.default.createWriteStream((0,EQ.join)(e,n)),u=_p.default.randomBytes(w2),c=_p.default.randomBytes(SQ),l=E2(r,u),f=_p.default.createCipheriv(v2,new Uint8Array(l),new Uint8Array(c));return s.write(u),s.write(c),o.pipe(_Q.default.createGzip()).pipe(f).pipe(s),new Promise(p=>{s.on("finish",()=>{p({filename:n,dir:e})})})}a(Drr,"encryptFile");async function Prr(e){let t=Lh.default.createReadStream(e),r=await JMe(t,w2),n=await JMe(t,SQ);return t.close(),{salt:r,iv:n}}a(Prr,"getSaltAndIV");async function Nrr(e,t,r){if(Lh.default.lstatSync(e).isDirectory())throw new Error("Unable to decrypt directory");let{salt:n,iv:i}=await Prr(e),o=Lh.default.createReadStream(e,{start:w2+SQ}),s=Lh.default.createWriteStream(t),u=E2(r,n),c=_p.default.createDecipheriv(v2,new Uint8Array(u),new Uint8Array(i)),l=_Q.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(Nrr,"decryptFile");function JMe(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(JMe,"readBytes");var tBe=te(require("dd-trace"));var Frr=K.SESSION_UPDATE_PERIOD?parseInt(K.SESSION_UPDATE_PERIOD):60*1e3;function Urr(){return new Date(Date.now()-Frr).toISOString()}a(Urr,"timeMinusOneMinute");function eBe(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(eBe,"finalise");async function jrr(e,t){if(Nx(e))return{valid:!0,user:void 0};let n=TQ(e).split(Me)[0];return Xo(n,async()=>{let i;try{let o=Ar();i=await Xf("by_api_key",{key:e},o)}catch{i=void 0}if(i)return{valid:!0,user:await NA({userId:i,tenantId:n,populateUser:t})};throw new CL})}a(jrr,"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?Iy(e):[];return async(n,i)=>{let o=!1,s=_2(n,"x-budibase-api-version");ky(n,r)&&(o=!0);try{let c=_2(n,"x-budibase-token"),l=ep(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 F2e(v,b),t&&t.populateUser?h=await NA({userId:v,tenantId:w.tenantId,email:w.email,populateUser:t.populateUser(n)}):h=await NA({userId:v,tenantId:w.tenantId,email:w.email}),h.csrfToken=w.csrfToken,g="cookie",w?.lastAccessedAt<Urr()&&await L2e(w),d=!0}catch(x){d=!1,console.error(`Auth Error: ${x.message}`),Qd(n,"budibase:auth")}}if(!d&&f){let b=t.populateUser?t.populateUser(n):null,{valid:v,user:w}=await jrr(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)&&tBe.default.setUser({id:h._id,tenantId:h.tenantId,budibaseAccess:h.budibaseAccess,status:h.status}),eBe(n,{authenticated:d,user:h,internal:m,version:s,publicEndpoint:o,loginMethod:g}),y(h)?U4(h,n,i):i()}catch(c){if(console.error(`Auth Error: ${c.message}`),c?.name==="JsonWebTokenError"?Qd(n,"budibase:auth"):c?.code==="invalid_api_key"&&n.throw(403,c.message),t&&t.publicAllowed||o)return eBe(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 _g(e);return!r&&!K.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)?e.throw(403,"Builder user only endpoint."):r&&!fE(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 _g(e);return!r&&!K.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)?e.throw(403,"Admin/Builder user only endpoint."):r&&!fE(e.user,r)&&e.throw(403,"Workspace Admin/Builder user only endpoint."),t()}a(T2,"builderOrAdmin");var nBe=te(require("crypto"));var rBe={"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'"]},Mrr=/^[A-Za-z0-9-*:/.]+$/,iBe=a(async(e,t)=>{let r=nBe.default.randomBytes(16).toString("base64");e.state.nonce=r;let n={...rBe};if(n["script-src"]=[...rBe["script-src"],`'nonce-${r}'`],e.user?.license?.features.includes("customAppScripts")&&e.appId)try{let s=await Ax.getWorkspaceMetadata(e.appId);if("name"in s)for(let u of s.scripts||[]){let c=(u.cspWhitelist||"").split(`
|
|
536
|
-
`).filter(l=>Mrr.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 Brr=["GET","HEAD","OPTIONS"],qrr=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function A2(e={noCsrfPatterns:[]}){let t=Iy(e.noCsrfPatterns);return async(r,n)=>{if(ky(r,t)||Brr.indexOf(r.method)!==-1)return n();let o=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!qrr.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 aBe(e){if(e.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let t of xfe){let r=K[t];if(!(typeof r!="string"||r==="")&&e.includes(r))return!0}return!1}a(aBe,"stringContainsSecret");async function oBe(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:A2e(r)};if(aBe(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),K.isTest()&&e.headers["x-budibase-include-stacktrace"]){let o=r;for(;o.cause;)o=o.cause;i.stack=o.stack}e.body=i}}a(oBe,"errorHandling");var sBe=a(async(e,t)=>{let n=ep(e,"budibase:featureflags")?.flags||{};await q$(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"),Nx(r)||e.throw(403,"Unauthorized"),t()}a(R2,"internalApi");async function uBe(e,t){return e.ip?await U$(e.ip,()=>t()):t()}a(uBe,"ip");var HA={};oe(HA,{body:()=>$rr,params:()=>zrr});var AQ=te(require("joi"));function cBe(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:AQ.default.any().optional(),updatedAt:AQ.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(cBe,"validate");function $rr(e,t){return cBe(e,"body",t)}a($rr,"body");function zrr(e,t){return cBe(e,"params",t)}a(zrr,"params");var _E={};oe(_E,{authenticate:()=>Hrr,options:()=>Grr});function $a(e,t,r){return e(r,null,{message:t})}a($a,"authError");async function Fh(e,t){if(t&&t.callbackURL)return t.callbackURL;let r=await gK(),n="/api/global/auth";return Vd()&&(n+=`/${Pt()}`),n+=`/${e}/callback`,`${r.platformUrl}${n}`}a(Fh,"ssoCallbackUrl");var RQ="Invalid credentials",Wrr="This account has expired. Please reset your password",Grr={passReqToCallback:!0};async function Hrr(e,t,r,n){if(!t)return $a(n,"Email Required");if(!r)return $a(n,"Password Required");let i=await Mc(t);return i==null?(console.info(`user=${t} could not be found`),$a(n,RQ)):i.status==="inactive"?(console.info(`user=${t} is inactive`,i),$a(n,RQ)):i.password?await N4(r,i.password)?(delete i.password,n(null,i)):$a(n,RQ):(console.info(`user=${t} has no password set`,i),$a(n,Wrr))}a(Hrr,"authenticate");var Rp={};oe(Rp,{buildVerifyFn:()=>$qe,getCallbackUrl:()=>oir,strategyFactory:()=>fY});var VA=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 $a(r,"sso user id required");if(!e.email)return $a(r,"sso user email required");let i=Zv(e.userId),o;try{o=await Ey(i)}catch(u){if(!u.status||u.status!==404)return $a(r,"Unexpected error when retrieving existing user",u)}if(o||(o=await Mc(e.email)),!o&&t)return $a(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 Vrr(o,e);s.forceResetPassword=!1;try{delete s.password,s=await n(s,{hashPassword:!1,requirePassword:!1})}catch(u){return $a(r,"Error saving user",u)}return r(null,s)}a(O2,"authenticate");async function Vrr(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(Vrr,"syncUser");var air=cY().OAuth2Strategy;function $qe(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($qe,"buildVerifyFn");async function fY(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=$qe(r);return new air({clientID:e.clientID,clientSecret:e.clientSecret,callbackURL:t},o)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}a(fY,"strategyFactory");async function oir(e){return Fh("google",e)}a(oir,"getCallbackUrl");var Mp={};oe(Mp,{buildVerifyFn:()=>bGe,fetchStrategyConfig:()=>Qhr,getCallbackUrl:()=>Yhr,strategyFactory:()=>Khr});var yGe=te(require("node-fetch"));var Hhr=gGe().Strategy;function bGe(e){return async(t,r,n,i,o,s,u,c,l)=>{let f={provider:t,providerType:"oidc",userId:n.id,profile:n,email:Vhr(n,i),oauth2:{accessToken:o,refreshToken:s}};return O2(f,!1,l,e)}}a(bGe,"buildVerifyFn");function Vhr(e,t){if(e._json.email)return e._json.email;if(t.email)return t.email;let r=t.preferred_username;if(r&&uz(r))return r;throw new Error(`Could not determine user email from profile ${JSON.stringify(e)} and claims ${JSON.stringify(t)}`)}a(Vhr,"getEmail");async function Khr(e,t){try{let r=bGe(t),n=new Hhr(e,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}a(Khr,"strategyFactory");async function Qhr(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,yGe.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(Qhr,"fetchStrategyConfig");async function Yhr(){return Fh("oidc")}a(Yhr,"getCallbackUrl");function vGe(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(vGe,"querystringToBody");function xU(e,t,r={noTenancyRequired:!1}){let n=Iy(e),i=Iy(t);return async function(o,s){let c={allowNoTenant:r.noTenancyRequired||!!ky(o,i)};!!ky(o,n)||(c.excludeStrategies=["query"]);let f=Dx(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 _g(e);return r&&!PL(e.user,r)?e.throw(403,"Workspace Admin/Builder user only endpoint."):!r&&!K.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 JX={};oe(JX,{postAuth:()=>Zhr,preAuth:()=>Xhr});var Jhr=cY().OAuth2Strategy;async function wGe(){let e=await yK();if(!e)throw new Error("No google configuration found");return e}a(wGe,"fetchGoogleCreds");async function Xhr(e,t,r){let n=await wGe(),o=`${await MA({tenantAware:!1})}/api/global/auth/datasource/google/callback`,s=await fY(n,o,VA);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(Xhr,"preAuth");async function Zhr(e,t,r){let n=await wGe(),o=`${await MA({tenantAware:!1})}/api/global/auth/datasource/google/callback`,s=ep(t,"budibase:datasourceauth");if(!s)throw new Error("Unable to fetch datasource auth cookie");return e.authenticate(new Jhr({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:o},(u,c,l,f)=>{Qd(t,"budibase:datasourceauth"),f(null,{accessToken:u,refreshToken:c})}),{successRedirect:"/",failureRedirect:"/error"},async(u,c)=>{let l=`/builder/workspace/${s.appId}/data`,f=Cn();await gp(`datasource:creation:${s.appId}:google:${f}`,{tokens:c}),t.redirect(`${l}/new?continue_google_setup=${f}`)})(t,r)}a(Zhr,"postAuth");var emr={google:JX};var cHe=ZGe(),gmr=sHe().Strategy,PU=uHe(),ymr=S2,bmr=xU,vmr=A2,wmr=cHe;cHe.use(new gmr(_E.options,_E.authenticate));async function Emr(e,t){let r=await Mp.getCallbackUrl(),n,i;try{if(n=await Mp.fetchStrategyConfig(e,r),!n)throw new Error("OIDC Config contents invalid");i=await Mp.strategyFactory(n,VA)}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(Emr,"refreshOIDCAccessToken");async function _mr(e,t){let r=await Rp.getCallbackUrl(e),n;try{n=await Rp.strategyFactory(e,r,VA)}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(_mr,"refreshGoogleAccessToken");async function Smr(e,t,r){switch(t){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await bK(r);return n?Emr(n,e):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await YL();return n?_mr(n,e):{err:{data:"Google configuration not found"}}}}}a(Smr,"refreshOAuthToken");async function xmr(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 LA(e)}catch(n){console.error("Could not update OAuth details for current user",n)}}a(xmr,"updateUserOAuth");async function Tmr(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=ep(t,"budibase:auth"),o=await G7(r);i&&n?o=o.filter(u=>u.sessionId!==i.sessionId):Qd(t,"budibase:auth");let s=o.map(({sessionId:u})=>u);await CA(r,{sessionIds:s,reason:"logout"}),await OL.logout(t.user?.email),await LA(r)}a(Tmr,"platformLogout");var LU={};oe(LU,{validate:()=>kmr});var nt=te(require("joi"));var Amr=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function lZ(e,t){let{error:r}=e.validate(t);if(r)throw r}a(lZ,"runJoi");function Rmr(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)});lZ(t,e)}a(Rmr,"validateComponent");function Omr(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(ga).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(...Amr),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()}))})});lZ(n,e)}a(Omr,"validateDatasource");function Imr(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(...lse).required(),inputs:nt.default.object().optional(),schema:nt.default.object({inputs:r,outputs:r}).required()})});lZ(n,e)}a(Imr,"validateAutomation");function kmr(e){switch(e?.type){case"component":Rmr(e);break;case"datasource":Omr(e);break;case"automation":Imr(e);break;default:throw new Error(`Unknown plugin type - check schema.json: ${e.type}`)}}a(kmr,"validate");var Bp={};oe(Bp,{Client:()=>to,clients:()=>Kd,locks:()=>Bc,utils:()=>uC});var jU={};oe(jU,{isBlacklisted:()=>Dmr,refreshBlacklist:()=>dHe});var lHe=te(require("dns")),UU=te(require("net"));var fHe=require("util");var FU,Cmr=(0,fHe.promisify)(lHe.default.lookup);async function pHe(e){return UU.default.isIP(e)||(e.startsWith("http")||(e=`https://${e}`),e=new URL(e).hostname),(await Cmr(e,{all:!0})).map(r=>r.address)}a(pHe,"lookup");async function dHe(){let t=K.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 pHe(i);r=r.concat(o)}}FU=r}a(dHe,"refreshBlacklist");async function Dmr(e){if(FU||await dHe(),FU?.length===0)return!1;let t;return UU.default.isIP(e)?t=[e]:t=await pHe(e),!!FU?.find(r=>t.includes(r))}a(Dmr,"isBlacklisted");var Ubn={"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:()=>yZ,Sql:()=>xHe,SqlTable:()=>MU,designDoc:()=>bZ,utils:()=>k$});var vHe=require("knex");var Pmr=require("knex");function fZ(e){return["link","formula","ai"].indexOf(e)!==-1}a(fZ,"isIgnoredType");function mHe(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}=T$(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:zt.unreachable(g)}}let p=i?n?.schema[i.old].type:void 0;return i&&p&&!fZ(p)&&e.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([h,m])=>!fZ(m.type)&&t.schema[h]==null).forEach(([h,m])=>{i?.old===h||fZ(m.type)||(n.constrained&&n.constrained.indexOf(h)!==-1&&e.dropForeign(h),e.dropColumn(h))}),e}a(mHe,"generateSchema");function Nmr(e,t,r){return e.createTable(t.name,n=>{mHe(n,t,r)})}a(Nmr,"buildCreateTable");function Lmr(e,t,r,n,i){return e.alterTable(t.name,o=>{mHe(o,t,r,n,i)})}a(Lmr,"buildUpdateTable");function Fmr(e,t){return e.dropTable(t.name)}a(Fmr,"buildDeleteTable");var pZ=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,Pmr.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=Nmr(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=Lmr(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=Kv(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=Fmr(r,t.table);break;default:throw new Error("Table operation is of unknown type")}return Kv(n)}},MU=pZ;var wHe=require("lodash");var yZ="__bb_total";function gHe(){return(K.SQL_MAX_ROWS?parseInt(K.SQL_MAX_ROWS):null)||5e3}a(gHe,"getBaseLimit");function dZ(){return(K.SQL_MAX_RELATED_ROWS?parseInt(K.SQL_MAX_RELATED_ROWS):null)||500}a(dZ,"getRelationshipLimit");function jmr(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(jmr,"prioritisedArraySort");function EHe(e){return Array.isArray(e)?e.map(t=>EHe(t)):(e.bindings&&(e.bindings=e.bindings.map(t=>typeof t=="boolean"?t?1:0:t)),e)}a(EHe,"convertBooleans");function yHe(e){return e.sourceType==="internal"||e.sourceId===Ko}a(yHe,"isSqs");function Mmr(e,t='"'){return e.replace(new RegExp(t,"g"),`${t}${t}`)}a(Mmr,"escapeQuotes");function _He(e,t='"'){return`${t}${Mmr(e,t)}${t}`}a(_He,"wrap");function hZ(e,t='"'){for(let r in e)typeof e[r]=="string"&&(e[r]=_He(e[r],t));return`[${e.join(",")}]`}a(hZ,"stringifyArray");function SHe(e){return fk.includes(e.type)&&!Ye.schema.isDeprecatedSingleUserColumn(e)}a(SHe,"isJsonColumn");var Bmr={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},mZ=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()&&SHe(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(!O$(t))return null}else if(r.dateOnly){let n=R$(t);return n?new Date(n):null}else return r.ignoreTimezones?f1(t)?new Date(t):A$(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,wHe.cloneDeep)(t);for(let r of Object.values(Rm)){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(zb)){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=I$(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=Cx(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,Bmr[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(hZ(w,"'")):this.knex.raw(w)]):b.whereRaw(`COALESCE(??${T} @> '??', FALSE)`,[this.rawQuotedIdentifier(v),T?this.knex.raw(hZ(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(_He(hZ(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&&!x$(this.table)&&h&&t.andWhereLike(`${h}._id`,`${dd(r.documentType)}%`),t}isSqs(){return yHe(this.table)}getTableName(t){t||(t=this.table);let r=t.name;yHe(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 ${yZ}`)}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=jmr(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}`,V=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});V=V.join(ie,function(){this.on(`${w}.${b}`,"=",`${T}.${m}`)})}V=V.where(this.rawQuotedIdentifier(Y),"=",this.rawQuotedIdentifier(B));let $=a(ie=>(V=V.select(C.map(Q=>this.rawQuotedIdentifier(Q))).limit(dZ()),o.select(ie).from({[w]:V})),"standardWrap"),ae;switch(i){case"sqlite3":V=this.addJoinFieldCheck(V,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=V.select(o.raw(`json_arrayagg(json_object(${U}) LIMIT ${dZ()})`));break;case"mysql2":case"oracledb":ae=$(this.knex.raw(`json_arrayagg(json_object(${U}))`));break;case"mssql":{let ie=o.select("*").from({[x]:V.select(k.map(Q=>o.ref(Q[1]).as(Q[0]))).limit(dZ())});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())}},gZ=class extends MU{constructor(r,n=gHe()){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=Kv(r);return i==="sqlite3"&&(o=EHe(o)),o}}_query(r,n={}){let i=this.getSqlClient(),o={client:this.getBaseSqlClient()};(i==="sqlite3"||i==="oracledb")&&(o.useNullAsDefault=!0);let s=(0,vHe.knex)(o),u,c=new mZ(i,s,r);switch(this._operation(r)){case"CREATE":u=c.create(n);break;case"READ":u=c.read({limits:{query:this.limit,base:gHe()}});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(!SHe(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){dx(this.getSqlClient(),r,n)}},xHe=gZ;var bZ={};oe(bZ,{base:()=>qmr});function qmr(e){return{_id:Na,language:"sqlite",sql:{tables:{},options:{table_name:e}}}}a(qmr,"base");var HR={};oe(HR,{jsonFromCsvString:()=>$mr});var THe=te(require("csvtojson"));async function $mr(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,THe.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($mr,"jsonFromCsvString");var Wmr=te(require("@koa/router"));var vt={...Px,...z},AHe=a((e={})=>{c1(e.db)},"init");var cYe=te(IHe()),lYe=te(require("vm")),ote=te(oO());var Gp=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 qj=te(oO());var Kee=te(SQe());var Qa=te(require("dayjs")),xQe=te(require("dayjs/plugin/duration")),TQe=te(require("dayjs/plugin/advancedFormat")),AQe=te(require("dayjs/plugin/isoWeek")),RQe=te(require("dayjs/plugin/weekYear")),OQe=te(require("dayjs/plugin/weekOfYear")),IQe=te(require("dayjs/plugin/relativeTime")),kQe=te(require("dayjs/plugin/utc")),CQe=te(require("dayjs/plugin/timezone"));Qa.default.extend(xQe.default);Qa.default.extend(TQe.default);Qa.default.extend(AQe.default);Qa.default.extend(RQe.default);Qa.default.extend(OQe.default);Qa.default.extend(IQe.default);Qa.default.extend(kQe.default);Qa.default.extend(CQe.default);function cb(e){return typeof e=="object"&&typeof e.hash=="object"}a(cb,"isOptions");function Wee(e){return typeof e=="object"&&typeof e.options=="object"&&typeof e.app=="object"}a(Wee,"isApp");function Gee(e,t,r){if(cb(e))return Gee({},t,e);if(cb(t))return Gee(e,r,t);let n=Wee(e)?e.context:{};r=r||{},cb(r)||(t=Object.assign({},t,r)),cb(r)&&r.hash.root===!0&&(t=Object.assign({},r.data.root,t));let i=Object.assign({},n,t,r.hash);return Wee(e)||(i=Object.assign({},e,i)),Wee(e)&&e.view&&e.view.data&&(i=Object.assign({},i,e.view.data)),i}a(Gee,"getContext");function Hee(e,t,r){return cb(t)&&(r=t,t=PQe),cb(e)&&(r=e,t=null,e=null),{str:e,pattern:t,options:r}}a(Hee,"initialConfig");function DQe(e,t,r){let n=Hee(e,t,r),i={lang:"en",date:new Date(n.str)},o=Gee(this,i,{});Qa.default.locale(o.lang||o.language)}a(DQe,"setLocale");var PQe="MMMM DD, YYYY",Fj=a((e,t,r)=>{let n=Hee(e,t,r);if(n.str==null&&n.pattern==null)return Qa.default.locale("en"),(0,Qa.default)().format(PQe);DQe(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"),vO=a((e,t,r)=>{let n=Hee(e,t);DQe(n.str,n.pattern);let i=Qa.default.duration(n.str,n.pattern);return r&&!cb(r)?i.format(r):i.humanize()},"duration"),Vee=a((e,t,r)=>(0,Qa.default)(new Date(e)).diff((0,Qa.default)(new Date(t)),r),"difference"),NQe=a(e=>{let t=Vee(e,new Date().toISOString(),"ms");return vO(t,"ms")},"durationFromNow");var Uj=["#if","#unless","#each","#with","lookup","log","blockHelperMissing","each","helperMissing","if","unless","log","lookup","with"],LQe=["math","array","number","url","string","comparison","object","regex","uuid"],lb={OBJECT:"object",ALL:"all",LITERAL:"literal",JS:"js",DECODE_ID:"decodeId"},x_="%LITERAL%";var FQe={date:Fj,duration:vO,difference:Vee,durationFromNow:NQe};function UQe(e){for(let[r,n]of Object.entries(FQe))e.registerHelper(r,n);let t=[];for(let r of LQe){let n=Kee.default[r]();for(let i of Object.entries(n)){let o=i[0];Uj.indexOf(o)!==-1||t.indexOf(o)!==-1||t.push(o)}Kee.default[r]({handlebars:e})}Qee=t.concat(Object.keys(FQe))}a(UQe,"registerAll");var Qee=[];function _Er(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}a(_Er,"isJest");function fb(){return _Er()}a(fb,"isTest");var jQe=a(()=>process&&process.env.BACKEND_JS,"isTestingBackendJS"),Yee=a(()=>{process.env.BACKEND_JS="1"},"setTestingBackendJS");var SEr=/^[A-Za-z0-9]+$/g,wO=/{{([^{].*?)}}/g,Jee=/{?{{([^{].*?)}}}?/g,xEr=/{{{([^{].*?)}}}/g,EO=a(()=>fb()&&jQe()?!0:fb()?!1:typeof window>"u","isBackendService"),MQe=a(()=>process&&!process.env.NO_JS,"isJSAllowed"),BQe=a(e=>{let t=e,r=new RegExp(wO),n=new RegExp(xEr),i=t.match(n);i&&i.forEach(s=>{t=t.replace(s,"")});let o=t.match(r);return o||[]},"findDoubleHbsInstances"),qQe=a(e=>e.match(SEr),"isAlphaNumeric"),Xee=a((e,t,r,n)=>e.slice(0,t)+n+e.slice(t+r),"swapStrings");var jj=a(e=>Buffer.from(e,"base64").toString("utf-8"),"atob"),$Qe=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 Mj(e){return`
|
|
535
|
+
`);for(let o of i.filter(s=>s))e.push(iA.default.readFileSync(o))}return e.push(iA.default.readFileSync(BPe($Pe))),Buffer.concat(e.map(n=>new Uint8Array(n)))}a(XHt,"getLogReadStream");function ZHt(e){return typeof e=="object"&&e!==null&&!(e instanceof Error)}a(ZHt,"isPlainObject");function eVt(e){return e instanceof Error}a(eVt,"isError");function tVt(e){return typeof e=="string"}a(tVt,"isMessage");var Th;if(!K.DISABLE_PINO_LOGGER){let e=K.LOG_LEVEL,t={level:e,formatters:{level:c=>({level:c.toUpperCase()}),bindings:()=>K.SELF_HOSTED?{service:K.SERVICE_NAME}:{}},timestamp:()=>`,"timestamp":"${new Date(Date.now()).toISOString()}"`},r=[];r.push(K.isDev()?{stream:(0,HPe.default)({singleLine:!0}),level:e}:{stream:process.stdout,level:e}),K.SELF_HOSTED&&r.push({stream:e7(),level:e}),Th=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=>{tVt(y)&&(p=`${p} ${y}`.trimStart()),ZHt(y)&&f.push(y),eVt(y)&&(l=y)});let d=u(),h={};h={tenantId:i(),appId:o(),automationId:s(),identityId:d?._id,identityType:d?.type,correlationId:dz()};let m=r7.default.scope().active();m&&r7.default.inject(m.context(),VPe.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);Th?.info(l,f)},console.info=(...c)=>{let[l,f]=n(c);Th?.info(l,f)},console.warn=(...c)=>{let[l,f]=n(c);Th?.warn(l,f)},console.error=(...c)=>{let[l,f]=n(c);Th?.error(l,f)},console.trace=(...c)=>{let[l,f]=n(c);l.err||(l.err=new Error),Th?.trace(l,f)},console.debug=(...c)=>{let[l,f]=n(c);Th?.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=L$()}catch{}return c},"getAutomationId"),u=a(()=>{let c;try{c=Bf()}catch{}return c},"getIdentity")}var sL=Th;var rVt=["AccountError"];function nVt(e){return e&&e.suppressAlert}a(nVt,"isSuppressed");function fy(e,t){t&&rVt.includes(t.name)&&nVt(t)||console.error(`bb-alert: ${e}`,t)}a(fy,"logAlert");function iVt(e,t,r,n){e=`${e} - db: ${t} - doc: ${r} - error: `,fy(e,n)}a(iVt,"logAlertWithInfo");function nE(e,t){console.warn(`bb-warn: ${e}`,t)}a(nE,"logWarn");var uL=class extends Error{static{a(this,"UnretriableError")}constructor(t){super(t),this.name="PermanentError"}},n7=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 xc(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(),fy(`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 aVt=100,cL,aA=class e{static{a(this,"DocWritethroughProcessor")}static get queue(){return e._queue||(e._queue=new xc("docWritethroughQueue",{jobOptions:{attempts:aVt}})),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)}},i7=class{static{a(this,"DocWritethrough")}constructor(t,r){this.db=t,this._docId=r}get docId(){return this._docId}async patch(t){await aA.queue.add({dbName:this.db.name,docId:this.docId,data:t})}};function KPe(){return cL=new aA().init(),cL}a(KPe,"init");function oVt(){return cL||KPe()}a(oVt,"getProcessor");var sA={};oe(sA,{CacheKey:()=>aa,TTL:()=>hy,bustCache:()=>iE,destroy:()=>oA,get:()=>my,keys:()=>lL,store:()=>gp,withCache:()=>Ah,withCacheWithDynamicTTL:()=>QPe});function jl(e){let t=Pt();return`${e}:${t}`}a(jl,"generateTenantKey");var py=class{static{a(this,"BaseCache")}constructor(t=void 0){this.client=t}async getClient(){return this.client?this.client:await W$()}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 dy=new py,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}`},hy=(n=>(n[n.ONE_MINUTE=600]="ONE_MINUTE",n[n.ONE_HOUR=3600]="ONE_HOUR",n[n.ONE_DAY=86400]="ONE_DAY",n))(hy||{}),lL=a((...e)=>dy.keys(...e),"keys"),my=a((...e)=>dy.get(...e),"get"),gp=a((...e)=>dy.store(...e),"store"),oA=a((...e)=>dy.delete(...e),"destroy"),Ah=a((...e)=>dy.withCache(...e),"withCache"),QPe=a((...e)=>dy.withCacheWithDynamicTTL(...e),"withCacheWithDynamicTTL"),iE=a((...e)=>dy.bustCache(...e),"bustCache");var s7={};oe(s7,{createCode:()=>uVt,deleteCode:()=>lVt,getCode:()=>cVt,getExistingInvites:()=>o7,getInviteCodes:()=>JPe,updateCode:()=>sVt});var YPe=mi.fromDays(7).toSeconds();async function sVt(e,t){await(await vg()).store(e,t,YPe)}a(sVt,"updateCode");async function uVt(e,t){let r=Cn();return await(await vg()).store(r,{email:e,info:t},YPe),r}a(uVt,"createCode");async function cVt(e){let r=await(await vg()).get(e);if(!r)throw"Invitation is not valid or has expired, please request a new one.";return r}a(cVt,"getCode");async function lVt(e){await(await vg()).delete(e)}a(lVt,"deleteCode");async function JPe(){let r=(await(await vg()).scan()).map(i=>({...i.value,code:i.key}));if(!K.MULTI_TENANCY)return r;let n=Pt();return r.filter(i=>n===i.info.tenantId)}a(JPe,"getInviteCodes");async function o7(e){return(await JPe()).filter(t=>e.includes(t.email))}a(o7,"getExistingInvites");var u7={};oe(u7,{createCode:()=>pVt,getCode:()=>dVt,invalidateCode:()=>hVt});var fVt=mi.fromHours(1).toSeconds();async function pVt(e,t){let r=Cn();return await(await Tx()).store(r,{userId:e,info:t},fVt),r}a(pVt,"createCode");async function dVt(e){let r=await(await Tx()).get(e);if(!r)throw new Error("Provided information is not valid, cannot reset password - please try again.");return r}a(dVt,"getCode");async function hVt(e){await(await Tx()).delete(e)}a(hVt,"invalidateCode");var kh={};oe(kh,{getUser:()=>NA,getUsers:()=>jJt,invalidateUser:()=>LA});var Ml={};oe(Ml,{addSsoUser:()=>ZPe,addUser:()=>wVt,getUserDoc:()=>XPe,lookupTenantId:()=>mVt,removeUser:()=>EVt,updateUserDoc:()=>gVt});function gy(){return Io(bn.PLATFORM_INFO.name)}a(gy,"getPlatformDB");async function mVt(e){return K.MULTI_TENANCY?(await XPe(e)).tenantId:pi}a(mVt,"lookupTenantId");async function XPe(e){return gy().get(e)}a(XPe,"getUserDoc");async function gVt(e){await gy().put(e)}a(gVt,"updateUserDoc");function yVt(e,t){return{_id:e,tenantId:t}}a(yVt,"newUserIdDoc");function bVt(e,t,r){return{_id:t,userId:e,tenantId:r}}a(bVt,"newUserEmailDoc");function vVt(e,t,r,n){return{_id:e,userId:r,email:t,tenantId:n}}a(vVt,"newUserSsoIdDoc");async function c7(e,t){let r=gy(),n;try{await r.get(e)}catch(i){if(i.status===404)n=t(),await r.put(n);else throw i}}a(c7,"addUserDoc");async function ZPe(e,t,r,n){return c7(e,()=>vVt(e,t,r,n))}a(ZPe,"addSsoUser");async function wVt(e,t,r,n){let i=[c7(t,()=>yVt(t,e)),c7(r,()=>bVt(t,r,e))];n&&i.push(ZPe(n,r,t,e)),await Promise.all(i)}a(wVt,"addUser");async function EVt(e){let t=gy(),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(EVt,"removeUser");var eNe=te(require("node-fetch"));var uA=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";Ux.setHeader(n.headers);let o={method:t,body:i?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return await(0,eNe.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 tNe=new uA(K.INTERNAL_ACCOUNT_PORTAL_URL),rNe=K.SELF_HOSTED||K.DISABLE_ACCOUNT_PORTAL,yy=a(async e=>{if(rNe)return;let t={email:e},r=await tNe.post("/api/accounts/search",{body:t,headers:{"x-budibase-api-key":K.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by email ${e}`);return(await r.json())[0]},"getAccount"),cA=a(async e=>{if(rNe)return;let t={tenantId:e},r=await tNe.post("/api/accounts/search",{body:t,headers:{"x-budibase-api-key":K.ACCOUNT_PORTAL_API_KEY}});if(r.status!==200)throw new Error(`Error getting account by tenantId ${e}`);return(await r.json())[0]},"getAccountByTenantId");var nr={};oe(nr,{UserDB:()=>$l,addAppBuilder:()=>NJt,bulkGetGlobalUsersById:()=>jL,bulkUpdateGlobalUsers:()=>DA,cleanseUserObject:()=>V7,creatorsInList:()=>wy,doesUserExist:()=>IJt,getAccountHolderFromUsers:()=>UL,getAllUserIds:()=>RJt,getAllUsers:()=>OJt,getById:()=>Ey,getCreatorCount:()=>DJt,getExistingAccounts:()=>cE,getExistingPlatformUsers:()=>L2e,getExistingTenantUsers:()=>N2e,getFirstPlatformUser:()=>kA,getGlobalUserByAppPage:()=>q2e,getGlobalUserByEmail:()=>Mc,getPlatformUsers:()=>PL,getUserCount:()=>CJt,hasAdminPermissions:()=>Oh,hasAppBuilderPermissions:()=>j2e,hasBuilderPermissions:()=>ss,isAdmin:()=>ql,isAdminOrBuilder:()=>U2e,isAdminOrWorkspaceBuilder:()=>NL,isBuilder:()=>fE,isCreatorAsync:()=>CA,isCreatorSync:()=>LL,isGlobalBuilder:()=>F2e,paginatedUsers:()=>z2e,removeAppBuilder:()=>LJt,removePortalUserPermissions:()=>PJt,searchExistingEmails:()=>z7,searchGlobalUsersByApp:()=>ML,searchGlobalUsersByAppAccess:()=>H7,searchGlobalUsersByEmail:()=>$2e,validateUniqueUser:()=>FL});var fL=class extends Error{constructor(r,n){super(r);this.code=n}static{a(this,"BudibaseError")}},iNe=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 Ba=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}}},aE=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")}},yp=class extends Error{static{a(this,"EmailUnavailableError")}constructor(t){super(`Email already in use: '${t}'`)}};var oNe=+(K.PASSWORD_MIN_LENGTH||12),sNe=+(K.PASSWORD_MAX_LENGTH||512);function uNe(e){return!e||e.length<oNe?{valid:!1,error:`Password invalid. Minimum ${oNe} characters.`}:e.length>sNe?{valid:!1,error:`Password invalid. Maximum ${sNe} characters.`}:{valid:!0}}a(uNe,"validatePassword");var SVt=require("uuid");var xVt=K.SESSION_EXPIRY_SECONDS?parseInt(K.SESSION_EXPIRY_SECONDS):mi.fromDays(7).toSeconds();function hL(e,t){return`${e}/${t}`}a(hL,"makeSessionID");async function f7(e){return e?(await(await Xv()).scan(e)).map(n=>n.value):(console.trace("Cannot get sessions for undefined userId"),[])}a(f7,"getSessionsForUser");async function fA(e,t={}){try{let r=t?.reason||"unknown",n=t.sessionIds||[],i;if(n.length===0?i=(await f7(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 Xv(),s=[];for(let u of i)s.push(o.delete(u.key));K.isTest()||nE(`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(fA,"invalidateSessions");async function cNe(e){let t=await Xv(),r=hL(e.userId,e.sessionId);e.lastAccessedAt=new Date().toISOString(),await t.store(r,e,xVt)}a(cNe,"updateSessionTTL");async function lNe(e,t){if(!e||!t)throw new Error(`Invalid session details - ${e} - ${t}`);let n=await(await Xv()).get(hL(e,t));if(!n)throw new Error(`Session not found - ${e} - ${t}`);return n}a(lNe,"getSession");var Tt={};oe(Tt,{account:()=>l2e,action:()=>f2e,ai:()=>g2e,analytics:()=>gL,app:()=>p2e,auditLog:()=>C2e,auth:()=>DL,automation:()=>d2e,backfill:()=>A2e,backfillCache:()=>CL,backup:()=>I2e,datasource:()=>h2e,email:()=>m2e,environmentVariable:()=>k2e,group:()=>R2e,identification:()=>jc,initAsyncEvents:()=>dJt,installation:()=>SA,layout:()=>b2e,license:()=>y2e,org:()=>v2e,plugin:()=>O2e,processors:()=>d7,publishEvent:()=>fe,query:()=>w2e,role:()=>IA,rowAction:()=>D2e,rows:()=>_2e,screen:()=>E2e,serve:()=>x2e,shutdown:()=>hJt,table:()=>S2e,user:()=>us,view:()=>T2e,workspace:()=>P2e});var d7={};oe(d7,{analyticsProcessor:()=>bNe,init:()=>NVt,processors:()=>bp});var gL={};oe(gL,{enabled:()=>mL});var mL=a(async()=>yL(),"enabled");var gNe=te(z9());var TVt=a(e=>e==="served:builder"||e==="served:app:preview"||e==="served:app","isRateLimited"),AVt=a(e=>e==="served:app:preview"||e==="served:app","isPerApp");var dNe={"served:app":"calendarDay","served:app:preview":"calendarDay","served:builder":"calendarDay"},hNe=a(async e=>{if(!TVt(e))return!1;let t=await RVt(e);if(t){let r=new Date(t.timestamp);switch(dNe[e]){case"calendarDay":return r.setDate(r.getDate()+1),r.setHours(0,0,0,0),Date.now()>r.getTime()?(await pNe(e,{timestamp:Date.now()}),!1):!0}}else return await pNe(e,{timestamp:Date.now()}),!1},"limited"),mNe=a(e=>{let t=`${aa.EVENTS_RATE_LIMIT}:${e}`;return AVt(e)&&(t=t+":"+Zo()),t},"eventKey"),RVt=a(async e=>{let t=mNe(e);return await my(t)},"readEvent"),pNe=a(async(e,t)=>{let r=mNe(e),n=dNe[e],i;switch(n){case"calendarDay":i=86400}await gp(r,t,i)},"recordEvent");var IVt=["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"],pA=class{static{a(this,"PosthogProcessor")}constructor(t){if(!t)throw new Error("Posthog token is not defined");this.posthog=new gNe.PostHog(t)}async processEvent(t,r,n,i){if(IVt.includes(t)||await hNe(t))return;n=this.clearPIIProperties(n),n.version=K.VERSION,n.service=K.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 yNe=pA;var kVt=["installation:version:upgraded","installation:version:downgraded"],CVt=["installation","tenant"],dA=class{static{a(this,"AnalyticsProcessor")}constructor(){K.POSTHOG_TOKEN&&!K.isTest()&&(this.posthog=new yNe(K.POSTHOG_TOKEN))}async processEvent(t,r,n,i){!kVt.includes(t)&&!await mL()||this.posthog&&await this.posthog.processEvent(t,r,n,i)}async identify(t,r){!CVt.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 p7=K.SELF_HOSTED&&!K.isDev(),hA=class{static{a(this,"LoggingProcessor")}async processEvent(t,r,n){p7||console.log(`[audit] [identityType=${r.type}] ${t}`,n)}async identify(t){p7||console.log("[audit] identified",t)}async identifyGroup(t){p7||console.log("[audit] group identified",t)}async shutdown(){}};var oE=class e{static{a(this,"AuditLogsProcessor")}static{this.auditLogsEnabled=!1}static init(t){e.auditLogsEnabled=!0;let r=t;return e.auditLogQueue=new xc("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={};K.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&&sz(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 mA=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 bNe=new dA,DVt=new hA,PVt=new oE;function NVt(e){return oE.init(e)}a(NVt,"init");var bp=new mA([bNe,DVt,PVt]);var Rh={};oe(Rh,{checkInstallVersion:()=>DKt,getInstall:()=>xA,getInstallFromDB:()=>N7});var P7=te(D7());var xA=a(async()=>Ah(aa.INSTALLATION,86400,N7,{useTenancy:!1}),"getInstall");async function kKt(e){let t={_id:bn.PLATFORM_INFO.docs.install,installId:Cn(),version:K.VERSION};try{let r=await e.put(t);return t._rev=r.rev,t}catch(r){if(r.status===409)return N7();throw r}}a(kKt,"createInstallDoc");var N7=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 kKt(e);else throw r}return t}),"getInstallFromDB"),CKt=a(async e=>{try{await Fs(bn.PLATFORM_INFO.name,async t=>{let r=await xA();r.version=e,await t.put(r),await iE(aa.INSTALLATION)})}catch(t){if(t.status===409)return!1;throw t}return!0},"updateVersion"),DKt=a(async()=>{let e=await xA(),t=e.version,r=K.VERSION;try{if(t!==r){let n=P7.default.gt(r,t),i=P7.default.lt(r,t);await CKt(r)&&(await m0({_id:e.installId,type:"installation"},async()=>{n?await SA.upgraded(t,r):i&&await SA.downgraded(t,r)}),await jc.identifyInstallationGroup(e.installId))}}catch(n){n?.message?.includes("Invalid Version")?fy(`Invalid version "${r}" - is it semver?`):fy("Failed to retrieve version",n)}},"checkInstallVersion");var PKt=a(async()=>{let e=L4(),t=RA(),r;if(e?r=e.type:r="tenant",r==="installation"){let n=await vy(),i=TA();return{id:s2e(n,r),hosting:i,type:r,installationId:n,environment:t}}else if(r==="tenant"){let n=await vy(),i=await kL(Pt()),o=TA();return{id:s2e(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 vy(),s=n.account,u;return s?u=s.hosting:u=TA(),{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"),NKt=a(async(e,t)=>{let r=e,n="installation",i=TA(),o=K.VERSION,s=RA(),u={id:r,type:n,hosting:i,version:o,environment:s};await F7(u,t),await AA({...u,id:`$${n}_${r}`},t)},"identifyInstallationGroup"),LKt=a(async(e,t,r,n=K.VERSION)=>{let i=await kL(e),o="tenant",s=await vy(),u=RA(),c={id:i,type:o,hosting:t,environment:u,installationId:s,createdAt:r,createdVersion:n};await F7(c,r),await AA({...c,id:`$${o}_${i}`},r)},"identifyTenantGroup"),FKt=a(async(e,t,r)=>{let n=e._id,i=await kL(e.tenantId),o="user",s=ss(e),u=Oh(e),c;Wb(e)&&(c=e.providerType);let f=(await cE([e.email])).length>0,p=!!t&&f&&t.verified,d=await vy(),h=t?t.hosting:TA(),m=RA();await AA({id:n,type:o,hosting:h,installationId:d,tenantId:i,verified:p,accountHolder:f,providerType:c,builder:s,admin:u,environment:m},r)},"identifyUser"),UKt=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 vy(),l=RA();if(tk(e)){let p=await Mc(e.email);p?._id&&(t=p._id)}await AA({id:t,type:n,hosting:u,installationId:c,tenantId:r,providerType:i,verified:o,accountHolder:s,environment:l})},"identifyAccount"),AA=a(async(e,t)=>{await bp.identify(e,t)},"identify"),F7=a(async(e,t)=>{await bp.identifyGroup(e,t)},"identifyGroup"),RA=a(()=>K.isDev()?"development":K.DEPLOYMENT_ENVIRONMENT,"getDeploymentEnvironment"),TA=a(()=>K.SELF_HOSTED?"self":"cloud","getHostingFromEnv"),vy=a(async()=>jKt()?"account-portal":(await xA()).installId,"getInstallationId"),kL=a(async e=>K.SELF_HOSTED?u2e(e):e,"getEventTenantId"),u2e=a(async e=>Xo(e,()=>Ah(aa.UNIQUE_TENANT_ID,86400,async()=>{let t=Ar(),r=await tE(),n;return r.config.uniqueTenantId?r.config.uniqueTenantId:(n=`${Cn()}_${e}`,r.config.uniqueTenantId=n,r.config.createdVersion=K.VERSION,await t.put(r),n)})),"getUniqueTenantId"),jKt=a(()=>K.SERVICE==="account-portal","isAccountPortal"),s2e=a((e,t)=>t==="installation"||t==="tenant"?`$${t}_${e}`:e,"formatDistinctId"),jc={getCurrentIdentity:PKt,identifyInstallationGroup:NKt,identifyTenantGroup:LKt,identifyUser:FKt,identifyAccount:UKt,identify:AA,identifyGroup:F7,getInstallationId:vy,getUniqueTenantId:u2e};var CL={};oe(CL,{end:()=>BKt,isAlreadySent:()=>M7,isBackfillingEvent:()=>j7,recordEvent:()=>U7,start:()=>MKt});var MKt=a(async e=>$Kt({eventWhitelist:e}),"start"),U7=a(async(e,t)=>{let r=B7(e,t);await gp(r,t,void 0,{useTenancy:!1})},"recordEvent"),BKt=a(async()=>{await zKt(),await WKt()},"end"),qKt=a(async()=>my(aa.BACKFILL_METADATA),"getBackfillMetadata"),$Kt=a(async e=>gp(aa.BACKFILL_METADATA,e),"saveBackfillMetadata"),zKt=a(async()=>{await oA(aa.BACKFILL_METADATA)},"deleteBackfillMetadata"),WKt=a(async()=>{let e=B7(),t=await lL(e);for(let r of t)await oA(r,{useTenancy:!1})},"clearEvents"),j7=a(async e=>{let r=(await qKt())?.eventWhitelist;return!!(r&&r.includes(e))},"isBackfillingEvent"),M7=a(async(e,t)=>{let r=B7(e,t);return!!await my(r,{useTenancy:!1})},"isAlreadySent"),GKt={"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}`},B7=a((e,t)=>{let r,n=Pt();if(e){r=`${aa.EVENTS}:${n}:${e}`;let i=GKt[e],o=i?i(t):void 0;o&&(r=`${r}:${o}`)}else r=`${aa.EVENTS}:${n}:*`;return r},"getEventKey");var OA;function q7(){OA=new xc("systemEventQueue",{jobTags:e=>({"event.name":e.event})})}a(q7,"init");async function c2e(e){OA||q7();let{event:t,identity:r}=e;Xoe.indexOf(t)!==-1&&r.tenantId&&await OA.add(e)}a(c2e,"publishAsyncEvent");var fe=a(async(e,t,r,n)=>{let i=n||await jc.getCurrentIdentity();if(!(n?!1:await j7(e))){await c2e({event:e,identity:i,properties:t,timestamp:r}),await bp.processEvent(e,i,t,r);return}await M7(e,t)||(await bp.processEvent(e,i,t,r),await U7(e,t))},"publishEvent");async function HKt(e,t){let r={tenantId:e.tenantId};await fe("account:created",r,void 0,t)}a(HKt,"created");async function VKt(e){let t={tenantId:e.tenantId};await fe("account:deleted",t)}a(VKt,"deleted");async function KKt(e){let t={tenantId:e.tenantId};await fe("account:verified",t)}a(KKt,"verified");var l2e={created:HKt,deleted:VKt,verified:KKt};async function QKt(e,t){await fe("action:automation_step:executed",e,t)}a(QKt,"automationStepExecuted");async function YKt(e,t){await fe("action:crud:executed",e,t)}a(YKt,"crudExecuted");async function JKt(e,t){await fe("action:ai_agent:executed",e,t)}a(JKt,"aiAgentExecuted");var f2e={aiAgentExecuted:JKt,automationStepExecuted:QKt,crudExecuted:YKt};var XKt=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 ZKt(e){let t={appId:e.appId,version:e.version,audited:{name:e.name}};await fe("app:updated",t)}a(ZKt,"updated");async function eQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:deleted",t)}a(eQt,"deleted");async function tQt(e,t){let r={appId:e.appId,audited:{name:e.name}};await fe("app:published",r,t)}a(tQt,"published");async function rQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:unpublished",t)}a(rQt,"unpublished");async function nQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:file:imported",t)}a(nQt,"fileImported");async function iQt(e,t){let r={duplicateAppId:t,appId:e.appId,audited:{name:e.name}};await fe("app:duplicated",r)}a(iQt,"duplicated");async function aQt(e,t){let r={appId:e.appId,templateKey:t,audited:{name:e.name}};await fe("app:template:imported",r)}a(aQt,"templateImported");async function oQt(e,t,r){let n={appId:e.appId,currentVersion:t,updatedToVersion:r,audited:{name:e.name}};await fe("app:version:updated",n)}a(oQt,"versionUpdated");async function sQt(e,t,r){let n={appId:e.appId,currentVersion:t,revertedToVersion:r,audited:{name:e.name}};await fe("app:version:reverted",n)}a(sQt,"versionReverted");async function uQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:reverted",t)}a(uQt,"reverted");async function cQt(e){let t={appId:e.appId,audited:{name:e.name}};await fe("app:exported",t)}a(cQt,"exported");var p2e={created:XKt,updated:ZKt,deleted:eQt,published:tQt,unpublished:rQt,fileImported:nQt,duplicated:iQt,templateImported:aQt,versionUpdated:oQt,versionReverted:sQt,reverted:uQt,exported:cQt};async function lQt(e,t){let n={userId:(await jc.getCurrentIdentity()).id,source:e,audited:{email:t}};await fe("auth:login",n)}a(lQt,"login");async function fQt(e){let r={userId:(await jc.getCurrentIdentity()).id,audited:{email:e}};await fe("auth:logout",r)}a(fQt,"logout");async function pQt(e,t){let r={type:e};await fe("auth:sso:created",r,t)}a(pQt,"SSOCreated");async function dQt(e){let t={type:e};await fe("auth:sso:updated",t)}a(dQt,"SSOUpdated");async function hQt(e,t){let r={type:e};await fe("auth:sso:activated",r,t)}a(hQt,"SSOActivated");async function mQt(e){let t={type:e};await fe("auth:sso:deactivated",t)}a(mQt,"SSODeactivated");var DL={login:lQt,logout:fQt,SSOCreated:pQt,SSOUpdated:dQt,SSOActivated:hQt,SSODeactivated:mQt};async function gQt(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(gQt,"created");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:trigger:updated",t)}a(yQt,"triggerUpdated");async function bQt(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(bQt,"deleted");async function vQt(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(vQt,"tested");var wQt=a(async(e,t)=>{let r={count:e};await fe("automations:run",r,t)},"run");async function EQt(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(EQt,"stepCreated");async function _Qt(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(_Qt,"stepDeleted");var d2e={created:gQt,triggerUpdated:yQt,deleted:bQt,tested:vQt,run:wQt,stepCreated:EQt,stepDeleted:_Qt};function $7(e){return!Object.values(ma).includes(e.source)}a($7,"isCustom");async function SQt(e,t){let r={datasourceId:e._id,source:e.source,custom:$7(e)};await fe("datasource:created",r,t)}a(SQt,"created");async function xQt(e){let t={datasourceId:e._id,source:e.source,custom:$7(e)};await fe("datasource:updated",t)}a(xQt,"updated");async function TQt(e){let t={datasourceId:e._id,source:e.source,custom:$7(e)};await fe("datasource:deleted",t)}a(TQt,"deleted");var h2e={created:SQt,updated:xQt,deleted:TQt};async function AQt(e){let t={};await fe("email:smtp:created",t,e)}a(AQt,"SMTPCreated");async function RQt(){let e={};await fe("email:smtp:updated",e)}a(RQt,"SMTPUpdated");var m2e={SMTPCreated:AQt,SMTPUpdated:RQt};async function OQt(e){let t={};await fe("ai:config:created",t,e)}a(OQt,"AIConfigCreated");async function IQt(){let e={};await fe("ai:config:updated",e)}a(IQt,"AIConfigUpdated");var g2e={AIConfigCreated:OQt,AIConfigUpdated:IQt};async function kQt(e,t){let r={accountId:e.accountId,...t};await fe("license:plan:changed",r)}a(kQt,"planChanged");async function CQt(e){let t={accountId:e.accountId};await fe("license:activated",t)}a(CQt,"activated");async function DQt(e){let t={accountId:e.accountId};await fe("license:checkout:opened",t)}a(DQt,"checkoutOpened");async function PQt(e){let t={accountId:e.accountId};await fe("license:checkout:success",t)}a(PQt,"checkoutSuccess");async function NQt(e){let t={accountId:e.accountId};await fe("license:portal:opened",t)}a(NQt,"portalOpened");async function LQt(e){let t={accountId:e.accountId};await fe("license:payment:failed",t)}a(LQt,"paymentFailed");async function FQt(e){let t={accountId:e.accountId};await fe("license:payment:recovered",t)}a(FQt,"paymentRecovered");var y2e={planChanged:kQt,activated:CQt,checkoutOpened:DQt,checkoutSuccess:PQt,portalOpened:NQt,paymentFailed:LQt,paymentRecovered:FQt};async function UQt(e,t){let r={layoutId:e._id};await fe("layout:created",r,t)}a(UQt,"created");async function jQt(e){let t={layoutId:e};await fe("layout:deleted",t)}a(jQt,"deleted");var b2e={created:UQt,deleted:jQt};async function MQt(e){let t={};await fe("org:info:name:updated",t,e)}a(MQt,"nameUpdated");async function BQt(e){let t={};await fe("org:info:logo:updated",t,e)}a(BQt,"logoUpdated");async function qQt(e){let t={};await fe("org:platformurl:updated",t,e)}a(qQt,"platformURLUpdated");async function $Qt(){let e={};await fe("analytics:opt:out",e)}a($Qt,"analyticsOptOut");async function zQt(){let e={};await fe("analytics:opt:out",e)}a(zQt,"analyticsOptIn");var v2e={nameUpdated:MQt,logoUpdated:BQt,platformURLUpdated:qQt,analyticsOptOut:$Qt,analyticsOptIn:zQt};var WQt=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"),GQt=a(async(e,t)=>{let r={queryId:t._id,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:updated",r)},"updated"),HQt=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"),VQt=a(async(e,t,r)=>{let n={datasourceId:e._id,source:e.source,count:r,importSource:t};await fe("query:import",n)},"imported"),KQt=a(async(e,t)=>{let r={count:e};await fe("queries:run",r,t)},"run"),QQt=a(async(e,t)=>{let r={queryId:t.queryId,datasourceId:e._id,source:e.source,queryVerb:t.queryVerb};await fe("query:previewed",r)},"previewed"),w2e={created:WQt,updated:GQt,deleted:HQt,imported:VQt,run:KQt,previewed:QQt};async function YQt(e,t){let r={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:created",r,t)}a(YQt,"created");async function JQt(e){let t={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:updated",t)}a(JQt,"updated");async function XQt(e){let t={roleId:e._id,permissionId:e.permissionId,inherits:e.inherits};await fe("role:deleted",t)}a(XQt,"deleted");async function ZQt(e,t,r){let n={userId:e._id,roleId:t};await fe("role:assigned",n,r)}a(ZQt,"assigned");async function eYt(e,t){let r={userId:e._id,roleId:t};await fe("role:unassigned",r)}a(eYt,"unassigned");var IA={created:YQt,updated:JQt,deleted:XQt,assigned:ZQt,unassigned:eYt};async function tYt(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(tYt,"created");async function rYt(e){let t={layoutId:e.layoutId,screenId:e._id,roleId:e.routing.roleId,audited:{name:e.routing?.route}};await fe("screen:deleted",t)}a(rYt,"deleted");var E2e={created:tYt,deleted:rYt};var nYt=a(async(e,t)=>{let r={count:e};await fe("rows:created",r,t)},"created"),iYt=a(async(e,t)=>{let r={tableId:e._id,count:t};await fe("rows:imported",r)},"imported"),_2e={created:nYt,imported:iYt};async function aYt(e,t){let r={tableId:e._id,audited:{name:e.name}};await fe("table:created",r,t)}a(aYt,"created");async function oYt(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(oYt,"updated");async function sYt(e,t){let r={tableId:e._id,audited:{name:e.name},appId:t};await fe("table:deleted",r)}a(sYt,"deleted");async function uYt(e,t){let r={tableId:e._id,format:t,audited:{name:e.name}};await fe("table:exported",r)}a(uYt,"exported");async function cYt(e){let t={tableId:e._id,audited:{name:e.name}};await fe("table:imported",t)}a(cYt,"imported");var S2e={created:aYt,updated:oYt,deleted:sYt,exported:uYt,imported:cYt};async function lYt(e){let t={timezone:e};await fe("served:builder",t)}a(lYt,"servedBuilder");async function fYt(e,t,r){let n={appVersion:e.version,timezone:t,embed:r===!0};await fe("served:app",n)}a(fYt,"servedApp");async function pYt(e,t){let r={appId:e.appId,appVersion:e.version,timezone:t};await fe("served:app:preview",r)}a(pYt,"servedAppPreview");var x2e={servedBuilder:lYt,servedApp:fYt,servedAppPreview:pYt};async function dYt(e,t){let r={userId:e._id,viaScim:_c(),audited:{email:e.email}};await fe("user:created",r,t)}a(dYt,"created");async function hYt(e){let t={userId:e._id,viaScim:_c(),audited:{email:e.email}};await fe("user:updated",t)}a(hYt,"updated");async function mYt(e){let t={userId:e._id,viaScim:_c(),audited:{email:e.email}};await fe("user:deleted",t)}a(mYt,"deleted");async function gYt(e,t){let r={userId:e._id,audited:{email:e.email}};await fe("user:admin:assigned",r,t)}a(gYt,"permissionAdminAssigned");async function yYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:admin:removed",t)}a(yYt,"permissionAdminRemoved");async function bYt(e,t){let r={userId:e._id,audited:{email:e.email}};await fe("user:builder:assigned",r,t)}a(bYt,"permissionBuilderAssigned");async function vYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:builder:removed",t)}a(vYt,"permissionBuilderRemoved");async function wYt(e){let t={audited:{email:e}};await fe("user:invited",t)}a(wYt,"invited");async function EYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:invite:accepted",t)}a(EYt,"inviteAccepted");async function _Yt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:force:reset",t)}a(_Yt,"passwordForceReset");async function SYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:updated",t)}a(SYt,"passwordUpdated");async function xYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:reset:requested",t)}a(xYt,"passwordResetRequested");async function TYt(e){let t={userId:e._id,audited:{email:e.email}};await fe("user:password:reset",t)}a(TYt,"passwordReset");async function AYt(e){let t={users:e};await fe("user:data:collaboration",t)}a(AYt,"dataCollaboration");var us={created:dYt,updated:hYt,deleted:mYt,permissionAdminAssigned:gYt,permissionAdminRemoved:yYt,permissionBuilderAssigned:bYt,permissionBuilderRemoved:vYt,invited:wYt,inviteAccepted:EYt,passwordForceReset:_Yt,passwordUpdated:SYt,passwordResetRequested:xYt,passwordReset:TYt,dataCollaboration:AYt};async function RYt(e,t){let r={name:e.name,type:e.type,tableId:e.tableId};await fe("view:created",r,t)}a(RYt,"created");async function OYt(e){let t={tableId:e.tableId};await fe("view:updated",t)}a(OYt,"updated");async function IYt(e,t){let r={...Ye.views.isV2(e)?{id:e.id,tableId:e.tableId,appId:t}:{}};await fe("view:deleted",r)}a(IYt,"deleted");async function kYt(e,t){let r={tableId:e._id,format:t};await fe("view:exported",r)}a(kYt,"exported");async function CYt({tableId:e,filterGroups:t},r){let n={tableId:e,filterGroups:t};await fe("view:filter:created",n,r)}a(CYt,"filterCreated");async function DYt({tableId:e,filterGroups:t}){let r={tableId:e,filterGroups:t};await fe("view:filter:updated",r)}a(DYt,"filterUpdated");async function PYt(e){let t={tableId:e.tableId};await fe("view:filter:deleted",t)}a(PYt,"filterDeleted");async function NYt({tableId:e,calculationType:t},r){let n={tableId:e,calculation:t};await fe("view:calculation:created",n,r)}a(NYt,"calculationCreated");async function LYt(e){let t={tableId:e.tableId,calculation:e.calculation};await fe("view:calculation:updated",t)}a(LYt,"calculationUpdated");async function FYt(e){let t={tableId:e.tableId,calculation:e.calculation};await fe("view:calculation:deleted",t)}a(FYt,"calculationDeleted");async function UYt(e,t){let r={tableId:e};await fe("view:join:created",r,t)}a(UYt,"viewJoinCreated");var T2e={created:RYt,updated:OYt,deleted:IYt,exported:kYt,filterCreated:CYt,filterUpdated:DYt,filterDeleted:PYt,calculationCreated:NYt,calculationUpdated:LYt,calculationDeleted:FYt,viewJoinCreated:UYt};async function jYt(e){let t={currentVersion:e};await fe("installation:version:checked",t)}a(jYt,"versionChecked");async function MYt(e,t){let r={from:e,to:t};await fe("installation:version:upgraded",r)}a(MYt,"upgraded");async function BYt(e,t){let r={from:e,to:t};await fe("installation:version:downgraded",r)}a(BYt,"downgraded");async function qYt(){let e={};await fe("installation:firstStartup",e)}a(qYt,"firstStartup");var SA={versionChecked:jYt,upgraded:MYt,downgraded:BYt,firstStartup:qYt};var lE=!K.SELF_HOSTED&&!K.isDev();async function $Yt(e){lE||await fe("app:backfill:succeeded",e)}a($Yt,"appSucceeded");async function zYt(e){if(lE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("app:backfill:failed",t)}a(zYt,"appFailed");async function WYt(e){lE||await fe("tenant:backfill:succeeded",e)}a(WYt,"tenantSucceeded");async function GYt(e){if(lE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("tenant:backfill:failed",t)}a(GYt,"tenantFailed");async function HYt(){if(lE)return;let e={};await fe("installation:backfill:succeeded",e)}a(HYt,"installationSucceeded");async function VYt(e){if(lE)return;let t={error:JSON.stringify(e,Object.getOwnPropertyNames(e))};await fe("installation:backfill:failed",t)}a(VYt,"installationFailed");var A2e={appSucceeded:$Yt,appFailed:zYt,tenantSucceeded:WYt,tenantFailed:GYt,installationSucceeded:HYt,installationFailed:VYt};async function KYt(e,t){let r={groupId:e._id,viaScim:_c(),audited:{name:e.name}};await fe("user_group:created",r,t)}a(KYt,"created");async function QYt(e){let t={groupId:e._id,viaScim:_c(),audited:{name:e.name}};await fe("user_group:updated",t)}a(QYt,"updated");async function YYt(e){let t={groupId:e._id,viaScim:_c(),audited:{name:e.name}};await fe("user_group:deleted",t)}a(YYt,"deleted");async function JYt(e,t){let r={count:e,groupId:t._id,viaScim:_c(),audited:{name:t.name}};await fe("user_group:user_added",r)}a(JYt,"usersAdded");async function XYt(e,t){let r={count:e,groupId:t._id,viaScim:_c(),audited:{name:t.name}};await fe("user_group:users_deleted",r)}a(XYt,"usersDeleted");async function ZYt(e){let t={groupId:e,onboarding:!0};await fe("user_group:onboarding_added",t)}a(ZYt,"createdOnboarding");async function eJt(e){let t={permissions:e.roles,groupId:e._id,audited:{name:e.name}};await fe("user_group:permissions_edited",t)}a(eJt,"permissionsEdited");var R2e={created:KYt,updated:QYt,deleted:YYt,usersAdded:JYt,usersDeleted:XYt,createdOnboarding:ZYt,permissionsEdited:eJt};async function tJt(e){let t={type:e.schema.type,name:e.name,description:e.description,version:e.version};await fe("plugin:init",t)}a(tJt,"init");async function rJt(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(rJt,"imported");async function nJt(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(nJt,"deleted");var O2e={init:tJt,imported:rJt,deleted:nJt};async function iJt(e){let t={appId:e.appId,restoreId:e._id,backupCreatedAt:e.timestamp,name:e.name};await fe("app:backup:restored",t)}a(iJt,"appBackupRestored");async function aJt(e,t,r,n,i){let o={appId:e,backupId:t,type:r,trigger:n,name:i};await fe("app:backup:triggered",o)}a(aJt,"appBackupTriggered");var I2e={appBackupRestored:iJt,appBackupTriggered:aJt};async function oJt(e,t){let r={name:e,environments:t};await fe("environment_variable:created",r)}a(oJt,"created");async function sJt(e){let t={name:e};await fe("environment_variable:deleted",t)}a(sJt,"deleted");async function uJt(e){let t={userId:e};await fe("environment_variable:upgrade_panel_opened",t)}a(uJt,"upgradePanelOpened");var k2e={created:oJt,deleted:sJt,upgradePanelOpened:uJt};async function cJt(e){let t={filters:e};await fe("audit_log:filtered",t)}a(cJt,"filtered");async function lJt(e){let t={filters:e};await fe("audit_log:downloaded",t)}a(lJt,"downloaded");var C2e={filtered:cJt,downloaded:lJt};async function fJt(e,t){await fe("row_action:created",e,t)}a(fJt,"created");var D2e={created:fJt};async function pJt(e,t){let r={workspaceAppId:e._id,audited:{name:e.name},appId:t};await fe("workspace_app:deleted",r)}a(pJt,"deleted");var P2e={deleted:pJt};function dJt(){}a(dJt,"initAsyncEvents");var hJt=a(async()=>{await bp.shutdown(),console.log("Events shutdown")},"shutdown");var Ih={};oe(Ih,{creatorsInList:()=>wy,getAccountHolderFromUsers:()=>UL,hasAdminPermissions:()=>Oh,hasAppBuilderPermissions:()=>j2e,hasBuilderPermissions:()=>ss,isAdmin:()=>ql,isAdminOrBuilder:()=>U2e,isAdminOrWorkspaceBuilder:()=>NL,isBuilder:()=>fE,isCreatorAsync:()=>CA,isCreatorSync:()=>LL,isGlobalBuilder:()=>F2e,validateUniqueUser:()=>FL});async function z7(e){let t=[],r=await N2e(e);t.push(...r.map(s=>s.email));let n=await L2e(e);t.push(...n.map(s=>s._id));let i=await cE(e);t.push(...i.map(s=>s.email));let o=await o7(e);return t.push(...o.map(s=>s.email)),[...new Set(t.map(s=>s.toLowerCase()))]}a(z7,"searchExistingEmails");async function PL(e){return await kx("platform_users_lowercase_2",{keys:[e.toLowerCase()],include_docs:!0})}a(PL,"getPlatformUsers");async function kA(e){return(await PL(e))[0]??null}a(kA,"getFirstPlatformUser");async function N2e(e){let r={keys:e.map(i=>i.toLowerCase()),include_docs:!0},n={arrayResponse:!0};return await Xf("by_email2",r,void 0,n)}a(N2e,"getExistingTenantUsers");async function L2e(e){let r={keys:e.map(n=>n.toLowerCase()),include_docs:!0};return await kx("platform_users_lowercase_2",r)}a(L2e,"getExistingPlatformUsers");async function cE(e){let r={keys:e.map(n=>n.toLowerCase()),include_docs:!0};return await kx("account_by_email",r)}a(cE,"getExistingAccounts");var fE=Yi.users.isBuilder,ql=Yi.users.isAdmin,F2e=Yi.users.isGlobalBuilder,U2e=Yi.users.isAdminOrBuilder,Oh=Yi.users.hasAdminPermissions,ss=Yi.users.hasBuilderPermissions,j2e=Yi.users.hasAppBuilderPermissions,NL=Yi.users.isAdminOrWorkspaceBuilder;async function wy(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(wy,"creatorsInList");async function CA(e){let t=[];return e.userGroups&&(t=await Ar().getMultiple(e.userGroups)),LL(e,t)}a(CA,"isCreatorAsync");function LL(e,t){let r=Yi.users.isCreator(e);return!r&&e?mJt(e,t):r}a(LL,"isCreatorSync");function mJt(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(mJt,"isCreatorByGroupMembership");async function FL(e,t){if(K.MULTI_TENANCY){let r=await kA(e);if(r!=null&&r.tenantId!==t)throw new yp(e)}if(!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let r=await yy(e);if(r&&r.verified&&r.tenantId!==t)throw new yp(e)}}a(FL,"validateUniqueUser");async function UL(e){if(!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let t=await cE(e.map(r=>r.email));return e.find(r=>t.map(n=>n.email).includes(r.email))}}a(UL,"getAccountHolderFromUsers");var W7=a(async e=>{await us.deleted(e),ss(e)&&await us.permissionBuilderRemoved(e),Oh(e)&&await us.permissionAdminRemoved(e)},"handleDeleteEvents"),gJt=a(async(e,t,r)=>{for(let[n,i]of Object.entries(t))(!r||r[n]!==i)&&await IA.assigned(e,i)},"assignAppRoleEvents"),yJt=a(async(e,t,r)=>{if(r)for(let[n,i]of Object.entries(r))(!t||t[n]!==i)&&await IA.unassigned(e,i)},"unassignAppRoleEvents"),bJt=a(async(e,t)=>{let r=e.roles,n=t?.roles;await gJt(e,r,n),await yJt(e,r,n)},"handleAppRoleEvents"),G7=a(async(e,t)=>{let r=Pt(),n;!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL&&(n=await cA(r)),await jc.identifyUser(e,n),t?(await us.updated(e),wJt(e,t)&&await us.permissionBuilderRemoved(e),_Jt(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),vJt(e,t)&&await us.permissionBuilderAssigned(e),EJt(e,t)&&await us.permissionAdminAssigned(e),await bJt(e,t)},"handleSaveEvents"),vJt=a((e,t)=>M2e(e,t,ss),"isAddingBuilder"),wJt=a((e,t)=>B2e(e,t,ss),"isRemovingBuilder"),EJt=a((e,t)=>M2e(e,t,Oh),"isAddingAdmin"),_Jt=a((e,t)=>B2e(e,t,Oh),"isRemovingAdmin"),M2e=a((e,t,r)=>!(!r(e)||t&&r(t)),"isAddingPermission"),B2e=a((e,t,r)=>!(r(e)||!t||!r(t)),"isRemovingPermission");var TJt=a(async e=>{let t=e._id;await Ml.removeUser(e),await W7(e),await kh.invalidateUser(t),await fA(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 K.ENABLE_SSO_MAINTENANCE_MODE&&ql(t)?!1:await e.features.isSSOEnforced()||Wb(t)?!0:(r||(r=await cA(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=uNe(s);if(!p.valid)throw new Re(p.error,400)}c=r.hashPassword?await P4(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||Zv();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(wg(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 H7(t.appId,{limit:t.limit||50})}static async getUserByEmail(t){return Mc(t)}static async getUser(t){let r=await Ey(t);return r&&delete r.password,r}static async bulkGet(t){return await jL(t)}static async bulkUpdate(t){return await DA(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 Ey(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 Mc(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 wy([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=V7(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 G7(d,l),l&&d.email!==l.email&&await Ml.removeUser({email:l.email}),await Ml.addUser(n,d._id,d.email,d.ssoId),await kh.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 z7(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 CA(d)&&s.push(d)}let f=await cA(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 DA(d);for(let m of d)await Ml.addUser(n,m._id,m.email),await G7(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 DA(u),f=(await wy(s)).filter(h=>h).length,p=[];for(let h of s){let g=(await kA(h._id)).ssoId;g&&(await PL(g)).filter(b=>b.ssoId==null).forEach(b=>{p.push({...b,_deleted:!0})}),await TJt(h)}await gy().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(!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let s=n.email;if(await yy(s))throw n.userId===Bf()._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 CA(n)?1:0;await e.quotas.removeUsers(1,o),await W7(n),await kh.invalidateUser(i),await fA(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 iE(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 PA(e){return Array.isArray(e)?e.map(t=>{if(t)return delete t.password,t}):e&&(delete e.password,e)}a(PA,"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=PA(n)),n}a(jL,"bulkGetGlobalUsersById");async function RJt(){let e=Ar(),t=`us${Me}`;return(await e.allDocs({startkey:t,endkey:`${t}${Pa}`})).rows.map(n=>n.id)}a(RJt,"getAllUserIds");async function OJt(){let e=Ar(),t=`us${Me}`;return(await e.allDocs({startkey:t,endkey:`${t}${Pa}`,include_docs:!0})).rows.map(n=>n.doc)}a(OJt,"getAllUsers");async function DA(e){return await Ar().bulkDocs(e)}a(DA,"bulkUpdateGlobalUsers");async function Ey(e,t){let n=await Ar().get(e);return t?.cleanup&&(n=PA(n)),n}a(Ey,"getById");async function Mc(e,t){if(e==null)throw"Must supply an email address to view";let r=await Xf("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=PA(n)),n}a(Mc,"getGlobalUserByEmail");async function IJt(e){try{let t=await Mc(e);if(Array.isArray(t)||t!=null)return!0}catch{return!1}return!1}a(IJt,"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 Xf("by_app",n);i||(i=[]);let o=Array.isArray(i)?i:[i];return r?.cleanup&&(o=PA(o)),o}a(ML,"searchGlobalUsersByApp");async function H7(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(H7,"searchGlobalUsersByAppAccess");function q2e(e,t){if(t)return v1(Us(e),t._id)}a(q2e,"getGlobalUserByAppPage");async function $2e(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 Xf("by_email2",{...t,startkey:i,endkey:`${n}${Pa}`});o||(o=[]);let s=Array.isArray(o)?o:[o];return r?.cleanup&&(s=PA(s)),s}a($2e,"searchGlobalUsersByEmail");var kJt=8;async function z2e({bookmark:e,query:t,appId:r,limit:n}={}){let i=Ar(),o=n??kJt,u={include_docs:!0,limit:o+1};e&&(u.startkey=e);let c,l="_id",f;return t?.equal?._id?c=[await Ey(t.equal._id)]:r?(c=await ML(r,u),f=a(p=>q2e(r,p),"getKey")):t?.string?.email?(c=await $2e(t?.string?.email,u),l="email"):t?.oneOf?._id?c=await jL(t?.oneOf?._id,{cleanup:!0}):t?(c=(await i.allDocs(wg(null,{...u,limit:void 0}))).rows.map(d=>d.doc),c=Lr.search(c,{query:t,limit:u.limit}).rows):c=(await i.allDocs(wg(null,u))).rows.map(d=>d.doc),J$(c,o,{paginate:!0,property:l,getKey:f})}a(z2e,"paginatedUsers");async function CJt(){return(await ez("by_email2",{limit:0,include_docs:!1})).total_rows}a(CJt,"getUserCount");async function DJt(){let e=0;async function t(r){let n=await z2e({bookmark:r}),i=await wy(n.data);e+=i.filter(o=>o).length,n.hasNextPage&&await t(n.nextPage)}return a(t,"iterate"),await t(),e}a(DJt,"getCreatorCount");function PJt(e){return delete e.admin,delete e.builder,e}a(PJt,"removePortalUserPermissions");function V7(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(V7,"cleanseUserObject");async function NJt(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(NJt,"addAppBuilder");async function LJt(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(LJt,"removeAppBuilder");var W2e=3600;async function FJt(e,t){let n=await iz(t).get(e);if(n.budibaseAccess=!0,!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let i=await yy(n.email);i&&(n.account=i,n.accountPortalAccess=!0)}return n}a(FJt,"populateFromDB");async function UJt(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,!K.SELF_HOSTED&&!K.DISABLE_ACCOUNT_PORTAL){let o=await yy(i.email);o&&(i.account=o,i.accountPortalAccess=!0)}})),r.length?{users:n,notFoundIds:r}:{users:n}}a(UJt,"populateUsersFromDB");async function NA({userId:e,tenantId:t,email:r,populateUser:n}){if(n||(n=FJt),!t)try{t=Pt()}catch{t=await Ml.lookupTenantId(e)}let i=await xx(),o=await i.get(e);return o||(o=await n(e,t,r),await i.store(e,o,W2e)),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(NA,"getUser");async function jJt(e){let t=await xx(),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 UJt(n);o=s.notFoundIds;for(let u of s.users)await t.store(u._id,u,W2e);i.push(...s.users)}return{users:i,notFoundIds:o}}a(jJt,"getUsers");async function LA(e){await(await xx()).delete(e)}a(LA,"invalidateUser");var hK={};oe(hK,{Writethrough:()=>fK});var Bc={};oe(Bc,{AUTO_EXTEND_POLLING_MS:()=>RUe,doWithLock:()=>cK,newRedlock:()=>xy});var AUe=te(TUe());async function aXt(e,t){if(e==="custom")return xy(t);switch(e){case"try_once":return xy(gE.TRY_ONCE);case"try_twice":return xy(gE.TRY_TWICE);case"default":return xy(gE.DEFAULT);case"delay_500":return xy(gE.DELAY_500);case"auto_extend":return xy(gE.AUTO_EXTEND);default:throw zt.unreachable(e)}}a(aXt,"getClient");var gE={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 xy(e={}){let t={...gE.DEFAULT,...e},n=(await H$()).client;return new AUe.default([n],t)}a(xy,"newRedlock");function oXt(e){let r=`lock:${e.systemLock?"system":Pt()}_${e.name}`;return e.resource&&(r=r+`_${e.resource}`),r}a(oXt,"getLockName");var RUe=mi.fromSeconds(10).toMs();async function cK(e,t){let r=await aXt(e.type,e.customOptions),n,i;try{let o=oXt(e),s=e.type==="auto_extend"?RUe: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(cK,"doWithLock");var OUe=1e4,lK=null;async function VL(){if(!lK){let e=await G$();lK=new py(e)}return lK}a(VL,"getCache");function jA(e,t){return e.name+t}a(jA,"makeCacheKey");function dK(e,t=null){return{doc:e,lastWrite:t||Date.now()}}a(dK,"makeCacheItem");async function sXt(e,t,r=OUe){let n=await VL(),i=t._id,o;i&&(o=await n.get(jA(e,i)));let s=!o||o.lastWrite<Date.now()-r,u=t;return s&&((await cK({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;nE("Ignoring conflict in write-through cache")}})).executed||nE("Ignoring redlock conflict in write-through cache")),o=dK(u,s?null:o?.lastWrite),u._id&&await n.store(jA(e,u._id),o),{ok:!0,id:u._id,rev:u._rev}}a(sXt,"put");async function uXt(e,t){let r=await VL(),n=jA(e,t),i=await r.get(n);if(!i){let o=await e.get(t);i=dK(o),await r.store(n,i)}return i.doc}a(uXt,"get");async function cXt(e,t){let r=await VL(),n=jA(e,t),i=await r.get(n);if(!i){let o=await e.tryGet(t);if(!o)return null;i=dK(o),await r.store(n,i)}return i.doc}a(cXt,"tryGet");async function lXt(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(jA(e,i))}finally{await e.remove(i,r)}}a(lXt,"remove");var fK=class{static{a(this,"Writethrough")}constructor(t,r=OUe){this.db=t,this.writeRateMs=r}async put(t,r=this.writeRateMs){return sXt(this.db,t,r)}async get(t){return uXt(this.db,t)}async tryGet(t){return cXt(this.db,t)}async remove(t,r){return lXt(this.db,t,r)}};function QL(e){return`config${Me}${e}`}a(QL,"generateConfigID");async function Pu(e){let t=Ar();try{return await t.get(QL(e))}catch(r){if(r.status===404)return;throw r}}a(Pu,"getConfig");async function fXt(e){return e._id||(e._id=QL(e.type)),Ar().put(e)}a(fXt,"save");async function tE(){let e=await Pu("settings");return e||(e={_id:QL("settings"),type:"settings",config:{}}),e.config.platformUrl=await MA({tenantAware:!0,config:e.config}),e.config.analyticsEnabled=await yL({config:e.config}),e}a(tE,"getSettingsConfigDoc");async function gK(){return(await tE()).config}a(gK,"getSettingsConfig");async function MA(e={tenantAware:!0}){let t=K.PLATFORM_URL||"http://localhost:10000";if(!K.SELF_HOSTED&&K.MULTI_TENANCY&&e.tenantAware){let r=Pt();t.includes("localhost:")||(t=t.replace("://",`://${r}.`))}else if(K.SELF_HOSTED){let r=e?.config?e.config:(await Pu("settings"))?.config;r?.platformUrl&&(t=r.platformUrl)}return t}a(MA,"getPlatformUrl");var yL=a(async e=>{if(!K.SELF_HOSTED)return!!K.ENABLE_ANALYTICS;let t=await Ah(aa.ANALYTICS_ENABLED,86400,async()=>{let n=e?.config?e.config:(await Pu("settings"))?.config;if(n?.analyticsEnabled===!1)return!1;if(n?.analyticsEnabled===!0)return!0});if(t!==void 0)return t;let r=K.ENABLE_ANALYTICS;return!(r===0||r===!1)},"analyticsEnabled");async function pXt(){return await Pu("google")}a(pXt,"getGoogleConfigDoc");async function YL(){return(await pXt())?.config}a(YL,"getGoogleConfig");async function yK(){if(!K.SELF_HOSTED)return mK();let e=await YL();return(!e||!e.activated)&&(e=mK()),e}a(yK,"getGoogleDatasourceConfig");function mK(){if(K.GOOGLE_CLIENT_ID&&K.GOOGLE_CLIENT_SECRET)return{clientID:K.GOOGLE_CLIENT_ID,clientSecret:K.GOOGLE_CLIENT_SECRET,activated:!0}}a(mK,"getDefaultGoogleConfig");async function dXt(){return Pu("logos_oidc")}a(dXt,"getOIDCLogosDoc");async function hXt(){return Pu("oidc")}a(hXt,"getOIDCConfigDoc");async function mXt(){let e=(await hXt())?.config;return e?.configs&&e.configs[0]}a(mXt,"getOIDCConfig");async function bK(e){let t=(await Pu("oidc"))?.config;return t&&t.configs.filter(r=>r.uuid===e)[0]}a(bK,"getOIDCConfigById");async function IUe(){return Pu("smtp")}a(IUe,"getSMTPConfigDoc");async function gXt(e){let t=await IUe();if(t)return t.config;let r=K.SELF_HOSTED||!e;if(K.SMTP_FALLBACK_ENABLED&&r)return{port:K.SMTP_PORT,host:K.SMTP_HOST,secure:!1,from:K.SMTP_FROM_ADDRESS,auth:{user:K.SMTP_USER,pass:K.SMTP_PASSWORD},fallback:!0}}a(gXt,"getSMTPConfig");async function yXt(){return(await Pu("scim"))?.config}a(yXt,"getSCIMConfig");async function bXt(){return Pu("ai")}a(bXt,"getAIConfig");async function vXt(){return Pu("recaptcha")}a(vXt,"getRecaptchaConfig");var Dr={};oe(Dr,{AccessController:()=>EK,BUILTIN_ROLE_IDS:()=>_K,Role:()=>Ph,RoleHierarchyTraversal:()=>JL,RoleIDVersion:()=>SK,builtinRoleToNumber:()=>BA,checkForRoleResourceArray:()=>PUe,externalRole:()=>TXt,findRole:()=>qA,getAllRoleIds:()=>IXt,getAllRoles:()=>RK,getBuiltinRole:()=>CUe,getBuiltinRoles:()=>TK,getDBRoleID:()=>NUe,getExternalRoleID:()=>Nh,getExternalRoleIDs:()=>LUe,getRole:()=>AXt,getUserRoleHierarchy:()=>AK,getUserRoleIdHierarchy:()=>DUe,isBuiltin:()=>Ty,lowerBuiltinRoleID:()=>xXt,prefixRoleIDNoBuiltin:()=>wK,roleIDsAreEqual:()=>Nu,roleToNumber:()=>SXt,saveRoles:()=>RXt,validInherits:()=>_Xt});var kUe=require("lodash"),XL=te(require("lodash/fp/cloneDeep")),vK=te(D7());var _K={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC"},Un={..._K,BUILDER:"BUILDER"},SK={UUID:void 0,NAME:"name"};function EXt(e,t){return Array.isArray(t)?t.filter(r=>e.includes(r)).length===t.length:e.includes(t)}a(EXt,"rolesInList");var Ph=class{constructor(t,r,n,i){this.permissions={};this._id=t,this.name=r,this.uiMetadata=i,this.permissionId=n,this.version=SK.NAME}static{a(this,"Role")}addInheritance(t){return t&&typeof t=="string"?t=wK(t):t&&Array.isArray(t)&&(t=t.map(wK)),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=qA(o,n,r);s&&(i=i.concat(this.walk(s)))}else{let o=[],s=t;for(;s&&s.inherits&&!EXt(o,s.inherits);){if(Array.isArray(s.inherits))return i.concat(this.walk(s));if(o.push(s.inherits),s=qA(s.inherits,n,r),s&&i.push(s),Ye.roles.checkForRoleInheritanceLoops(i))break}}return(0,kUe.uniqBy)(i,o=>o._id)}},xK={ADMIN:new Ph(Un.ADMIN,Un.ADMIN,"admin",{displayName:"App admin",description:"Can do everything",color:"var(--spectrum-global-color-static-red-400)"}).addInheritance(Un.POWER),POWER:new Ph(Un.POWER,Un.POWER,"power",{displayName:"App power user",description:"An app user with more access",color:"var(--spectrum-global-color-static-orange-400)"}).addInheritance(Un.BASIC),BASIC:new Ph(Un.BASIC,Un.BASIC,"write",{displayName:"App user",description:"Any logged in user",color:"var(--spectrum-global-color-static-green-400)"}).addInheritance(Un.PUBLIC),PUBLIC:new Ph(Un.PUBLIC,Un.PUBLIC,"public",{displayName:"Public user",description:"Accessible to anyone",color:"var(--spectrum-global-color-static-blue-400)"}),BUILDER:new Ph(Un.BUILDER,Un.BUILDER,"admin",{displayName:"Builder user",description:"Users that can edit this app",color:"var(--spectrum-global-color-static-magenta-600)"})};function TK(){return(0,XL.default)(xK)}a(TK,"getBuiltinRoles");function Ty(e){return Object.values(_K).includes(e)}a(Ty,"isBuiltin");function wK(e){return Ty(e)?e:Yf(e)}a(wK,"prefixRoleIDNoBuiltin");function CUe(e){let t=Object.values(xK).find(r=>e.includes(r._id));if(t)return(0,XL.default)(t)}a(CUe,"getBuiltinRole");function _Xt(e,t){if(!t)return!1;let r=a(n=>e.find(i=>Nu(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(_Xt,"validInherits");function BA(e){let t=TK(),r=Object.values(t).length+1;if(Nu(e,Un.ADMIN)||Nu(e,Un.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(BA,"builtinRoleToNumber");async function SXt(e){if(Ty(e))return BA(e);let t=await AK(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=>Nu(u._id,o));if(s)return r(s)+1}).filter(o=>o).sort().pop();if(i!=null)return i}else if(Ty(n.inherits))return BA(n.inherits)+1;return 0},"findNumber");return Math.max(...t.map(r))}a(SXt,"roleToNumber");function xXt(e,t){return e?t&&BA(e)>BA(t)?t:e:t}a(xXt,"lowerBuiltinRoleID");function Nu(e,t){return Yf(e)===Yf(t)}a(Nu,"roleIDsAreEqual");function TXt(e){let t;return e._id&&(t=Nh(e._id)),{...e,_id:t,inherits:LUe(e.inherits,e.version)}}a(TXt,"externalRole");function qA(e,t,r){let n=CUe(e);n||(e=Yf(e));let i=t.find(o=>o._id&&Nu(o._id,e));return!i&&!Ty(e)&&r?.defaultPublic?(0,XL.default)(xK.PUBLIC):(n=Object.assign(n||{},i),n?._id&&(n._id=Nh(n._id,n.version)),Object.keys(n).length===0?void 0:n)}a(qA,"findRole");async function AXt(e,t){let r=Jv(),n=[];if(!Ty(e)){let i=await r.tryGet(NUe(e));i&&n.push(i)}return qA(e,n,t)}a(AXt,"getRole");async function RXt(e){await Jv().bulkDocs(e.filter(r=>r._id).map(r=>({...r,_id:Yf(r._id)})))}a(RXt,"saveRoles");async function OXt(e,t){let r=await RK();if(Nu(e,Un.ADMIN))return r;let n=qA(e,r,t),i=[];return n&&(i=new JL(r,t).walk(n)),i}a(OXt,"getAllUserRoles");async function DUe(e){return(await AK(e)).map(r=>r._id)}a(DUe,"getUserRoleIdHierarchy");async function AK(e,t){return OXt(e,t)}a(AK,"getUserRoleHierarchy");function PUe(e,t){if(e&&!Array.isArray(e[t])){let r=e[t];e[t]=[r],r==="write"&&e[t].push("read")}return e}a(PUe,"checkForRoleResourceArray");async function IXt(e){return(await RK(e)).map(r=>r._id)}a(IXt,"getAllRoleIds");async function RK(e){if(e)return Fs(e,t);{let r;try{r=Jv()}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=Nh(u._id,u.version)));let i=TK(),o=[];!r||await kXt(r)?o=[Un.ADMIN,Un.POWER,Un.BASIC,Un.PUBLIC]:o=[Un.ADMIN,Un.BASIC,Un.PUBLIC];for(let s of o){let u=i[s],c=n.filter(l=>Nu(l._id,s))[0];c==null?n.push(u||i.BASIC):(n=n.filter(l=>l._id!==c._id),c._id=Nh(u._id,c.version),n.push({...u,...c,name:u.name,_id:Nh(u._id,u.version)}))}for(let s of n)if(s.permissions)for(let u of Object.keys(s.permissions))s.permissions=PUe(s.permissions,u);return n}a(t,"internal")}a(RK,"getAllRoles");async function kXt(e){let r=(await e.tryGet("app_metadata"))?.creationVersion;return!r||!vK.default.valid(r)?!0:!vK.default.gte(r,K.MIN_VERSION_WITHOUT_POWER_ROLE)}a(kXt,"shouldIncludePowerRole");var EK=class{static{a(this,"AccessController")}constructor(){this.userHierarchies={}}async hasAccess(t,r){if(t==null||t===""||Nu(t,Un.BUILDER)||Nu(r,t)||Nu(r,Un.BUILDER))return!0;let n=r?this.userHierarchies[r]:null;return!n&&r&&(n=await DUe(r),this.userHierarchies[r]=n),n?.find(i=>Nu(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 NUe(e){return e?.startsWith("role")?e:Yf(e)}a(NUe,"getDBRoleID");function Nh(e,t){if(e.startsWith(`role${Me}`)&&(Ty(e)||t===SK.NAME)){let r=e.split(Me);return r.shift(),r.join(Me)}return e}a(Nh,"getExternalRoleID");function LUe(e,t){return e&&(typeof e=="string"?Nh(e,t):e.map(r=>Nh(r,t)))}a(LUe,"getExternalRoleIDs");var xi={};oe(xi,{BUILDER:()=>LXt,BUILTIN_PERMISSIONS:()=>ZL,CREATOR:()=>FXt,GLOBAL_BUILDER:()=>UXt,PermissionImpl:()=>jn,PermissionLevel:()=>pd,PermissionType:()=>mS,doesHaveBasePermission:()=>PXt,getAllowedLevels:()=>MUe,getBuiltinPermissionByID:()=>DXt,getBuiltinPermissions:()=>CXt,isPermissionLevelHigherThanRead:()=>NXt,levelToNumber:()=>jUe});var FUe=te(require("lodash/flatten")),UUe=te(require("lodash/fp/cloneDeep"));var jn=class{static{a(this,"PermissionImpl")}constructor(t,r){this.type=t,this.level=r}};function jUe(e){switch(e){case"execute":return 0;case"read":return 1;case"write":return 2;case"admin":return 3;default:return-1}}a(jUe,"levelToNumber");function MUe(e){switch(e){case"execute":return["execute"];case"read":return["execute","read"];case"write":case"admin":return["execute","read","write"];default:return[]}}a(MUe,"getAllowedLevels");var ZL={PUBLIC:{_id:"public",name:"Public",permissions:[new jn("webhook","execute")]},READ_ONLY:{_id:"read_only",name:"Read only",permissions:[new jn("query","read"),new jn("table","read"),new jn("app","read")]},WRITE:{_id:"write",name:"Read/Write",permissions:[new jn("query","write"),new jn("table","write"),new jn("automation","execute"),new jn("legacy_view","read"),new jn("app","read")]},POWER:{_id:"power",name:"Power",permissions:[new jn("table","write"),new jn("user","read"),new jn("automation","execute"),new jn("webhook","read"),new jn("legacy_view","read"),new jn("app","read")]},ADMIN:{_id:"admin",name:"Admin",permissions:[new jn("table","admin"),new jn("user","admin"),new jn("automation","admin"),new jn("webhook","read"),new jn("query","admin"),new jn("legacy_view","read"),new jn("app","read")]}};function CXt(){return(0,UUe.default)(ZL)}a(CXt,"getBuiltinPermissions");function DXt(e){return Object.values(ZL).find(r=>r._id===e)}a(DXt,"getBuiltinPermissionByID");function PXt(e,t,r){let n=[...new Set(r.map(s=>s.permissionId))],i=Object.values(ZL),o=(0,FUe.default)(i.filter(s=>n.indexOf(s._id)!==-1).map(s=>s.permissions));for(let s of o)if(s.type===e&&MUe(s.level).indexOf(t)!==-1)return!0;return!1}a(PXt,"doesHaveBasePermission");function NXt(e){return jUe(e)>1}a(NXt,"isPermissionLevelHigherThanRead");var LXt="builder",FXt="creator",UXt="globalBuilder";var er={};oe(er,{adminOnly:()=>y2,auditLog:()=>b2,authError:()=>$a,buildAuthMiddleware:()=>ymr,buildCsrfMiddleware:()=>vmr,buildTenancyMiddleware:()=>bmr,builderOnly:()=>x2,builderOrAdmin:()=>T2,google:()=>Rp,internalApi:()=>R2,joiValidator:()=>HA,oidc:()=>Mp,passport:()=>wmr,platformLogout:()=>Tmr,refreshOAuthToken:()=>Smr,ssoCallbackUrl:()=>Fh,updateUserOAuth:()=>xmr,workspaceBuilderOrAdmin:()=>TU});var AU={};oe(AU,{adminOnly:()=>y2,auditLog:()=>b2,authError:()=>$a,authenticated:()=>S2,builderOnly:()=>x2,builderOrAdmin:()=>T2,correlation:()=>qUe,csp:()=>iBe,csrf:()=>A2,datasource:()=>emr,errorHandling:()=>oBe,featureFlagCookie:()=>sBe,google:()=>Rp,internalApi:()=>R2,ip:()=>uBe,joiValidator:()=>HA,local:()=>_E,oidc:()=>Mp,pino:()=>YMe,querystringToBody:()=>vGe,ssoCallbackUrl:()=>Fh,tenancy:()=>xU,workspaceBuilderOrAdmin:()=>TU});var BUe=require("uuid");var jXt=R1(),qUe=a((e,t)=>{let r=e.headers["x-budibase-correlation-id"];return r||(r=(0,BUe.v4)()),jXt.withId(r,()=>t())},"correlationMiddleware");var xrr=QMe(),Trr=R1();function Arr(){return{logger:sL,genReqId:Trr.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(Arr,"pinoSettings");function Rrr(){return K.HTTP_LOGGING?xrr(Arr()):(e,t)=>t()}a(Rrr,"getMiddleware");var YMe=Rrr();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 Orr=/\/:(.*?)(\/.*)?$/g,Iy=a(e=>e?e.map(t=>{let r=t.route,n=t.method,i=r.match(Orr);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"),ky=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 $c={};oe($c,{SecretOption:()=>ZMe,decrypt:()=>TQ,decryptFile:()=>Nrr,encrypt:()=>Crr,encryptFile:()=>Drr,getSecret:()=>xQ});var _p=te(require("crypto")),Lh=te(require("fs")),EQ=require("path"),_Q=te(require("zlib"));var v2="aes-256-ctr",XMe="-",Irr=1e4,krr=32,w2=16,SQ=16,ZMe=(r=>(r.API="api",r.ENCRYPTION="encryption",r))(ZMe||{});function xQ(e){let t,r;switch(e){case"encryption":t=K.ENCRYPTION_KEY,r="ENCRYPTION_KEY";break;case"api":default:t=K.API_ENCRYPTION_KEY,r="API_ENCRYPTION_KEY";break}if(!t)throw new Error(`Secret "${r}" has not been set in environment.`);return t}a(xQ,"getSecret");function E2(e,t){return _p.default.pbkdf2Sync(e,new Uint8Array(t),Irr,krr,"sha512")}a(E2,"stretchString");function Crr(e,t="api"){let r=_p.default.randomBytes(w2),n=E2(xQ(t),r),i=_p.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")}${XMe}${u}`}a(Crr,"encrypt");function TQ(e,t="api"){let[r,n]=e.split(XMe),i=Buffer.from(r,"hex"),o=E2(xQ(t),i),s=_p.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(TQ,"decrypt");async function Drr({dir:e,filename:t},r){let n=`${t}.enc`,i=(0,EQ.join)(e,t);if(Lh.default.lstatSync(i).isDirectory())throw new Error("Unable to encrypt directory");let o=Lh.default.createReadStream(i),s=Lh.default.createWriteStream((0,EQ.join)(e,n)),u=_p.default.randomBytes(w2),c=_p.default.randomBytes(SQ),l=E2(r,u),f=_p.default.createCipheriv(v2,new Uint8Array(l),new Uint8Array(c));return s.write(u),s.write(c),o.pipe(_Q.default.createGzip()).pipe(f).pipe(s),new Promise(p=>{s.on("finish",()=>{p({filename:n,dir:e})})})}a(Drr,"encryptFile");async function Prr(e){let t=Lh.default.createReadStream(e),r=await JMe(t,w2),n=await JMe(t,SQ);return t.close(),{salt:r,iv:n}}a(Prr,"getSaltAndIV");async function Nrr(e,t,r){if(Lh.default.lstatSync(e).isDirectory())throw new Error("Unable to decrypt directory");let{salt:n,iv:i}=await Prr(e),o=Lh.default.createReadStream(e,{start:w2+SQ}),s=Lh.default.createWriteStream(t),u=E2(r,n),c=_p.default.createDecipheriv(v2,new Uint8Array(u),new Uint8Array(i)),l=_Q.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(Nrr,"decryptFile");function JMe(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(JMe,"readBytes");var tBe=te(require("dd-trace"));var Frr=K.SESSION_UPDATE_PERIOD?parseInt(K.SESSION_UPDATE_PERIOD):60*1e3;function Urr(){return new Date(Date.now()-Frr).toISOString()}a(Urr,"timeMinusOneMinute");function eBe(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(eBe,"finalise");async function jrr(e,t){if(Nx(e))return{valid:!0,user:void 0};let n=TQ(e).split(Me)[0];return Xo(n,async()=>{let i;try{let o=Ar();i=await Xf("by_api_key",{key:e},o)}catch{i=void 0}if(i)return{valid:!0,user:await NA({userId:i,tenantId:n,populateUser:t})};throw new dL})}a(jrr,"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?Iy(e):[];return async(n,i)=>{let o=!1,s=_2(n,"x-budibase-api-version");ky(n,r)&&(o=!0);try{let c=_2(n,"x-budibase-token"),l=ep(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 lNe(v,b),t&&t.populateUser?h=await NA({userId:v,tenantId:w.tenantId,email:w.email,populateUser:t.populateUser(n)}):h=await NA({userId:v,tenantId:w.tenantId,email:w.email}),h.csrfToken=w.csrfToken,g="cookie",w?.lastAccessedAt<Urr()&&await cNe(w),d=!0}catch(x){d=!1,console.error(`Auth Error: ${x.message}`),Qd(n,"budibase:auth")}}if(!d&&f){let b=t.populateUser?t.populateUser(n):null,{valid:v,user:w}=await jrr(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)&&tBe.default.setUser({id:h._id,tenantId:h.tenantId,budibaseAccess:h.budibaseAccess,status:h.status}),eBe(n,{authenticated:d,user:h,internal:m,version:s,publicEndpoint:o,loginMethod:g}),y(h)?U4(h,n,i):i()}catch(c){if(console.error(`Auth Error: ${c.message}`),c?.name==="JsonWebTokenError"?Qd(n,"budibase:auth"):c?.code==="invalid_api_key"&&n.throw(403,c.message),t&&t.publicAllowed||o)return eBe(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 _g(e);return!r&&!K.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)?e.throw(403,"Builder user only endpoint."):r&&!fE(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 _g(e);return!r&&!K.isWorker()?e.throw(403,"This request required a workspace id."):!r&&!ss(e.user)?e.throw(403,"Admin/Builder user only endpoint."):r&&!fE(e.user,r)&&e.throw(403,"Workspace Admin/Builder user only endpoint."),t()}a(T2,"builderOrAdmin");var nBe=te(require("crypto"));var rBe={"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'"]},Mrr=/^[A-Za-z0-9-*:/.]+$/,iBe=a(async(e,t)=>{let r=nBe.default.randomBytes(16).toString("base64");e.state.nonce=r;let n={...rBe};if(n["script-src"]=[...rBe["script-src"],`'nonce-${r}'`],e.user?.license?.features.includes("customAppScripts")&&e.appId)try{let s=await Ax.getWorkspaceMetadata(e.appId);if("name"in s)for(let u of s.scripts||[]){let c=(u.cspWhitelist||"").split(`
|
|
536
|
+
`).filter(l=>Mrr.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 Brr=["GET","HEAD","OPTIONS"],qrr=["application/x-www-form-urlencoded","multipart/form-data","text/plain"];function A2(e={noCsrfPatterns:[]}){let t=Iy(e.noCsrfPatterns);return async(r,n)=>{if(ky(r,t)||Brr.indexOf(r.method)!==-1)return n();let o=r.get("content-type")?r.get("content-type").toLowerCase():"";if(!qrr.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 aBe(e){if(e.includes("-----BEGIN PRIVATE KEY-----"))return!0;for(let t of xfe){let r=K[t];if(!(typeof r!="string"||r==="")&&e.includes(r))return!0}return!1}a(aBe,"stringContainsSecret");async function oBe(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:iNe(r)};if(aBe(JSON.stringify(i))&&(i={message:"Unexpected error",status:n,error:"Unexpected error"}),K.isTest()&&e.headers["x-budibase-include-stacktrace"]){let o=r;for(;o.cause;)o=o.cause;i.stack=o.stack}e.body=i}}a(oBe,"errorHandling");var sBe=a(async(e,t)=>{let n=ep(e,"budibase:featureflags")?.flags||{};await q$(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"),Nx(r)||e.throw(403,"Unauthorized"),t()}a(R2,"internalApi");async function uBe(e,t){return e.ip?await U$(e.ip,()=>t()):t()}a(uBe,"ip");var HA={};oe(HA,{body:()=>$rr,params:()=>zrr});var AQ=te(require("joi"));function cBe(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:AQ.default.any().optional(),updatedAt:AQ.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(cBe,"validate");function $rr(e,t){return cBe(e,"body",t)}a($rr,"body");function zrr(e,t){return cBe(e,"params",t)}a(zrr,"params");var _E={};oe(_E,{authenticate:()=>Hrr,options:()=>Grr});function $a(e,t,r){return e(r,null,{message:t})}a($a,"authError");async function Fh(e,t){if(t&&t.callbackURL)return t.callbackURL;let r=await gK(),n="/api/global/auth";return Vd()&&(n+=`/${Pt()}`),n+=`/${e}/callback`,`${r.platformUrl}${n}`}a(Fh,"ssoCallbackUrl");var RQ="Invalid credentials",Wrr="This account has expired. Please reset your password",Grr={passReqToCallback:!0};async function Hrr(e,t,r,n){if(!t)return $a(n,"Email Required");if(!r)return $a(n,"Password Required");let i=await Mc(t);return i==null?(console.info(`user=${t} could not be found`),$a(n,RQ)):i.status==="inactive"?(console.info(`user=${t} is inactive`,i),$a(n,RQ)):i.password?await N4(r,i.password)?(delete i.password,n(null,i)):$a(n,RQ):(console.info(`user=${t} has no password set`,i),$a(n,Wrr))}a(Hrr,"authenticate");var Rp={};oe(Rp,{buildVerifyFn:()=>$qe,getCallbackUrl:()=>oir,strategyFactory:()=>fY});var VA=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 $a(r,"sso user id required");if(!e.email)return $a(r,"sso user email required");let i=Zv(e.userId),o;try{o=await Ey(i)}catch(u){if(!u.status||u.status!==404)return $a(r,"Unexpected error when retrieving existing user",u)}if(o||(o=await Mc(e.email)),!o&&t)return $a(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 Vrr(o,e);s.forceResetPassword=!1;try{delete s.password,s=await n(s,{hashPassword:!1,requirePassword:!1})}catch(u){return $a(r,"Error saving user",u)}return r(null,s)}a(O2,"authenticate");async function Vrr(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(Vrr,"syncUser");var air=cY().OAuth2Strategy;function $qe(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($qe,"buildVerifyFn");async function fY(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=$qe(r);return new air({clientID:e.clientID,clientSecret:e.clientSecret,callbackURL:t},o)}catch(n){throw new Error(`Error constructing google authentication strategy: ${n}`)}}a(fY,"strategyFactory");async function oir(e){return Fh("google",e)}a(oir,"getCallbackUrl");var Mp={};oe(Mp,{buildVerifyFn:()=>bGe,fetchStrategyConfig:()=>Qhr,getCallbackUrl:()=>Yhr,strategyFactory:()=>Khr});var yGe=te(require("node-fetch"));var Hhr=gGe().Strategy;function bGe(e){return async(t,r,n,i,o,s,u,c,l)=>{let f={provider:t,providerType:"oidc",userId:n.id,profile:n,email:Vhr(n,i),oauth2:{accessToken:o,refreshToken:s}};return O2(f,!1,l,e)}}a(bGe,"buildVerifyFn");function Vhr(e,t){if(e._json.email)return e._json.email;if(t.email)return t.email;let r=t.preferred_username;if(r&&uz(r))return r;throw new Error(`Could not determine user email from profile ${JSON.stringify(e)} and claims ${JSON.stringify(t)}`)}a(Vhr,"getEmail");async function Khr(e,t){try{let r=bGe(t),n=new Hhr(e,r);return n.name="oidc",n}catch(r){throw new Error(`Error constructing OIDC authentication strategy - ${r}`)}}a(Khr,"strategyFactory");async function Qhr(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,yGe.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(Qhr,"fetchStrategyConfig");async function Yhr(){return Fh("oidc")}a(Yhr,"getCallbackUrl");function vGe(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(vGe,"querystringToBody");function xU(e,t,r={noTenancyRequired:!1}){let n=Iy(e),i=Iy(t);return async function(o,s){let c={allowNoTenant:r.noTenancyRequired||!!ky(o,i)};!!ky(o,n)||(c.excludeStrategies=["query"]);let f=Dx(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 _g(e);return r&&!NL(e.user,r)?e.throw(403,"Workspace Admin/Builder user only endpoint."):!r&&!K.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 JX={};oe(JX,{postAuth:()=>Zhr,preAuth:()=>Xhr});var Jhr=cY().OAuth2Strategy;async function wGe(){let e=await yK();if(!e)throw new Error("No google configuration found");return e}a(wGe,"fetchGoogleCreds");async function Xhr(e,t,r){let n=await wGe(),o=`${await MA({tenantAware:!1})}/api/global/auth/datasource/google/callback`,s=await fY(n,o,VA);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(Xhr,"preAuth");async function Zhr(e,t,r){let n=await wGe(),o=`${await MA({tenantAware:!1})}/api/global/auth/datasource/google/callback`,s=ep(t,"budibase:datasourceauth");if(!s)throw new Error("Unable to fetch datasource auth cookie");return e.authenticate(new Jhr({clientID:n.clientID,clientSecret:n.clientSecret,callbackURL:o},(u,c,l,f)=>{Qd(t,"budibase:datasourceauth"),f(null,{accessToken:u,refreshToken:c})}),{successRedirect:"/",failureRedirect:"/error"},async(u,c)=>{let l=`/builder/workspace/${s.appId}/data`,f=Cn();await gp(`datasource:creation:${s.appId}:google:${f}`,{tokens:c}),t.redirect(`${l}/new?continue_google_setup=${f}`)})(t,r)}a(Zhr,"postAuth");var emr={google:JX};var cHe=ZGe(),gmr=sHe().Strategy,PU=uHe(),ymr=S2,bmr=xU,vmr=A2,wmr=cHe;cHe.use(new gmr(_E.options,_E.authenticate));async function Emr(e,t){let r=await Mp.getCallbackUrl(),n,i;try{if(n=await Mp.fetchStrategyConfig(e,r),!n)throw new Error("OIDC Config contents invalid");i=await Mp.strategyFactory(n,VA)}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(Emr,"refreshOIDCAccessToken");async function _mr(e,t){let r=await Rp.getCallbackUrl(e),n;try{n=await Rp.strategyFactory(e,r,VA)}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(_mr,"refreshGoogleAccessToken");async function Smr(e,t,r){switch(t){case"oidc":{if(!r)return{err:{data:"OIDC config id not provided"}};let n=await bK(r);return n?Emr(n,e):{err:{data:"OIDC configuration not found"}}}case"google":{let n=await YL();return n?_mr(n,e):{err:{data:"Google configuration not found"}}}}}a(Smr,"refreshOAuthToken");async function xmr(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 LA(e)}catch(n){console.error("Could not update OAuth details for current user",n)}}a(xmr,"updateUserOAuth");async function Tmr(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=ep(t,"budibase:auth"),o=await f7(r);i&&n?o=o.filter(u=>u.sessionId!==i.sessionId):Qd(t,"budibase:auth");let s=o.map(({sessionId:u})=>u);await fA(r,{sessionIds:s,reason:"logout"}),await DL.logout(t.user?.email),await LA(r)}a(Tmr,"platformLogout");var LU={};oe(LU,{validate:()=>kmr});var nt=te(require("joi"));var Amr=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function lZ(e,t){let{error:r}=e.validate(t);if(r)throw r}a(lZ,"runJoi");function Rmr(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)});lZ(t,e)}a(Rmr,"validateComponent");function Omr(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(ga).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(...Amr),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()}))})});lZ(n,e)}a(Omr,"validateDatasource");function Imr(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(...lse).required(),inputs:nt.default.object().optional(),schema:nt.default.object({inputs:r,outputs:r}).required()})});lZ(n,e)}a(Imr,"validateAutomation");function kmr(e){switch(e?.type){case"component":Rmr(e);break;case"datasource":Omr(e);break;case"automation":Imr(e);break;default:throw new Error(`Unknown plugin type - check schema.json: ${e.type}`)}}a(kmr,"validate");var Bp={};oe(Bp,{Client:()=>to,clients:()=>Kd,locks:()=>Bc,utils:()=>uC});var jU={};oe(jU,{isBlacklisted:()=>Dmr,refreshBlacklist:()=>dHe});var lHe=te(require("dns")),UU=te(require("net"));var fHe=require("util");var FU,Cmr=(0,fHe.promisify)(lHe.default.lookup);async function pHe(e){return UU.default.isIP(e)||(e.startsWith("http")||(e=`https://${e}`),e=new URL(e).hostname),(await Cmr(e,{all:!0})).map(r=>r.address)}a(pHe,"lookup");async function dHe(){let t=K.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 pHe(i);r=r.concat(o)}}FU=r}a(dHe,"refreshBlacklist");async function Dmr(e){if(FU||await dHe(),FU?.length===0)return!1;let t;return UU.default.isIP(e)?t=[e]:t=await pHe(e),!!FU?.find(r=>t.includes(r))}a(Dmr,"isBlacklisted");var Ubn={"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:()=>yZ,Sql:()=>xHe,SqlTable:()=>MU,designDoc:()=>bZ,utils:()=>k$});var vHe=require("knex");var Pmr=require("knex");function fZ(e){return["link","formula","ai"].indexOf(e)!==-1}a(fZ,"isIgnoredType");function mHe(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}=T$(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:zt.unreachable(g)}}let p=i?n?.schema[i.old].type:void 0;return i&&p&&!fZ(p)&&e.renameColumn(i.old,i.updated),n&&Object.entries(n.schema).filter(([h,m])=>!fZ(m.type)&&t.schema[h]==null).forEach(([h,m])=>{i?.old===h||fZ(m.type)||(n.constrained&&n.constrained.indexOf(h)!==-1&&e.dropForeign(h),e.dropColumn(h))}),e}a(mHe,"generateSchema");function Nmr(e,t,r){return e.createTable(t.name,n=>{mHe(n,t,r)})}a(Nmr,"buildCreateTable");function Lmr(e,t,r,n,i){return e.alterTable(t.name,o=>{mHe(o,t,r,n,i)})}a(Lmr,"buildUpdateTable");function Fmr(e,t){return e.dropTable(t.name)}a(Fmr,"buildDeleteTable");var pZ=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,Pmr.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=Nmr(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=Lmr(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=Kv(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=Fmr(r,t.table);break;default:throw new Error("Table operation is of unknown type")}return Kv(n)}},MU=pZ;var wHe=require("lodash");var yZ="__bb_total";function gHe(){return(K.SQL_MAX_ROWS?parseInt(K.SQL_MAX_ROWS):null)||5e3}a(gHe,"getBaseLimit");function dZ(){return(K.SQL_MAX_RELATED_ROWS?parseInt(K.SQL_MAX_RELATED_ROWS):null)||500}a(dZ,"getRelationshipLimit");function jmr(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(jmr,"prioritisedArraySort");function EHe(e){return Array.isArray(e)?e.map(t=>EHe(t)):(e.bindings&&(e.bindings=e.bindings.map(t=>typeof t=="boolean"?t?1:0:t)),e)}a(EHe,"convertBooleans");function yHe(e){return e.sourceType==="internal"||e.sourceId===Ko}a(yHe,"isSqs");function Mmr(e,t='"'){return e.replace(new RegExp(t,"g"),`${t}${t}`)}a(Mmr,"escapeQuotes");function _He(e,t='"'){return`${t}${Mmr(e,t)}${t}`}a(_He,"wrap");function hZ(e,t='"'){for(let r in e)typeof e[r]=="string"&&(e[r]=_He(e[r],t));return`[${e.join(",")}]`}a(hZ,"stringifyArray");function SHe(e){return fk.includes(e.type)&&!Ye.schema.isDeprecatedSingleUserColumn(e)}a(SHe,"isJsonColumn");var Bmr={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},mZ=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()&&SHe(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(!O$(t))return null}else if(r.dateOnly){let n=R$(t);return n?new Date(n):null}else return r.ignoreTimezones?f1(t)?new Date(t):A$(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,wHe.cloneDeep)(t);for(let r of Object.values(Rm)){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(zb)){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=I$(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=Cx(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,Bmr[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(hZ(w,"'")):this.knex.raw(w)]):b.whereRaw(`COALESCE(??${T} @> '??', FALSE)`,[this.rawQuotedIdentifier(v),T?this.knex.raw(hZ(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(_He(hZ(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&&!x$(this.table)&&h&&t.andWhereLike(`${h}._id`,`${dd(r.documentType)}%`),t}isSqs(){return yHe(this.table)}getTableName(t){t||(t=this.table);let r=t.name;yHe(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 ${yZ}`)}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=jmr(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}`,V=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});V=V.join(ie,function(){this.on(`${w}.${b}`,"=",`${T}.${m}`)})}V=V.where(this.rawQuotedIdentifier(Y),"=",this.rawQuotedIdentifier(B));let $=a(ie=>(V=V.select(C.map(Q=>this.rawQuotedIdentifier(Q))).limit(dZ()),o.select(ie).from({[w]:V})),"standardWrap"),ae;switch(i){case"sqlite3":V=this.addJoinFieldCheck(V,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=V.select(o.raw(`json_arrayagg(json_object(${U}) LIMIT ${dZ()})`));break;case"mysql2":case"oracledb":ae=$(this.knex.raw(`json_arrayagg(json_object(${U}))`));break;case"mssql":{let ie=o.select("*").from({[x]:V.select(k.map(Q=>o.ref(Q[1]).as(Q[0]))).limit(dZ())});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())}},gZ=class extends MU{constructor(r,n=gHe()){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=Kv(r);return i==="sqlite3"&&(o=EHe(o)),o}}_query(r,n={}){let i=this.getSqlClient(),o={client:this.getBaseSqlClient()};(i==="sqlite3"||i==="oracledb")&&(o.useNullAsDefault=!0);let s=(0,vHe.knex)(o),u,c=new mZ(i,s,r);switch(this._operation(r)){case"CREATE":u=c.create(n);break;case"READ":u=c.read({limits:{query:this.limit,base:gHe()}});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(!SHe(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){dx(this.getSqlClient(),r,n)}},xHe=gZ;var bZ={};oe(bZ,{base:()=>qmr});function qmr(e){return{_id:Na,language:"sqlite",sql:{tables:{},options:{table_name:e}}}}a(qmr,"base");var HR={};oe(HR,{jsonFromCsvString:()=>$mr});var THe=te(require("csvtojson"));async function $mr(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,THe.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($mr,"jsonFromCsvString");var Wmr=te(require("@koa/router"));var vt={...Px,...z},AHe=a((e={})=>{c1(e.db)},"init");var cYe=te(IHe()),lYe=te(require("vm")),ote=te(oO());var Gp=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 qj=te(oO());var Kee=te(SQe());var Qa=te(require("dayjs")),xQe=te(require("dayjs/plugin/duration")),TQe=te(require("dayjs/plugin/advancedFormat")),AQe=te(require("dayjs/plugin/isoWeek")),RQe=te(require("dayjs/plugin/weekYear")),OQe=te(require("dayjs/plugin/weekOfYear")),IQe=te(require("dayjs/plugin/relativeTime")),kQe=te(require("dayjs/plugin/utc")),CQe=te(require("dayjs/plugin/timezone"));Qa.default.extend(xQe.default);Qa.default.extend(TQe.default);Qa.default.extend(AQe.default);Qa.default.extend(RQe.default);Qa.default.extend(OQe.default);Qa.default.extend(IQe.default);Qa.default.extend(kQe.default);Qa.default.extend(CQe.default);function cb(e){return typeof e=="object"&&typeof e.hash=="object"}a(cb,"isOptions");function Wee(e){return typeof e=="object"&&typeof e.options=="object"&&typeof e.app=="object"}a(Wee,"isApp");function Gee(e,t,r){if(cb(e))return Gee({},t,e);if(cb(t))return Gee(e,r,t);let n=Wee(e)?e.context:{};r=r||{},cb(r)||(t=Object.assign({},t,r)),cb(r)&&r.hash.root===!0&&(t=Object.assign({},r.data.root,t));let i=Object.assign({},n,t,r.hash);return Wee(e)||(i=Object.assign({},e,i)),Wee(e)&&e.view&&e.view.data&&(i=Object.assign({},i,e.view.data)),i}a(Gee,"getContext");function Hee(e,t,r){return cb(t)&&(r=t,t=PQe),cb(e)&&(r=e,t=null,e=null),{str:e,pattern:t,options:r}}a(Hee,"initialConfig");function DQe(e,t,r){let n=Hee(e,t,r),i={lang:"en",date:new Date(n.str)},o=Gee(this,i,{});Qa.default.locale(o.lang||o.language)}a(DQe,"setLocale");var PQe="MMMM DD, YYYY",Fj=a((e,t,r)=>{let n=Hee(e,t,r);if(n.str==null&&n.pattern==null)return Qa.default.locale("en"),(0,Qa.default)().format(PQe);DQe(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"),vO=a((e,t,r)=>{let n=Hee(e,t);DQe(n.str,n.pattern);let i=Qa.default.duration(n.str,n.pattern);return r&&!cb(r)?i.format(r):i.humanize()},"duration"),Vee=a((e,t,r)=>(0,Qa.default)(new Date(e)).diff((0,Qa.default)(new Date(t)),r),"difference"),NQe=a(e=>{let t=Vee(e,new Date().toISOString(),"ms");return vO(t,"ms")},"durationFromNow");var Uj=["#if","#unless","#each","#with","lookup","log","blockHelperMissing","each","helperMissing","if","unless","log","lookup","with"],LQe=["math","array","number","url","string","comparison","object","regex","uuid"],lb={OBJECT:"object",ALL:"all",LITERAL:"literal",JS:"js",DECODE_ID:"decodeId"},x_="%LITERAL%";var FQe={date:Fj,duration:vO,difference:Vee,durationFromNow:NQe};function UQe(e){for(let[r,n]of Object.entries(FQe))e.registerHelper(r,n);let t=[];for(let r of LQe){let n=Kee.default[r]();for(let i of Object.entries(n)){let o=i[0];Uj.indexOf(o)!==-1||t.indexOf(o)!==-1||t.push(o)}Kee.default[r]({handlebars:e})}Qee=t.concat(Object.keys(FQe))}a(UQe,"registerAll");var Qee=[];function _Er(){return process.env.NODE_ENV==="jest"||process.env.JEST_WORKER_ID!=null&&process.env.JEST_WORKER_ID!=="null"}a(_Er,"isJest");function fb(){return _Er()}a(fb,"isTest");var jQe=a(()=>process&&process.env.BACKEND_JS,"isTestingBackendJS"),Yee=a(()=>{process.env.BACKEND_JS="1"},"setTestingBackendJS");var SEr=/^[A-Za-z0-9]+$/g,wO=/{{([^{].*?)}}/g,Jee=/{?{{([^{].*?)}}}?/g,xEr=/{{{([^{].*?)}}}/g,EO=a(()=>fb()&&jQe()?!0:fb()?!1:typeof window>"u","isBackendService"),MQe=a(()=>process&&!process.env.NO_JS,"isJSAllowed"),BQe=a(e=>{let t=e,r=new RegExp(wO),n=new RegExp(xEr),i=t.match(n);i&&i.forEach(s=>{t=t.replace(s,"")});let o=t.match(r);return o||[]},"findDoubleHbsInstances"),qQe=a(e=>e.match(SEr),"isAlphaNumeric"),Xee=a((e,t,r,n)=>e.slice(0,t)+n+e.slice(t+r),"swapStrings");var jj=a(e=>Buffer.from(e,"base64").toString("utf-8"),"atob"),$Qe=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 Mj(e){return`
|
|
537
537
|
result = {
|
|
538
538
|
result: null,
|
|
539
539
|
error: null,
|
|
@@ -751,8 +751,8 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
751
751
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
752
752
|
mwIDAQAB
|
|
753
753
|
-----END PUBLIC KEY-----
|
|
754
|
-
`;function nI(e){return bre.default.verify(e,jSr,{algorithms:["RS256"]})}a(nI,"verifyLicenseToken");function MSr(e,t){return bre.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(MSr,"sign");var EM={};oe(EM,{getFeatures:()=>vre});var BSr={free:[...Qu.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"]},qSr={free:[...Qu.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 vre(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(BSr);break;case"cloud":r=n(qSr);break}return r}a(vre,"getFeatures");var _M={};oe(_M,{UNLIMITED:()=>ye,getQuotas:()=>wre});var ee=fm,RXe=Qu,ye=-1,aI=a(e=>e*1e6,"millions"),$Sr={free:{...RXe.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(aI(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(aI(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(aI(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(aI(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(aI(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)}}},zSr={free:{...RXe.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 wre(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(zSr);break;case"cloud":r=n($Sr);break}return JSON.parse(JSON.stringify(r))}a(wre,"getQuotas");var oI={};oe(oI,{encoding:()=>L_,workspaceExists:()=>WSr});async function WSr(e){return(await ne.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(WSr,"workspaceExists");var L_={};oe(L_,{base64ToObject:()=>HSr,objectToBase64:()=>GSr});function GSr(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(GSr,"objectToBase64");function HSr(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(HSr,"base64ToObject");var OXe=te(require("lodash/union")),IXe=te(require("lodash/merge"));async function VSr(e){await Ku.save({offlineLicenseToken:e}),await bb()}a(VSr,"activateOfflineLicenseToken");async function KSr(){await Ku.save({offlineLicenseToken:void 0}),await bb()}a(KSr,"deleteOfflineLicenseToken");async function kXe(){return(await Ku.get()).offlineLicenseToken}a(kXe,"getOfflineLicenseToken");async function Ere(){let t=(await Rh.getInstall()).installId,r=z.getTenantId(),n=await Tt.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(Ere,"getIdentifier");async function QSr(){let e=await Ere();return L_.objectToBase64(e)}a(QSr,"getIdentifierBase64");function YSr(e){return L_.base64ToObject(e)}a(YSr,"getIdentifierFromBase64");function CXe(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(CXe,"verifyExpiry");async function DXe(e){let t=await Ere();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(DXe,"verifyInstallation");function PXe(e){let t=e.plan.type,r="self",n=vre(r,t),i=wre(r,t);return e.features=(0,OXe.default)(e.features,n),e.quotas=(0,IXe.default)(e.quotas,i),e}a(PXe,"enrichLicense");async function _re(){try{let e=await kXe();if(e){let t=await nI(e);return CXe(t),await DXe(t),PXe(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(_re,"getOfflineLicense");var uI={};oe(uI,{deleteDevLicense:()=>t0r,getOfflineLicense:()=>ZSr,writeDevLicenseToDisk:()=>e0r});var xre=require("path"),NXe=require("os"),vb=te(require("fs"));var JSr=K.isTest()?".budibase-test":".budibase",Sre=(0,xre.join)((0,NXe.tmpdir)(),JSr),XSr="dev_license.txt",sI=(0,xre.join)(Sre,XSr);if(!vb.default.existsSync(Sre))try{vb.default.mkdirSync(Sre)}catch{}function ZSr(){try{if(vb.default.existsSync(sI)){let e=vb.default.readFileSync(sI,{encoding:"utf-8"});return nI(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(ZSr,"getOfflineLicense");function e0r(e){console.log(`Writing license to: ${sI}`),vb.default.writeFileSync(sI,e,{encoding:"utf-8"})}a(e0r,"writeDevLicenseToDisk");function t0r(){vb.default.rmSync(sI,{force:!0})}a(t0r,"deleteDevLicense");var LXe=require("dd-trace");var Tre=a(async()=>await LXe.tracer.trace("getLicense",async e=>{if(K.OFFLINE_MODE)return e.addTags({offline:!0}),_re();let t=await N_();return t||(e.addTags({offlineFallback:!0}),t=uI.getOfflineLicense()),t}),"getLicense"),FXe=a(e=>gre(e),"getLicenseFromKey"),Are=a(()=>K.SELF_HOSTED?Qu.SELF_FREE_LICENSE:Qu.CLOUD_FREE_LICENSE,"getFreeLicense");var Ore={};oe(Ore,{activateLicenseKey:()=>r0r,deleteLicenseKey:()=>n0r,getLicenseKey:()=>xM});var Rre=te(require("dd-trace"));async function r0r(e){await yre(e),await Ku.save({licenseKey:e}),await bb()}a(r0r,"activateLicenseKey");async function xM(){return await Rre.default.trace("getLicenseKey",async e=>{let t=await Ku.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(xM,"getLicenseKey");async function n0r(){return await Rre.default.trace("deleteLicenseKey",async()=>{await Ku.save({licenseKey:void 0}),await bb()})}a(n0r,"deleteLicenseKey");var TM=te(require("dd-trace"));var UXe=3600,bb=a(async()=>{await BXe(),await MXe()},"refresh"),jXe=a(async(e,t)=>{let{populateLicense:r=Tre,populateFreeLicense:n=Are}=t||{};return await TM.default.trace("getCachedLicense",async i=>{let o=z.getLicense();if(o)return i.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=vt.getTenantId(),u=await Yte(),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 TM.default.trace("populateLicense",async()=>await r(s)),i.addTags({populatedLicense:!!c}),c||(c=TM.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:UXe}),await u.store(s,c,UXe),c)})},"_getCachedLicense");K.isJest()&&(jXe=jest.fn());var MXe=jXe,BXe=a(async()=>{let e=vt.getTenantId();await(await Yte()).delete(e)},"invalidate");async function Ya(e,t){Array.isArray(e)||(e=[e]),t||(t=await ol.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(Ya,"areFeaturesEnabled");async function AM(e,t){if(!await Ya(e,t))throw new lE(`${e} is not currently enabled`,e)}a(AM,"checkFeature");async function Ire(e,t){if(!await Ya(e,t)){let r=e.join(", ");throw new lE(`${r} are not currently enabled`,r)}}a(Ire,"checkFeatures");function $o(e){return async(...t)=>(await AM("appBackups"),e(...t))}a($o,"checkBackups");async function kre(){return Ya("appBackups")}a(kre,"isBackupsEnabled");async function Cre(){return Ya("branding")}a(Cre,"isBrandingEnabled");async function qXe(){return Ya("enforceableSSO")}a(qXe,"isEnforceableSSO");async function a0r(){return Ya("syncAutomations")}a(a0r,"isSyncAutomationsEnabled");async function o0r(){return Ya("triggerAutomationRun")}a(o0r,"isTriggerAutomationRunEnabled");async function Dre(){return Ya("appBuilders")}a(Dre,"isAppBuildersEnabled");async function RM(){return Ya("auditLogs")}a(RM,"isAuditLogsEnabled");async function Pre(){return Ya("userGroups")}a(Pre,"isUserGroupsEnabled");function s0r(){return Ya("pwa")}a(s0r,"isPWAEnabled");function u0r(){return Ya("recaptcha")}a(u0r,"isRecaptchaEnabled");var c0r=a(()=>Ya("pkceOidc"),"isPkceOidcEnabled");async function td(){return Ya("expandedPublicApi")}a(td,"isExpandedPublicApiEnabled");async function l0r(e){if(K.ENABLE_SSO_MAINTENANCE_MODE||!await qXe())return!1;let r;return e?.config?r=e.config:r=await Ma.getSettingsConfig(),!!r.isSSOEnforced}a(l0r,"isSSOEnforced");var Nre=a(async()=>{let e="scim",t=await Ya(e),r=await Ma.getSCIMConfig();if(!t||!r?.enabled)throw new lE(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function f0r(){return Ya("viewPermissions")}a(f0r,"isViewPermissionEnabled");async function p0r(){return Ya("viewReadonlyColumns")}a(p0r,"isViewReadonlyColumnsEnabled");var d0r={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 h0r(e){return await Cre()?{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}:d0r}a(h0r,"getBrandingConfig");var Ure={};oe(Ure,{enrichAIConfig:()=>Fre});var m0r="budibase_ai";async function Fre(e){if(K.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[m0r]={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(Fre,"enrichAIConfig");var Wn={};oe(Wn,{addAction:()=>w0r,addApp:()=>E0r,addAutomation:()=>R0r,addGroup:()=>Mre,addPlugin:()=>qre,addRow:()=>S0r,addRows:()=>T0r,addUsers:()=>OM,bustCache:()=>rre,decrement:()=>rd,decrementMany:()=>cI,getCurrentUsageValues:()=>XJe,getLicensedQuota:()=>zXe,getQuotaUsage:()=>gb,increment:()=>eu,incrementBudibaseAICredits:()=>IM,incrementMany:()=>Eb,removeApp:()=>_0r,removeGroup:()=>Bre,removePlugin:()=>$re,removeRow:()=>x0r,removeRows:()=>A0r,removeUsers:()=>U_,set:()=>jre,setAllUsage:()=>ire,setAppUsageValue:()=>nre,setUsage:()=>QJe,setUsagePerApp:()=>YJe,updatePluginCount:()=>zre,updateUsage:()=>F_,usageLimitIsExceeded:()=>v0r,utils:()=>UO});var wb=require("dd-trace");var eu=a(async(e,t,r)=>await wb.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await $Xe({change:1,name:e,type:t,opts:r}))),"increment"),Eb=a(e=>wb.tracer.trace("quotas.incrementMany",async()=>$Xe(e)),"incrementMany"),$Xe=a(async e=>await wb.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await F_(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 wb.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 F_(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"),rd=a((e,t,r={})=>F_({usageChange:-1,name:e,type:t,opts:r}),"decrement"),cI=a(e=>{let t=Array.isArray(e)?e:[e];return F_(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),jre=a(async(e,t,r)=>yf.setUsage(r,e,t),"set"),g0r=a((e,t,r)=>{if(e=="static"){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=yf.utils.getCurrentMonthString(),i=r.monthly[n].triggers;return i?i[t]||{}:{}}},"getExistingTriggers"),y0r=a(async(e,t,r,n)=>{try{await Bc.doWithLock({type:"try_once",name:"trigger_quota",resource:e,ttl:1e4},async()=>{let i={percentage:r,name:t.name};n&&(i.resetDate=n),await hm.triggerQuota(i)})}catch(i){kt.logAlert("Error triggering quota",i)}},"triggerQuota"),b0r=a(async(e,t,r,n)=>{let i=await gb(),o=e==="monthly"?i.quotaReset:void 0,s=await g0r(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!==fm.UNLIMITED){if(!s[f]){s[f]=new Date().toISOString();let d=u[l+1]||100;(!(c>=d)||c===f)&&await y0r(t,n,c,o)}}else s[f]=void 0;return s},"checkTriggers"),F_=a(async e=>{await wb.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 wb.tracer.trace("quotas.updateUsage.action",async h=>{h.addTags({actionName:d.name,actionType:d.type,actionUsageChange:d.usageChange});try{i=z.getWorkspaceId()}catch{}if(Gb.includes(d.name)&&!i)throw new Error("App context required for quota update");try{o=await zXe("usage",d.name,d.type),s.push(o);let{total:g,app:y,breakdown:b}=await yf.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 b0r(d.type,d.name,g,o),f={...f,[d.name]:v}),o.value!==fm.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 yf.setAllUsage(p)})},"updateUsage"),zXe=a(async(e,t,r)=>{let n=await ol.getCachedLicense();if(!n){let i=vt.getTenantId();throw new Error("License not found for tenant id "+i)}if(r&&Zoe(e,r,t))return n.quotas[e][r][t];if(r&&ese(e,r,t))return n.quotas[e][r][t];if(tse(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),v0r=a(async({name:e,type:t,usageChange:r})=>{try{return await F_({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code==="usage_limit_exceeded")return!0;throw n}},"usageLimitIsExceeded");var w0r=a(async e=>eu("actions","monthly",{fn:e}),"addAction");var WXe=a(async()=>{let e=await ne.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),E0r=a(async(e,{appId:t}={})=>eu("apps","static",{fn:e,valueFn:WXe,id:t}),"addApp"),_0r=a(async({appId:e}={})=>rd("apps","static",{valueFn:WXe,id:e}),"removeApp");var S0r=a(async(e,{tableId:t}={})=>eu("rows","static",{fn:e,id:t}),"addRow"),x0r=a(async({tableId:e}={})=>rd("rows","static",{id:e}),"removeRow"),T0r=a(async(e,t,{tableId:r}={})=>Eb({change:e,name:"rows",type:"static",opts:{fn:t,id:r}}),"addRows"),A0r=a(async(e,{tableId:t}={})=>cI({change:e,name:"rows",type:"static",opts:{id:t}}),"removeRows");var R0r=a(async(e,{automationId:t}={})=>eu("automations","monthly",{fn:e,id:t}),"addAutomation");var Mre=a(async e=>eu("userGroups","static",{fn:e}),"addGroup"),Bre=a(async()=>rd("userGroups","static"),"removeGroup");var qre=a(async e=>eu("plugins","static",{fn:e}),"addPlugin"),$re=a(async()=>rd("plugins","static"),"removePlugin"),zre=a(async e=>jre("plugins","static",e),"updatePluginCount");var OM=a(async(e,t,r)=>{let n=[{change:e,name:"users",type:"static",opts:{fn:r,valueFn:nr.getUserCount}}];t>0&&n.push({change:t,name:"creators",type:"static",opts:{valueFn:nr.getCreatorCount}});let i=await Eb(n);return await N_(),i},"addUsers"),U_=a(async(e,t)=>{let r=[{change:e,name:"users",type:"static",opts:{valueFn:nr.getUserCount}}];t>0&&r.push({change:t,name:"creators",type:"static",opts:{valueFn:nr.getCreatorCount}}),await cI(r),await N_()},"removeUsers");var IM=a(async e=>Eb({change:e,name:"budibaseAICredits",type:"monthly"}),"incrementBudibaseAICredits");var Vre={};oe(Vre,{db:()=>Ju});var on={};oe(on,{addUsers:()=>DM,adjustGroupCreatorsQuotas:()=>C0r,cleanupApp:()=>k0r,enrichUserRolesFromGroups:()=>I0r,fetch:()=>lI,get:()=>j_,getBulk:()=>YXe,getGroupBuilderAppIds:()=>QXe,getGroupRoleId:()=>O0r,remove:()=>Wre,removeUsers:()=>Gre,save:()=>CM,updateGroupApps:()=>Hre});var kM=class extends Re{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function VXe(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(VXe,"findHighestRole");async function KXe(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await Zn.getBulk(e,{enriched:!1}),t}a(KXe,"groupList");async function QXe(e,t){if(!e.userGroups)return[];let r=await KXe(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(QXe,"getGroupBuilderAppIds");async function O0r(e,t,r){if(!e.userGroups)return null;let n=await KXe(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 VXe(n,t))}a(O0r,"getGroupRoleId");async function I0r(e){if(!e||!e.userGroups)return e;let t=await YXe(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 z.doInWorkspaceContext(i,async()=>{if(e.roles[i])return;let o=await VXe(t,i);o&&(e.roles[i]=o)});let n=await QXe(e,{groups:t});if(n.length&&!e.builder?.global){let i=e.builder?.apps||[];e.builder={apps:i.concat(n)}}return e}a(I0r,"enrichUserRolesFromGroups");async function lI(){return await Zn.fetch()}a(lI,"fetch");async function j_(e){return await Zn.get(e)}a(j_,"get");async function YXe(e,t={enriched:!0}){return await Zn.getBulk(e,t)}a(YXe,"getBulk");async function GXe(e){if(await Zn.getByName(e))throw new kM(e)}a(GXe,"guardNameAvailability");async function HXe(e){let t=await Zn.getGroupUsers(e._id);if(!t.length)return 0;let n=await vt.getGlobalDB().getMultiple(t.map(o=>o._id));return(await Ih.creatorsInList(n)).filter(o=>o).length}a(HXe,"getCreatorsCountInGroup");async function CM(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=Zn.generateUserGroupID(),await GXe(e.name),t.push(Tt.group.created(e));else{let o=await Zn.get(e._id);if(o.name!==e.name&&await GXe(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 HXe(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(()=>Zn.save(e),"saveGroup");if(r)return await Mre(i);{let o=await i();if(n>0)await OM(0,n);else if(n<0){let s=await HXe(e),u=Math.abs(n)-s;u>0&&await U_(0,u)}return o}}a(CM,"save");async function Wre(e,t){let r;try{r=await Zn.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 Zn.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 Ih.creatorsInList(l)).filter(h=>h).length,d=u.length-p;d&&(i=a(()=>U_(0,d),"recalculateCreatorsQuotasFn"))}let o=await Zn.destroy(e,t);return await Tt.group.deleted(r),await Bre(),await i(),o}a(Wre,"remove");async function DM(e,t){let r=await Zn.get(e),n=await nr.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 nr.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let l=(await Ih.creatorsInList(i)).filter(p=>p).length,f=i.length-l;f&&await OM(0,f)}let u=[];for(let c of t)u.push(qt.user.invalidateUser(c));return await Promise.all(u),await Tt.group.usersAdded(o.length,r),o}a(DM,"addUsers");async function Gre(e,t){let r=await Zn.get(e),n=await nr.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 nr.bulkUpdateGlobalUsers(i),Object.values(r.roles||{}).includes("CREATOR")){let c=(await Ih.creatorsInList(i)).filter(f=>f).length,l=i.length-c;l&&await U_(0,l)}let s=[];for(let u of t)s.push(qt.user.invalidateUser(u));return await Promise.all(s),i.length&&await Tt.group.usersDeleted(i.length,r),i}a(Gre,"removeUsers");async function Hre(e,t){let r=await j_(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&&!Dre())throw new Re("Feature not enabled, please check license",400);return await CM(r)}a(Hre,"updateGroupApps");async function k0r(e){let t=await lI(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await Zn.bulkSave(r)}a(k0r,"cleanupApp");async function C0r(){if(!await Pre()){let e=vt.getGlobalDB(),r=(await lI()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let i=await Zn.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 Ih.creatorsInList(s)).filter(f=>f).length,l=i.length-c;await Zn.save({...n,roles:{}}),l&&await U_(0,l)}}}a(C0r,"adjustGroupCreatorsQuotas");nr.UserDB.init(Wn,on,bs);var Ju=nr.UserDB;var M_={};oe(M_,{logs:()=>ene});var ene={};oe(ene,{logSearch:()=>B0r,oldestLogDate:()=>tZe,storeLog:()=>q0r});async function JXe(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(JXe,"backOff");var{SEPARATOR:nd,UNICODE_MAX:D0r,DocumentType:XXe,AutomationViewMode:Kre,ViewName:P0r,getQueryIndex:N0r}=ne,L0r=new Date(0).toISOString(),F0r=100,Qre=a(async()=>mM("automationLogRetentionDays"),"oldestLogDate");function ZXe(e,t,{status:r,automationId:n}={},i={}){let o=n?`${n}${nd}`:"",s=r?`${r}${nd}`:"",u;return r&&n?u=`${Kre.ALL}${nd}${s}${o}`:r?u=`${Kre.STATUS}${nd}${s}`:n?u=`${Kre.AUTOMATION}${nd}${o}`:u=`${XXe.AUTOMATION_LOG}${nd}`,{...i,descending:!0,startkey:`${u}${t}${D0r}`,endkey:`${u}${e}`}}a(ZXe,"getAutomationLogParams");function U0r(e,t,r){return`${XXe.AUTOMATION_LOG}${nd}${e}${nd}${r}${nd}${t}`}a(U0r,"generateAutomationLogID");async function Yre(e,t,r={docs:!0}){let n=z.getProdWorkspaceDB();await n.exists()||(n=z.getDevWorkspaceDB());let i={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=ZXe(e,t,i,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let u=await n.allDocs(s);return eI(u,{paginate:r?.paginate,pageSize:9})}a(Yre,"getAllLogs");async function Jre(e,t,r={}){let n=z.getProdWorkspaceDB();await n.exists()||(n=z.getDevWorkspaceDB());let i;try{let o={automationId:r?.automationId,status:r?.status},s=ZXe(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),i=await n.query(N0r(P0r.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await hXe(),Jre(e,t,r);throw o}return eI(i,{paginate:!0,pageSize:9})}a(Jre,"getLogsByView");async function eZe(e,t){let r=z.getProdWorkspaceDB(),n=e._id,i=e.name,o=new Date().toISOString(),s=U0r(o,t.status,n),u={...t,automationId:n,status:t.status,automationName:i,createdAt:o,_id:s};return await r.put(u),s}a(eZe,"writeLog");async function Xre(e,{clearing:t}={clearing:!1}){let r=z.getProdWorkspaceDB();await JXe(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 qt.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(Xre,"updateAppMetadataWithErrors");async function j0r(){let e=await Qre();try{return await Yre(L0r,e,{docs:!1,paginate:!1,limit:F0r})}catch{return{data:[],hasNextPage:!1}}}a(j0r,"getExpiredLogs");async function Zre(){let e=z.getProdWorkspaceDB();try{let t=await j0r();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 Xre(n,{clearing:!0})}catch(t){kt.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(Zre,"clearOldHistory");var tZe=Qre;async function M0r(e,t,r,n){let i,o=new Date().toISOString(),s=await tZe();return(!e||e<s)&&(e=s),r||t?i=await Jre(e,o,{automationId:r,status:t,page:n}):i=await Yre(e,o,{status:t,page:n,docs:!0,paginate:!0}),i}a(M0r,"getLogs");async function B0r(e){return await Zre(),await M0r(e.startDate,e.status,e.automationId,e.page)}a(B0r,"logSearch");async function q0r(e,t){if(!ne.isProdWorkspaceID(z.getWorkspaceId()))return;let r=await eZe(e,t);t.status==="error"&&await Xre([r]),await Zre()}a(q0r,"storeLog");var tne={};oe(tne,{checkPluginQuotas:()=>W0r,deletePlugin:()=>z0r,storePlugin:()=>$0r});var rZe=te(require("fs")),nZe=require("path");function iZe(e,t){return rZe.default.readFileSync((0,nZe.join)(e,t),"utf8")}a(iZe,"loadJSFile");async function $0r(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=iZe(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 qre(write)}a($0r,"storePlugin");async function z0r(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 $re()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(z0r,"deletePlugin");async function W0r(){let e=vt.getGlobalDB();try{let r=(await e.allDocs(ne.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await zre(r)}catch(t){kt.logAlert("Unable to retrieve plugins for quota check",t)}}a(W0r,"checkPluginQuotas");var sl={};oe(sl,{fetch:()=>H0r,fetchValues:()=>V0r,isEncryptionKeyAvailable:()=>G0r,isValid:()=>sZe,remove:()=>Q0r,update:()=>K0r});function G0r(){return!!K.ENCRYPTION_KEY}a(G0r,"isEncryptionKeyAvailable");async function H0r(){let e=await yb.get();return Object.keys(e.variables)}a(H0r,"fetch");async function V0r(e){let r=(await yb.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(V0r,"fetchValues");async function oZe(e){if(!(await pm.cache.getCachedLicense()).features.includes("environmentVariables"))throw new Error("User does not have access to environment variables feature.");let r=await yb.get();r.variables=e(r.variables),await yb.update(r)}a(oZe,"changeValues");async function K0r(e,t){if(sZe(e))await oZe(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(K0r,"update");async function Q0r(e){await oZe(t=>(delete t[e],t))}a(Q0r,"remove");function sZe(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(sZe,"isValid");var _b={};oe(_b,{definitions:()=>oxr,download:()=>axr,fetch:()=>ixr,write:()=>rxr});var uZe=require("memorystream"),cZe=new Vt.Sql("sqlite3");async function Y0r(e,t,r){let n={operation:"READ",table:ZO.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:"descending",type:"string"}}},i=cZe._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(Y0r,"getAuditLogSqlQuery");function J0r(e){return`al${Me}${e}${Me}${Cr.newid()}`}a(J0r,"generateAuditLogID");async function lZe(e){e._id||(e._id=J0r(e.timestamp)),e.type||(e.type=Om);try{let r=await z.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){kt.logAlert("Failed to write audit log",t)}}a(lZe,"save");async function rne(e,t,r){t||(t=1);let n=z.getAuditLogsDB();try{let i=9+1,o=await Y0r(e,t,i),s=ZO.searchTable(),u=cZe.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 X0r(),await ZJe(),await rne(e,t,{isRetry:!0});throw i}}a(rne,"searchSQL");async function X0r(){let e=z.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:Om}));await e.bulkDocs(r)}a(X0r,"migrate");function fZe(e){let t=z.getAuditLogsDB(),r=new uZe,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 uZe;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)+`
|
|
755
|
-
`;i.write(u)}}),r.on("end",()=>{i.end()}),{promise:n,stream:i}}a(fZe,"dump");var exr=gr.MIN_VALID_DATE.toISOString(),txr=gr.MAX_VALID_DATE.toISOString();function nne(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||exr,e.endDate=e.endDate||txr),e}a(nne,"fillDates");async function pZe(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=nne(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(pZe,"getSearchFilters");function ine(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(ine,"deleted");function ane(e){let t=Xs(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=Tn(e,{})}return e}a(ane,"removeTemplateStrings");function dZe(e,t){let r=$b[e];if(!r)throw new Error("No friendly name found.");let n=Tn(r,t);return n.includes('""')&&(n=ane(r)),n}a(dZe,"getEventFriendlyName");async function rxr(e,t,r){if(!await RM()||!Cr.isAudited(e))return;let n=dZe(e,t),i=new Date;r?.timestamp&&(i=new Date(r.timestamp));let o={timestamp:i.toISOString(),event:e,name:n,userId:r?.userId||cse,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ne.getProdWorkspaceID(r.appId);let u=await qt.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(s.appName=u.name)}if(r?.userId){let u=await nr.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 lZe(o)}a(rxr,"write");async function nxr(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>ne.getDevWorkspaceID(u.appId)),i=await nr.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||ine(u.userId,"user",u.fallback)};u.appId&&(f.app=l||ine(u.appId,"app",u.fallback)),s.push(f)}return s}a(nxr,"enrich");async function ixr(e){if(!await RM())throw new Error("Audit logs not available - license required.");let t=await pZe(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await rne(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await nxr(r.rows)}}a(ixr,"fetch");function axr(e){return e=nne(e),fZe(e)}a(axr,"download");function oxr(){let e=Object.entries($b).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ane(r[1]);return t}a(oxr,"definitions");var cne={};oe(cne,{applications:()=>une,roles:()=>sne,users:()=>one});var one={};oe(one,{roleCheck:()=>uxr});function sxr(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(sxr,"removeRoles");async function uxr(e,t){return await td()||sxr(e,t),e}a(uxr,"roleCheck");var sne={};oe(sne,{assign:()=>cxr,unAssign:()=>lxr});async function cxr(e,t){if(!await td())throw new Error("Unable to assign roles - license required.");let r=await Ju.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 Ju.bulkUpdate(r)}a(cxr,"assign");async function lxr(e,t){if(!await td())throw new Error("Unable to un-assign roles - license required.");let r=await Ju.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(lxr,"unAssign");var une={};oe(une,{buildExportFn:()=>pxr,buildImportFn:()=>fxr});function fxr(e){return async(t,r)=>{await td()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await z.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(fxr,"buildImportFn");function pxr(e){return async(t,r)=>{await td()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:i}=t.request.body;await z.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:i},t.query.appId=t.params.appId,await e(t),await r()})}}a(pxr,"buildExportFn");var gZe=te(require("fs")),yZe=require("path");var hZe;function mZe(){hZe=new co.BudibaseQueue(co.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(mZe,"init");function Sb(){return hZe}a(Sb,"getBackupQueue");async function lne(e,t={}){return Yu.storeAppBackupMetadata(e,t)}a(lne,"storeAppBackupMetadata");function bZe(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(bZe,"getTimestamps");async function hxr(e,t,r,n){let i=await NM(e);return await Yu.storeAppBackupMetadata({...i,...bZe(t),contents:r,status:t,type:"backup"},{filename:n,docId:e})}a(hxr,"updateBackupStatus");async function mxr(e,t,r){let n=await NM(e);return await Yu.storeAppBackupMetadata({...n,...bZe(r),status:r,type:"restore",trigger:"manual"},{docId:e,docRev:t})}a(mxr,"updateRestoreStatus");async function NM(e){return Yu.getAppBackupMetadata(e)}a(NM,"getAppBackup");async function gxr(e,t){return Yu.updateAppBackupMetadata(e,t)}a(gxr,"updateAppBackup");async function vZe(e){let t=await Yu.getAppBackupMetadata(e);return t.filename&&await gt.deleteFile(gt.ObjectStoreBuckets.BACKUPS,t.filename),Yu.deleteAppBackupMetadata(e)}a(vZe,"deleteAppBackup");async function yxr(e){let t=[];for(let r of e)try{await vZe(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(yxr,"deleteAppBackups");async function bxr(e,t){return Yu.fetchAppBackups(e,t)}a(bxr,"fetchAppBackups");async function wZe(e){let t=await Yu.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(wZe,"getBackupDownloadStream");async function vxr(e){let{stream:t}=await wZe(e),r=(0,yZe.join)(gt.budibaseTempDir(),Cr.newid()),n=gZe.default.createWriteStream(r);return new Promise((i,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>i(r))})}a(vxr,"downloadAppBackup");async function wxr(e,t,r={}){let n;try{n=await lne({appId:e,trigger:t,timestamp:new Date().toISOString(),status:"pending",type:"backup",...r})}catch(i){if(i.status===409)return;throw i}return await Sb().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(wxr,"triggerAppBackup");async function Exr(e,t,r,n){let i=await NM(t),o;try{o=await lne({appId:e,timestamp:new Date().toISOString(),status:"pending",type:"restore",createdBy:n})}catch(s){if(s?.status===409)return;throw s}return await Sb().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:i}}a(Exr,"triggerAppRestore");async function _xr(e,t,r){let n=ne.getProdWorkspaceID(e);await z.doInWorkspaceContext(n,async()=>{let i=z.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 qt.workspace.invalidateWorkspaceMetadata(s.appId,s))})}a(_xr,"trackBackupError");var Sxr={isEnabled:kre,triggerAppRestore:$o(Exr),triggerAppBackup:$o(wxr),getBackupDownloadStream:$o(wZe),downloadAppBackup:$o(vxr),fetchAppBackups:$o(bxr),storeAppBackupMetadata:$o(lne),updateBackupStatus:$o(hxr),updateRestoreStatus:$o(mxr),getAppBackup:$o(NM),updateAppBackup:$o(gxr),deleteAppBackup:$o(vZe),deleteAppBackups:$o(yxr),trackBackupError:$o(_xr)},Xu=Sxr;var pne={};oe(pne,{init:()=>fne});var B_=te(require("fs"));async function fne(e){Sb().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),Axr(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),Txr(t,e)}catch(n){kt.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(fne,"init");async function xxr(e){await ne.getDB(e,{skip_setup:!0}).destroy()}a(xxr,"removeExistingApp");async function EZe(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 Xu.updateBackupStatus(n.doc.id,c,l?.contents,l?.filename):await Xu.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=B_.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}),B_.default.existsSync(c)&&B_.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 Xu.trackBackupError(o,l,`Backup export failed: ${f}`)}}a(EZe,"runBackup");async function Txr(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 Xu.updateRestoreStatus(r.docId,r.docRev,"started");await EZe("restoring",u,n,{processing:t,createdBy:s,name:o});let p=await Xu.downloadAppBackup(i),d="complete";try{await t.importAppFn(l,ne.getDB(l),{file:{type:"application/gzip",path:p},key:p}),await xxr(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 Xu.trackBackupError(n,i,`Backup restore failed: ${m}`)}finally{try{await ne.getDB(l,{skip_setup:!0}).destroy()}catch{}}await Xu.updateRestoreStatus(r.docId,f,d),B_.default.existsSync(p)&&B_.default.rmSync(p,{force:!0})})}a(Txr,"importProcessor");async function Axr(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 Xu.updateBackupStatus(r.docId,"started");return EZe(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 Xu.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(Axr,"exportProcessor");var Rxr=a(async e=>{mZe(),await fne(e.processing)},"init"),tu={...Xu,processing:pne,init:Rxr,getBackupQueue:Sb};var Oxr=a(async e=>{e.backups&&await tu.init(e.backups)},"init");var ru={};oe(ru,{create:()=>Cxr,find:()=>kxr,get:()=>Ixr,remove:()=>Pxr,update:()=>Dxr});var _Ze=te(require("lodash/fp/merge"));async function Ixr(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(Ixr,"get");async function kxr(e){return await nr.getById(e)}a(kxr,"find");async function Cxr(e){let t=await Ju.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Re("User is already synched",409);e={...t,scimInfo:(0,_Ze.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ju.save(e,{requirePassword:!1})}a(Cxr,"create");async function Dxr(e,t){return await Ju.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(Dxr,"update");async function Pxr(e){return await Ju.destroy(e)}a(Pxr,"remove");var fI={};oe(fI,{create:()=>Nxr});var SZe=te(require("lodash/fp/merge"));async function Nxr(e){let t=await ore(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,SZe.default)(t.scimInfo,e.scimInfo),await on.save(t)}return await on.get(r)}a(Nxr,"create");var q_={};oe(q_,{logRequest:()=>Lxr,logResponse:()=>Fxr});async function Lxr(e){kt.logWarn("SCIM request log",e)}a(Lxr,"logRequest");async function Fxr(e){kt.logWarn("SCIM response error",e)}a(Fxr,"logResponse");var Eo={};oe(Eo,{requireFeature:()=>Uxr,requireFeatures:()=>jxr});var Uxr=a(e=>async(t,r)=>{await AM(e),await r()},"requireFeature"),jxr=a((...e)=>async(t,r)=>{await Ire(e),await r()},"requireFeatures");var xZe=a(async(e,t)=>(K.DISABLE_SCIM_CALLS||await q_.logRequest({...e.request.toJSON(),body:e.request.body}),await z.doInScimContext(async()=>{let r=await t();return await q_.logResponse({...e.response.toJSON(),body:e.response.body}),r})),"doInScimContext");var TZe=a(async(e,t)=>{await Nre(),await t()},"requireSCIM");var LM=a(e=>dne(nr.getById,e,!0),"scimUserOnly"),FM=a(e=>dne(Zn.get,e,!0),"scimGroupOnly"),UM=a(e=>dne(Zn.get,e,!1),"internalGroupOnly");function dne(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(dne,"scimSyncChecks");var Mxr=require("dd-trace");var PZe=te(require("@koa/router")),Ab=te(require("joi"));async function Tb(e,t){t||e.throw(400,"App ID missing"),await oI.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(Tb,"checkAppID");async function AZe(e){let t=e.params.appId;await Tb(e,t);let{body:r}=e.request,n=e.user?._id,i=await tu.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(AZe,"manualBackup");async function RZe(e){let t=e.params.appId;await Tb(e,t);let r=e.params.backupId,n=e.request.body.name,i=await tu.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(RZe,"importBackup");async function OZe(e){let t=e.params.appId;await Tb(e,t);let r=e.params.backupId;await tu.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(OZe,"deleteBackup");async function IZe(e){let t=z.getWorkspaceId();await Tb(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 tu.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(IZe,"deleteBackups");async function kZe(e){let t=e.params.appId;await Tb(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Im).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await tu.fetchAppBackups(t,{paginate:!0,...r})}a(kZe,"fetchBackups");async function CZe(e){let t=e.params.appId;await Tb(e,t);let r=e.params.backupId,n=e.request.body;e.body=await tu.updateAppBackup(r,n.name)}a(CZe,"updateBackup");async function DZe(e){let t=e.params.appId;await Tb(e,t);let r=e.params.backupId,{metadata:n,stream:i}=await tu.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=i}a(DZe,"downloadBackup");var $xr=new PZe.default;function zxr(){return er.joiValidator.body(Ab.default.object({trigger:Ab.default.string().valid(...Object.values(Im)),type:Ab.default.string().valid(...Object.values(gS)),startDate:Ab.default.date(),endDate:Ab.default.date(),page:Ab.default.string()}))}a(zxr,"validateBackupSearch");$xr.post("/api/apps/:appId/backups",er.builderOrAdmin,AZe).post("/api/apps/:appId/backups/search",er.builderOrAdmin,zxr(),kZe).get("/api/apps/:appId/backups/:backupId/file",er.builderOrAdmin,DZe).patch("/api/apps/:appId/backups/:backupId",er.builderOrAdmin,CZe).delete("/api/apps/:appId/backups/:backupId",er.builderOrAdmin,OZe).delete("/api/apps/:appId/backups",er.builderOrAdmin,IZe).post("/api/apps/:appId/backups/:backupId/import",er.builderOrAdmin,RZe);async function NZe(e){let t=e.request.body,r=await _b.fetch(t);await Tt.auditLog.filtered(t),e.body=r}a(NZe,"search");async function LZe(e){let t=e.request.body,{stream:r}=_b.download(t);await Tt.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(LZe,"download");async function FZe(e){e.body={events:_b.definitions()}}a(FZe,"definitions");var jZe=te(require("@koa/router")),Zu=te(require("joi"));function UZe(){return er.joiValidator.body(Zu.default.object({userIds:Zu.default.array().items(Zu.default.string()).optional(),appIds:Zu.default.array().items(Zu.default.string()).optional(),events:Zu.default.array().items(Zu.default.string().valid(...Object.values(Er))).optional(),startDate:Zu.default.string().optional().allow(""),endDate:Zu.default.string().optional().allow(""),fullSearch:Zu.default.string().optional().allow(""),bookmark:Zu.default.number()}))}a(UZe,"buildAuditLogSearchValidator");var Gxr=new jZe.default;Gxr.post("/api/global/auditlogs/search",er.adminOnly,UZe(),NZe).get("/api/global/auditlogs/download",er.adminOnly,AU.querystringToBody,UZe(),LZe).get("/api/global/auditlogs/definitions",er.adminOnly,FZe);async function MZe(e){e.body={encryptionKeyAvailable:sl.isEncryptionKeyAvailable()}}a(MZe,"status");async function BZe(e){e.body={variables:await sl.fetch()}}a(BZe,"fetch");async function qZe(e){let{name:t,production:r,development:n}=e.request.body;await sl.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(qZe,"create");async function $Ze(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await sl.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a($Ze,"update");async function zZe(e){let t=e.params.varName;await sl.remove(t),await Tt.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(zZe,"destroy");var GZe=te(require("@koa/router")),pI=te(require("joi"));var Vxr=new GZe.default;function WZe(){return er.joiValidator.body(pI.default.object({name:pI.default.string().optional(),production:pI.default.string().required(),development:pI.default.string().required()}))}a(WZe,"buildEnvVarUpdateValidator");Vxr.get("/api/env/variables/status",er.builderOrAdmin,MZe).get("/api/env/variables",er.builderOrAdmin,BZe).post("/api/env/variables",er.builderOrAdmin,WZe(),qZe).patch("/api/env/variables/:varName",er.builderOrAdmin,WZe(),$Ze).delete("/api/env/variables/:varName",er.builderOrAdmin,zZe);var eet=te(require("@koa/router")),zo=te(require("joi"));async function HZe(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await j_(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await CM(t);e.body={_id:r.id,_rev:r.rev}}a(HZe,"save");async function VZe(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 DM(t,r)),n&&(o=await Gre(t,n)),e.body={added:i,removed:o}}a(VZe,"updateGroupUsers");async function KZe(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 Hre(t,{appsToAdd:r,appsToRemove:n})}a(KZe,"updateGroupApps");async function QZe(e){e.body={data:await lI()}}a(QZe,"fetch");async function YZe(e){let{groupId:t,rev:r}=e.params;try{await Wre(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(YZe,"destroy");async function JZe(e){try{e.body=await j_(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(JZe,"find");async function XZe(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,i=e.params.groupId,o={limit:t+1},s=await pM(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(XZe,"searchUsers");async function ZZe(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 HR.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 j_(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=>Ju.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 DM(t,l),e.body={added:u,skipped:c}}a(ZZe,"bulkAddUsersFromCsv");var Qxr=new eet.default;function Yxr(){return er.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(Yxr,"buildGroupSaveValidation");Qxr.post("/api/global/groups",er.adminOnly,Eo.requireFeature("userGroups"),Yxr(),HZe).get("/api/global/groups",Eo.requireFeature("userGroups"),QZe).delete("/api/global/groups/:groupId/:rev",Eo.requireFeature("userGroups"),er.adminOnly,UM("groupId"),YZe).get("/api/global/groups/:groupId",Eo.requireFeature("userGroups"),er.builderOrAdmin,JZe).get("/api/global/groups/:groupId/users",Eo.requireFeature("userGroups"),er.builderOrAdmin,XZe).post("/api/global/groups/:groupId/users",er.adminOnly,Eo.requireFeature("userGroups"),UM("groupId"),VZe).post("/api/global/groups/:groupId/users/bulk",er.adminOnly,Eo.requireFeature("userGroups"),UM("groupId"),er.joiValidator.body(zo.default.object({csvContent:zo.default.string().required()}).required()),ZZe).post("/api/global/groups/:groupId/apps",er.builderOrAdmin,Eo.requireFeature("userGroups"),KZe);var Iet=te(require("@koa/router"));var WM=te(Nne());function get(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(get,"tryGetQueryAsNumber");var yet=a(async e=>{let t=get(e,"pageSize")??20,r=get(e,"startIndex"),n;e.request.query.filter&&(n=fa.user.userFilters(e.request.query.filter));let i=await ru.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"),bet=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ru.find(t);e.body=fa.user.toScimUserResponse(r)},"find"),vet=a(async e=>{let t=fa.user.fromScimUser(e.request.body);try{let r=await ru.create(t);e.body=fa.user.toScimUserResponse(r)}catch(r){throw r instanceof bp&&e.throw(409,"Email already in use"),r}},"create");function vTr(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(vTr,"isDeactivation");var wet=a(async e=>{let t=await ru.find(e.params.id);t||e.throw(404);let r=fa.user.toScimUserResponse(t),n=e.request.body;try{(0,WM.patchBodyValidation)(n)}catch{}if(vTr(n))return Lne(e);let i;try{i=(0,WM.scimPatch)(r,n.Operations)}catch{}i||e.throw(500);let o=fa.user.fromScimUser(i);await ru.update(o,{allowChangingEmail:!0}),e.body=fa.user.toScimUserResponse(o)},"update"),Lne=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ru.remove(t),e.status=204},"remove");var Eet=te(require("lodash/groupBy"));var GM=te(Nne());var HM=te(zM());function _et(e,t){for(let r of t.split(","))delete e[r]}a(_et,"cleanResponse");var xet=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,HM.filter)((0,HM.parse)(n));r=r.filter(o)}i&&r.forEach(o=>{_et(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"),Tet=a(async e=>{let t=fa.group.fromScimGroup(e.request.body),r=await fI.create(t);e.body=fa.group.toScimGroupResponse(r)},"create"),Aet=a(async e=>{let{id:t}=e.params,r=await on.get(t),n=fa.group.toScimGroupResponse(r),{excludedAttributes:i}=e.request.query;i&&_et(n,i),e.body=n},"find"),Ret=a(async e=>{let{id:t}=e.params,r=await on.get(t);await on.remove(t,r._rev),e.status=204},"remove"),Oet=a(async e=>{let{id:t}=e.params,r=await on.get(t),n=fa.group.toScimGroupResponse(r),i=e.request.body;try{(0,GM.patchBodyValidation)(i)}catch{e.throw(400)}let{true:o,false:s}=(0,Eet.default)(i.Operations,u=>u.path==="members");if(s?.length){let u=(0,GM.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 ru.find(p.value));break;case"remove":case"Remove":for(let p of f)c.push(await ru.find(p.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:zt.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 ec=new Iet.default({prefix:"/api/global/scim/v2"});ec.use(TZe);ec.use(xZe);ec.get("/users",yet);ec.get("/users/:id",LM("id"),bet);ec.post("/users",vet);ec.patch("/users/:id",LM("id"),wet);ec.delete("/users/:id",LM("id"),Lne);ec.get("/groups",xet);ec.post("/groups",Eo.requireFeature("userGroups"),Tet);ec.get("/groups/:id",Eo.requireFeature("userGroups"),FM("id"),Aet);ec.delete("/groups/:id",Eo.requireFeature("userGroups"),FM("id"),Ret);ec.patch("/groups/:id",Eo.requireFeature("userGroups"),FM("id"),Oet);var fa={};oe(fa,{group:()=>Une,user:()=>Fne});var Fne={};oe(Fne,{fromScimUser:()=>RTr,toScimUserResponse:()=>xTr,userFilters:()=>OTr});var ket=te(zM());var{unreachable:STr}=zt,xTr=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"),TTr=a(e=>!!e?.id,"isScimUserResponse");function ATr(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(ATr,"tryGetEmail");var RTr=a(e=>{let t=TTr(e)?e:void 0,r=ATr(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:STr(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"),OTr=a(e=>{let t={equal:{}},r=(0,ket.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 Une={};oe(Une,{fromScimGroup:()=>CTr,toScimGroupResponse:()=>ITr});var ITr=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"),kTr=a(e=>!!e?.id,"isScimGroup"),CTr=a(e=>{let t=kTr(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:()=>Ef,LLMRequest:()=>Ci,TableGeneration:()=>oie,agentHistoryTitleSystemPrompt:()=>$Tr,agentSystemPrompt:()=>qTr,aiColumnSchemas:()=>iie,aiTableResponseToTableSchema:()=>eie,appendAIColumns:()=>tie,classifyText:()=>Bne,cleanData:()=>qne,extractFileData:()=>UTr,generateAIColumns:()=>Xne,generateCode:()=>BTr,generateCronExpression:()=>$ne,generateData:()=>Zne,generateJs:()=>Hne,generateSQL:()=>MTr,generateTables:()=>Jne,generationStructure:()=>nie,getLLM:()=>wI,getLLMConfig:()=>Yne,getLLMOrThrow:()=>Uet,normalizeContentType:()=>jne,parseResponseFormat:()=>KM,sanitiseToolName:()=>DTr,searchWeb:()=>Gne,sentimentAnalysis:()=>Wne,summarizeText:()=>VM,tableDataStructuredOutput:()=>aie,translate:()=>zne});function DTr(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(DTr,"sanitiseToolName");function jne(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(jne,"normalizeContentType");var QM=te(require("openai"));var ym=te(require("dd-trace"));function Mne(e,t){return t.map(r=>e[r]).join(" ")}a(Mne,"extractTextFromColumns");var Ef=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 ym.default.trace("prompt",async()=>{let r=typeof t=="string"?new Ci().addUserMessage(t):t,{messages:n,tokensUsed:i}=await ym.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 ym.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return ym.default.trace("summarizeText",()=>this.prompt(VM(t)))}async generateCronExpression(t){return ym.default.trace("generateCronExpression",()=>this.prompt($ne(t)))}async operation(t,r){return ym.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 VM(Mne(r,o));case"CLEAN_DATA":return qne(r[i]);case"TRANSLATE":return zne(r[i],s);case"CATEGORISE_TEXT":if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Bne(Mne(r,o),u.split(","));case"SENTIMENT_ANALYSIS":return Wne(r[i]);case"PROMPT":return c;case"SEARCH_WEB":return Gne(Mne(r,o));default:throw zt.unreachable(n)}}async generateJs(t,r){return await ym.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:i=[]}=r||{};return await this.prompt(Hne(n,i).addUserMessage(t))})}};var Vne=require("openai/helpers/zod");var Det=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(Det||{});function KM(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(KM,"parseResponseFormat");function Cet(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(Cet,"calculateBudibaseAICredits");var tc=class extends Ef{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 QM.default({apiKey:r.apiKey})}async uploadFile(r,n,i){let o=jne(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,QM.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:KM(r.format)};Object.values(Det).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(Vne.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:Cet(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:KM(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Vne.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?Cet(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 Kne=require("dd-trace");var YM=class extends Ef{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await IM(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await IM(r.tokensUsed),r}async uploadFile(t,r,n){return K.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new tc({apiKey:K.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(!K.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let f=await xM();if(!f)throw new Error("No license key found");this._apiKey=f}let s=`${K.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 K.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Kne.tracer.trace("chatCompletionCloud",async()=>await new tc({apiKey:K.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Kne.tracer.trace("chatCompletionSelfHost",async r=>{if(!K.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:K.BUDICLOUD_URL}),!this._apiKey){let c=await xM();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=`${K.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){K.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new tc({apiKey:K.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 vI=require("dd-trace");var Qne=te(require("@anthropic-ai/sdk"));function PTr(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(PTr,"calculateBudibaseAICredits");var JM=class extends Ef{constructor(r){super(r);this.client=new Qne.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:PTr(n.usage)}}catch(n){throw n instanceof Qne.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 Net=require("zod"),Let=require("openai/helpers/zod");var Pet=require("openai");var XM=class extends tc{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 Pet.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var Fet="gpt-5-mini",NTr={OpenAI:tc,TogetherAI:tc,AzureOpenAI:XM,Custom:tc,Anthropic:JM,BudibaseAI:YM};async function LTr(){return await vI.tracer.trace("getAIConfig",async e=>{let t={type:"ai",config:{}};if(!z.isSelfHostUsingCloud()){let n=await Ma.getAIConfig();n&&(t=n)}await Fre(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||Fet,apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(LTr,"getAIConfig");async function FTr(){return vI.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!K.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!K.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Fet,apiKey:K.OPENAI_API_KEY}})}a(FTr,"getSelfHostOpenAIKeyConfig");async function Yne(){return vI.tracer.trace("getLLMConfig",async()=>await LTr()||await FTr())}a(Yne,"getLLMConfig");async function wI(e){return await vI.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},i=await Yne();if(!i){t.addTags({enabled:!1,reason:"no config found"});return}r&&(i.model=r),n&&(i.maxTokens=n);let o=NTr[i.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:i.provider});return}return new o(i)})}a(wI,"getLLM");async function Uet(){let e=await wI();if(!e)throw new Re("No available LLM configurations",500);return e}a(Uet,"getLLMOrThrow");var Ci=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 Net.z.ZodType?this.format=(0,Let.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 id=require("zod");function VM(e,t){let r=`Summarize this text:
|
|
754
|
+
`;function nI(e){return bre.default.verify(e,jSr,{algorithms:["RS256"]})}a(nI,"verifyLicenseToken");function MSr(e,t){return bre.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(MSr,"sign");var EM={};oe(EM,{getFeatures:()=>vre});var BSr={free:[...Qu.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"]},qSr={free:[...Qu.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 vre(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(BSr);break;case"cloud":r=n(qSr);break}return r}a(vre,"getFeatures");var _M={};oe(_M,{UNLIMITED:()=>ye,getQuotas:()=>wre});var ee=fm,RXe=Qu,ye=-1,aI=a(e=>e*1e6,"millions"),$Sr={free:{...RXe.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(aI(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(aI(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(aI(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(aI(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(aI(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)}}},zSr={free:{...RXe.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 wre(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(zSr);break;case"cloud":r=n($Sr);break}return JSON.parse(JSON.stringify(r))}a(wre,"getQuotas");var oI={};oe(oI,{encoding:()=>L_,workspaceExists:()=>WSr});async function WSr(e){return(await ne.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(WSr,"workspaceExists");var L_={};oe(L_,{base64ToObject:()=>HSr,objectToBase64:()=>GSr});function GSr(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(GSr,"objectToBase64");function HSr(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(HSr,"base64ToObject");var OXe=te(require("lodash/union")),IXe=te(require("lodash/merge"));async function VSr(e){await Ku.save({offlineLicenseToken:e}),await bb()}a(VSr,"activateOfflineLicenseToken");async function KSr(){await Ku.save({offlineLicenseToken:void 0}),await bb()}a(KSr,"deleteOfflineLicenseToken");async function kXe(){return(await Ku.get()).offlineLicenseToken}a(kXe,"getOfflineLicenseToken");async function Ere(){let t=(await Rh.getInstall()).installId,r=z.getTenantId(),n=await Tt.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(Ere,"getIdentifier");async function QSr(){let e=await Ere();return L_.objectToBase64(e)}a(QSr,"getIdentifierBase64");function YSr(e){return L_.base64ToObject(e)}a(YSr,"getIdentifierFromBase64");function CXe(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(CXe,"verifyExpiry");async function DXe(e){let t=await Ere();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(DXe,"verifyInstallation");function PXe(e){let t=e.plan.type,r="self",n=vre(r,t),i=wre(r,t);return e.features=(0,OXe.default)(e.features,n),e.quotas=(0,IXe.default)(e.quotas,i),e}a(PXe,"enrichLicense");async function _re(){try{let e=await kXe();if(e){let t=await nI(e);return CXe(t),await DXe(t),PXe(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(_re,"getOfflineLicense");var uI={};oe(uI,{deleteDevLicense:()=>t0r,getOfflineLicense:()=>ZSr,writeDevLicenseToDisk:()=>e0r});var xre=require("path"),NXe=require("os"),vb=te(require("fs"));var JSr=K.isTest()?".budibase-test":".budibase",Sre=(0,xre.join)((0,NXe.tmpdir)(),JSr),XSr="dev_license.txt",sI=(0,xre.join)(Sre,XSr);if(!vb.default.existsSync(Sre))try{vb.default.mkdirSync(Sre)}catch{}function ZSr(){try{if(vb.default.existsSync(sI)){let e=vb.default.readFileSync(sI,{encoding:"utf-8"});return nI(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(ZSr,"getOfflineLicense");function e0r(e){console.log(`Writing license to: ${sI}`),vb.default.writeFileSync(sI,e,{encoding:"utf-8"})}a(e0r,"writeDevLicenseToDisk");function t0r(){vb.default.rmSync(sI,{force:!0})}a(t0r,"deleteDevLicense");var LXe=require("dd-trace");var Tre=a(async()=>await LXe.tracer.trace("getLicense",async e=>{if(K.OFFLINE_MODE)return e.addTags({offline:!0}),_re();let t=await N_();return t||(e.addTags({offlineFallback:!0}),t=uI.getOfflineLicense()),t}),"getLicense"),FXe=a(e=>gre(e),"getLicenseFromKey"),Are=a(()=>K.SELF_HOSTED?Qu.SELF_FREE_LICENSE:Qu.CLOUD_FREE_LICENSE,"getFreeLicense");var Ore={};oe(Ore,{activateLicenseKey:()=>r0r,deleteLicenseKey:()=>n0r,getLicenseKey:()=>xM});var Rre=te(require("dd-trace"));async function r0r(e){await yre(e),await Ku.save({licenseKey:e}),await bb()}a(r0r,"activateLicenseKey");async function xM(){return await Rre.default.trace("getLicenseKey",async e=>{let t=await Ku.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(xM,"getLicenseKey");async function n0r(){return await Rre.default.trace("deleteLicenseKey",async()=>{await Ku.save({licenseKey:void 0}),await bb()})}a(n0r,"deleteLicenseKey");var TM=te(require("dd-trace"));var UXe=3600,bb=a(async()=>{await BXe(),await MXe()},"refresh"),jXe=a(async(e,t)=>{let{populateLicense:r=Tre,populateFreeLicense:n=Are}=t||{};return await TM.default.trace("getCachedLicense",async i=>{let o=z.getLicense();if(o)return i.addTags({foundInContext:!0,features:o.features,plan:o.plan,quotas:o.quotas}),o;let s=vt.getTenantId(),u=await Yte(),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 TM.default.trace("populateLicense",async()=>await r(s)),i.addTags({populatedLicense:!!c}),c||(c=TM.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:UXe}),await u.store(s,c,UXe),c)})},"_getCachedLicense");K.isJest()&&(jXe=jest.fn());var MXe=jXe,BXe=a(async()=>{let e=vt.getTenantId();await(await Yte()).delete(e)},"invalidate");async function Ya(e,t){Array.isArray(e)||(e=[e]),t||(t=await ol.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(Ya,"areFeaturesEnabled");async function AM(e,t){if(!await Ya(e,t))throw new aE(`${e} is not currently enabled`,e)}a(AM,"checkFeature");async function Ire(e,t){if(!await Ya(e,t)){let r=e.join(", ");throw new aE(`${r} are not currently enabled`,r)}}a(Ire,"checkFeatures");function $o(e){return async(...t)=>(await AM("appBackups"),e(...t))}a($o,"checkBackups");async function kre(){return Ya("appBackups")}a(kre,"isBackupsEnabled");async function Cre(){return Ya("branding")}a(Cre,"isBrandingEnabled");async function qXe(){return Ya("enforceableSSO")}a(qXe,"isEnforceableSSO");async function a0r(){return Ya("syncAutomations")}a(a0r,"isSyncAutomationsEnabled");async function o0r(){return Ya("triggerAutomationRun")}a(o0r,"isTriggerAutomationRunEnabled");async function Dre(){return Ya("appBuilders")}a(Dre,"isAppBuildersEnabled");async function RM(){return Ya("auditLogs")}a(RM,"isAuditLogsEnabled");async function Pre(){return Ya("userGroups")}a(Pre,"isUserGroupsEnabled");function s0r(){return Ya("pwa")}a(s0r,"isPWAEnabled");function u0r(){return Ya("recaptcha")}a(u0r,"isRecaptchaEnabled");var c0r=a(()=>Ya("pkceOidc"),"isPkceOidcEnabled");async function td(){return Ya("expandedPublicApi")}a(td,"isExpandedPublicApiEnabled");async function l0r(e){if(K.ENABLE_SSO_MAINTENANCE_MODE||!await qXe())return!1;let r;return e?.config?r=e.config:r=await Ma.getSettingsConfig(),!!r.isSSOEnforced}a(l0r,"isSSOEnforced");var Nre=a(async()=>{let e="scim",t=await Ya(e),r=await Ma.getSCIMConfig();if(!t||!r?.enabled)throw new aE(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function f0r(){return Ya("viewPermissions")}a(f0r,"isViewPermissionEnabled");async function p0r(){return Ya("viewReadonlyColumns")}a(p0r,"isViewReadonlyColumnsEnabled");var d0r={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 h0r(e){return await Cre()?{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}:d0r}a(h0r,"getBrandingConfig");var Ure={};oe(Ure,{enrichAIConfig:()=>Fre});var m0r="budibase_ai";async function Fre(e){if(K.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[m0r]={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(Fre,"enrichAIConfig");var Wn={};oe(Wn,{addAction:()=>w0r,addApp:()=>E0r,addAutomation:()=>R0r,addGroup:()=>Mre,addPlugin:()=>qre,addRow:()=>S0r,addRows:()=>T0r,addUsers:()=>OM,bustCache:()=>rre,decrement:()=>rd,decrementMany:()=>cI,getCurrentUsageValues:()=>XJe,getLicensedQuota:()=>zXe,getQuotaUsage:()=>gb,increment:()=>eu,incrementBudibaseAICredits:()=>IM,incrementMany:()=>Eb,removeApp:()=>_0r,removeGroup:()=>Bre,removePlugin:()=>$re,removeRow:()=>x0r,removeRows:()=>A0r,removeUsers:()=>U_,set:()=>jre,setAllUsage:()=>ire,setAppUsageValue:()=>nre,setUsage:()=>QJe,setUsagePerApp:()=>YJe,updatePluginCount:()=>zre,updateUsage:()=>F_,usageLimitIsExceeded:()=>v0r,utils:()=>UO});var wb=require("dd-trace");var eu=a(async(e,t,r)=>await wb.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await $Xe({change:1,name:e,type:t,opts:r}))),"increment"),Eb=a(e=>wb.tracer.trace("quotas.incrementMany",async()=>$Xe(e)),"incrementMany"),$Xe=a(async e=>await wb.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await F_(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 wb.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 F_(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"),rd=a((e,t,r={})=>F_({usageChange:-1,name:e,type:t,opts:r}),"decrement"),cI=a(e=>{let t=Array.isArray(e)?e:[e];return F_(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),jre=a(async(e,t,r)=>yf.setUsage(r,e,t),"set"),g0r=a((e,t,r)=>{if(e=="static"){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=yf.utils.getCurrentMonthString(),i=r.monthly[n].triggers;return i?i[t]||{}:{}}},"getExistingTriggers"),y0r=a(async(e,t,r,n)=>{try{await Bc.doWithLock({type:"try_once",name:"trigger_quota",resource:e,ttl:1e4},async()=>{let i={percentage:r,name:t.name};n&&(i.resetDate=n),await hm.triggerQuota(i)})}catch(i){kt.logAlert("Error triggering quota",i)}},"triggerQuota"),b0r=a(async(e,t,r,n)=>{let i=await gb(),o=e==="monthly"?i.quotaReset:void 0,s=await g0r(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!==fm.UNLIMITED){if(!s[f]){s[f]=new Date().toISOString();let d=u[l+1]||100;(!(c>=d)||c===f)&&await y0r(t,n,c,o)}}else s[f]=void 0;return s},"checkTriggers"),F_=a(async e=>{await wb.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 wb.tracer.trace("quotas.updateUsage.action",async h=>{h.addTags({actionName:d.name,actionType:d.type,actionUsageChange:d.usageChange});try{i=z.getWorkspaceId()}catch{}if(Gb.includes(d.name)&&!i)throw new Error("App context required for quota update");try{o=await zXe("usage",d.name,d.type),s.push(o);let{total:g,app:y,breakdown:b}=await yf.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 b0r(d.type,d.name,g,o),f={...f,[d.name]:v}),o.value!==fm.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 yf.setAllUsage(p)})},"updateUsage"),zXe=a(async(e,t,r)=>{let n=await ol.getCachedLicense();if(!n){let i=vt.getTenantId();throw new Error("License not found for tenant id "+i)}if(r&&Zoe(e,r,t))return n.quotas[e][r][t];if(r&&ese(e,r,t))return n.quotas[e][r][t];if(tse(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),v0r=a(async({name:e,type:t,usageChange:r})=>{try{return await F_({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code==="usage_limit_exceeded")return!0;throw n}},"usageLimitIsExceeded");var w0r=a(async e=>eu("actions","monthly",{fn:e}),"addAction");var WXe=a(async()=>{let e=await ne.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),E0r=a(async(e,{appId:t}={})=>eu("apps","static",{fn:e,valueFn:WXe,id:t}),"addApp"),_0r=a(async({appId:e}={})=>rd("apps","static",{valueFn:WXe,id:e}),"removeApp");var S0r=a(async(e,{tableId:t}={})=>eu("rows","static",{fn:e,id:t}),"addRow"),x0r=a(async({tableId:e}={})=>rd("rows","static",{id:e}),"removeRow"),T0r=a(async(e,t,{tableId:r}={})=>Eb({change:e,name:"rows",type:"static",opts:{fn:t,id:r}}),"addRows"),A0r=a(async(e,{tableId:t}={})=>cI({change:e,name:"rows",type:"static",opts:{id:t}}),"removeRows");var R0r=a(async(e,{automationId:t}={})=>eu("automations","monthly",{fn:e,id:t}),"addAutomation");var Mre=a(async e=>eu("userGroups","static",{fn:e}),"addGroup"),Bre=a(async()=>rd("userGroups","static"),"removeGroup");var qre=a(async e=>eu("plugins","static",{fn:e}),"addPlugin"),$re=a(async()=>rd("plugins","static"),"removePlugin"),zre=a(async e=>jre("plugins","static",e),"updatePluginCount");var OM=a(async(e,t,r)=>{let n=[{change:e,name:"users",type:"static",opts:{fn:r,valueFn:nr.getUserCount}}];t>0&&n.push({change:t,name:"creators",type:"static",opts:{valueFn:nr.getCreatorCount}});let i=await Eb(n);return await N_(),i},"addUsers"),U_=a(async(e,t)=>{let r=[{change:e,name:"users",type:"static",opts:{valueFn:nr.getUserCount}}];t>0&&r.push({change:t,name:"creators",type:"static",opts:{valueFn:nr.getCreatorCount}}),await cI(r),await N_()},"removeUsers");var IM=a(async e=>Eb({change:e,name:"budibaseAICredits",type:"monthly"}),"incrementBudibaseAICredits");var Vre={};oe(Vre,{db:()=>Ju});var on={};oe(on,{addUsers:()=>DM,adjustGroupCreatorsQuotas:()=>C0r,cleanupApp:()=>k0r,enrichUserRolesFromGroups:()=>I0r,fetch:()=>lI,get:()=>j_,getBulk:()=>YXe,getGroupBuilderAppIds:()=>QXe,getGroupRoleId:()=>O0r,remove:()=>Wre,removeUsers:()=>Gre,save:()=>CM,updateGroupApps:()=>Hre});var kM=class extends Re{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function VXe(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(VXe,"findHighestRole");async function KXe(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await Zn.getBulk(e,{enriched:!1}),t}a(KXe,"groupList");async function QXe(e,t){if(!e.userGroups)return[];let r=await KXe(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(QXe,"getGroupBuilderAppIds");async function O0r(e,t,r){if(!e.userGroups)return null;let n=await KXe(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 VXe(n,t))}a(O0r,"getGroupRoleId");async function I0r(e){if(!e||!e.userGroups)return e;let t=await YXe(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 z.doInWorkspaceContext(i,async()=>{if(e.roles[i])return;let o=await VXe(t,i);o&&(e.roles[i]=o)});let n=await QXe(e,{groups:t});if(n.length&&!e.builder?.global){let i=e.builder?.apps||[];e.builder={apps:i.concat(n)}}return e}a(I0r,"enrichUserRolesFromGroups");async function lI(){return await Zn.fetch()}a(lI,"fetch");async function j_(e){return await Zn.get(e)}a(j_,"get");async function YXe(e,t={enriched:!0}){return await Zn.getBulk(e,t)}a(YXe,"getBulk");async function GXe(e){if(await Zn.getByName(e))throw new kM(e)}a(GXe,"guardNameAvailability");async function HXe(e){let t=await Zn.getGroupUsers(e._id);if(!t.length)return 0;let n=await vt.getGlobalDB().getMultiple(t.map(o=>o._id));return(await Ih.creatorsInList(n)).filter(o=>o).length}a(HXe,"getCreatorsCountInGroup");async function CM(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=Zn.generateUserGroupID(),await GXe(e.name),t.push(Tt.group.created(e));else{let o=await Zn.get(e._id);if(o.name!==e.name&&await GXe(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 HXe(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(()=>Zn.save(e),"saveGroup");if(r)return await Mre(i);{let o=await i();if(n>0)await OM(0,n);else if(n<0){let s=await HXe(e),u=Math.abs(n)-s;u>0&&await U_(0,u)}return o}}a(CM,"save");async function Wre(e,t){let r;try{r=await Zn.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 Zn.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 Ih.creatorsInList(l)).filter(h=>h).length,d=u.length-p;d&&(i=a(()=>U_(0,d),"recalculateCreatorsQuotasFn"))}let o=await Zn.destroy(e,t);return await Tt.group.deleted(r),await Bre(),await i(),o}a(Wre,"remove");async function DM(e,t){let r=await Zn.get(e),n=await nr.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 nr.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let l=(await Ih.creatorsInList(i)).filter(p=>p).length,f=i.length-l;f&&await OM(0,f)}let u=[];for(let c of t)u.push(qt.user.invalidateUser(c));return await Promise.all(u),await Tt.group.usersAdded(o.length,r),o}a(DM,"addUsers");async function Gre(e,t){let r=await Zn.get(e),n=await nr.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 nr.bulkUpdateGlobalUsers(i),Object.values(r.roles||{}).includes("CREATOR")){let c=(await Ih.creatorsInList(i)).filter(f=>f).length,l=i.length-c;l&&await U_(0,l)}let s=[];for(let u of t)s.push(qt.user.invalidateUser(u));return await Promise.all(s),i.length&&await Tt.group.usersDeleted(i.length,r),i}a(Gre,"removeUsers");async function Hre(e,t){let r=await j_(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&&!Dre())throw new Re("Feature not enabled, please check license",400);return await CM(r)}a(Hre,"updateGroupApps");async function k0r(e){let t=await lI(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await Zn.bulkSave(r)}a(k0r,"cleanupApp");async function C0r(){if(!await Pre()){let e=vt.getGlobalDB(),r=(await lI()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let i=await Zn.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 Ih.creatorsInList(s)).filter(f=>f).length,l=i.length-c;await Zn.save({...n,roles:{}}),l&&await U_(0,l)}}}a(C0r,"adjustGroupCreatorsQuotas");nr.UserDB.init(Wn,on,bs);var Ju=nr.UserDB;var M_={};oe(M_,{logs:()=>ene});var ene={};oe(ene,{logSearch:()=>B0r,oldestLogDate:()=>tZe,storeLog:()=>q0r});async function JXe(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(JXe,"backOff");var{SEPARATOR:nd,UNICODE_MAX:D0r,DocumentType:XXe,AutomationViewMode:Kre,ViewName:P0r,getQueryIndex:N0r}=ne,L0r=new Date(0).toISOString(),F0r=100,Qre=a(async()=>mM("automationLogRetentionDays"),"oldestLogDate");function ZXe(e,t,{status:r,automationId:n}={},i={}){let o=n?`${n}${nd}`:"",s=r?`${r}${nd}`:"",u;return r&&n?u=`${Kre.ALL}${nd}${s}${o}`:r?u=`${Kre.STATUS}${nd}${s}`:n?u=`${Kre.AUTOMATION}${nd}${o}`:u=`${XXe.AUTOMATION_LOG}${nd}`,{...i,descending:!0,startkey:`${u}${t}${D0r}`,endkey:`${u}${e}`}}a(ZXe,"getAutomationLogParams");function U0r(e,t,r){return`${XXe.AUTOMATION_LOG}${nd}${e}${nd}${r}${nd}${t}`}a(U0r,"generateAutomationLogID");async function Yre(e,t,r={docs:!0}){let n=z.getProdWorkspaceDB();await n.exists()||(n=z.getDevWorkspaceDB());let i={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,s=ZXe(e,t,i,{include_docs:r.docs,limit:o});r?.page&&(s.startkey=r.page);let u=await n.allDocs(s);return eI(u,{paginate:r?.paginate,pageSize:9})}a(Yre,"getAllLogs");async function Jre(e,t,r={}){let n=z.getProdWorkspaceDB();await n.exists()||(n=z.getDevWorkspaceDB());let i;try{let o={automationId:r?.automationId,status:r?.status},s=ZXe(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(s.startkey=r.page),i=await n.query(N0r(P0r.AUTOMATION_LOGS),s)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await hXe(),Jre(e,t,r);throw o}return eI(i,{paginate:!0,pageSize:9})}a(Jre,"getLogsByView");async function eZe(e,t){let r=z.getProdWorkspaceDB(),n=e._id,i=e.name,o=new Date().toISOString(),s=U0r(o,t.status,n),u={...t,automationId:n,status:t.status,automationName:i,createdAt:o,_id:s};return await r.put(u),s}a(eZe,"writeLog");async function Xre(e,{clearing:t}={clearing:!1}){let r=z.getProdWorkspaceDB();await JXe(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 qt.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(Xre,"updateAppMetadataWithErrors");async function j0r(){let e=await Qre();try{return await Yre(L0r,e,{docs:!1,paginate:!1,limit:F0r})}catch{return{data:[],hasNextPage:!1}}}a(j0r,"getExpiredLogs");async function Zre(){let e=z.getProdWorkspaceDB();try{let t=await j0r();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 Xre(n,{clearing:!0})}catch(t){kt.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(Zre,"clearOldHistory");var tZe=Qre;async function M0r(e,t,r,n){let i,o=new Date().toISOString(),s=await tZe();return(!e||e<s)&&(e=s),r||t?i=await Jre(e,o,{automationId:r,status:t,page:n}):i=await Yre(e,o,{status:t,page:n,docs:!0,paginate:!0}),i}a(M0r,"getLogs");async function B0r(e){return await Zre(),await M0r(e.startDate,e.status,e.automationId,e.page)}a(B0r,"logSearch");async function q0r(e,t){if(!ne.isProdWorkspaceID(z.getWorkspaceId()))return;let r=await eZe(e,t);t.status==="error"&&await Xre([r]),await Zre()}a(q0r,"storeLog");var tne={};oe(tne,{checkPluginQuotas:()=>W0r,deletePlugin:()=>z0r,storePlugin:()=>$0r});var rZe=te(require("fs")),nZe=require("path");function iZe(e,t){return rZe.default.readFileSync((0,nZe.join)(e,t),"utf8")}a(iZe,"loadJSFile");async function $0r(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=iZe(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 qre(write)}a($0r,"storePlugin");async function z0r(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 $re()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(z0r,"deletePlugin");async function W0r(){let e=vt.getGlobalDB();try{let r=(await e.allDocs(ne.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await zre(r)}catch(t){kt.logAlert("Unable to retrieve plugins for quota check",t)}}a(W0r,"checkPluginQuotas");var sl={};oe(sl,{fetch:()=>H0r,fetchValues:()=>V0r,isEncryptionKeyAvailable:()=>G0r,isValid:()=>sZe,remove:()=>Q0r,update:()=>K0r});function G0r(){return!!K.ENCRYPTION_KEY}a(G0r,"isEncryptionKeyAvailable");async function H0r(){let e=await yb.get();return Object.keys(e.variables)}a(H0r,"fetch");async function V0r(e){let r=(await yb.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(V0r,"fetchValues");async function oZe(e){if(!(await pm.cache.getCachedLicense()).features.includes("environmentVariables"))throw new Error("User does not have access to environment variables feature.");let r=await yb.get();r.variables=e(r.variables),await yb.update(r)}a(oZe,"changeValues");async function K0r(e,t){if(sZe(e))await oZe(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(K0r,"update");async function Q0r(e){await oZe(t=>(delete t[e],t))}a(Q0r,"remove");function sZe(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(sZe,"isValid");var _b={};oe(_b,{definitions:()=>oxr,download:()=>axr,fetch:()=>ixr,write:()=>rxr});var uZe=require("memorystream"),cZe=new Vt.Sql("sqlite3");async function Y0r(e,t,r){let n={operation:"READ",table:ZO.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:"descending",type:"string"}}},i=cZe._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(Y0r,"getAuditLogSqlQuery");function J0r(e){return`al${Me}${e}${Me}${Cr.newid()}`}a(J0r,"generateAuditLogID");async function lZe(e){e._id||(e._id=J0r(e.timestamp)),e.type||(e.type=Om);try{let r=await z.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){kt.logAlert("Failed to write audit log",t)}}a(lZe,"save");async function rne(e,t,r){t||(t=1);let n=z.getAuditLogsDB();try{let i=9+1,o=await Y0r(e,t,i),s=ZO.searchTable(),u=cZe.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 X0r(),await ZJe(),await rne(e,t,{isRetry:!0});throw i}}a(rne,"searchSQL");async function X0r(){let e=z.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:Om}));await e.bulkDocs(r)}a(X0r,"migrate");function fZe(e){let t=z.getAuditLogsDB(),r=new uZe,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 uZe;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)+`
|
|
755
|
+
`;i.write(u)}}),r.on("end",()=>{i.end()}),{promise:n,stream:i}}a(fZe,"dump");var exr=gr.MIN_VALID_DATE.toISOString(),txr=gr.MAX_VALID_DATE.toISOString();function nne(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||exr,e.endDate=e.endDate||txr),e}a(nne,"fillDates");async function pZe(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=nne(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(pZe,"getSearchFilters");function ine(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(ine,"deleted");function ane(e){let t=Xs(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=Tn(e,{})}return e}a(ane,"removeTemplateStrings");function dZe(e,t){let r=$b[e];if(!r)throw new Error("No friendly name found.");let n=Tn(r,t);return n.includes('""')&&(n=ane(r)),n}a(dZe,"getEventFriendlyName");async function rxr(e,t,r){if(!await RM()||!Cr.isAudited(e))return;let n=dZe(e,t),i=new Date;r?.timestamp&&(i=new Date(r.timestamp));let o={timestamp:i.toISOString(),event:e,name:n,userId:r?.userId||cse,metadata:{...t,...r?.hostInfo}},s={};try{if(r?.appId){o.appId=ne.getProdWorkspaceID(r.appId);let u=await qt.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(s.appName=u.name)}if(r?.userId){let u=await nr.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 lZe(o)}a(rxr,"write");async function nxr(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>ne.getDevWorkspaceID(u.appId)),i=await nr.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||ine(u.userId,"user",u.fallback)};u.appId&&(f.app=l||ine(u.appId,"app",u.fallback)),s.push(f)}return s}a(nxr,"enrich");async function ixr(e){if(!await RM())throw new Error("Audit logs not available - license required.");let t=await pZe(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await rne(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await nxr(r.rows)}}a(ixr,"fetch");function axr(e){return e=nne(e),fZe(e)}a(axr,"download");function oxr(){let e=Object.entries($b).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ane(r[1]);return t}a(oxr,"definitions");var cne={};oe(cne,{applications:()=>une,roles:()=>sne,users:()=>one});var one={};oe(one,{roleCheck:()=>uxr});function sxr(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(sxr,"removeRoles");async function uxr(e,t){return await td()||sxr(e,t),e}a(uxr,"roleCheck");var sne={};oe(sne,{assign:()=>cxr,unAssign:()=>lxr});async function cxr(e,t){if(!await td())throw new Error("Unable to assign roles - license required.");let r=await Ju.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 Ju.bulkUpdate(r)}a(cxr,"assign");async function lxr(e,t){if(!await td())throw new Error("Unable to un-assign roles - license required.");let r=await Ju.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(lxr,"unAssign");var une={};oe(une,{buildExportFn:()=>pxr,buildImportFn:()=>fxr});function fxr(e){return async(t,r)=>{await td()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await z.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(fxr,"buildImportFn");function pxr(e){return async(t,r)=>{await td()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:i}=t.request.body;await z.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:i},t.query.appId=t.params.appId,await e(t),await r()})}}a(pxr,"buildExportFn");var gZe=te(require("fs")),yZe=require("path");var hZe;function mZe(){hZe=new co.BudibaseQueue(co.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(mZe,"init");function Sb(){return hZe}a(Sb,"getBackupQueue");async function lne(e,t={}){return Yu.storeAppBackupMetadata(e,t)}a(lne,"storeAppBackupMetadata");function bZe(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(bZe,"getTimestamps");async function hxr(e,t,r,n){let i=await NM(e);return await Yu.storeAppBackupMetadata({...i,...bZe(t),contents:r,status:t,type:"backup"},{filename:n,docId:e})}a(hxr,"updateBackupStatus");async function mxr(e,t,r){let n=await NM(e);return await Yu.storeAppBackupMetadata({...n,...bZe(r),status:r,type:"restore",trigger:"manual"},{docId:e,docRev:t})}a(mxr,"updateRestoreStatus");async function NM(e){return Yu.getAppBackupMetadata(e)}a(NM,"getAppBackup");async function gxr(e,t){return Yu.updateAppBackupMetadata(e,t)}a(gxr,"updateAppBackup");async function vZe(e){let t=await Yu.getAppBackupMetadata(e);return t.filename&&await gt.deleteFile(gt.ObjectStoreBuckets.BACKUPS,t.filename),Yu.deleteAppBackupMetadata(e)}a(vZe,"deleteAppBackup");async function yxr(e){let t=[];for(let r of e)try{await vZe(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(yxr,"deleteAppBackups");async function bxr(e,t){return Yu.fetchAppBackups(e,t)}a(bxr,"fetchAppBackups");async function wZe(e){let t=await Yu.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(wZe,"getBackupDownloadStream");async function vxr(e){let{stream:t}=await wZe(e),r=(0,yZe.join)(gt.budibaseTempDir(),Cr.newid()),n=gZe.default.createWriteStream(r);return new Promise((i,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>i(r))})}a(vxr,"downloadAppBackup");async function wxr(e,t,r={}){let n;try{n=await lne({appId:e,trigger:t,timestamp:new Date().toISOString(),status:"pending",type:"backup",...r})}catch(i){if(i.status===409)return;throw i}return await Sb().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(wxr,"triggerAppBackup");async function Exr(e,t,r,n){let i=await NM(t),o;try{o=await lne({appId:e,timestamp:new Date().toISOString(),status:"pending",type:"restore",createdBy:n})}catch(s){if(s?.status===409)return;throw s}return await Sb().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:i}}a(Exr,"triggerAppRestore");async function _xr(e,t,r){let n=ne.getProdWorkspaceID(e);await z.doInWorkspaceContext(n,async()=>{let i=z.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 qt.workspace.invalidateWorkspaceMetadata(s.appId,s))})}a(_xr,"trackBackupError");var Sxr={isEnabled:kre,triggerAppRestore:$o(Exr),triggerAppBackup:$o(wxr),getBackupDownloadStream:$o(wZe),downloadAppBackup:$o(vxr),fetchAppBackups:$o(bxr),storeAppBackupMetadata:$o(lne),updateBackupStatus:$o(hxr),updateRestoreStatus:$o(mxr),getAppBackup:$o(NM),updateAppBackup:$o(gxr),deleteAppBackup:$o(vZe),deleteAppBackups:$o(yxr),trackBackupError:$o(_xr)},Xu=Sxr;var pne={};oe(pne,{init:()=>fne});var B_=te(require("fs"));async function fne(e){Sb().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),Axr(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),Txr(t,e)}catch(n){kt.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(fne,"init");async function xxr(e){await ne.getDB(e,{skip_setup:!0}).destroy()}a(xxr,"removeExistingApp");async function EZe(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 Xu.updateBackupStatus(n.doc.id,c,l?.contents,l?.filename):await Xu.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=B_.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}),B_.default.existsSync(c)&&B_.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 Xu.trackBackupError(o,l,`Backup export failed: ${f}`)}}a(EZe,"runBackup");async function Txr(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 Xu.updateRestoreStatus(r.docId,r.docRev,"started");await EZe("restoring",u,n,{processing:t,createdBy:s,name:o});let p=await Xu.downloadAppBackup(i),d="complete";try{await t.importAppFn(l,ne.getDB(l),{file:{type:"application/gzip",path:p},key:p}),await xxr(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 Xu.trackBackupError(n,i,`Backup restore failed: ${m}`)}finally{try{await ne.getDB(l,{skip_setup:!0}).destroy()}catch{}}await Xu.updateRestoreStatus(r.docId,f,d),B_.default.existsSync(p)&&B_.default.rmSync(p,{force:!0})})}a(Txr,"importProcessor");async function Axr(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 Xu.updateBackupStatus(r.docId,"started");return EZe(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 Xu.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(Axr,"exportProcessor");var Rxr=a(async e=>{mZe(),await fne(e.processing)},"init"),tu={...Xu,processing:pne,init:Rxr,getBackupQueue:Sb};var Oxr=a(async e=>{e.backups&&await tu.init(e.backups)},"init");var ru={};oe(ru,{create:()=>Cxr,find:()=>kxr,get:()=>Ixr,remove:()=>Pxr,update:()=>Dxr});var _Ze=te(require("lodash/fp/merge"));async function Ixr(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(Ixr,"get");async function kxr(e){return await nr.getById(e)}a(kxr,"find");async function Cxr(e){let t=await Ju.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Re("User is already synched",409);e={...t,scimInfo:(0,_Ze.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Ju.save(e,{requirePassword:!1})}a(Cxr,"create");async function Dxr(e,t){return await Ju.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(Dxr,"update");async function Pxr(e){return await Ju.destroy(e)}a(Pxr,"remove");var fI={};oe(fI,{create:()=>Nxr});var SZe=te(require("lodash/fp/merge"));async function Nxr(e){let t=await ore(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,SZe.default)(t.scimInfo,e.scimInfo),await on.save(t)}return await on.get(r)}a(Nxr,"create");var q_={};oe(q_,{logRequest:()=>Lxr,logResponse:()=>Fxr});async function Lxr(e){kt.logWarn("SCIM request log",e)}a(Lxr,"logRequest");async function Fxr(e){kt.logWarn("SCIM response error",e)}a(Fxr,"logResponse");var Eo={};oe(Eo,{requireFeature:()=>Uxr,requireFeatures:()=>jxr});var Uxr=a(e=>async(t,r)=>{await AM(e),await r()},"requireFeature"),jxr=a((...e)=>async(t,r)=>{await Ire(e),await r()},"requireFeatures");var xZe=a(async(e,t)=>(K.DISABLE_SCIM_CALLS||await q_.logRequest({...e.request.toJSON(),body:e.request.body}),await z.doInScimContext(async()=>{let r=await t();return await q_.logResponse({...e.response.toJSON(),body:e.response.body}),r})),"doInScimContext");var TZe=a(async(e,t)=>{await Nre(),await t()},"requireSCIM");var LM=a(e=>dne(nr.getById,e,!0),"scimUserOnly"),FM=a(e=>dne(Zn.get,e,!0),"scimGroupOnly"),UM=a(e=>dne(Zn.get,e,!1),"internalGroupOnly");function dne(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(dne,"scimSyncChecks");var Mxr=require("dd-trace");var PZe=te(require("@koa/router")),Ab=te(require("joi"));async function Tb(e,t){t||e.throw(400,"App ID missing"),await oI.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(Tb,"checkAppID");async function AZe(e){let t=e.params.appId;await Tb(e,t);let{body:r}=e.request,n=e.user?._id,i=await tu.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(AZe,"manualBackup");async function RZe(e){let t=e.params.appId;await Tb(e,t);let r=e.params.backupId,n=e.request.body.name,i=await tu.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(RZe,"importBackup");async function OZe(e){let t=e.params.appId;await Tb(e,t);let r=e.params.backupId;await tu.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(OZe,"deleteBackup");async function IZe(e){let t=z.getWorkspaceId();await Tb(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 tu.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(IZe,"deleteBackups");async function kZe(e){let t=e.params.appId;await Tb(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Im).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await tu.fetchAppBackups(t,{paginate:!0,...r})}a(kZe,"fetchBackups");async function CZe(e){let t=e.params.appId;await Tb(e,t);let r=e.params.backupId,n=e.request.body;e.body=await tu.updateAppBackup(r,n.name)}a(CZe,"updateBackup");async function DZe(e){let t=e.params.appId;await Tb(e,t);let r=e.params.backupId,{metadata:n,stream:i}=await tu.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=i}a(DZe,"downloadBackup");var $xr=new PZe.default;function zxr(){return er.joiValidator.body(Ab.default.object({trigger:Ab.default.string().valid(...Object.values(Im)),type:Ab.default.string().valid(...Object.values(gS)),startDate:Ab.default.date(),endDate:Ab.default.date(),page:Ab.default.string()}))}a(zxr,"validateBackupSearch");$xr.post("/api/apps/:appId/backups",er.builderOrAdmin,AZe).post("/api/apps/:appId/backups/search",er.builderOrAdmin,zxr(),kZe).get("/api/apps/:appId/backups/:backupId/file",er.builderOrAdmin,DZe).patch("/api/apps/:appId/backups/:backupId",er.builderOrAdmin,CZe).delete("/api/apps/:appId/backups/:backupId",er.builderOrAdmin,OZe).delete("/api/apps/:appId/backups",er.builderOrAdmin,IZe).post("/api/apps/:appId/backups/:backupId/import",er.builderOrAdmin,RZe);async function NZe(e){let t=e.request.body,r=await _b.fetch(t);await Tt.auditLog.filtered(t),e.body=r}a(NZe,"search");async function LZe(e){let t=e.request.body,{stream:r}=_b.download(t);await Tt.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(LZe,"download");async function FZe(e){e.body={events:_b.definitions()}}a(FZe,"definitions");var jZe=te(require("@koa/router")),Zu=te(require("joi"));function UZe(){return er.joiValidator.body(Zu.default.object({userIds:Zu.default.array().items(Zu.default.string()).optional(),appIds:Zu.default.array().items(Zu.default.string()).optional(),events:Zu.default.array().items(Zu.default.string().valid(...Object.values(Er))).optional(),startDate:Zu.default.string().optional().allow(""),endDate:Zu.default.string().optional().allow(""),fullSearch:Zu.default.string().optional().allow(""),bookmark:Zu.default.number()}))}a(UZe,"buildAuditLogSearchValidator");var Gxr=new jZe.default;Gxr.post("/api/global/auditlogs/search",er.adminOnly,UZe(),NZe).get("/api/global/auditlogs/download",er.adminOnly,AU.querystringToBody,UZe(),LZe).get("/api/global/auditlogs/definitions",er.adminOnly,FZe);async function MZe(e){e.body={encryptionKeyAvailable:sl.isEncryptionKeyAvailable()}}a(MZe,"status");async function BZe(e){e.body={variables:await sl.fetch()}}a(BZe,"fetch");async function qZe(e){let{name:t,production:r,development:n}=e.request.body;await sl.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(qZe,"create");async function $Ze(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await sl.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a($Ze,"update");async function zZe(e){let t=e.params.varName;await sl.remove(t),await Tt.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(zZe,"destroy");var GZe=te(require("@koa/router")),pI=te(require("joi"));var Vxr=new GZe.default;function WZe(){return er.joiValidator.body(pI.default.object({name:pI.default.string().optional(),production:pI.default.string().required(),development:pI.default.string().required()}))}a(WZe,"buildEnvVarUpdateValidator");Vxr.get("/api/env/variables/status",er.builderOrAdmin,MZe).get("/api/env/variables",er.builderOrAdmin,BZe).post("/api/env/variables",er.builderOrAdmin,WZe(),qZe).patch("/api/env/variables/:varName",er.builderOrAdmin,WZe(),$Ze).delete("/api/env/variables/:varName",er.builderOrAdmin,zZe);var eet=te(require("@koa/router")),zo=te(require("joi"));async function HZe(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await j_(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await CM(t);e.body={_id:r.id,_rev:r.rev}}a(HZe,"save");async function VZe(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 DM(t,r)),n&&(o=await Gre(t,n)),e.body={added:i,removed:o}}a(VZe,"updateGroupUsers");async function KZe(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 Hre(t,{appsToAdd:r,appsToRemove:n})}a(KZe,"updateGroupApps");async function QZe(e){e.body={data:await lI()}}a(QZe,"fetch");async function YZe(e){let{groupId:t,rev:r}=e.params;try{await Wre(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(YZe,"destroy");async function JZe(e){try{e.body=await j_(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(JZe,"find");async function XZe(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,i=e.params.groupId,o={limit:t+1},s=await pM(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(XZe,"searchUsers");async function ZZe(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 HR.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 j_(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=>Ju.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 DM(t,l),e.body={added:u,skipped:c}}a(ZZe,"bulkAddUsersFromCsv");var Qxr=new eet.default;function Yxr(){return er.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(Yxr,"buildGroupSaveValidation");Qxr.post("/api/global/groups",er.adminOnly,Eo.requireFeature("userGroups"),Yxr(),HZe).get("/api/global/groups",Eo.requireFeature("userGroups"),QZe).delete("/api/global/groups/:groupId/:rev",Eo.requireFeature("userGroups"),er.adminOnly,UM("groupId"),YZe).get("/api/global/groups/:groupId",Eo.requireFeature("userGroups"),er.builderOrAdmin,JZe).get("/api/global/groups/:groupId/users",Eo.requireFeature("userGroups"),er.builderOrAdmin,XZe).post("/api/global/groups/:groupId/users",er.adminOnly,Eo.requireFeature("userGroups"),UM("groupId"),VZe).post("/api/global/groups/:groupId/users/bulk",er.adminOnly,Eo.requireFeature("userGroups"),UM("groupId"),er.joiValidator.body(zo.default.object({csvContent:zo.default.string().required()}).required()),ZZe).post("/api/global/groups/:groupId/apps",er.builderOrAdmin,Eo.requireFeature("userGroups"),KZe);var Iet=te(require("@koa/router"));var WM=te(Nne());function get(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(get,"tryGetQueryAsNumber");var yet=a(async e=>{let t=get(e,"pageSize")??20,r=get(e,"startIndex"),n;e.request.query.filter&&(n=fa.user.userFilters(e.request.query.filter));let i=await ru.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"),bet=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ru.find(t);e.body=fa.user.toScimUserResponse(r)},"find"),vet=a(async e=>{let t=fa.user.fromScimUser(e.request.body);try{let r=await ru.create(t);e.body=fa.user.toScimUserResponse(r)}catch(r){throw r instanceof yp&&e.throw(409,"Email already in use"),r}},"create");function vTr(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(vTr,"isDeactivation");var wet=a(async e=>{let t=await ru.find(e.params.id);t||e.throw(404);let r=fa.user.toScimUserResponse(t),n=e.request.body;try{(0,WM.patchBodyValidation)(n)}catch{}if(vTr(n))return Lne(e);let i;try{i=(0,WM.scimPatch)(r,n.Operations)}catch{}i||e.throw(500);let o=fa.user.fromScimUser(i);await ru.update(o,{allowChangingEmail:!0}),e.body=fa.user.toScimUserResponse(o)},"update"),Lne=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ru.remove(t),e.status=204},"remove");var Eet=te(require("lodash/groupBy"));var GM=te(Nne());var HM=te(zM());function _et(e,t){for(let r of t.split(","))delete e[r]}a(_et,"cleanResponse");var xet=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,HM.filter)((0,HM.parse)(n));r=r.filter(o)}i&&r.forEach(o=>{_et(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"),Tet=a(async e=>{let t=fa.group.fromScimGroup(e.request.body),r=await fI.create(t);e.body=fa.group.toScimGroupResponse(r)},"create"),Aet=a(async e=>{let{id:t}=e.params,r=await on.get(t),n=fa.group.toScimGroupResponse(r),{excludedAttributes:i}=e.request.query;i&&_et(n,i),e.body=n},"find"),Ret=a(async e=>{let{id:t}=e.params,r=await on.get(t);await on.remove(t,r._rev),e.status=204},"remove"),Oet=a(async e=>{let{id:t}=e.params,r=await on.get(t),n=fa.group.toScimGroupResponse(r),i=e.request.body;try{(0,GM.patchBodyValidation)(i)}catch{e.throw(400)}let{true:o,false:s}=(0,Eet.default)(i.Operations,u=>u.path==="members");if(s?.length){let u=(0,GM.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 ru.find(p.value));break;case"remove":case"Remove":for(let p of f)c.push(await ru.find(p.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:zt.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 ec=new Iet.default({prefix:"/api/global/scim/v2"});ec.use(TZe);ec.use(xZe);ec.get("/users",yet);ec.get("/users/:id",LM("id"),bet);ec.post("/users",vet);ec.patch("/users/:id",LM("id"),wet);ec.delete("/users/:id",LM("id"),Lne);ec.get("/groups",xet);ec.post("/groups",Eo.requireFeature("userGroups"),Tet);ec.get("/groups/:id",Eo.requireFeature("userGroups"),FM("id"),Aet);ec.delete("/groups/:id",Eo.requireFeature("userGroups"),FM("id"),Ret);ec.patch("/groups/:id",Eo.requireFeature("userGroups"),FM("id"),Oet);var fa={};oe(fa,{group:()=>Une,user:()=>Fne});var Fne={};oe(Fne,{fromScimUser:()=>RTr,toScimUserResponse:()=>xTr,userFilters:()=>OTr});var ket=te(zM());var{unreachable:STr}=zt,xTr=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"),TTr=a(e=>!!e?.id,"isScimUserResponse");function ATr(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(ATr,"tryGetEmail");var RTr=a(e=>{let t=TTr(e)?e:void 0,r=ATr(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:STr(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"),OTr=a(e=>{let t={equal:{}},r=(0,ket.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 Une={};oe(Une,{fromScimGroup:()=>CTr,toScimGroupResponse:()=>ITr});var ITr=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"),kTr=a(e=>!!e?.id,"isScimGroup"),CTr=a(e=>{let t=kTr(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:()=>Ef,LLMRequest:()=>Ci,TableGeneration:()=>oie,agentHistoryTitleSystemPrompt:()=>$Tr,agentSystemPrompt:()=>qTr,aiColumnSchemas:()=>iie,aiTableResponseToTableSchema:()=>eie,appendAIColumns:()=>tie,classifyText:()=>Bne,cleanData:()=>qne,extractFileData:()=>UTr,generateAIColumns:()=>Xne,generateCode:()=>BTr,generateCronExpression:()=>$ne,generateData:()=>Zne,generateJs:()=>Hne,generateSQL:()=>MTr,generateTables:()=>Jne,generationStructure:()=>nie,getLLM:()=>wI,getLLMConfig:()=>Yne,getLLMOrThrow:()=>Uet,normalizeContentType:()=>jne,parseResponseFormat:()=>KM,sanitiseToolName:()=>DTr,searchWeb:()=>Gne,sentimentAnalysis:()=>Wne,summarizeText:()=>VM,tableDataStructuredOutput:()=>aie,translate:()=>zne});function DTr(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(DTr,"sanitiseToolName");function jne(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(jne,"normalizeContentType");var QM=te(require("openai"));var ym=te(require("dd-trace"));function Mne(e,t){return t.map(r=>e[r]).join(" ")}a(Mne,"extractTextFromColumns");var Ef=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 ym.default.trace("prompt",async()=>{let r=typeof t=="string"?new Ci().addUserMessage(t):t,{messages:n,tokensUsed:i}=await ym.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 ym.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return ym.default.trace("summarizeText",()=>this.prompt(VM(t)))}async generateCronExpression(t){return ym.default.trace("generateCronExpression",()=>this.prompt($ne(t)))}async operation(t,r){return ym.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 VM(Mne(r,o));case"CLEAN_DATA":return qne(r[i]);case"TRANSLATE":return zne(r[i],s);case"CATEGORISE_TEXT":if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Bne(Mne(r,o),u.split(","));case"SENTIMENT_ANALYSIS":return Wne(r[i]);case"PROMPT":return c;case"SEARCH_WEB":return Gne(Mne(r,o));default:throw zt.unreachable(n)}}async generateJs(t,r){return await ym.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:i=[]}=r||{};return await this.prompt(Hne(n,i).addUserMessage(t))})}};var Vne=require("openai/helpers/zod");var Det=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(Det||{});function KM(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(KM,"parseResponseFormat");function Cet(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(Cet,"calculateBudibaseAICredits");var tc=class extends Ef{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 QM.default({apiKey:r.apiKey})}async uploadFile(r,n,i){let o=jne(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,QM.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:KM(r.format)};Object.values(Det).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(Vne.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:Cet(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:KM(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Vne.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?Cet(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 Kne=require("dd-trace");var YM=class extends Ef{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await IM(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await IM(r.tokensUsed),r}async uploadFile(t,r,n){return K.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new tc({apiKey:K.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(!K.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let f=await xM();if(!f)throw new Error("No license key found");this._apiKey=f}let s=`${K.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 K.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Kne.tracer.trace("chatCompletionCloud",async()=>await new tc({apiKey:K.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Kne.tracer.trace("chatCompletionSelfHost",async r=>{if(!K.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:K.BUDICLOUD_URL}),!this._apiKey){let c=await xM();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=`${K.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){K.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new tc({apiKey:K.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 vI=require("dd-trace");var Qne=te(require("@anthropic-ai/sdk"));function PTr(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(PTr,"calculateBudibaseAICredits");var JM=class extends Ef{constructor(r){super(r);this.client=new Qne.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:PTr(n.usage)}}catch(n){throw n instanceof Qne.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 Net=require("zod"),Let=require("openai/helpers/zod");var Pet=require("openai");var XM=class extends tc{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 Pet.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var Fet="gpt-5-mini",NTr={OpenAI:tc,TogetherAI:tc,AzureOpenAI:XM,Custom:tc,Anthropic:JM,BudibaseAI:YM};async function LTr(){return await vI.tracer.trace("getAIConfig",async e=>{let t={type:"ai",config:{}};if(!z.isSelfHostUsingCloud()){let n=await Ma.getAIConfig();n&&(t=n)}await Fre(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||Fet,apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(LTr,"getAIConfig");async function FTr(){return vI.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!K.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!K.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:Fet,apiKey:K.OPENAI_API_KEY}})}a(FTr,"getSelfHostOpenAIKeyConfig");async function Yne(){return vI.tracer.trace("getLLMConfig",async()=>await LTr()||await FTr())}a(Yne,"getLLMConfig");async function wI(e){return await vI.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},i=await Yne();if(!i){t.addTags({enabled:!1,reason:"no config found"});return}r&&(i.model=r),n&&(i.maxTokens=n);let o=NTr[i.provider];if(!o){t.addTags({enabled:!1,reason:"no provider found",provider:i.provider});return}return new o(i)})}a(wI,"getLLM");async function Uet(){let e=await wI();if(!e)throw new Re("No available LLM configurations",500);return e}a(Uet,"getLLMOrThrow");var Ci=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 Net.z.ZodType?this.format=(0,Let.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 id=require("zod");function VM(e,t){let r=`Summarize this text:
|
|
756
756
|
${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 Ci().addUserMessage(`${n}${r}.
|
|
757
757
|
Only return the summary.`)}a(VM,"summarizeText");function UTr(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(`
|
|
758
758
|
|