harperdb 4.5.39 → 4.5.40
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/README.md +1 -1
- package/bin/harperdb.js +1 -1
- package/bin/lite.js +1 -1
- package/launchServiceScripts/launchNatsIngestService.js +1 -1
- package/launchServiceScripts/launchNatsReplyService.js +1 -1
- package/launchServiceScripts/launchUpdateNodes4-0-0.js +1 -1
- package/npm-shrinkwrap.json +284 -282
- package/package.json +2 -2
- package/server/jobs/jobProcess.js +1 -1
- package/server/threads/threadServer.js +1 -1
- package/studio/build-local/asset-manifest.json +2 -2
- package/studio/build-local/index.html +1 -1
- package/studio/build-local/static/js/{main.0a0bf640.js → main.e3c003ec.js} +2 -2
- package/utility/scripts/restartHdb.js +1 -1
- /package/studio/build-local/static/js/{main.0a0bf640.js.LICENSE.txt → main.e3c003ec.js.LICENSE.txt} +0 -0
package/bin/lite.js
CHANGED
|
@@ -13,7 +13,7 @@ Caused by:`));else if(typeof u=="object")try{n+=JSON.stringify(u)}catch{n+="Obje
|
|
|
13
13
|
|
|
14
14
|
`:`data: ${e}
|
|
15
15
|
|
|
16
|
-
`},"serialize"),compressible:!1,q:.8});Yr.set("application/x-www-form-urlencoded",{deserialize(e){let t=Buffer.isBuffer(e)?e.toString("utf8"):e,r={};for(let[n,s]of new URLSearchParams(t))if(r.hasOwnProperty(n)){let i=r[n];Array.isArray(i)?i.push(s):r.key=[i,s]}else r[n]=s;return r},serialize(e){let t=new URLSearchParams;for(let r in e)t.set(r,e);return t.toString()}});iL={type:"application/json",serializeStream:Nf,serialize:wf,deserialize:BJ,q:.5};Yr.set("*/*",iL);Yr.set("",iL);a(BJ,"tryJSONParse");a(Cf,"registerContentHandlers");HJ=require("fastify-plugin"),kJ=HJ(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=cp(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&o.serializeStream){if(l.mapError){let f=l.getColumns;l=l.mapError(d=>(d.toJSON=()=>({error:d.name,message:d.message,...d.partialObject}),d)),l.getColumns=f}u=o.serializeStream}else u=o.serialize;return u(l,{headers:{set:a((f,d)=>{s.header(f,d)},"set")}})})}),r()},{name:"content-type-negotiation"});a(cp,"findBestSerializer");eL=WA.default.get(x.HTTP_COMPRESSIONTHRESHOLD);a(Pf,"serialize");a(ia,"serializeMessage");a(JA,"asyncSerialization");a(XA,"hasAsyncSerialization");a(FJ,"streamToBuffer");GJ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(qJ,"isBufferEncoding");a($J,"parseContentType");a(no,"getDeserializer");a(VJ,"deserializerUnknownType");a(KJ,"transformIterable");a(ap,"toCsvStream")});var au={};Ue(au,{Blob:()=>gi,blobsWereEncoded:()=>yc,cleanupOrphans:()=>i4,databasePaths:()=>eR,decodeBlobsWithWrites:()=>mp,decodeFromDatabase:()=>oo,decodeWithBlobCallback:()=>vf,deleteBlob:()=>fp,deleteBlobsInObject:()=>aa,deleteRootBlobPathsForDB:()=>nR,encodeBlobsAsBuffers:()=>r4,encodeBlobsWithFilePath:()=>hp,findBlobsInObject:()=>Rc,getFileId:()=>_p,getFilePathForBlob:()=>mL,getRootBlobPathsForDB:()=>ou,isSaving:()=>jJ,saveBlob:()=>Mf,setDeletionDelay:()=>QJ,startPreCommitBlobsForRecord:()=>sR});function _L(){}function fp(e){let t=mL(e);t&&setTimeout(()=>{(0,Fe.unlink)(t,r=>{r&&Ct.default.debug?.("Error trying to remove blob file",r)})},hL)}function QJ(e){hL=e}function Mf(e,t=!1){let r=br.get(e);if(!r)r={storageIndex:0,fileId:null,store:mn},br.set(e,r);else{if(r.fileId)return r;r.store=mn}return r.deleteOnFailure=t,XJ(r),r.source?ZA(e,r.source,r):r.contentBuffer?JJ(e,r):ZA(e,oa.Readable.from(e.stream()),r),r}function ZA(e,t,r){let{filePath:n,fileId:s,store:i,compress:o,flush:c}=r;return r.saving=new Promise((l,u)=>{let f=s+":blob";if(!i.attemptLock(f,0))throw new Error(`Unable to get lock for blob file ${s}`);let d=(0,Fe.createWriteStream)(n,{autoClose:!1,flags:"w"}),_=!1;e.size!==void 0&&(d.write(m(e.size)),_=!0);let h;o?(_||d.write(WJ),h=(0,dp.createDeflate)(),(0,oa.pipeline)(t,h,d,S)):(_||d.write(YJ),(0,oa.pipeline)(t,d,S));function m(g){let R=BigInt(g),E=new Uint8Array(mr),T=new DataView(E.buffer);return R|=BigInt(o?rR:fL)<<48n,T.setBigInt64(0,R),E}a(m,"createHeader");function S(g){let R=d.fd;if(g){if(i.unlock(f,0),R&&((0,Fe.close)(R),d.fd=null),r.deleteOnFailure)(0,Fe.unlink)(n,E=>{E&&Ct.default.debug?.("Error while deleting aborted blob file",E)});else try{if((0,Fe.statSync)(n).size===0){let E=Buffer.from(g.toString());(0,Fe.writeFile)(n,Buffer.concat([m(BigInt(E.length)+0xff000000000000n),E]),T=>{T&&Ct.default.debug?.("Error write error message to blob file",T)})}}catch(E){Ct.default.debug?.("Error checking blob file after abort",E)}u(g)}else{if(!_){_=!0;let E=h?h.bytesWritten:d.bytesWritten-mr;e.size=E,(0,Fe.write)(R,m(E),0,mr,0,S);return}i.unlock(f,0),c?(0,Fe.fdatasync)(R,E=>{E&&u(E),l(),(0,Fe.close)(R),d.fd=null}):(l(),(0,Fe.close)(R),d.fd=null)}}a(S,"finished")}),e}function _p(e){return br.get(e)?.fileId}function jJ(e){return br.get(e)?.saving}function mL(e){let t=br.get(e);return t?.fileId&&iu(t)}function ou(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=eR.get(e);if(!t){if(!e.databaseName)return Ct.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,Lf.get)(x.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,Ti.join)(n,e.databaseName)):t=[(0,Ti.join)((0,Lf.getHdbBasePath)(),"blobs",e.databaseName)],eR.set(e,t)}return t}async function nR(e){let t=ou(e);t&&await Promise.all(t.map(r=>pL(r)))}async function pL(e){if((0,Fe.existsSync)(e)){for(let t of await(0,pn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await pL((0,Ti.join)(e,t.name));else try{await(0,pn.unlink)((0,Ti.join)(e,t.name))}catch(r){Ct.default.warn?.("Error deleting file",r)}try{await(0,pn.rmdir)(e)}catch(t){Ct.default.warn?.("Error deleting directory",t)}}}function iu({storageIndex:e,fileId:t,store:r}){let n=ou(r);return(0,Ti.join)(n[e],t.slice(-9,-6)||"0",t.slice(-6,-3)||"0",t.length<=9?t.slice(-3):t.slice(0,-9)+t.slice(-3))}function JJ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<dL))return e.size=n,ZA(e,oa.Readable.from([r]),t)}function XJ(e){let t=ou(e.store),r=ZJ(),n=t?.length>1?e4(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=iu(e),o=(0,Ti.dirname)(i);(0,Fe.existsSync)(o)||(0,tR.ensureDirSync)(o),e.filePath=i}function ZJ(){let e=lL.get(mn);if(!e){let t=0,r=ou(mn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Fe.existsSync)(n))for(let c of(0,Fe.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>o&&(o=l)}s+=o,n=(0,Ti.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(mn.getUserSharedBuffer("blob-file-id",e.buffer)),lL.set(mn,e)}return Number(Atomics.add(e,0,1n))}function e4(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(up);for(let i=0;i<s.length;i++)s[i]=i%e.length;e.frequencyTable=s}return(e.lastUpdated??0)+6e4<r&&(e.lastUpdated=r,t4(e)),e.frequencyTable[t%up]}async function t4(e){if(!pn.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let o;try{o=await(0,pn.statfs)(s)}catch(l){if(l.code!=="ENOENT")throw l;(0,tR.ensureDirSync)(s),o=await(0,pn.statfs)(s)}let c=o.bavail*o.bsize;return Math.pow(c,.8)})),r=new Array(up),n=t.map(s=>1/s);for(let s=0;s<up;s++){let i=1/0,o=0;for(let c=0;c<n.length;c++)n[c]<i&&(o=c,i=n[c]);n[o]+=1/t[o],r[s]=o}e.frequencyTable=r}function hp(e,t,r){ru=t,mn=r,yc=!1;try{return e()}finally{ru=void 0,mn=void 0}}function r4(e){vr=[];let t;try{t=e()}catch(n){throw vr=void 0,n}let r=vr.length<2?vr[0]:Promise.all(vr);return vr=void 0,r?r.then(()=>e()):t}function mp(e,t,r){try{vr=[],io=r,mn=t,e()}catch(s){throw io=void 0,vr=void 0,s}io=void 0;let n=vr.length<2?vr[0]:Promise.all(vr);return vr=void 0,n}function vf(e,t,r){mn=r;try{return io=t,e()}finally{io=void 0}}function oo(e,t){return mn=t,e()}function aa(e){Rc(e,t=>{fp(t)})}function Rc(e,t){if(e instanceof gi)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&Rc(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&Rc(e[r],t)}}function sR(e,t){let r=[];for(let n in e){let s=e[n];s instanceof su&&s.saveBeforeCommit&&r.push(s)}if(r.length>0)return()=>(mn=t,Promise.all(r.map(n=>Mf(n,!0).saving??Promise.resolve())))}function s4(){return class{static{a(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}async function i4(e,t){let r,n,s=0;for(let f in e){let d=e[f];if(r=d.primaryStore.rootStore,n=d.auditStore,n)break}let i=new Set,o=ou(r);if(o)for(let f of o)await c(f);return await l(),Ct.default.warn?.(`Cleaned Orphan Blobs from ${t??"database"}, deleted ${s} blobs)`),s;async function c(f){try{if(!(0,Fe.existsSync)(f))return;for(let d of await(0,pn.readdir)(f,{withFileTypes:!0})){let _=(0,Ti.join)(f,d.name);if(d.isDirectory())await c(_);else if(i.size%1e6===0&&Ct.default.info?.("Finding all blobs for orphan check, paths accumulated",i.size),i.add(_),i.size%2===0){let h=(0,uL.getHeapStatistics)();h.used_heap_size>h.heap_size_limit*.8&&await l()}}}catch(d){Ct.default.error?.("Error searching path for blobs",f,d)}}a(c,"searchPath");async function l(){let f=0,d=Math.floor(((0,Lf.get)(x.STORAGE_BLOBCLEANUPSPEED)??1e4)/1e3+1);for(let _ in e){Ct.default.warn?.("Checking for references to potential orphaned blobs in table",_);let h=e[_];for(let m of h.primaryStore.getRange({versions:!0,snapshot:!1,lazy:!0}))try{m.metadataFlags&Ur&&m.value&&u(m.value),f++%d===0?await(0,nu.setTimeout)(1):await(0,nu.setImmediate)()}catch(S){Ct.default.error?.("Error searching table",_," for references to potential orphaned blobs failed",S)}}Ct.default.warn?.("Checking for references to potential orphaned blobs in the audit log");for(let{value:_}of n.getRange({start:1,snapshot:!1,lazy:!0}))try{let h=St(_),m=n.tableStores[h.tableId],S=m?.getEntry(h.recordId);(!S||S.version!==h.version||!S.value)&&u(h.getValue(m)),f++%d===0?await(0,nu.setTimeout)(1):await(0,nu.setImmediate)()}catch(h){Ct.default.error?.("Error searching audit log for references to potential orphaned blobs failed",h)}Ct.default.warn?.("Deleting",i.size,"orphaned blobs"),s+=i.size;for(let _ of i)try{await(0,pn.unlink)(_)}catch(h){Ct.default.warn?.("Error deleting file",h)}Ct.default.warn?.("Finished deleting",i.size,"orphaned blobs"),i.clear()}a(l,"removePathsThatAreNotReferenced");function u(f){Rc(f,d=>{if(d instanceof su){let _=br.get(d);if(_.fileId!=null){let h=iu(_);i.has(h)&&i.delete(h)}}})}a(u,"checkObjectForReferences")}var Si,pn,Fe,dp,oa,tR,Lf,Ti,Ct,uL,nu,dL,mr,fL,rR,aL,YJ,WJ,cL,br,io,gi,ru,vr,mn,yc,Df,lp,zJ,su,hL,eR,lL,up,n4,hn=Re(()=>{Si=require("msgpackr"),pn=require("node:fs/promises"),Fe=require("node:fs"),dp=require("node:zlib"),oa=require("node:stream"),tR=require("fs-extra"),Lf=v(le());k();Ti=require("path"),Ct=v(ks());so();Ai();uL=require("node:v8"),nu=require("node:timers/promises"),dL=8192,mr=8,fL=0,rR=1,aL=255,YJ=new Uint8Array([0,fL,255,255,255,255,255,255]),WJ=new Uint8Array([0,rR,255,255,255,255,255,255]),cL=0xffffffffffff,br=new WeakMap,gi=global.Blob||s4(),yc=!1,Df=new Uint8Array(8),lp=new DataView(Df.buffer),zJ=6e4;a(_L,"InstanceOfBlobWithNoConstructor");_L.prototype=gi.prototype;su=class e extends _L{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size),t?.saveBeforeCommit!=null&&(this.saveBeforeCommit=t.saveBeforeCommit)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=br.get(this),{start:r,end:n,contentBuffer:s,asString:i}=t;return i||(s&&(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),s?(t.asString=s.toString(),t.asString):(XA()&&JA(this.bytes().then(o=>t.contentBuffer=o)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=br.get(this),{start:r,end:n,contentBuffer:s}=t;if(s)return(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),Promise.resolve(s);let i=iu(t),o,c=a(async()=>{let l,u=mr;try{if(l=await(0,pn.readFile)(i),l.length>=mr){l.copy(Df,0,0,mr);let d=lp.getBigUint64(0);if(Number(d>>48n)===aL)throw new Error("Error in blob: "+l.subarray(mr));if(u=Number(d&0xffffffffffffn),u<n&&(u=n),u<cL&&(this.size=u,this.#t))for(let _ of this.#t)_(u)}}catch(d){if(d.code!=="ENOENT")throw d;l=Buffer.alloc(0)}function f(d){if(u>d.length){let _=t.store,h=t.fileId+":blob";if(o)throw new Error(`Incomplete blob for ${i}`);return new Promise((m,S)=>{if(_.attemptLock(h,0,()=>(o=!0,m(c()))))return o=!0,_.unlock(h,0),m(c())})}return(n!=null||r!=null)&&(d=d.subarray(r??0,n??d.length)),d}return a(f,"checkCompletion"),l[1]===rR?new Promise((d,_)=>{(0,dp.deflate)(l.subarray(mr),(h,m)=>{h?_(h):d(f(m))})}):f(l.subarray(mr))},"readContents");return c()}async arrayBuffer(){let t=await this.bytes(),r=new ArrayBuffer(t.length);return new Uint8Array(r).set(t),r}stream(){let t=br.get(this),{contentBuffer:r,start:n,end:s}=t;if(r)return(s!=null||n!=null)&&(r=r.subarray(n??0,s??t.contentBuffer.length)),new ReadableStream({pull(S){S.enqueue(r),S.close()}});let i=iu(t),o,c=0,l=0,u,f,d,_=!1,h=this;return new ReadableStream({start(){let S=1e3,g=a((R,E)=>{(0,Fe.open)(i,"r",(T,N)=>{if(T){if(T.code==="ENOENT"&&d!==!1&&(Ct.default.debug?.("File does not exist yet, waiting for it to be created",i,S),S-- >0))return setTimeout(()=>{m(),g(R,E)},20).unref();E(T),h.#e?.forEach(M=>M(T))}else o=N,R(N)})},"openFile");return new Promise(g)},pull:a(S=>{let g=0,R=100;return new Promise(a(function E(T,N){function M(X){(0,Fe.close)(o),clearTimeout(f),u&&u.close(),N(X),h.#e?.forEach(W=>W(X))}a(M,"onError");let H=Buffer.allocUnsafe(262144);(0,Fe.read)(o,H,0,H.length,c,(X,W,$)=>{if(l+=W,X)return M(X);if(c===0){if(W<mr){R-- >0&&d!==!1?(m(),Ct.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>E(T,N),20).unref()):(Ct.default.debug?.("File was empty, throwing error",i,R),M(new Error(`Blob ${t.fileId} was empty`)));return}$.copy(Df,0,0,mr);let se=lp.getBigUint64(0);if(Number(se>>48n)===aL)return M(new Error("Error in blob: "+$.subarray(mr,W)));if(g=Number(se&0xffffffffffffn),g<cL&&h.size!==g&&(h.size=g,h.#t))for(let z of h.#t)z(g);$=$.subarray(mr,W),l-=mr}else if(W===0){let se=Buffer.allocUnsafe(8);return(0,Fe.read)(o,se,0,mr,0,z=>{if(z)return M(z);if(Df.set(se),g=Number(lp.getBigUint64(0)&0xffffffffffffn),g>l){m()?u?f=setTimeout(()=>{M(new Error(`File read timed out reading from ${i}`))},zJ).unref():(u=(0,Fe.watch)(i,{persistent:!1},()=>{u.close(),u=null,f&&(clearTimeout(f),f=null,E(T,N))}),E(T,N)):_?M(new Error("Blob is incomplete")):(_=!0,E(T,N));return}(0,Fe.close)(o),S.close(),T()})}else $=$.subarray(0,W);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=W,E(T,N);s&&l>=s&&(l>s&&($=$.subarray(0,s-c)),l=g=s),n&&n>c&&($=$.subarray(n-c))}c+=W;try{S.enqueue($)}catch(se){return Ct.default.debug?.("Error enqueuing chunk",se),T()}l===g&&((0,Fe.close)(o),S.close()),T()})},"readMore"))},"pull"),cancel(){(0,Fe.close)(o),clearTimeout(f),u&&u.close()}});function m(){if(d===void 0){let S=t.store,g=t.fileId+":blob";d=!S.attemptLock(g,0,()=>{d=!1}),d||S.unlock(g,0)}return d}}slice(t,r,n){let s=br.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};br.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};br.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return this.saveBeforeCommit=!0,Promise.resolve()}get written(){return br.get(this)?.saving??Promise.resolve()}},hL=500;a(fp,"deleteBlob");a(QJ,"setDeletionDelay");global.createBlob=function(e,t){let r=new su(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(br.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof oa.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=oa.Readable.from(e);else throw new Error("Invalid source type");return r};a(Mf,"saveBlob");a(ZA,"writeBlobWithStream");a(_p,"getFileId");a(jJ,"isSaving");a(mL,"getFilePathForBlob");eR=new Map;a(ou,"getRootBlobPathsForDB");a(nR,"deleteRootBlobPathsForDB");a(pL,"rimrafSteadily");a(iu,"getFilePath");a(JJ,"writeBlobWithBuffer");a(XJ,"generateFilePath");lL=new Map;a(ZJ,"getNextFileId");up=128;a(e4,"getNextStorageIndex");a(t4,"createFrequencyTableForStoragePaths");a(hp,"encodeBlobsWithFilePath");a(r4,"encodeBlobsAsBuffers");a(mp,"decodeBlobsWithWrites");a(vf,"decodeWithBlobCallback");a(oo,"decodeFromDatabase");a(aa,"deleteBlobsInObject");a(Rc,"findBlobsInObject");a(sR,"startPreCommitBlobsForRecord");n4=new Si.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,Si.addExtension)({Class:gi,type:11,unpack:a(function(e){let t=n4.unpack(e),r=new su;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(br.set(r,{storageIndex:t[1],fileId:t[2],store:mn}),io)return io(r)??r;if(!mn)throw new Error("No store specified, cannot load blob from storage")}else br.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:a(function(e){let t=br.get(e);if(ru!==void 0&&(yc=!0,t?.recordId!==void 0&&t.recordId!==ru))throw new Error("Cannot use the same blob in two different records");let r={...e};if(e.type&&(r.type=e.type),e.size!==void 0&&(r.size=e.size),t){if(t.storageBuffer)return t.storageBuffer;if(t.contentBuffer?.length<dL)return r.size=t.contentBuffer.length,(0,Si.pack)([r,t.contentBuffer])}if(ru!==void 0){if(t=Mf(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=ru,(0,Si.pack)([r,t.storageIndex,t.fileId])}if(t){if(io)return io(e),(0,Si.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Fe.readFileSync)(iu(t));if(n.length>=mr&&(n.copy(Df,0,0,mr),Number(lp.getBigUint64(0)&0xffffffffffffn)===n.length-mr))return Buffer.concat([(0,Si.pack)([r]),n]);if(vr)vr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&vr)return vr.push(e.bytes()),Buffer.alloc(0);throw n}}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Si.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(s4,"polyfillBlob");a(i4,"cleanupOrphans")});var AL={};Ue(AL,{HAS_EXPIRATION:()=>Sp,HAS_RESIDENCY_ID:()=>uR,HAS_STRUCTURE_UPDATE:()=>Ap,LAST_TIMESTAMP_PLACEHOLDER:()=>Hf,LOCAL_TIMESTAMP:()=>o4,METADATA:()=>Nc,NEW_TIMESTAMP_PLACEHOLDER:()=>gL,NO_TIMESTAMP:()=>Ep,PENDING_LOCAL_TIME:()=>dR,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>lR,RecordEncoder:()=>cR,TIMESTAMP_ASSIGN_LAST:()=>c4,TIMESTAMP_ASSIGN_NEW:()=>SL,TIMESTAMP_ASSIGN_PREVIOUS:()=>TL,TIMESTAMP_PLACEHOLDER:()=>pp,TIMESTAMP_RECORD_PREVIOUS:()=>iR,handleLocalTimeForGets:()=>Rp,recordUpdater:()=>fR,removeEntry:()=>Ic});function u4(){return Bf[0]=Bf[0]^64,a4.getFloat64(0)}function Rp(e,t){let r=e.getEntry;e.readCount=0,e.cachePuts=!1,e.rootStore=t,e.encoder.rootStore=t,e.getEntry=function(o,c){e.readCount++;let l=r.call(this,o,c),u=l?.value,f=u?.[Nc];return f>=0&&(l.metadataFlags=f,l.localTime=u.localTime,l.value=u.value,l.residencyId=u.residencyId,u.expiresAt>=0&&(l.expiresAt=u.expiresAt)),l&&(l.key=o),l};let n=e.get;e.get=function(o,c){let l=n.call(this,o,c);return l?.[Nc]>=0?l.value:l};let s=e.getRange;e.getRange=function(o){let c=s.call(this,o);return o.valuesForKey?c.map(l=>l?.value):o.values===!1||o.onlyCount?c:c.map(l=>{let u=l.value,f=u[Nc];return f>=0&&(l.metadataFlags=f,l.localTime=u.localTime,l.value=u.value,l.residencyId=u.residencyId,u.expiresAt>=0&&(l.expiresAt=u.expiresAt)),l})};let i=e.useReadTransaction();if(i.done(),!i.done.isTracked){let o=i.constructor,c=i.use,l=i.done;o.prototype.use=function(){this.timerTracked||(this.timerTracked=!0,Oc.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<Oc.length;u++){let f=Oc[u].deref();(!f||f.isDone||f.isCommitted)&&Oc.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function fR(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){l==null?bc=Ep:d?bc=i?.localTime?iR|TL:Ep:bc=l?i?.localTime?iR|16384:SL|16384:Ep;let h=u?.expiresAt;if(h>=0&&(c|=Sp),xf=c,oR=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:bc>0},S,g=0;try{let R=i?.residencyId,E=u?.residencyId;E&&(aR=E,xf|=uR,g|=Cc),R!==E&&(g|=Pc,R||(R=0)),c&Sp&&(g|=Ff),u?.originatingOperation&&(g|=kf),d&&(m.ifVersion=S=i?.version??null),i&&i.value&&f!=="message"&&i.metadataFlags&Ur&&(!i.localTime||!r.getBinaryFast(i.localTime))&&aa(i.value);let T;if(s!==void 0&&(T=hp(()=>e.put(n,s,m),n,e.rootStore),yc&&(g|=Ur)),l){let N=u?.user?.username;if(_&&(hp(()=>e.encoder.encode(_),n,e.rootStore),yc&&(g|=Ur)),e.encoder.hasStructureUpdate&&(g|=Ap,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let M=i?.localTime,H=r.get(M);if(H){let X=St(H).previousLocalTime;return T=r.put(M,wc(o,t,n,X,u?.nodeId??server.replication.getThisNodeId(r)??0,N,f,Uf,g,E,R,h),{ifVersion:S}),T}}T=r.put(s===void 0?gL:Hf,wc(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,f,Uf,g,E,R,h,u?.originatingOperation),{instructedWrite:!0,ifVersion:S})}return T}catch(R){throw R.message+=" id: "+n+" options: "+m,R}}}function Ic(e,t,r){if(t)return t.value&&t.metadataFlags&Ur&&!e.auditStore?.getBinaryFast(t.localTime)&&aa(t.value),e.remove(t.key,r)}var EL,gp,pp,Hf,lR,gL,o4,Nc,Bf,a4,Ep,SL,c4,TL,iR,Sp,uR,dR,Ap,l4,Uf,bc,xf,oR,aR,cR,Oc,cu=Re(()=>{EL=require("msgpackr");Ai();gp=v(ee());hn();hn();pp=new Uint8Array([1,1,1,1,4,64,0,0]),Hf=new Uint8Array([1,1,1,1,1,0,0,0]),lR=new Uint8Array([1,1,1,1,3,64,0,0]),gL=new Uint8Array([1,1,1,1,0,64,0,0]),o4=Symbol("local-timestamp"),Nc=Symbol("metadata"),Bf=new Uint8Array(8),a4=new DataView(Bf.buffer,0,8),Ep=0,SL=0,c4=1,TL=3,iR=4,Sp=16,uR=32,dR=1,Ap=256,bc=0,xf=-1,oR=-1,aR=0,cR=class extends EL.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(bc||xf>=0){let o=0,c=bc;c&&(o+=8,bc=0);let l=xf,u=oR,f=aR;l>=0&&(o+=4,xf=-1,u>=0&&(o+=8,oR=-1),f&&(o+=4,aR=0));let d=l4=r.call(this,s,i|2048|o);Uf=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(pp[4]=c,pp[5]=c>>8,d.set(pp,_),_+=8),yc&&(l|=Ur),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|Tp<<24),_+=4,u>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setFloat64(_,u),_+=8),f&&(d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,f)),d}else return Uf=r.call(this,s,i),Uf};let n=this.saveStructures;this.saveStructures=function(s,i){let o=n.call(this,s,i);return this.hasStructureUpdate=!0,o}}decode(t,r){let n=r?.start||0,s=r>-1?r:r?.end||t.length,i=t[n],o=0;try{if(i<32&&s>2){let c=n,l;if(i===2){if(t.copy)t.copy(Bf,0,c),c+=8;else for(let _=0;_<8;_++)Bf[_]=t[c++];l=u4(),i=t[c]}let u,f;i<32&&(i===Tp?(o=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4):(o=i|t[c+1]<<5,c+=2),o&Sp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&uR&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=oo(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[Nc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:oo(()=>super.decode(t,r),this.rootStore)}catch(c){return gp.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(u4,"getTimestamp");a(Rp,"handleLocalTimeForGets");Oc=[];setInterval(()=>{for(let e=0;e<Oc.length;e++){let t=Oc[e].deref();!t||t.isDone||t.isCommitted?Oc.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(gp.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):gp.error("Read transaction detected that has been open too long (over one minute), make sure read transactions are quickly closed",t)),t.openTimer++):t.openTimer=1)}},15e3).unref();a(fR,"recordUpdater");a(Ic,"removeEntry")});var hR={};Ue(hR,{add:()=>yp,applyReverse:()=>RL,getRecordAtTime:()=>_R,rebuildUpdateBefore:()=>bp});function yp(e,t,r){let n=e[t];typeof n=="bigint"?e[t]=n+BigInt(r.value):isNaN(e[t])?e[t]=r.value:e[t]=n+r.value}function bp(e,t,r){let n=null;for(let s in e)if(s in t){let i=t[s];if(i?.__op__){let o=e[s];if(o?.__op__)if(o.__op__===i.__op__)n||(n={}),n[s]=o;else throw new Error("Can not merge updates with different operations");else n||(n={}),n[s]=o,yp(n,s,i)}else r&&(n||(n={}),n[s]=i)}else n||(n={}),n[s]=e[s];return n}function RL(e,t){for(let r in t){let n=t[r];if(n?.__op__){let s=d4[n.__op__]?.reverse;if(s)s(e,r,{value:n.value});else throw new Error(`Unsupported operation ${n.__op__}`)}else e[r]=yL}}function _R(e,t,r){let n=r.rootStore.auditStore,s={...e.value},i=e.localTime;for(;i>t;){let l=n.get(i),u=St(l);switch(u.type){case"put":s=u.getValue(r);break;case"patch":RL(s,u.getValue(r));break;case"delete":s=null}i=u.previousLocalTime}let o={},c=0;for(let l in s)s[l]===yL&&(o[l]=!0,c++);for(;c>0&&i>0;){let l=n.get(i),u=St(l),f;switch(u.type){case"put":f=u.getValue(r);break;case"patch":f=u.getValue(r);break}for(let d in f)o[d]&&(s[d]=f[d],o[d]=!1,c--);i=u.previousLocalTime}if(c>0)for(let l in o)s[l]=null;return s}var d4,yL,Op=Re(()=>{Ai();a(yp,"add");yp.reverse=function(e,t,r){let n=e[t];typeof n=="bigint"?e[t]=n-BigInt(r.value):isNaN(e[t])||(e[t]=n-r.value)};d4={add:yp};a(bp,"rebuildUpdateBefore");a(RL,"applyReverse");yL={};a(_R,"getRecordAtTime")});var IL={};Ue(IL,{onStorageReclamation:()=>Gf,runReclamationHandlers:()=>gR,setAvailableSpaceRatioGetter:()=>_4});function Gf(e,t,r){(r||(0,wp.getWorkerIndex)()===(0,wp.getWorkerCount)()-1)&&(Np.has(e)||Np.set(e,[]),Np.get(e).push({priority:0,handler:t}),ER||(ER=setTimeout(gR,OL).unref()))}async function gR(){for(let[e,t]of Np)try{let r=await wL(e),n=f4/r;for(let s of t){let{priority:i,handler:o}=s;if(s.priority=n,n>1||i>1){let c=o(n>1?n:0);c&&(pR.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){pR.default.error?.("Error running storage reclamation handlers",r)}ER=setTimeout(gR,OL).unref()}function _4(e){wL=e??NL}var mR,wp,pR,Ip,bL,Np,f4,OL,ER,NL,wL,Cp=Re(()=>{mR=require("node:fs/promises"),wp=v(it()),pR=v(ks());k();Ip=v(le()),bL=v(ie());Ip.default.initSync();Np=new Map,f4=Ip.default.get(x.STORAGE_RECLAMATION_THRESHOLD)??.4,OL=(0,bL.convertToMS)(Ip.default.get(x.STORAGE_RECLAMATION_INTERVAL))||36e5;a(Gf,"onStorageReclamation");NL=a(async e=>{if(mR.statfs){let t=await(0,mR.statfs)(e);return t.bavail/t.blocks}else return new Promise((t,r)=>{import("hdd-space").then(n=>{n.default(s=>{for(let i of s.parts)if(e.startsWith(i.place))return t(i.free/i.size);return t(1)})})})},"defaultGetAvailableSpaceRatio"),wL=NL;a(gR,"runReclamationHandlers");a(_4,"setAvailableSpaceRatioGetter")});var GL={};Ue(GL,{ACTION_32_BIT:()=>Tp,ACTION_64_BIT:()=>E4,AUDIT_STORE_OPTIONS:()=>Vf,Decoder:()=>Lc,HAS_BLOBS:()=>Ur,HAS_CURRENT_RESIDENCY_ID:()=>Cc,HAS_EXPIRATION_EXTENDED_TYPE:()=>Ff,HAS_ORIGINATING_OPERATION:()=>kf,HAS_PREVIOUS_RESIDENCY_ID:()=>Pc,REMOTE_SEQUENCE_UPDATE:()=>vp,createAuditEntry:()=>wc,getLastRemoved:()=>m4,openAuditStore:()=>Lp,readAuditEntry:()=>St,removeAuditEntry:()=>Mp,setAuditRetention:()=>p4,transactionKeyEncoder:()=>BL});function Lp(e){let t=e.auditStore=e.openDB(SR.AUDIT_STORE_NAME,{create:!1,...Vf});t||(t=e.auditStore=e.openDB(SR.AUDIT_STORE_NAME,Vf),PL(t,1)),t.rootStore=e,t.tableStores=[];let r=[];t.addDeleteRemovalCallback=function(l,u,f){return r[l]=f,t.tableStores[l]=u,t.deleteCallbacks=r,{remove(){delete r[l]}}};let n=null,s,i=0,o=AR;Gf(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(o=l),clearTimeout(n);let u=new Promise(f=>{n=setTimeout(async()=>{if(await s,s=u,t.rootStore.status==="closed"||t.rootStore.status==="closing")return;let d=0,_,h;try{for(let{key:m,value:S}of t.getRange({start:1,snapshot:!1,end:Date.now()-TR/(1+i*i)})){try{_=Mp(t,m,S)}catch(g){lu.warn("Error removing audit entry",g)}if(h=m,await new Promise(setImmediate),++d>=h4){o=10;break}}await _}finally{d===0?o=Math.min(o<<1,TR/10):(PL(t,h),o>100&&(o=o>>1)),f(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,$f.getWorkerIndex)()===(0,$f.getWorkerCount)()-1&&c(),(0,$f.getWorkerIndex)()===0&&!CL)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(CL=!0,lu.error("The current time is before the last recorded entry in the audit log. Time reversal can undermine the integrity of data tracking and certificate validation and the time must be corrected."));return t}function Mp(e,t,r){let n=g4(r),s;if(n&Ur){s=St(r);let i=e.tableStores[s.tableId];if(i){let o=s.type==="message"?null:i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&oo(()=>aa(s.getValue(i)),i.rootStore)}}if((n&15)===RR){s=s||St(r);let i=s.tableId;e.tableStores[s.tableId]?.getEntry(s.recordId)?.version===s.version&&e.deleteCallbacks?.[i]?.(s.recordId,s.version)}return e.remove(t)}function PL(e,t){yR[0]=t,e.put(Symbol.for("last-removed"),HL)}function m4(e){let t=e.get(Symbol.for("last-removed"));if(t)return HL.set(t),yR[0]}function p4(e,t=AR){TR=e,AR=t}function wc(e,t,r,n,s,i,o,c,l,u,f,d,_){let h=kL[o];if(!h)throw new Error(`Invalid audit entry type ${o}`);let m=1;if(n&&(n>1?ca.setFloat64(0,n):_s.set(lR),m=9),l){if(l&255)throw new Error("Illegal extended type");m+=3}R(s),R(t),g(r),ca.setFloat64(m,e),m+=8,l&Cc&&R(u),l&Pc&&R(f),l&Ff&&(ca.setFloat64(m,d),m+=8),l&kf&&R(FL[_]),i?g(i):_s[m++]=0,l?ca.setUint32(n?8:0,h|l|3221225472):_s[n?8:0]=h;let S=_s.subarray(0,m);if(c)return Buffer.concat([S,c]);return S;function g(E){let T=m;m+=1,m=(0,Dc.writeKey)(E,_s,m);let N=m-T-1;N>127?N>16383?(lu.error("Key or username was too large for audit entry",E),m=T+1,_s[T]=0):(_s.copyWithin(T+2,T+1,m),ca.setUint16(T,N|32768),m++):_s[T]=N}function R(E){E<128?_s[m++]=E:E<16384?(ca.setUint16(m,E|32768),m+=2):E<1056964608?(ca.setUint32(m,E|3221225472),m+=4):(_s[m]=255,ca.setUint32(m+1,E),m+=5)}}function g4(e){let t=0;e[0]==66&&(t=8);let r=e[t];if(r<128)return r;let n=e.dataView||(e.dataView=new Lc(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function St(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new Lc(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),o=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,f=n.position+=l,d=n.readFloat64(),_,h,m,S;if(i&Cc&&(_=n.readInt()),i&Pc&&(h=n.readInt()),i&Ff&&(m=n.readFloat64()),i&kf){let T=n.readInt();S=FL[T]}l=n.readInt();let g=n.position,R=n.position+=l,E;return{type:kL[i&7],tableId:c,nodeId:o,get recordId(){return(0,Dc.readKey)(e,u,f)},getBinaryRecordId(){return e.subarray(u,f)},version:d,previousLocalTime:s,get user(){return R>g?(0,Dc.readKey)(e,g,R):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(T,N,M){if(i&Pp||i&qf&&!N)return E||(E=oo(()=>T.decoder.decode(e.subarray(n.position,r)),T.rootStore)),E;if(i&qf&&M)return _R(T.getEntry(this.recordId),M,T)},getBinaryValue(){return i&(Pp|qf)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:_,previousResidencyId:h,expiresAt:m,originatingOperation:S}}catch(n){return lu.error("Reading audit entry error",n,e),{}}}var Dc,Dp,SR,$f,xL,lu,_s,ca,BL,Vf,TR,h4,yR,HL,AR,CL,Pp,qf,DL,RR,LL,ML,vL,UL,Tp,E4,vp,Cc,Pc,kf,Ff,Ur,kL,FL,Lc,Ai=Re(()=>{Dc=require("ordered-binary"),Dp=v(le()),SR=v(Ft());k();$f=v(it()),xL=v(ie());cu();lu=v(ee());Op();hn();Cp();(0,Dp.initSync)();_s=Buffer.alloc(2816),ca=new DataView(_s.buffer,_s.byteOffset,2816),BL={writeKey(e,t,r){return e===Hf?(t.set(Hf,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,Dc.writeKey)(e,t,r)},readKey(e,t,r){return e[t]===66?(e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))).getFloat64(t):(0,Dc.readKey)(e,t,r)}},Vf={encoding:"binary",keyEncoder:BL},TR=(0,xL.convertToMS)((0,Dp.get)(x.LOGGING_AUDITRETENTION))||86400*3,h4=1e3,yR=new Float64Array(1),HL=new Uint8Array(yR.buffer),AR=1e4,CL=!1;a(Lp,"openAuditStore");a(Mp,"removeAuditEntry");a(PL,"updateLastRemoved");a(m4,"getLastRemoved");a(p4,"setAuditRetention");Pp=16,qf=32,DL=1,RR=2,LL=3,ML=4,vL=5,UL=6,Tp=14,E4=15,vp=11,Cc=512,Pc=1024,kf=2048,Ff=4096,Ur=8192,kL={put:DL|Pp,[DL]:"put",delete:RR,[RR]:"delete",message:LL|Pp,[LL]:"message",invalidate:ML|qf,[ML]:"invalidate",patch:vL|qf,[vL]:"patch",relocate:UL,[UL]:"relocate"},FL={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(wc,"createAuditEntry");a(g4,"readAction");a(St,"readAuditEntry");Lc=class extends DataView{static{a(this,"Decoder")}position=0;readInt(){let t;return t=this.getUint8(this.position++),t>=128?t>=192?t===255?(t=this.getUint32(this.position),this.position+=4,t):(t=this.getUint32(this.position-1)&1073741823,this.position+=3,t):(t=this.getUint16(this.position-1)&32767,this.position++,t):t}readFloat64(){try{let t=this.getFloat64(this.position);return this.position+=8,t}catch(t){throw t.message=`Error reading float64: ${t.message} at position ${this.position}`,t}}}});function NR(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=$L,S4(e.primaryStore,e.auditStore)):(c=qL,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{VL(qL[i])})));let l=c[i]||(c[i]=[]);if(l.auditStore=e.auditStore,l.lastTxnTime==null&&(l.lastTxnTime=Date.now()),s?.scope==="full-database")return;let u=l[o];u||(u=l[o]=new Map,u.envs=l,u.tableId=o,u.store=e.primaryStore),t=eu(t);let f=new OR(r);f.startTime=n;let d=u.get(t);return d?d.push(f):(u.set(t,d=[f]),d.tables=u,d.key=t),f.subscriptions=d,f}function VL(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),KL(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=St(s),o=e[i.tableId];if(!o)continue;let c=i.recordId,l=eu(c),u=0;do{let f=o.get(l);if(f){for(let _ of f)if(!(u>0&&!(_.includeDescendants&&!(_.onlyChildren&&u>1)))){if(_.startTime>=n){(0,bR.info)("omitting",c,_.startTime,n);continue}try{let h;_.supportsTransactions&&_.txnInProgress!==i.version&&(h=!0,_.txnInProgress||(r?r.push(_):r=[_]),_.txnInProgress=i.version),_.listener(c,i,n,h)}catch(h){console.error(h),(0,bR.info)(h)}}}if(l==null)break;let d=l.lastIndexOf?.("/",l.length-2);d!==l.length-1&&u++,d>-1?l=l.slice(0,d+1):l=null}while(!0)}if(r)for(let n of r)n.txnInProgress=null,n.listener(null,{type:"end_txn"},e.lastTxnTime,!0)}function S4(e,t){let r=t||e,n=r.env;if(!n.hasAfterCommitListener){n.hasAfterCommitListener=!0;let s=n.path;r.on("aftercommit",({next:i,last:o,txnId:c})=>{let l=$L[s];if(!l)return;let u=a(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),l.txnTime=r.threadLocalWrites[0]||Date.now();try{VL(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function KL(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function YL(e){return e.nextTransaction||(NR({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),KL(e)),e.nextTransaction}var bR,qL,$L,OR,wR=Re(()=>{bR=v(ee());Ql();tu();Ai();qL=Object.create(null),$L=Object.create(null);a(NR,"addSubscription");OR=class extends xn{static{a(this,"Subscription")}listener;subscriptions;startTime;constructor(t){super(),this.listener=t,this.on("close",()=>this.end())}end(){if(this.subscriptions){if(this.subscriptions.splice(this.subscriptions.indexOf(this),1),this.subscriptions.length===0){let t=this.subscriptions.tables;if(t){let r=this.subscriptions.key;if(t.delete(r),t.size===0){let n=t.envs,s=t.dbi;delete n[s]}}}this.subscriptions=null}}toJSON(){return{name:"subscription"}}};a(VL,"notifyFromTransactionData");a(S4,"listenToCommits");a(KL,"nextTransaction");a(YL,"whenNextTransaction")});var zL=C(($Re,WL)=>{"use strict";var IR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};WL.exports=IR});var jL=C((KRe,QL)=>{"use strict";var CR=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};QL.exports=CR});var Kf=C((WRe,XL)=>{"use strict";var JL=le(),T4=(k(),P(q)),{RecordEncoder:A4}=(cu(),P(AL));JL.initSync();var R4=JL.get(T4.CONFIG_PARAMS.STORAGE_CACHING)!==!1,PR=class{static{a(this,"OpenDBIObject")}constructor(t,r=!1){this.dupSort=t===!0,this.encoding=t?"ordered-binary":"msgpack",this.useVersions=r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=R4&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:A4})}};XL.exports=PR});var Yf=C((QRe,ZL)=>{"use strict";var kn=le(),hs=(k(),P(q));kn.initSync();var Up=class{static{a(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",kn.get(hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=kn.get(hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),kn.get(hs.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=kn.get(hs.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=kn.get(hs.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};ZL.exports=Up;Up.MAX_DBS=1e4});var ft=C((JRe,lM)=>{"use strict";var LR=require("lmdb"),Fs=require("fs-extra"),Fn=require("path"),xp=un(),rM=ee(),En=Un().LMDB_ERRORS_ENUM,Bp=jL(),MR=Kf(),nM=Yf(),la=Ft(),eM=(k(),P(q)),{table:y4,resetDatabases:b4}=(xe(),P(ct)),tM=le(),Gs=la.INTERNAL_DBIS_NAME,sM=la.DBI_DEFINITION_NAME,O4="data.mdb",N4="lock.mdb",Wf=".mdb",w4="-lock",DR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=ms(t,r),this.key_type=this.dbi[la.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[la.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new LR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Hp(e,t){if(e===void 0)throw new Error(En.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(En.ENV_NAME_REQUIRED)}a(Hp,"pathEnvNameValidation");async function vR(e,t,r=!0){try{await Fs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(En.INVALID_BASE_PATH):n}try{let n=Fn.join(e,t+Wf);return await Fs.access(n,Fs.constants.R_OK|Fs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Fs.access(Fn.join(e,t,O4),Fs.constants.R_OK|Fs.constants.F_OK),Fn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(En.INVALID_ENVIRONMENT)}else throw new Error(En.INVALID_ENVIRONMENT);throw n}}a(vR,"validateEnvironmentPath");function kp(e,t){if(xp.validateEnv(e),t===void 0)throw new Error(En.DBI_NAME_REQUIRED)}a(kp,"validateEnvDBIName");async function I4(e,t,r=!1,n=!1){Hp(e,t);let s=Fn.basename(e);t=t.toString();let i=tM.get(eM.CONFIG_PARAMS.DATABASES);i||tM.setProperty(eM.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await vR(e,t,n),iM(e,t,r)}catch(o){if(o.message===En.INVALID_ENVIRONMENT){let c=Fn.join(e,t);await Fs.mkdirp(n?c:e);let l=new nM(n?c:c+Wf,!1),u=LR.open(l);u.dbis=Object.create(null);let f=new MR(!1);u.openDB(Gs,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=UR(e,t,r);return u[la.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(I4,"createEnvironment");async function C4(e,t,r,n=!0){Hp(e,t),t=t.toString();let s=Fn.join(e,t);return y4({table:t,database:Fn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(C4,"copyEnvironment");async function iM(e,t,r=!1){Hp(e,t),t=t.toString();let n=UR(e,t,r);if(global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null)),global.lmdb_map[n]!==void 0)return global.lmdb_map[n];let s=await vR(e,t),i=Fn.join(e,t+Wf),o=s!=i,c=new nM(s,o),l=LR.open(c);l.dbis=Object.create(null);let u=aM(l);for(let f=0;f<u.length;f++)ms(l,u[f]);return l[la.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(iM,"openEnvironment");async function P4(e,t,r=!1){Hp(e,t),t=t.toString();let n=Fn.join(e,t+Wf),s=await vR(e,t);if(global.lmdb_map!==void 0){let i=UR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await oM(o),delete global.lmdb_map[i]}}await Fs.remove(s),await Fs.remove(s===n?s+w4:Fn.join(Fn.dirname(s),N4))}a(P4,"deleteEnvironment");async function oM(e){xp.validateEnv(e);let t=e[la.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(oM,"closeEnvironment");function UR(e,t,r=!1){let s=`${Fn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(UR,"getCachedEnvironmentName");function D4(e){xp.validateEnv(e);let t=Object.create(null),r=ms(e,Gs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Gs)try{t[n]=Object.assign(new Bp,s)}catch{rM.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(D4,"listDBIDefinitions");function aM(e){xp.validateEnv(e);let t=[],r=ms(e,Gs);for(let{key:n}of r.getRange({start:!1}))n!==Gs&&t.push(n);return t}a(aM,"listDBIs");function L4(e,t){let n=ms(e,Gs).getEntry(t),s=new Bp;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{rM.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(L4,"getDBIDefinition");function cM(e,t,r,n=!r){if(kp(e,t),t=t.toString(),t===Gs)throw new Error(En.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return ms(e,t)}catch(s){if(s.message===En.DBI_DOES_NOT_EXIST){let i=new MR(r,n===!0),o=e.openDB(t,i),c=new Bp(r===!0,n);return o[sM]=c,ms(e,Gs).putSync(t,c),e.dbis[t]=o,o}throw s}}a(cM,"createDBI");function ms(e,t){if(kp(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Gs?r=L4(e,t):r=new Bp,r===void 0)throw new Error(En.DBI_DOES_NOT_EXIST);let n;try{let s=new MR(r.dup_sort,r.useVersions);if(n=e.openDB(t,s),n.db===void 0)throw new Error("MDB_NOTFOUND")}catch(s){throw s.message.includes("MDB_NOTFOUND")===!0?new Error(En.DBI_DOES_NOT_EXIST):s}return n[sM]=r,e.dbis[t]=n,n}a(ms,"openDBI");function M4(e,t){kp(e,t),t=t.toString();let r=ms(e,t),n=r.getStats();return r[la.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(M4,"statDBI");async function v4(e,t){try{let r=Fn.join(e,t+Wf);return(await Fs.stat(r)).size}catch{throw new Error(En.INVALID_ENVIRONMENT)}}a(v4,"environmentDataSize");function U4(e,t){if(kp(e,t),t=t.toString(),t===Gs)throw new Error(En.CANNOT_DROP_INTERNAL_DBIS_NAME);ms(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],ms(e,Gs).removeSync(t)}a(U4,"dropDBI");function x4(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{ms(e,i)}catch(o){if(o.message===En.DBI_DOES_NOT_EXIST)cM(e,i,i!==t,i===t),n=!0;else throw o}}n&&b4()}a(x4,"initializeDBIs");lM.exports={openDBI:ms,openEnvironment:iM,createEnvironment:I4,listDBIs:aM,listDBIDefinitions:D4,createDBI:cM,dropDBI:U4,statDBI:M4,deleteEnvironment:P4,initializeDBIs:x4,TransactionCursor:DR,environmentDataSize:v4,copyEnvironment:C4,closeEnvironment:oM}});var fM=C((ZRe,dM)=>{"use strict";var xR=ft(),B4=ee(),uM=Un().LMDB_ERRORS_ENUM;dM.exports=H4;async function H4(e){try{if(global.lmdb_map!==void 0&&e.operation!==void 0){let t=Object.keys(global.lmdb_map),r;switch(e.operation){case"drop_schema":for(let i=0;i<t.length;i++){let o=t[i];if(o.startsWith(`${e.schema}.`)||o.startsWith(`txn.${e.schema}.`))try{await xR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==uM.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await xR.closeEnvironment(global.lmdb_map[n]),await xR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==uM.ENV_REQUIRED)throw i}break;case"drop_attribute":r=global.lmdb_map[`${e.schema}.${e.table}`],r!==void 0&&typeof r.dbis=="object"&&r.dbis[`${e.attribute}`]!==void 0&&delete r.dbis[`${e.attribute}`];break;default:break}}}catch(t){B4.error(t)}}a(H4,"cleanLMDBMap")});var ao=C((tye,k4)=>{k4.exports={hdb_user:{hash_attribute:"username",name:"hdb_user",schema:"system",residence:["*"],attributes:[{attribute:"username"},{attribute:"password"},{attribute:"role"},{attribute:"active"},{attribute:"hash"},{attribute:"refresh_token"},{attribute:"hash_function"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_role:{hash_attribute:"id",name:"hdb_role",schema:"system",attributes:[{attribute:"id"},{attribute:"role"},{attribute:"permission"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}],residence:["*"]},hdb_job:{hash_attribute:"id",name:"hdb_job",schema:"system",attributes:[{attribute:"id"},{attribute:"user"},{attribute:"type"},{attribute:"status"},{attribute:"start_datetime"},{attribute:"end_datetime"},{attribute:"message"},{attribute:"created_datetime"},{attribute:"request"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_license:{hash_attribute:"license_key",name:"hdb_license",schema:"system",attributes:[{attribute:"license_key"},{attribute:"company"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_info:{hash_attribute:"info_id",name:"hdb_info",schema:"system",attributes:[{attribute:"info_id"},{attribute:"data_version_num"},{attribute:"hdb_version_num"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_nodes:{hash_attribute:"name",name:"hdb_nodes",schema:"system",attributes:[{attribute:"name"},{attribute:"subscriptions"},{attribute:"system_info"},{attribute:"url"},{attribute:"routes"},{attribute:"revoked_certificates"},{attribute:"shard"}]},hdb_certificate:{hash_attribute:"name",name:"hdb_certificate",schema:"system",attributes:[{attribute:"name"},{attribute:"uses"},{attribute:"certificate"},{attribute:"is_authority"},{attribute:"private_key_name"},{attribute:"details"},{attribute:"is_self_signed"},{attribute:"__updatedtime__"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]},hdb_raw_analytics:{hash_attribute:"id",name:"hdb_raw_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{attribute:"time"},{attribute:"metrics"}]},hdb_temp:{hash_attribute:"id",name:"hdb_temp",schema:"system",attributes:[{attribute:"id"}]},hdb_durable_session:{hash_attribute:"id",name:"hdb_durable_session",schema:"system",attributes:[{attribute:"id"}]},hdb_session_will:{hash_attribute:"id",name:"hdb_session_will",schema:"system",attributes:[{attribute:"id"}]}}});var OM=C((nye,bM)=>{"use strict";var BR=require("recursive-iterator"),F4=require("alasql"),HR=require("clone"),_M=ie(),{handleHDBError:hM,hdb_errors:G4}=he(),{HDB_ERROR_MSGS:mM,HTTP_STATUS_CODES:pM}=G4,{getDatabases:q4}=(xe(),P(ct)),$4=["DISTINCT_ARRAY"],EM=Symbol("validateTables"),kR=Symbol("validateTable"),rye=Symbol("getAllColumns"),gM=Symbol("validateAllColumns"),Fp=Symbol("findColumn"),SM=Symbol("validateOrderBy"),zf=Symbol("validateSegment"),FR=Symbol("validateColumn"),TM=Symbol("setColumnsForTable"),AM=Symbol("checkColumnsForAsterisk"),RM=Symbol("validateGroupBy"),yM=Symbol("hasColumns"),GR=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[EM](),this[AM](),this[gM]()}[EM](){if(this[yM]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[kR](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[kR](t.table)})}}[yM](){let t=!1,r=new BR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[kR](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=q4();if(!r[t.databaseid])throw hM(new Error,mM.SCHEMA_NOT_FOUND(t.databaseid),pM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw hM(new Error,mM.TABLE_NOT_FOUND(t.databaseid,t.tableid),pM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=HR(s);i.table=HR(t),this.attributes.push(i)})}[Fp](t){return this.attributes.filter(r=>t.tableid?(r.table.as===t.tableid||r.table.tableid===t.tableid)&&r.attribute===t.columnid:r.attribute===t.columnid)}[AM](){let t=new BR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[TM](r.tableid)}[TM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new F4.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[gM](){this[zf](this.statement.columns,!1),this[zf](this.statement.joins,!1),this[zf](this.statement.where,!1),this[RM](this.statement.group,!1),this[zf](this.statement.order,!0)}[zf](t,r){if(!t)return;let n=new BR(t),s=[];for(let{node:i,path:o}of n)!_M.isEmpty(i)&&!_M.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[SM](i):s.push(this[FR](i)));return s}[RM](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&$4.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=HR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Fp](n)[0];s&&r.push(s)}}}),this.statement.group.forEach(n=>{let s=null;if(!n.columnid)r.forEach((i,o)=>{if(i.toString()===n.toString()){s=i,r.splice(o,1);return}});else{let i=this[Fp](n);if(!i||i.length===0)throw`unknown column '${n.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${n.toString()}' in group by`;r.forEach((o,c)=>{if(o.attribute===i[0].attribute&&o.table.tableid===i[0].table.tableid){s=o,r.splice(c,1);return}})}if(!s)throw`group by column '${n.toString()}' must be in select`}),r.length>0)throw`select column '${r[0].attribute?r[0].attribute:r[0].toString()}' must be in group by`}[SM](t){let r=this.statement.columns.filter(n=>n.as===t.columnid);if(r.length>1)throw`ambiguous column reference ${(t.tableid?t.tableid+".":"")+t.columnid} in order by`;r.length===0&&this[FR](t)}[FR](t){let r=this[Fp](t),n=(t.tableid?t.tableid+".":"")+t.columnid;if(r.length===0)throw`unknown column ${n}`;if(r.length>1)throw`ambiguous column reference ${n}`;return r[0]}};bM.exports=GR});var wM=C((iye,NM)=>{"use strict";var qR=class{static{a(this,"BridgeMethods")}createSchema(){throw new Error("createSchema bridge method is not defined")}dropSchema(){throw new Error("dropSchema bridge method is not defined")}createTable(){throw new Error("createTable bridge method is not defined")}dropTable(){throw new Error("dropTable bridge method is not defined")}createRecords(){throw new Error("createRecords bridge method is not defined")}updateRecords(){throw new Error("updateRecords bridge method is not defined")}async upsertRecords(){throw new Error("upsertRecords bridge method is not defined")}deleteRecords(){throw new Error("deleteRecords bridge method is not defined")}createAttribute(){throw new Error("createAttribute bridge method is not defined")}dropAttribute(){throw new Error("dropAttribute bridge method is not defined")}searchByConditions(){throw new Error("searchByConditions bridge method is not defined")}searchByHash(){throw new Error("searchByHash bridge method is not defined")}searchByValue(){throw new Error("searchByValue bridge method is not defined")}getDataByHash(){throw new Error("getDataByHash bridge method is not defined")}getDataByValue(){throw new Error("getDataByValue bridge method is not defined")}deleteRecordsBefore(){throw new Error("deleteRecordsBefore bridge method is not defined")}deleteAuditLogsBefore(){throw new Error("deleteAuditLogsBefore bridge method is not defined")}async readAuditLog(){throw new Error("readAuditLog bridge method is not defined")}};NM.exports=qR});var CM=C((aye,IM)=>{"use strict";var $R=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};IM.exports=$R});var DM=C((lye,PM)=>{"use strict";var VR=class{static{a(this,"UpdateRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n,this.original_records=s}};PM.exports=VR});var MM=C((dye,LM)=>{"use strict";var KR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};LM.exports=KR});var vc=C((pye,xM)=>{"use strict";var V4=ft(),K4=CM(),Y4=DM(),W4=MM(),Ri=un(),Qf=Un().LMDB_ERRORS_ENUM,z4=Ft(),co=(k(),P(q)),Q4=ie(),j4=require("uuid"),_ye=require("lmdb"),{handleHDBError:J4,hdb_errors:X4}=he(),{OVERFLOW_MARKER:hye,MAX_SEARCH_KEY_LENGTH:mye}=z4,vM=le();vM.initSync();var Gp=vM.get(co.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),YR=co.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Mc=co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function Z4(e,t,r,n,s=Ri.getNextMonotonicTime()){jR(e,t,r,n),WR(e,t,r);let i=new K4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];UM(u,!0,s);let f=e3(e,t,r,u),d=u[t];o.push(f),c.push(d)}return zR(o,c,n,i,s)}a(Z4,"insertRecords");function e3(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let o=r[i];if(o===t||n.hasOwnProperty(o)===!1)continue;let c=n[o];if(typeof c=="function"){let f=c([[{}]]);Array.isArray(f)&&(c=f[0][co.FUNC_VAL],n[o]=c)}let l=Ri.getIndexedValues(c),u=e.dbis[o];if(l){Gp&&u.prefetch(l.map(f=>({key:f,value:s})),qp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}Gp&&e.dbis[t].prefetch([s],qp),e.dbis[t].put(s,n,n[Mc])})}a(e3,"insertRecord");function t3(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(t3,"removeSkippedRecords");function UM(e,t,r){let n=r>0;(n||!Number.isInteger(e[Mc]))&&(e[Mc]=r||(r=Ri.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[YR]))&&(e[YR]=r||Ri.getNextMonotonicTime()):delete e[YR]}a(UM,"setTimestamps");function WR(e,t,r){r.indexOf(co.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(co.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),V4.initializeDBIs(e,t,r)}a(WR,"initializeTransaction");async function r3(e,t,r,n,s=Ri.getNextMonotonicTime()){jR(e,t,r,n),WR(e,t,r);let i=new Y4,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let f=n[u],d=f[t],_;try{_=QR(e,t,f,d,i,!0,s)}catch{i.skipped_hashes.push(d),o.push(u);continue}c.push(_),l.push(d)}return zR(c,l,n,i,s,o)}a(r3,"updateRecords");async function n3(e,t,r,n,s=Ri.getNextMonotonicTime()){try{jR(e,t,r,n)}catch(l){throw J4(l,l.message,X4.HTTP_STATUS_CODES.BAD_REQUEST)}WR(e,t,r);let i=new W4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;Q4.isEmpty(u[t])?(f=j4.v4(),u[t]=f):f=u[t];let d=QR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return zR(o,c,n,i,s)}a(n3,"upsertRecords");async function zR(e,t,r,n,s,i=[]){let o=await Promise.all(e);for(let c=0,l=o.length;c<l;c++)o[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Ri.getNextMonotonicTime(),t3(r,i),n}a(zR,"finalizeWrite");function QR(e,t,r,n,s,i=!1,o){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,f=u;if(!u){if(i)return!1;u={}}if(UM(r,!f,o),Number.isInteger(r[Mc])&&u[Mc]>r[Mc])return!1;f&&s.original_records.push(u);let d,_=a(()=>{for(let m in r){if(!r.hasOwnProperty(m)||m===t)continue;let S=r[m],g=e.dbis[m];if(g===void 0)continue;let R=u[m];if(typeof S=="function"){let T=S([[u]]);Array.isArray(T)&&(S=T[0][co.FUNC_VAL],r[m]=S)}if(S===R)continue;let E=Ri.getIndexedValues(R);if(E){Gp&&g.prefetch(E.map(T=>({key:T,value:n})),qp);for(let T=0,N=E.length;T<N;T++)g.remove(E[T],n)}if(E=Ri.getIndexedValues(S),E){Gp&&g.prefetch(E.map(T=>({key:T,value:n})),qp);for(let T=0,N=E.length;T<N;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[Mc])},"do_put");return l?d=c.ifVersion(n,l.version,_):d=c.ifNoExists(n,_),d.then(h=>h?!0:QR(e,t,r,n,s,i,o))}a(QR,"updateUpsertRecord");function s3(e,t,r){if(Ri.validateEnv(e),t===void 0)throw new Error(Qf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Qf.WRITE_ATTRIBUTES_REQUIRED):new Error(Qf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(s3,"validateBasic");function jR(e,t,r,n){if(s3(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Qf.RECORDS_REQUIRED):new Error(Qf.RECORDS_MUST_BE_ARRAY)}a(jR,"validateWrite");function qp(){}a(qp,"noop");xM.exports={insertRecords:Z4,updateRecords:r3,upsertRecords:n3}});var ot=C((gye,BM)=>{"use strict";var gn=require("validate.js");gn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||gn.validators.type.checks[t](e)?null:` must be a '${t}' value`};gn.validators.type.checks={Object:a(function(e){return gn.isObject(e)&&!gn.isArray(e)},"Object"),Array:gn.isArray,Integer:gn.isInteger,Number:gn.isNumber,String:gn.isString,Date:gn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};gn.validators.hasValidFileExt=function(e,t){return gn.isString(e)?e===""?"can't be blank":t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`:null};BM.exports={validateObject:i3,validateObjectAsync:o3,validateBySchema:a3};function i3(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=gn(e,t,{format:"flat"});return r?new Error(r):null}a(i3,"validateObject");async function o3(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await gn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(o3,"validateObjectAsync");function a3(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(a3,"validateBySchema")});var kM=C((Tye,HM)=>{"use strict";var c3=require("uuid"),JR=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||c3.v4(),this.schema_table=`${this.schema}.${this.table}`}};HM.exports=JR});var $p=C((Rye,FM)=>{"use strict";var l3=kM(),XR=class extends l3{static{a(this,"LMDBCreateAttributeObject")}constructor(t,r,n,s,i=!0,o=!1){super(t,r,n,s),this.dup_sort=i,this.is_hash_attribute=o}};FM.exports=XR});var qM=C((bye,GM)=>{"use strict";GM.exports=d3;var u3="inserted";function d3(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===u3?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(d3,"returnObject")});var Vp=C((wye,VM)=>{"use strict";var f3=(k(),P(q)),ZR=ft(),_3=vc(),{getSystemSchemaPath:h3,getSchemaPath:m3}=gt(),Nye=ao(),{validateBySchema:p3}=ot(),jf=require("joi"),E3=$p(),g3=qM(),{handleHDBError:S3,hdb_errors:T3,ClientError:A3}=he(),$M=ie(),{HTTP_STATUS_CODES:R3}=T3,y3="inserted";VM.exports=b3;async function b3(e){let t=p3(e,jf.object({database:jf.string(),schema:jf.string(),table:jf.string().required(),attribute:jf.string().required()}));if(t)throw new A3(t.message);let r=!e.skip_table_check&&$M.checkGlobalSchemaTable(e.schema,e.table);if(r)throw S3(new Error,r,R3.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=$M.isEmpty(e.dup_sort)||e.dup_sort=="true";let n=[];if(global.hdb_schema[e.schema]&&global.hdb_schema[e.schema][e.table]&&(n=global.hdb_schema[e.schema][e.table].attributes),Array.isArray(n)&&n.length>0){for(let i of n)if(i.attribute===e.attribute)throw new Error(`attribute '${i.attribute}' already exists in ${e.schema}.${e.table}`)}let s=new E3(e.schema,e.table,e.attribute,e.id);try{let i=await ZR.openEnvironment(m3(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${e.attribute}' already exists in ${e.schema}.${e.table}`);ZR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await ZR.openEnvironment(h3(),f3.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await _3.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return g3(y3,c,{records:[s]},l)}catch(i){throw i}}a(b3,"lmdbCreateAttribute")});var bi=C((Cye,WM)=>{"use strict";var YM=ie(),KM=(k(),P(q)),uu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,yi=require("joi"),ua={schema_format:{pattern:uu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},O3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(uu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number(),yi.array()).required(),N3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(uu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number()),w3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(uu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number()).required();function I3(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>ua.schema_length.maximum?`'${e}' maximum of 250 characters`:uu.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(I3,"checkValidTable");function C3(e,t){return YM.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(C3,"validateSchemaExists");function P3(e,t){let r=t.state.ancestors[0].schema;return YM.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(P3,"validateTableExists");function D3(e,t){return e.toLowerCase()===KM.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${KM.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(D3,"validateSchemaName");WM.exports={common_validators:ua,schema_regex:uu,hdb_schema_table:O3,validateSchemaExists:C3,validateTableExists:P3,validateSchemaName:D3,checkValidTable:I3,hdb_database:N3,hdb_table:w3}});var ty=C((Dye,QM)=>{var{hdb_table:L3,hdb_database:zM}=bi(),M3=ot(),ey=require("joi"),v3={undefined:"undefined",null:"null"},U3=a((e,t)=>{let r=Object.keys(e),n=r.length,s;for(let i=0;i<n;i++){let o=r[i];(!o||o.length===0||v3[o]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${o}'`:s+=`. Invalid attribute name: '${o}'`)}return s?t.message(s):e},"custom_records_val"),x3=ey.object({database:zM,schema:zM,table:L3,records:ey.array().items(ey.object().custom(U3)).required()});QM.exports=function(e){return M3.validateBySchema(e,x3)}});var Jf=C((vye,JM)=>{"use strict";var lo=ie(),jM=ee(),Mye=ty(),{getDatabases:B3}=(xe(),P(ct)),{ClientError:Uc}=he();JM.exports=H3;function H3(e){if(lo.isEmpty(e))throw new Uc("invalid update parameters defined.");if(lo.isEmptyOrZeroLength(e.schema))throw new Uc("invalid schema specified.");if(lo.isEmptyOrZeroLength(e.table))throw new Uc("invalid table specified.");if(!Array.isArray(e.records))throw new Uc("records must be an array");let t=B3()[e.schema]?.[e.table];if(lo.isEmpty(t))throw new Uc(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.primaryKey,n=new Set,s={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(o=>{if(i&&lo.isEmptyOrZeroLength(o[r]))throw jM.error("a valid hash attribute must be provided with update record:",o),new Uc("a valid hash attribute must be provided with update record, check log for more info");if(!lo.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw jM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Uc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!lo.isEmpty(o[r])&&o[r]!==""&&n.has(lo.autoCast(o[r]))&&(o.skip=!0),n.add(lo.autoCast(o[r]));for(let c in o)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}a(H3,"insertUpdateValidate")});var Kp=C((xye,ZM)=>{"use strict";var XM=ie(),k3=(k(),P(q)),F3=ee(),G3=Vp(),q3=$p(),$3=uo(),{SchemaEventMsg:V3}=qs(),K3="already exists in";ZM.exports=Y3;async function Y3(e,t,r){if(XM.isEmptyOrZeroLength(r))return r;let n=[];XM.isEmptyOrZeroLength(t.attributes)||t.attributes.forEach(i=>{n.push(i.attribute)});let s=r.filter(i=>n.indexOf(i)<0);return s.length===0||await Promise.all(s.map(async i=>{await W3(e,t.schema,t.name,i)})),s}a(Y3,"lmdbCheckForNewAttributes");async function W3(e,t,r,n){let s=new q3(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await z3(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(K3))F3.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a(W3,"createNewAttribute");async function z3(e){let t;return t=await G3(e),$3.signalSchemaChange(new V3(process.pid,k3.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(z3,"createAttribute")});var du=C((Hye,ev)=>{"use strict";var ry=class{static{a(this,"LMDBTransactionObject")}constructor(t,r,n,s,i=void 0){this.operation=t,this.user_name=r,this.timestamp=n,this.hash_values=s,this.origin=i}};ev.exports=ry});var rv=C((Fye,tv)=>{"use strict";var Q3=du(),j3=(k(),P(q)).OPERATIONS_ENUM,ny=class extends Q3{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(j3.INSERT,r,n,s,i),this.records=t}};tv.exports=ny});var sv=C((qye,nv)=>{"use strict";var J3=du(),X3=(k(),P(q)).OPERATIONS_ENUM,sy=class extends J3{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(X3.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};nv.exports=sy});var ov=C((Vye,iv)=>{"use strict";var Z3=du(),eX=(k(),P(q)).OPERATIONS_ENUM,iy=class extends Z3{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(eX.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};iv.exports=iy});var cv=C((Yye,av)=>{"use strict";var tX=du(),rX=(k(),P(q)).OPERATIONS_ENUM,oy=class extends tX{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(rX.DELETE,n,s,t,i),this.original_records=r}};av.exports=oy});var Xf=C((Qye,fv)=>{"use strict";var zye=require("path"),lv=ft(),nX=rv(),sX=sv(),iX=ov(),oX=cv(),fu=Ft(),uv=ie(),{CONFIG_PARAMS:aX}=(k(),P(q)),dv=le();dv.initSync();var Yp=(k(),P(q)).OPERATIONS_ENUM,{getTransactionAuditStorePath:cX}=gt();fv.exports=lX;async function lX(e,t){if(dv.get(aX.LOGGING_AUDITLOG)===!1)return;let r=cX(e.schema,e.table),n=await lv.openEnvironment(r,e.table,!0),s=uX(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){lv.initializeDBIs(n,fu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,fu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[fu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[fu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),uv.isEmpty(s.user_name)||n.dbis[fu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[fu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a(lX,"writeTransaction");function uX(e,t){let r=uv.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===Yp.INSERT)return new nX(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Yp.UPDATE)return new sX(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Yp.UPSERT)return new iX(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Yp.DELETE)return new oX(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(uX,"createTransactionObject")});var ay=C((Xye,_v)=>{"use strict";var dX=Jf(),Jye=gf(),Zf=(k(),P(q)),fX=Sf(),_X=vc().insertRecords,hX=ft(),mX=ee(),pX=Kp(),{getSchemaPath:EX}=gt(),gX=Xf();_v.exports=SX;async function SX(e){try{let{schema_table:t,attributes:r}=dX(e);fX(e,r,t.hash_attribute),e.schema!==Zf.SYSTEM_SCHEMA_NAME&&(r.includes(Zf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Zf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Zf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Zf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await pX(e.hdb_auth_header,t,r),s=EX(e.schema,e.table),i=await hX.openEnvironment(s,e.table),o=await _X(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await gX(e,o)}catch(c){mX.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(SX,"lmdbCreateRecords")});var pv=C((ebe,mv)=>{"use strict";var hv=(k(),P(q)),TX=ay(),AX=gf(),RX=require("fs-extra"),{getSchemaPath:yX}=gt();mv.exports=bX;async function bX(e){let t=[{name:e.schema,createddate:Date.now()}],r=new AX(hv.SYSTEM_SCHEMA_NAME,hv.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await TX(r),await RX.mkdirp(yX(e.schema))}a(bX,"lmdbCreateSchema")});var gv=C((rbe,Ev)=>{"use strict";var cy=class{static{a(this,"DeleteRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.deleted=t,this.skipped=r,this.txn_time=n,this.original_records=s}};Ev.exports=cy});var Rv=C((abe,Av)=>{"use strict";var Sv=ft(),ly=un(),uy=Un().LMDB_ERRORS_ENUM,OX=Ft(),Tv=ee(),sbe=ie(),NX=require("lmdb"),wX=gv(),IX=(k(),P(q)),{OVERFLOW_MARKER:ibe,MAX_SEARCH_KEY_LENGTH:obe}=OX,CX=IX.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function PX(e,t,r,n){if(ly.validateEnv(e),t===void 0)throw new Error(uy.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(uy.IDS_REQUIRED):new Error(uy.IDS_MUST_BE_ITERABLE);try{let s=Sv.listDBIs(e);Sv.initializeDBIs(e,t,s);let i=new wX,o,c=[],l=[];for(let _=0,h=r.length;_<h;_++)try{o=r[_];let m=e.dbis[t].get(o);if(!m||n&&m[CX]>n){i.skipped.push(o);continue}let S=e.dbis[t].ifVersion(o,NX.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let g=0;g<s.length;g++){let R=s[g];if(!m.hasOwnProperty(R)||R===t)continue;let E=e.dbis[R],T=m[R];if(T!=null)try{let N=ly.getIndexedValues(T);if(N)for(let M=0,H=N.length;M<H;M++)E.remove(N[M],o)}catch{Tv.warn(`cannot delete from attribute: ${R}, ${T}:${o}`)}}});c.push(S),l.push(o),i.original_records.push(m)}catch(m){Tv.warn(m),i.skipped.push(o)}let u=[],f=await Promise.all(c);for(let _=0,h=f.length;_<h;_++)f[_]===!0?i.deleted.push(l[_]):(i.skipped.push(l[_]),u.push(_));let d=0;for(let _=0;_<u.length;_++){let h=u[_];i.original_records.splice(h-d,1),d++}return i.txn_time=ly.getNextMonotonicTime(),i}catch(s){throw s}}a(PX,"deleteRecords");Av.exports={deleteRecords:PX}});var e_=C((lbe,bv)=>{"use strict";var _u=ie(),DX=Rv(),LX=ft(),{getSchemaPath:MX}=gt(),vX=Xf(),UX=ee();bv.exports=xX;async function xX(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(_u.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(_u.isEmptyOrZeroLength(e.hash_values)&&!_u.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];_u.isEmpty(l)||e.hash_values.push(l)}}if(_u.isEmptyOrZeroLength(e.hash_values))return yv([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(_u.isEmptyOrZeroLength(e.records)){e.records=[];for(let c=0;c<e.hash_values.length;c++)e.records[c]={[n]:e.hash_values[c]}}let s=MX(e.schema,e.table),i=await LX.openEnvironment(s,e.table),o=await DX.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await vX(e,o)}catch(c){UX.error(`unable to write transaction due to ${c.message}`)}return yv(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(xX,"lmdbDeleteRecords");function yv(e,t,r){let n=e.length+t.length,s=n===1?"record":"records";return{message:`${e.length} of ${n} ${s} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}a(yv,"createDeleteResponse")});var fy=C((fbe,Ov)=>{"use strict";var BX=(k(),P(q)),dbe=un();function dy(e,t){let r=Object.create(null);if(t.length===1&&BX.SEARCH_WILDCARDS.indexOf(t[0])>=0)Object.assign(r,e);else for(let n=0;n<t.length;n++){let s=t[n],i=e[s];r[s]=i===void 0?null:i}return r}a(dy,"parseRow");function HX(e,t,r,n){let s=dy(r,e);n.push(s)}a(HX,"searchAll");function kX(e,t,r,n){let s=dy(r,e);n[t]=s}a(kX,"searchAllToMap");function FX(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(FX,"iterateDBI");function xc(e,t,r,n,s){let i=Object.create(null);i[s]=e;let o;n===s?o=e:(o=t,n!==void 0&&(i[n]=o)),r[0].push(o),r[1].push(i)}a(xc,"pushResults");function GX(e,t,r,n,s,i){t.toString().endsWith(e)&&xc(t,r,n,s,i)}a(GX,"endsWith");function qX(e,t,r,n,s,i){t.toString().includes(e)&&xc(t,r,n,s,i)}a(qX,"contains");function $X(e,t,r,n,s,i){t>e&&xc(t,r,n,s,i)}a($X,"greaterThanCompare");function VX(e,t,r,n,s,i){t>=e&&xc(t,r,n,s,i)}a(VX,"greaterThanEqualCompare");function KX(e,t,r,n,s,i){t<e&&xc(t,r,n,s,i)}a(KX,"lessThanCompare");function YX(e,t,r,n,s,i){t<=e&&xc(t,r,n,s,i)}a(YX,"lessThanEqualCompare");Ov.exports={parseRow:dy,searchAll:HX,searchAllToMap:kX,iterateDBI:FX,endsWith:GX,contains:qX,greaterThanCompare:$X,greaterThanEqualCompare:VX,lessThanCompare:KX,lessThanEqualCompare:YX,pushResults:xc}});var hu=C((Ebe,Lv)=>{"use strict";var da=ft(),hbe=ee(),Gn=un(),Wp=Ft(),zt=Un().LMDB_ERRORS_ENUM,mbe=ie(),WX=(k(),P(q)),zp=fy(),{parseRow:zX}=zp,pbe=require("lmdb"),{OVERFLOW_MARKER:Nv,MAX_SEARCH_KEY_LENGTH:QX}=Wp;function wv(e,t,r,n=!1,s=void 0,i=void 0){return Bc(e,t,r,(o,c)=>c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}))}a(wv,"iterateFullIndex");function t_(e,t,r,n,s,i=!1,o=void 0,c=void 0,l=!1,u=!1){return Bc(e,t,r,(f,d,_,h)=>{let E={transaction:f,start:i===!0?s:n,end:i===!0?n:s,reverse:i,limit:o,offset:c,inclusiveEnd:i===!0?!l:!u,exclusiveStart:i===!0?u:l};return h===r?(E.values=!1,d.getRange(E).map(T=>({value:T}))):d.getRange(E)})}a(t_,"iterateRangeBetween");function Bc(e,t,r,n){let s=e.database||e,i=da.openDBI(s,r);i[Wp.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&da.openDBI(s,t);let o;e.database?o=e:(o=e.useReadTransaction(),o.database=e);let c=n(o,i,s,t);return c.transaction=o,e.database||(c.onDone=()=>{o.done()}),c}a(Bc,"setupTransaction");function Iv(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(Nv)){if(!s)if(r)s=da.openDBI(e,r);else{let l=da.listDBIs(e);for(let u=0,f=l.length;u<f&&(s=da.openDBI(e,l[u]),!s[Wp.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(Iv,"getOverflowCheck");function jX(e,t,r,n=!1,s=void 0,i=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return Bc(e,t,t,(o,c,l)=>(Qp(r),r=r_(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>zX(u.value,r))))}a(jX,"searchAll");function JX(e,t,r,n=!1,s=void 0,i=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);Qp(r),r=r_(e.database||e,r);let o=new Map;for(let{key:c,value:l}of wv(e,t,t,n,s,i))o.set(c,zp.parseRow(l,r));return o}a(JX,"searchAllToMap");function XX(e,t,r=!1,n=void 0,s=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=wv(e,void 0,t,r,n,s),c=o.transaction,l=Iv(c.database,c,void 0,t);for(let{key:u,value:f}of o){let d=l(u,f);i[d]===void 0&&(i[d]=[]),i[d].push(f)}return i}a(XX,"iterateDBI");function ZX(e,t){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return da.statDBI(e,t).entryCount}a(ZX,"countAll");function e6(e,t,r,n,s=!1,i=void 0,o=void 0){return fa(e,r,n),Bc(e,t,r,(c,l,u,f)=>(n=Gn.convertKeyValueToWrite(n),f===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:o}).map(d=>({key:n,value:d}))))}a(e6,"equals");function t6(e,t,r){return fa(e,t,r),da.openDBI(e,t).getValuesCount(r)}a(t6,"count");function r6(e,t,r,n,s=!1,i=void 0,o=void 0){return fa(e,r,n),Bc(e,null,r,(c,l)=>{n=Gn.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let f;if(s===!0){let d;for(let _ of l.getKeys({transaction:c,start:n}))if(!_.startsWith(n)){d=_;break}return d!==void 0&&(Number.isInteger(o)?o++:i++),f=l.getRange({transaction:c,start:d,end:void 0,reverse:s,limit:i,offset:o}).map(_=>{let{key:h}=_;if(h!==d){if(h.toString().startsWith(n))return _;if(u===!0)return f.DONE}}),f.filter(_=>_)}else return f=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:o}).map(d=>{if(d.key.toString().startsWith(n))return d;if(u===!0)return f.DONE}),u?f:f.filter(d=>d)})}a(r6,"startsWith");function n6(e,t,r,n,s=!1,i=void 0,o=void 0){return Cv(e,t,r,n,s,i,o,!0)}a(n6,"endsWith");function Cv(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return fa(e,r,n),Bc(e,null,r,(l,u,f,d)=>{let _=Iv(f,l,d,r);return o=Number.isInteger(o)?o:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(h=>{let m=h.toString();return m.endsWith(Nv)?u.getValues(h,{transaction:l}).map(S=>{let g=_(h,S);if(c?g.endsWith(n):g.includes(n))return{key:g,value:S}}).filter(S=>S):(c?m.endsWith(n):m.includes(n))?u[Wp.DBI_DEFINITION_NAME].is_hash_attribute?{key:h,value:h}:u.getValues(h,{transaction:l}).map(S=>({key:h,value:S})):[]}).slice(o,i===void 0?void 0:i+(o||0))})}a(Cv,"contains");function s6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),t_(e,t,r,n,l,s,i,o,!0,!1)}a(s6,"greaterThan");function i6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),t_(e,t,r,n,l,s,i,o,!1,!1)}a(i6,"greaterThanEqual");function o6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),t_(e,t,r,l,n,s,i,o,!1,!0)}a(o6,"lessThan");function a6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),t_(e,t,r,l,n,s,i,o,!1,!1)}a(a6,"lessThanEqual");function c6(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(Gn.validateEnv(e),r===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(zt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(zt.END_VALUE_REQUIRED);if(n=Gn.convertKeyValueToWrite(n),s=Gn.convertKeyValueToWrite(s),n>s)throw new Error(zt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return t_(e,t,r,n,s,i,o,c)}a(c6,"between");function l6(e,t,r,n){Gn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(Qp(r),r=r_(s,r),n===void 0)throw new Error(zt.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=zp.parseRow(c,r)),o}a(l6,"searchByHash");function u6(e,t,r){Gn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(u6,"checkHashExists");function d6(e,t,r,n,s=[]){return Dv(e,t,r,n,s),Pv(e,t,r,n,s).map(i=>i[1])}a(d6,"batchSearchByHash");function f6(e,t,r,n,s=[]){Dv(e,t,r,n,s);let i=new Map;for(let[o,c]of Pv(e,t,r,n,s))i.set(o,c);return i}a(f6,"batchSearchByHashToMap");function Pv(e,t,r,n,s=[]){return Bc(e,t,t,(i,o,c)=>{r=r_(c,r);let l=r.length<3;return n.map(u=>{let f=c.dbis[t].get(u,{transaction:i,lazy:l});if(f)return[u,zp.parseRow(f,r)];s.push(u)}).filter(u=>u)})}a(Pv,"batchHashSearch");function Dv(e,t,r,n,s){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(Qp(r),n==null)throw new Error(zt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(zt.IDS_MUST_BE_ITERABLE)}a(Dv,"initializeBatchSearchByHash");function Qp(e){if(!Array.isArray(e))throw e===void 0?new Error(zt.FETCH_ATTRIBUTES_REQUIRED):new Error(zt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Qp,"validateFetchAttributes");function fa(e,t,r){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.SEARCH_VALUE_REQUIRED);if(r?.length>QX)throw new Error(zt.SEARCH_VALUE_TOO_LARGE)}a(fa,"validateComparisonFunctions");function r_(e,t){return t.length===1&&WX.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=da.listDBIs(e)),t}a(r_,"setGetWholeRowAttributes");Lv.exports={searchAll:jX,searchAllToMap:JX,count:t6,countAll:ZX,equals:e6,startsWith:r6,endsWith:n6,contains:Cv,searchByHash:l6,setGetWholeRowAttributes:r_,batchSearchByHash:d6,batchSearchByHashToMap:f6,checkHashExists:u6,iterateDBI:XX,greaterThan:s6,greaterThanEqual:i6,lessThan:o6,lessThanEqual:a6,between:c6}});var mu=C((Sbe,Bv)=>{var Mv=require("lodash"),vv=ot(),Ge=require("joi"),_6=ie(),{hdb_schema_table:n_,checkValidTable:Uv,hdb_table:xv,hdb_database:jp}=bi(),{handleHDBError:h6,hdb_errors:m6}=he(),{getDatabases:p6}=(xe(),P(ct)),{HTTP_STATUS_CODES:E6}=m6,g6=Ge.object({database:jp,schema:jp,table:xv,search_attribute:n_,search_value:Ge.any().required(),get_attributes:Ge.array().min(1).items(Ge.alternatives(n_,Ge.object())).optional(),desc:Ge.bool(),limit:Ge.number().integer().min(1),offset:Ge.number().integer().min(0)}),S6=Ge.object({database:jp,schema:jp,table:xv,operator:Ge.string().valid("and","or").default("and").lowercase(),offset:Ge.number().integer().min(0),limit:Ge.number().integer().min(1),get_attributes:Ge.array().min(1).items(Ge.alternatives(n_,Ge.object())).optional(),sort:Ge.object({attribute:Ge.alternatives(n_,Ge.array().min(1)),descending:Ge.bool().optional()}).optional(),conditions:Ge.array().min(1).items(Ge.alternatives(Ge.object({operator:Ge.string().valid("and","or").default("and").lowercase(),conditions:Ge.array()}),Ge.object({search_attribute:Ge.alternatives(n_,Ge.array().min(1)),search_type:Ge.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:Ge.when("search_type",{switch:[{is:"equals",then:Ge.any()},{is:"between",then:Ge.array().items(Ge.alternatives([Ge.string(),Ge.number()])).length(2)}],otherwise:Ge.alternatives(Ge.string(),Ge.number())}).required()}))).required()});Bv.exports=function(e,t){let r=null;switch(t){case"value":r=vv.validateBySchema(e,g6);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(Uv("database",e.schema)),i(Uv("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(o=>typeof o=="string"||typeof o=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(o=>typeof o=="string"||typeof o=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),s&&(r=new Error(s.trim()));break;case"conditions":r=vv.validateBySchema(e,S6);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=_6.checkGlobalSchemaTable(e.schema,e.table);if(s)return h6(new Error,s,E6.NOT_FOUND);let o=p6()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.search_attribute);let l=a(f=>{for(let d=0,_=f.conditions.length;d<_;d++){let h=f.conditions[d];h.conditions?l(h):c.push(h.search_attribute)}},"addConditions");t==="conditions"&&l(e);let u=Mv.filter(c,f=>f!=="*"&&!f.startsWith?.("$")&&f.attribute!=="*"&&!Array.isArray(f)&&!f.name&&!Mv.some(o,d=>d===f||d.attribute===f||d.attribute===f.attribute));if(u&&u.length>0){let f=u.join(", ");return f=f.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${f}'`)}}return r}});var _y=C((Abe,Hv)=>{"use strict";var T6=ft(),A6=mu(),{getSchemaPath:R6}=gt();Hv.exports=y6;function y6(e){let t=A6(e,"hashes");if(t)throw t;let r=R6(e.schema,e.table);return T6.openEnvironment(r,e.table)}a(y6,"initialize")});var hy=C((ybe,kv)=>{"use strict";var b6=hu(),O6=_y();kv.exports=N6;async function N6(e){let t=await O6(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return b6.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(N6,"lmdbGetDataByHash")});var pu=C((Obe,Fv)=>{"use strict";var my=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};Fv.exports=my});var qv=C((Ibe,Gv)=>{"use strict";var wbe=pu(),w6=hu(),I6=_y();Gv.exports=C6;async function C6(e){let t=await I6(e),r=global.hdb_schema[e.schema][e.table];return w6.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(C6,"lmdbSearchByHash")});var $s=C((Pbe,$v)=>{"use strict";var py=class{static{a(this,"SearchObject")}constructor(t,r,n,s,i,o,c,l=!1,u=void 0,f=void 0){this.schema=t,this.table=r,this.search_attribute=n,this.search_value=s,this.hash_attribute=i,this.get_attributes=o,this.end_value=c,this.reverse=l,this.limit=u,this.offset=f}};$v.exports=py});var Jp=C((Lbe,Qv)=>{"use strict";var Wr=hu(),P6=ft(),D6=ie(),qe=Ft(),Hc=(k(),P(q)),L6=ao(),Vv=Un().LMDB_ERRORS_ENUM,{getSchemaPath:M6}=gt(),fo=Hc.SEARCH_WILDCARDS;async function v6(e,t,r){let n;e.schema===Hc.SYSTEM_SCHEMA_NAME?n=L6[e.table]:n=global.hdb_schema[e.schema][e.table];let s=zv(e,n.hash_attribute,r,t);return Yv(e,s,n.hash_attribute,r)}a(v6,"prepSearch");async function Yv(e,t,r,n){let s=M6(e.schema,e.table),i=await P6.openEnvironment(s,e.table),o=Wv(i,e,t,r),c=o.transaction||i;if([qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,qe.SEARCH_TYPES.SEARCH_ALL,qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(U6(e,r)===!1){let f=e.search_attribute;if(f===r)return n?Kv(o,()=>!0):o.map(_=>({[r]:_.key}));let d=a(_=>({[r]:_.value,[f]:_.key}),"toObject");return n?Kv(o,d):o.map(d)}let u=e.search_attribute===r?o.map(f=>f.key):o.map(f=>f.value);return n===!0?Wr.batchSearchByHashToMap(c,r,e.get_attributes,u):Wr.batchSearchByHash(c,r,e.get_attributes,u)}a(Yv,"executeSearch");function Wv(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:o,limit:c,offset:l}=t;switch(o=typeof o=="boolean"?o:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case qe.SEARCH_TYPES.EQUALS:s=Wr.equals(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.CONTAINS:s=Wr.contains(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.ENDS_WITH:case qe.SEARCH_TYPES._ENDS_WITH:s=Wr.endsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.STARTS_WITH:case qe.SEARCH_TYPES._STARTS_WITH:s=Wr.startsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return Wr.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return Wr.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case qe.SEARCH_TYPES.SEARCH_ALL:return Wr.searchAll(e,n,t.get_attributes,o,c,l);case qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return Wr.searchAllToMap(e,n,t.get_attributes,o,c,l);case qe.SEARCH_TYPES.BETWEEN:s=Wr.between(e,i,t.search_attribute,t.search_value,t.end_value,o,c,l);break;case qe.SEARCH_TYPES.GREATER_THAN:case qe.SEARCH_TYPES._GREATER_THAN:s=Wr.greaterThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.GREATER_THAN_EQUAL:case qe.SEARCH_TYPES._GREATER_THAN_EQUAL:s=Wr.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.LESS_THAN:case qe.SEARCH_TYPES._LESS_THAN:s=Wr.lessThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.LESS_THAN_EQUAL:case qe.SEARCH_TYPES._LESS_THAN_EQUAL:s=Wr.lessThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;default:return Object.create(null)}return s}a(Wv,"searchByType");function Kv(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(Kv,"createMapFromIterable");function U6(e,t){if(e.get_attributes.length===1&&e.get_attributes[0]==="*")return!0;let r=[e.search_attribute];e.get_attributes.indexOf(t)>=0&&r.push(t);let n=!1;for(let s=0;s<e.get_attributes.length;s++)if(r.indexOf(e.get_attributes[s])<0){n=!0;break}return n}a(U6,"checkToFetchMore");function zv(e,t,r,n){if(D6.isEmpty(n)){let s=e.search_value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),o=s.charAt(s.length-1),c=!1;if(e.search_attribute===t&&(c=!0),fo.indexOf(s)>-1)return r===!0?qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:qe.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(fo[0])<0&&s.indexOf(fo[1])<0)return c===!0?r===!0?qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:qe.SEARCH_TYPES.EQUALS;if(fo.indexOf(i)>=0&&fo.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),qe.SEARCH_TYPES.CONTAINS;if(fo.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),qe.SEARCH_TYPES.ENDS_WITH;if(fo.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),qe.SEARCH_TYPES.STARTS_WITH;if(s.includes(fo[0])||s.includes(fo[1]))return qe.SEARCH_TYPES.EQUALS;throw new Error(Vv.UNKNOWN_SEARCH_TYPE)}else switch(n){case Hc.VALUE_SEARCH_COMPARATORS.BETWEEN:return qe.SEARCH_TYPES.BETWEEN;case Hc.VALUE_SEARCH_COMPARATORS.GREATER:return qe.SEARCH_TYPES.GREATER_THAN;case Hc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return qe.SEARCH_TYPES.GREATER_THAN_EQUAL;case Hc.VALUE_SEARCH_COMPARATORS.LESS:return qe.SEARCH_TYPES.LESS_THAN;case Hc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return qe.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(Vv.UNKNOWN_SEARCH_TYPE)}}a(zv,"createSearchTypeFromSearchObject");Qv.exports={executeSearch:Yv,createSearchTypeFromSearchObject:zv,prepSearch:v6,searchByType:Wv}});var Jv=C((Ube,jv)=>{"use strict";var vbe=$s(),x6=mu(),B6=ie(),H6=(k(),P(q)),k6=Jp();jv.exports=F6;function F6(e,t){if(!B6.isEmpty(t)&&H6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=x6(e,"value");if(n)throw n;return k6.prepSearch(e,t,!0)}a(F6,"lmdbGetDataByValue")});var s_=C((Hbe,Xv)=>{"use strict";var Bbe=$s(),G6=mu(),q6=ie(),$6=(k(),P(q)),V6=Jp();Xv.exports=K6;async function K6(e,t){if(!q6.isEmpty(t)&&$6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=G6(e,"value");if(n)throw n;return V6.prepSearch(e,t,!1)}a(K6,"lmdbSearchByValue")});var eU=C((Gbe,Zv)=>{"use strict";var Fbe=Ft(),Ey=class{static{a(this,"SearchByConditionsObject")}constructor(t,r,n,s,i=void 0,o=void 0,c="and"){this.schema=t,this.table=r,this.get_attributes=n,this.limit=i,this.offset=o,this.conditions=s,this.operator=c}},gy=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},Sy=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};Zv.exports={SearchByConditionsObject:Ey,SearchCondition:gy,SortAttribute:Sy}});var iU=C((Kbe,sU)=>{"use strict";var $be=eU().SearchByConditionsObject,Y6=$s(),W6=mu(),Ty=hu(),Xp=Ft(),{Resource:Vbe}=(na(),P(qA)),nU=Jp(),z6=fy(),Q6=require("lodash"),{getSchemaPath:j6}=gt(),tU=ft(),{handleHDBError:J6,hdb_errors:X6}=he(),{HTTP_STATUS_CODES:Z6}=X6,e8=1e8;sU.exports=t8;async function t8(e){let t=W6(e,"conditions");if(t)throw J6(t,t.message,Z6.BAD_REQUEST,void 0,void 0,!0);e.operator=e.operator?e.operator.toLowerCase():void 0,e.offset=Number.isInteger(e.offset)?e.offset:0;let r=j6(e.schema,e.table),n=await tU.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)tU.openDBI(n,u.search_attribute);let i=Q6.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let f=u.search_type;f===Xp.SEARCH_TYPES.EQUALS?u.estimated_count=Ty.count(n,u.search_attribute,u.search_value):f===Xp.SEARCH_TYPES.CONTAINS||f===Xp.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=e8}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await rU(o,e,i[0],s.hash_attribute),l;if(!e.operator||e.operator.toLowerCase()==="and"){let u=n.dbis[s.hash_attribute],f=i.slice(1).map(nU.filterByType),d=f.length,_=Ty.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(h=>u.get(h,{transaction:o,lazy:!0})),d>0&&(l=l.filter(h=>{for(let m=0;m<d;m++)if(!f[m](h))return!1;return!0})),(e.offset||e.limit!==void 0)&&(l=l.slice(e.offset,e.limit!==void 0?(e.offset||0)+e.limit:void 0)),l=l.map(h=>z6.parseRow(h,_))}else{for(let d=1;d<i.length;d++){let _=i[d],h=await rU(o,e,_,s.hash_attribute);c=c.concat(h)}let u=new Set,f=e.offset||0;c=c.filter(d=>u.has(d)?!1:(u.add(d),!0)).slice(f,e.limit&&e.limit+f),l=Ty.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(t8,"lmdbSearchByConditions");async function rU(e,t,r,n){let s=new Y6(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===Xp.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,nU.searchByType(e,s,i,n).map(o=>o.value)}a(rU,"executeConditionSearch")});var i_=C((Wbe,oU)=>{"use strict";var r8=(k(),P(q)).OPERATIONS_ENUM,Ay=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=r8.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};oU.exports=Ay});var Ry=C((Qbe,hU)=>{"use strict";var uU=$s(),dU=i_(),fU=s_(),_U=e_(),Sn=(k(),P(q)),aU=ie(),cU=ft(),{getTransactionAuditStorePath:n8,getSchemaPath:s8}=gt(),lU=ee();hU.exports=i8;async function i8(e){try{if(aU.isEmpty(global.hdb_schema[e.schema])||aU.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await o8(e),await a8(e);let t=s8(e.schema,e.table);try{await cU.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")lU.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=n8(e.schema,e.table);await cU.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")lU.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(i8,"lmdbDropTable");async function o8(e){let t=new uU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await fU(t)),n=[];for(let i=0;i<r.length;i++){let o=r[i];n.push(o.id)}if(n.length===0)return;let s=new dU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await _U(s)}a(o8,"deleteAttributesFromSystem");async function a8(e){let t=new uU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await fU(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let o=r[i];o.name===e.table&&o.schema===e.schema&&(n=o)}if(!n)throw new Error(`${e.schema}.${e.table} was not found`);let s=new dU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await _U(s)}catch(i){throw i}}a(a8,"dropTableFromSystem")});var pU=C((Jbe,mU)=>{"use strict";var c8=require("fs-extra"),l8=$s(),u8=pu(),d8=i_(),f8=Ry(),_8=e_(),h8=hy(),m8=s_(),_o=(k(),P(q)),{getSchemaPath:p8}=gt(),{handleHDBError:E8,hdb_errors:g8}=he(),{HDB_ERROR_MSGS:S8,HTTP_STATUS_CODES:T8}=g8;mU.exports=A8;async function A8(e){let t;try{t=await R8(e.schema);let r=new l8(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await m8(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await f8(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new d8(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await _8(s);let i=p8(t);await c8.remove(i)}catch(r){throw r}}a(A8,"lmdbDropSchema");async function R8(e){let t=new u8(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await h8(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw E8(new Error,S8.SCHEMA_NOT_FOUND(e),T8.NOT_FOUND,void 0,void 0,!0);return n}a(R8,"validateDropSchema")});var o_=C((Zbe,EU)=>{"use strict";var yy=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};EU.exports=yy});var Oy=C((rOe,gU)=>{"use strict";var y8=require("fs-extra"),Zp=ft(),{getTransactionAuditStorePath:b8}=gt(),by=Ft(),tOe=o_();gU.exports=O8;async function O8(e){let t;try{let r=b8(e.schema,e.table);await y8.mkdirp(r),t=await Zp.createEnvironment(r,e.table,!0)}catch(r){throw r.message=`unable to create transactions audit environment for ${e.schema}.${e.table} due to: ${r.message}`,r}try{Zp.createDBI(t,by.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),Zp.createDBI(t,by.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),Zp.createDBI(t,by.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}a(O8,"createTransactionsAuditEnvironment")});var AU=C((iOe,TU)=>{"use strict";var Ny=(k(),P(q)),SU=ft(),N8=vc(),{getSystemSchemaPath:w8,getSchemaPath:I8}=gt(),sOe=ao(),C8=Vp(),wy=$p(),P8=ee(),D8=Oy();TU.exports=L8;async function L8(e,t){let r=I8(t.schema,t.table),n=new wy(t.schema,t.table,Ny.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new wy(t.schema,t.table,Ny.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new wy(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await SU.createEnvironment(r,t.table),e!==void 0){let o=await SU.openEnvironment(w8(),Ny.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await N8.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_table_attributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await Iy(n),await Iy(s),await Iy(i)}await D8(t)}catch(o){throw o}}a(L8,"lmdbCreateTable");async function Iy(e){try{await C8(e)}catch(t){P8.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Iy,"createAttribute")});var yU=C((aOe,RU)=>{"use strict";var M8=Jf(),v8=Sf(),U8=Kp(),a_=(k(),P(q)),x8=vc().updateRecords,B8=ft(),{getSchemaPath:H8}=gt(),k8=Xf(),F8=ee();RU.exports=G8;async function G8(e){try{let{schema_table:t,attributes:r}=M8(e);v8(e,r,t.hash_attribute),e.schema!==a_.SYSTEM_SCHEMA_NAME&&(r.includes(a_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(a_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(a_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(a_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await U8(e.hdb_auth_header,t,r),s=H8(e.schema,e.table),i=await B8.openEnvironment(s,e.table),o=await x8(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await k8(e,o)}catch(c){F8.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(G8,"lmdbUpdateRecords")});var OU=C((lOe,bU)=>{"use strict";var q8=(k(),P(q)).OPERATIONS_ENUM,Cy=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=q8.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};bU.exports=Cy});var wU=C((fOe,NU)=>{"use strict";var dOe=OU(),$8=Jf(),V8=Sf(),K8=Kp(),c_=(k(),P(q)),Y8=vc().upsertRecords,W8=ft(),{getSchemaPath:z8}=gt(),Q8=Xf(),j8=ee(),{handleHDBError:J8,hdb_errors:X8}=he();NU.exports=Z8;async function Z8(e){let t;try{t=$8(e)}catch(l){throw J8(l,l.message,X8.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:n}=t;V8(e,n,r.hash_attribute),e.schema!==c_.SYSTEM_SCHEMA_NAME&&(n.includes(c_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(c_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(c_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(c_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await K8(e.hdb_auth_header,r,n),i=z8(e.schema,e.table),o=await W8.openEnvironment(i,e.table),c=await Y8(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await Q8(e,c)}catch(l){j8.error(`unable to write transaction due to ${l.message}`)}return{written_hashes:c.written_hashes,schema_table:r,new_attributes:s,txn_time:c.txn_time}}a(Z8,"lmdbUpsertRecords")});var CU=C((hOe,IU)=>{"use strict";var Py=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};IU.exports=Py});var DU=C((pOe,PU)=>{"use strict";var Dy=class{static{a(this,"DeleteAuditLogsBeforeResults")}constructor(t=void 0,r=void 0,n=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=n}};PU.exports=Dy});var vU=C((SOe,MU)=>{"use strict";var Ly=ft(),{getTransactionAuditStorePath:eZ}=gt(),gOe=CU(),l_=Ft(),tZ=ie(),LU=DU(),rZ=require("util").promisify,nZ=rZ(setTimeout),sZ=1e4,iZ=100;MU.exports=oZ;async function oZ(e){let t=eZ(e.schema,e.table),r=await Ly.openEnvironment(t,e.table,!0),n=Ly.listDBIs(r);Ly.initializeDBIs(r,l_.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new LU;do s=await aZ(r,e.timestamp),i.start_timestamp===void 0&&(i.start_timestamp=s.start_timestamp),s.end_timestamp!==void 0&&(i.end_timestamp=s.end_timestamp),i.transactions_deleted+=s.transactions_deleted,await nZ(iZ);while(s.transactions_deleted>0);return i}a(oZ,"deleteAuditLogsBefore");async function aZ(e,t){let r=new LU;try{let n=e.dbis[l_.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let{key:i,value:o}of n.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),s=n.remove(i);let c=o[l_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];tZ.isEmpty(c)||(s=e.dbis[l_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[l_.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>sZ)break}return await s,r}catch(n){throw n}}a(aZ,"deleteTransactions")});var xU=C((AOe,UU)=>{"use strict";var My=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};UU.exports=My});var HU=C((bOe,BU)=>{"use strict";var cZ=$s(),lZ=i_(),yOe=xU(),Oi=(k(),P(q)),uZ=ie(),vy=ft(),dZ=ao(),fZ=s_(),_Z=e_(),{getSchemaPath:hZ}=gt();BU.exports=mZ;async function mZ(e,t=!0){let r;e.schema===Oi.SYSTEM_SCHEMA_NAME?r=dZ[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await EZ(e),s=hZ(e.schema,e.table),i=await vy.openEnvironment(s,e.table);return t===!0&&await pZ(e,i,r.hash_attribute),vy.dropDBI(i,e.attribute),n}a(mZ,"lmdbDropAttribute");async function pZ(e,t,r){let n=vy.openDBI(t,r),s,i=e.attribute;for(let{key:o,value:c,version:l}of n.getRange({start:!1,versions:!0})){let u={};for(let f in c)f!==i&&(u[f]=c[f]);s=t.dbis[r].put(o,u,l)}await s}a(pZ,"removeAttributeFromAllObjects");async function EZ(e){let t=new cZ(Oi.SYSTEM_SCHEMA_NAME,Oi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await fZ(t)).filter(o=>o[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(uZ.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new lZ(Oi.SYSTEM_SCHEMA_NAME,Oi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return _Z(i)}a(EZ,"dropAttributeFromSystem")});var VU=C((wOe,$U)=>{"use strict";var Uy=ft(),Eu=Ft(),NOe=un(),xy=(k(),P(q)),kU=ie(),{getTransactionAuditStorePath:gZ}=gt(),SZ=hu(),eE=du(),TZ=ee();$U.exports=AZ;async function AZ(e){let t=gZ(e.schema,e.table),r=await Uy.openEnvironment(t,e.table,!0),n=Uy.listDBIs(r);Uy.initializeDBIs(r,Eu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case xy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return FU(r,e.search_values);case xy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,yZ(r,e.search_values,s);case xy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return RZ(r,e.search_values);default:return FU(r)}}a(AZ,"readAuditLog");function FU(e,t=[0,Date.now()]){kU.isEmpty(t[0])&&(t[0]=0),kU.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[Eu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],n;for(let s of r.getKeys({start:t[1]}))if(s!==t[1]){n=s;break}return r.getRange({start:t[0],end:n}).map(({value:s})=>Object.assign(new eE,s))}a(FU,"searchTransactionsByTimestamp");function RZ(e,t=[]){let r=new Map;for(let n=0;n<t.length;n++){let s=t[n],i=[];for(let o of e.dbis[Eu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,qU(e,i))}return Object.fromEntries(r)}a(RZ,"searchTransactionsByUsername");function yZ(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],f=SZ.equals(e,Eu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Eu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let{value:d}of f){let _=Number(d);n.has(_)?n.get(_).push(u.toString()):n.set(_,[u.toString()])}}let s=Array.from(n.keys()),i=qU(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,f=n.get(u);GU(l,"records",r,f,o),GU(l,"original_records",r,f,o)}return Object.fromEntries(o)}a(yZ,"searchTransactionsByHashValues");function GU(e,t,r,n,s){let i=e.timestamp;if(e[t])for(let o=0;o<e[t].length;o++){let c=e[t][o],l=c[r].toString();if(n.indexOf(l)>=0)if(s.has(l)){let u=s.get(l),f=u[u.length-1];if(f.timestamp===i)f[t]=[c];else{let d=new eE(e.operation,e.user_name,i,void 0);d[t]=[c],u.push(d)}}else{let u=new eE(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(GU,"loopRecords");function qU(e,t){let r=[];try{let n=e.dbis[Eu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let s=0;s<t.length;s++)try{let i=n.get(t[s]);if(i){let o=Object.assign(new eE,i);r.push(o)}}catch(i){TZ.warn(i)}return r}catch(n){throw n}}a(qU,"batchSearchTransactions")});var YU=C((DOe,KU)=>{"use strict";var{getSchemaPath:COe}=gt(),POe=ft(),{database:bZ}=(xe(),P(ct));KU.exports={writeTransaction:OZ};async function OZ(e,t,r){return bZ({database:e,table:t}).transaction(r)}a(OZ,"writeTransaction")});var jU=C((MOe,QU)=>{"use strict";var{getSchemaPath:WU}=gt(),zU=ft();QU.exports={flush:NZ,resetReadTxn:wZ};async function NZ(e,t){return(await zU.openEnvironment(WU(e,t),t.toString())).flushed}a(NZ,"flush");async function wZ(e,t){try{(await zU.openEnvironment(WU(e,t),t.toString())).resetReadTxn()}catch{}}a(wZ,"resetReadTxn")});var e0=C((UOe,ZU)=>{"use strict";var{Readable:IZ}=require("stream"),{getDatabases:CZ}=(xe(),P(ct)),{readSync:PZ,openSync:DZ,createReadStream:JU}=require("fs"),{open:LZ}=require("lmdb"),XU=Kf(),MZ=Yf(),{AUDIT_STORE_OPTIONS:vZ}=(Ai(),P(GL)),{INTERNAL_DBIS_NAME:UZ,AUDIT_STORE_NAME:xZ}=Ft();ZU.exports=HZ;var By=32768,BZ=100;async function HZ(e){let t=e.database||e.schema||"data",r=CZ()[t],n=new Date().toISOString(),s=e.tables||e.table&&[e.table];if(s){let u=r[s[0]];if(!u)throw new Error(`Can not find table ${s[0]}`);let f=u.dbisDB,d=LZ({noSync:!0,maxDbs:MZ.MAX_DBS}),_,h=d.openDB(UZ,new XU(!1)),m=f.useReadTransaction(),S=0,g=a(async function(E,T){T.encoding="binary",T.encoder=void 0;let N=d.openDB(E,T),M=f.openDB(E,T);for(let{key:H,version:X,value:W}of M.getRange({start:null,transaction:m,versions:M.useVersions}))_=N.put(H,W,X),S++%BZ===0&&(await new Promise($=>setTimeout($,20)),m.openTimer&&(m.openTimer=0))},"copyDatabase");for(let{key:E,value:T}of f.getRange({transaction:m,start:!1}))if(s.some(N=>E.startsWith?.(N+"/"))){h.put(E,T);let[,N]=E.split("/"),M=!N,H=new XU(!M,M);await g(E,H)}e.include_audit&&await g(xZ,{...vZ}),await _;let R=JU(d.path);return R.headers=l(),R.on("close",()=>{m.done(),d.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=DZ(o.path);return o.transaction(()=>{let u=Buffer.alloc(By);PZ(c,u,0,By),o.resetReadTxn();let f=o.useReadTransaction();f.renew();let d=JU(null,{fd:c,start:By}),_=new IZ.from(async function*(){yield u;for await(let h of d)f.openTimer&&(f.openTimer=0),yield h;f.done()}());return _.headers=l(),_});function l(){let u=new Map;return u.set("content-type","application/octet-stream"),u.set("content-disposition",`attachment; filename="${t}"`),u.set("date",n),u}}a(HZ,"getBackup")});var n0=C((BOe,r0)=>{"use strict";var kZ=ee(),{handleHDBError:FZ}=he(),GZ=wM(),qZ=Vp(),$Z=ay(),VZ=pv(),KZ=e_(),YZ=hy(),WZ=qv(),zZ=Jv(),QZ=s_(),jZ=iU(),JZ=pU(),XZ=AU(),ZZ=yU(),e5=wU(),t5=vU(),r5=Ry(),n5=HU(),s5=VU(),i5=YU(),t0=jU(),o5=e0(),Hy=class extends GZ{static{a(this,"LMDBBridge")}async searchByConditions(t){return jZ(t)}async getDataByHash(t){return await YZ(t)}async searchByHash(t){return await WZ(t)}async getDataByValue(t,r){return await zZ(t,r)}async searchByValue(t){return await QZ(t)}async createSchema(t){return await VZ(t)}async dropSchema(t){return await JZ(t)}async createTable(t,r){return await XZ(t,r)}async dropTable(t){return await r5(t)}async createAttribute(t){return await qZ(t)}async createRecords(t){return await $Z(t)}async updateRecords(t){return await ZZ(t)}async upsertRecords(t){try{return await e5(t)}catch(r){throw FZ(r,null,null,kZ.ERR,r)}}async deleteRecords(t){return await KZ(t)}async dropAttribute(t){return await n5(t)}async deleteAuditLogsBefore(t){return await t5(t)}async readAuditLog(t){return await s5(t)}writeTransaction(t,r,n){return i5.writeTransaction(t,r,n)}flush(t,r){return t0.flush(t,r)}resetReadTxn(t,r){return t0.resetReadTxn(t,r)}getBackup(t){return o5(t)}};r0.exports=Hy});function Tn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function sE(e,t){let r=e.prototype,n={},s=t.attributes||t.properties||[];for(let c of s){let l=c.name,u,f;if(c.resolve)f={get(){return c.resolve(this,this.getContext?.())},set(d){return c.set(this,d)},configurable:!0};else{switch(c.type){case"String":u=a(function(d){if(!(typeof d=="string"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a string, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"ID":u=a(function(d){if(!(typeof d=="string"||d?.length>0&&d.every?.(_=>typeof _=="string")||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a string, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Float":case"Number":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="number"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a number, attempt to assign ${_}`);Tn(this)[l]=d},"set");break;case"Int":u=a(function(d){let _=d?.__op__?d.value:d;if(!(_>>0===_||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs((_>>0)-_)<=1)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be an integer between -2147483648 and 2147483647, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Long":u=a(function(d){let _=d?.__op__?d.value:d;if(!(Math.round(_)===d&&Math.abs(_)<=9007199254740992||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs(_)<=9007199254740992)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"BigInt":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="bigint"||d==null&&c.nullable!==!1))if(typeof _=="string"||typeof _=="number")_=BigInt(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be a number, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Boolean":u=a(function(d){if(!(typeof d=="boolean"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a boolean, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Date":u=a(function(d){if(!(d instanceof Date||d==null&&c.nullable!==!1))if(typeof d=="string"||typeof d=="number")d=new Date(d);else throw new qn.ClientError(`${l} must be a Date, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Bytes":u=a(function(d){if(!(d instanceof Uint8Array||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a Buffer or Uint8Array, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Blob":u=a(function(d){if(!(d instanceof gi||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a Blob, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Any":case void 0:u=a(function(d){Tn(this)[l]=d},"set");break;default:u=a(function(d){if(!(typeof d=="object"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be an object, attempt to assign ${d}`);Tn(this)[l]=d},"set")}f={get(){let d=this.getChanges?.();if(d&&l in d){let h=d[l];if(h?.__op__){let m=this.getRecord()?.[l];return h.update(m)}return h}let _=this.getRecord()?.[l];if(_&&typeof _=="object"){let h=ky(_,c);if(h)return d||this._setChanges(d=Object.create(null)),d[l]=h}return _},set:u,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,n[l]=f,(!(l in r)||Object.getOwnPropertyDescriptor(r,l)?.get?.isAttribute)&&Object.defineProperty(r,l,f)}i("getProperty",function(c){let l=n[c];if(l)return l.get.call(this);let u=this.getChanges();return u?.[c]!==void 0?u[c]:this.getRecord()?.[c]}),i("set",function(c,l){let u=n[c];if(u)return u.set.call(this,l);if(t.sealed)throw new qn.ClientError("Can not add a property to a sealed table schema");Tn(this)[c]=l}),i("deleteProperty",function(c){Tn(this)[c]=void 0}),i("toJSON",function(){let c=this.getChanges?.(),l;for(let f in c){l||(l={...this.getRecord()});let d=c[f];if(d?.__op__){let _=l[f];d=d.update(_)}l[f]=d}return Object.keys(this).length>0&&(l||(l={...this.getRecord()}),Object.assign(l,this)),l||this.getRecord()}),r.get||i("get",r.getProperty),r.delete||i("delete",r.deleteProperty),r.then||i("then",null);function i(c,l){Object.defineProperty(r,c,{value:l,configurable:!0})}a(i,"setMethod");let o=r;do{let c=Object.getPrototypeOf(o);if(c===Object.prototype){Object.setPrototypeOf(o,i0);break}o=c}while(o&&o!==i0)}function ky(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends u_{static{a(this,"TrackedObject")}},sE(r,t)),new r(e)):new u_(e);case Array:let n=new rE(e.length,e);for(let s=0,i=e.length;s<i;s++){let o=e[s];o&&typeof o=="object"&&(o=ky(o,t?.elements)),n[s]=o}return n;default:return e}}function iE(e){let t=e.getChanges?.(),r;for(let s in t){r||(r=e.getRecord?{...e.getRecord()}:{});let i=t[s];if(i&&typeof i=="object")if(i.__op__){let o=r[s];i=i.update(o)}else i=iE(i);r[s]=i}return Object.keys(e).length>0&&(r||(r=e.getRecord?{...e.getRecord()}:{}),Object.assign(r,e)),r||e.getRecord?.()||e}function gu(e,t=e.getChanges?.()){let r;if(e.getRecord&&e.constructor===Array&&!Object.isFrozen(e)){r=e;for(let n=0,s=e.length;n<s;n++){let i=e[n];if(i&&typeof i=="object"){let o=gu(i);o!==i&&r===e&&(r=e.slice(0)),i=o}r[n]=i}return Object.freeze(r)}for(let n in t){r||(r={...e.getRecord?.()});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=hR[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=gu(s);r[n]=s}if(!Array.isArray(e))for(let n in e)a5.call(e,n)&&(r||(r={...e.getRecord?.()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?.()??e}function tE(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[kc]||e.length!==t.length)return!0;for(let r=0,n=e.length;r<n;r++){let s=t[r],i=e[r];if(s&&i?.getRecord?.()===s){if(tE(i))return!0}else return!0}}else{let r=e.getChanges?.();if(r&&!t)return!0;for(let n in r){let s=r[n];if(s&&typeof s=="object"){let i=t[n];if(i&&s.getRecord?.()===i){if(tE(s))return!0}else return!0}else return!0}}return!1}var qn,s0,i0,u_,a5,kc,rE,nE,Fy=Re(()=>{qn=v(he());Op();hn();a(Tn,"getChanges");a(sE,"assignTrackedAccessors");s0=Object.prototype,i0=new Proxy({},{get(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(s0[t])return s0[t];let n=r.getChanges?.();if(n&&t in n)return n[t];let s=r.getRecord?.()?.[t];if(s&&typeof s=="object"){let i=ky(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}});a(ky,"trackObject");u_=class{static{a(this,"GenericTrackedObject")}#e;#t;constructor(t){if(t?.getRecord)throw new Error("Can not track an already tracked object, check for circular references");this.#e=t}getRecord(){return this.#e}setRecord(t){this.#e=t}getChanges(){return this.#t}_setChanges(t){this.#t=t}};sE(u_,{});a(iE,"collapseData");a5=Object.prototype.hasOwnProperty;a(gu,"updateAndFreeze");a(tE,"hasChanges");kc=Symbol.for("has-array-changes"),rE=class extends Array{static{a(this,"TrackedArray")}#e;[kc];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[kc]=!0,super.splice(...t)}push(...t){return this[kc]=!0,super.push(...t)}pop(){return this[kc]=!0,super.pop()}unshift(...t){return this[kc]=!0,super.unshift(...t)}shift(){return this[kc]=!0,super.shift()}};rE.prototype.constructor=Array;nE=class{constructor(t){this.value=t}static{a(this,"Addition")}__op__="add";update(t){return(+t||0)+this.value}}});var _0={};Ue(_0,{ResourceBridge:()=>$y});function Vy({get_attributes:e},t){if(e){if(e[0]==="*"){if(t.schemaDefined)return;e=t.attributes.map(r=>r.name)}return e.forceNulls=!0,e}}function a0(e,t){let r=Ni(e),n=Vy(e,r);if(!r)throw new Vs.ClientError(`Table ${e.table} not found`);let s;n&&r.attributes.length-n.length>2&&n.length<5&&(s=!0);let i={user:e.hdb_user,onlyIfCached:e.onlyIfCached,noCacheStore:e.noCacheStore,noCache:e.noCache,replicateFrom:e.replicateFrom},o;It(i,()=>new Promise(u=>o=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],f;try{f=await r.get({id:u,lazy:s,select:n},i),f=f&&iE(f)}catch(d){f={message:d.toString()}}return t?{value:{key:u,value:f}}:{value:f}}else return o(),{done:!0}},return(u){return o(),{value:u,done:!0}},throw(u){return o(),{done:!0}}}}}}function Ni(e){let t=e.database||e.schema||l5,r=Je()[t];if(!r)throw(0,Vs.handleHDBError)(new Error,c5.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function c0(e,t,r){let n=e.length+t.length,s=n===1?"record":"records";return{message:`${e.length} of ${n} ${s} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}async function*l0(e,t,r,n){let s,i=0;for await(let o of e.getHistory(t,r)){let c=o.operation??o.type;c==="put"&&(c="upsert");let{id:l,version:u,value:f}=o;if(s?.timestamp===u)s.hash_values.push(l),s.records.push(f);else{if(s&&(yield s,i++,n&&n<=i)){s=void 0;break}s={operation:c,user_name:o.user,timestamp:u,hash_values:[l],records:[f]}}}s&&(yield s)}var u0,oE,Vs,d0,Gy,qy,f0,c5,l5,u5,d5,o0,$y,h0=Re(()=>{"use strict";u0=v(n0()),oE=v(mu()),Vs=v(he());xe();d0=v(Jf());k();Gy=v(uo()),qy=v(qs()),f0=v(ie());mc();Fy();({HDB_ERROR_MSGS:c5}=Vs.hdb_errors),l5="data",u5=1e4,d5=10,$y=class extends u0.default{static{a(this,"ResourceBridge")}constructor(t){super(t),o0=this}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);for(let o of t.conditions||[])o?.attribute!==void 0&&(o.search_attribute=o.attribute),o?.comparator!==void 0&&(o.search_type=o.comparator),o?.value!==void 0&&(o.search_value=o.value);let r=(0,oE.default)(t,"conditions");if(r)throw(0,Vs.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=Ni(t);if(!n)throw new Vs.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(o){return o.conditions?(o.conditions=o.conditions.map(i),o):{attribute:o.search_attribute??o.attribute,comparator:o.search_type??o.comparator,value:o.search_value!==void 0?o.search_value:o.value}}return a(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:Vy(t,n),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let o of n)o.is_primary_key?(o.isPrimaryKey=!0,delete o.is_primary_key):o.name===i&&i&&(o.isPrimaryKey=!0);else{if(!i)throw new Vs.ClientError("A primary key must be specified with a `primary_key` property or with `attributes`");n=[{name:i,isPrimaryKey:!0},{name:"__createdtime__",indexed:!0},{name:"__updatedtime__",indexed:!0}]}_t({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await Ni(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=Ni(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=a((o,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(o,l,()=>r.primaryStore.put(o,c,l)).then(u=>{if(!u){let{value:f,version:d}=r.primaryStore.getEntry(o);return i(o,f,d)}})),"deleteRecord");for(let{key:o,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(o,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){Ni(t).dropTable()}createSchema(t){return Su({database:t.schema,table:null}),Gy.signalSchemaChange(new qy.SchemaEventMsg(process.pid,Yt.CREATE_SCHEMA,t.schema))}async dropSchema(t){await Ky(t.schema),Gy.signalSchemaChange(new qy.SchemaEventMsg(process.pid,Yt.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,o0.upsertRecords(t)}async upsertRecords(t){let{schema_table:r,attributes:n}=(0,d0.default)(t),s,i=Je()[t.schema][t.table],o={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(o.replicateTo=t.replicateTo),t.replicatedConfirmation&&(o.replicatedConfirmation=t.replicatedConfirmation),It(o,async c=>{if(!i.schemaDefined){s=[];for(let f of n)i.attributes.find(_=>_.name==f)||s.push(f);s.length>0&&await i.addAttributes(s.map(f=>({name:f,indexed:!0})))}let l=[],u=[];for(let f of t.records){let d=f[i.primaryKey],_=d!=null&&await i.get(d,o);if(t.requires_existing&&!_||t.requires_no_existing&&_){u.push(f[i.primaryKey]);continue}_&&(_=iE(_));for(let h in f)if(Object.prototype.hasOwnProperty.call(f,h)){let m=f[h];if(typeof m=="function")try{let S=m([[_]]);Array.isArray(S)&&(m=S[0].func_val,f[h]=m)}catch(S){throw S.message+="Trying to set key "+h+" on object"+JSON.stringify(f),S}}if(_)for(let h in _)Object.prototype.hasOwnProperty.call(f,h)||(f[h]=_[h]);await(d==null?i.create(f,o):i.put(f,o)),l.push(f[i.primaryKey])}return{txn_time:c.timestamp,written_hashes:l,new_attributes:s,skipped_hashes:u}})}async deleteRecords(t){let r=Je()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),It(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),o=[],c=[];for(let l of i)await r.delete(l,n)?o.push(l):c.push(l);return c0(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=Je()[t.schema][t.table];if(!r.createdTimeProperty)throw new Vs.ClientError("Table must have a '__createdtime__' attribute or @createdTime timestamp defined to perform this operation");let n=await r.search({conditions:[{attribute:r.createdTimeProperty.name,value:Date.parse(t.date),comparator:xm.LESS}]}),s=!1,i=[],o=[],c=0,l=[],u=a(async()=>{let f=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...f.deleted_hashes),o.push(...f.skipped_hashes),await(0,f0.async_set_timeout)(d5),l=[],s=!0},"chunkDelete");for await(let f of n)l.push(f[r.primaryKey]),c++,c%u5===0&&await u();return l.length>0&&await u(),s?c0(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,oE.default)(t,"hashes");if(r)throw r;return a0(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of a0(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&AA[r]===void 0)throw new Error(`Value search comparator - ${r} - is not valid`);t.select!==void 0&&(t.get_attributes=t.select),t.attribute!==void 0&&(t.search_attribute=condition.attribute),t.value!==void 0&&(t.search_value=condition.value);let n=(0,oE.default)(t,"value");if(n)throw n;let s=Ni(t);if(!s)throw new Vs.ClientError(`Table ${t.table} not found`);let i=t.search_value;i.includes?.("*")&&(i.startsWith("*")?i.endsWith("*")?i!=="*"&&(r="contains",i=i.slice(1,-1)):(r="ends_with",i=i.slice(1)):i.endsWith("*")&&(r="starts_with",i=i.slice(0,-1))),r===xm.BETWEEN&&(i=[i,t.end_value]);let o=i==="*"?[]:[{attribute:t.search_attribute,value:i,comparator:r}];return s.search({conditions:o,allowFullScan:!0,limit:t.limit,offset:t.offset,reverse:t.reverse,sort:t.sort,select:Vy(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=Ni(t);t.get_attributes&&!t.get_attributes.includes(s.primaryKey)&&t.get_attributes[0]!=="*"&&t.get_attributes.push(s.primaryKey);for await(let i of this.searchByValue(t,r))n.set(i[s.primaryKey],i);return n}resetReadTxn(t,r){Ni({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return Ni(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=Ni(t),n={};switch(t.search_type){case Bm.HASH_VALUE:for(let i of t.search_values)n[i]=(await r.getHistoryOfRecord(i)).map(o=>{let c=o.operation??o.type;return c==="put"&&(c="upsert"),{operation:c,timestamp:o.version,user_name:o.user,hash_values:[i],records:[o.value]}});return n;case Bm.USERNAME:let s=t.search_values;for await(let i of l0(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n;default:return l0(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(Vy,"getSelect");a(a0,"getRecords");a(Ni,"getTable");a(c0,"createDeleteResponse");a(l0,"groupRecordsInHistory")});var $n=C((zOe,m0)=>{"use strict";var{ResourceBridge:f5}=(h0(),P(_0)),_5=le();_5.initSync();var aE;function h5(){return aE||(aE=new f5,aE)}a(h5,"getBridge");m0.exports=h5()});var S0=C((jOe,g0)=>{"use strict";var p0=require("lodash"),d_=require("mathjs"),m5=require("jsonata"),E0=ie();g0.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?p0.uniqWith(e,p0.isEqual):e,"distinct_array"),searchJSON:p5,mad:f_.bind(null,d_.mad),mean:f_.bind(null,d_.mean),mode:f_.bind(null,d_.mode),prod:f_.bind(null,d_.prod),median:f_.bind(null,d_.median)};function f_(e,t,r,n){return n===1?t==null?[]:[t]:n===2?(t!=null&&r.push(t),r):r!=null&&r.length>0?e(r):null}a(f_,"aggregateFunction");function p5(e,t){if(typeof e!="string"||e.length===0)throw new Error("search json expression must be a non-empty string");let r="__"+e+"__";if(E0.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),E0.isEmpty(this.__ala__.res[r])){let n=m5(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(p5,"searchJSON")});var A0=C((XOe,T0)=>{"use strict";var er=require("moment"),Yy="YYYY-MM-DDTHH:mm:ss.SSSZZ";er.suppressDeprecationWarnings=!0;T0.exports={current_date:a(()=>er().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>er().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return er(e).utc().format("YYYY");case"month":return er(e).utc().format("MM");case"day":return er(e).utc().format("DD");case"hour":return er(e).utc().format("HH");case"minute":return er(e).utc().format("mm");case"second":return er(e).utc().format("ss");case"millisecond":return er(e).utc().format("SSS");default:break}},"extract"),date:a(e=>er(e).utc().format(Yy),"date"),date_format:a((e,t)=>er(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>er(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>er(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=er(e).utc(),s=er(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>er().utc().valueOf(),"now"),get_server_time:a(()=>er().format(Yy),"get_server_time"),offset_utc:a((e,t)=>er(e).utc().utcOffset(t).format(Yy),"offset_utc")}});var O0=C((eNe,b0)=>{"use strict";var E5=require("@turf/area"),g5=require("@turf/length"),S5=require("@turf/circle"),T5=require("@turf/difference"),A5=require("@turf/distance"),R5=require("@turf/boolean-contains"),y5=require("@turf/boolean-equal"),b5=require("@turf/boolean-disjoint"),O5=require("@turf/helpers"),R0=(k(),P(q)),Ke=ie(),ho=ee();b0.exports={geoArea:N5,geoLength:w5,geoCircle:I5,geoDifference:C5,geoDistance:y0,geoNear:P5,geoContains:D5,geoEqual:L5,geoCrosses:M5,geoConvert:v5};function N5(e){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return E5.default(e)}catch(t){return ho.trace(t,e),NaN}}a(N5,"geoArea");function w5(e,t){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return g5.default(e,{units:t||"kilometers"})}catch(r){return ho.trace(r,e),NaN}}a(w5,"geoLength");function I5(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return S5.default(e,t,{units:r||"kilometers"})}catch(n){return ho.trace(n,e,t),NaN}}a(I5,"geoCircle");function C5(e,t){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return T5(e,t)}catch(r){return ho.trace(r,e,t),NaN}}a(C5,"geoDifference");function y0(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return A5.default(e,t,{units:r||"kilometers"})}catch(n){return ho.trace(n,e,t),NaN}}a(y0,"geoDistance");function P5(e,t,r,n){if(Ke.isEmpty(e)||Ke.isEmpty(t))return!1;if(Ke.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return y0(e,t,n)<=r}catch(s){return ho.trace(s,e,t),!1}}a(P5,"geoNear");function D5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return R5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(D5,"geoContains");function L5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return y5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(L5,"geoEqual");function M5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return!b5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(M5,"geoCrosses");function v5(e,t,r){if(Ke.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ke.isEmpty(t))throw new Error("geo_type is required");if(Ke.isEmpty(R0.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(R0.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ke.autoCastJSON(e)),O5[t](e,r)}a(v5,"geoConvert")});var cE=C((rNe,N0)=>{var Fc=S0(),Vn=A0(),wi=O0();N0.exports=e=>{e.aggr.mad=e.aggr.MAD=Fc.mad,e.aggr.mean=e.aggr.MEAN=Fc.mean,e.aggr.mode=e.aggr.MODE=Fc.mode,e.aggr.prod=e.aggr.PROD=Fc.prod,e.aggr.median=e.aggr.MEDIAN=Fc.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Fc.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Fc.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=Vn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=Vn.current_time,e.fn.extract=e.fn.EXTRACT=Vn.extract,e.fn.date=e.fn.DATE=Vn.date,e.fn.date_format=e.fn.DATE_FORMAT=Vn.date_format,e.fn.date_add=e.fn.DATE_ADD=Vn.date_add,e.fn.date_sub=e.fn.DATE_SUB=Vn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=Vn.date_diff,e.fn.now=e.fn.NOW=Vn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=Vn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=Vn.get_server_time,e.fn.getdate=e.fn.GETDATE=Vn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=Vn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=wi.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=wi.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=wi.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=wi.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=wi.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=wi.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=wi.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=wi.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=wi.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=wi.geoNear}});var P0=C((nNe,C0)=>{"use strict";var __=require("lodash"),An=require("alasql");An.options.cache=!1;var U5=cE(),w0=require("clone"),lE=require("recursive-iterator"),ke=ee(),Xe=ie(),Tu=$n(),x5=(k(),P(q)),{hdb_errors:B5}=he(),{getDatabases:I0}=(xe(),P(ct)),H5="IS NULL",Ks="There was a problem performing this search. Please check the logs and try again.";U5(An);var Wy=class{static{a(this,"SQLSearch")}constructor(t,r){if(Xe.isEmpty(t))throw ke.error("AST statement for SQL select process cannot be empty"),"statement cannot be null";this.statement=t,this.columns={},this.all_table_attributes=r,this.fetch_attributes=[],this.exact_search_values={},this.comparator_search_values={},this.tables=[],this.data={},this.has_aggregator=!1,this.has_ordinal=!1,this.has_outer_join=!1,this._getColumns(),this._getTables(),this._conditionsToFetchAttributeValues(),this._setAliasesForColumns(),Xe.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!Xe.isEmptyOrZeroLength(n))return ke.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw ke.error("Error thrown from checkEmptySQL in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{let n=await this._getFetchAttributeValues();if(n)return n}catch(n){throw ke.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),ke.error(n),new Error(Ks)}if(Object.keys(this.data).length===0)return ke.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(n){throw ke.error("Error thrown from processJoins in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(n){throw ke.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{return t=await this._finalSQL(),t}catch(n){throw ke.error("Error thrown from finalSQL in SQLSearch class method search."),ke.error(n),new Error(Ks)}}_getColumns(){let t=new lE(this.statement);for(let{node:r,path:n}of t)r&&r.columnid&&(this.columns[n[0]]||(this.columns[n[0]]=[]),this.columns[n[0]].push(w0(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=__.uniqBy(t,r=>[r.databaseid,r.tableid,r.as].join()),this.tables.forEach(r=>{let n=`${r.databaseid}_${r.as?r.as:r.tableid}`;this.data[n]={},this.data[n].__hash_name=I0()[r.databaseid][r.tableid].primaryKey,this.data[n].__merged_data={},this.data[n].__merged_attributes=[],this.data[n].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(Xe.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new lE(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!Xe.isEmpty(r)&&r.right)if(Xe.isNotEmptyAndHasValue(r.right.value)){let n=Xe.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new An.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=Xe.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new An.yy.LogicValue({value:i}):n instanceof An.yy.StringValue&&Xe.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new An.yy.NumValue({value:i}))});if(t){ke.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new lE(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let n=new Set,s=r.left.columnid?r.left:r.right,i=this._findColumn(s);if(!i)continue;let o=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!Xe.isEmpty(x5.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(Xe.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(Xe.isEmptyOrZeroLength(r.left.columnid)||Xe.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[o].ignore=!0,this.comparator_search_values[o].comparators=[];continue}this.comparator_search_values[o].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(Xe.isEmpty(this.exact_search_values[o])&&(this.exact_search_values[o]={ignore:!1,values:new Set}),!this.exact_search_values[o].ignore){let c=!1;switch(r.op){case"=":!Xe.isEmpty(r.right.value)||!Xe.isEmpty(r.left.value)?n.add(Xe.isEmpty(r.right.value)?r.left.value:r.right.value):c=!0;break;case"IN":let l=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<l.length;u++)if(l[u].value)n.add(l[u].value);else{c=!0;break}break;default:c=!0;break}this.exact_search_values[o].ignore=c,c?this.exact_search_values[o].values=new Set:this.exact_search_values[o].values=new Set([...this.exact_search_values[o].values,...n])}}}_setAliasesForColumns(){if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&Xe.isEmptyOrZeroLength(this.statement.from)&&Xe.isEmptyOrZeroLength(this.columns.columns))return;let t=[],r={};this.statement.columns.forEach((n,s)=>{if(n.columnid==="*"){t.push(s);return}if(n.aggregatorid&&(this.has_aggregator=!0),!n.aggregatorid&&!n.funcid)if(n.as_orig=n.as?n.as:n.columnid,this.statement.joins)if(r[n.as_orig]>=0){let i=r[n.as_orig]+1;n.as=`[${n.as_orig+i}]`,r[n.as_orig]=i}else n.as=`[${n.as_orig}]`,r[n.as_orig]=0;else n.as=`[${n.as_orig}]`;!n.aggregatorid&&n.funcid&&n.args&&(n.as_orig=n.as?n.as:n.toString().replace(/'/g,'"'),n.as=`[${n.as_orig}]`),n.aggregatorid&&n.expression.columnid!=="*"&&(n.as_orig=n.as?n.as:n.expression.tableid?`${n.aggregatorid}(${n.expression.tableid}.${n.expression.columnid})`:`${n.aggregatorid}(${n.expression.columnid})`,n.as=`[${n.as_orig}]`)}),this.statement.columns.length>1&&t.length>0&&__.pullAt(this.statement.columns,t)}_findColumn(t){let r=this.all_table_attributes.filter(n=>{if(t.columnid_orig&&t.tableid_orig)return(n.table.as===t.tableid_orig||n.table.tableid===t.tableid_orig)&&n.attribute===t.columnid_orig;if(t.tableid)return(n.table.as===t.tableid||n.table.tableid===t.tableid)&&n.attribute===t.columnid;let s=t.columnid_orig?t.columnid_orig:t.columnid;return n.attribute===s});if(Xe.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);Xe.isEmptyOrZeroLength(n)||(r=this.all_table_attributes.filter(s=>s.attribute===n[0].columnid&&n[0].tableid&&n[0].tableid===(s.table.as?s.table.as:s.table.tableid)))}return r[0]}async _checkEmptySQL(){let t=[];if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&!Xe.isEmptyOrZeroLength(this.columns.columns))return t;if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&Xe.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await An.promise(r)}catch(r){throw ke.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),ke.error(r),new Error("There was a problem with the SQL statement")}return t}_addFetchColumns(t){t&&t.length>0&&t.forEach(r=>{let n=this._findColumn(r);n&&this.fetch_attributes.push(w0(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__merged_attributes.push(r),this.data[t].__merged_attr_map[r]=this.data[t].__merged_attributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__merged_data[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__merged_attr_map[n];this.data[t].__merged_data[r].splice(i,1,s)}async _getFetchAttributeValues(){if(Xe.isEmptyOrZeroLength(Object.keys(this.columns)))return[];this._addFetchColumns(this.columns.joins);let t=null;try{t=this.statement.where?this.statement.where.toString():""}catch{throw new Error("Could not generate proper where clause")}this.columns.where&&this._addFetchColumns(this.columns.where);let r=this._isSimpleSelect();if(r?this._addFetchColumns(this.columns.columns):(!this.columns.where&&this.fetch_attributes.length===0)|t.indexOf(H5)>-1&&this.tables.forEach(s=>{let i={columnid:I0()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=__.uniqBy(this.fetch_attributes,s=>[s.table.databaseid,s.table.as?s.table.as:s.table.tableid,s.attribute].join()),r)return await this._simpleSQLQuery();let n=this.fetch_attributes.reduce((s,i)=>{let o=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[o].__hash_name;return s[o]||(s[o]=[],s[o].push(null),this._addColumnToMergedAttributes(o,c)),i.attribute!==c&&(s[o].push(null),this._addColumnToMergedAttributes(o,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,o=this.data[i].__hash_name,c={schema:s.table.databaseid,table:s.table.tableid,get_attributes:[s.attribute]},l=!1,u=[s.table.databaseid,s.table.tableid,s.attribute].join("/");if(s.attribute===o&&(l=!0),!Xe.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!Xe.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let f=await Tu.getDataByHash(c);for(let d of c.hash_values)f.get(d)&&!this.data[i].__merged_data[d]&&(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Ks)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async f=>{let d={...c};d.search_value=f;let _=await Tu.getDataByValue(d);for(let[h,m]of _)this.data[i].__merged_data[h]?this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]):(this.data[i].__merged_data[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Ks)}else if(!Xe.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!Xe.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let f=this.comparator_search_values[u].comparators;for(let d=0,_=f.length;d<_;d++){let h=f[d];c.search_attribute=h.attribute,c.search_value=h.search_value;let m=await Tu.getDataByValue(c,h.operation);if(l)for(let[S]of m)this.data[i].__merged_data[S]||(this.data[i].__merged_data[S]=[...n[i]],this._setMergedHashAttribute(i,S));else for(let[S,g]of m)this.data[i].__merged_data[S]?this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]):(this.data[i].__merged_data[S]=[...n[i]],this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]),this._setMergedHashAttribute(i,S))}}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),ke.error(f),new Error(Ks)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await Tu.getDataByValue(c);if(l)for(let[d]of f)this.data[i].__merged_data[d]||(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d));else for(let[d,_]of f)this.data[i].__merged_data[d]?this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]):(this.data[i].__merged_data[d]=[...n[i]],this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]),this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),ke.error(f),new Error(Ks)}}}_isSimpleSelect(){let t=!0;return Object.keys(this.statement).length!==2||!this.statement.columns||!this.statement.from||this.statement.from.length!==1?(t=!1,t):(this.statement.columns.forEach(r=>{r instanceof An.yy.Column||(t=!1)}),t)}_updateOrderByToAliases(){this.statement.order.forEach(t=>{if(t.expression.aggregatorid){t.is_aggregator=!0;return}if(t.expression.value){t.is_ordinal=!0,this.has_ordinal=!0;return}else t.is_ordinal=!1;let r=this.statement.columns.filter(s=>{let i=s.aggregatorid?s.expression:s,o=s.aggregatorid?s.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===o});r[0]||r.push(this._findColumn(t.expression));let n=r[0];if(t.is_func=!!n.funcid,t.is_aggregator=!!n.aggregatorid,n.as)if(n.as&&!t.expression.tableid)t.expression.columnid=n.as,t.expression.columnid_orig=n.as_orig;else{let s=new An.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new An.yy.Column,t.expression),t.initial_select_column.as=`[${t.expression.columnid_orig}]`,t.expression.columnid=t.initial_select_column.as;return}if(!t.is_aggregator){let s=t.is_func?new An.yy.FuncValue:new An.yy.Column;t.initial_select_column=Object.assign(s,n)}})}_addNonAggregatorsToFetchColumns(){let r=this.statement.order.filter(n=>!n.is_aggregator&&!n.is_ordinal).map(n=>n.is_func?{columnid:n.initial_select_column.args.filter(i=>!!i.columnid_orig)[0].columnid_orig}:{columnid:n.expression.columnid_orig});this._addFetchColumns(r)}async _processJoins(){let t=[],r=[],n=this.statement.from[0],s=[n],i=["? "+(n.as?" AS "+n.as:n.tableid)];t.push(Object.values(this.data[`${n.databaseid_orig}_${n.as?n.as_orig:n.tableid_orig}`].__merged_data)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let m=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(m+=" ON "+h.on.toString()),i.push(m),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__merged_data))});let o=[],c={};s.forEach(h=>{let m=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hash_name,S=h.as?h.as_orig:h.tableid_orig;o.push({key:`'${S}.${m}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${m}\` AS "${S}.${m}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__merged_attributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(h=>{h.is_func?r.push(h.initial_select_column.toString()):h.initial_select_column.tableid?r.push(`${h.initial_select_column.tableid}.${h.initial_select_column.columnid} AS ${h.expression.columnid}`):r.push(`${h.initial_select_column.columnid} AS ${h.expression.columnid}`)}));let f="",d="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(f=this.statement.limit?"LIMIT "+this.statement.limit:"",d=this.statement.offset?"OFFSET "+this.statement.offset:"");let _=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${f} ${d}`,m=this._convertColumnsToIndexes(h,s);_=await An.promise(m,t),t=null}catch(h){throw ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),ke.error(h),new Error("There was a problem processing the data.")}if(_&&_.length>0){for(let h=0,m=_.length;h<m;h++){let S=_[h];o.forEach(g=>{S[g.key]!==null&&S[g.key]!==void 0&&g.keys.add(S[g.key])})}o.forEach(h=>{let m=Object.keys(this.data[`${h.schema}_${h.table}`].__merged_data),S=__.difference(m,[...h.keys].map(g=>g.toString()));for(let g=0,R=S.length;g<R;g++){let E=S[g];delete this.data[`${h.schema}_${h.table}`].__merged_data[E]}})}return{existing_attributes:c,joined_length:_?_.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new lE(this.columns);for(let{node:i}of s)if(i&&i.columnid){let o=this._findColumn(i);if(o){let c=o.table.as?o.table.as:o.table.tableid;(!t[c]||t[c].indexOf(o.attribute)<0)&&n.push(o)}}n=__.uniqBy(n,i=>[i.table.databaseid,i.table.as?i.table.as:i.table.tableid,i.attribute].join());try{await this._getData(n)}catch(i){throw ke.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),ke.error(i),new Error(Ks)}}async _getData(t){try{let r=t.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]?n[i].columns.push(s.attribute):n[i]={schema:s.table.databaseid,table:s.table.tableid,columns:[s.attribute]},n},{});for(let n in r){let s=r[n],i=this.data[n].__merged_data,o=[];for(let f in i)o.push(i[f][0]);this.data[n].__merged_attributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:o,get_attributes:s.columns},l=await Tu.getDataByHash(c),u=s.columns.length;for(let f=0,d=o.length;f<d;f++){let _=o[f],h=l.get(_);for(let m=0;m<u;m++){let S=s.columns[m],g=h[S]===void 0?null:h[S];this.data[n].__merged_data[_].push(g)}}}}catch(r){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__merged_data)),r.as=r.as?r.as:r.tableid,r.databaseid="",r.tableid="?",this.statement.joins&&this.statement.joins.forEach(s=>{s.as=s.as?s.as:s.table.tableid,t.push(Object.values(this.data[`${s.table.databaseid_orig}_${s.table.as?s.table.as_orig:s.table.tableid_orig}`].__merged_data)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(o=>{let c=o.aggregatorid?o.expression:o,l=o.aggregatorid?o.as_orig:c.as_orig;return s.expression.tableid?c.columnid_orig===s.expression.columnid_orig&&c.tableid_orig===s.expression.tableid_orig:c.columnid_orig===s.expression.columnid_orig||s.expression.columnid_orig===l}).length===0&&(s.expression.columnid=s.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&this.statement.limit&&!this.statement.joins&&(delete this.statement.limit,delete this.statement.offset);let n;try{let s=this._buildSQL();ke.trace(`Final SQL: ${s}`),n=await An.promise(s,t),this.has_outer_join&&(n=this._translateUndefinedValues(n)),ke.trace(`Final AlaSQL results data included ${n.length} rows`)}catch(s){throw ke.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),ke.error(s),new Error("There was a problem running the generated sql.")}return n}_translateUndefinedValues(t){try{let r=[];for(let n of t){let s=Object.create(null);Object.keys(n).forEach(i=>{n[i]===void 0?s[i]=null:s[i]=n[i]}),r.push(s)}return r}catch(r){return ke.error(B5.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),ke.trace(r.stack),t}}_buildSQL(t=!0){let r=this.statement.toString();return r=r.replace(/NOT\(NULL\)/g,"NOT NULL"),this.statement.columns.forEach(n=>{if(n.funcid&&n.as){let s=n.toString().replace(" AS "+n.as,"");r=r.replace(n.toString(),s)}}),t===!0?this._convertColumnsToIndexes(r,this.tables):r}_convertColumnsToIndexes(t,r){let n=t,s={};r.forEach(i=>{i.databaseid_orig?s[`${i.databaseid_orig}_${i.as?i.as_orig:i.tableid_orig}`]=i.as?i.as:i.tableid:s[`${i.databaseid}_${i.as?i.as:i.tableid}`]=`\`${i.as?i.as:i.tableid}\``});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,c)=>{let l=s[i],u=new RegExp(`${l}.\`${o}\``,"g"),f=`${l}.[${c}]`;n=n.replace(u,f)});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,c)=>{let l=new RegExp(`\`${o}\``,"g"),u=`[${c}]`;n=n.replace(l,u)});return n}async _simpleSQLQuery(){let t=this.statement.columns.reduce((n,s)=>(s.as_orig&&s.as_orig!=s.columnid_orig?n[s.columnid_orig]=s.as_orig:n[s.columnid_orig]||(n[s.columnid_orig]=s.columnid_orig),n),{}),r=this.fetch_attributes.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]||(n[i]={}),n[i][t[s.attribute]]=null,n},{});for(let n of this.fetch_attributes){let s=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,i={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]};try{i.search_attribute=n.attribute,i.search_value="*";let o=await Tu.getDataByValue(i);for(let[c,l]of o)this.data[s].__merged_data[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__merged_data[c]={...r[s]}),this.data[s].__merged_data[c][t[n.attribute]]=l[n.attribute]??null}catch(o){throw ke.error("There was an error when processing this SQL operation. Check your logs"),ke.error(o),new Error(Ks)}}return Object.values(Object.values(this.data)[0].__merged_data)}};C0.exports=Wy});var zr=C((iNe,D0)=>{"use strict";var k5=OM();D0.exports={searchByConditions:G5,searchByHash:q5,searchByValue:$5,search:V5};var zy=$n(),{transformReq:Qy}=ie(),F5=P0();async function G5(e){return Qy(e),zy.searchByConditions(e)}a(G5,"searchByConditions");async function q5(e){Qy(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of zy.searchByHash(e))r&&t.push(r);return t}a(q5,"searchByHash");async function $5(e){Qy(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of zy.searchByValue(e))t.push(r);return t}a($5,"searchByValue");function V5(e,t){try{let r=new k5(e);r.validate(),new F5(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(V5,"search")});var mo=C((aNe,U0)=>{"use strict";var h_=require("crypto"),K5=le(),{CONFIG_PARAMS:Y5}=(k(),P(q)),M0="aes-256-cbc",W5=32,z5=16,jy=64,v0=32,Q5=jy+v0,L0=new Map;U0.exports={encrypt:j5,decrypt:J5,createNatsTableStreamName:X5};function j5(e){let t=h_.randomBytes(W5),r=h_.randomBytes(z5),n=h_.createCipheriv(M0,Buffer.from(t),r),s=n.update(e);s=Buffer.concat([s,n.final()]);let i=t.toString("hex"),o=r.toString("hex"),c=s.toString("hex");return i+o+c}a(j5,"encrypt");function J5(e){let t=e.substr(0,jy),r=e.substr(jy,v0),n=e.substr(Q5,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=h_.createDecipheriv(M0,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(J5,"decrypt");function X5(e,t){let r=K5.get(Y5.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=L0.get(r);return n||(n=h_.createHash("md5").update(r).digest("hex"),L0.set(r,n)),n}a(X5,"createNatsTableStreamName")});var po=C((uNe,k0)=>{"use strict";var lNe=zr(),m_=ee(),{validateBySchema:x0}=ot(),Gc=require("joi"),Z5=mo(),uE=ie(),{handleHDBError:dE,hdb_errors:e9,ClientError:B0}=he(),{HDB_ERROR_MSGS:fE,HTTP_STATUS_CODES:Jy}=e9,H0=le();H0.initSync();var{getDatabases:Xy}=(xe(),P(ct)),t9=require("fs-extra"),r9=(k(),P(q));k0.exports={describeAll:n9,describeTable:_E,describeSchema:s9};async function n9(e={}){try{let t=uE.isEmptyOrZeroLength(e),r=!!e.bypass_auth,n,s;!t&&!r&&(n=e.hdb_user?.role?.permission,s=n?.super_user||n?.cluster_user);let i=Xy(),o={},c={},l=[],u=e?.exact_count;for(let d in i){o[d]=!0,!t&&!s&&!r&&(c[d]=e.hdb_user?.role?.permission[d]?.describe);let _=i[d];for(let h in _)try{let m;if(t||s||r)m=await _E({schema:d,table:h,exact_count:u});else if(n&&n[d].describe&&n[d].tables[h].describe){let S=n[d].tables[h].attribute_permissions;m=await _E({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){m_.error(m)}}let f={};for(let d in l)t||s||r?(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]):c[l[d].schema]&&(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]);for(let d in o)t||s||r?f[d]={}:c[d]&&(f[d]={});return f}catch(t){return m_.error("Got an error in describeAll"),m_.error(t),dE(new Error,fE.DESCRIBE_ALL_ERR)}}a(n9,"describeAll");async function _E(e,t){uE.transformReq(e);let{schema:r,table:n}=e;r=r?.toString(),n=n?.toString();let s=t;e.hdb_user&&!e.hdb_user?.role?.permission?.super_user&&(s=e.hdb_user?.role?.permission[r]?.tables[n]?.attribute_permissions);let i=x0(e,Gc.object({database:Gc.string(),table:Gc.string().required(),exact_count:Gc.boolean().strict()}));if(i)throw new B0(i.message);let c=Xy()[r];if(!c)throw dE(new Error,fE.SCHEMA_NOT_FOUND(e.schema),Jy.NOT_FOUND);let l=c[n];if(!l)throw dE(new Error,fE.TABLE_NOT_FOUND(e.schema,e.table),Jy.NOT_FOUND);function u(h){f.push({attribute:h.attribute,type:h.type,elements:h.elements?.type,indexed:h.indexed,is_primary_key:h.isPrimaryKey,assigned_created_time:h.assignCreatedTime,assigned_updated_time:h.assignUpdatedTime,nullable:h.nullable,properties:h.properties?h.properties.map(m=>({type:m.type,name:m.name})):void 0})}a(u,"pushAtt");let f=[];if(s){let h={};s.forEach(m=>{m.describe&&(h[m.attribute_name]=!0)}),l.attributes.forEach(m=>{h[m.name]&&u(m)})}else l.attributes?.forEach(h=>u(h));let d;try{d=(await t9.stat(l.primaryStore.env.path)).size}catch(h){m_.warn("unable to get database size",h)}let _={schema:r,name:l.tableName,hash_attribute:l.attributes.find(h=>h.isPrimaryKey||h.is_hash_attribute)?.name,audit:l.audit,schema_defined:l.schemaDefined,attributes:f,db_size:d};l.replicate!==void 0&&(_.replicate=l.replicate),l.expirationMS!==void 0&&(_.expiration=l.expirationMS/1e3+"s"),l.sealed!==void 0&&(_.sealed=l.sealed),l.sources?.length>0&&(_.sources=l.sources.map(h=>h.name).filter(h=>h&&h!=="NATSReplicator"&&h!=="Replicator")),H0.get(r9.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=Z5.createNatsTableStreamName(_.schema,_.name));try{let h=await l.getRecordCount({exactCount:!!e.exact_count});_.record_count=h.recordCount,_.table_size=l.getSize(),_.db_audit_size=l.getAuditSize(),_.estimated_record_range=h.estimatedRange;let m=l.auditStore;if(m)for(let S of m.getKeys({reverse:!0,limit:1}))_.last_updated_record=S[0];if(!_.last_updated_record&&l.indices.__updatedtime__)for(let S of l.indices.__updatedtime__.getKeys({reverse:!0,limit:1}))_.last_updated_record=S}catch(h){m_.warn(`unable to stat table dbi due to ${h}`)}return _}a(_E,"descTable");async function s9(e){uE.transformReq(e);let t=x0(e,Gc.object({database:Gc.string(),exact_count:Gc.boolean().strict()}));if(t)throw new B0(t.message);let r;e.hdb_user&&!e.hdb_user?.role?.permission?.super_user&&(r=e.hdb_user?.role?.permission[e.schema]);let n=e.schema.toString(),i=Xy()[n];if(!i)throw dE(new Error,fE.SCHEMA_NOT_FOUND(e.schema),Jy.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),uE.isEmpty(l)||l.describe){let u=await _E({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(s9,"describeSchema")});var Ys=C((hNe,V0)=>{var i9=ao(),{callbackify:G0,promisify:o9}=require("util"),{getDatabases:q0}=(xe(),P(ct));V0.exports={setSchemaDataToGlobal:F0,getTableSchema:a9,getSystemSchema:c9,setSchemaDataToGlobalAsync:o9(F0)};var $0=po(),fNe=G0($0.describeAll),_Ne=G0($0.describeTable);function F0(e){global.hdb_schema=q0(),e&&e()}a(F0,"setSchemaDataToGlobal");function a9(e,t,r){let n=q0()[e];if(!n)return r(`schema ${e} does not exist`);let s=n[t];return s?r(null,{schema:e,name:t,hash_attribute:s.primaryKey}):r(`table ${e}.${t} does not exist`)}a(a9,"getTableSchema");function c9(){return i9}a(c9,"getSystemSchema")});var Rn=C((pNe,z0)=>{"use strict";var mE=ty(),xr=ie(),l9=require("util"),pE=$n(),u9=Ys(),K0=ee(),{handleHDBError:qc,hdb_errors:d9}=he(),{HTTP_STATUS_CODES:$c}=d9,f9=l9.promisify(u9.getTableSchema),_9="updated",Y0="inserted",W0="upserted";z0.exports={insert:m9,update:p9,upsert:E9,validation:h9,flush:g9};async function h9(e){if(xr.isEmpty(e))throw new Error("invalid update parameters defined.");if(xr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(xr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await f9(e.schema,e.table),r=mE(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let n=t.hash_attribute,s=new Set,i={},o=!1;return e.operation==="update"&&(o=!0),e.records.forEach(c=>{if(o&&xr.isEmptyOrZeroLength(c[n]))throw K0.error("a valid hash attribute must be provided with update record:",c),new Error("a valid hash attribute must be provided with update record");if(!xr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw K0.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!xr.isEmpty(c[n])&&c[n]!==""&&s.has(xr.autoCast(c[n]))&&(c.skip=!0),s.add(xr.autoCast(c[n]));for(let l in c)i[l]=1}),i[n]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(i)}}a(h9,"validation");async function m9(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=mE(e);if(t)throw qc(new Error,t.message,$c.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw qc(new Error,r,$c.BAD_REQUEST);let n=await pE.createRecords(e);return hE(Y0,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(m9,"insertData");async function p9(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=mE(e);if(t)throw qc(new Error,t.message,$c.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw qc(new Error,r,$c.BAD_REQUEST);let n=await pE.updateRecords(e);return xr.isEmpty(n.existing_rows)?hE(_9,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):hE(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(p9,"updateData");async function E9(e){if(e.operation!=="upsert")throw qc(new Error,"invalid operation, must be upsert",$c.INTERNAL_SERVER_ERROR);let t=mE(e);if(t)throw qc(new Error,t.message,$c.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw qc(new Error,r,$c.BAD_REQUEST);let n=await pE.upsertRecords(e);return hE(W0,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(E9,"upsertData");function hE(e,t,r,n,s,i){let o={message:`${e} ${t.length} of ${t.length+n.length} records`,new_attributes:s,txn_time:i};return e===Y0?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===W0?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(hE,"returnObject");function g9(e){return xr.transformReq(e),pE.flush(e.schema,e.table)}a(g9,"flush")});var eb=C((gNe,J0)=>{var S9=ot(),Zy=require("joi"),{hdb_table:T9,hdb_database:Q0}=bi(),j0={schema:Q0,database:Q0,table:T9},A9={date:Zy.date().iso().required()},R9={timestamp:Zy.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};J0.exports=function(e,t){let r=t==="timestamp"?{...j0,...R9}:{...j0,...A9},n=Zy.object(r);return S9.validateBySchema(e,n)}});var ex=C((SNe,Z0)=>{var y9=ot(),tb=require("joi"),{hdb_table:b9,hdb_database:X0}=bi(),O9=tb.object({schema:X0,database:X0,table:b9,hash_values:tb.array().required(),ids:tb.array()});Z0.exports=function(e){return y9.validateBySchema(e,O9)}});var ib=C((TNe,tx)=>{"use strict";var rb=class{static{a(this,"InsertObject")}constructor(t,r,n,s,i){this.operation=t,this.schema=r,this.table=n,this.hash_attribute=s,this.records=i}},nb=class{static{a(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,o){this.schema=t,this.table=r,this.search_attribute=n,this.hash_attribute=s,this.get_attributes=i,this.search_value=o}},sb=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};tx.exports={InsertObject:rb,NoSQLSeachObject:nb,DeleteResponseObject:sb}});var Yc=C((RNe,ox)=>{"use strict";var nx=eb(),N9=ex(),Vc=ie(),rx=require("moment"),sx=ee(),{promisify:w9,callbackify:I9}=require("util"),Kc=(k(),P(q)),C9=Ys(),ob=w9(C9.getTableSchema),ab=$n(),{DeleteResponseObject:P9}=ib(),{handleHDBError:_a,hdb_errors:D9}=he(),{HDB_ERROR_MSGS:EE,HTTP_STATUS_CODES:ha}=D9,L9="records successfully deleted",M9=I9(ix);ox.exports={delete:M9,deleteRecord:ix,deleteFilesBefore:v9,deleteAuditLogsBefore:U9};async function v9(e){let t=nx(e,"date");if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);if(Vc.transformReq(e),!rx(e.date,rx.ISO_8601).isValid())throw _a(new Error,EE.INVALID_DATE,ha.BAD_REQUEST,Kc.LOG_LEVELS.ERROR,EE.INVALID_DATE,!0);let n=Vc.checkSchemaTableExist(e.schema,e.table);if(n)throw _a(new Error,n,ha.NOT_FOUND,Kc.LOG_LEVELS.ERROR,n,!0);let s=await ab.deleteRecordsBefore(e);if(await ob(e.schema,e.table),sx.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(v9,"deleteFilesBefore");async function U9(e){let t=nx(e,"timestamp");if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);if(Vc.transformReq(e),isNaN(e.timestamp))throw _a(new Error,EE.INVALID_VALUE("Timestamp"),ha.BAD_REQUEST,Kc.LOG_LEVELS.ERROR,EE.INVALID_VALUE("Timestamp"),!0);let r=Vc.checkSchemaTableExist(e.schema,e.table);if(r)throw _a(new Error,r,ha.NOT_FOUND,Kc.LOG_LEVELS.ERROR,r,!0);let n=await ab.deleteAuditLogsBefore(e);return await ob(e.schema,e.table),sx.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(U9,"deleteAuditLogsBefore");async function ix(e){e.ids&&(e.hash_values=e.ids);let t=N9(e);if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);Vc.transformReq(e);let r=Vc.checkSchemaTableExist(e.schema,e.table);if(r)throw _a(new Error,r,ha.NOT_FOUND,Kc.LOG_LEVELS.ERROR,r,!0);try{await ob(e.schema,e.table);let n=await ab.deleteRecords(e);return Vc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${L9}`),n}catch(n){if(n.message===Kc.SEARCH_NOT_FOUND_MESSAGE){let s=new P9;return s.message=Kc.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(ix,"deleteRecord")});var gE={};Ue(gE,{HASH_FUNCTION:()=>g_,hash:()=>ub,validate:()=>db});function cb(e=E_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(p_.randomBytes(e)).map(r=>t[r%t.length]).join("")}function ub(e,t=g_[cx?.toUpperCase()]??"sha256"){return lb[t](e)}function db(e,t,r=g_[cx?.toUpperCase()]??"sha256"){return e?x9[r](e,t):!1}var p_,Au,ax,cx,E_,lx,g_,lb,x9,SE=Re(()=>{p_=v(require("node:crypto")),Au=v(require("argon2")),ax=v(le());k();cx=(0,ax.get)(x.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),E_=16,lx=9,g_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(g_||{});a(cb,"generateSalt");lb={md5:a((e,t=void 0)=>{t=t??cb(lx);let r=p_.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??cb(E_);let r=p_.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=cb(E_),r=await Au.hash(e,{type:Au.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},x9={md5:a((e,t)=>{let r=e.slice(0,lx);return e===lb.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,E_);return e===lb.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await Au.verify(e.slice(E_),t),"argon2id")};a(ub,"hash");a(db,"validate")});var dx=C((NNe,ux)=>{var fb=ot(),Qr={username:{presence:!0,exclusion:{within:["system"],message:"You cannot create tables within the system schema"}},password:{presence:!0},role:{presence:!0,format:"[\\w\\-\\_]+"},active:{presence:!0,inclusion:{within:[!0,!1],message:"must be a boolean"}}};function B9(e){return Qr.password.presence=!0,Qr.username.presence=!0,Qr.role.presence=!0,Qr.active.presence=!0,fb.validateObject(e,Qr)}a(B9,"addUserValidation");function H9(e){return Qr.password.presence=!1,Qr.username.presence=!0,Qr.role.presence=!1,Qr.active.presence=!1,fb.validateObject(e,Qr)}a(H9,"alterUserValidation");function k9(e){return Qr.password.presence=!1,Qr.username.presence=!0,Qr.role.presence=!1,Qr.active.presence=!1,fb.validateObject(e,Qr)}a(k9,"dropUserValidation");ux.exports={addUserValidation:B9,alterUserValidation:H9,dropUserValidation:k9}});var Pt=C((CNe,_x)=>{"use strict";var{platform:INe}=require("os"),F9="nats-server.zip",_b="nats-server",G9=process.platform==="win32"?`${_b}.exe`:_b,q9=/^[^\s.,*>]+$/,fx="__request__",$9=a(e=>`${e}.${fx}`,"REQUEST_SUBJECT"),V9={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},K9={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Y9={HUB:"hub.pid",LEAF:"leaf.pid"},W9={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},z9={SUCCESS:"success",ERROR:"error"},Q9={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},j9={TXN:"txn",MSGID:"msgid"},Ru={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},J9={[Ru.ERR]:1,[Ru.WRN]:2,[Ru.INF]:3,[Ru.DBG]:4,[Ru.TRC]:5},X9={debug:"-D",trace:"-DVV"};_x.exports={NATS_SERVER_ZIP:F9,NATS_SERVER_NAME:_b,NATS_BINARY_NAME:G9,PID_FILES:Y9,NATS_CONFIG_FILES:K9,SERVER_SUFFIX:W9,NATS_TERM_CONSTRAINTS_RX:q9,REQUEST_SUFFIX:fx,UPDATE_REMOTE_RESPONSE_STATUSES:z9,CLUSTER_STATUS_STATUSES:Q9,REQUEST_SUBJECT:$9,SUBJECT_PREFIXES:j9,MSG_HEADERS:V9,LOG_LEVELS:Ru,LOG_LEVEL_FLAGS:X9,LOG_LEVEL_HIERARCHY:J9}});var hb=C(hx=>{"use strict";var Z9={cert:"-----BEGIN CERTIFICATE-----\rMIIDXDCCAkSgAwIBAgIFNTE4MzQwDQYJKoZIhvcNAQELBQAwXTEXMBUGA1UEAxMO\rSGFycGVyREIsIEluYy4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UE\rBxMGRGVudmVyMRcwFQYDVQQKEw5IYXJwZXJEQiwgSW5jLjAeFw0yMjAzMTEyMzAz\rNDlaFw0yNzAzMTAyMzAzNDlaMF0xFzAVBgNVBAMTDkhhcnBlckRCLCBJbmMuMQsw\rCQYDVQQGEwJVUzELMAkGA1UECBMCQ08xDzANBgNVBAcTBkRlbnZlcjEXMBUGA1UE\rChMOSGFycGVyREIsIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\rAQCsEUlBF8WImS78rCFXVKyntxfrW++4qZ3hGnoD2MHZAuDHyeP/5eGnaE9GQhKc\r4DwG4DGvh0wP2zIYnBfiQ3L2ZtnlDR9ZkKIQYGlVxTUn6T43krhK5nZKqDF43Yg3\rZEvO3cbJBjiKZx0eA2/toehdSsTAHHQx5gTDcggNe2tgoJHYPwi9YF/AxSBZrbgb\ryWlYgtYDmF32ytHP03GUCIdKOFuBPsHTGu4SkdEIdLIqO9oglW1YFH5qZ6NiwApW\rsP+GCuqOwDXXbdjr75iq9Tq/CDrjGFLaTPmvd2Q0qG/BtaCll0ghpG+yIHvt/iQs\rajS+LxEWAnVlGMaDdFErbDUtAgMBAAGjIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYD\rVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4IBAQASR4YW/rPK7PNArHVe9zzM\rb0rKNX/2T9/0nybRhmE/+hdlSgliTAeebmwkUS2APckmekYt/q2ZY2NS65Fo/jjp\rG8TJrtcF4h+ylVqUp0ZXQLFtIsr7r2JZA7hJ6njW6G4DHSZ0gxtECLi4CBlTjzm5\rNmnmIDObvGRTuqmcdAZmXeObbta/He2XIzietukPAYX062pNM+G5XT5UM1eG/Vlp\rN86vjhpyI+ffKy+C60SJqxmKM3ydgN7oLscE7+2wLPN25XqN4W99OwGsp5dTdu/f\r5lPtFayXdJ55e/sNQKmGN+UGLrL05c2MWgjb8U/LFilnupUianceoeSERZmVjzKX\r-----END CERTIFICATE-----\r".replace(/\r/g,`\r
|
|
16
|
+
`},"serialize"),compressible:!1,q:.8});Yr.set("application/x-www-form-urlencoded",{deserialize(e){let t=Buffer.isBuffer(e)?e.toString("utf8"):e,r={};for(let[n,s]of new URLSearchParams(t))if(r.hasOwnProperty(n)){let i=r[n];Array.isArray(i)?i.push(s):r.key=[i,s]}else r[n]=s;return r},serialize(e){let t=new URLSearchParams;for(let r in e)t.set(r,e);return t.toString()}});iL={type:"application/json",serializeStream:Nf,serialize:wf,deserialize:BJ,q:.5};Yr.set("*/*",iL);Yr.set("",iL);a(BJ,"tryJSONParse");a(Cf,"registerContentHandlers");HJ=require("fastify-plugin"),kJ=HJ(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=cp(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&o.serializeStream){if(l.mapError){let f=l.getColumns;l=l.mapError(d=>(d.toJSON=()=>({error:d.name,message:d.message,...d.partialObject}),d)),l.getColumns=f}u=o.serializeStream}else u=o.serialize;return u(l,{headers:{set:a((f,d)=>{s.header(f,d)},"set")}})})}),r()},{name:"content-type-negotiation"});a(cp,"findBestSerializer");eL=WA.default.get(x.HTTP_COMPRESSIONTHRESHOLD);a(Pf,"serialize");a(ia,"serializeMessage");a(JA,"asyncSerialization");a(XA,"hasAsyncSerialization");a(FJ,"streamToBuffer");GJ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(qJ,"isBufferEncoding");a($J,"parseContentType");a(no,"getDeserializer");a(VJ,"deserializerUnknownType");a(KJ,"transformIterable");a(ap,"toCsvStream")});var au={};Ue(au,{Blob:()=>gi,blobsWereEncoded:()=>yc,cleanupOrphans:()=>i4,databasePaths:()=>eR,decodeBlobsWithWrites:()=>mp,decodeFromDatabase:()=>oo,decodeWithBlobCallback:()=>vf,deleteBlob:()=>fp,deleteBlobsInObject:()=>aa,deleteRootBlobPathsForDB:()=>nR,encodeBlobsAsBuffers:()=>r4,encodeBlobsWithFilePath:()=>hp,findBlobsInObject:()=>Rc,getFileId:()=>_p,getFilePathForBlob:()=>mL,getRootBlobPathsForDB:()=>ou,isSaving:()=>jJ,saveBlob:()=>Mf,setDeletionDelay:()=>QJ,startPreCommitBlobsForRecord:()=>sR});function _L(){}function fp(e){let t=mL(e);t&&setTimeout(()=>{(0,Fe.unlink)(t,r=>{r&&Ct.default.debug?.("Error trying to remove blob file",r)})},hL)}function QJ(e){hL=e}function Mf(e,t=!1){let r=br.get(e);if(!r)r={storageIndex:0,fileId:null,store:mn},br.set(e,r);else{if(r.fileId)return r;r.store=mn}return r.deleteOnFailure=t,XJ(r),r.source?ZA(e,r.source,r):r.contentBuffer?JJ(e,r):ZA(e,oa.Readable.from(e.stream()),r),r}function ZA(e,t,r){let{filePath:n,fileId:s,store:i,compress:o,flush:c}=r;return r.saving=new Promise((l,u)=>{let f=s+":blob";if(!i.attemptLock(f,0))throw new Error(`Unable to get lock for blob file ${s}`);let d=(0,Fe.createWriteStream)(n,{autoClose:!1,flags:"w"}),_=!1;e.size!==void 0&&(d.write(m(e.size)),_=!0);let h;o?(_||d.write(WJ),h=(0,dp.createDeflate)(),(0,oa.pipeline)(t,h,d,S)):(_||d.write(YJ),(0,oa.pipeline)(t,d,S));function m(g){let R=BigInt(g),E=new Uint8Array(mr),T=new DataView(E.buffer);return R|=BigInt(o?rR:fL)<<48n,T.setBigInt64(0,R),E}a(m,"createHeader");function S(g){let R=d.fd;if(g){if(i.unlock(f,0),R&&((0,Fe.close)(R),d.fd=null),r.deleteOnFailure)(0,Fe.unlink)(n,E=>{E&&Ct.default.debug?.("Error while deleting aborted blob file",E)});else try{if((0,Fe.statSync)(n).size===0){let E=Buffer.from(g.toString());(0,Fe.writeFile)(n,Buffer.concat([m(BigInt(E.length)+0xff000000000000n),E]),T=>{T&&Ct.default.debug?.("Error write error message to blob file",T)})}}catch(E){Ct.default.debug?.("Error checking blob file after abort",E)}u(g)}else{if(!_){_=!0;let E=h?h.bytesWritten:d.bytesWritten-mr;e.size=E,(0,Fe.write)(R,m(E),0,mr,0,S);return}i.unlock(f,0),c?(0,Fe.fdatasync)(R,E=>{E&&u(E),l(),(0,Fe.close)(R),d.fd=null}):(l(),(0,Fe.close)(R),d.fd=null)}}a(S,"finished")}),e}function _p(e){return br.get(e)?.fileId}function jJ(e){return br.get(e)?.saving}function mL(e){let t=br.get(e);return t?.fileId&&iu(t)}function ou(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=eR.get(e);if(!t){if(!e.databaseName)return Ct.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,Lf.get)(x.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,Ti.join)(n,e.databaseName)):t=[(0,Ti.join)((0,Lf.getHdbBasePath)(),"blobs",e.databaseName)],eR.set(e,t)}return t}async function nR(e){let t=ou(e);t&&await Promise.all(t.map(r=>pL(r)))}async function pL(e){if((0,Fe.existsSync)(e)){for(let t of await(0,pn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await pL((0,Ti.join)(e,t.name));else try{await(0,pn.unlink)((0,Ti.join)(e,t.name))}catch(r){Ct.default.warn?.("Error deleting file",r)}try{await(0,pn.rmdir)(e)}catch(t){Ct.default.warn?.("Error deleting directory",t)}}}function iu({storageIndex:e,fileId:t,store:r}){let n=ou(r);return(0,Ti.join)(n[e],t.slice(-9,-6)||"0",t.slice(-6,-3)||"0",t.length<=9?t.slice(-3):t.slice(0,-9)+t.slice(-3))}function JJ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<dL))return e.size=n,ZA(e,oa.Readable.from([r]),t)}function XJ(e){let t=ou(e.store),r=ZJ(),n=t?.length>1?e4(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=iu(e),o=(0,Ti.dirname)(i);(0,Fe.existsSync)(o)||(0,tR.ensureDirSync)(o),e.filePath=i}function ZJ(){let e=lL.get(mn);if(!e){let t=0,r=ou(mn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Fe.existsSync)(n))for(let c of(0,Fe.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>o&&(o=l)}s+=o,n=(0,Ti.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(mn.getUserSharedBuffer("blob-file-id",e.buffer)),lL.set(mn,e)}return Number(Atomics.add(e,0,1n))}function e4(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(up);for(let i=0;i<s.length;i++)s[i]=i%e.length;e.frequencyTable=s}return(e.lastUpdated??0)+6e4<r&&(e.lastUpdated=r,t4(e)),e.frequencyTable[t%up]}async function t4(e){if(!pn.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let o;try{o=await(0,pn.statfs)(s)}catch(l){if(l.code!=="ENOENT")throw l;(0,tR.ensureDirSync)(s),o=await(0,pn.statfs)(s)}let c=o.bavail*o.bsize;return Math.pow(c,.8)})),r=new Array(up),n=t.map(s=>1/s);for(let s=0;s<up;s++){let i=1/0,o=0;for(let c=0;c<n.length;c++)n[c]<i&&(o=c,i=n[c]);n[o]+=1/t[o],r[s]=o}e.frequencyTable=r}function hp(e,t,r){ru=t,mn=r,yc=!1;try{return e()}finally{ru=void 0,mn=void 0}}function r4(e){vr=[];let t;try{t=e()}catch(n){throw vr=void 0,n}let r=vr.length<2?vr[0]:Promise.all(vr);return vr=void 0,r?r.then(()=>e()):t}function mp(e,t,r){try{vr=[],io=r,mn=t,e()}catch(s){throw io=void 0,vr=void 0,s}io=void 0;let n=vr.length<2?vr[0]:Promise.all(vr);return vr=void 0,n}function vf(e,t,r){mn=r;try{return io=t,e()}finally{io=void 0}}function oo(e,t){return mn=t,e()}function aa(e){Rc(e,t=>{fp(t)})}function Rc(e,t){if(e instanceof gi)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&Rc(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&Rc(e[r],t)}}function sR(e,t){let r=[];for(let n in e){let s=e[n];s instanceof su&&s.saveBeforeCommit&&r.push(s)}if(r.length>0)return()=>(mn=t,Promise.all(r.map(n=>Mf(n,!0).saving??Promise.resolve())))}function s4(){return class{static{a(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}async function i4(e,t){let r,n,s=0;for(let f in e){let d=e[f];if(r=d.primaryStore.rootStore,n=d.auditStore,n)break}let i=new Set,o=ou(r);if(o)for(let f of o)await c(f);return await l(),Ct.default.warn?.(`Cleaned Orphan Blobs from ${t??"database"}, deleted ${s} blobs)`),s;async function c(f){try{if(!(0,Fe.existsSync)(f))return;for(let d of await(0,pn.readdir)(f,{withFileTypes:!0})){let _=(0,Ti.join)(f,d.name);if(d.isDirectory())await c(_);else if(i.size%1e6===0&&Ct.default.info?.("Finding all blobs for orphan check, paths accumulated",i.size),i.add(_),i.size%2===0){let h=(0,uL.getHeapStatistics)();h.used_heap_size>h.heap_size_limit*.8&&await l()}}}catch(d){Ct.default.error?.("Error searching path for blobs",f,d)}}a(c,"searchPath");async function l(){let f=0,d=Math.floor(((0,Lf.get)(x.STORAGE_BLOBCLEANUPSPEED)??1e4)/1e3+1);for(let _ in e){Ct.default.warn?.("Checking for references to potential orphaned blobs in table",_);let h=e[_];for(let m of h.primaryStore.getRange({versions:!0,snapshot:!1,lazy:!0}))try{m.metadataFlags&Ur&&m.value&&u(m.value),f++%d===0?await(0,nu.setTimeout)(1):await(0,nu.setImmediate)()}catch(S){Ct.default.error?.("Error searching table",_," for references to potential orphaned blobs failed",S)}}Ct.default.warn?.("Checking for references to potential orphaned blobs in the audit log");for(let{value:_}of n.getRange({start:1,snapshot:!1,lazy:!0}))try{let h=St(_),m=n.tableStores[h.tableId],S=m?.getEntry(h.recordId);(!S||S.version!==h.version||!S.value)&&u(h.getValue(m)),f++%d===0?await(0,nu.setTimeout)(1):await(0,nu.setImmediate)()}catch(h){Ct.default.error?.("Error searching audit log for references to potential orphaned blobs failed",h)}Ct.default.warn?.("Deleting",i.size,"orphaned blobs"),s+=i.size;for(let _ of i)try{await(0,pn.unlink)(_)}catch(h){Ct.default.warn?.("Error deleting file",h)}Ct.default.warn?.("Finished deleting",i.size,"orphaned blobs"),i.clear()}a(l,"removePathsThatAreNotReferenced");function u(f){Rc(f,d=>{if(d instanceof su){let _=br.get(d);if(_.fileId!=null){let h=iu(_);i.has(h)&&i.delete(h)}}})}a(u,"checkObjectForReferences")}var Si,pn,Fe,dp,oa,tR,Lf,Ti,Ct,uL,nu,dL,mr,fL,rR,aL,YJ,WJ,cL,br,io,gi,ru,vr,mn,yc,Df,lp,zJ,su,hL,eR,lL,up,n4,hn=Re(()=>{Si=require("msgpackr"),pn=require("node:fs/promises"),Fe=require("node:fs"),dp=require("node:zlib"),oa=require("node:stream"),tR=require("fs-extra"),Lf=v(le());k();Ti=require("path"),Ct=v(ks());so();Ai();uL=require("node:v8"),nu=require("node:timers/promises"),dL=8192,mr=8,fL=0,rR=1,aL=255,YJ=new Uint8Array([0,fL,255,255,255,255,255,255]),WJ=new Uint8Array([0,rR,255,255,255,255,255,255]),cL=0xffffffffffff,br=new WeakMap,gi=global.Blob||s4(),yc=!1,Df=new Uint8Array(8),lp=new DataView(Df.buffer),zJ=6e4;a(_L,"InstanceOfBlobWithNoConstructor");_L.prototype=gi.prototype;su=class e extends _L{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size),t?.saveBeforeCommit!=null&&(this.saveBeforeCommit=t.saveBeforeCommit)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=br.get(this),{start:r,end:n,contentBuffer:s,asString:i}=t;return i||(s&&(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),s?(t.asString=s.toString(),t.asString):(XA()&&JA(this.bytes().then(o=>t.contentBuffer=o)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=br.get(this),{start:r,end:n,contentBuffer:s}=t;if(s)return(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),Promise.resolve(s);let i=iu(t),o,c=a(async()=>{let l,u=mr;try{if(l=await(0,pn.readFile)(i),l.length>=mr){l.copy(Df,0,0,mr);let d=lp.getBigUint64(0);if(Number(d>>48n)===aL)throw new Error("Error in blob: "+l.subarray(mr));if(u=Number(d&0xffffffffffffn),u<n&&(u=n),u<cL&&(this.size=u,this.#t))for(let _ of this.#t)_(u)}}catch(d){if(d.code!=="ENOENT")throw d;l=Buffer.alloc(0)}function f(d){if(u>d.length){let _=t.store,h=t.fileId+":blob";if(o)throw new Error(`Incomplete blob for ${i}`);return new Promise((m,S)=>{if(_.attemptLock(h,0,()=>(o=!0,m(c()))))return o=!0,_.unlock(h,0),m(c())})}return(n!=null||r!=null)&&(d=d.subarray(r??0,n??d.length)),d}return a(f,"checkCompletion"),l[1]===rR?new Promise((d,_)=>{(0,dp.deflate)(l.subarray(mr),(h,m)=>{h?_(h):d(f(m))})}):f(l.subarray(mr))},"readContents");return c()}async arrayBuffer(){let t=await this.bytes(),r=new ArrayBuffer(t.length);return new Uint8Array(r).set(t),r}stream(){let t=br.get(this),{contentBuffer:r,start:n,end:s}=t;if(r)return(s!=null||n!=null)&&(r=r.subarray(n??0,s??t.contentBuffer.length)),new ReadableStream({pull(S){S.enqueue(r),S.close()}});let i=iu(t),o,c=0,l=0,u,f,d,_=!1,h=this;return new ReadableStream({start(){let S=1e3,g=a((R,E)=>{(0,Fe.open)(i,"r",(T,N)=>{if(T){if(T.code==="ENOENT"&&d!==!1&&(Ct.default.debug?.("File does not exist yet, waiting for it to be created",i,S),S-- >0))return setTimeout(()=>{m(),g(R,E)},20).unref();E(T),h.#e?.forEach(M=>M(T))}else o=N,R(N)})},"openFile");return new Promise(g)},pull:a(S=>{let g=0,R=100;return new Promise(a(function E(T,N){function M(X){(0,Fe.close)(o),clearTimeout(f),u&&u.close(),N(X),h.#e?.forEach(W=>W(X))}a(M,"onError");let H=Buffer.allocUnsafe(262144);(0,Fe.read)(o,H,0,H.length,c,(X,W,$)=>{if(l+=W,X)return M(X);if(c===0){if(W<mr){R-- >0&&d!==!1?(m(),Ct.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>E(T,N),20).unref()):(Ct.default.debug?.("File was empty, throwing error",i,R),M(new Error(`Blob ${t.fileId} was empty`)));return}$.copy(Df,0,0,mr);let se=lp.getBigUint64(0);if(Number(se>>48n)===aL)return M(new Error("Error in blob: "+$.subarray(mr,W)));if(g=Number(se&0xffffffffffffn),g<cL&&h.size!==g&&(h.size=g,h.#t))for(let z of h.#t)z(g);$=$.subarray(mr,W),l-=mr}else if(W===0){let se=Buffer.allocUnsafe(8);return(0,Fe.read)(o,se,0,mr,0,z=>{if(z)return M(z);if(Df.set(se),g=Number(lp.getBigUint64(0)&0xffffffffffffn),g>l){m()?u?f=setTimeout(()=>{M(new Error(`File read timed out reading from ${i}`))},zJ).unref():(u=(0,Fe.watch)(i,{persistent:!1},()=>{u.close(),u=null,f&&(clearTimeout(f),f=null,E(T,N))}),E(T,N)):_?M(new Error("Blob is incomplete")):(_=!0,E(T,N));return}(0,Fe.close)(o),S.close(),T()})}else $=$.subarray(0,W);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=W,E(T,N);s&&l>=s&&(l>s&&($=$.subarray(0,s-c)),l=g=s),n&&n>c&&($=$.subarray(n-c))}c+=W;try{S.enqueue($)}catch(se){return Ct.default.debug?.("Error enqueuing chunk",se),T()}l===g&&((0,Fe.close)(o),S.close()),T()})},"readMore"))},"pull"),cancel(){(0,Fe.close)(o),clearTimeout(f),u&&u.close()}});function m(){if(d===void 0){let S=t.store,g=t.fileId+":blob";d=!S.attemptLock(g,0,()=>{d=!1}),d||S.unlock(g,0)}return d}}slice(t,r,n){let s=br.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};br.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};br.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return this.saveBeforeCommit=!0,Promise.resolve()}get written(){return br.get(this)?.saving??Promise.resolve()}},hL=500;a(fp,"deleteBlob");a(QJ,"setDeletionDelay");global.createBlob=function(e,t){let r=new su(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(br.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof oa.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=oa.Readable.from(e);else throw new Error("Invalid source type");return r};a(Mf,"saveBlob");a(ZA,"writeBlobWithStream");a(_p,"getFileId");a(jJ,"isSaving");a(mL,"getFilePathForBlob");eR=new Map;a(ou,"getRootBlobPathsForDB");a(nR,"deleteRootBlobPathsForDB");a(pL,"rimrafSteadily");a(iu,"getFilePath");a(JJ,"writeBlobWithBuffer");a(XJ,"generateFilePath");lL=new Map;a(ZJ,"getNextFileId");up=128;a(e4,"getNextStorageIndex");a(t4,"createFrequencyTableForStoragePaths");a(hp,"encodeBlobsWithFilePath");a(r4,"encodeBlobsAsBuffers");a(mp,"decodeBlobsWithWrites");a(vf,"decodeWithBlobCallback");a(oo,"decodeFromDatabase");a(aa,"deleteBlobsInObject");a(Rc,"findBlobsInObject");a(sR,"startPreCommitBlobsForRecord");n4=new Si.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,Si.addExtension)({Class:gi,type:11,unpack:a(function(e){let t=n4.unpack(e),r=new su;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(br.set(r,{storageIndex:t[1],fileId:t[2],store:mn}),io)return io(r)??r;if(!mn)throw new Error("No store specified, cannot load blob from storage")}else br.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:a(function(e){let t=br.get(e);if(ru!==void 0&&(yc=!0,t?.recordId!==void 0&&t.recordId!==ru))throw new Error("Cannot use the same blob in two different records");let r={...e};if(e.type&&(r.type=e.type),e.size!==void 0&&(r.size=e.size),t){if(t.storageBuffer)return t.storageBuffer;if(t.contentBuffer?.length<dL)return r.size=t.contentBuffer.length,(0,Si.pack)([r,t.contentBuffer])}if(ru!==void 0){if(t=Mf(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=ru,(0,Si.pack)([r,t.storageIndex,t.fileId])}if(t){if(io)return io(e),(0,Si.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Fe.readFileSync)(iu(t));if(n.length>=mr&&(n.copy(Df,0,0,mr),Number(lp.getBigUint64(0)&0xffffffffffffn)===n.length-mr))return Buffer.concat([(0,Si.pack)([r]),n]);if(vr)vr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&vr)return vr.push(e.bytes()),Buffer.alloc(0);throw n}}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Si.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(s4,"polyfillBlob");a(i4,"cleanupOrphans")});var AL={};Ue(AL,{HAS_EXPIRATION:()=>Sp,HAS_RESIDENCY_ID:()=>uR,HAS_STRUCTURE_UPDATE:()=>Ap,LAST_TIMESTAMP_PLACEHOLDER:()=>Hf,LOCAL_TIMESTAMP:()=>o4,METADATA:()=>Nc,NEW_TIMESTAMP_PLACEHOLDER:()=>gL,NO_TIMESTAMP:()=>Ep,PENDING_LOCAL_TIME:()=>dR,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>lR,RecordEncoder:()=>cR,TIMESTAMP_ASSIGN_LAST:()=>c4,TIMESTAMP_ASSIGN_NEW:()=>SL,TIMESTAMP_ASSIGN_PREVIOUS:()=>TL,TIMESTAMP_PLACEHOLDER:()=>pp,TIMESTAMP_RECORD_PREVIOUS:()=>iR,handleLocalTimeForGets:()=>Rp,recordUpdater:()=>fR,removeEntry:()=>Ic});function u4(){return Bf[0]=Bf[0]^64,a4.getFloat64(0)}function Rp(e,t){let r=e.getEntry;e.readCount=0,e.cachePuts=!1,e.rootStore=t,e.encoder.rootStore=t,e.getEntry=function(o,c){e.readCount++;let l=r.call(this,o,c),u=l?.value,f=u?.[Nc];return f>=0&&(l.metadataFlags=f,l.localTime=u.localTime,l.value=u.value,l.residencyId=u.residencyId,u.expiresAt>=0&&(l.expiresAt=u.expiresAt)),l&&(l.key=o),l};let n=e.get;e.get=function(o,c){let l=n.call(this,o,c);return l?.[Nc]>=0?l.value:l};let s=e.getRange;e.getRange=function(o){let c=s.call(this,o);return o.valuesForKey?c.map(l=>l?.value):o.values===!1||o.onlyCount?c:c.map(l=>{let u=l.value,f=u?.[Nc];return f>=0&&(l.metadataFlags=f,l.localTime=u.localTime,l.value=u.value,l.residencyId=u.residencyId,u.expiresAt>=0&&(l.expiresAt=u.expiresAt)),l})};let i=e.useReadTransaction();if(i.done(),!i.done.isTracked){let o=i.constructor,c=i.use,l=i.done;o.prototype.use=function(){this.timerTracked||(this.timerTracked=!0,Oc.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<Oc.length;u++){let f=Oc[u].deref();(!f||f.isDone||f.isCommitted)&&Oc.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function fR(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){l==null?bc=Ep:d?bc=i?.localTime?iR|TL:Ep:bc=l?i?.localTime?iR|16384:SL|16384:Ep;let h=u?.expiresAt;if(h>=0&&(c|=Sp),xf=c,oR=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:bc>0},S,g=0;try{let R=i?.residencyId,E=u?.residencyId;E&&(aR=E,xf|=uR,g|=Cc),R!==E&&(g|=Pc,R||(R=0)),c&Sp&&(g|=Ff),u?.originatingOperation&&(g|=kf),d&&(m.ifVersion=S=i?.version??null),i&&i.value&&f!=="message"&&i.metadataFlags&Ur&&(!i.localTime||!r.getBinaryFast(i.localTime))&&aa(i.value);let T;if(s!==void 0&&(T=hp(()=>e.put(n,s,m),n,e.rootStore),yc&&(g|=Ur)),l){let N=u?.user?.username;if(_&&(hp(()=>e.encoder.encode(_),n,e.rootStore),yc&&(g|=Ur)),e.encoder.hasStructureUpdate&&(g|=Ap,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let M=i?.localTime,H=r.get(M);if(H){let X=St(H).previousLocalTime;return T=r.put(M,wc(o,t,n,X,u?.nodeId??server.replication.getThisNodeId(r)??0,N,f,Uf,g,E,R,h),{ifVersion:S}),T}}T=r.put(s===void 0?gL:Hf,wc(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,f,Uf,g,E,R,h,u?.originatingOperation),{instructedWrite:!0,ifVersion:S})}return T}catch(R){throw R.message+=" id: "+n+" options: "+m,R}}}function Ic(e,t,r){if(t)return t.value&&t.metadataFlags&Ur&&!e.auditStore?.getBinaryFast(t.localTime)&&aa(t.value),e.remove(t.key,r)}var EL,gp,pp,Hf,lR,gL,o4,Nc,Bf,a4,Ep,SL,c4,TL,iR,Sp,uR,dR,Ap,l4,Uf,bc,xf,oR,aR,cR,Oc,cu=Re(()=>{EL=require("msgpackr");Ai();gp=v(ee());hn();hn();pp=new Uint8Array([1,1,1,1,4,64,0,0]),Hf=new Uint8Array([1,1,1,1,1,0,0,0]),lR=new Uint8Array([1,1,1,1,3,64,0,0]),gL=new Uint8Array([1,1,1,1,0,64,0,0]),o4=Symbol("local-timestamp"),Nc=Symbol("metadata"),Bf=new Uint8Array(8),a4=new DataView(Bf.buffer,0,8),Ep=0,SL=0,c4=1,TL=3,iR=4,Sp=16,uR=32,dR=1,Ap=256,bc=0,xf=-1,oR=-1,aR=0,cR=class extends EL.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(bc||xf>=0){let o=0,c=bc;c&&(o+=8,bc=0);let l=xf,u=oR,f=aR;l>=0&&(o+=4,xf=-1,u>=0&&(o+=8,oR=-1),f&&(o+=4,aR=0));let d=l4=r.call(this,s,i|2048|o);Uf=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(pp[4]=c,pp[5]=c>>8,d.set(pp,_),_+=8),yc&&(l|=Ur),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|Tp<<24),_+=4,u>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setFloat64(_,u),_+=8),f&&(d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,f)),d}else return Uf=r.call(this,s,i),Uf};let n=this.saveStructures;this.saveStructures=function(s,i){let o=n.call(this,s,i);return this.hasStructureUpdate=!0,o}}decode(t,r){let n=r?.start||0,s=r>-1?r:r?.end||t.length,i=t[n],o=0;try{if(i<32&&s>2){let c=n,l;if(i===2){if(t.copy)t.copy(Bf,0,c),c+=8;else for(let _=0;_<8;_++)Bf[_]=t[c++];l=u4(),i=t[c]}let u,f;i<32&&(i===Tp?(o=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4):(o=i|t[c+1]<<5,c+=2),o&Sp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&uR&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=oo(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[Nc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:oo(()=>super.decode(t,r),this.rootStore)}catch(c){return gp.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(u4,"getTimestamp");a(Rp,"handleLocalTimeForGets");Oc=[];setInterval(()=>{for(let e=0;e<Oc.length;e++){let t=Oc[e].deref();!t||t.isDone||t.isCommitted?Oc.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(gp.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):gp.error("Read transaction detected that has been open too long (over one minute), make sure read transactions are quickly closed",t)),t.openTimer++):t.openTimer=1)}},15e3).unref();a(fR,"recordUpdater");a(Ic,"removeEntry")});var hR={};Ue(hR,{add:()=>yp,applyReverse:()=>RL,getRecordAtTime:()=>_R,rebuildUpdateBefore:()=>bp});function yp(e,t,r){let n=e[t];typeof n=="bigint"?e[t]=n+BigInt(r.value):isNaN(e[t])?e[t]=r.value:e[t]=n+r.value}function bp(e,t,r){let n=null;for(let s in e)if(s in t){let i=t[s];if(i?.__op__){let o=e[s];if(o?.__op__)if(o.__op__===i.__op__)n||(n={}),n[s]=o;else throw new Error("Can not merge updates with different operations");else n||(n={}),n[s]=o,yp(n,s,i)}else r&&(n||(n={}),n[s]=i)}else n||(n={}),n[s]=e[s];return n}function RL(e,t){for(let r in t){let n=t[r];if(n?.__op__){let s=d4[n.__op__]?.reverse;if(s)s(e,r,{value:n.value});else throw new Error(`Unsupported operation ${n.__op__}`)}else e[r]=yL}}function _R(e,t,r){let n=r.rootStore.auditStore,s={...e.value},i=e.localTime;for(;i>t;){let l=n.get(i),u=St(l);switch(u.type){case"put":s=u.getValue(r);break;case"patch":RL(s,u.getValue(r));break;case"delete":s=null}i=u.previousLocalTime}let o={},c=0;for(let l in s)s[l]===yL&&(o[l]=!0,c++);for(;c>0&&i>0;){let l=n.get(i),u=St(l),f;switch(u.type){case"put":f=u.getValue(r);break;case"patch":f=u.getValue(r);break}for(let d in f)o[d]&&(s[d]=f[d],o[d]=!1,c--);i=u.previousLocalTime}if(c>0)for(let l in o)s[l]=null;return s}var d4,yL,Op=Re(()=>{Ai();a(yp,"add");yp.reverse=function(e,t,r){let n=e[t];typeof n=="bigint"?e[t]=n-BigInt(r.value):isNaN(e[t])||(e[t]=n-r.value)};d4={add:yp};a(bp,"rebuildUpdateBefore");a(RL,"applyReverse");yL={};a(_R,"getRecordAtTime")});var IL={};Ue(IL,{onStorageReclamation:()=>Gf,runReclamationHandlers:()=>gR,setAvailableSpaceRatioGetter:()=>_4});function Gf(e,t,r){(r||(0,wp.getWorkerIndex)()===(0,wp.getWorkerCount)()-1)&&(Np.has(e)||Np.set(e,[]),Np.get(e).push({priority:0,handler:t}),ER||(ER=setTimeout(gR,OL).unref()))}async function gR(){for(let[e,t]of Np)try{let r=await wL(e),n=f4/r;for(let s of t){let{priority:i,handler:o}=s;if(s.priority=n,n>1||i>1){let c=o(n>1?n:0);c&&(pR.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){pR.default.error?.("Error running storage reclamation handlers",r)}ER=setTimeout(gR,OL).unref()}function _4(e){wL=e??NL}var mR,wp,pR,Ip,bL,Np,f4,OL,ER,NL,wL,Cp=Re(()=>{mR=require("node:fs/promises"),wp=v(it()),pR=v(ks());k();Ip=v(le()),bL=v(ie());Ip.default.initSync();Np=new Map,f4=Ip.default.get(x.STORAGE_RECLAMATION_THRESHOLD)??.4,OL=(0,bL.convertToMS)(Ip.default.get(x.STORAGE_RECLAMATION_INTERVAL))||36e5;a(Gf,"onStorageReclamation");NL=a(async e=>{if(mR.statfs){let t=await(0,mR.statfs)(e);return t.bavail/t.blocks}else return new Promise((t,r)=>{import("hdd-space").then(n=>{n.default(s=>{for(let i of s.parts)if(e.startsWith(i.place))return t(i.free/i.size);return t(1)})})})},"defaultGetAvailableSpaceRatio"),wL=NL;a(gR,"runReclamationHandlers");a(_4,"setAvailableSpaceRatioGetter")});var GL={};Ue(GL,{ACTION_32_BIT:()=>Tp,ACTION_64_BIT:()=>E4,AUDIT_STORE_OPTIONS:()=>Vf,Decoder:()=>Lc,HAS_BLOBS:()=>Ur,HAS_CURRENT_RESIDENCY_ID:()=>Cc,HAS_EXPIRATION_EXTENDED_TYPE:()=>Ff,HAS_ORIGINATING_OPERATION:()=>kf,HAS_PREVIOUS_RESIDENCY_ID:()=>Pc,REMOTE_SEQUENCE_UPDATE:()=>vp,createAuditEntry:()=>wc,getLastRemoved:()=>m4,openAuditStore:()=>Lp,readAuditEntry:()=>St,removeAuditEntry:()=>Mp,setAuditRetention:()=>p4,transactionKeyEncoder:()=>BL});function Lp(e){let t=e.auditStore=e.openDB(SR.AUDIT_STORE_NAME,{create:!1,...Vf});t||(t=e.auditStore=e.openDB(SR.AUDIT_STORE_NAME,Vf),PL(t,1)),t.rootStore=e,t.tableStores=[];let r=[];t.addDeleteRemovalCallback=function(l,u,f){return r[l]=f,t.tableStores[l]=u,t.deleteCallbacks=r,{remove(){delete r[l]}}};let n=null,s,i=0,o=AR;Gf(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(o=l),clearTimeout(n);let u=new Promise(f=>{n=setTimeout(async()=>{if(await s,s=u,t.rootStore.status==="closed"||t.rootStore.status==="closing")return;let d=0,_,h;try{for(let{key:m,value:S}of t.getRange({start:1,snapshot:!1,end:Date.now()-TR/(1+i*i)})){try{_=Mp(t,m,S)}catch(g){lu.warn("Error removing audit entry",g)}if(h=m,await new Promise(setImmediate),++d>=h4){o=10;break}}await _}finally{d===0?o=Math.min(o<<1,TR/10):(PL(t,h),o>100&&(o=o>>1)),f(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,$f.getWorkerIndex)()===(0,$f.getWorkerCount)()-1&&c(),(0,$f.getWorkerIndex)()===0&&!CL)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(CL=!0,lu.error("The current time is before the last recorded entry in the audit log. Time reversal can undermine the integrity of data tracking and certificate validation and the time must be corrected."));return t}function Mp(e,t,r){let n=g4(r),s;if(n&Ur){s=St(r);let i=e.tableStores[s.tableId];if(i){let o=s.type==="message"?null:i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&oo(()=>aa(s.getValue(i)),i.rootStore)}}if((n&15)===RR){s=s||St(r);let i=s.tableId;e.tableStores[s.tableId]?.getEntry(s.recordId)?.version===s.version&&e.deleteCallbacks?.[i]?.(s.recordId,s.version)}return e.remove(t)}function PL(e,t){yR[0]=t,e.put(Symbol.for("last-removed"),HL)}function m4(e){let t=e.get(Symbol.for("last-removed"));if(t)return HL.set(t),yR[0]}function p4(e,t=AR){TR=e,AR=t}function wc(e,t,r,n,s,i,o,c,l,u,f,d,_){let h=kL[o];if(!h)throw new Error(`Invalid audit entry type ${o}`);let m=1;if(n&&(n>1?ca.setFloat64(0,n):_s.set(lR),m=9),l){if(l&255)throw new Error("Illegal extended type");m+=3}R(s),R(t),g(r),ca.setFloat64(m,e),m+=8,l&Cc&&R(u),l&Pc&&R(f),l&Ff&&(ca.setFloat64(m,d),m+=8),l&kf&&R(FL[_]),i?g(i):_s[m++]=0,l?ca.setUint32(n?8:0,h|l|3221225472):_s[n?8:0]=h;let S=_s.subarray(0,m);if(c)return Buffer.concat([S,c]);return S;function g(E){let T=m;m+=1,m=(0,Dc.writeKey)(E,_s,m);let N=m-T-1;N>127?N>16383?(lu.error("Key or username was too large for audit entry",E),m=T+1,_s[T]=0):(_s.copyWithin(T+2,T+1,m),ca.setUint16(T,N|32768),m++):_s[T]=N}function R(E){E<128?_s[m++]=E:E<16384?(ca.setUint16(m,E|32768),m+=2):E<1056964608?(ca.setUint32(m,E|3221225472),m+=4):(_s[m]=255,ca.setUint32(m+1,E),m+=5)}}function g4(e){let t=0;e[0]==66&&(t=8);let r=e[t];if(r<128)return r;let n=e.dataView||(e.dataView=new Lc(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function St(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new Lc(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),o=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,f=n.position+=l,d=n.readFloat64(),_,h,m,S;if(i&Cc&&(_=n.readInt()),i&Pc&&(h=n.readInt()),i&Ff&&(m=n.readFloat64()),i&kf){let T=n.readInt();S=FL[T]}l=n.readInt();let g=n.position,R=n.position+=l,E;return{type:kL[i&7],tableId:c,nodeId:o,get recordId(){return(0,Dc.readKey)(e,u,f)},getBinaryRecordId(){return e.subarray(u,f)},version:d,previousLocalTime:s,get user(){return R>g?(0,Dc.readKey)(e,g,R):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(T,N,M){if(i&Pp||i&qf&&!N)return E||(E=oo(()=>T.decoder.decode(e.subarray(n.position,r)),T.rootStore)),E;if(i&qf&&M)return _R(T.getEntry(this.recordId),M,T)},getBinaryValue(){return i&(Pp|qf)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:_,previousResidencyId:h,expiresAt:m,originatingOperation:S}}catch(n){return lu.error("Reading audit entry error",n,e),{}}}var Dc,Dp,SR,$f,xL,lu,_s,ca,BL,Vf,TR,h4,yR,HL,AR,CL,Pp,qf,DL,RR,LL,ML,vL,UL,Tp,E4,vp,Cc,Pc,kf,Ff,Ur,kL,FL,Lc,Ai=Re(()=>{Dc=require("ordered-binary"),Dp=v(le()),SR=v(Ft());k();$f=v(it()),xL=v(ie());cu();lu=v(ee());Op();hn();Cp();(0,Dp.initSync)();_s=Buffer.alloc(2816),ca=new DataView(_s.buffer,_s.byteOffset,2816),BL={writeKey(e,t,r){return e===Hf?(t.set(Hf,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,Dc.writeKey)(e,t,r)},readKey(e,t,r){return e[t]===66?(e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))).getFloat64(t):(0,Dc.readKey)(e,t,r)}},Vf={encoding:"binary",keyEncoder:BL},TR=(0,xL.convertToMS)((0,Dp.get)(x.LOGGING_AUDITRETENTION))||86400*3,h4=1e3,yR=new Float64Array(1),HL=new Uint8Array(yR.buffer),AR=1e4,CL=!1;a(Lp,"openAuditStore");a(Mp,"removeAuditEntry");a(PL,"updateLastRemoved");a(m4,"getLastRemoved");a(p4,"setAuditRetention");Pp=16,qf=32,DL=1,RR=2,LL=3,ML=4,vL=5,UL=6,Tp=14,E4=15,vp=11,Cc=512,Pc=1024,kf=2048,Ff=4096,Ur=8192,kL={put:DL|Pp,[DL]:"put",delete:RR,[RR]:"delete",message:LL|Pp,[LL]:"message",invalidate:ML|qf,[ML]:"invalidate",patch:vL|qf,[vL]:"patch",relocate:UL,[UL]:"relocate"},FL={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(wc,"createAuditEntry");a(g4,"readAction");a(St,"readAuditEntry");Lc=class extends DataView{static{a(this,"Decoder")}position=0;readInt(){let t;return t=this.getUint8(this.position++),t>=128?t>=192?t===255?(t=this.getUint32(this.position),this.position+=4,t):(t=this.getUint32(this.position-1)&1073741823,this.position+=3,t):(t=this.getUint16(this.position-1)&32767,this.position++,t):t}readFloat64(){try{let t=this.getFloat64(this.position);return this.position+=8,t}catch(t){throw t.message=`Error reading float64: ${t.message} at position ${this.position}`,t}}}});function NR(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=$L,S4(e.primaryStore,e.auditStore)):(c=qL,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{VL(qL[i])})));let l=c[i]||(c[i]=[]);if(l.auditStore=e.auditStore,l.lastTxnTime==null&&(l.lastTxnTime=Date.now()),s?.scope==="full-database")return;let u=l[o];u||(u=l[o]=new Map,u.envs=l,u.tableId=o,u.store=e.primaryStore),t=eu(t);let f=new OR(r);f.startTime=n;let d=u.get(t);return d?d.push(f):(u.set(t,d=[f]),d.tables=u,d.key=t),f.subscriptions=d,f}function VL(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),KL(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=St(s),o=e[i.tableId];if(!o)continue;let c=i.recordId,l=eu(c),u=0;do{let f=o.get(l);if(f){for(let _ of f)if(!(u>0&&!(_.includeDescendants&&!(_.onlyChildren&&u>1)))){if(_.startTime>=n){(0,bR.info)("omitting",c,_.startTime,n);continue}try{let h;_.supportsTransactions&&_.txnInProgress!==i.version&&(h=!0,_.txnInProgress||(r?r.push(_):r=[_]),_.txnInProgress=i.version),_.listener(c,i,n,h)}catch(h){console.error(h),(0,bR.info)(h)}}}if(l==null)break;let d=l.lastIndexOf?.("/",l.length-2);d!==l.length-1&&u++,d>-1?l=l.slice(0,d+1):l=null}while(!0)}if(r)for(let n of r)n.txnInProgress=null,n.listener(null,{type:"end_txn"},e.lastTxnTime,!0)}function S4(e,t){let r=t||e,n=r.env;if(!n.hasAfterCommitListener){n.hasAfterCommitListener=!0;let s=n.path;r.on("aftercommit",({next:i,last:o,txnId:c})=>{let l=$L[s];if(!l)return;let u=a(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),l.txnTime=r.threadLocalWrites[0]||Date.now();try{VL(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function KL(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function YL(e){return e.nextTransaction||(NR({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),KL(e)),e.nextTransaction}var bR,qL,$L,OR,wR=Re(()=>{bR=v(ee());Ql();tu();Ai();qL=Object.create(null),$L=Object.create(null);a(NR,"addSubscription");OR=class extends xn{static{a(this,"Subscription")}listener;subscriptions;startTime;constructor(t){super(),this.listener=t,this.on("close",()=>this.end())}end(){if(this.subscriptions){if(this.subscriptions.splice(this.subscriptions.indexOf(this),1),this.subscriptions.length===0){let t=this.subscriptions.tables;if(t){let r=this.subscriptions.key;if(t.delete(r),t.size===0){let n=t.envs,s=t.dbi;delete n[s]}}}this.subscriptions=null}}toJSON(){return{name:"subscription"}}};a(VL,"notifyFromTransactionData");a(S4,"listenToCommits");a(KL,"nextTransaction");a(YL,"whenNextTransaction")});var zL=C(($Re,WL)=>{"use strict";var IR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};WL.exports=IR});var jL=C((KRe,QL)=>{"use strict";var CR=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};QL.exports=CR});var Kf=C((WRe,XL)=>{"use strict";var JL=le(),T4=(k(),P(q)),{RecordEncoder:A4}=(cu(),P(AL));JL.initSync();var R4=JL.get(T4.CONFIG_PARAMS.STORAGE_CACHING)!==!1,PR=class{static{a(this,"OpenDBIObject")}constructor(t,r=!1){this.dupSort=t===!0,this.encoding=t?"ordered-binary":"msgpack",this.useVersions=r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=R4&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:A4})}};XL.exports=PR});var Yf=C((QRe,ZL)=>{"use strict";var kn=le(),hs=(k(),P(q));kn.initSync();var Up=class{static{a(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",kn.get(hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=kn.get(hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),kn.get(hs.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=kn.get(hs.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=kn.get(hs.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};ZL.exports=Up;Up.MAX_DBS=1e4});var ft=C((JRe,lM)=>{"use strict";var LR=require("lmdb"),Fs=require("fs-extra"),Fn=require("path"),xp=un(),rM=ee(),En=Un().LMDB_ERRORS_ENUM,Bp=jL(),MR=Kf(),nM=Yf(),la=Ft(),eM=(k(),P(q)),{table:y4,resetDatabases:b4}=(xe(),P(ct)),tM=le(),Gs=la.INTERNAL_DBIS_NAME,sM=la.DBI_DEFINITION_NAME,O4="data.mdb",N4="lock.mdb",Wf=".mdb",w4="-lock",DR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=ms(t,r),this.key_type=this.dbi[la.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[la.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new LR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Hp(e,t){if(e===void 0)throw new Error(En.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(En.ENV_NAME_REQUIRED)}a(Hp,"pathEnvNameValidation");async function vR(e,t,r=!0){try{await Fs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(En.INVALID_BASE_PATH):n}try{let n=Fn.join(e,t+Wf);return await Fs.access(n,Fs.constants.R_OK|Fs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Fs.access(Fn.join(e,t,O4),Fs.constants.R_OK|Fs.constants.F_OK),Fn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(En.INVALID_ENVIRONMENT)}else throw new Error(En.INVALID_ENVIRONMENT);throw n}}a(vR,"validateEnvironmentPath");function kp(e,t){if(xp.validateEnv(e),t===void 0)throw new Error(En.DBI_NAME_REQUIRED)}a(kp,"validateEnvDBIName");async function I4(e,t,r=!1,n=!1){Hp(e,t);let s=Fn.basename(e);t=t.toString();let i=tM.get(eM.CONFIG_PARAMS.DATABASES);i||tM.setProperty(eM.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await vR(e,t,n),iM(e,t,r)}catch(o){if(o.message===En.INVALID_ENVIRONMENT){let c=Fn.join(e,t);await Fs.mkdirp(n?c:e);let l=new nM(n?c:c+Wf,!1),u=LR.open(l);u.dbis=Object.create(null);let f=new MR(!1);u.openDB(Gs,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=UR(e,t,r);return u[la.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(I4,"createEnvironment");async function C4(e,t,r,n=!0){Hp(e,t),t=t.toString();let s=Fn.join(e,t);return y4({table:t,database:Fn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(C4,"copyEnvironment");async function iM(e,t,r=!1){Hp(e,t),t=t.toString();let n=UR(e,t,r);if(global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null)),global.lmdb_map[n]!==void 0)return global.lmdb_map[n];let s=await vR(e,t),i=Fn.join(e,t+Wf),o=s!=i,c=new nM(s,o),l=LR.open(c);l.dbis=Object.create(null);let u=aM(l);for(let f=0;f<u.length;f++)ms(l,u[f]);return l[la.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(iM,"openEnvironment");async function P4(e,t,r=!1){Hp(e,t),t=t.toString();let n=Fn.join(e,t+Wf),s=await vR(e,t);if(global.lmdb_map!==void 0){let i=UR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await oM(o),delete global.lmdb_map[i]}}await Fs.remove(s),await Fs.remove(s===n?s+w4:Fn.join(Fn.dirname(s),N4))}a(P4,"deleteEnvironment");async function oM(e){xp.validateEnv(e);let t=e[la.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(oM,"closeEnvironment");function UR(e,t,r=!1){let s=`${Fn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(UR,"getCachedEnvironmentName");function D4(e){xp.validateEnv(e);let t=Object.create(null),r=ms(e,Gs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Gs)try{t[n]=Object.assign(new Bp,s)}catch{rM.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(D4,"listDBIDefinitions");function aM(e){xp.validateEnv(e);let t=[],r=ms(e,Gs);for(let{key:n}of r.getRange({start:!1}))n!==Gs&&t.push(n);return t}a(aM,"listDBIs");function L4(e,t){let n=ms(e,Gs).getEntry(t),s=new Bp;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{rM.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(L4,"getDBIDefinition");function cM(e,t,r,n=!r){if(kp(e,t),t=t.toString(),t===Gs)throw new Error(En.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return ms(e,t)}catch(s){if(s.message===En.DBI_DOES_NOT_EXIST){let i=new MR(r,n===!0),o=e.openDB(t,i),c=new Bp(r===!0,n);return o[sM]=c,ms(e,Gs).putSync(t,c),e.dbis[t]=o,o}throw s}}a(cM,"createDBI");function ms(e,t){if(kp(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Gs?r=L4(e,t):r=new Bp,r===void 0)throw new Error(En.DBI_DOES_NOT_EXIST);let n;try{let s=new MR(r.dup_sort,r.useVersions);if(n=e.openDB(t,s),n.db===void 0)throw new Error("MDB_NOTFOUND")}catch(s){throw s.message.includes("MDB_NOTFOUND")===!0?new Error(En.DBI_DOES_NOT_EXIST):s}return n[sM]=r,e.dbis[t]=n,n}a(ms,"openDBI");function M4(e,t){kp(e,t),t=t.toString();let r=ms(e,t),n=r.getStats();return r[la.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(M4,"statDBI");async function v4(e,t){try{let r=Fn.join(e,t+Wf);return(await Fs.stat(r)).size}catch{throw new Error(En.INVALID_ENVIRONMENT)}}a(v4,"environmentDataSize");function U4(e,t){if(kp(e,t),t=t.toString(),t===Gs)throw new Error(En.CANNOT_DROP_INTERNAL_DBIS_NAME);ms(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],ms(e,Gs).removeSync(t)}a(U4,"dropDBI");function x4(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{ms(e,i)}catch(o){if(o.message===En.DBI_DOES_NOT_EXIST)cM(e,i,i!==t,i===t),n=!0;else throw o}}n&&b4()}a(x4,"initializeDBIs");lM.exports={openDBI:ms,openEnvironment:iM,createEnvironment:I4,listDBIs:aM,listDBIDefinitions:D4,createDBI:cM,dropDBI:U4,statDBI:M4,deleteEnvironment:P4,initializeDBIs:x4,TransactionCursor:DR,environmentDataSize:v4,copyEnvironment:C4,closeEnvironment:oM}});var fM=C((ZRe,dM)=>{"use strict";var xR=ft(),B4=ee(),uM=Un().LMDB_ERRORS_ENUM;dM.exports=H4;async function H4(e){try{if(global.lmdb_map!==void 0&&e.operation!==void 0){let t=Object.keys(global.lmdb_map),r;switch(e.operation){case"drop_schema":for(let i=0;i<t.length;i++){let o=t[i];if(o.startsWith(`${e.schema}.`)||o.startsWith(`txn.${e.schema}.`))try{await xR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==uM.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await xR.closeEnvironment(global.lmdb_map[n]),await xR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==uM.ENV_REQUIRED)throw i}break;case"drop_attribute":r=global.lmdb_map[`${e.schema}.${e.table}`],r!==void 0&&typeof r.dbis=="object"&&r.dbis[`${e.attribute}`]!==void 0&&delete r.dbis[`${e.attribute}`];break;default:break}}}catch(t){B4.error(t)}}a(H4,"cleanLMDBMap")});var ao=C((tye,k4)=>{k4.exports={hdb_user:{hash_attribute:"username",name:"hdb_user",schema:"system",residence:["*"],attributes:[{attribute:"username"},{attribute:"password"},{attribute:"role"},{attribute:"active"},{attribute:"hash"},{attribute:"refresh_token"},{attribute:"hash_function"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_role:{hash_attribute:"id",name:"hdb_role",schema:"system",attributes:[{attribute:"id"},{attribute:"role"},{attribute:"permission"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}],residence:["*"]},hdb_job:{hash_attribute:"id",name:"hdb_job",schema:"system",attributes:[{attribute:"id"},{attribute:"user"},{attribute:"type"},{attribute:"status"},{attribute:"start_datetime"},{attribute:"end_datetime"},{attribute:"message"},{attribute:"created_datetime"},{attribute:"request"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_license:{hash_attribute:"license_key",name:"hdb_license",schema:"system",attributes:[{attribute:"license_key"},{attribute:"company"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_info:{hash_attribute:"info_id",name:"hdb_info",schema:"system",attributes:[{attribute:"info_id"},{attribute:"data_version_num"},{attribute:"hdb_version_num"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_nodes:{hash_attribute:"name",name:"hdb_nodes",schema:"system",attributes:[{attribute:"name"},{attribute:"subscriptions"},{attribute:"system_info"},{attribute:"url"},{attribute:"routes"},{attribute:"revoked_certificates"},{attribute:"shard"}]},hdb_certificate:{hash_attribute:"name",name:"hdb_certificate",schema:"system",attributes:[{attribute:"name"},{attribute:"uses"},{attribute:"certificate"},{attribute:"is_authority"},{attribute:"private_key_name"},{attribute:"details"},{attribute:"is_self_signed"},{attribute:"__updatedtime__"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]},hdb_raw_analytics:{hash_attribute:"id",name:"hdb_raw_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{attribute:"time"},{attribute:"metrics"}]},hdb_temp:{hash_attribute:"id",name:"hdb_temp",schema:"system",attributes:[{attribute:"id"}]},hdb_durable_session:{hash_attribute:"id",name:"hdb_durable_session",schema:"system",attributes:[{attribute:"id"}]},hdb_session_will:{hash_attribute:"id",name:"hdb_session_will",schema:"system",attributes:[{attribute:"id"}]}}});var OM=C((nye,bM)=>{"use strict";var BR=require("recursive-iterator"),F4=require("alasql"),HR=require("clone"),_M=ie(),{handleHDBError:hM,hdb_errors:G4}=he(),{HDB_ERROR_MSGS:mM,HTTP_STATUS_CODES:pM}=G4,{getDatabases:q4}=(xe(),P(ct)),$4=["DISTINCT_ARRAY"],EM=Symbol("validateTables"),kR=Symbol("validateTable"),rye=Symbol("getAllColumns"),gM=Symbol("validateAllColumns"),Fp=Symbol("findColumn"),SM=Symbol("validateOrderBy"),zf=Symbol("validateSegment"),FR=Symbol("validateColumn"),TM=Symbol("setColumnsForTable"),AM=Symbol("checkColumnsForAsterisk"),RM=Symbol("validateGroupBy"),yM=Symbol("hasColumns"),GR=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[EM](),this[AM](),this[gM]()}[EM](){if(this[yM]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[kR](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[kR](t.table)})}}[yM](){let t=!1,r=new BR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[kR](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=q4();if(!r[t.databaseid])throw hM(new Error,mM.SCHEMA_NOT_FOUND(t.databaseid),pM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw hM(new Error,mM.TABLE_NOT_FOUND(t.databaseid,t.tableid),pM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=HR(s);i.table=HR(t),this.attributes.push(i)})}[Fp](t){return this.attributes.filter(r=>t.tableid?(r.table.as===t.tableid||r.table.tableid===t.tableid)&&r.attribute===t.columnid:r.attribute===t.columnid)}[AM](){let t=new BR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[TM](r.tableid)}[TM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new F4.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[gM](){this[zf](this.statement.columns,!1),this[zf](this.statement.joins,!1),this[zf](this.statement.where,!1),this[RM](this.statement.group,!1),this[zf](this.statement.order,!0)}[zf](t,r){if(!t)return;let n=new BR(t),s=[];for(let{node:i,path:o}of n)!_M.isEmpty(i)&&!_M.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[SM](i):s.push(this[FR](i)));return s}[RM](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&$4.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=HR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Fp](n)[0];s&&r.push(s)}}}),this.statement.group.forEach(n=>{let s=null;if(!n.columnid)r.forEach((i,o)=>{if(i.toString()===n.toString()){s=i,r.splice(o,1);return}});else{let i=this[Fp](n);if(!i||i.length===0)throw`unknown column '${n.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${n.toString()}' in group by`;r.forEach((o,c)=>{if(o.attribute===i[0].attribute&&o.table.tableid===i[0].table.tableid){s=o,r.splice(c,1);return}})}if(!s)throw`group by column '${n.toString()}' must be in select`}),r.length>0)throw`select column '${r[0].attribute?r[0].attribute:r[0].toString()}' must be in group by`}[SM](t){let r=this.statement.columns.filter(n=>n.as===t.columnid);if(r.length>1)throw`ambiguous column reference ${(t.tableid?t.tableid+".":"")+t.columnid} in order by`;r.length===0&&this[FR](t)}[FR](t){let r=this[Fp](t),n=(t.tableid?t.tableid+".":"")+t.columnid;if(r.length===0)throw`unknown column ${n}`;if(r.length>1)throw`ambiguous column reference ${n}`;return r[0]}};bM.exports=GR});var wM=C((iye,NM)=>{"use strict";var qR=class{static{a(this,"BridgeMethods")}createSchema(){throw new Error("createSchema bridge method is not defined")}dropSchema(){throw new Error("dropSchema bridge method is not defined")}createTable(){throw new Error("createTable bridge method is not defined")}dropTable(){throw new Error("dropTable bridge method is not defined")}createRecords(){throw new Error("createRecords bridge method is not defined")}updateRecords(){throw new Error("updateRecords bridge method is not defined")}async upsertRecords(){throw new Error("upsertRecords bridge method is not defined")}deleteRecords(){throw new Error("deleteRecords bridge method is not defined")}createAttribute(){throw new Error("createAttribute bridge method is not defined")}dropAttribute(){throw new Error("dropAttribute bridge method is not defined")}searchByConditions(){throw new Error("searchByConditions bridge method is not defined")}searchByHash(){throw new Error("searchByHash bridge method is not defined")}searchByValue(){throw new Error("searchByValue bridge method is not defined")}getDataByHash(){throw new Error("getDataByHash bridge method is not defined")}getDataByValue(){throw new Error("getDataByValue bridge method is not defined")}deleteRecordsBefore(){throw new Error("deleteRecordsBefore bridge method is not defined")}deleteAuditLogsBefore(){throw new Error("deleteAuditLogsBefore bridge method is not defined")}async readAuditLog(){throw new Error("readAuditLog bridge method is not defined")}};NM.exports=qR});var CM=C((aye,IM)=>{"use strict";var $R=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};IM.exports=$R});var DM=C((lye,PM)=>{"use strict";var VR=class{static{a(this,"UpdateRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n,this.original_records=s}};PM.exports=VR});var MM=C((dye,LM)=>{"use strict";var KR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};LM.exports=KR});var vc=C((pye,xM)=>{"use strict";var V4=ft(),K4=CM(),Y4=DM(),W4=MM(),Ri=un(),Qf=Un().LMDB_ERRORS_ENUM,z4=Ft(),co=(k(),P(q)),Q4=ie(),j4=require("uuid"),_ye=require("lmdb"),{handleHDBError:J4,hdb_errors:X4}=he(),{OVERFLOW_MARKER:hye,MAX_SEARCH_KEY_LENGTH:mye}=z4,vM=le();vM.initSync();var Gp=vM.get(co.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),YR=co.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Mc=co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function Z4(e,t,r,n,s=Ri.getNextMonotonicTime()){jR(e,t,r,n),WR(e,t,r);let i=new K4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];UM(u,!0,s);let f=e3(e,t,r,u),d=u[t];o.push(f),c.push(d)}return zR(o,c,n,i,s)}a(Z4,"insertRecords");function e3(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let o=r[i];if(o===t||n.hasOwnProperty(o)===!1)continue;let c=n[o];if(typeof c=="function"){let f=c([[{}]]);Array.isArray(f)&&(c=f[0][co.FUNC_VAL],n[o]=c)}let l=Ri.getIndexedValues(c),u=e.dbis[o];if(l){Gp&&u.prefetch(l.map(f=>({key:f,value:s})),qp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}Gp&&e.dbis[t].prefetch([s],qp),e.dbis[t].put(s,n,n[Mc])})}a(e3,"insertRecord");function t3(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(t3,"removeSkippedRecords");function UM(e,t,r){let n=r>0;(n||!Number.isInteger(e[Mc]))&&(e[Mc]=r||(r=Ri.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[YR]))&&(e[YR]=r||Ri.getNextMonotonicTime()):delete e[YR]}a(UM,"setTimestamps");function WR(e,t,r){r.indexOf(co.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(co.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),V4.initializeDBIs(e,t,r)}a(WR,"initializeTransaction");async function r3(e,t,r,n,s=Ri.getNextMonotonicTime()){jR(e,t,r,n),WR(e,t,r);let i=new Y4,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let f=n[u],d=f[t],_;try{_=QR(e,t,f,d,i,!0,s)}catch{i.skipped_hashes.push(d),o.push(u);continue}c.push(_),l.push(d)}return zR(c,l,n,i,s,o)}a(r3,"updateRecords");async function n3(e,t,r,n,s=Ri.getNextMonotonicTime()){try{jR(e,t,r,n)}catch(l){throw J4(l,l.message,X4.HTTP_STATUS_CODES.BAD_REQUEST)}WR(e,t,r);let i=new W4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;Q4.isEmpty(u[t])?(f=j4.v4(),u[t]=f):f=u[t];let d=QR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return zR(o,c,n,i,s)}a(n3,"upsertRecords");async function zR(e,t,r,n,s,i=[]){let o=await Promise.all(e);for(let c=0,l=o.length;c<l;c++)o[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Ri.getNextMonotonicTime(),t3(r,i),n}a(zR,"finalizeWrite");function QR(e,t,r,n,s,i=!1,o){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,f=u;if(!u){if(i)return!1;u={}}if(UM(r,!f,o),Number.isInteger(r[Mc])&&u[Mc]>r[Mc])return!1;f&&s.original_records.push(u);let d,_=a(()=>{for(let m in r){if(!r.hasOwnProperty(m)||m===t)continue;let S=r[m],g=e.dbis[m];if(g===void 0)continue;let R=u[m];if(typeof S=="function"){let T=S([[u]]);Array.isArray(T)&&(S=T[0][co.FUNC_VAL],r[m]=S)}if(S===R)continue;let E=Ri.getIndexedValues(R);if(E){Gp&&g.prefetch(E.map(T=>({key:T,value:n})),qp);for(let T=0,N=E.length;T<N;T++)g.remove(E[T],n)}if(E=Ri.getIndexedValues(S),E){Gp&&g.prefetch(E.map(T=>({key:T,value:n})),qp);for(let T=0,N=E.length;T<N;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[Mc])},"do_put");return l?d=c.ifVersion(n,l.version,_):d=c.ifNoExists(n,_),d.then(h=>h?!0:QR(e,t,r,n,s,i,o))}a(QR,"updateUpsertRecord");function s3(e,t,r){if(Ri.validateEnv(e),t===void 0)throw new Error(Qf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Qf.WRITE_ATTRIBUTES_REQUIRED):new Error(Qf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(s3,"validateBasic");function jR(e,t,r,n){if(s3(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Qf.RECORDS_REQUIRED):new Error(Qf.RECORDS_MUST_BE_ARRAY)}a(jR,"validateWrite");function qp(){}a(qp,"noop");xM.exports={insertRecords:Z4,updateRecords:r3,upsertRecords:n3}});var ot=C((gye,BM)=>{"use strict";var gn=require("validate.js");gn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||gn.validators.type.checks[t](e)?null:` must be a '${t}' value`};gn.validators.type.checks={Object:a(function(e){return gn.isObject(e)&&!gn.isArray(e)},"Object"),Array:gn.isArray,Integer:gn.isInteger,Number:gn.isNumber,String:gn.isString,Date:gn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};gn.validators.hasValidFileExt=function(e,t){return gn.isString(e)?e===""?"can't be blank":t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`:null};BM.exports={validateObject:i3,validateObjectAsync:o3,validateBySchema:a3};function i3(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=gn(e,t,{format:"flat"});return r?new Error(r):null}a(i3,"validateObject");async function o3(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await gn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(o3,"validateObjectAsync");function a3(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(a3,"validateBySchema")});var kM=C((Tye,HM)=>{"use strict";var c3=require("uuid"),JR=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||c3.v4(),this.schema_table=`${this.schema}.${this.table}`}};HM.exports=JR});var $p=C((Rye,FM)=>{"use strict";var l3=kM(),XR=class extends l3{static{a(this,"LMDBCreateAttributeObject")}constructor(t,r,n,s,i=!0,o=!1){super(t,r,n,s),this.dup_sort=i,this.is_hash_attribute=o}};FM.exports=XR});var qM=C((bye,GM)=>{"use strict";GM.exports=d3;var u3="inserted";function d3(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===u3?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(d3,"returnObject")});var Vp=C((wye,VM)=>{"use strict";var f3=(k(),P(q)),ZR=ft(),_3=vc(),{getSystemSchemaPath:h3,getSchemaPath:m3}=gt(),Nye=ao(),{validateBySchema:p3}=ot(),jf=require("joi"),E3=$p(),g3=qM(),{handleHDBError:S3,hdb_errors:T3,ClientError:A3}=he(),$M=ie(),{HTTP_STATUS_CODES:R3}=T3,y3="inserted";VM.exports=b3;async function b3(e){let t=p3(e,jf.object({database:jf.string(),schema:jf.string(),table:jf.string().required(),attribute:jf.string().required()}));if(t)throw new A3(t.message);let r=!e.skip_table_check&&$M.checkGlobalSchemaTable(e.schema,e.table);if(r)throw S3(new Error,r,R3.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=$M.isEmpty(e.dup_sort)||e.dup_sort=="true";let n=[];if(global.hdb_schema[e.schema]&&global.hdb_schema[e.schema][e.table]&&(n=global.hdb_schema[e.schema][e.table].attributes),Array.isArray(n)&&n.length>0){for(let i of n)if(i.attribute===e.attribute)throw new Error(`attribute '${i.attribute}' already exists in ${e.schema}.${e.table}`)}let s=new E3(e.schema,e.table,e.attribute,e.id);try{let i=await ZR.openEnvironment(m3(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${e.attribute}' already exists in ${e.schema}.${e.table}`);ZR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await ZR.openEnvironment(h3(),f3.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await _3.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return g3(y3,c,{records:[s]},l)}catch(i){throw i}}a(b3,"lmdbCreateAttribute")});var bi=C((Cye,WM)=>{"use strict";var YM=ie(),KM=(k(),P(q)),uu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,yi=require("joi"),ua={schema_format:{pattern:uu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},O3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(uu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number(),yi.array()).required(),N3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(uu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number()),w3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(uu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number()).required();function I3(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>ua.schema_length.maximum?`'${e}' maximum of 250 characters`:uu.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(I3,"checkValidTable");function C3(e,t){return YM.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(C3,"validateSchemaExists");function P3(e,t){let r=t.state.ancestors[0].schema;return YM.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(P3,"validateTableExists");function D3(e,t){return e.toLowerCase()===KM.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${KM.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(D3,"validateSchemaName");WM.exports={common_validators:ua,schema_regex:uu,hdb_schema_table:O3,validateSchemaExists:C3,validateTableExists:P3,validateSchemaName:D3,checkValidTable:I3,hdb_database:N3,hdb_table:w3}});var ty=C((Dye,QM)=>{var{hdb_table:L3,hdb_database:zM}=bi(),M3=ot(),ey=require("joi"),v3={undefined:"undefined",null:"null"},U3=a((e,t)=>{let r=Object.keys(e),n=r.length,s;for(let i=0;i<n;i++){let o=r[i];(!o||o.length===0||v3[o]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${o}'`:s+=`. Invalid attribute name: '${o}'`)}return s?t.message(s):e},"custom_records_val"),x3=ey.object({database:zM,schema:zM,table:L3,records:ey.array().items(ey.object().custom(U3)).required()});QM.exports=function(e){return M3.validateBySchema(e,x3)}});var Jf=C((vye,JM)=>{"use strict";var lo=ie(),jM=ee(),Mye=ty(),{getDatabases:B3}=(xe(),P(ct)),{ClientError:Uc}=he();JM.exports=H3;function H3(e){if(lo.isEmpty(e))throw new Uc("invalid update parameters defined.");if(lo.isEmptyOrZeroLength(e.schema))throw new Uc("invalid schema specified.");if(lo.isEmptyOrZeroLength(e.table))throw new Uc("invalid table specified.");if(!Array.isArray(e.records))throw new Uc("records must be an array");let t=B3()[e.schema]?.[e.table];if(lo.isEmpty(t))throw new Uc(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.primaryKey,n=new Set,s={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(o=>{if(i&&lo.isEmptyOrZeroLength(o[r]))throw jM.error("a valid hash attribute must be provided with update record:",o),new Uc("a valid hash attribute must be provided with update record, check log for more info");if(!lo.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw jM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Uc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!lo.isEmpty(o[r])&&o[r]!==""&&n.has(lo.autoCast(o[r]))&&(o.skip=!0),n.add(lo.autoCast(o[r]));for(let c in o)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}a(H3,"insertUpdateValidate")});var Kp=C((xye,ZM)=>{"use strict";var XM=ie(),k3=(k(),P(q)),F3=ee(),G3=Vp(),q3=$p(),$3=uo(),{SchemaEventMsg:V3}=qs(),K3="already exists in";ZM.exports=Y3;async function Y3(e,t,r){if(XM.isEmptyOrZeroLength(r))return r;let n=[];XM.isEmptyOrZeroLength(t.attributes)||t.attributes.forEach(i=>{n.push(i.attribute)});let s=r.filter(i=>n.indexOf(i)<0);return s.length===0||await Promise.all(s.map(async i=>{await W3(e,t.schema,t.name,i)})),s}a(Y3,"lmdbCheckForNewAttributes");async function W3(e,t,r,n){let s=new q3(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await z3(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(K3))F3.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a(W3,"createNewAttribute");async function z3(e){let t;return t=await G3(e),$3.signalSchemaChange(new V3(process.pid,k3.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(z3,"createAttribute")});var du=C((Hye,ev)=>{"use strict";var ry=class{static{a(this,"LMDBTransactionObject")}constructor(t,r,n,s,i=void 0){this.operation=t,this.user_name=r,this.timestamp=n,this.hash_values=s,this.origin=i}};ev.exports=ry});var rv=C((Fye,tv)=>{"use strict";var Q3=du(),j3=(k(),P(q)).OPERATIONS_ENUM,ny=class extends Q3{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(j3.INSERT,r,n,s,i),this.records=t}};tv.exports=ny});var sv=C((qye,nv)=>{"use strict";var J3=du(),X3=(k(),P(q)).OPERATIONS_ENUM,sy=class extends J3{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(X3.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};nv.exports=sy});var ov=C((Vye,iv)=>{"use strict";var Z3=du(),eX=(k(),P(q)).OPERATIONS_ENUM,iy=class extends Z3{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(eX.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};iv.exports=iy});var cv=C((Yye,av)=>{"use strict";var tX=du(),rX=(k(),P(q)).OPERATIONS_ENUM,oy=class extends tX{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(rX.DELETE,n,s,t,i),this.original_records=r}};av.exports=oy});var Xf=C((Qye,fv)=>{"use strict";var zye=require("path"),lv=ft(),nX=rv(),sX=sv(),iX=ov(),oX=cv(),fu=Ft(),uv=ie(),{CONFIG_PARAMS:aX}=(k(),P(q)),dv=le();dv.initSync();var Yp=(k(),P(q)).OPERATIONS_ENUM,{getTransactionAuditStorePath:cX}=gt();fv.exports=lX;async function lX(e,t){if(dv.get(aX.LOGGING_AUDITLOG)===!1)return;let r=cX(e.schema,e.table),n=await lv.openEnvironment(r,e.table,!0),s=uX(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){lv.initializeDBIs(n,fu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,fu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[fu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[fu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),uv.isEmpty(s.user_name)||n.dbis[fu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[fu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a(lX,"writeTransaction");function uX(e,t){let r=uv.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===Yp.INSERT)return new nX(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Yp.UPDATE)return new sX(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Yp.UPSERT)return new iX(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Yp.DELETE)return new oX(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(uX,"createTransactionObject")});var ay=C((Xye,_v)=>{"use strict";var dX=Jf(),Jye=gf(),Zf=(k(),P(q)),fX=Sf(),_X=vc().insertRecords,hX=ft(),mX=ee(),pX=Kp(),{getSchemaPath:EX}=gt(),gX=Xf();_v.exports=SX;async function SX(e){try{let{schema_table:t,attributes:r}=dX(e);fX(e,r,t.hash_attribute),e.schema!==Zf.SYSTEM_SCHEMA_NAME&&(r.includes(Zf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Zf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Zf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Zf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await pX(e.hdb_auth_header,t,r),s=EX(e.schema,e.table),i=await hX.openEnvironment(s,e.table),o=await _X(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await gX(e,o)}catch(c){mX.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(SX,"lmdbCreateRecords")});var pv=C((ebe,mv)=>{"use strict";var hv=(k(),P(q)),TX=ay(),AX=gf(),RX=require("fs-extra"),{getSchemaPath:yX}=gt();mv.exports=bX;async function bX(e){let t=[{name:e.schema,createddate:Date.now()}],r=new AX(hv.SYSTEM_SCHEMA_NAME,hv.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await TX(r),await RX.mkdirp(yX(e.schema))}a(bX,"lmdbCreateSchema")});var gv=C((rbe,Ev)=>{"use strict";var cy=class{static{a(this,"DeleteRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.deleted=t,this.skipped=r,this.txn_time=n,this.original_records=s}};Ev.exports=cy});var Rv=C((abe,Av)=>{"use strict";var Sv=ft(),ly=un(),uy=Un().LMDB_ERRORS_ENUM,OX=Ft(),Tv=ee(),sbe=ie(),NX=require("lmdb"),wX=gv(),IX=(k(),P(q)),{OVERFLOW_MARKER:ibe,MAX_SEARCH_KEY_LENGTH:obe}=OX,CX=IX.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function PX(e,t,r,n){if(ly.validateEnv(e),t===void 0)throw new Error(uy.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(uy.IDS_REQUIRED):new Error(uy.IDS_MUST_BE_ITERABLE);try{let s=Sv.listDBIs(e);Sv.initializeDBIs(e,t,s);let i=new wX,o,c=[],l=[];for(let _=0,h=r.length;_<h;_++)try{o=r[_];let m=e.dbis[t].get(o);if(!m||n&&m[CX]>n){i.skipped.push(o);continue}let S=e.dbis[t].ifVersion(o,NX.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let g=0;g<s.length;g++){let R=s[g];if(!m.hasOwnProperty(R)||R===t)continue;let E=e.dbis[R],T=m[R];if(T!=null)try{let N=ly.getIndexedValues(T);if(N)for(let M=0,H=N.length;M<H;M++)E.remove(N[M],o)}catch{Tv.warn(`cannot delete from attribute: ${R}, ${T}:${o}`)}}});c.push(S),l.push(o),i.original_records.push(m)}catch(m){Tv.warn(m),i.skipped.push(o)}let u=[],f=await Promise.all(c);for(let _=0,h=f.length;_<h;_++)f[_]===!0?i.deleted.push(l[_]):(i.skipped.push(l[_]),u.push(_));let d=0;for(let _=0;_<u.length;_++){let h=u[_];i.original_records.splice(h-d,1),d++}return i.txn_time=ly.getNextMonotonicTime(),i}catch(s){throw s}}a(PX,"deleteRecords");Av.exports={deleteRecords:PX}});var e_=C((lbe,bv)=>{"use strict";var _u=ie(),DX=Rv(),LX=ft(),{getSchemaPath:MX}=gt(),vX=Xf(),UX=ee();bv.exports=xX;async function xX(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(_u.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(_u.isEmptyOrZeroLength(e.hash_values)&&!_u.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];_u.isEmpty(l)||e.hash_values.push(l)}}if(_u.isEmptyOrZeroLength(e.hash_values))return yv([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(_u.isEmptyOrZeroLength(e.records)){e.records=[];for(let c=0;c<e.hash_values.length;c++)e.records[c]={[n]:e.hash_values[c]}}let s=MX(e.schema,e.table),i=await LX.openEnvironment(s,e.table),o=await DX.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await vX(e,o)}catch(c){UX.error(`unable to write transaction due to ${c.message}`)}return yv(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(xX,"lmdbDeleteRecords");function yv(e,t,r){let n=e.length+t.length,s=n===1?"record":"records";return{message:`${e.length} of ${n} ${s} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}a(yv,"createDeleteResponse")});var fy=C((fbe,Ov)=>{"use strict";var BX=(k(),P(q)),dbe=un();function dy(e,t){let r=Object.create(null);if(t.length===1&&BX.SEARCH_WILDCARDS.indexOf(t[0])>=0)Object.assign(r,e);else for(let n=0;n<t.length;n++){let s=t[n],i=e[s];r[s]=i===void 0?null:i}return r}a(dy,"parseRow");function HX(e,t,r,n){let s=dy(r,e);n.push(s)}a(HX,"searchAll");function kX(e,t,r,n){let s=dy(r,e);n[t]=s}a(kX,"searchAllToMap");function FX(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(FX,"iterateDBI");function xc(e,t,r,n,s){let i=Object.create(null);i[s]=e;let o;n===s?o=e:(o=t,n!==void 0&&(i[n]=o)),r[0].push(o),r[1].push(i)}a(xc,"pushResults");function GX(e,t,r,n,s,i){t.toString().endsWith(e)&&xc(t,r,n,s,i)}a(GX,"endsWith");function qX(e,t,r,n,s,i){t.toString().includes(e)&&xc(t,r,n,s,i)}a(qX,"contains");function $X(e,t,r,n,s,i){t>e&&xc(t,r,n,s,i)}a($X,"greaterThanCompare");function VX(e,t,r,n,s,i){t>=e&&xc(t,r,n,s,i)}a(VX,"greaterThanEqualCompare");function KX(e,t,r,n,s,i){t<e&&xc(t,r,n,s,i)}a(KX,"lessThanCompare");function YX(e,t,r,n,s,i){t<=e&&xc(t,r,n,s,i)}a(YX,"lessThanEqualCompare");Ov.exports={parseRow:dy,searchAll:HX,searchAllToMap:kX,iterateDBI:FX,endsWith:GX,contains:qX,greaterThanCompare:$X,greaterThanEqualCompare:VX,lessThanCompare:KX,lessThanEqualCompare:YX,pushResults:xc}});var hu=C((Ebe,Lv)=>{"use strict";var da=ft(),hbe=ee(),Gn=un(),Wp=Ft(),zt=Un().LMDB_ERRORS_ENUM,mbe=ie(),WX=(k(),P(q)),zp=fy(),{parseRow:zX}=zp,pbe=require("lmdb"),{OVERFLOW_MARKER:Nv,MAX_SEARCH_KEY_LENGTH:QX}=Wp;function wv(e,t,r,n=!1,s=void 0,i=void 0){return Bc(e,t,r,(o,c)=>c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}))}a(wv,"iterateFullIndex");function t_(e,t,r,n,s,i=!1,o=void 0,c=void 0,l=!1,u=!1){return Bc(e,t,r,(f,d,_,h)=>{let E={transaction:f,start:i===!0?s:n,end:i===!0?n:s,reverse:i,limit:o,offset:c,inclusiveEnd:i===!0?!l:!u,exclusiveStart:i===!0?u:l};return h===r?(E.values=!1,d.getRange(E).map(T=>({value:T}))):d.getRange(E)})}a(t_,"iterateRangeBetween");function Bc(e,t,r,n){let s=e.database||e,i=da.openDBI(s,r);i[Wp.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&da.openDBI(s,t);let o;e.database?o=e:(o=e.useReadTransaction(),o.database=e);let c=n(o,i,s,t);return c.transaction=o,e.database||(c.onDone=()=>{o.done()}),c}a(Bc,"setupTransaction");function Iv(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(Nv)){if(!s)if(r)s=da.openDBI(e,r);else{let l=da.listDBIs(e);for(let u=0,f=l.length;u<f&&(s=da.openDBI(e,l[u]),!s[Wp.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(Iv,"getOverflowCheck");function jX(e,t,r,n=!1,s=void 0,i=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return Bc(e,t,t,(o,c,l)=>(Qp(r),r=r_(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>zX(u.value,r))))}a(jX,"searchAll");function JX(e,t,r,n=!1,s=void 0,i=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);Qp(r),r=r_(e.database||e,r);let o=new Map;for(let{key:c,value:l}of wv(e,t,t,n,s,i))o.set(c,zp.parseRow(l,r));return o}a(JX,"searchAllToMap");function XX(e,t,r=!1,n=void 0,s=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=wv(e,void 0,t,r,n,s),c=o.transaction,l=Iv(c.database,c,void 0,t);for(let{key:u,value:f}of o){let d=l(u,f);i[d]===void 0&&(i[d]=[]),i[d].push(f)}return i}a(XX,"iterateDBI");function ZX(e,t){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return da.statDBI(e,t).entryCount}a(ZX,"countAll");function e6(e,t,r,n,s=!1,i=void 0,o=void 0){return fa(e,r,n),Bc(e,t,r,(c,l,u,f)=>(n=Gn.convertKeyValueToWrite(n),f===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:o}).map(d=>({key:n,value:d}))))}a(e6,"equals");function t6(e,t,r){return fa(e,t,r),da.openDBI(e,t).getValuesCount(r)}a(t6,"count");function r6(e,t,r,n,s=!1,i=void 0,o=void 0){return fa(e,r,n),Bc(e,null,r,(c,l)=>{n=Gn.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let f;if(s===!0){let d;for(let _ of l.getKeys({transaction:c,start:n}))if(!_.startsWith(n)){d=_;break}return d!==void 0&&(Number.isInteger(o)?o++:i++),f=l.getRange({transaction:c,start:d,end:void 0,reverse:s,limit:i,offset:o}).map(_=>{let{key:h}=_;if(h!==d){if(h.toString().startsWith(n))return _;if(u===!0)return f.DONE}}),f.filter(_=>_)}else return f=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:o}).map(d=>{if(d.key.toString().startsWith(n))return d;if(u===!0)return f.DONE}),u?f:f.filter(d=>d)})}a(r6,"startsWith");function n6(e,t,r,n,s=!1,i=void 0,o=void 0){return Cv(e,t,r,n,s,i,o,!0)}a(n6,"endsWith");function Cv(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return fa(e,r,n),Bc(e,null,r,(l,u,f,d)=>{let _=Iv(f,l,d,r);return o=Number.isInteger(o)?o:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(h=>{let m=h.toString();return m.endsWith(Nv)?u.getValues(h,{transaction:l}).map(S=>{let g=_(h,S);if(c?g.endsWith(n):g.includes(n))return{key:g,value:S}}).filter(S=>S):(c?m.endsWith(n):m.includes(n))?u[Wp.DBI_DEFINITION_NAME].is_hash_attribute?{key:h,value:h}:u.getValues(h,{transaction:l}).map(S=>({key:h,value:S})):[]}).slice(o,i===void 0?void 0:i+(o||0))})}a(Cv,"contains");function s6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),t_(e,t,r,n,l,s,i,o,!0,!1)}a(s6,"greaterThan");function i6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),t_(e,t,r,n,l,s,i,o,!1,!1)}a(i6,"greaterThanEqual");function o6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),t_(e,t,r,l,n,s,i,o,!1,!0)}a(o6,"lessThan");function a6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),t_(e,t,r,l,n,s,i,o,!1,!1)}a(a6,"lessThanEqual");function c6(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(Gn.validateEnv(e),r===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(zt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(zt.END_VALUE_REQUIRED);if(n=Gn.convertKeyValueToWrite(n),s=Gn.convertKeyValueToWrite(s),n>s)throw new Error(zt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return t_(e,t,r,n,s,i,o,c)}a(c6,"between");function l6(e,t,r,n){Gn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(Qp(r),r=r_(s,r),n===void 0)throw new Error(zt.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=zp.parseRow(c,r)),o}a(l6,"searchByHash");function u6(e,t,r){Gn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(u6,"checkHashExists");function d6(e,t,r,n,s=[]){return Dv(e,t,r,n,s),Pv(e,t,r,n,s).map(i=>i[1])}a(d6,"batchSearchByHash");function f6(e,t,r,n,s=[]){Dv(e,t,r,n,s);let i=new Map;for(let[o,c]of Pv(e,t,r,n,s))i.set(o,c);return i}a(f6,"batchSearchByHashToMap");function Pv(e,t,r,n,s=[]){return Bc(e,t,t,(i,o,c)=>{r=r_(c,r);let l=r.length<3;return n.map(u=>{let f=c.dbis[t].get(u,{transaction:i,lazy:l});if(f)return[u,zp.parseRow(f,r)];s.push(u)}).filter(u=>u)})}a(Pv,"batchHashSearch");function Dv(e,t,r,n,s){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(Qp(r),n==null)throw new Error(zt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(zt.IDS_MUST_BE_ITERABLE)}a(Dv,"initializeBatchSearchByHash");function Qp(e){if(!Array.isArray(e))throw e===void 0?new Error(zt.FETCH_ATTRIBUTES_REQUIRED):new Error(zt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Qp,"validateFetchAttributes");function fa(e,t,r){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.SEARCH_VALUE_REQUIRED);if(r?.length>QX)throw new Error(zt.SEARCH_VALUE_TOO_LARGE)}a(fa,"validateComparisonFunctions");function r_(e,t){return t.length===1&&WX.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=da.listDBIs(e)),t}a(r_,"setGetWholeRowAttributes");Lv.exports={searchAll:jX,searchAllToMap:JX,count:t6,countAll:ZX,equals:e6,startsWith:r6,endsWith:n6,contains:Cv,searchByHash:l6,setGetWholeRowAttributes:r_,batchSearchByHash:d6,batchSearchByHashToMap:f6,checkHashExists:u6,iterateDBI:XX,greaterThan:s6,greaterThanEqual:i6,lessThan:o6,lessThanEqual:a6,between:c6}});var mu=C((Sbe,Bv)=>{var Mv=require("lodash"),vv=ot(),Ge=require("joi"),_6=ie(),{hdb_schema_table:n_,checkValidTable:Uv,hdb_table:xv,hdb_database:jp}=bi(),{handleHDBError:h6,hdb_errors:m6}=he(),{getDatabases:p6}=(xe(),P(ct)),{HTTP_STATUS_CODES:E6}=m6,g6=Ge.object({database:jp,schema:jp,table:xv,search_attribute:n_,search_value:Ge.any().required(),get_attributes:Ge.array().min(1).items(Ge.alternatives(n_,Ge.object())).optional(),desc:Ge.bool(),limit:Ge.number().integer().min(1),offset:Ge.number().integer().min(0)}),S6=Ge.object({database:jp,schema:jp,table:xv,operator:Ge.string().valid("and","or").default("and").lowercase(),offset:Ge.number().integer().min(0),limit:Ge.number().integer().min(1),get_attributes:Ge.array().min(1).items(Ge.alternatives(n_,Ge.object())).optional(),sort:Ge.object({attribute:Ge.alternatives(n_,Ge.array().min(1)),descending:Ge.bool().optional()}).optional(),conditions:Ge.array().min(1).items(Ge.alternatives(Ge.object({operator:Ge.string().valid("and","or").default("and").lowercase(),conditions:Ge.array()}),Ge.object({search_attribute:Ge.alternatives(n_,Ge.array().min(1)),search_type:Ge.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:Ge.when("search_type",{switch:[{is:"equals",then:Ge.any()},{is:"between",then:Ge.array().items(Ge.alternatives([Ge.string(),Ge.number()])).length(2)}],otherwise:Ge.alternatives(Ge.string(),Ge.number())}).required()}))).required()});Bv.exports=function(e,t){let r=null;switch(t){case"value":r=vv.validateBySchema(e,g6);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(Uv("database",e.schema)),i(Uv("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(o=>typeof o=="string"||typeof o=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(o=>typeof o=="string"||typeof o=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),s&&(r=new Error(s.trim()));break;case"conditions":r=vv.validateBySchema(e,S6);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=_6.checkGlobalSchemaTable(e.schema,e.table);if(s)return h6(new Error,s,E6.NOT_FOUND);let o=p6()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.search_attribute);let l=a(f=>{for(let d=0,_=f.conditions.length;d<_;d++){let h=f.conditions[d];h.conditions?l(h):c.push(h.search_attribute)}},"addConditions");t==="conditions"&&l(e);let u=Mv.filter(c,f=>f!=="*"&&!f.startsWith?.("$")&&f.attribute!=="*"&&!Array.isArray(f)&&!f.name&&!Mv.some(o,d=>d===f||d.attribute===f||d.attribute===f.attribute));if(u&&u.length>0){let f=u.join(", ");return f=f.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${f}'`)}}return r}});var _y=C((Abe,Hv)=>{"use strict";var T6=ft(),A6=mu(),{getSchemaPath:R6}=gt();Hv.exports=y6;function y6(e){let t=A6(e,"hashes");if(t)throw t;let r=R6(e.schema,e.table);return T6.openEnvironment(r,e.table)}a(y6,"initialize")});var hy=C((ybe,kv)=>{"use strict";var b6=hu(),O6=_y();kv.exports=N6;async function N6(e){let t=await O6(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return b6.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(N6,"lmdbGetDataByHash")});var pu=C((Obe,Fv)=>{"use strict";var my=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};Fv.exports=my});var qv=C((Ibe,Gv)=>{"use strict";var wbe=pu(),w6=hu(),I6=_y();Gv.exports=C6;async function C6(e){let t=await I6(e),r=global.hdb_schema[e.schema][e.table];return w6.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(C6,"lmdbSearchByHash")});var $s=C((Pbe,$v)=>{"use strict";var py=class{static{a(this,"SearchObject")}constructor(t,r,n,s,i,o,c,l=!1,u=void 0,f=void 0){this.schema=t,this.table=r,this.search_attribute=n,this.search_value=s,this.hash_attribute=i,this.get_attributes=o,this.end_value=c,this.reverse=l,this.limit=u,this.offset=f}};$v.exports=py});var Jp=C((Lbe,Qv)=>{"use strict";var Wr=hu(),P6=ft(),D6=ie(),qe=Ft(),Hc=(k(),P(q)),L6=ao(),Vv=Un().LMDB_ERRORS_ENUM,{getSchemaPath:M6}=gt(),fo=Hc.SEARCH_WILDCARDS;async function v6(e,t,r){let n;e.schema===Hc.SYSTEM_SCHEMA_NAME?n=L6[e.table]:n=global.hdb_schema[e.schema][e.table];let s=zv(e,n.hash_attribute,r,t);return Yv(e,s,n.hash_attribute,r)}a(v6,"prepSearch");async function Yv(e,t,r,n){let s=M6(e.schema,e.table),i=await P6.openEnvironment(s,e.table),o=Wv(i,e,t,r),c=o.transaction||i;if([qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,qe.SEARCH_TYPES.SEARCH_ALL,qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(U6(e,r)===!1){let f=e.search_attribute;if(f===r)return n?Kv(o,()=>!0):o.map(_=>({[r]:_.key}));let d=a(_=>({[r]:_.value,[f]:_.key}),"toObject");return n?Kv(o,d):o.map(d)}let u=e.search_attribute===r?o.map(f=>f.key):o.map(f=>f.value);return n===!0?Wr.batchSearchByHashToMap(c,r,e.get_attributes,u):Wr.batchSearchByHash(c,r,e.get_attributes,u)}a(Yv,"executeSearch");function Wv(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:o,limit:c,offset:l}=t;switch(o=typeof o=="boolean"?o:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case qe.SEARCH_TYPES.EQUALS:s=Wr.equals(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.CONTAINS:s=Wr.contains(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.ENDS_WITH:case qe.SEARCH_TYPES._ENDS_WITH:s=Wr.endsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.STARTS_WITH:case qe.SEARCH_TYPES._STARTS_WITH:s=Wr.startsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return Wr.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return Wr.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case qe.SEARCH_TYPES.SEARCH_ALL:return Wr.searchAll(e,n,t.get_attributes,o,c,l);case qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return Wr.searchAllToMap(e,n,t.get_attributes,o,c,l);case qe.SEARCH_TYPES.BETWEEN:s=Wr.between(e,i,t.search_attribute,t.search_value,t.end_value,o,c,l);break;case qe.SEARCH_TYPES.GREATER_THAN:case qe.SEARCH_TYPES._GREATER_THAN:s=Wr.greaterThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.GREATER_THAN_EQUAL:case qe.SEARCH_TYPES._GREATER_THAN_EQUAL:s=Wr.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.LESS_THAN:case qe.SEARCH_TYPES._LESS_THAN:s=Wr.lessThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.LESS_THAN_EQUAL:case qe.SEARCH_TYPES._LESS_THAN_EQUAL:s=Wr.lessThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;default:return Object.create(null)}return s}a(Wv,"searchByType");function Kv(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(Kv,"createMapFromIterable");function U6(e,t){if(e.get_attributes.length===1&&e.get_attributes[0]==="*")return!0;let r=[e.search_attribute];e.get_attributes.indexOf(t)>=0&&r.push(t);let n=!1;for(let s=0;s<e.get_attributes.length;s++)if(r.indexOf(e.get_attributes[s])<0){n=!0;break}return n}a(U6,"checkToFetchMore");function zv(e,t,r,n){if(D6.isEmpty(n)){let s=e.search_value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),o=s.charAt(s.length-1),c=!1;if(e.search_attribute===t&&(c=!0),fo.indexOf(s)>-1)return r===!0?qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:qe.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(fo[0])<0&&s.indexOf(fo[1])<0)return c===!0?r===!0?qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:qe.SEARCH_TYPES.EQUALS;if(fo.indexOf(i)>=0&&fo.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),qe.SEARCH_TYPES.CONTAINS;if(fo.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),qe.SEARCH_TYPES.ENDS_WITH;if(fo.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),qe.SEARCH_TYPES.STARTS_WITH;if(s.includes(fo[0])||s.includes(fo[1]))return qe.SEARCH_TYPES.EQUALS;throw new Error(Vv.UNKNOWN_SEARCH_TYPE)}else switch(n){case Hc.VALUE_SEARCH_COMPARATORS.BETWEEN:return qe.SEARCH_TYPES.BETWEEN;case Hc.VALUE_SEARCH_COMPARATORS.GREATER:return qe.SEARCH_TYPES.GREATER_THAN;case Hc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return qe.SEARCH_TYPES.GREATER_THAN_EQUAL;case Hc.VALUE_SEARCH_COMPARATORS.LESS:return qe.SEARCH_TYPES.LESS_THAN;case Hc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return qe.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(Vv.UNKNOWN_SEARCH_TYPE)}}a(zv,"createSearchTypeFromSearchObject");Qv.exports={executeSearch:Yv,createSearchTypeFromSearchObject:zv,prepSearch:v6,searchByType:Wv}});var Jv=C((Ube,jv)=>{"use strict";var vbe=$s(),x6=mu(),B6=ie(),H6=(k(),P(q)),k6=Jp();jv.exports=F6;function F6(e,t){if(!B6.isEmpty(t)&&H6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=x6(e,"value");if(n)throw n;return k6.prepSearch(e,t,!0)}a(F6,"lmdbGetDataByValue")});var s_=C((Hbe,Xv)=>{"use strict";var Bbe=$s(),G6=mu(),q6=ie(),$6=(k(),P(q)),V6=Jp();Xv.exports=K6;async function K6(e,t){if(!q6.isEmpty(t)&&$6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=G6(e,"value");if(n)throw n;return V6.prepSearch(e,t,!1)}a(K6,"lmdbSearchByValue")});var eU=C((Gbe,Zv)=>{"use strict";var Fbe=Ft(),Ey=class{static{a(this,"SearchByConditionsObject")}constructor(t,r,n,s,i=void 0,o=void 0,c="and"){this.schema=t,this.table=r,this.get_attributes=n,this.limit=i,this.offset=o,this.conditions=s,this.operator=c}},gy=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},Sy=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};Zv.exports={SearchByConditionsObject:Ey,SearchCondition:gy,SortAttribute:Sy}});var iU=C((Kbe,sU)=>{"use strict";var $be=eU().SearchByConditionsObject,Y6=$s(),W6=mu(),Ty=hu(),Xp=Ft(),{Resource:Vbe}=(na(),P(qA)),nU=Jp(),z6=fy(),Q6=require("lodash"),{getSchemaPath:j6}=gt(),tU=ft(),{handleHDBError:J6,hdb_errors:X6}=he(),{HTTP_STATUS_CODES:Z6}=X6,e8=1e8;sU.exports=t8;async function t8(e){let t=W6(e,"conditions");if(t)throw J6(t,t.message,Z6.BAD_REQUEST,void 0,void 0,!0);e.operator=e.operator?e.operator.toLowerCase():void 0,e.offset=Number.isInteger(e.offset)?e.offset:0;let r=j6(e.schema,e.table),n=await tU.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)tU.openDBI(n,u.search_attribute);let i=Q6.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let f=u.search_type;f===Xp.SEARCH_TYPES.EQUALS?u.estimated_count=Ty.count(n,u.search_attribute,u.search_value):f===Xp.SEARCH_TYPES.CONTAINS||f===Xp.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=e8}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await rU(o,e,i[0],s.hash_attribute),l;if(!e.operator||e.operator.toLowerCase()==="and"){let u=n.dbis[s.hash_attribute],f=i.slice(1).map(nU.filterByType),d=f.length,_=Ty.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(h=>u.get(h,{transaction:o,lazy:!0})),d>0&&(l=l.filter(h=>{for(let m=0;m<d;m++)if(!f[m](h))return!1;return!0})),(e.offset||e.limit!==void 0)&&(l=l.slice(e.offset,e.limit!==void 0?(e.offset||0)+e.limit:void 0)),l=l.map(h=>z6.parseRow(h,_))}else{for(let d=1;d<i.length;d++){let _=i[d],h=await rU(o,e,_,s.hash_attribute);c=c.concat(h)}let u=new Set,f=e.offset||0;c=c.filter(d=>u.has(d)?!1:(u.add(d),!0)).slice(f,e.limit&&e.limit+f),l=Ty.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(t8,"lmdbSearchByConditions");async function rU(e,t,r,n){let s=new Y6(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===Xp.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,nU.searchByType(e,s,i,n).map(o=>o.value)}a(rU,"executeConditionSearch")});var i_=C((Wbe,oU)=>{"use strict";var r8=(k(),P(q)).OPERATIONS_ENUM,Ay=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=r8.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};oU.exports=Ay});var Ry=C((Qbe,hU)=>{"use strict";var uU=$s(),dU=i_(),fU=s_(),_U=e_(),Sn=(k(),P(q)),aU=ie(),cU=ft(),{getTransactionAuditStorePath:n8,getSchemaPath:s8}=gt(),lU=ee();hU.exports=i8;async function i8(e){try{if(aU.isEmpty(global.hdb_schema[e.schema])||aU.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await o8(e),await a8(e);let t=s8(e.schema,e.table);try{await cU.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")lU.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=n8(e.schema,e.table);await cU.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")lU.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(i8,"lmdbDropTable");async function o8(e){let t=new uU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await fU(t)),n=[];for(let i=0;i<r.length;i++){let o=r[i];n.push(o.id)}if(n.length===0)return;let s=new dU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await _U(s)}a(o8,"deleteAttributesFromSystem");async function a8(e){let t=new uU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await fU(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let o=r[i];o.name===e.table&&o.schema===e.schema&&(n=o)}if(!n)throw new Error(`${e.schema}.${e.table} was not found`);let s=new dU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await _U(s)}catch(i){throw i}}a(a8,"dropTableFromSystem")});var pU=C((Jbe,mU)=>{"use strict";var c8=require("fs-extra"),l8=$s(),u8=pu(),d8=i_(),f8=Ry(),_8=e_(),h8=hy(),m8=s_(),_o=(k(),P(q)),{getSchemaPath:p8}=gt(),{handleHDBError:E8,hdb_errors:g8}=he(),{HDB_ERROR_MSGS:S8,HTTP_STATUS_CODES:T8}=g8;mU.exports=A8;async function A8(e){let t;try{t=await R8(e.schema);let r=new l8(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await m8(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await f8(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new d8(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await _8(s);let i=p8(t);await c8.remove(i)}catch(r){throw r}}a(A8,"lmdbDropSchema");async function R8(e){let t=new u8(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await h8(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw E8(new Error,S8.SCHEMA_NOT_FOUND(e),T8.NOT_FOUND,void 0,void 0,!0);return n}a(R8,"validateDropSchema")});var o_=C((Zbe,EU)=>{"use strict";var yy=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};EU.exports=yy});var Oy=C((rOe,gU)=>{"use strict";var y8=require("fs-extra"),Zp=ft(),{getTransactionAuditStorePath:b8}=gt(),by=Ft(),tOe=o_();gU.exports=O8;async function O8(e){let t;try{let r=b8(e.schema,e.table);await y8.mkdirp(r),t=await Zp.createEnvironment(r,e.table,!0)}catch(r){throw r.message=`unable to create transactions audit environment for ${e.schema}.${e.table} due to: ${r.message}`,r}try{Zp.createDBI(t,by.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),Zp.createDBI(t,by.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),Zp.createDBI(t,by.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}a(O8,"createTransactionsAuditEnvironment")});var AU=C((iOe,TU)=>{"use strict";var Ny=(k(),P(q)),SU=ft(),N8=vc(),{getSystemSchemaPath:w8,getSchemaPath:I8}=gt(),sOe=ao(),C8=Vp(),wy=$p(),P8=ee(),D8=Oy();TU.exports=L8;async function L8(e,t){let r=I8(t.schema,t.table),n=new wy(t.schema,t.table,Ny.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new wy(t.schema,t.table,Ny.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new wy(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await SU.createEnvironment(r,t.table),e!==void 0){let o=await SU.openEnvironment(w8(),Ny.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await N8.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_table_attributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await Iy(n),await Iy(s),await Iy(i)}await D8(t)}catch(o){throw o}}a(L8,"lmdbCreateTable");async function Iy(e){try{await C8(e)}catch(t){P8.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Iy,"createAttribute")});var yU=C((aOe,RU)=>{"use strict";var M8=Jf(),v8=Sf(),U8=Kp(),a_=(k(),P(q)),x8=vc().updateRecords,B8=ft(),{getSchemaPath:H8}=gt(),k8=Xf(),F8=ee();RU.exports=G8;async function G8(e){try{let{schema_table:t,attributes:r}=M8(e);v8(e,r,t.hash_attribute),e.schema!==a_.SYSTEM_SCHEMA_NAME&&(r.includes(a_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(a_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(a_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(a_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await U8(e.hdb_auth_header,t,r),s=H8(e.schema,e.table),i=await B8.openEnvironment(s,e.table),o=await x8(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await k8(e,o)}catch(c){F8.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(G8,"lmdbUpdateRecords")});var OU=C((lOe,bU)=>{"use strict";var q8=(k(),P(q)).OPERATIONS_ENUM,Cy=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=q8.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};bU.exports=Cy});var wU=C((fOe,NU)=>{"use strict";var dOe=OU(),$8=Jf(),V8=Sf(),K8=Kp(),c_=(k(),P(q)),Y8=vc().upsertRecords,W8=ft(),{getSchemaPath:z8}=gt(),Q8=Xf(),j8=ee(),{handleHDBError:J8,hdb_errors:X8}=he();NU.exports=Z8;async function Z8(e){let t;try{t=$8(e)}catch(l){throw J8(l,l.message,X8.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:n}=t;V8(e,n,r.hash_attribute),e.schema!==c_.SYSTEM_SCHEMA_NAME&&(n.includes(c_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(c_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(c_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(c_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await K8(e.hdb_auth_header,r,n),i=z8(e.schema,e.table),o=await W8.openEnvironment(i,e.table),c=await Y8(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await Q8(e,c)}catch(l){j8.error(`unable to write transaction due to ${l.message}`)}return{written_hashes:c.written_hashes,schema_table:r,new_attributes:s,txn_time:c.txn_time}}a(Z8,"lmdbUpsertRecords")});var CU=C((hOe,IU)=>{"use strict";var Py=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};IU.exports=Py});var DU=C((pOe,PU)=>{"use strict";var Dy=class{static{a(this,"DeleteAuditLogsBeforeResults")}constructor(t=void 0,r=void 0,n=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=n}};PU.exports=Dy});var vU=C((SOe,MU)=>{"use strict";var Ly=ft(),{getTransactionAuditStorePath:eZ}=gt(),gOe=CU(),l_=Ft(),tZ=ie(),LU=DU(),rZ=require("util").promisify,nZ=rZ(setTimeout),sZ=1e4,iZ=100;MU.exports=oZ;async function oZ(e){let t=eZ(e.schema,e.table),r=await Ly.openEnvironment(t,e.table,!0),n=Ly.listDBIs(r);Ly.initializeDBIs(r,l_.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new LU;do s=await aZ(r,e.timestamp),i.start_timestamp===void 0&&(i.start_timestamp=s.start_timestamp),s.end_timestamp!==void 0&&(i.end_timestamp=s.end_timestamp),i.transactions_deleted+=s.transactions_deleted,await nZ(iZ);while(s.transactions_deleted>0);return i}a(oZ,"deleteAuditLogsBefore");async function aZ(e,t){let r=new LU;try{let n=e.dbis[l_.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let{key:i,value:o}of n.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),s=n.remove(i);let c=o[l_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];tZ.isEmpty(c)||(s=e.dbis[l_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[l_.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>sZ)break}return await s,r}catch(n){throw n}}a(aZ,"deleteTransactions")});var xU=C((AOe,UU)=>{"use strict";var My=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};UU.exports=My});var HU=C((bOe,BU)=>{"use strict";var cZ=$s(),lZ=i_(),yOe=xU(),Oi=(k(),P(q)),uZ=ie(),vy=ft(),dZ=ao(),fZ=s_(),_Z=e_(),{getSchemaPath:hZ}=gt();BU.exports=mZ;async function mZ(e,t=!0){let r;e.schema===Oi.SYSTEM_SCHEMA_NAME?r=dZ[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await EZ(e),s=hZ(e.schema,e.table),i=await vy.openEnvironment(s,e.table);return t===!0&&await pZ(e,i,r.hash_attribute),vy.dropDBI(i,e.attribute),n}a(mZ,"lmdbDropAttribute");async function pZ(e,t,r){let n=vy.openDBI(t,r),s,i=e.attribute;for(let{key:o,value:c,version:l}of n.getRange({start:!1,versions:!0})){let u={};for(let f in c)f!==i&&(u[f]=c[f]);s=t.dbis[r].put(o,u,l)}await s}a(pZ,"removeAttributeFromAllObjects");async function EZ(e){let t=new cZ(Oi.SYSTEM_SCHEMA_NAME,Oi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await fZ(t)).filter(o=>o[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(uZ.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new lZ(Oi.SYSTEM_SCHEMA_NAME,Oi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return _Z(i)}a(EZ,"dropAttributeFromSystem")});var VU=C((wOe,$U)=>{"use strict";var Uy=ft(),Eu=Ft(),NOe=un(),xy=(k(),P(q)),kU=ie(),{getTransactionAuditStorePath:gZ}=gt(),SZ=hu(),eE=du(),TZ=ee();$U.exports=AZ;async function AZ(e){let t=gZ(e.schema,e.table),r=await Uy.openEnvironment(t,e.table,!0),n=Uy.listDBIs(r);Uy.initializeDBIs(r,Eu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case xy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return FU(r,e.search_values);case xy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,yZ(r,e.search_values,s);case xy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return RZ(r,e.search_values);default:return FU(r)}}a(AZ,"readAuditLog");function FU(e,t=[0,Date.now()]){kU.isEmpty(t[0])&&(t[0]=0),kU.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[Eu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],n;for(let s of r.getKeys({start:t[1]}))if(s!==t[1]){n=s;break}return r.getRange({start:t[0],end:n}).map(({value:s})=>Object.assign(new eE,s))}a(FU,"searchTransactionsByTimestamp");function RZ(e,t=[]){let r=new Map;for(let n=0;n<t.length;n++){let s=t[n],i=[];for(let o of e.dbis[Eu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,qU(e,i))}return Object.fromEntries(r)}a(RZ,"searchTransactionsByUsername");function yZ(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],f=SZ.equals(e,Eu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Eu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let{value:d}of f){let _=Number(d);n.has(_)?n.get(_).push(u.toString()):n.set(_,[u.toString()])}}let s=Array.from(n.keys()),i=qU(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,f=n.get(u);GU(l,"records",r,f,o),GU(l,"original_records",r,f,o)}return Object.fromEntries(o)}a(yZ,"searchTransactionsByHashValues");function GU(e,t,r,n,s){let i=e.timestamp;if(e[t])for(let o=0;o<e[t].length;o++){let c=e[t][o],l=c[r].toString();if(n.indexOf(l)>=0)if(s.has(l)){let u=s.get(l),f=u[u.length-1];if(f.timestamp===i)f[t]=[c];else{let d=new eE(e.operation,e.user_name,i,void 0);d[t]=[c],u.push(d)}}else{let u=new eE(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(GU,"loopRecords");function qU(e,t){let r=[];try{let n=e.dbis[Eu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let s=0;s<t.length;s++)try{let i=n.get(t[s]);if(i){let o=Object.assign(new eE,i);r.push(o)}}catch(i){TZ.warn(i)}return r}catch(n){throw n}}a(qU,"batchSearchTransactions")});var YU=C((DOe,KU)=>{"use strict";var{getSchemaPath:COe}=gt(),POe=ft(),{database:bZ}=(xe(),P(ct));KU.exports={writeTransaction:OZ};async function OZ(e,t,r){return bZ({database:e,table:t}).transaction(r)}a(OZ,"writeTransaction")});var jU=C((MOe,QU)=>{"use strict";var{getSchemaPath:WU}=gt(),zU=ft();QU.exports={flush:NZ,resetReadTxn:wZ};async function NZ(e,t){return(await zU.openEnvironment(WU(e,t),t.toString())).flushed}a(NZ,"flush");async function wZ(e,t){try{(await zU.openEnvironment(WU(e,t),t.toString())).resetReadTxn()}catch{}}a(wZ,"resetReadTxn")});var e0=C((UOe,ZU)=>{"use strict";var{Readable:IZ}=require("stream"),{getDatabases:CZ}=(xe(),P(ct)),{readSync:PZ,openSync:DZ,createReadStream:JU}=require("fs"),{open:LZ}=require("lmdb"),XU=Kf(),MZ=Yf(),{AUDIT_STORE_OPTIONS:vZ}=(Ai(),P(GL)),{INTERNAL_DBIS_NAME:UZ,AUDIT_STORE_NAME:xZ}=Ft();ZU.exports=HZ;var By=32768,BZ=100;async function HZ(e){let t=e.database||e.schema||"data",r=CZ()[t],n=new Date().toISOString(),s=e.tables||e.table&&[e.table];if(s){let u=r[s[0]];if(!u)throw new Error(`Can not find table ${s[0]}`);let f=u.dbisDB,d=LZ({noSync:!0,maxDbs:MZ.MAX_DBS}),_,h=d.openDB(UZ,new XU(!1)),m=f.useReadTransaction(),S=0,g=a(async function(E,T){T.encoding="binary",T.encoder=void 0;let N=d.openDB(E,T),M=f.openDB(E,T);for(let{key:H,version:X,value:W}of M.getRange({start:null,transaction:m,versions:M.useVersions}))_=N.put(H,W,X),S++%BZ===0&&(await new Promise($=>setTimeout($,20)),m.openTimer&&(m.openTimer=0))},"copyDatabase");for(let{key:E,value:T}of f.getRange({transaction:m,start:!1}))if(s.some(N=>E.startsWith?.(N+"/"))){h.put(E,T);let[,N]=E.split("/"),M=!N,H=new XU(!M,M);await g(E,H)}e.include_audit&&await g(xZ,{...vZ}),await _;let R=JU(d.path);return R.headers=l(),R.on("close",()=>{m.done(),d.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=DZ(o.path);return o.transaction(()=>{let u=Buffer.alloc(By);PZ(c,u,0,By),o.resetReadTxn();let f=o.useReadTransaction();f.renew();let d=JU(null,{fd:c,start:By}),_=new IZ.from(async function*(){yield u;for await(let h of d)f.openTimer&&(f.openTimer=0),yield h;f.done()}());return _.headers=l(),_});function l(){let u=new Map;return u.set("content-type","application/octet-stream"),u.set("content-disposition",`attachment; filename="${t}"`),u.set("date",n),u}}a(HZ,"getBackup")});var n0=C((BOe,r0)=>{"use strict";var kZ=ee(),{handleHDBError:FZ}=he(),GZ=wM(),qZ=Vp(),$Z=ay(),VZ=pv(),KZ=e_(),YZ=hy(),WZ=qv(),zZ=Jv(),QZ=s_(),jZ=iU(),JZ=pU(),XZ=AU(),ZZ=yU(),e5=wU(),t5=vU(),r5=Ry(),n5=HU(),s5=VU(),i5=YU(),t0=jU(),o5=e0(),Hy=class extends GZ{static{a(this,"LMDBBridge")}async searchByConditions(t){return jZ(t)}async getDataByHash(t){return await YZ(t)}async searchByHash(t){return await WZ(t)}async getDataByValue(t,r){return await zZ(t,r)}async searchByValue(t){return await QZ(t)}async createSchema(t){return await VZ(t)}async dropSchema(t){return await JZ(t)}async createTable(t,r){return await XZ(t,r)}async dropTable(t){return await r5(t)}async createAttribute(t){return await qZ(t)}async createRecords(t){return await $Z(t)}async updateRecords(t){return await ZZ(t)}async upsertRecords(t){try{return await e5(t)}catch(r){throw FZ(r,null,null,kZ.ERR,r)}}async deleteRecords(t){return await KZ(t)}async dropAttribute(t){return await n5(t)}async deleteAuditLogsBefore(t){return await t5(t)}async readAuditLog(t){return await s5(t)}writeTransaction(t,r,n){return i5.writeTransaction(t,r,n)}flush(t,r){return t0.flush(t,r)}resetReadTxn(t,r){return t0.resetReadTxn(t,r)}getBackup(t){return o5(t)}};r0.exports=Hy});function Tn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function sE(e,t){let r=e.prototype,n={},s=t.attributes||t.properties||[];for(let c of s){let l=c.name,u,f;if(c.resolve)f={get(){return c.resolve(this,this.getContext?.())},set(d){return c.set(this,d)},configurable:!0};else{switch(c.type){case"String":u=a(function(d){if(!(typeof d=="string"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a string, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"ID":u=a(function(d){if(!(typeof d=="string"||d?.length>0&&d.every?.(_=>typeof _=="string")||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a string, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Float":case"Number":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="number"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a number, attempt to assign ${_}`);Tn(this)[l]=d},"set");break;case"Int":u=a(function(d){let _=d?.__op__?d.value:d;if(!(_>>0===_||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs((_>>0)-_)<=1)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be an integer between -2147483648 and 2147483647, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Long":u=a(function(d){let _=d?.__op__?d.value:d;if(!(Math.round(_)===d&&Math.abs(_)<=9007199254740992||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs(_)<=9007199254740992)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"BigInt":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="bigint"||d==null&&c.nullable!==!1))if(typeof _=="string"||typeof _=="number")_=BigInt(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be a number, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Boolean":u=a(function(d){if(!(typeof d=="boolean"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a boolean, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Date":u=a(function(d){if(!(d instanceof Date||d==null&&c.nullable!==!1))if(typeof d=="string"||typeof d=="number")d=new Date(d);else throw new qn.ClientError(`${l} must be a Date, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Bytes":u=a(function(d){if(!(d instanceof Uint8Array||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a Buffer or Uint8Array, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Blob":u=a(function(d){if(!(d instanceof gi||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a Blob, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Any":case void 0:u=a(function(d){Tn(this)[l]=d},"set");break;default:u=a(function(d){if(!(typeof d=="object"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be an object, attempt to assign ${d}`);Tn(this)[l]=d},"set")}f={get(){let d=this.getChanges?.();if(d&&l in d){let h=d[l];if(h?.__op__){let m=this.getRecord()?.[l];return h.update(m)}return h}let _=this.getRecord()?.[l];if(_&&typeof _=="object"){let h=ky(_,c);if(h)return d||this._setChanges(d=Object.create(null)),d[l]=h}return _},set:u,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,n[l]=f,(!(l in r)||Object.getOwnPropertyDescriptor(r,l)?.get?.isAttribute)&&Object.defineProperty(r,l,f)}i("getProperty",function(c){let l=n[c];if(l)return l.get.call(this);let u=this.getChanges();return u?.[c]!==void 0?u[c]:this.getRecord()?.[c]}),i("set",function(c,l){let u=n[c];if(u)return u.set.call(this,l);if(t.sealed)throw new qn.ClientError("Can not add a property to a sealed table schema");Tn(this)[c]=l}),i("deleteProperty",function(c){Tn(this)[c]=void 0}),i("toJSON",function(){let c=this.getChanges?.(),l;for(let f in c){l||(l={...this.getRecord()});let d=c[f];if(d?.__op__){let _=l[f];d=d.update(_)}l[f]=d}return Object.keys(this).length>0&&(l||(l={...this.getRecord()}),Object.assign(l,this)),l||this.getRecord()}),r.get||i("get",r.getProperty),r.delete||i("delete",r.deleteProperty),r.then||i("then",null);function i(c,l){Object.defineProperty(r,c,{value:l,configurable:!0})}a(i,"setMethod");let o=r;do{let c=Object.getPrototypeOf(o);if(c===Object.prototype){Object.setPrototypeOf(o,i0);break}o=c}while(o&&o!==i0)}function ky(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends u_{static{a(this,"TrackedObject")}},sE(r,t)),new r(e)):new u_(e);case Array:let n=new rE(e.length,e);for(let s=0,i=e.length;s<i;s++){let o=e[s];o&&typeof o=="object"&&(o=ky(o,t?.elements)),n[s]=o}return n;default:return e}}function iE(e){let t=e.getChanges?.(),r;for(let s in t){r||(r=e.getRecord?{...e.getRecord()}:{});let i=t[s];if(i&&typeof i=="object")if(i.__op__){let o=r[s];i=i.update(o)}else i=iE(i);r[s]=i}return Object.keys(e).length>0&&(r||(r=e.getRecord?{...e.getRecord()}:{}),Object.assign(r,e)),r||e.getRecord?.()||e}function gu(e,t=e.getChanges?.()){let r;if(e.getRecord&&e.constructor===Array&&!Object.isFrozen(e)){r=e;for(let n=0,s=e.length;n<s;n++){let i=e[n];if(i&&typeof i=="object"){let o=gu(i);o!==i&&r===e&&(r=e.slice(0)),i=o}r[n]=i}return Object.freeze(r)}for(let n in t){r||(r={...e.getRecord?.()});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=hR[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=gu(s);r[n]=s}if(!Array.isArray(e))for(let n in e)a5.call(e,n)&&(r||(r={...e.getRecord?.()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?.()??e}function tE(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[kc]||e.length!==t.length)return!0;for(let r=0,n=e.length;r<n;r++){let s=t[r],i=e[r];if(s&&i?.getRecord?.()===s){if(tE(i))return!0}else return!0}}else{let r=e.getChanges?.();if(r&&!t)return!0;for(let n in r){let s=r[n];if(s&&typeof s=="object"){let i=t[n];if(i&&s.getRecord?.()===i){if(tE(s))return!0}else return!0}else return!0}}return!1}var qn,s0,i0,u_,a5,kc,rE,nE,Fy=Re(()=>{qn=v(he());Op();hn();a(Tn,"getChanges");a(sE,"assignTrackedAccessors");s0=Object.prototype,i0=new Proxy({},{get(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(s0[t])return s0[t];let n=r.getChanges?.();if(n&&t in n)return n[t];let s=r.getRecord?.()?.[t];if(s&&typeof s=="object"){let i=ky(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}});a(ky,"trackObject");u_=class{static{a(this,"GenericTrackedObject")}#e;#t;constructor(t){if(t?.getRecord)throw new Error("Can not track an already tracked object, check for circular references");this.#e=t}getRecord(){return this.#e}setRecord(t){this.#e=t}getChanges(){return this.#t}_setChanges(t){this.#t=t}};sE(u_,{});a(iE,"collapseData");a5=Object.prototype.hasOwnProperty;a(gu,"updateAndFreeze");a(tE,"hasChanges");kc=Symbol.for("has-array-changes"),rE=class extends Array{static{a(this,"TrackedArray")}#e;[kc];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[kc]=!0,super.splice(...t)}push(...t){return this[kc]=!0,super.push(...t)}pop(){return this[kc]=!0,super.pop()}unshift(...t){return this[kc]=!0,super.unshift(...t)}shift(){return this[kc]=!0,super.shift()}};rE.prototype.constructor=Array;nE=class{constructor(t){this.value=t}static{a(this,"Addition")}__op__="add";update(t){return(+t||0)+this.value}}});var _0={};Ue(_0,{ResourceBridge:()=>$y});function Vy({get_attributes:e},t){if(e){if(e[0]==="*"){if(t.schemaDefined)return;e=t.attributes.map(r=>r.name)}return e.forceNulls=!0,e}}function a0(e,t){let r=Ni(e),n=Vy(e,r);if(!r)throw new Vs.ClientError(`Table ${e.table} not found`);let s;n&&r.attributes.length-n.length>2&&n.length<5&&(s=!0);let i={user:e.hdb_user,onlyIfCached:e.onlyIfCached,noCacheStore:e.noCacheStore,noCache:e.noCache,replicateFrom:e.replicateFrom},o;It(i,()=>new Promise(u=>o=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],f;try{f=await r.get({id:u,lazy:s,select:n},i),f=f&&iE(f)}catch(d){f={message:d.toString()}}return t?{value:{key:u,value:f}}:{value:f}}else return o(),{done:!0}},return(u){return o(),{value:u,done:!0}},throw(u){return o(),{done:!0}}}}}}function Ni(e){let t=e.database||e.schema||l5,r=Je()[t];if(!r)throw(0,Vs.handleHDBError)(new Error,c5.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function c0(e,t,r){let n=e.length+t.length,s=n===1?"record":"records";return{message:`${e.length} of ${n} ${s} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}async function*l0(e,t,r,n){let s,i=0;for await(let o of e.getHistory(t,r)){let c=o.operation??o.type;c==="put"&&(c="upsert");let{id:l,version:u,value:f}=o;if(s?.timestamp===u)s.hash_values.push(l),s.records.push(f);else{if(s&&(yield s,i++,n&&n<=i)){s=void 0;break}s={operation:c,user_name:o.user,timestamp:u,hash_values:[l],records:[f]}}}s&&(yield s)}var u0,oE,Vs,d0,Gy,qy,f0,c5,l5,u5,d5,o0,$y,h0=Re(()=>{"use strict";u0=v(n0()),oE=v(mu()),Vs=v(he());xe();d0=v(Jf());k();Gy=v(uo()),qy=v(qs()),f0=v(ie());mc();Fy();({HDB_ERROR_MSGS:c5}=Vs.hdb_errors),l5="data",u5=1e4,d5=10,$y=class extends u0.default{static{a(this,"ResourceBridge")}constructor(t){super(t),o0=this}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);for(let o of t.conditions||[])o?.attribute!==void 0&&(o.search_attribute=o.attribute),o?.comparator!==void 0&&(o.search_type=o.comparator),o?.value!==void 0&&(o.search_value=o.value);let r=(0,oE.default)(t,"conditions");if(r)throw(0,Vs.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=Ni(t);if(!n)throw new Vs.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(o){return o.conditions?(o.conditions=o.conditions.map(i),o):{attribute:o.search_attribute??o.attribute,comparator:o.search_type??o.comparator,value:o.search_value!==void 0?o.search_value:o.value}}return a(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:Vy(t,n),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let o of n)o.is_primary_key?(o.isPrimaryKey=!0,delete o.is_primary_key):o.name===i&&i&&(o.isPrimaryKey=!0);else{if(!i)throw new Vs.ClientError("A primary key must be specified with a `primary_key` property or with `attributes`");n=[{name:i,isPrimaryKey:!0},{name:"__createdtime__",indexed:!0},{name:"__updatedtime__",indexed:!0}]}_t({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await Ni(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=Ni(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=a((o,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(o,l,()=>r.primaryStore.put(o,c,l)).then(u=>{if(!u){let{value:f,version:d}=r.primaryStore.getEntry(o);return i(o,f,d)}})),"deleteRecord");for(let{key:o,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(o,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){Ni(t).dropTable()}createSchema(t){return Su({database:t.schema,table:null}),Gy.signalSchemaChange(new qy.SchemaEventMsg(process.pid,Yt.CREATE_SCHEMA,t.schema))}async dropSchema(t){await Ky(t.schema),Gy.signalSchemaChange(new qy.SchemaEventMsg(process.pid,Yt.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,o0.upsertRecords(t)}async upsertRecords(t){let{schema_table:r,attributes:n}=(0,d0.default)(t),s,i=Je()[t.schema][t.table],o={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(o.replicateTo=t.replicateTo),t.replicatedConfirmation&&(o.replicatedConfirmation=t.replicatedConfirmation),It(o,async c=>{if(!i.schemaDefined){s=[];for(let f of n)i.attributes.find(_=>_.name==f)||s.push(f);s.length>0&&await i.addAttributes(s.map(f=>({name:f,indexed:!0})))}let l=[],u=[];for(let f of t.records){let d=f[i.primaryKey],_=d!=null&&await i.get(d,o);if(t.requires_existing&&!_||t.requires_no_existing&&_){u.push(f[i.primaryKey]);continue}_&&(_=iE(_));for(let h in f)if(Object.prototype.hasOwnProperty.call(f,h)){let m=f[h];if(typeof m=="function")try{let S=m([[_]]);Array.isArray(S)&&(m=S[0].func_val,f[h]=m)}catch(S){throw S.message+="Trying to set key "+h+" on object"+JSON.stringify(f),S}}if(_)for(let h in _)Object.prototype.hasOwnProperty.call(f,h)||(f[h]=_[h]);await(d==null?i.create(f,o):i.put(f,o)),l.push(f[i.primaryKey])}return{txn_time:c.timestamp,written_hashes:l,new_attributes:s,skipped_hashes:u}})}async deleteRecords(t){let r=Je()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),It(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),o=[],c=[];for(let l of i)await r.delete(l,n)?o.push(l):c.push(l);return c0(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=Je()[t.schema][t.table];if(!r.createdTimeProperty)throw new Vs.ClientError("Table must have a '__createdtime__' attribute or @createdTime timestamp defined to perform this operation");let n=await r.search({conditions:[{attribute:r.createdTimeProperty.name,value:Date.parse(t.date),comparator:xm.LESS}]}),s=!1,i=[],o=[],c=0,l=[],u=a(async()=>{let f=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...f.deleted_hashes),o.push(...f.skipped_hashes),await(0,f0.async_set_timeout)(d5),l=[],s=!0},"chunkDelete");for await(let f of n)l.push(f[r.primaryKey]),c++,c%u5===0&&await u();return l.length>0&&await u(),s?c0(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,oE.default)(t,"hashes");if(r)throw r;return a0(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of a0(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&AA[r]===void 0)throw new Error(`Value search comparator - ${r} - is not valid`);t.select!==void 0&&(t.get_attributes=t.select),t.attribute!==void 0&&(t.search_attribute=condition.attribute),t.value!==void 0&&(t.search_value=condition.value);let n=(0,oE.default)(t,"value");if(n)throw n;let s=Ni(t);if(!s)throw new Vs.ClientError(`Table ${t.table} not found`);let i=t.search_value;i.includes?.("*")&&(i.startsWith("*")?i.endsWith("*")?i!=="*"&&(r="contains",i=i.slice(1,-1)):(r="ends_with",i=i.slice(1)):i.endsWith("*")&&(r="starts_with",i=i.slice(0,-1))),r===xm.BETWEEN&&(i=[i,t.end_value]);let o=i==="*"?[]:[{attribute:t.search_attribute,value:i,comparator:r}];return s.search({conditions:o,allowFullScan:!0,limit:t.limit,offset:t.offset,reverse:t.reverse,sort:t.sort,select:Vy(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=Ni(t);t.get_attributes&&!t.get_attributes.includes(s.primaryKey)&&t.get_attributes[0]!=="*"&&t.get_attributes.push(s.primaryKey);for await(let i of this.searchByValue(t,r))n.set(i[s.primaryKey],i);return n}resetReadTxn(t,r){Ni({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return Ni(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=Ni(t),n={};switch(t.search_type){case Bm.HASH_VALUE:for(let i of t.search_values)n[i]=(await r.getHistoryOfRecord(i)).map(o=>{let c=o.operation??o.type;return c==="put"&&(c="upsert"),{operation:c,timestamp:o.version,user_name:o.user,hash_values:[i],records:[o.value]}});return n;case Bm.USERNAME:let s=t.search_values;for await(let i of l0(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n;default:return l0(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(Vy,"getSelect");a(a0,"getRecords");a(Ni,"getTable");a(c0,"createDeleteResponse");a(l0,"groupRecordsInHistory")});var $n=C((zOe,m0)=>{"use strict";var{ResourceBridge:f5}=(h0(),P(_0)),_5=le();_5.initSync();var aE;function h5(){return aE||(aE=new f5,aE)}a(h5,"getBridge");m0.exports=h5()});var S0=C((jOe,g0)=>{"use strict";var p0=require("lodash"),d_=require("mathjs"),m5=require("jsonata"),E0=ie();g0.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?p0.uniqWith(e,p0.isEqual):e,"distinct_array"),searchJSON:p5,mad:f_.bind(null,d_.mad),mean:f_.bind(null,d_.mean),mode:f_.bind(null,d_.mode),prod:f_.bind(null,d_.prod),median:f_.bind(null,d_.median)};function f_(e,t,r,n){return n===1?t==null?[]:[t]:n===2?(t!=null&&r.push(t),r):r!=null&&r.length>0?e(r):null}a(f_,"aggregateFunction");function p5(e,t){if(typeof e!="string"||e.length===0)throw new Error("search json expression must be a non-empty string");let r="__"+e+"__";if(E0.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),E0.isEmpty(this.__ala__.res[r])){let n=m5(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(p5,"searchJSON")});var A0=C((XOe,T0)=>{"use strict";var er=require("moment"),Yy="YYYY-MM-DDTHH:mm:ss.SSSZZ";er.suppressDeprecationWarnings=!0;T0.exports={current_date:a(()=>er().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>er().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return er(e).utc().format("YYYY");case"month":return er(e).utc().format("MM");case"day":return er(e).utc().format("DD");case"hour":return er(e).utc().format("HH");case"minute":return er(e).utc().format("mm");case"second":return er(e).utc().format("ss");case"millisecond":return er(e).utc().format("SSS");default:break}},"extract"),date:a(e=>er(e).utc().format(Yy),"date"),date_format:a((e,t)=>er(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>er(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>er(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=er(e).utc(),s=er(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>er().utc().valueOf(),"now"),get_server_time:a(()=>er().format(Yy),"get_server_time"),offset_utc:a((e,t)=>er(e).utc().utcOffset(t).format(Yy),"offset_utc")}});var O0=C((eNe,b0)=>{"use strict";var E5=require("@turf/area"),g5=require("@turf/length"),S5=require("@turf/circle"),T5=require("@turf/difference"),A5=require("@turf/distance"),R5=require("@turf/boolean-contains"),y5=require("@turf/boolean-equal"),b5=require("@turf/boolean-disjoint"),O5=require("@turf/helpers"),R0=(k(),P(q)),Ke=ie(),ho=ee();b0.exports={geoArea:N5,geoLength:w5,geoCircle:I5,geoDifference:C5,geoDistance:y0,geoNear:P5,geoContains:D5,geoEqual:L5,geoCrosses:M5,geoConvert:v5};function N5(e){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return E5.default(e)}catch(t){return ho.trace(t,e),NaN}}a(N5,"geoArea");function w5(e,t){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return g5.default(e,{units:t||"kilometers"})}catch(r){return ho.trace(r,e),NaN}}a(w5,"geoLength");function I5(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return S5.default(e,t,{units:r||"kilometers"})}catch(n){return ho.trace(n,e,t),NaN}}a(I5,"geoCircle");function C5(e,t){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return T5(e,t)}catch(r){return ho.trace(r,e,t),NaN}}a(C5,"geoDifference");function y0(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return A5.default(e,t,{units:r||"kilometers"})}catch(n){return ho.trace(n,e,t),NaN}}a(y0,"geoDistance");function P5(e,t,r,n){if(Ke.isEmpty(e)||Ke.isEmpty(t))return!1;if(Ke.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return y0(e,t,n)<=r}catch(s){return ho.trace(s,e,t),!1}}a(P5,"geoNear");function D5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return R5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(D5,"geoContains");function L5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return y5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(L5,"geoEqual");function M5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return!b5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(M5,"geoCrosses");function v5(e,t,r){if(Ke.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ke.isEmpty(t))throw new Error("geo_type is required");if(Ke.isEmpty(R0.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(R0.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ke.autoCastJSON(e)),O5[t](e,r)}a(v5,"geoConvert")});var cE=C((rNe,N0)=>{var Fc=S0(),Vn=A0(),wi=O0();N0.exports=e=>{e.aggr.mad=e.aggr.MAD=Fc.mad,e.aggr.mean=e.aggr.MEAN=Fc.mean,e.aggr.mode=e.aggr.MODE=Fc.mode,e.aggr.prod=e.aggr.PROD=Fc.prod,e.aggr.median=e.aggr.MEDIAN=Fc.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Fc.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Fc.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=Vn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=Vn.current_time,e.fn.extract=e.fn.EXTRACT=Vn.extract,e.fn.date=e.fn.DATE=Vn.date,e.fn.date_format=e.fn.DATE_FORMAT=Vn.date_format,e.fn.date_add=e.fn.DATE_ADD=Vn.date_add,e.fn.date_sub=e.fn.DATE_SUB=Vn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=Vn.date_diff,e.fn.now=e.fn.NOW=Vn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=Vn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=Vn.get_server_time,e.fn.getdate=e.fn.GETDATE=Vn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=Vn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=wi.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=wi.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=wi.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=wi.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=wi.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=wi.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=wi.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=wi.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=wi.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=wi.geoNear}});var P0=C((nNe,C0)=>{"use strict";var __=require("lodash"),An=require("alasql");An.options.cache=!1;var U5=cE(),w0=require("clone"),lE=require("recursive-iterator"),ke=ee(),Xe=ie(),Tu=$n(),x5=(k(),P(q)),{hdb_errors:B5}=he(),{getDatabases:I0}=(xe(),P(ct)),H5="IS NULL",Ks="There was a problem performing this search. Please check the logs and try again.";U5(An);var Wy=class{static{a(this,"SQLSearch")}constructor(t,r){if(Xe.isEmpty(t))throw ke.error("AST statement for SQL select process cannot be empty"),"statement cannot be null";this.statement=t,this.columns={},this.all_table_attributes=r,this.fetch_attributes=[],this.exact_search_values={},this.comparator_search_values={},this.tables=[],this.data={},this.has_aggregator=!1,this.has_ordinal=!1,this.has_outer_join=!1,this._getColumns(),this._getTables(),this._conditionsToFetchAttributeValues(),this._setAliasesForColumns(),Xe.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!Xe.isEmptyOrZeroLength(n))return ke.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw ke.error("Error thrown from checkEmptySQL in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{let n=await this._getFetchAttributeValues();if(n)return n}catch(n){throw ke.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),ke.error(n),new Error(Ks)}if(Object.keys(this.data).length===0)return ke.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(n){throw ke.error("Error thrown from processJoins in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(n){throw ke.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{return t=await this._finalSQL(),t}catch(n){throw ke.error("Error thrown from finalSQL in SQLSearch class method search."),ke.error(n),new Error(Ks)}}_getColumns(){let t=new lE(this.statement);for(let{node:r,path:n}of t)r&&r.columnid&&(this.columns[n[0]]||(this.columns[n[0]]=[]),this.columns[n[0]].push(w0(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=__.uniqBy(t,r=>[r.databaseid,r.tableid,r.as].join()),this.tables.forEach(r=>{let n=`${r.databaseid}_${r.as?r.as:r.tableid}`;this.data[n]={},this.data[n].__hash_name=I0()[r.databaseid][r.tableid].primaryKey,this.data[n].__merged_data={},this.data[n].__merged_attributes=[],this.data[n].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(Xe.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new lE(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!Xe.isEmpty(r)&&r.right)if(Xe.isNotEmptyAndHasValue(r.right.value)){let n=Xe.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new An.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=Xe.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new An.yy.LogicValue({value:i}):n instanceof An.yy.StringValue&&Xe.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new An.yy.NumValue({value:i}))});if(t){ke.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new lE(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let n=new Set,s=r.left.columnid?r.left:r.right,i=this._findColumn(s);if(!i)continue;let o=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!Xe.isEmpty(x5.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(Xe.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(Xe.isEmptyOrZeroLength(r.left.columnid)||Xe.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[o].ignore=!0,this.comparator_search_values[o].comparators=[];continue}this.comparator_search_values[o].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(Xe.isEmpty(this.exact_search_values[o])&&(this.exact_search_values[o]={ignore:!1,values:new Set}),!this.exact_search_values[o].ignore){let c=!1;switch(r.op){case"=":!Xe.isEmpty(r.right.value)||!Xe.isEmpty(r.left.value)?n.add(Xe.isEmpty(r.right.value)?r.left.value:r.right.value):c=!0;break;case"IN":let l=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<l.length;u++)if(l[u].value)n.add(l[u].value);else{c=!0;break}break;default:c=!0;break}this.exact_search_values[o].ignore=c,c?this.exact_search_values[o].values=new Set:this.exact_search_values[o].values=new Set([...this.exact_search_values[o].values,...n])}}}_setAliasesForColumns(){if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&Xe.isEmptyOrZeroLength(this.statement.from)&&Xe.isEmptyOrZeroLength(this.columns.columns))return;let t=[],r={};this.statement.columns.forEach((n,s)=>{if(n.columnid==="*"){t.push(s);return}if(n.aggregatorid&&(this.has_aggregator=!0),!n.aggregatorid&&!n.funcid)if(n.as_orig=n.as?n.as:n.columnid,this.statement.joins)if(r[n.as_orig]>=0){let i=r[n.as_orig]+1;n.as=`[${n.as_orig+i}]`,r[n.as_orig]=i}else n.as=`[${n.as_orig}]`,r[n.as_orig]=0;else n.as=`[${n.as_orig}]`;!n.aggregatorid&&n.funcid&&n.args&&(n.as_orig=n.as?n.as:n.toString().replace(/'/g,'"'),n.as=`[${n.as_orig}]`),n.aggregatorid&&n.expression.columnid!=="*"&&(n.as_orig=n.as?n.as:n.expression.tableid?`${n.aggregatorid}(${n.expression.tableid}.${n.expression.columnid})`:`${n.aggregatorid}(${n.expression.columnid})`,n.as=`[${n.as_orig}]`)}),this.statement.columns.length>1&&t.length>0&&__.pullAt(this.statement.columns,t)}_findColumn(t){let r=this.all_table_attributes.filter(n=>{if(t.columnid_orig&&t.tableid_orig)return(n.table.as===t.tableid_orig||n.table.tableid===t.tableid_orig)&&n.attribute===t.columnid_orig;if(t.tableid)return(n.table.as===t.tableid||n.table.tableid===t.tableid)&&n.attribute===t.columnid;let s=t.columnid_orig?t.columnid_orig:t.columnid;return n.attribute===s});if(Xe.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);Xe.isEmptyOrZeroLength(n)||(r=this.all_table_attributes.filter(s=>s.attribute===n[0].columnid&&n[0].tableid&&n[0].tableid===(s.table.as?s.table.as:s.table.tableid)))}return r[0]}async _checkEmptySQL(){let t=[];if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&!Xe.isEmptyOrZeroLength(this.columns.columns))return t;if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&Xe.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await An.promise(r)}catch(r){throw ke.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),ke.error(r),new Error("There was a problem with the SQL statement")}return t}_addFetchColumns(t){t&&t.length>0&&t.forEach(r=>{let n=this._findColumn(r);n&&this.fetch_attributes.push(w0(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__merged_attributes.push(r),this.data[t].__merged_attr_map[r]=this.data[t].__merged_attributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__merged_data[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__merged_attr_map[n];this.data[t].__merged_data[r].splice(i,1,s)}async _getFetchAttributeValues(){if(Xe.isEmptyOrZeroLength(Object.keys(this.columns)))return[];this._addFetchColumns(this.columns.joins);let t=null;try{t=this.statement.where?this.statement.where.toString():""}catch{throw new Error("Could not generate proper where clause")}this.columns.where&&this._addFetchColumns(this.columns.where);let r=this._isSimpleSelect();if(r?this._addFetchColumns(this.columns.columns):(!this.columns.where&&this.fetch_attributes.length===0)|t.indexOf(H5)>-1&&this.tables.forEach(s=>{let i={columnid:I0()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=__.uniqBy(this.fetch_attributes,s=>[s.table.databaseid,s.table.as?s.table.as:s.table.tableid,s.attribute].join()),r)return await this._simpleSQLQuery();let n=this.fetch_attributes.reduce((s,i)=>{let o=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[o].__hash_name;return s[o]||(s[o]=[],s[o].push(null),this._addColumnToMergedAttributes(o,c)),i.attribute!==c&&(s[o].push(null),this._addColumnToMergedAttributes(o,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,o=this.data[i].__hash_name,c={schema:s.table.databaseid,table:s.table.tableid,get_attributes:[s.attribute]},l=!1,u=[s.table.databaseid,s.table.tableid,s.attribute].join("/");if(s.attribute===o&&(l=!0),!Xe.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!Xe.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let f=await Tu.getDataByHash(c);for(let d of c.hash_values)f.get(d)&&!this.data[i].__merged_data[d]&&(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Ks)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async f=>{let d={...c};d.search_value=f;let _=await Tu.getDataByValue(d);for(let[h,m]of _)this.data[i].__merged_data[h]?this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]):(this.data[i].__merged_data[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Ks)}else if(!Xe.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!Xe.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let f=this.comparator_search_values[u].comparators;for(let d=0,_=f.length;d<_;d++){let h=f[d];c.search_attribute=h.attribute,c.search_value=h.search_value;let m=await Tu.getDataByValue(c,h.operation);if(l)for(let[S]of m)this.data[i].__merged_data[S]||(this.data[i].__merged_data[S]=[...n[i]],this._setMergedHashAttribute(i,S));else for(let[S,g]of m)this.data[i].__merged_data[S]?this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]):(this.data[i].__merged_data[S]=[...n[i]],this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]),this._setMergedHashAttribute(i,S))}}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),ke.error(f),new Error(Ks)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await Tu.getDataByValue(c);if(l)for(let[d]of f)this.data[i].__merged_data[d]||(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d));else for(let[d,_]of f)this.data[i].__merged_data[d]?this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]):(this.data[i].__merged_data[d]=[...n[i]],this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]),this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),ke.error(f),new Error(Ks)}}}_isSimpleSelect(){let t=!0;return Object.keys(this.statement).length!==2||!this.statement.columns||!this.statement.from||this.statement.from.length!==1?(t=!1,t):(this.statement.columns.forEach(r=>{r instanceof An.yy.Column||(t=!1)}),t)}_updateOrderByToAliases(){this.statement.order.forEach(t=>{if(t.expression.aggregatorid){t.is_aggregator=!0;return}if(t.expression.value){t.is_ordinal=!0,this.has_ordinal=!0;return}else t.is_ordinal=!1;let r=this.statement.columns.filter(s=>{let i=s.aggregatorid?s.expression:s,o=s.aggregatorid?s.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===o});r[0]||r.push(this._findColumn(t.expression));let n=r[0];if(t.is_func=!!n.funcid,t.is_aggregator=!!n.aggregatorid,n.as)if(n.as&&!t.expression.tableid)t.expression.columnid=n.as,t.expression.columnid_orig=n.as_orig;else{let s=new An.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new An.yy.Column,t.expression),t.initial_select_column.as=`[${t.expression.columnid_orig}]`,t.expression.columnid=t.initial_select_column.as;return}if(!t.is_aggregator){let s=t.is_func?new An.yy.FuncValue:new An.yy.Column;t.initial_select_column=Object.assign(s,n)}})}_addNonAggregatorsToFetchColumns(){let r=this.statement.order.filter(n=>!n.is_aggregator&&!n.is_ordinal).map(n=>n.is_func?{columnid:n.initial_select_column.args.filter(i=>!!i.columnid_orig)[0].columnid_orig}:{columnid:n.expression.columnid_orig});this._addFetchColumns(r)}async _processJoins(){let t=[],r=[],n=this.statement.from[0],s=[n],i=["? "+(n.as?" AS "+n.as:n.tableid)];t.push(Object.values(this.data[`${n.databaseid_orig}_${n.as?n.as_orig:n.tableid_orig}`].__merged_data)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let m=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(m+=" ON "+h.on.toString()),i.push(m),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__merged_data))});let o=[],c={};s.forEach(h=>{let m=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hash_name,S=h.as?h.as_orig:h.tableid_orig;o.push({key:`'${S}.${m}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${m}\` AS "${S}.${m}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__merged_attributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(h=>{h.is_func?r.push(h.initial_select_column.toString()):h.initial_select_column.tableid?r.push(`${h.initial_select_column.tableid}.${h.initial_select_column.columnid} AS ${h.expression.columnid}`):r.push(`${h.initial_select_column.columnid} AS ${h.expression.columnid}`)}));let f="",d="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(f=this.statement.limit?"LIMIT "+this.statement.limit:"",d=this.statement.offset?"OFFSET "+this.statement.offset:"");let _=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${f} ${d}`,m=this._convertColumnsToIndexes(h,s);_=await An.promise(m,t),t=null}catch(h){throw ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),ke.error(h),new Error("There was a problem processing the data.")}if(_&&_.length>0){for(let h=0,m=_.length;h<m;h++){let S=_[h];o.forEach(g=>{S[g.key]!==null&&S[g.key]!==void 0&&g.keys.add(S[g.key])})}o.forEach(h=>{let m=Object.keys(this.data[`${h.schema}_${h.table}`].__merged_data),S=__.difference(m,[...h.keys].map(g=>g.toString()));for(let g=0,R=S.length;g<R;g++){let E=S[g];delete this.data[`${h.schema}_${h.table}`].__merged_data[E]}})}return{existing_attributes:c,joined_length:_?_.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new lE(this.columns);for(let{node:i}of s)if(i&&i.columnid){let o=this._findColumn(i);if(o){let c=o.table.as?o.table.as:o.table.tableid;(!t[c]||t[c].indexOf(o.attribute)<0)&&n.push(o)}}n=__.uniqBy(n,i=>[i.table.databaseid,i.table.as?i.table.as:i.table.tableid,i.attribute].join());try{await this._getData(n)}catch(i){throw ke.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),ke.error(i),new Error(Ks)}}async _getData(t){try{let r=t.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]?n[i].columns.push(s.attribute):n[i]={schema:s.table.databaseid,table:s.table.tableid,columns:[s.attribute]},n},{});for(let n in r){let s=r[n],i=this.data[n].__merged_data,o=[];for(let f in i)o.push(i[f][0]);this.data[n].__merged_attributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:o,get_attributes:s.columns},l=await Tu.getDataByHash(c),u=s.columns.length;for(let f=0,d=o.length;f<d;f++){let _=o[f],h=l.get(_);for(let m=0;m<u;m++){let S=s.columns[m],g=h[S]===void 0?null:h[S];this.data[n].__merged_data[_].push(g)}}}}catch(r){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__merged_data)),r.as=r.as?r.as:r.tableid,r.databaseid="",r.tableid="?",this.statement.joins&&this.statement.joins.forEach(s=>{s.as=s.as?s.as:s.table.tableid,t.push(Object.values(this.data[`${s.table.databaseid_orig}_${s.table.as?s.table.as_orig:s.table.tableid_orig}`].__merged_data)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(o=>{let c=o.aggregatorid?o.expression:o,l=o.aggregatorid?o.as_orig:c.as_orig;return s.expression.tableid?c.columnid_orig===s.expression.columnid_orig&&c.tableid_orig===s.expression.tableid_orig:c.columnid_orig===s.expression.columnid_orig||s.expression.columnid_orig===l}).length===0&&(s.expression.columnid=s.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&this.statement.limit&&!this.statement.joins&&(delete this.statement.limit,delete this.statement.offset);let n;try{let s=this._buildSQL();ke.trace(`Final SQL: ${s}`),n=await An.promise(s,t),this.has_outer_join&&(n=this._translateUndefinedValues(n)),ke.trace(`Final AlaSQL results data included ${n.length} rows`)}catch(s){throw ke.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),ke.error(s),new Error("There was a problem running the generated sql.")}return n}_translateUndefinedValues(t){try{let r=[];for(let n of t){let s=Object.create(null);Object.keys(n).forEach(i=>{n[i]===void 0?s[i]=null:s[i]=n[i]}),r.push(s)}return r}catch(r){return ke.error(B5.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),ke.trace(r.stack),t}}_buildSQL(t=!0){let r=this.statement.toString();return r=r.replace(/NOT\(NULL\)/g,"NOT NULL"),this.statement.columns.forEach(n=>{if(n.funcid&&n.as){let s=n.toString().replace(" AS "+n.as,"");r=r.replace(n.toString(),s)}}),t===!0?this._convertColumnsToIndexes(r,this.tables):r}_convertColumnsToIndexes(t,r){let n=t,s={};r.forEach(i=>{i.databaseid_orig?s[`${i.databaseid_orig}_${i.as?i.as_orig:i.tableid_orig}`]=i.as?i.as:i.tableid:s[`${i.databaseid}_${i.as?i.as:i.tableid}`]=`\`${i.as?i.as:i.tableid}\``});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,c)=>{let l=s[i],u=new RegExp(`${l}.\`${o}\``,"g"),f=`${l}.[${c}]`;n=n.replace(u,f)});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,c)=>{let l=new RegExp(`\`${o}\``,"g"),u=`[${c}]`;n=n.replace(l,u)});return n}async _simpleSQLQuery(){let t=this.statement.columns.reduce((n,s)=>(s.as_orig&&s.as_orig!=s.columnid_orig?n[s.columnid_orig]=s.as_orig:n[s.columnid_orig]||(n[s.columnid_orig]=s.columnid_orig),n),{}),r=this.fetch_attributes.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]||(n[i]={}),n[i][t[s.attribute]]=null,n},{});for(let n of this.fetch_attributes){let s=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,i={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]};try{i.search_attribute=n.attribute,i.search_value="*";let o=await Tu.getDataByValue(i);for(let[c,l]of o)this.data[s].__merged_data[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__merged_data[c]={...r[s]}),this.data[s].__merged_data[c][t[n.attribute]]=l[n.attribute]??null}catch(o){throw ke.error("There was an error when processing this SQL operation. Check your logs"),ke.error(o),new Error(Ks)}}return Object.values(Object.values(this.data)[0].__merged_data)}};C0.exports=Wy});var zr=C((iNe,D0)=>{"use strict";var k5=OM();D0.exports={searchByConditions:G5,searchByHash:q5,searchByValue:$5,search:V5};var zy=$n(),{transformReq:Qy}=ie(),F5=P0();async function G5(e){return Qy(e),zy.searchByConditions(e)}a(G5,"searchByConditions");async function q5(e){Qy(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of zy.searchByHash(e))r&&t.push(r);return t}a(q5,"searchByHash");async function $5(e){Qy(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of zy.searchByValue(e))t.push(r);return t}a($5,"searchByValue");function V5(e,t){try{let r=new k5(e);r.validate(),new F5(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(V5,"search")});var mo=C((aNe,U0)=>{"use strict";var h_=require("crypto"),K5=le(),{CONFIG_PARAMS:Y5}=(k(),P(q)),M0="aes-256-cbc",W5=32,z5=16,jy=64,v0=32,Q5=jy+v0,L0=new Map;U0.exports={encrypt:j5,decrypt:J5,createNatsTableStreamName:X5};function j5(e){let t=h_.randomBytes(W5),r=h_.randomBytes(z5),n=h_.createCipheriv(M0,Buffer.from(t),r),s=n.update(e);s=Buffer.concat([s,n.final()]);let i=t.toString("hex"),o=r.toString("hex"),c=s.toString("hex");return i+o+c}a(j5,"encrypt");function J5(e){let t=e.substr(0,jy),r=e.substr(jy,v0),n=e.substr(Q5,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=h_.createDecipheriv(M0,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(J5,"decrypt");function X5(e,t){let r=K5.get(Y5.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=L0.get(r);return n||(n=h_.createHash("md5").update(r).digest("hex"),L0.set(r,n)),n}a(X5,"createNatsTableStreamName")});var po=C((uNe,k0)=>{"use strict";var lNe=zr(),m_=ee(),{validateBySchema:x0}=ot(),Gc=require("joi"),Z5=mo(),uE=ie(),{handleHDBError:dE,hdb_errors:e9,ClientError:B0}=he(),{HDB_ERROR_MSGS:fE,HTTP_STATUS_CODES:Jy}=e9,H0=le();H0.initSync();var{getDatabases:Xy}=(xe(),P(ct)),t9=require("fs-extra"),r9=(k(),P(q));k0.exports={describeAll:n9,describeTable:_E,describeSchema:s9};async function n9(e={}){try{let t=uE.isEmptyOrZeroLength(e),r=!!e.bypass_auth,n,s;!t&&!r&&(n=e.hdb_user?.role?.permission,s=n?.super_user||n?.cluster_user);let i=Xy(),o={},c={},l=[],u=e?.exact_count;for(let d in i){o[d]=!0,!t&&!s&&!r&&(c[d]=e.hdb_user?.role?.permission[d]?.describe);let _=i[d];for(let h in _)try{let m;if(t||s||r)m=await _E({schema:d,table:h,exact_count:u});else if(n&&n[d].describe&&n[d].tables[h].describe){let S=n[d].tables[h].attribute_permissions;m=await _E({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){m_.error(m)}}let f={};for(let d in l)t||s||r?(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]):c[l[d].schema]&&(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]);for(let d in o)t||s||r?f[d]={}:c[d]&&(f[d]={});return f}catch(t){return m_.error("Got an error in describeAll"),m_.error(t),dE(new Error,fE.DESCRIBE_ALL_ERR)}}a(n9,"describeAll");async function _E(e,t){uE.transformReq(e);let{schema:r,table:n}=e;r=r?.toString(),n=n?.toString();let s=t;e.hdb_user&&!e.hdb_user?.role?.permission?.super_user&&(s=e.hdb_user?.role?.permission[r]?.tables[n]?.attribute_permissions);let i=x0(e,Gc.object({database:Gc.string(),table:Gc.string().required(),exact_count:Gc.boolean().strict()}));if(i)throw new B0(i.message);let c=Xy()[r];if(!c)throw dE(new Error,fE.SCHEMA_NOT_FOUND(e.schema),Jy.NOT_FOUND);let l=c[n];if(!l)throw dE(new Error,fE.TABLE_NOT_FOUND(e.schema,e.table),Jy.NOT_FOUND);function u(h){f.push({attribute:h.attribute,type:h.type,elements:h.elements?.type,indexed:h.indexed,is_primary_key:h.isPrimaryKey,assigned_created_time:h.assignCreatedTime,assigned_updated_time:h.assignUpdatedTime,nullable:h.nullable,properties:h.properties?h.properties.map(m=>({type:m.type,name:m.name})):void 0})}a(u,"pushAtt");let f=[];if(s){let h={};s.forEach(m=>{m.describe&&(h[m.attribute_name]=!0)}),l.attributes.forEach(m=>{h[m.name]&&u(m)})}else l.attributes?.forEach(h=>u(h));let d;try{d=(await t9.stat(l.primaryStore.env.path)).size}catch(h){m_.warn("unable to get database size",h)}let _={schema:r,name:l.tableName,hash_attribute:l.attributes.find(h=>h.isPrimaryKey||h.is_hash_attribute)?.name,audit:l.audit,schema_defined:l.schemaDefined,attributes:f,db_size:d};l.replicate!==void 0&&(_.replicate=l.replicate),l.expirationMS!==void 0&&(_.expiration=l.expirationMS/1e3+"s"),l.sealed!==void 0&&(_.sealed=l.sealed),l.sources?.length>0&&(_.sources=l.sources.map(h=>h.name).filter(h=>h&&h!=="NATSReplicator"&&h!=="Replicator")),H0.get(r9.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=Z5.createNatsTableStreamName(_.schema,_.name));try{let h=await l.getRecordCount({exactCount:!!e.exact_count});_.record_count=h.recordCount,_.table_size=l.getSize(),_.db_audit_size=l.getAuditSize(),_.estimated_record_range=h.estimatedRange;let m=l.auditStore;if(m)for(let S of m.getKeys({reverse:!0,limit:1}))_.last_updated_record=S[0];if(!_.last_updated_record&&l.indices.__updatedtime__)for(let S of l.indices.__updatedtime__.getKeys({reverse:!0,limit:1}))_.last_updated_record=S}catch(h){m_.warn(`unable to stat table dbi due to ${h}`)}return _}a(_E,"descTable");async function s9(e){uE.transformReq(e);let t=x0(e,Gc.object({database:Gc.string(),exact_count:Gc.boolean().strict()}));if(t)throw new B0(t.message);let r;e.hdb_user&&!e.hdb_user?.role?.permission?.super_user&&(r=e.hdb_user?.role?.permission[e.schema]);let n=e.schema.toString(),i=Xy()[n];if(!i)throw dE(new Error,fE.SCHEMA_NOT_FOUND(e.schema),Jy.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),uE.isEmpty(l)||l.describe){let u=await _E({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(s9,"describeSchema")});var Ys=C((hNe,V0)=>{var i9=ao(),{callbackify:G0,promisify:o9}=require("util"),{getDatabases:q0}=(xe(),P(ct));V0.exports={setSchemaDataToGlobal:F0,getTableSchema:a9,getSystemSchema:c9,setSchemaDataToGlobalAsync:o9(F0)};var $0=po(),fNe=G0($0.describeAll),_Ne=G0($0.describeTable);function F0(e){global.hdb_schema=q0(),e&&e()}a(F0,"setSchemaDataToGlobal");function a9(e,t,r){let n=q0()[e];if(!n)return r(`schema ${e} does not exist`);let s=n[t];return s?r(null,{schema:e,name:t,hash_attribute:s.primaryKey}):r(`table ${e}.${t} does not exist`)}a(a9,"getTableSchema");function c9(){return i9}a(c9,"getSystemSchema")});var Rn=C((pNe,z0)=>{"use strict";var mE=ty(),xr=ie(),l9=require("util"),pE=$n(),u9=Ys(),K0=ee(),{handleHDBError:qc,hdb_errors:d9}=he(),{HTTP_STATUS_CODES:$c}=d9,f9=l9.promisify(u9.getTableSchema),_9="updated",Y0="inserted",W0="upserted";z0.exports={insert:m9,update:p9,upsert:E9,validation:h9,flush:g9};async function h9(e){if(xr.isEmpty(e))throw new Error("invalid update parameters defined.");if(xr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(xr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await f9(e.schema,e.table),r=mE(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let n=t.hash_attribute,s=new Set,i={},o=!1;return e.operation==="update"&&(o=!0),e.records.forEach(c=>{if(o&&xr.isEmptyOrZeroLength(c[n]))throw K0.error("a valid hash attribute must be provided with update record:",c),new Error("a valid hash attribute must be provided with update record");if(!xr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw K0.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!xr.isEmpty(c[n])&&c[n]!==""&&s.has(xr.autoCast(c[n]))&&(c.skip=!0),s.add(xr.autoCast(c[n]));for(let l in c)i[l]=1}),i[n]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(i)}}a(h9,"validation");async function m9(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=mE(e);if(t)throw qc(new Error,t.message,$c.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw qc(new Error,r,$c.BAD_REQUEST);let n=await pE.createRecords(e);return hE(Y0,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(m9,"insertData");async function p9(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=mE(e);if(t)throw qc(new Error,t.message,$c.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw qc(new Error,r,$c.BAD_REQUEST);let n=await pE.updateRecords(e);return xr.isEmpty(n.existing_rows)?hE(_9,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):hE(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(p9,"updateData");async function E9(e){if(e.operation!=="upsert")throw qc(new Error,"invalid operation, must be upsert",$c.INTERNAL_SERVER_ERROR);let t=mE(e);if(t)throw qc(new Error,t.message,$c.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw qc(new Error,r,$c.BAD_REQUEST);let n=await pE.upsertRecords(e);return hE(W0,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(E9,"upsertData");function hE(e,t,r,n,s,i){let o={message:`${e} ${t.length} of ${t.length+n.length} records`,new_attributes:s,txn_time:i};return e===Y0?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===W0?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(hE,"returnObject");function g9(e){return xr.transformReq(e),pE.flush(e.schema,e.table)}a(g9,"flush")});var eb=C((gNe,J0)=>{var S9=ot(),Zy=require("joi"),{hdb_table:T9,hdb_database:Q0}=bi(),j0={schema:Q0,database:Q0,table:T9},A9={date:Zy.date().iso().required()},R9={timestamp:Zy.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};J0.exports=function(e,t){let r=t==="timestamp"?{...j0,...R9}:{...j0,...A9},n=Zy.object(r);return S9.validateBySchema(e,n)}});var ex=C((SNe,Z0)=>{var y9=ot(),tb=require("joi"),{hdb_table:b9,hdb_database:X0}=bi(),O9=tb.object({schema:X0,database:X0,table:b9,hash_values:tb.array().required(),ids:tb.array()});Z0.exports=function(e){return y9.validateBySchema(e,O9)}});var ib=C((TNe,tx)=>{"use strict";var rb=class{static{a(this,"InsertObject")}constructor(t,r,n,s,i){this.operation=t,this.schema=r,this.table=n,this.hash_attribute=s,this.records=i}},nb=class{static{a(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,o){this.schema=t,this.table=r,this.search_attribute=n,this.hash_attribute=s,this.get_attributes=i,this.search_value=o}},sb=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};tx.exports={InsertObject:rb,NoSQLSeachObject:nb,DeleteResponseObject:sb}});var Yc=C((RNe,ox)=>{"use strict";var nx=eb(),N9=ex(),Vc=ie(),rx=require("moment"),sx=ee(),{promisify:w9,callbackify:I9}=require("util"),Kc=(k(),P(q)),C9=Ys(),ob=w9(C9.getTableSchema),ab=$n(),{DeleteResponseObject:P9}=ib(),{handleHDBError:_a,hdb_errors:D9}=he(),{HDB_ERROR_MSGS:EE,HTTP_STATUS_CODES:ha}=D9,L9="records successfully deleted",M9=I9(ix);ox.exports={delete:M9,deleteRecord:ix,deleteFilesBefore:v9,deleteAuditLogsBefore:U9};async function v9(e){let t=nx(e,"date");if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);if(Vc.transformReq(e),!rx(e.date,rx.ISO_8601).isValid())throw _a(new Error,EE.INVALID_DATE,ha.BAD_REQUEST,Kc.LOG_LEVELS.ERROR,EE.INVALID_DATE,!0);let n=Vc.checkSchemaTableExist(e.schema,e.table);if(n)throw _a(new Error,n,ha.NOT_FOUND,Kc.LOG_LEVELS.ERROR,n,!0);let s=await ab.deleteRecordsBefore(e);if(await ob(e.schema,e.table),sx.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(v9,"deleteFilesBefore");async function U9(e){let t=nx(e,"timestamp");if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);if(Vc.transformReq(e),isNaN(e.timestamp))throw _a(new Error,EE.INVALID_VALUE("Timestamp"),ha.BAD_REQUEST,Kc.LOG_LEVELS.ERROR,EE.INVALID_VALUE("Timestamp"),!0);let r=Vc.checkSchemaTableExist(e.schema,e.table);if(r)throw _a(new Error,r,ha.NOT_FOUND,Kc.LOG_LEVELS.ERROR,r,!0);let n=await ab.deleteAuditLogsBefore(e);return await ob(e.schema,e.table),sx.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(U9,"deleteAuditLogsBefore");async function ix(e){e.ids&&(e.hash_values=e.ids);let t=N9(e);if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);Vc.transformReq(e);let r=Vc.checkSchemaTableExist(e.schema,e.table);if(r)throw _a(new Error,r,ha.NOT_FOUND,Kc.LOG_LEVELS.ERROR,r,!0);try{await ob(e.schema,e.table);let n=await ab.deleteRecords(e);return Vc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${L9}`),n}catch(n){if(n.message===Kc.SEARCH_NOT_FOUND_MESSAGE){let s=new P9;return s.message=Kc.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(ix,"deleteRecord")});var gE={};Ue(gE,{HASH_FUNCTION:()=>g_,hash:()=>ub,validate:()=>db});function cb(e=E_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(p_.randomBytes(e)).map(r=>t[r%t.length]).join("")}function ub(e,t=g_[cx?.toUpperCase()]??"sha256"){return lb[t](e)}function db(e,t,r=g_[cx?.toUpperCase()]??"sha256"){return e?x9[r](e,t):!1}var p_,Au,ax,cx,E_,lx,g_,lb,x9,SE=Re(()=>{p_=v(require("node:crypto")),Au=v(require("argon2")),ax=v(le());k();cx=(0,ax.get)(x.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),E_=16,lx=9,g_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(g_||{});a(cb,"generateSalt");lb={md5:a((e,t=void 0)=>{t=t??cb(lx);let r=p_.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??cb(E_);let r=p_.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=cb(E_),r=await Au.hash(e,{type:Au.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},x9={md5:a((e,t)=>{let r=e.slice(0,lx);return e===lb.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,E_);return e===lb.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await Au.verify(e.slice(E_),t),"argon2id")};a(ub,"hash");a(db,"validate")});var dx=C((NNe,ux)=>{var fb=ot(),Qr={username:{presence:!0,exclusion:{within:["system"],message:"You cannot create tables within the system schema"}},password:{presence:!0},role:{presence:!0,format:"[\\w\\-\\_]+"},active:{presence:!0,inclusion:{within:[!0,!1],message:"must be a boolean"}}};function B9(e){return Qr.password.presence=!0,Qr.username.presence=!0,Qr.role.presence=!0,Qr.active.presence=!0,fb.validateObject(e,Qr)}a(B9,"addUserValidation");function H9(e){return Qr.password.presence=!1,Qr.username.presence=!0,Qr.role.presence=!1,Qr.active.presence=!1,fb.validateObject(e,Qr)}a(H9,"alterUserValidation");function k9(e){return Qr.password.presence=!1,Qr.username.presence=!0,Qr.role.presence=!1,Qr.active.presence=!1,fb.validateObject(e,Qr)}a(k9,"dropUserValidation");ux.exports={addUserValidation:B9,alterUserValidation:H9,dropUserValidation:k9}});var Pt=C((CNe,_x)=>{"use strict";var{platform:INe}=require("os"),F9="nats-server.zip",_b="nats-server",G9=process.platform==="win32"?`${_b}.exe`:_b,q9=/^[^\s.,*>]+$/,fx="__request__",$9=a(e=>`${e}.${fx}`,"REQUEST_SUBJECT"),V9={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},K9={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Y9={HUB:"hub.pid",LEAF:"leaf.pid"},W9={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},z9={SUCCESS:"success",ERROR:"error"},Q9={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},j9={TXN:"txn",MSGID:"msgid"},Ru={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},J9={[Ru.ERR]:1,[Ru.WRN]:2,[Ru.INF]:3,[Ru.DBG]:4,[Ru.TRC]:5},X9={debug:"-D",trace:"-DVV"};_x.exports={NATS_SERVER_ZIP:F9,NATS_SERVER_NAME:_b,NATS_BINARY_NAME:G9,PID_FILES:Y9,NATS_CONFIG_FILES:K9,SERVER_SUFFIX:W9,NATS_TERM_CONSTRAINTS_RX:q9,REQUEST_SUFFIX:fx,UPDATE_REMOTE_RESPONSE_STATUSES:z9,CLUSTER_STATUS_STATUSES:Q9,REQUEST_SUBJECT:$9,SUBJECT_PREFIXES:j9,MSG_HEADERS:V9,LOG_LEVELS:Ru,LOG_LEVEL_FLAGS:X9,LOG_LEVEL_HIERARCHY:J9}});var hb=C(hx=>{"use strict";var Z9={cert:"-----BEGIN CERTIFICATE-----\rMIIDXDCCAkSgAwIBAgIFNTE4MzQwDQYJKoZIhvcNAQELBQAwXTEXMBUGA1UEAxMO\rSGFycGVyREIsIEluYy4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UE\rBxMGRGVudmVyMRcwFQYDVQQKEw5IYXJwZXJEQiwgSW5jLjAeFw0yMjAzMTEyMzAz\rNDlaFw0yNzAzMTAyMzAzNDlaMF0xFzAVBgNVBAMTDkhhcnBlckRCLCBJbmMuMQsw\rCQYDVQQGEwJVUzELMAkGA1UECBMCQ08xDzANBgNVBAcTBkRlbnZlcjEXMBUGA1UE\rChMOSGFycGVyREIsIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\rAQCsEUlBF8WImS78rCFXVKyntxfrW++4qZ3hGnoD2MHZAuDHyeP/5eGnaE9GQhKc\r4DwG4DGvh0wP2zIYnBfiQ3L2ZtnlDR9ZkKIQYGlVxTUn6T43krhK5nZKqDF43Yg3\rZEvO3cbJBjiKZx0eA2/toehdSsTAHHQx5gTDcggNe2tgoJHYPwi9YF/AxSBZrbgb\ryWlYgtYDmF32ytHP03GUCIdKOFuBPsHTGu4SkdEIdLIqO9oglW1YFH5qZ6NiwApW\rsP+GCuqOwDXXbdjr75iq9Tq/CDrjGFLaTPmvd2Q0qG/BtaCll0ghpG+yIHvt/iQs\rajS+LxEWAnVlGMaDdFErbDUtAgMBAAGjIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYD\rVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4IBAQASR4YW/rPK7PNArHVe9zzM\rb0rKNX/2T9/0nybRhmE/+hdlSgliTAeebmwkUS2APckmekYt/q2ZY2NS65Fo/jjp\rG8TJrtcF4h+ylVqUp0ZXQLFtIsr7r2JZA7hJ6njW6G4DHSZ0gxtECLi4CBlTjzm5\rNmnmIDObvGRTuqmcdAZmXeObbta/He2XIzietukPAYX062pNM+G5XT5UM1eG/Vlp\rN86vjhpyI+ffKy+C60SJqxmKM3ydgN7oLscE7+2wLPN25XqN4W99OwGsp5dTdu/f\r5lPtFayXdJ55e/sNQKmGN+UGLrL05c2MWgjb8U/LFilnupUianceoeSERZmVjzKX\r-----END CERTIFICATE-----\r".replace(/\r/g,`\r
|
|
17
17
|
`),key:"-----BEGIN RSA PRIVATE KEY-----\rMIIEowIBAAKCAQEArBFJQRfFiJku/KwhV1Ssp7cX61vvuKmd4Rp6A9jB2QLgx8nj\r/+Xhp2hPRkISnOA8BuAxr4dMD9syGJwX4kNy9mbZ5Q0fWZCiEGBpVcU1J+k+N5K4\rSuZ2SqgxeN2IN2RLzt3GyQY4imcdHgNv7aHoXUrEwBx0MeYEw3IIDXtrYKCR2D8I\rvWBfwMUgWa24G8lpWILWA5hd9srRz9NxlAiHSjhbgT7B0xruEpHRCHSyKjvaIJVt\rWBR+amejYsAKVrD/hgrqjsA1123Y6++YqvU6vwg64xhS2kz5r3dkNKhvwbWgpZdI\rIaRvsiB77f4kLGo0vi8RFgJ1ZRjGg3RRK2w1LQIDAQABAoIBAQCEOmh78EOpnGZC\rYBjjHrvrysVD5gvLcfVUtl8Ls7gMB60re1eOIF+PoZZCHKZnDd6zPfiQtj1adg0C\rYnnsM/8VoaZS4gm0b3RLd3ubIQifWhuo40RissY2yxfxlPSH9LhZCY8ojnJG0cTL\resK579E8WCfopjUY33XLqEbN7Ylv39J+DSqInjqV3efJZUa+HqUJ98VxxzodcKMD\rP3bwUU4gHoSSp4pAsOFH5sQhaIWH1IcNjrAwpee2cJQuh4G157RRIuuUpagtaEG/\rXJIiAyBguJyu3JQFnIBQF01N5+omJgXYJ1L0m54543/iIRThmF3zDCDgCyUzmOk+\rH6As9fv1AoGBANOpOtOZLSAScjGsgJamT3ceJ2wCa86g2j8Oxu8lJUmUp5s3tA0v\rBFW5O3S4KR1EXwkLMBUMrfFM8YvzHWxsXBI6XV8azGLvyqPHxr65OhmpGYkGZMXu\rn9okgjkqlewnY2I073gvyK7ppX51UL5y9fF1vlsk+UlW+Rgx/vMHbdcjAoGBANAc\rxRUsxs4QJpbS4zD3JOkHjr24a97TrS3kCybAHUMpR2NrEHPZw9zex0/aphOJUHfL\rIMkOZdpfDqMfxWy4FAEmqBEMkO2SB+h0Wp4P+qp81ax4vGFiB0cD3wtixr11U1tt\rlZ/ZTdv4VDpDFNK1KaplhTDeyuCjeYfS3/GJia9vAoGAcOsAgjBevZR5rXx84WH6\rVO8WUu37u7FenXNxt9VWTinrPMh72uixZFY8nOk+rely1e1NCn3IMko9Ns9NbDFm\r8SaH95vhXArXTYbfxZIlp9jp0YtCqcHDL+p4Oq04bFMbFyJseu7rHj1x18QYfnHw\rOY/6LL/N6k1m+Hx7qgXVmIcCgYB/w0nTCBw84XlvWqSTqQaF8VfWbWP79mP5KmkW\rLxdH5g2noVEGbohqDnK6OXd/wusdwByukiJBf94Skyy25AOT+VFwthA7aU1ljhkb\rtJ+lDuJ28eBkwLPLCzthWBC+u0qjdJFJAzVjd/7tjcU43nNn4s90AzL12iaAFhvZ\rwyA+DQKBgGc/4cdyGJ3YkcA8150gQBawgJZ7q8V1JND87ggWA8wnK3cHn7rMZQl2\r3emDp9HEFXFex5dbGDDqZFAoesZCDxjknIn9oNfW4PvaWS8q7b6ZKLZG1p03Pu7/\rtYaD0kPbo0kysfFT/co+NgHbdykvIyboomfGdNLTUjYuy6lpwpvs\r-----END RSA PRIVATE KEY-----\r".replace(/\r/g,`\r
|
|
18
18
|
`)},e7="certificate.pem",t7="privateKey.pem",r7="caCertificate.pem",n7="natsCertificate.pem",s7="natsCaCertificate.pem",Rt={DEFAULT:"default","DEFAULT-CA":"default-ca",SERVER:"server",CA:"ca","OPERATIONS-API":"operations-api","OPERATIONS-CA":"operations-ca"},i7={tls_certificate:Rt.SERVER,tls_certificateAuthority:Rt.CA,customFunctions_tls_certificate:Rt.SERVER,customFunctions_tls_certificateAuthority:Rt.CA,operationsApi_tls_certificate:Rt["OPERATIONS-API"],operationsApi_tls_certificateAuthority:Rt["OPERATIONS-CA"]},o7={[Rt.SERVER]:2,[Rt.DEFAULT]:1},a7={[Rt["OPERATIONS-API"]]:3,[Rt.SERVER]:2,[Rt.DEFAULT]:1},c7={[Rt["OPERATIONS-API"]]:3,[Rt.SERVER]:2,[Rt.DEFAULT]:1},l7={[Rt["OPERATIONS-CA"]]:3,[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1},u7={[Rt["OPERATIONS-CA"]]:3,[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1},d7={[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1};Object.assign(hx,{CERTIFICATE_PEM_NAME:e7,PRIVATEKEY_PEM_NAME:t7,CA_PEM_NAME:r7,CERT_NAME:Rt,CERT_CONFIG_NAME_MAP:i7,CERT_PREFERENCE_APP:o7,CERT_PREFERENCE_OPS:a7,CERT_PREFERENCE_REP:c7,CA_CERT_PREFERENCE_REP:l7,CA_CERT_PREFERENCE_OPS:u7,CA_CERT_PREFERENCE_APP:d7,CERTIFICATE_VALUES:Z9,NATS_CERTIFICATE_PEM_NAME:n7,NATS_CA_PEM_NAME:s7})});var pb=C((MNe,Tx)=>{"use strict";var gx=require("fs-extra"),ge=require("joi"),f7=require("os"),{boolean:$e,string:ht,number:tr,array:ma}=ge.types(),{totalmem:mx}=require("os"),Wc=require("path"),_7=ee(),mb=ie(),LNe=hb(),px=(k(),P(q)),h7=ot(),Ex="log",m7="components",p7="Invalid logging.rotation.maxSize unit. Available units are G, M or K",E7="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",g7="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",S7="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",T7="rootPath config parameter is undefined",yn=ge.alternatives([tr.min(0),ht]).optional().empty(null),TE=ge.alternatives([ma.items(ht,{host:ht.required(),port:yn},{hostname:ht.required(),port:yn}).empty(null),ma.items(ht)]),Ii,Sx=!1;Tx.exports={configValidator:A7,routesValidator:w7,route_constraints:TE};function A7(e,t=!1){if(Sx=t,Ii=e.rootPath,mb.isEmpty(Ii))throw T7;let r=$e.optional(),n=tr.min(0).max(1e3).empty(null).default(N7),s=ht.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(S_),i=ht.optional().empty(null),o=ht.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),c=ge.string().empty(null).default(S_),l=ge.custom(y7).empty(null).default(S_),u=e.clustering?.enabled,f=ge.object({certificate:i,certificateAuthority:i,privateKey:i}),d;return u===!0?d=ge.object({enabled:r,hubServer:ge.object({cluster:ge.object({name:ge.required().empty(null),network:ge.object({port:yn,routes:TE}).required()}).required(),leafNodes:ge.object({network:ge.object({port:yn}).required()}).required(),network:ge.object({port:yn}).required()}).required(),leafServer:ge.object({network:ge.object({port:yn,routes:TE}).required(),streams:ge.object({maxAge:tr.min(120).allow(null).optional(),maxBytes:tr.min(1).allow(null).optional(),maxMsgs:tr.min(1).allow(null).optional(),path:c}).required()}).required(),logLevel:ge.valid("error","warn","info","debug","trace"),nodeName:o,republishMessages:$e.optional(),databaseLevel:$e.optional(),tls:ge.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:$e.required(),verify:$e.optional()}),user:ht.optional().empty(null)}).optional():d=ge.object({enabled:r,tls:ge.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:$e.optional()})}).optional(),ge.object({authentication:ge.alternatives(ge.object({authorizeLocal:$e,cacheTTL:tr.required(),cookie:ge.object({domains:ma.items(ht).optional(),expires:ht.optional()}),enableSessions:$e,hashFunction:ht.valid("md5","sha256","argon2id").optional().empty(null)}),$e).optional(),analytics:ge.object({aggregatePeriod:tr}),replication:ge.object({hostname:ge.alternatives(ht,tr).optional().empty(null),url:ht.optional().empty(null),port:yn,securePort:yn,routes:ma.optional().empty(null),databases:ge.alternatives(ht,ma),enableRootCAs:$e.optional(),copyTablesToCatchUp:$e.optional()}).optional(),componentsRoot:s.optional(),clustering:d,localStudio:ge.object({enabled:r}).required(),logging:ge.object({auditAuthEvents:ge.object({logFailed:$e,logSuccessful:$e}),file:$e.required(),level:ge.valid("notify","fatal","error","warn","info","debug","trace"),rotation:ge.object({enabled:$e.optional(),compress:$e.optional(),interval:ht.custom(O7).optional().empty(null),maxSize:ht.custom(b7).optional().empty(null),path:ht.optional().empty(null).default(S_)}).required(),root:s,stdStreams:$e.required(),auditLog:$e.required()}).required(),operationsApi:ge.object({network:ge.object({cors:$e.optional(),corsAccessList:ma.optional(),headersTimeout:tr.min(1).optional(),keepAliveTimeout:tr.min(1).optional(),port:yn,domainSocket:ge.optional().empty("hdb/operations-server").default(S_),securePort:yn,timeout:tr.min(1).optional()}).optional(),tls:ge.alternatives([ge.array().items(f),f])}).required(),rootPath:ht.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").required(),mqtt:ge.object({network:ge.object({port:yn,securePort:yn,mtls:ge.alternatives([$e.optional(),ge.object({user:ht.optional(),certificateAuthority:i,required:$e.optional()})])}).required(),webSocket:$e.optional(),requireAuthentication:$e.optional()}),http:ge.object({compressionThreshold:tr.optional(),cors:$e.optional(),corsAccessList:ma.optional(),headersTimeout:tr.min(1).optional(),port:yn,securePort:yn,maxHeaderSize:tr.optional(),mtls:ge.alternatives([$e.optional(),ge.object({user:ht.optional(),certificateAuthority:i,required:$e.optional()})]),threadRange:ge.alternatives([ma.optional(),ht.optional()])}).required(),threads:ge.alternatives(n.optional(),ge.object({count:n.optional(),debug:ge.alternatives($e.optional(),ge.object({startingPort:tr.min(1).optional(),host:ht.optional(),waitForDebugger:$e.optional()})),maxHeapMemory:tr.min(0).optional()})),storage:ge.object({writeAsync:$e.required(),overlappingSync:$e.optional(),caching:$e.optional(),compression:ge.alternatives([$e.optional(),ge.object({dictionary:ht.optional(),threshold:tr.optional()})]),compactOnStart:$e.optional(),compactOnStartKeepBackup:$e.optional(),noReadAhead:$e.optional(),path:l,prefetchWrites:$e.optional(),maxFreeSpaceToLoad:tr.optional(),maxFreeSpaceToRetain:tr.optional()}).required(),ignoreScripts:$e.optional(),tls:ge.alternatives([ge.array().items(f),f])}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}a(A7,"configValidator");function R7(e){return Sx||gx.existsSync(e)?null:`Specified path ${e} does not exist.`}a(R7,"doesPathExist");function y7(e,t){ge.assert(e,ht.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=R7(e);if(r)return t.message(r)}a(y7,"validatePath");function b7(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(p7);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(g7):e}a(b7,"validateRotationMaxSize");function O7(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(E7);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(S7):e}a(O7,"validateRotationInterval");function N7(e,t){let r=t.state.path.join("."),n=f7.cpus().length,s=n-1;s<=2&&(s=2);let i=process.constrainedMemory?.()||mx();return i=Math.round(Math.min(i,mx())/1e6),s=Math.max(Math.min(s,Math.round((i-750)/300)),1),_7.info(`Detected ${n} cores and ${i}MB on this machine, defaulting ${r} to ${s}`),s}a(N7,"setDefaultThreads");function S_(e,t){let r=t.state.path.join(".");if(!mb.isEmpty(t.original)&&r!=="operationsApi.network.domainSocket")return t.original;if(mb.isEmpty(Ii))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"componentsRoot":return Wc.join(Ii,m7);case"logging.root":return Wc.join(Ii,Ex);case"clustering.leafServer.streams.path":return Wc.join(Ii,"clustering","leaf");case"storage.path":let n=Wc.join(Ii,px.LEGACY_DATABASES_DIR_NAME);return gx.existsSync(n)?n:Wc.join(Ii,px.DATABASES_DIR_NAME);case"logging.rotation.path":return Wc.join(Ii,Ex);case"operationsApi.network.domainSocket":return r==null?null:Wc.join(Ii,"operations-server");default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(S_,"setDefaultRoot");function w7(e){let t=ge.object({routes:TE});return h7.validateBySchema({routes:e},t)}a(w7,"routesValidator")});var Lt=C(Dx=>{"use strict";var ps=(k(),P(q)),pr=ie(),rr=ee(),{configValidator:I7,routesValidator:Ax}=pb(),jr=require("fs-extra"),yx=require("yaml"),Yn=require("path"),C7=require("is-number"),bx=require("properties-reader"),P7=require("lodash"),{handleHDBError:D7}=he(),{HTTP_STATUS_CODES:L7,HDB_ERROR_MSGS:yu}=Un(),{server:M7}=(Lr(),P(Yl)),{PACKAGE_ROOT:Ox}=Et(),{DATABASES_PARAM_CONFIG:T_,CONFIG_PARAMS:Kn,CONFIG_PARAM_MAP:Ws}=ps,v7="Unable to get config value because config is uninitialized",U7="Config successfully initialized",x7="Error backing up config file",B7="Empty parameter sent to getConfigValue",Nx=Yn.join(Ox,"config","yaml",ps.HDB_DEFAULT_CONFIG_FILE),H7=Yn.join(Ox,"config","yaml","defaultNatsConfig.yaml"),k7="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",Rx={logging_rotation_retain:"logging.rotation.retain",logging_rotation_rotate:"logging.rotation.rotate",logging_rotation_rotateinterval:"logging.rotation.rotateInterval",logging_rotation_rotatemodule:"logging.rotation.rotateModule",logging_rotation_timezone:"logging.rotation.timezone",logging_rotation_workerinterval:"logging.rotation.workerInterval"},AE,Dt,RE;Object.assign(Dx,{createConfigFile:F7,getDefaultConfig:G7,getConfigValue:Ix,initConfig:yE,flattenConfig:bu,updateConfigValue:Cx,updateConfigObject:$7,getConfiguration:Y7,setConfiguration:W7,readConfigFile:Tb,getClusteringRoutes:z7,initOldConfig:Px,getConfigFromFile:Q7,getConfigFilePath:zc,addConfig:j7,deleteConfigFromFile:J7,getConfigObj:X7,resolvePath:Eb,getFlatConfigObj:Z7});function Eb(e){if(e?.startsWith("~/"))return Yn.join(pr.getHomeDir(),e.slice(1));let t=le();try{return Yn.resolve(t.getHdbBasePath(),e)}catch(r){return console.error("Unable to resolve path",e,r),e}}a(Eb,"resolvePath");function F7(e,t=!1){let r=pa(Nx);if(e.clustering_enabled||e.CLUSTERING_ENABLED||e.clustering){let c=yx.parseDocument(jr.readFileSync(H7,"utf8"),{simpleKeys:!0});r.addIn(["clustering"],c.toJSON().clustering)}AE=bu(r.toJSON());let n;for(let c in e){let l=Ws[c.toLowerCase()];if(l===Kn.DATABASES){Array.isArray(e[c])?n=e[c]:n=Object.keys(e[c]).map(u=>({[u]:e[c][u]}));continue}if(!l&&(c.endsWith("_package")||c.endsWith("_port"))&&(l=c),l!==void 0){let u=l.split("_"),f=gb(l,e[c]);l==="rootPath"&&f?.endsWith("/")&&(f=f.slice(0,-1));try{r.setIn([...u],f)}catch(d){rr.error(d)}}}n&&wx(r,n),Sb(r,t);let s=r.toJSON();Dt=bu(s);let i=r.getIn(["rootPath"]),o=Yn.join(i,ps.HDB_CONFIG_FILE);if(jr.createFileSync(o),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);jr.writeFileSync(o,String(r)),rr.trace(`Config file written to ${o}`)}a(F7,"createConfigFile");function wx(e,t){let r;try{try{r=JSON.parse(t)}catch(n){if(!pr.isObject(t))throw n;r=t}for(let n of r){let s=Object.keys(n)[0];if(n[s].hasOwnProperty(T_.TABLES))for(let i in n[s][T_.TABLES])for(let o in n[s][T_.TABLES][i]){let c=n[s][T_.TABLES][i][o],l=[Kn.DATABASES,s,T_.TABLES,i,o];e.hasIn(l)?e.setIn(l,c):e.addIn(l,c)}else for(let i in n[s]){let o=n[s][i],c=[Kn.DATABASES,s,i];e.hasIn(c)?e.setIn(c,o):e.addIn(c,o)}}}catch(n){rr.error("Error parsing schemas CLI/env config arguments",n)}}a(wx,"setSchemasConfig");function G7(e){if(AE===void 0){let r=pa(Nx);AE=bu(r.toJSON())}let t=Ws[e.toLowerCase()];if(t!==void 0)return AE[t.toLowerCase()]}a(G7,"getDefaultConfig");function Ix(e){if(e==null){rr.info(B7);return}if(Dt===void 0){rr.trace(v7);return}let t=Ws[e.toLowerCase()];if(t!==void 0)return Dt[t.toLowerCase()]}a(Ix,"getConfigValue");function zc(e=pr.getPropsFilePath()){let t=pr.getEnvCliRootPath();if(t)return Eb(Yn.join(t,ps.HDB_CONFIG_FILE));let r=bx(e);return Eb(r.get(ps.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY))}a(zc,"getConfigFilePath");function yE(e=!1){if(Dt===void 0||e){let t;if(!pr.noBootFile()){t=pr.getPropsFilePath();try{jr.accessSync(t,jr.constants.F_OK|jr.constants.R_OK)}catch(i){throw rr.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}}let r=zc(t),n;if(r.includes("config/settings.js"))try{Px(r);return}catch(i){if(i.code!==ps.NODE_ERROR_CODES.ENOENT)throw i}try{n=pa(r)}catch(i){if(i.code===ps.NODE_ERROR_CODES.ENOENT){rr.trace(`HarperDB config file not found at ${r}.
|
|
19
19
|
This can occur during early stages of install where the config file has not yet been created`);return}else throw rr.error(i),new Error(`Error reading HarperDB config file at ${r}`)}q7(n,r),Sb(n);let s=n.toJSON();if(M7.config=s,Dt=bu(s),Dt.logging_rotation_rotate)for(let i in Rx)Dt[i]&&rr.error(`Config ${Rx[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);rr.trace(U7)}}a(yE,"initConfig");function q7(e,t){let r=e.getIn(["rootPath"]),n=!1;if(e.hasIn(["storage","path"])||(e.setIn(["storage","path"],Yn.join(r,"database")),n=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],Yn.join(r,"log")),n=!0),e.hasIn(["authentication"])||(e.addIn(["authentication"],{cacheTTL:3e4,enableSessions:!0,operationTokenTimeout:e.getIn(["operationsApi","authentication","operationTokenTimeout"])??"1d",refreshTokenTimeout:e.getIn(["operationsApi","authentication","refreshTokenTimeout"])??"30d"}),n=!0),e.hasIn(["analytics"])||(e.addIn(["analytics"],{aggregatePeriod:60}),n=!0),n){if(rr.trace("Updating config file with missing config params"),e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${e.errors}`);jr.writeFileSync(t,String(e))}}a(q7,"checkForUpdatedConfig");function Sb(e,t=!1){let r=e.toJSON();if(r.componentsRoot=r.componentsRoot??r?.customFunctions?.root,r?.http?.threads&&(r.threads=r?.http?.threads),r.http?.port&&r.http?.port===r.http?.securePort)throw yu.CONFIG_VALIDATION("http.port and http.securePort cannot be the same value");if(r.operationsApi?.network?.port&&r.operationsApi?.network?.port===r.operationsApi?.network?.securePort)throw yu.CONFIG_VALIDATION("operationsApi.network.port and operationsApi.network.securePort cannot be the same value");let n=I7(r,t);if(n.error)throw yu.CONFIG_VALIDATION(n.error.message);typeof n.value.threads=="object"?e.setIn(["threads","count"],n.value.threads.count):e.setIn(["threads"],n.value.threads),e.setIn(["componentsRoot"],n.value.componentsRoot),e.setIn(["logging","root"],n.value.logging.root),e.setIn(["storage","path"],n.value.storage.path),e.setIn(["logging","rotation","path"],n.value.logging.rotation.path),e.setIn(["operationsApi","network","domainSocket"],n.value?.operationsApi?.network?.domainSocket),r?.clustering?.enabled&&e.setIn(["clustering","leafServer","streams","path"],n.value.clustering.leafServer.streams?.path)}a(Sb,"validateConfig");function $7(e,t){Dt===void 0&&(Dt={});let r=Ws[e.toLowerCase()];if(r===void 0){rr.trace(`Unable to update config object because config param '${e}' does not exist`);return}Dt[r.toLowerCase()]=t}a($7,"updateConfigObject");function Cx(e,t,r=void 0,n=!1,s=!1,i=!1){Dt===void 0&&yE();let o=Ix(Ws.hdb_root),c=Yn.join(o,ps.HDB_CONFIG_FILE),l=pa(c),u;if(r&&Dt){let _=!1;for(let h in r)if(r[h]!=Dt[h.toLowerCase()]){_=!0;break}if(!_){rr.trace("No changes detected in config parameters, skipping update");return}}if(r===void 0&&e.toLowerCase()===Kn.DATABASES)u=t;else if(r===void 0){let _;if(i)_=e;else if(_=Ws[e.toLowerCase()],_===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let h=_.split("_"),m=gb(_,t);l.setIn([...h],m)}else for(let _ in r){let h=Ws[_.toLowerCase()];if(h===Kn.HTTP_SECUREPORT&&r[_]===Dt[Kn.HTTP_PORT]?.toString()&&l.setIn(["http","port"],null),h===Kn.OPERATIONSAPI_NETWORK_SECUREPORT&&r[_]===Dt[Kn.OPERATIONSAPI_NETWORK_PORT.toLowerCase()]?.toString()&&l.setIn(["operationsApi","network","port"],null),h===Kn.DATABASES){u=r[_];continue}if(h?.startsWith("threads_")){let m=l.getIn(["threads"]);m>=0&&(l.deleteIn(["threads"]),l.setIn(["threads","count"],m))}if(!h&&(_.endsWith("_package")||_.endsWith("_port"))&&(h=_),h!==void 0){let m=h.split("_"),S=ps.LEGACY_CONFIG_PARAMS[_.toUpperCase()];S&&S.startsWith("customFunctions")&&l.hasIn(S.split("_"))&&(h=S,m=S.split("_"));let g=gb(h,r[_]);h==="rootPath"&&g?.endsWith("/")&&(g=g.slice(0,-1));try{m.length>1&&typeof l.getIn(m.slice(0,-1))=="boolean"&&l.deleteIn(m.slice(0,-1)),l.setIn([...m],g)}catch(R){rr.error(R)}}}u&&wx(l,u),Sb(l);let f=l.getIn(["rootPath"]),d=Yn.join(f,ps.HDB_CONFIG_FILE);if(n===!0&&V7(c,f),l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${l.errors}`);jr.writeFileSync(d,String(l)),s&&(Dt=bu(l.toJSON())),rr.trace(`Config parameter: ${e} updated with value: ${t}`)}a(Cx,"updateConfigValue");function V7(e,t){try{let r=Yn.join(t,"backup",`${new Date(Date.now()).toISOString().replaceAll(":","-")}-${ps.HDB_CONFIG_FILE}.bak`);jr.copySync(e,r),rr.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){rr.error(x7),rr.error(r)}}a(V7,"backupConfigFile");var K7=["databases"];function bu(e){return e.http&&Object.assign(e.http,e?.customFunctions?.network),e?.operationsApi?.network&&(e.operationsApi.network={...e.http,...e.operationsApi.network}),e?.operationsApi&&(e.operationsApi.tls={...e.tls,...e.operationsApi.tls}),RE=e,r(e);function r(n){let s={};for(let i in n)if(n.hasOwnProperty(i)){if(typeof n[i]=="object"&&n[i]!==null&&!Array.isArray(n[i])&&!K7.includes(i)){let o=r(n[i]);for(let c in o){if(!o.hasOwnProperty(c))continue;c!=="package"&&(i=i.toLowerCase());let l=i+"_"+c;!Kn[l.toUpperCase()]&&Ws[l]&&(s[Ws[l].toLowerCase()]=o[c]),s[l]=o[c]}}n[i]!==void 0&&(s[i.toLowerCase()]=n[i])}return s}a(r,"squashObj")}a(bu,"flattenConfig");function gb(e,t){if(e===Kn.CLUSTERING_NODENAME||e===Kn.CLUSTERING_USER){if(t==null)return t;if(!isNaN(t))return t.toString();if(typeof t=="string"&&t.toLowerCase()==="true"||typeof t=="string"&&t.toLowerCase()==="false")return t}else{if(C7(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||pr.isObject(t)||t===null)return t;if(typeof t=="string"&&t.toLowerCase()==="true")return!0;if(typeof t=="string"&&t.toLowerCase()==="false")return!1}if(t===void 0||t.toLowerCase()==="undefined")return null;if(typeof t=="string"&&(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")))try{return JSON.parse(t)}catch{}return pr.autoCast(t)}a(gb,"castConfigValue");function Y7(){let e=pr.getPropsFilePath(),t=zc(e);return pa(t).toJSON()}a(Y7,"getConfiguration");async function W7(e){let{operation:t,hdb_user:r,hdb_auth_header:n,...s}=e;try{return Cx(void 0,void 0,s,!0),k7}catch(i){throw typeof i=="string"||i instanceof String?D7(i,i,L7.BAD_REQUEST,void 0,void 0,!0):i}}a(W7,"setConfiguration");function Tb(){let e=pr.getPropsFilePath();try{jr.accessSync(e,jr.constants.F_OK|jr.constants.R_OK)}catch(n){if(!pr.noBootFile())throw rr.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=zc(e);return pa(t).toJSON()}a(Tb,"readConfigFile");function pa(e){return yx.parseDocument(jr.readFileSync(e,"utf8"),{simpleKeys:!0})}a(pa,"parseYamlDoc");function z7(){let e=Tb(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=pr.isEmptyOrZeroLength(t)?[]:t;let r=Ax(t);if(r)throw yu.CONFIG_VALIDATION(r.message);let n=e?.clustering?.leafServer?.network?.routes;n=pr.isEmptyOrZeroLength(n)?[]:n;let s=Ax(n);if(s)throw yu.CONFIG_VALIDATION(s.message);if(!pr.isEmptyOrZeroLength(n)&&!pr.isEmptyOrZeroLength(t)){let i=t.filter(o=>n.some(c=>c.host===o.host&&c.port===o.port));if(!pr.isEmptyOrZeroLength(i)){let o=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw yu.CONFIG_VALIDATION(o)}}return{hub_routes:t,leaf_routes:n}}a(z7,"getClusteringRoutes");function Px(e){let t=bx(e);Dt={};for(let r in Ws){let n=t.get(r.toUpperCase());if(pr.isEmpty(n)||typeof n=="string"&&n.trim().length===0)continue;let s=Ws[r].toLowerCase();s===Kn.LOGGING_ROOT?Dt[s]=Yn.dirname(n):Dt[s]=n}return Dt}a(Px,"initOldConfig");function Q7(e){let t=Tb();return P7.get(t,e.replaceAll("_","."))}a(Q7,"getConfigFromFile");async function j7(e,t){let r=pa(zc());if(r.hasIn([e])?r.setIn([e],t):r.addIn([e],t),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);await jr.writeFile(zc(),String(r))}a(j7,"addConfig");function J7(e){let t=zc(pr.getPropsFilePath()),r=pa(t);r.deleteIn(e);let n=r.getIn(["rootPath"]),s=Yn.join(n,ps.HDB_CONFIG_FILE);jr.writeFileSync(s,String(r))}a(J7,"deleteConfigFromFile");function X7(){return RE||(yE(),RE)}a(X7,"getConfigObj");function Z7(){return Dt||yE(),Dt}a(Z7,"getFlatConfigObj")});var Wn=C((BNe,Or)=>{"use strict";var vx="username is required",Ux="nothing to update, must supply active, role or password to update",xx="password cannot be an empty string",Bx="If role is specified, it cannot be empty.",Hx="active must be true or false";Or.exports.addUser=cee;Or.exports.alterUser=lee;Or.exports.dropUser=dee;Or.exports.getSuperUser=pee;Or.exports.userInfo=fee;Or.exports.listUsers=OE;Or.exports.listUsersExternal=_ee;Or.exports.setUsersWithRolesCache=Qc;Or.exports.findAndValidateUser=Cb;Or.exports.getClusterUser=Eee;Or.exports.getUsersWithRolesCache=mee;Or.exports.USERNAME_REQUIRED=vx;Or.exports.ALTERUSER_NOTHING_TO_UPDATE=Ux;Or.exports.EMPTY_PASSWORD=xx;Or.exports.EMPTY_ROLE=Bx;Or.exports.ACTIVE_BOOLEAN=Hx;var kx=Rn(),eee=Yc(),A_=(SE(),P(gE)),Fx=dx(),R_=zr(),Ob=uo(),Ci=ie(),Gx=require("validate.js"),Nb=ee(),{promisify:tee}=require("util"),wb=mo(),Rb=(k(),P(q)),Lx=Pt(),ree=Lt(),nee=le(),see=ao(),{hdb_errors:iee,ClientError:zs}=he(),{HTTP_STATUS_CODES:Eo,AUTHENTICATION_ERROR_MSGS:Ab,HDB_ERROR_MSGS:Ou}=iee,{UserEventMsg:Ib}=qs(),yb=require("lodash"),{server:bE}=(Lr(),P(Yl)),oee=ee();bE.getUser=(e,t)=>Cb(e,t,t!=null);bE.authenticateUser=(e,t)=>Cb(e,t);var qx={username:!0,active:!0,role:!0,password:!0},Mx=new Map,aee=tee(eee.delete),bb=nee.get(Rb.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??A_.HASH_FUNCTION.SHA256,Pi;async function cee(e){let t=Gx.cleanAttributes(e,qx),r=Fx.addUserValidation(t);if(r)throw new zs(r.message);let n=await R_.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["id","permission","role"]});if(!n||n.length<1)throw new zs(Ou.ROLE_NAME_NOT_FOUND(t.role),Eo.NOT_FOUND);if(n.length>1)throw new zs(Ou.DUP_ROLES_FOUND(t.role),Eo.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=wb.encrypt(t.password)),t.password=await A_.hash(t.password,bb),t.hash_function=bb,t.role=n[0].id;let s=await kx.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(Nb.debug(s),await Qc(),s.skipped_hashes.length===1)throw new zs(Ou.USER_ALREADY_EXISTS(t.username),Eo.CONFLICT);return Ob.signalUserChange(new Ib(process.pid)),`${t.username} successfully added`}a(cee,"addUser");async function lee(e){let t=Gx.cleanAttributes(e,qx);if(Ci.isEmptyOrZeroLength(t.username))throw new Error(vx);if(Ci.isEmptyOrZeroLength(t.password)&&Ci.isEmptyOrZeroLength(t.role)&&Ci.isEmptyOrZeroLength(t.active))throw new Error(Ux);if(!Ci.isEmpty(t.password)&&Ci.isEmptyOrZeroLength(t.password.trim()))throw new Error(xx);if(!Ci.isEmpty(t.active)&&!Ci.isBoolean(t.active))throw new Error(Hx);if(!Ci.isEmpty(t.password)&&!Ci.isEmptyOrZeroLength(t.password.trim())&&(uee(t.username)&&(t.hash=wb.encrypt(t.password)),t.password=await A_.hash(t.password,bb)),t.role==="")throw new Error(Bx);if(t.role){let n=await R_.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new zs(Ou.ALTER_USER_ROLE_NOT_FOUND(t.role),Eo.NOT_FOUND);if(n.length>1)throw new zs(Ou.DUP_ROLES_FOUND(t.role),Eo.CONFLICT);t.role=n[0].id}let r=await kx.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await Qc(),Ob.signalUserChange(new Ib(process.pid)),r}a(lee,"alterUser");function uee(e){let t=!1,r=Pi.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}a(uee,"isClusterUser");async function dee(e){let t=Fx.dropUserValidation(e);if(t)throw new zs(t.message);if(Pi.get(e.username)===void 0)throw new zs(Ou.USER_NOT_EXIST(e.username),Eo.NOT_FOUND);let r=await aee({table:"hdb_user",schema:"system",hash_values:[e.username]});return Nb.debug(r),await Qc(),Ob.signalUserChange(new Ib(process.pid)),`${e.username} successfully deleted`}a(dee,"dropUser");async function fee(e){let t={};if(!e||!e.hdb_user)return"There was no user info in the body";t=yb.cloneDeep(e.hdb_user);let r=await R_.searchByHash({schema:"system",table:"hdb_role",hash_values:[t.role.id],get_attributes:["*"]});return t.role=r[0],delete t.password,delete t.refresh_token,delete t.hash,delete t.hash_function,t}a(fee,"userInfo");async function _ee(){let e=await OE();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}a(_ee,"listUsersExternal");async function OE(){let e=await R_.searchByValue({schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=yb.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await R_.searchByValue({schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=yb.cloneDeep(s),s.role=t[s.role],hee(s.role),n.set(s.username,s);return n}a(OE,"listUsers");function hee(e){if(!e){Nb.error("invalid user role found.");return}e.permission.system||(e.permission.system={}),e.permission.system.tables||(e.permission.system.tables={});for(let t of Object.keys(see)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}a(hee,"appendSystemTablesToRole");async function Qc(e=void 0){e?Pi=e:Pi=await OE()}a(Qc,"setUsersWithRolesCache");async function mee(){return Pi||await Qc(),Pi}a(mee,"getUsersWithRolesCache");async function Cb(e,t,r=!0){Pi||await Qc();let n=Pi.get(e);if(!n){if(!r)return{username:e};throw new zs(Ab.GENERIC_AUTH_FAIL,Eo.UNAUTHORIZED)}if(n&&!n.active)throw new zs(Ab.USER_INACTIVE,Eo.UNAUTHORIZED);let s={active:n.active,username:n.username};if(n.refresh_token&&(s.refresh_token=n.refresh_token),n.role&&(s.role=n.role),r===!0){if(Mx.get(t)===n.password)return s;{let i=A_.validate(n.password,t,n.hash_function||A_.HASH_FUNCTION.MD5);if(i?.then&&(i=await i),i===!0)Mx.set(t,n.password);else throw new zs(Ab.GENERIC_AUTH_FAIL,Eo.UNAUTHORIZED)}}return s}a(Cb,"findAndValidateUser");async function pee(){Pi||await Qc();for(let[,e]of Pi)if(e.role.role==="super_user")return e}a(pee,"getSuperUser");async function Eee(){let e=await OE(),t=ree.getConfigFromFile(Rb.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!(r==null||r?.role?.role!==Rb.ROLE_TYPES_ENUM.CLUSTER_USER))return r.decrypt_hash=wb.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+Lx.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+Lx.SERVER_SUFFIX.ADMIN,r}a(Eee,"getClusterUser");var $x=[];bE.invalidateUser=function(e){for(let t of $x)try{t(e)}catch(r){oee.error("Error invalidating user",r)}};bE.onInvalidatedUser=function(e){$x.push(e)}});var b_=C((GNe,Wx)=>{"use strict";var jc=ee(),zn=(k(),P(q)),gee=fM(),kNe=Ys(),FNe=po(),See=Wn(),{validateEvent:Vx}=qs(),y_=$n(),Tee=require("process"),{resetDatabases:Aee}=(xe(),P(ct)),Ree={[zn.ITC_EVENT_TYPES.SCHEMA]:yee,[zn.ITC_EVENT_TYPES.USER]:Yx};async function yee(e){let t=Vx(e);if(t){jc.error(t);return}jc.trace("ITC schemaHandler received schema event:",e),await gee(e.message),await bee(e.message)}a(yee,"schemaHandler");async function bee(e){try{y_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),y_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),y_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=Aee();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){jc.error(t)}}a(bee,"syncSchemaMetadata");var Kx=[];async function Yx(e){try{try{y_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),y_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){jc.warn(r)}let t=Vx(e);if(t){jc.error(t);return}jc.trace(`ITC userHandler ${zn.HDB_ITC_CLIENT_PREFIX}${Tee.pid} received user event:`,e),await See.setUsersWithRolesCache();for(let r of Kx)r()}catch(t){jc.error(t)}}a(Yx,"userHandler");Yx.addListener=function(e){Kx.push(e)};Wx.exports=Ree});var qs=C((WNe,Qx)=>{"use strict";var $Ne=ee(),Pb=ie(),Oee=(k(),P(q)),{ITC_ERRORS:O_}=Un(),{parentPort:VNe,threadId:Nee,isMainThread:wee,workerData:KNe}=require("worker_threads"),{onMessageFromWorkers:Iee,broadcast:YNe,broadcastWithAcknowledgement:Cee}=it();Qx.exports={sendItcEvent:Pee,validateEvent:zx,SchemaEventMsg:Dee,UserEventMsg:Lee};var NE;Iee(async(e,t)=>{NE=NE||b_(),zx(e),NE[e.type]&&await NE[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function Pee(e){return!wee&&e.message&&(e.message.originator=Nee),Cee(e)}a(Pee,"sendItcEvent");function zx(e){if(typeof e!="object")return O_.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||Pb.isEmpty(e.type))return O_.MISSING_TYPE;if(!e.hasOwnProperty("message")||Pb.isEmpty(e.message))return O_.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||Pb.isEmpty(e.message.originator))return O_.MISSING_ORIGIN;if(Oee.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return O_.INVALID_EVENT(e.type)}a(zx,"validateEvent");function Dee(e,t,r,n=void 0,s=void 0){this.originator=e,this.operation=t,this.schema=r,this.table=n,this.attribute=s}a(Dee,"SchemaEventMsg");function Lee(e){this.originator=e}a(Lee,"UserEventMsg")});var uo=C((jNe,Zx)=>{"use strict";var jx=(k(),P(q)),QNe=ie(),wE=ee(),Jx=zL(),Nu,{sendItcEvent:Xx}=qs();function Mee(e){try{wE.info("signalSchemaChange called with message:",e),Nu=Nu||b_();let t=new Jx(jx.ITC_EVENT_TYPES.SCHEMA,e);return Nu.schema(t),Xx(t)}catch(t){wE.error(t)}}a(Mee,"signalSchemaChange");function vee(e){try{wE.trace("signalUserChange called with message:",e),Nu=Nu||b_();let t=new Jx(jx.ITC_EVENT_TYPES.USER,e);return Nu.user(t),Xx(t)}catch(t){wE.error(t)}}a(vee,"signalUserChange");Zx.exports={signalSchemaChange:Mee,signalUserChange:vee}});var D_={};Ue(D_,{addAnalyticsListener:()=>P_,calculateCPUUtilization:()=>gB,diffResourceUsage:()=>SB,recordAction:()=>Mt,recordActionBinary:()=>Qn,setAnalyticsEnabled:()=>Uee});function Uee(e){_B=e}function xee(e,t){if(typeof e=="number"){let r=t.values,n=r.index++;if(n>=r.length){let s=r;t.values=r=new Float32Array(n*2),r.set(s),r.index=n+1}r[n]=e,t.total+=e}else if(typeof e=="boolean")e&&t.total++,t.count++;else if(typeof e=="function")t.count++;else throw new TypeError("Invalid metric value type "+typeof e)}function Bee(e,t,r,n,s,i){let o={};if(typeof t=="number")o.total=t,o.values=new Float32Array(4),o.values.index=1,o.values[0]=t,o.total=t;else if(typeof t=="boolean")o.total=t?1:0,o.count=1;else if(typeof t=="function")o.count=1,o.callback=t;else throw new TypeError("Invalid metric value type "+typeof t);o.description={metric:r,path:n,method:s,type:i},CE.set(e,o)}function Mt(e,t,r,n,s){if(!_B)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=CE.get(i);o?xee(e,o):Bee(i,e,t,r,n,s),IE||Hee()}function Qn(e,t,r,n,s){Mt(!!e,t,r,n,s)}function P_(e){pB.push(e)}function Hee(){IE=performance.now(),setTimeout(async()=>{let e=performance.now()-IE;IE=0;let t=[],r={time:Date.now(),period:e,threadId:Jc.threadId,metrics:t};for(let[s,i]of CE){if(i.values){let o=i.values.subarray(0,i.values.index);o.sort();let c=o.length,l=0,u=[],f;for(let d of EB){let _=Math.floor(c*d),h=o[_-1];if(_>l){let m=_-l;if(h===f){let S=u[u.length-1];typeof S=="number"?u[u.length-1]={value:S,count:1+m}:S.count+=m}else u.push(m>1?{value:h,count:m}:h),f=h;l=_}}t.push(Object.assign(i.description,{mean:i.total/c,distribution:u,count:c}))}else i.callback?t.push(Object.assign(i.description,i.callback(i))):t.push(Object.assign(i.description,{total:i.total,count:i.count}));await TB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:Jc.threadId,byThread:!0,...n});for(let s of pB)s(t);CE=new Map,Jc.parentPort?Jc.parentPort.postMessage({type:mB,report:r}):yB({report:r})},hB).unref()}function PE(e,t,r){let n={id:(0,I_.getNextMonotonicTime)(),metric:t,...r};e.primaryStore.put(n.id,n,{append:!0}).then(s=>{s||e.primaryStore.put(n.id,n)})}function gB(e,t){let r=e.userCPUTime+e.systemCPUTime;return Math.round(r/t*100)/100}function SB(e,t){return{userCPUTime:t.userCPUTime/1e3-(e?.userCPUTime??0),systemCPUTime:t.systemCPUTime/1e3-(e?.systemCPUTime??0),minorPageFault:t.minorPageFault-(e?.minorPageFault??0),majorPageFault:t.majorPageFault-(e?.majorPageFault??0),fsRead:t.fsRead-(e?.fsRead??0),fsWrite:t.fsWrite-(e?.fsWrite??0),voluntaryContextSwitches:t.voluntaryContextSwitches-(e?.voluntaryContextSwitches??0),involuntaryContextSwitches:t.involuntaryContextSwitches-(e?.involuntaryContextSwitches??0)}}function kee(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let o=`${t}.${s}`,c=i.getSize(),l={database:t,table:s,size:c};PE(e,"table-size",l),Xc.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),n+=c}return n}function eB(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=fB.default.statSync(s.primaryStore.env.path).size,c=kee(e,r,n),l=o-c,u={database:r,size:o,used:c,free:l,audit:i};PE(e,"database-size",u),Xc.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){Xc.warn?.("Error getting DB size metrics",s)}}function tB(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let o={database:r,...i};PE(e,"storage-volume",o),Xc.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){Xc.warn?.("Error getting DB volume metrics",s)}}async function Fee(e,t=6e4){let r=Lb(),n=AB(),s=new Promise(E=>{let T=performance.now();setImmediate(()=>{let N=performance.now();N-T>5e3&&Xc.warn?.("Unusually high event queue latency on the main thread of "+Math.round(N-T)+"ms"),T=performance.now()}),n.primaryStore.prefetch([1],()=>{let N=performance.now();N-T>5e3&&Xc.warn?.("Unusually high task queue latency on the main thread of "+Math.round(N-T)+"ms"),E(N-T)})}),i;for(let E of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(E.value?.time){i=E.value.time;break}if(Date.now()-t<i)return;let o,c=new Map,l=new Map,u=[],f;for(let{key:E,value:T}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!T)continue;if(o){if(E>o+t)break}else o=E;f=E;let{metrics:N,threadId:M}=T;for(let H of N||[]){let{path:X,method:W,type:$,metric:se,count:z,total:fe,distribution:ue,threads:Z,...Ae}=H;z||(z=1);let me=se+(X?"-"+X:"");W!==void 0&&(me+="-"+W),$!==void 0&&(me+="-"+$);let ye=c.get(me);if(ye){if(ye.threads){let dt=ye.threads[M];if(dt)ye=dt;else{ye.threads[M]={...Ae};continue}}ye.count||(ye.count=1);let Ht=ye.count;for(let dt in Ae){let Ln=Ae[dt];typeof Ln=="number"&&(ye[dt]=(ye[dt]*Ht+Ln*z)/(Ht+z))}ye.count+=z,fe>=0&&(ye.total+=fe,ye.ratio=ye.total/ye.count)}else ye={period:t,...H},delete ye.distribution,c.set(me,ye),ye.byThread&&(ye.threads=[],ye.threads[M]={...Ae},u.push(ye));if(ue){ue=ue.map(dt=>typeof dt=="number"?{value:dt,count:1}:dt);let Ht=l.get(me);Ht?Ht.push(...ue):l.set(me,ue)}}await TB()}for(let E of u){let{path:T,method:N,type:M,metric:H,count:X,total:W,distribution:$,threads:se,...z}=E;se=se.filter(fe=>fe);for(let fe in z){if(typeof E[fe]!="number")continue;let ue=0;for(let Z of se){let Ae=Z[fe];typeof Ae=="number"&&(ue+=Ae)}E[fe]=ue}E.count=se.length,delete E.threads,delete E.byThread}for(let[E,T]of l){let N=c.get(E);T.sort((dt,Ln)=>dt.value>Ln.value?1:-1);let M=N.count-1,H=[],X=0,W=0,$;for(let dt of EB){let Ln=M*dt;for(;X<Ln;)$=T[W++],X+=$.count,W===1&&X--;let Vr=T[W>1?W-2:0];$||($=T[0]),H.push($.value-($.value-Vr.value)*(X-Ln)/$.count)}let[se,z,fe,ue,Z,Ae,me,ye,Ht]=H;Object.assign(N,{p1:se,p10:z,p25:fe,median:ue,p75:Z,p90:Ae,p95:me,p99:ye,p999:Ht})}let d;for(let[E,T]of c)T.id=(0,I_.getNextMonotonicTime)(),T.time=f,n.primaryStore.put(T.id,T,{append:!0}).then(N=>{N||n.primaryStore.put(T.id,T)}),d=!0;let _=Date.now(),{idle:h,active:m}=performance.eventLoopUtilization();if(d||m*10>h){let E=(0,I_.getNextMonotonicTime)(),T={id:E,metric:"main-thread-utilization",idle:h-rB,active:m-nB,taskQueueLatency:await s,time:_,...process.memoryUsage()};n.primaryStore.put(E,T,{append:!0}).then(N=>{N||n.primaryStore.put(E,T)})}rB=h,nB=m;let S=process.resourceUsage(),g=SB(N_,S);g.time=_,g.period=N_.time?_-N_.time:t,g.cpuUtilization=gB(N_,g.period),PE(n,"resource-usage",g),N_=g;let R=Je();eB(n,R),eB(n,{system:R.system}),tB(n,R),tB(n,{system:R.system})}async function sB(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function Lb(){return iB||(iB=_t({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function AB(){return oB||(oB=_t({table:"hdb_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function $ee(){RB=!0;let e=(0,C_.get)(x.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await Fee(hB,e),await sB(Lb(),Gee),await sB(AB(),qee)},Math.min(e/2,2147483647)).unref()}function yB(e,t){let r=e.report;r.threadId=t?.threadId||Jc.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(aB+=n.mean*n.count);r.totalBytesProcessed=aB,t&&(r.metrics.push({metric:"utilization",...t.performance.eventLoopUtilization(cB.get(t))}),cB.set(t,t.performance.eventLoopUtilization())),r.id=(0,I_.getNextMonotonicTime)(),Lb().primaryStore.put(r.id,r),RB||$ee(),Vee&&(bB=Yee(r))}async function Yee(e){if(await bB,!Ea){let r=(0,w_.dirname)((0,uB.getLogFilePath)());try{Ea=await(0,Db.open)((0,w_.join)(r,"analytics.log"),"r+")}catch{Ea=await(0,Db.open)((0,w_.join)(r,"analytics.log"),"w+")}}let t=(await Ea.stat()).size;if(t>Kee){let r=Buffer.alloc(t);await Ea.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await Ea.write(r,{position:0}),await Ea.truncate(r.length),t=r.length}await Ea.write(JSON.stringify(e)+`
|