harperdb 4.5.15 → 4.5.16
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 +77 -63
- package/package.json +2 -2
- package/server/jobs/jobProcess.js +1 -1
- package/server/threads/threadServer.js +1 -1
- package/utility/scripts/restartHdb.js +1 -1
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});$r.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()}});qD={type:"application/json",serializeStream:ff,serialize:_f,deserialize:TJ,q:.5};$r.set("*/*",qD);$r.set("",qD);a(TJ,"tryJSONParse");a(mf,"registerContentHandlers");AJ=require("fastify-plugin"),RJ=AJ(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=Jm(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(Jm,"findBestSerializer");BD=LA.default.get(U.HTTP_COMPRESSIONTHRESHOLD);a(pf,"serialize");a(ea,"serializeMessage");a(xA,"asyncSerialization");a(BA,"hasAsyncSerialization");a(yJ,"streamToBuffer");bJ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(OJ,"isBufferEncoding");a(NJ,"parseContentType");a(Ji,"getDeserializer");a(wJ,"deserializerUnknownType");a(IJ,"transformIterable");a(jm,"toCsvStream")});var cp={};Ue(cp,{Blob:()=>mi,blobsWereEncoded:()=>dc,databasePaths:()=>kA,decodeBlobsWithWrites:()=>op,decodeFromDatabase:()=>fc,decodeWithBlobCallback:()=>ap,deleteBlob:()=>np,deleteBlobsInObject:()=>ta,deleteRootBlobPathsForDB:()=>GA,encodeBlobsAsBuffers:()=>HJ,encodeBlobsWithFilePath:()=>ip,findBlobsInObject:()=>jl,getFileId:()=>sp,getFilePathForBlob:()=>ZD,getRootBlobPathsForDB:()=>Tf,setDeletionDelay:()=>LJ});function jD(){}function np(e){let t=ZD(e);t&&setTimeout(()=>{(0,Qe.unlink)(t,r=>{r&&Zi.default.debug?.("Error trying to remove blob file",r)})},JD)}function LJ(e){JD=e}function XD(e){let t=dn.get(e);if(!t)t={storageIndex:0,fileId:null,store:fn},dn.set(e,t);else{if(t.saving)return t;t.store=fn}return vJ(t),t.source?HA(e,t.source,t):t.contentBuffer?MJ(e,t):HA(e,gf.Readable.from(e.stream()),t),t}function HA(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,Qe.createWriteStream)(n,{autoClose:!1,flags:"w"});if(t.errored){let g=Buffer.from(t.errored.toString());d.end(Buffer.concat([m(BigInt(g.length)+0xff000000000000n),g]));return}let _=!1;e.size!==void 0&&(d.write(m(e.size)),_=!0);let h;o?(_||d.write(PJ),h=(0,tp.createDeflate)(),t.pipe(h).pipe(d)):(_||d.write(CJ),t.pipe(d)),t.on("error",S);function m(g){let R=BigInt(g),E=new Uint8Array(_r),T=new DataView(E.buffer);return R|=BigInt(o?FA:QD)<<48n,T.setBigInt64(0,R),E}a(m,"createHeader");function S(g){i.unlock(f,0);let R=d.fd;g?(R&&(0,Qe.close)(R),u(g)):c?(0,Qe.fdatasync)(R,E=>{E&&u(E),l(),(0,Qe.close)(R)}):(l(),(0,Qe.close)(R))}a(S,"finished"),d.on("error",S).on("finish",()=>{if(_)S();else{let g=h?h.bytesWritten:d.bytesWritten-_r;e.size=g,(0,Qe.write)(d.fd,m(g),0,_r,0,S)}})}),e}function sp(e){return dn.get(e)?.fileId}function ZD(e){let t=dn.get(e);return t?.fileId&&Sf(t)}function Tf(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=kA.get(e);if(!t){if(!e.databaseName)return Zi.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,rp.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,to.join)(n,e.databaseName)):t=[(0,to.join)((0,rp.getHdbBasePath)(),"blobs",e.databaseName)],kA.set(e,t)}return t}async function GA(e){let t=Tf(e);t&&await Promise.all(t.map(r=>eL(r)))}async function eL(e){if((0,Qe.existsSync)(e)){for(let t of await(0,xs.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await eL((0,to.join)(e,t.name));else try{await(0,xs.unlink)((0,to.join)(e,t.name))}catch(r){Zi.default.warn?.("Error deleting file",r)}try{await(0,xs.rmdir)(e)}catch(t){Zi.default.warn?.("Error deleting directory",t)}}}function Sf({storageIndex:e,fileId:t,store:r}){let n=Tf(r);return(0,to.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 MJ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<zD))return e.size=n,HA(e,gf.Readable.from([r]),t)}function vJ(e){let t=Tf(e.store),r=UJ(),n=t?.length>1?xJ(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Sf(e),o=(0,to.dirname)(i);(0,Qe.existsSync)(o)||(0,WD.ensureDirSync)(o),e.filePath=i}function UJ(){let e=YD.get(fn);if(!e){let t=0,r=Tf(fn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Qe.existsSync)(n))for(let c of(0,Qe.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,to.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(fn.getUserSharedBuffer("blob-file-id",e.buffer)),YD.set(fn,e)}return Number(Atomics.add(e,0,1n))}function xJ(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(ep);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,BJ(e)),e.frequencyTable[t%ep]}async function BJ(e){if(!xs.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let o=await(0,xs.statfs)(s),c=o.bavail*o.bsize;return Math.pow(c,.8)})),r=new Array(ep),n=t.map(s=>1/s);for(let s=0;s<ep;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 ip(e,t,r){Ql=t,fn=r,dc=!1;try{return e()}finally{Ql=void 0,fn=void 0}}function HJ(e){Dr=[];let t;try{t=e()}catch(n){throw Dr=void 0,n}let r=Dr.length<2?Dr[0]:Promise.all(Dr);return Dr=void 0,r?r.then(()=>e()):t}function op(e,t){try{Dr=[],uc=t,e()}catch(n){throw uc=void 0,Dr=void 0,n}uc=void 0;let r=Dr.length<2?Dr[0]:Promise.all(Dr);return Dr=void 0,r}function ap(e,t,r){fn=r;try{return uc=t,e()}finally{uc=void 0}}function fc(e,t){return fn=t,e()}function ta(e){jl(e,t=>{np(t)})}function jl(e,t){if(e instanceof mi)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&jl(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&jl(e[r],t)}}function kJ(){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""}}}var eo,xs,Qe,tp,gf,WD,rp,to,Zi,zD,_r,QD,FA,VD,CJ,PJ,KD,dn,uc,mi,Ql,Dr,fn,dc,Ef,Xm,DJ,Zm,JD,kA,YD,ep,cs=be(()=>{eo=require("msgpackr"),xs=require("node:fs/promises"),Qe=require("node:fs"),tp=require("node:zlib"),gf=require("node:stream"),WD=require("fs-extra"),rp=M(le());k();to=require("path"),Zi=M(_i());Xi();zD=8192,_r=8,QD=0,FA=1,VD=255,CJ=new Uint8Array([0,QD,255,255,255,255,255,255]),PJ=new Uint8Array([0,FA,255,255,255,255,255,255]),KD=0xffffffffffff,dn=new WeakMap,mi=global.Blob||kJ(),dc=!1,Ef=new Uint8Array(8),Xm=new DataView(Ef.buffer),DJ=6e4;a(jD,"InstanceOfBlobWithNoConstructor");jD.prototype=mi.prototype;Zm=class e extends jD{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size)}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=dn.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):(BA()&&xA(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=dn.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=Sf(t),o,c=a(async()=>{let l,u=_r;try{if(l=await(0,xs.readFile)(i),l.length>=_r){l.copy(Ef,0,0,_r);let d=Xm.getBigUint64(0);if(Number(d>>48n)===VD)throw new Error("Error in blob: "+buffer.subarray(_r));if(u=Number(d&0xffffffffffffn),u<n&&(u=n),u<KD&&(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");return new Promise((m,S)=>{if(_.attemptLock(h,0,()=>(o=!0,_.unlock(h,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]===FA?new Promise((d,_)=>{(0,tp.deflate)(l.subarray(_r),(h,m)=>{h?_(h):d(f(m))})}):f(l.subarray(_r))},"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=dn.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=Sf(t),o,c=0,l=0,u,f,d,_=!1,h=this;return new ReadableStream({start(){let S=1e3,g=a((R,E)=>{(0,Qe.open)(i,"r",(T,w)=>{if(T){if(T.code==="ENOENT"&&d!==!1&&(Zi.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(v=>v(T))}else o=w,R(w)})},"openFile");return new Promise(g)},pull:a(S=>{let g=0,R=100;return new Promise(a(function E(T,w){function v(q){(0,Qe.close)(o),clearTimeout(f),u&&u.close(),w(q),h.#e?.forEach(W=>W(q))}a(v,"onError");let H=Buffer.allocUnsafe(262144);(0,Qe.read)(o,H,0,H.length,c,(q,W,te)=>{if(l+=W,q)return v(q);if(c===0){if(W<_r){R-- >0&&d!==!1?(m(),Zi.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>E(T,w),20).unref()):(Zi.default.debug?.("File was empty, throwing error",i,R),w(new Error(`Blob ${t.fileId} was empty`)));return}te.copy(Ef,0,0,_r);let se=Xm.getBigUint64(0);if(Number(se>>48n)===VD)return v(new Error("Error in blob: "+te.subarray(_r)));if(g=Number(se&0xffffffffffffn),g<KD&&h.size!==g&&(h.size=g,h.#t))for(let Y of h.#t)Y(g);te=te.subarray(_r,W),l-=_r}else if(W===0){let se=Buffer.allocUnsafe(8);return(0,Qe.read)(o,se,0,_r,0,Y=>{if(Y)return v(Y);if(Ef.set(se),g=Number(Xm.getBigUint64(0)&0xffffffffffffn),g>l){m()?u?f=setTimeout(()=>{v(new Error("File read timed out"))},DJ).unref():(u=(0,Qe.watch)(i,{persistent:!1},()=>{u.close(),u=null,f&&(clearTimeout(f),f=null,E(T,w))}),E(T,w)):_?v(new Error("Blob is incomplete")):(_=!0,E(T,w));return}(0,Qe.close)(o),S.close(),T()})}else te=te.subarray(0,W);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=W,E(T,w);s&&l>=s&&(l>s&&(te=te.subarray(0,s-c)),l=g=s),n&&n>c&&(te=te.subarray(n-c))}c+=W;try{S.enqueue(te)}catch(se){return Zi.default.debug?.("Error enqueuing chunk",se),T()}l===g&&((0,Qe.close)(o),S.close()),T()})},"readMore"))},"pull"),cancel(){(0,Qe.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,S.unlock(g,0)}),d||S.unlock(g,0)}return d}}slice(t,r,n){let s=dn.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};dn.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)};dn.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(t){if(fn=t?.primaryStore?.rootStore,!fn)throw new Error("No target table specified");return XD(this).saving??Promise.resolve()}},JD=500;a(np,"deleteBlob");a(LJ,"setDeletionDelay");global.createBlob=function(e,t){let r=new Zm(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(dn.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof gf.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=gf.Readable.from(e);else throw new Error("Invalid source type");return r};a(XD,"saveBlob");a(HA,"writeBlobWithStream");a(sp,"getFileId");a(ZD,"getFilePathForBlob");kA=new Map;a(Tf,"getRootBlobPathsForDB");a(GA,"deleteRootBlobPathsForDB");a(eL,"rimrafSteadily");a(Sf,"getFilePath");a(MJ,"writeBlobWithBuffer");a(vJ,"generateFilePath");YD=new Map;a(UJ,"getNextFileId");ep=128;a(xJ,"getNextStorageIndex");a(BJ,"createFrequencyTableForStoragePaths");a(ip,"encodeBlobsWithFilePath");a(HJ,"encodeBlobsAsBuffers");a(op,"decodeBlobsWithWrites");a(ap,"decodeWithBlobCallback");a(fc,"decodeFromDatabase");a(ta,"deleteBlobsInObject");a(jl,"findBlobsInObject");(0,eo.addExtension)({Class:mi,type:11,unpack:a(function(e){let t=(0,eo.unpack)(e),r=new Zm;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(dn.set(r,{storageIndex:t[1],fileId:t[2],store:fn}),uc)return uc(r)??r;if(!fn)throw new Error("No store specified, cannot load blob from storage")}else dn.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=dn.get(e);if(Ql!==void 0&&(dc=!0,t?.recordId!==void 0&&t.recordId!==Ql))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<zD)return r.size=t.contentBuffer.length,(0,eo.pack)([r,t.contentBuffer])}if(Ql!==void 0){if(t=XD(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=Ql,(0,eo.pack)([r,t.storageIndex,t.fileId])}if(t)try{let n=(0,Qe.readFileSync)(Sf(t));if(n.length>=_r&&(n.copy(Ef,0,0,_r),Number(Xm.getBigUint64(0)&0xffffffffffffn)===n.length-_r))return Buffer.concat([(0,eo.pack)([r]),n]);if(Dr)Dr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Dr)return Dr.push(e.bytes()),Buffer.alloc(0);throw n}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,eo.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(kJ,"polyfillBlob")});var iL={};Ue(iL,{HAS_EXPIRATION:()=>dp,HAS_RESIDENCY_ID:()=>zA,HAS_STRUCTURE_UPDATE:()=>_p,LAST_TIMESTAMP_PLACEHOLDER:()=>bf,LOCAL_TIMESTAMP:()=>FJ,METADATA:()=>hc,NEW_TIMESTAMP_PLACEHOLDER:()=>rL,NO_TIMESTAMP:()=>qA,PENDING_LOCAL_TIME:()=>QA,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>WA,RecordEncoder:()=>YA,TIMESTAMP_ASSIGN_LAST:()=>qJ,TIMESTAMP_ASSIGN_NEW:()=>nL,TIMESTAMP_ASSIGN_PREVIOUS:()=>sL,TIMESTAMP_PLACEHOLDER:()=>lp,TIMESTAMP_RECORD_PREVIOUS:()=>$A,handleLocalTimeForGets:()=>hp,recordUpdater:()=>jA,removeEntry:()=>mc});function VJ(){return yf[0]=yf[0]^64,GJ.getFloat64(0)}function hp(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?.[hc];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?.[hc]>=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[hc];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,_c.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<_c.length;u++){let f=_c[u].deref();(!f||f.isDone||f.isCommitted)&&_c.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function jA(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){d||l==null?Jl=i?.localTime?$A|sL:qA:Jl=l?i?.localTime?$A|16384:nL|16384:qA;let h=u?.expiresAt;if(h>=0&&(c|=dp),Rf=c,VA=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:Jl>0},S,g=0;try{let R=i?.residencyId,E=u?.residencyId;E&&(KA=E,Rf|=zA,g|=pc),R!==E&&(g|=Ec,R||(R=0)),c&dp&&(g|=Nf),u?.originatingOperation&&(g|=Of),d&&(m.ifVersion=S=i?.version??null),i&&i.value&&i.metadataFlags&_n&&(r.getBinaryFast(i.localTime)||ta(i.value));let T;if(s!==void 0&&(T=ip(()=>e.put(n,s,m),n,e.rootStore),dc&&(g|=_n)),l){let w=u?.user?.username;if(_&&(ip(()=>e.encoder.encode(_),n,e.rootStore),dc&&(g|=_n)),e.encoder.hasStructureUpdate&&(g|=_p,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let v=i?.localTime,H=r.get(v);if(H){let q=Nt(H).previousLocalTime;return T=r.put(v,Xl(o,t,n,q,u?.nodeId??server.replication.getThisNodeId(r)??0,w,f,Af,g,E,R,h),{ifVersion:S}),T}}T=r.put(s===void 0?rL:bf,Xl(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,w,f,Af,g,E,R,h,u?.originatingOperation),{append:f!=="invalidate",instructedWrite:!0,ifVersion:S})}return T}catch(R){throw R.message+=" id: "+n+" options: "+m,R}}}function mc(e,t,r){if(t)return t.value&&t.metadataFlags&_n&&!e.auditStore.getBinaryFast(t.localTime)&&ta(t.value),e.remove(t.key,r)}var tL,up,lp,bf,WA,rL,FJ,hc,yf,GJ,qA,nL,qJ,sL,$A,dp,zA,QA,_p,$J,Af,Jl,Rf,VA,KA,YA,_c,Zl=be(()=>{tL=require("msgpackr");ro();up=M(j());cs();cs();lp=new Uint8Array([1,1,1,1,4,64,0,0]),bf=new Uint8Array([1,1,1,1,1,0,0,0]),WA=new Uint8Array([1,1,1,1,3,64,0,0]),rL=new Uint8Array([1,1,1,1,0,64,0,0]),FJ=Symbol("local-timestamp"),hc=Symbol("metadata"),yf=new Uint8Array(8),GJ=new DataView(yf.buffer,0,8),qA=0,nL=0,qJ=1,sL=3,$A=4,dp=16,zA=32,QA=1,_p=256,Jl=0,Rf=-1,VA=-1,KA=0,YA=class extends tL.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(Jl||Rf>=0){let o=0,c=Jl;c&&(o+=8,Jl=0);let l=Rf,u=VA,f=KA;l>=0&&(o+=4,Rf=-1,u>=0&&(o+=8,VA=-1),f&&(o+=4,KA=0));let d=$J=r.call(this,s,i|2048|o);Af=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(lp[4]=c,lp[5]=c>>8,d.set(lp,_),_+=8),dc&&(l|=_n),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|fp<<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 Af=r.call(this,s,i),Af};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(yf,0,c),c+=8;else for(let _=0;_<8;_++)yf[_]=t[c++];l=VJ(),i=t[c]}let u,f;i<32&&(i===fp?(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&dp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&zA&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=fc(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[hc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:fc(()=>super.decode(t,r),this.rootStore)}catch(c){return up.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(VJ,"getTimestamp");a(hp,"handleLocalTimeForGets");_c=[];setInterval(()=>{for(let e=0;e<_c.length;e++){let t=_c[e].deref();!t||t.isDone||t.isCommitted?_c.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(up.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):up.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(jA,"recordUpdater");a(mc,"removeEntry")});var XA={};Ue(XA,{add:()=>mp,applyReverse:()=>oL,getRecordAtTime:()=>JA,rebuildUpdateBefore:()=>pp});function mp(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 pp(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,mp(n,s,i)}else r&&(n||(n={}),n[s]=i)}else n||(n={}),n[s]=e[s];return n}function oL(e,t){for(let r in t){let n=t[r];if(n?.__op__){let s=KJ[n.__op__]?.reverse;if(s)s(e,r,{value:n.value});else throw new Error(`Unsupported operation ${n.__op__}`)}else e[r]=aL}}function JA(e,t,r){let n=r.rootStore.auditStore,s={...e.value},i=e.localTime;for(;i>t;){let l=n.get(i),u=Nt(l);switch(u.type){case"put":s=u.getValue(r);break;case"patch":oL(s,u.getValue(r));break;case"delete":s=null}i=u.previousLocalTime}let o={},c=0;for(let l in s)s[l]===aL&&(o[l]=!0,c++);for(;c>0&&i>0;){let l=n.get(i),u=Nt(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 KJ,aL,Ep=be(()=>{ro();a(mp,"add");mp.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)};KJ={add:mp};a(pp,"rebuildUpdateBefore");a(oL,"applyReverse");aL={};a(JA,"getRecordAtTime")});var fL={};Ue(fL,{onStorageReclamation:()=>wf,runReclamationHandlers:()=>rR,setAvailableSpaceRatioGetter:()=>WJ});function wf(e,t,r){(r||(0,Sp.getWorkerIndex)()===(0,Sp.getWorkerCount)()-1)&&(gp.has(e)||gp.set(e,[]),gp.get(e).push({priority:0,handler:t}),tR||(tR=setTimeout(rR,lL).unref()))}async function rR(){for(let[e,t]of gp)try{let r=await dL(e),n=YJ/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&&(eR.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){eR.default.error?.("Error running storage reclamation handlers",r)}tR=setTimeout(rR,lL).unref()}function WJ(e){dL=e??uL}var ZA,Sp,eR,Tp,cL,gp,YJ,lL,tR,uL,dL,Ap=be(()=>{ZA=require("node:fs/promises"),Sp=M(tt()),eR=M(_i());k();Tp=M(le()),cL=M(ae());Tp.default.initSync();gp=new Map,YJ=Tp.default.get(U.STORAGE_RECLAMATION_THRESHOLD)??.4,lL=(0,cL.convertToMS)(Tp.default.get(U.STORAGE_RECLAMATION_INTERVAL))||36e5;a(wf,"onStorageReclamation");uL=a(async e=>{if(ZA.statfs){let t=await(0,ZA.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"),dL=uL;a(rR,"runReclamationHandlers");a(WJ,"setAvailableSpaceRatioGetter")});var OL={};Ue(OL,{ACTION_32_BIT:()=>fp,ACTION_64_BIT:()=>JJ,AUDIT_STORE_OPTIONS:()=>Pf,Decoder:()=>Sc,HAS_BLOBS:()=>_n,HAS_CURRENT_RESIDENCY_ID:()=>pc,HAS_EXPIRATION_EXTENDED_TYPE:()=>Nf,HAS_ORIGINATING_OPERATION:()=>Of,HAS_PREVIOUS_RESIDENCY_ID:()=>Ec,REMOTE_SEQUENCE_UPDATE:()=>Np,createAuditEntry:()=>Xl,getLastRemoved:()=>QJ,openAuditStore:()=>bp,readAuditEntry:()=>Nt,removeAuditEntry:()=>Op,setAuditRetention:()=>jJ,transactionKeyEncoder:()=>AL});function bp(e){let t=e.auditStore=e.openDB(nR.AUDIT_STORE_NAME,{create:!1,...Pf});t||(t=e.auditStore=e.openDB(nR.AUDIT_STORE_NAME,Pf),hL(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=iR;wf(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()-sR/(1+i*i)})){try{_=Op(t,m,S)}catch(g){eu.warn("Error removing audit entry",g)}if(h=m,await new Promise(setImmediate),++d>=zJ){o=10;break}}await _}finally{d===0?o=Math.min(o<<1,sR/10):(hL(t,h),o>100&&(o=o>>1)),f(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Cf.getWorkerIndex)()===(0,Cf.getWorkerCount)()-1&&c(),(0,Cf.getWorkerIndex)()===0&&!_L)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(_L=!0,eu.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 Op(e,t,r){let n=XJ(r),s;if(n&_n){s=Nt(r);let i=e.tableStores[s.tableId],o=i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&fc(()=>ta(s.getValue(i)),i.rootStore)}if((n&15)===oR){s=s||Nt(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 hL(e,t){aR[0]=t,e.put(Symbol.for("last-removed"),RL)}function QJ(e){let t=e.get(Symbol.for("last-removed"));if(t)return RL.set(t),aR[0]}function jJ(e,t=iR){sR=e,iR=t}function Xl(e,t,r,n,s,i,o,c,l,u,f,d,_){let h=yL[o];if(!h)throw new Error(`Invalid audit entry type ${o}`);let m=1;if(n&&(n>1?ra.setFloat64(0,n):ls.set(WA),m=9),l){if(l&255)throw new Error("Illegal extended type");m+=3}R(s),R(t),g(r),ra.setFloat64(m,e),m+=8,l&pc&&R(u),l&Ec&&R(f),l&Nf&&(ra.setFloat64(m,d),m+=8),l&Of&&R(bL[_]),i?g(i):ls[m++]=0,l?ra.setUint32(n?8:0,h|l|3221225472):ls[n?8:0]=h;let S=ls.subarray(0,m);if(c)return Buffer.concat([S,c]);return S;function g(E){let T=m;m+=1,m=(0,gc.writeKey)(E,ls,m);let w=m-T-1;w>127?w>16383?(eu.error("Key or username was too large for audit entry",E),m=T+1,ls[T]=0):(ls.copyWithin(T+2,T+1,m),ra.setUint16(T,w|32768),m++):ls[T]=w}function R(E){E<128?ls[m++]=E:E<16384?(ra.setUint16(m,E|32768),m+=2):E<1056964608?(ra.setUint32(m,E|3221225472),m+=4):(ls[m]=255,ra.setUint32(m+1,E),m+=5)}}function XJ(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 Sc(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function Nt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new Sc(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&pc&&(_=n.readInt()),i&Ec&&(h=n.readInt()),i&Nf&&(m=n.readFloat64()),i&Of){let T=n.readInt();S=bL[T]}l=n.readInt();let g=n.position,R=n.position+=l,E;return{type:yL[i&7],tableId:c,nodeId:o,get recordId(){return(0,gc.readKey)(e,u,f)},getBinaryRecordId(){return e.subarray(u,f)},version:d,previousLocalTime:s,get user(){return R>g?(0,gc.readKey)(e,g,R):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(T,w,v){if(i&Rp||i&If&&!w)return E||(E=fc(()=>T.decoder.decode(e.subarray(n.position,r)),T.rootStore)),E;if(i&If&&v)return JA(T.getEntry(this.recordId),v,T)},getBinaryValue(){return i&(Rp|If)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:_,previousResidencyId:h,expiresAt:m,originatingOperation:S}}catch(n){return eu.error("Reading audit entry error",n,e),{}}}var gc,yp,nR,Cf,TL,eu,ls,ra,AL,Pf,sR,zJ,aR,RL,iR,_L,Rp,If,mL,oR,pL,EL,gL,SL,fp,JJ,Np,pc,Ec,Of,Nf,_n,yL,bL,Sc,ro=be(()=>{gc=require("ordered-binary"),yp=M(le()),nR=M(Ut());k();Cf=M(tt()),TL=M(ae());Zl();eu=M(j());Ep();cs();Ap();(0,yp.initSync)();ls=Buffer.alloc(2816),ra=new DataView(ls.buffer,ls.byteOffset,2816),AL={writeKey(e,t,r){return e===bf?(t.set(bf,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,gc.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,gc.readKey)(e,t,r)}},Pf={encoding:"binary",keyEncoder:AL},sR=(0,TL.convertToMS)((0,yp.get)(U.LOGGING_AUDITRETENTION))||86400*3,zJ=1e3,aR=new Float64Array(1),RL=new Uint8Array(aR.buffer),iR=1e4,_L=!1;a(bp,"openAuditStore");a(Op,"removeAuditEntry");a(hL,"updateLastRemoved");a(QJ,"getLastRemoved");a(jJ,"setAuditRetention");Rp=16,If=32,mL=1,oR=2,pL=3,EL=4,gL=5,SL=6,fp=14,JJ=15,Np=11,pc=512,Ec=1024,Of=2048,Nf=4096,_n=8192,yL={put:mL|Rp,[mL]:"put",delete:oR,[oR]:"delete",message:pL|Rp,[pL]:"message",invalidate:EL|If,[EL]:"invalidate",patch:gL|If,[gL]:"patch",relocate:SL,[SL]:"relocate"},bL={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(Xl,"createAuditEntry");a(XJ,"readAction");a(Nt,"readAuditEntry");Sc=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 uR(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=wL,ZJ(e.primaryStore,e.auditStore)):(c=NL,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{IL(NL[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=Wl(t);let f=new lR(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 IL(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),CL(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=Nt(s),o=e[i.tableId];if(!o)continue;let c=i.recordId,l=Wl(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,cR.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,cR.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 ZJ(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=wL[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{IL(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function CL(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function PL(e){return e.nextTransaction||(uR({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),CL(e)),e.nextTransaction}var cR,NL,wL,lR,dR=be(()=>{cR=M(j());ql();zl();ro();NL=Object.create(null),wL=Object.create(null);a(uR,"addSubscription");lR=class extends Dn{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(IL,"notifyFromTransactionData");a(ZJ,"listenToCommits");a(CL,"nextTransaction");a(PL,"whenNextTransaction")});var LL=P((dRe,DL)=>{"use strict";var fR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};DL.exports=fR});var vL=P((_Re,ML)=>{"use strict";var _R=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};ML.exports=_R});var Df=P((mRe,xL)=>{"use strict";var UL=le(),e4=(k(),D($)),{RecordEncoder:t4}=(Zl(),D(iL));UL.initSync();var r4=UL.get(e4.CONFIG_PARAMS.STORAGE_CACHING)!==!1,hR=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:t4})}};xL.exports=hR});var Lf=P((ERe,BL)=>{"use strict";var vn=le(),us=(k(),D($));vn.initSync();var wp=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=vn.get(us.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||vn.get(us.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||vn.get(us.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",vn.get(us.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=vn.get(us.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),vn.get(us.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=vn.get(us.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),vn.get(us.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=vn.get(us.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),vn.get(us.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=vn.get(us.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=vn.get(us.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};BL.exports=wp;wp.MAX_DBS=1e4});var ut=P((SRe,WL)=>{"use strict";var pR=require("lmdb"),Bs=require("fs-extra"),Un=require("path"),Ip=an(),FL=j(),hn=Pn().LMDB_ERRORS_ENUM,Cp=vL(),ER=Df(),GL=Lf(),na=Ut(),HL=(k(),D($)),{table:n4,resetDatabases:s4}=(ve(),D(it)),kL=le(),Hs=na.INTERNAL_DBIS_NAME,qL=na.DBI_DEFINITION_NAME,i4="data.mdb",o4="lock.mdb",Mf=".mdb",a4="-lock",mR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=ds(t,r),this.key_type=this.dbi[na.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[na.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new pR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Pp(e,t){if(e===void 0)throw new Error(hn.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(hn.ENV_NAME_REQUIRED)}a(Pp,"pathEnvNameValidation");async function gR(e,t,r=!0){try{await Bs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(hn.INVALID_BASE_PATH):n}try{let n=Un.join(e,t+Mf);return await Bs.access(n,Bs.constants.R_OK|Bs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Bs.access(Un.join(e,t,i4),Bs.constants.R_OK|Bs.constants.F_OK),Un.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(hn.INVALID_ENVIRONMENT)}else throw new Error(hn.INVALID_ENVIRONMENT);throw n}}a(gR,"validateEnvironmentPath");function Dp(e,t){if(Ip.validateEnv(e),t===void 0)throw new Error(hn.DBI_NAME_REQUIRED)}a(Dp,"validateEnvDBIName");async function c4(e,t,r=!1,n=!1){Pp(e,t);let s=Un.basename(e);t=t.toString();let i=kL.get(HL.CONFIG_PARAMS.DATABASES);i||kL.setProperty(HL.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await gR(e,t,n),$L(e,t,r)}catch(o){if(o.message===hn.INVALID_ENVIRONMENT){let c=Un.join(e,t);await Bs.mkdirp(n?c:e);let l=new GL(n?c:c+Mf,!1),u=pR.open(l);u.dbis=Object.create(null);let f=new ER(!1);u.openDB(Hs,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=SR(e,t,r);return u[na.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(c4,"createEnvironment");async function l4(e,t,r,n=!0){Pp(e,t),t=t.toString();let s=Un.join(e,t);return n4({table:t,database:Un.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(l4,"copyEnvironment");async function $L(e,t,r=!1){Pp(e,t),t=t.toString();let n=SR(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 gR(e,t),i=Un.join(e,t+Mf),o=s!=i,c=new GL(s,o),l=pR.open(c);l.dbis=Object.create(null);let u=KL(l);for(let f=0;f<u.length;f++)ds(l,u[f]);return l[na.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a($L,"openEnvironment");async function u4(e,t,r=!1){Pp(e,t),t=t.toString();let n=Un.join(e,t+Mf),s=await gR(e,t);if(global.lmdb_map!==void 0){let i=SR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await VL(o),delete global.lmdb_map[i]}}await Bs.remove(s),await Bs.remove(s===n?s+a4:Un.join(Un.dirname(s),o4))}a(u4,"deleteEnvironment");async function VL(e){Ip.validateEnv(e);let t=e[na.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(VL,"closeEnvironment");function SR(e,t,r=!1){let s=`${Un.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(SR,"getCachedEnvironmentName");function d4(e){Ip.validateEnv(e);let t=Object.create(null),r=ds(e,Hs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Hs)try{t[n]=Object.assign(new Cp,s)}catch{FL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(d4,"listDBIDefinitions");function KL(e){Ip.validateEnv(e);let t=[],r=ds(e,Hs);for(let{key:n}of r.getRange({start:!1}))n!==Hs&&t.push(n);return t}a(KL,"listDBIs");function f4(e,t){let n=ds(e,Hs).getEntry(t),s=new Cp;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{FL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(f4,"getDBIDefinition");function YL(e,t,r,n=!r){if(Dp(e,t),t=t.toString(),t===Hs)throw new Error(hn.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return ds(e,t)}catch(s){if(s.message===hn.DBI_DOES_NOT_EXIST){let i=new ER(r,n===!0),o=e.openDB(t,i),c=new Cp(r===!0,n);return o[qL]=c,ds(e,Hs).putSync(t,c),e.dbis[t]=o,o}throw s}}a(YL,"createDBI");function ds(e,t){if(Dp(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Hs?r=f4(e,t):r=new Cp,r===void 0)throw new Error(hn.DBI_DOES_NOT_EXIST);let n;try{let s=new ER(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(hn.DBI_DOES_NOT_EXIST):s}return n[qL]=r,e.dbis[t]=n,n}a(ds,"openDBI");function _4(e,t){Dp(e,t),t=t.toString();let r=ds(e,t),n=r.getStats();return r[na.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(_4,"statDBI");async function h4(e,t){try{let r=Un.join(e,t+Mf);return(await Bs.stat(r)).size}catch{throw new Error(hn.INVALID_ENVIRONMENT)}}a(h4,"environmentDataSize");function m4(e,t){if(Dp(e,t),t=t.toString(),t===Hs)throw new Error(hn.CANNOT_DROP_INTERNAL_DBIS_NAME);ds(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],ds(e,Hs).removeSync(t)}a(m4,"dropDBI");function p4(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{ds(e,i)}catch(o){if(o.message===hn.DBI_DOES_NOT_EXIST)YL(e,i,i!==t,i===t),n=!0;else throw o}}n&&s4()}a(p4,"initializeDBIs");WL.exports={openDBI:ds,openEnvironment:$L,createEnvironment:c4,listDBIs:KL,listDBIDefinitions:d4,createDBI:YL,dropDBI:m4,statDBI:_4,deleteEnvironment:u4,initializeDBIs:p4,TransactionCursor:mR,environmentDataSize:h4,copyEnvironment:l4,closeEnvironment:VL}});var jL=P((ARe,QL)=>{"use strict";var TR=ut(),E4=j(),zL=Pn().LMDB_ERRORS_ENUM;QL.exports=g4;async function g4(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 TR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==zL.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await TR.closeEnvironment(global.lmdb_map[n]),await TR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==zL.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){E4.error(t)}}a(g4,"cleanLMDBMap")});var no=P((yRe,S4)=>{S4.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 lM=P((ORe,cM)=>{"use strict";var AR=require("recursive-iterator"),T4=require("alasql"),RR=require("clone"),JL=ae(),{handleHDBError:XL,hdb_errors:A4}=me(),{HDB_ERROR_MSGS:ZL,HTTP_STATUS_CODES:eM}=A4,{getDatabases:R4}=(ve(),D(it)),y4=["DISTINCT_ARRAY"],tM=Symbol("validateTables"),yR=Symbol("validateTable"),bRe=Symbol("getAllColumns"),rM=Symbol("validateAllColumns"),Lp=Symbol("findColumn"),nM=Symbol("validateOrderBy"),vf=Symbol("validateSegment"),bR=Symbol("validateColumn"),sM=Symbol("setColumnsForTable"),iM=Symbol("checkColumnsForAsterisk"),oM=Symbol("validateGroupBy"),aM=Symbol("hasColumns"),OR=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[tM](),this[iM](),this[rM]()}[tM](){if(this[aM]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[yR](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[yR](t.table)})}}[aM](){let t=!1,r=new AR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[yR](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=R4();if(!r[t.databaseid])throw XL(new Error,ZL.SCHEMA_NOT_FOUND(t.databaseid),eM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw XL(new Error,ZL.TABLE_NOT_FOUND(t.databaseid,t.tableid),eM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=RR(s);i.table=RR(t),this.attributes.push(i)})}[Lp](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)}[iM](){let t=new AR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[sM](r.tableid)}[sM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new T4.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[rM](){this[vf](this.statement.columns,!1),this[vf](this.statement.joins,!1),this[vf](this.statement.where,!1),this[oM](this.statement.group,!1),this[vf](this.statement.order,!0)}[vf](t,r){if(!t)return;let n=new AR(t),s=[];for(let{node:i,path:o}of n)!JL.isEmpty(i)&&!JL.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[nM](i):s.push(this[bR](i)));return s}[oM](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&y4.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=RR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Lp](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[Lp](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`}[nM](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[bR](t)}[bR](t){let r=this[Lp](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]}};cM.exports=OR});var dM=P((wRe,uM)=>{"use strict";var NR=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")}};uM.exports=NR});var _M=P((CRe,fM)=>{"use strict";var wR=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};fM.exports=wR});var mM=P((DRe,hM)=>{"use strict";var IR=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}};hM.exports=IR});var EM=P((MRe,pM)=>{"use strict";var CR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};pM.exports=CR});var Ac=P((HRe,TM)=>{"use strict";var b4=ut(),O4=_M(),N4=mM(),w4=EM(),pi=an(),Uf=Pn().LMDB_ERRORS_ENUM,I4=Ut(),so=(k(),D($)),C4=ae(),P4=require("uuid"),URe=require("lmdb"),{handleHDBError:D4,hdb_errors:L4}=me(),{OVERFLOW_MARKER:xRe,MAX_SEARCH_KEY_LENGTH:BRe}=I4,gM=le();gM.initSync();var Mp=gM.get(so.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),PR=so.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Tc=so.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function M4(e,t,r,n,s=pi.getNextMonotonicTime()){vR(e,t,r,n),DR(e,t,r);let i=new O4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];SM(u,!0,s);let f=v4(e,t,r,u),d=u[t];o.push(f),c.push(d)}return LR(o,c,n,i,s)}a(M4,"insertRecords");function v4(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][so.FUNC_VAL],n[o]=c)}let l=pi.getIndexedValues(c),u=e.dbis[o];if(l){Mp&&u.prefetch(l.map(f=>({key:f,value:s})),vp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}Mp&&e.dbis[t].prefetch([s],vp),e.dbis[t].put(s,n,n[Tc])})}a(v4,"insertRecord");function U4(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(U4,"removeSkippedRecords");function SM(e,t,r){let n=r>0;(n||!Number.isInteger(e[Tc]))&&(e[Tc]=r||(r=pi.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[PR]))&&(e[PR]=r||pi.getNextMonotonicTime()):delete e[PR]}a(SM,"setTimestamps");function DR(e,t,r){r.indexOf(so.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(so.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(so.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(so.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),b4.initializeDBIs(e,t,r)}a(DR,"initializeTransaction");async function x4(e,t,r,n,s=pi.getNextMonotonicTime()){vR(e,t,r,n),DR(e,t,r);let i=new N4,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let f=n[u],d=f[t],_;try{_=MR(e,t,f,d,i,!0,s)}catch{i.skipped_hashes.push(d),o.push(u);continue}c.push(_),l.push(d)}return LR(c,l,n,i,s,o)}a(x4,"updateRecords");async function B4(e,t,r,n,s=pi.getNextMonotonicTime()){try{vR(e,t,r,n)}catch(l){throw D4(l,l.message,L4.HTTP_STATUS_CODES.BAD_REQUEST)}DR(e,t,r);let i=new w4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;C4.isEmpty(u[t])?(f=P4.v4(),u[t]=f):f=u[t];let d=MR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return LR(o,c,n,i,s)}a(B4,"upsertRecords");async function LR(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||pi.getNextMonotonicTime(),U4(r,i),n}a(LR,"finalizeWrite");function MR(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(SM(r,!f,o),Number.isInteger(r[Tc])&&u[Tc]>r[Tc])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][so.FUNC_VAL],r[m]=S)}if(S===R)continue;let E=pi.getIndexedValues(R);if(E){Mp&&g.prefetch(E.map(T=>({key:T,value:n})),vp);for(let T=0,w=E.length;T<w;T++)g.remove(E[T],n)}if(E=pi.getIndexedValues(S),E){Mp&&g.prefetch(E.map(T=>({key:T,value:n})),vp);for(let T=0,w=E.length;T<w;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[Tc])},"do_put");return l?d=c.ifVersion(n,l.version,_):d=c.ifNoExists(n,_),d.then(h=>h?!0:MR(e,t,r,n,s,i,o))}a(MR,"updateUpsertRecord");function H4(e,t,r){if(pi.validateEnv(e),t===void 0)throw new Error(Uf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Uf.WRITE_ATTRIBUTES_REQUIRED):new Error(Uf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(H4,"validateBasic");function vR(e,t,r,n){if(H4(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Uf.RECORDS_REQUIRED):new Error(Uf.RECORDS_MUST_BE_ARRAY)}a(vR,"validateWrite");function vp(){}a(vp,"noop");TM.exports={insertRecords:M4,updateRecords:x4,upsertRecords:B4}});var rt=P((FRe,AM)=>{"use strict";var mn=require("validate.js");mn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||mn.validators.type.checks[t](e)?null:` must be a '${t}' value`};mn.validators.type.checks={Object:a(function(e){return mn.isObject(e)&&!mn.isArray(e)},"Object"),Array:mn.isArray,Integer:mn.isInteger,Number:mn.isNumber,String:mn.isString,Date:mn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};mn.validators.hasValidFileExt=function(e,t){return mn.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};AM.exports={validateObject:k4,validateObjectAsync:F4,validateBySchema:G4};function k4(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=mn(e,t,{format:"flat"});return r?new Error(r):null}a(k4,"validateObject");async function F4(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await mn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(F4,"validateObjectAsync");function G4(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(G4,"validateBySchema")});var yM=P((qRe,RM)=>{"use strict";var q4=require("uuid"),UR=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||q4.v4(),this.schema_table=`${this.schema}.${this.table}`}};RM.exports=UR});var Up=P((VRe,bM)=>{"use strict";var $4=yM(),xR=class extends $4{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}};bM.exports=xR});var NM=P((YRe,OM)=>{"use strict";OM.exports=K4;var V4="inserted";function K4(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===V4?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(K4,"returnObject")});var xp=P((QRe,IM)=>{"use strict";var Y4=(k(),D($)),BR=ut(),W4=Ac(),{getSystemSchemaPath:z4,getSchemaPath:Q4}=pt(),zRe=no(),{validateBySchema:j4}=rt(),xf=require("joi"),J4=Up(),X4=NM(),{handleHDBError:Z4,hdb_errors:e3,ClientError:t3}=me(),wM=ae(),{HTTP_STATUS_CODES:r3}=e3,n3="inserted";IM.exports=s3;async function s3(e){let t=j4(e,xf.object({database:xf.string(),schema:xf.string(),table:xf.string().required(),attribute:xf.string().required()}));if(t)throw new t3(t.message);let r=!e.skip_table_check&&wM.checkGlobalSchemaTable(e.schema,e.table);if(r)throw Z4(new Error,r,r3.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=wM.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 J4(e.schema,e.table,e.attribute,e.id);try{let i=await BR.openEnvironment(Q4(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}`);BR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await BR.openEnvironment(z4(),Y4.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await W4.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return X4(n3,c,{records:[s]},l)}catch(i){throw i}}a(s3,"lmdbCreateAttribute")});var gi=P((JRe,DM)=>{"use strict";var PM=ae(),CM=(k(),D($)),tu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Ei=require("joi"),sa={schema_format:{pattern:tu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},i3=Ei.alternatives(Ei.string().min(1).max(sa.schema_length.maximum).pattern(tu).messages({"string.pattern.base":"{:#label} "+sa.schema_format.message}),Ei.number(),Ei.array()).required(),o3=Ei.alternatives(Ei.string().min(1).max(sa.schema_length.maximum).pattern(tu).messages({"string.pattern.base":"{:#label} "+sa.schema_format.message}),Ei.number()),a3=Ei.alternatives(Ei.string().min(1).max(sa.schema_length.maximum).pattern(tu).messages({"string.pattern.base":"{:#label} "+sa.schema_format.message}),Ei.number()).required();function c3(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>sa.schema_length.maximum?`'${e}' maximum of 250 characters`:tu.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(c3,"checkValidTable");function l3(e,t){return PM.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(l3,"validateSchemaExists");function u3(e,t){let r=t.state.ancestors[0].schema;return PM.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(u3,"validateTableExists");function d3(e,t){return e.toLowerCase()===CM.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${CM.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(d3,"validateSchemaName");DM.exports={common_validators:sa,schema_regex:tu,hdb_schema_table:i3,validateSchemaExists:l3,validateTableExists:u3,validateSchemaName:d3,checkValidTable:c3,hdb_database:o3,hdb_table:a3}});var kR=P((ZRe,MM)=>{var{hdb_table:f3,hdb_database:LM}=gi(),_3=rt(),HR=require("joi"),h3={undefined:"undefined",null:"null"},m3=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||h3[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"),p3=HR.object({database:LM,schema:LM,table:f3,records:HR.array().items(HR.object().custom(m3)).required()});MM.exports=function(e){return _3.validateBySchema(e,p3)}});var Bf=P((rye,UM)=>{"use strict";var io=ae(),vM=j(),tye=kR(),{getDatabases:E3}=(ve(),D(it)),{ClientError:Rc}=me();UM.exports=g3;function g3(e){if(io.isEmpty(e))throw new Rc("invalid update parameters defined.");if(io.isEmptyOrZeroLength(e.schema))throw new Rc("invalid schema specified.");if(io.isEmptyOrZeroLength(e.table))throw new Rc("invalid table specified.");if(!Array.isArray(e.records))throw new Rc("records must be an array");let t=E3()[e.schema]?.[e.table];if(io.isEmpty(t))throw new Rc(`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&&io.isEmptyOrZeroLength(o[r]))throw vM.error("a valid hash attribute must be provided with update record:",o),new Rc("a valid hash attribute must be provided with update record, check log for more info");if(!io.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw vM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Rc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!io.isEmpty(o[r])&&o[r]!==""&&n.has(io.autoCast(o[r]))&&(o.skip=!0),n.add(io.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(g3,"insertUpdateValidate")});var Bp=P((sye,BM)=>{"use strict";var xM=ae(),S3=(k(),D($)),T3=j(),A3=xp(),R3=Up(),y3=oo(),{SchemaEventMsg:b3}=ks(),O3="already exists in";BM.exports=N3;async function N3(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(N3,"lmdbCheckForNewAttributes");async function w3(e,t,r,n){let s=new R3(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await I3(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(O3))T3.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a(w3,"createNewAttribute");async function I3(e){let t;return t=await A3(e),y3.signalSchemaChange(new b3(process.pid,S3.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(I3,"createAttribute")});var ru=P((oye,HM)=>{"use strict";var FR=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}};HM.exports=FR});var FM=P((cye,kM)=>{"use strict";var C3=ru(),P3=(k(),D($)).OPERATIONS_ENUM,GR=class extends C3{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(P3.INSERT,r,n,s,i),this.records=t}};kM.exports=GR});var qM=P((uye,GM)=>{"use strict";var D3=ru(),L3=(k(),D($)).OPERATIONS_ENUM,qR=class extends D3{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(L3.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};GM.exports=qR});var VM=P((fye,$M)=>{"use strict";var M3=ru(),v3=(k(),D($)).OPERATIONS_ENUM,$R=class extends M3{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(v3.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};$M.exports=$R});var YM=P((hye,KM)=>{"use strict";var U3=ru(),x3=(k(),D($)).OPERATIONS_ENUM,VR=class extends U3{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(x3.DELETE,n,s,t,i),this.original_records=r}};KM.exports=VR});var Hf=P((Eye,jM)=>{"use strict";var pye=require("path"),WM=ut(),B3=FM(),H3=qM(),k3=VM(),F3=YM(),nu=Ut(),zM=ae(),{CONFIG_PARAMS:G3}=(k(),D($)),QM=le();QM.initSync();var Hp=(k(),D($)).OPERATIONS_ENUM,{getTransactionAuditStorePath:q3}=pt();jM.exports=$3;async function $3(e,t){if(QM.get(G3.LOGGING_AUDITLOG)===!1)return;let r=q3(e.schema,e.table),n=await WM.openEnvironment(r,e.table,!0),s=V3(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){WM.initializeDBIs(n,nu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,nu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[nu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[nu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),zM.isEmpty(s.user_name)||n.dbis[nu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[nu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a($3,"writeTransaction");function V3(e,t){let r=zM.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===Hp.INSERT)return new B3(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Hp.UPDATE)return new H3(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Hp.UPSERT)return new k3(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Hp.DELETE)return new F3(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(V3,"createTransactionObject")});var KR=P((Tye,JM)=>{"use strict";var K3=Bf(),Sye=nf(),kf=(k(),D($)),Y3=sf(),W3=Ac().insertRecords,z3=ut(),Q3=j(),j3=Bp(),{getSchemaPath:J3}=pt(),X3=Hf();JM.exports=Z3;async function Z3(e){try{let{schema_table:t,attributes:r}=K3(e);Y3(e,r,t.hash_attribute),e.schema!==kf.SYSTEM_SCHEMA_NAME&&(r.includes(kf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(kf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(kf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(kf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await j3(e.hdb_auth_header,t,r),s=J3(e.schema,e.table),i=await z3.openEnvironment(s,e.table),o=await W3(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await X3(e,o)}catch(c){Q3.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(Z3,"lmdbCreateRecords")});var ev=P((Rye,ZM)=>{"use strict";var XM=(k(),D($)),eX=KR(),tX=nf(),rX=require("fs-extra"),{getSchemaPath:nX}=pt();ZM.exports=sX;async function sX(e){let t=[{name:e.schema,createddate:Date.now()}],r=new tX(XM.SYSTEM_SCHEMA_NAME,XM.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await eX(r),await rX.mkdirp(nX(e.schema))}a(sX,"lmdbCreateSchema")});var rv=P((bye,tv)=>{"use strict";var YR=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}};tv.exports=YR});var ov=P((Cye,iv)=>{"use strict";var nv=ut(),WR=an(),zR=Pn().LMDB_ERRORS_ENUM,iX=Ut(),sv=j(),Nye=ae(),oX=require("lmdb"),aX=rv(),cX=(k(),D($)),{OVERFLOW_MARKER:wye,MAX_SEARCH_KEY_LENGTH:Iye}=iX,lX=cX.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function uX(e,t,r,n){if(WR.validateEnv(e),t===void 0)throw new Error(zR.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(zR.IDS_REQUIRED):new Error(zR.IDS_MUST_BE_ITERABLE);try{let s=nv.listDBIs(e);nv.initializeDBIs(e,t,s);let i=new aX,o,c=[],l=[];for(let _=0,h=r.length;_<h;_++)try{o=r[_];let m=e.dbis[t].get(o);if(!m||n&&m[lX]>n){i.skipped.push(o);continue}let S=e.dbis[t].ifVersion(o,oX.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 w=WR.getIndexedValues(T);if(w)for(let v=0,H=w.length;v<H;v++)E.remove(w[v],o)}catch{sv.warn(`cannot delete from attribute: ${R}, ${T}:${o}`)}}});c.push(S),l.push(o),i.original_records.push(m)}catch(m){sv.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=WR.getNextMonotonicTime(),i}catch(s){throw s}}a(uX,"deleteRecords");iv.exports={deleteRecords:uX}});var Ff=P((Dye,cv)=>{"use strict";var su=ae(),dX=ov(),fX=ut(),{getSchemaPath:_X}=pt(),hX=Hf(),mX=j();cv.exports=pX;async function pX(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(su.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(su.isEmptyOrZeroLength(e.hash_values)&&!su.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];su.isEmpty(l)||e.hash_values.push(l)}}if(su.isEmptyOrZeroLength(e.hash_values))return av([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(su.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=_X(e.schema,e.table),i=await fX.openEnvironment(s,e.table),o=await dX.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await hX(e,o)}catch(c){mX.error(`unable to write transaction due to ${c.message}`)}return av(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(pX,"lmdbDeleteRecords");function av(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(av,"createDeleteResponse")});var jR=P((vye,lv)=>{"use strict";var EX=(k(),D($)),Mye=an();function QR(e,t){let r=Object.create(null);if(t.length===1&&EX.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(QR,"parseRow");function gX(e,t,r,n){let s=QR(r,e);n.push(s)}a(gX,"searchAll");function SX(e,t,r,n){let s=QR(r,e);n[t]=s}a(SX,"searchAllToMap");function TX(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(TX,"iterateDBI");function yc(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(yc,"pushResults");function AX(e,t,r,n,s,i){t.toString().endsWith(e)&&yc(t,r,n,s,i)}a(AX,"endsWith");function RX(e,t,r,n,s,i){t.toString().includes(e)&&yc(t,r,n,s,i)}a(RX,"contains");function yX(e,t,r,n,s,i){t>e&&yc(t,r,n,s,i)}a(yX,"greaterThanCompare");function bX(e,t,r,n,s,i){t>=e&&yc(t,r,n,s,i)}a(bX,"greaterThanEqualCompare");function OX(e,t,r,n,s,i){t<e&&yc(t,r,n,s,i)}a(OX,"lessThanCompare");function NX(e,t,r,n,s,i){t<=e&&yc(t,r,n,s,i)}a(NX,"lessThanEqualCompare");lv.exports={parseRow:QR,searchAll:gX,searchAllToMap:SX,iterateDBI:TX,endsWith:AX,contains:RX,greaterThanCompare:yX,greaterThanEqualCompare:bX,lessThanCompare:OX,lessThanEqualCompare:NX,pushResults:yc}});var iu=P((kye,pv)=>{"use strict";var ia=ut(),xye=j(),xn=an(),kp=Ut(),$t=Pn().LMDB_ERRORS_ENUM,Bye=ae(),wX=(k(),D($)),Fp=jR(),{parseRow:IX}=Fp,Hye=require("lmdb"),{OVERFLOW_MARKER:uv,MAX_SEARCH_KEY_LENGTH:CX}=kp;function dv(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(dv,"iterateFullIndex");function Gf(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(Gf,"iterateRangeBetween");function bc(e,t,r,n){let s=e.database||e,i=ia.openDBI(s,r);i[kp.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&ia.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 fv(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(uv)){if(!s)if(r)s=ia.openDBI(e,r);else{let l=ia.listDBIs(e);for(let u=0,f=l.length;u<f&&(s=ia.openDBI(e,l[u]),!s[kp.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(fv,"getOverflowCheck");function PX(e,t,r,n=!1,s=void 0,i=void 0){if(xn.validateEnv(e),t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);return bc(e,t,t,(o,c,l)=>(Gp(r),r=qf(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>IX(u.value,r))))}a(PX,"searchAll");function DX(e,t,r,n=!1,s=void 0,i=void 0){if(xn.validateEnv(e),t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);Gp(r),r=qf(e.database||e,r);let o=new Map;for(let{key:c,value:l}of dv(e,t,t,n,s,i))o.set(c,Fp.parseRow(l,r));return o}a(DX,"searchAllToMap");function LX(e,t,r=!1,n=void 0,s=void 0){if(xn.validateEnv(e),t===void 0)throw new Error($t.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=dv(e,void 0,t,r,n,s),c=o.transaction,l=fv(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(LX,"iterateDBI");function MX(e,t){if(xn.validateEnv(e),t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);return ia.statDBI(e,t).entryCount}a(MX,"countAll");function vX(e,t,r,n,s=!1,i=void 0,o=void 0){return oa(e,r,n),bc(e,t,r,(c,l,u,f)=>(n=xn.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(vX,"equals");function UX(e,t,r){return oa(e,t,r),ia.openDBI(e,t).getValuesCount(r)}a(UX,"count");function xX(e,t,r,n,s=!1,i=void 0,o=void 0){return oa(e,r,n),bc(e,null,r,(c,l)=>{n=xn.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(xX,"startsWith");function BX(e,t,r,n,s=!1,i=void 0,o=void 0){return _v(e,t,r,n,s,i,o,!0)}a(BX,"endsWith");function _v(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return oa(e,r,n),bc(e,null,r,(l,u,f,d)=>{let _=fv(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(uv)?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[kp.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(_v,"contains");function HX(e,t,r,n,s=!1,i=void 0,o=void 0){oa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Gf(e,t,r,n,l,s,i,o,!0,!1)}a(HX,"greaterThan");function kX(e,t,r,n,s=!1,i=void 0,o=void 0){oa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Gf(e,t,r,n,l,s,i,o,!1,!1)}a(kX,"greaterThanEqual");function FX(e,t,r,n,s=!1,i=void 0,o=void 0){oa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Gf(e,t,r,l,n,s,i,o,!1,!0)}a(FX,"lessThan");function GX(e,t,r,n,s=!1,i=void 0,o=void 0){oa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Gf(e,t,r,l,n,s,i,o,!1,!1)}a(GX,"lessThanEqual");function qX(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(xn.validateEnv(e),r===void 0)throw new Error($t.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error($t.START_VALUE_REQUIRED);if(s===void 0)throw new Error($t.END_VALUE_REQUIRED);if(n=xn.convertKeyValueToWrite(n),s=xn.convertKeyValueToWrite(s),n>s)throw new Error($t.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return Gf(e,t,r,n,s,i,o,c)}a(qX,"between");function $X(e,t,r,n){xn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);if(Gp(r),r=qf(s,r),n===void 0)throw new Error($t.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=Fp.parseRow(c,r)),o}a($X,"searchByHash");function VX(e,t,r){xn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error($t.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(VX,"checkHashExists");function KX(e,t,r,n,s=[]){return mv(e,t,r,n,s),hv(e,t,r,n,s).map(i=>i[1])}a(KX,"batchSearchByHash");function YX(e,t,r,n,s=[]){mv(e,t,r,n,s);let i=new Map;for(let[o,c]of hv(e,t,r,n,s))i.set(o,c);return i}a(YX,"batchSearchByHashToMap");function hv(e,t,r,n,s=[]){return bc(e,t,t,(i,o,c)=>{r=qf(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,Fp.parseRow(f,r)];s.push(u)}).filter(u=>u)})}a(hv,"batchHashSearch");function mv(e,t,r,n,s){if(xn.validateEnv(e),t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);if(Gp(r),n==null)throw new Error($t.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error($t.IDS_MUST_BE_ITERABLE)}a(mv,"initializeBatchSearchByHash");function Gp(e){if(!Array.isArray(e))throw e===void 0?new Error($t.FETCH_ATTRIBUTES_REQUIRED):new Error($t.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Gp,"validateFetchAttributes");function oa(e,t,r){if(xn.validateEnv(e),t===void 0)throw new Error($t.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error($t.SEARCH_VALUE_REQUIRED);if(r?.length>CX)throw new Error($t.SEARCH_VALUE_TOO_LARGE)}a(oa,"validateComparisonFunctions");function qf(e,t){return t.length===1&&wX.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=ia.listDBIs(e)),t}a(qf,"setGetWholeRowAttributes");pv.exports={searchAll:PX,searchAllToMap:DX,count:UX,countAll:MX,equals:vX,startsWith:xX,endsWith:BX,contains:_v,searchByHash:$X,setGetWholeRowAttributes:qf,batchSearchByHash:KX,batchSearchByHashToMap:YX,checkHashExists:VX,iterateDBI:LX,greaterThan:HX,greaterThanEqual:kX,lessThan:FX,lessThanEqual:GX,between:qX}});var ou=P((Gye,Av)=>{var Ev=require("lodash"),gv=rt(),He=require("joi"),WX=ae(),{hdb_schema_table:$f,checkValidTable:Sv,hdb_table:Tv,hdb_database:qp}=gi(),{handleHDBError:zX,hdb_errors:QX}=me(),{getDatabases:jX}=(ve(),D(it)),{HTTP_STATUS_CODES:JX}=QX,XX=He.object({database:qp,schema:qp,table:Tv,search_attribute:$f,search_value:He.any().required(),get_attributes:He.array().min(1).items(He.alternatives($f,He.object())).optional(),desc:He.bool(),limit:He.number().integer().min(1),offset:He.number().integer().min(0)}),ZX=He.object({database:qp,schema:qp,table:Tv,operator:He.string().valid("and","or").default("and").lowercase(),offset:He.number().integer().min(0),limit:He.number().integer().min(1),get_attributes:He.array().min(1).items(He.alternatives($f,He.object())).optional(),sort:He.object({attribute:He.alternatives($f,He.array().min(1)),descending:He.bool().optional()}).optional(),conditions:He.array().min(1).items(He.alternatives(He.object({operator:He.string().valid("and","or").default("and").lowercase(),conditions:He.array()}),He.object({search_attribute:He.alternatives($f,He.array().min(1)),search_type:He.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:He.when("search_type",{switch:[{is:"equals",then:He.any()},{is:"between",then:He.array().items(He.alternatives([He.string(),He.number()])).length(2)}],otherwise:He.alternatives(He.string(),He.number())}).required()}))).required()});Av.exports=function(e,t){let r=null;switch(t){case"value":r=gv.validateBySchema(e,XX);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(Sv("database",e.schema)),i(Sv("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=gv.validateBySchema(e,ZX);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=WX.checkGlobalSchemaTable(e.schema,e.table);if(s)return zX(new Error,s,JX.NOT_FOUND);let o=jX()[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=Ev.filter(c,f=>f!=="*"&&!f.startsWith?.("$")&&f.attribute!=="*"&&!Array.isArray(f)&&!f.name&&!Ev.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 JR=P(($ye,Rv)=>{"use strict";var e6=ut(),t6=ou(),{getSchemaPath:r6}=pt();Rv.exports=n6;function n6(e){let t=t6(e,"hashes");if(t)throw t;let r=r6(e.schema,e.table);return e6.openEnvironment(r,e.table)}a(n6,"initialize")});var XR=P((Kye,yv)=>{"use strict";var s6=iu(),i6=JR();yv.exports=o6;async function o6(e){let t=await i6(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return s6.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(o6,"lmdbGetDataByHash")});var au=P((Wye,bv)=>{"use strict";var ZR=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};bv.exports=ZR});var Nv=P((jye,Ov)=>{"use strict";var Qye=au(),a6=iu(),c6=JR();Ov.exports=l6;async function l6(e){let t=await c6(e),r=global.hdb_schema[e.schema][e.table];return a6.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(l6,"lmdbSearchByHash")});var Fs=P((Xye,wv)=>{"use strict";var ey=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}};wv.exports=ey});var $p=P((ebe,Mv)=>{"use strict";var Vr=iu(),u6=ut(),d6=ae(),ke=Ut(),Oc=(k(),D($)),f6=no(),Iv=Pn().LMDB_ERRORS_ENUM,{getSchemaPath:_6}=pt(),ao=Oc.SEARCH_WILDCARDS;async function h6(e,t,r){let n;e.schema===Oc.SYSTEM_SCHEMA_NAME?n=f6[e.table]:n=global.hdb_schema[e.schema][e.table];let s=Lv(e,n.hash_attribute,r,t);return Pv(e,s,n.hash_attribute,r)}a(h6,"prepSearch");async function Pv(e,t,r,n){let s=_6(e.schema,e.table),i=await u6.openEnvironment(s,e.table),o=Dv(i,e,t,r),c=o.transaction||i;if([ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,ke.SEARCH_TYPES.SEARCH_ALL,ke.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(m6(e,r)===!1){let f=e.search_attribute;if(f===r)return n?Cv(o,()=>!0):o.map(_=>({[r]:_.key}));let d=a(_=>({[r]:_.value,[f]:_.key}),"toObject");return n?Cv(o,d):o.map(d)}let u=e.search_attribute===r?o.map(f=>f.key):o.map(f=>f.value);return n===!0?Vr.batchSearchByHashToMap(c,r,e.get_attributes,u):Vr.batchSearchByHash(c,r,e.get_attributes,u)}a(Pv,"executeSearch");function Dv(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 ke.SEARCH_TYPES.EQUALS:s=Vr.equals(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.CONTAINS:s=Vr.contains(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.ENDS_WITH:case ke.SEARCH_TYPES._ENDS_WITH:s=Vr.endsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.STARTS_WITH:case ke.SEARCH_TYPES._STARTS_WITH:s=Vr.startsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return Vr.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return Vr.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case ke.SEARCH_TYPES.SEARCH_ALL:return Vr.searchAll(e,n,t.get_attributes,o,c,l);case ke.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return Vr.searchAllToMap(e,n,t.get_attributes,o,c,l);case ke.SEARCH_TYPES.BETWEEN:s=Vr.between(e,i,t.search_attribute,t.search_value,t.end_value,o,c,l);break;case ke.SEARCH_TYPES.GREATER_THAN:case ke.SEARCH_TYPES._GREATER_THAN:s=Vr.greaterThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.GREATER_THAN_EQUAL:case ke.SEARCH_TYPES._GREATER_THAN_EQUAL:s=Vr.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.LESS_THAN:case ke.SEARCH_TYPES._LESS_THAN:s=Vr.lessThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.LESS_THAN_EQUAL:case ke.SEARCH_TYPES._LESS_THAN_EQUAL:s=Vr.lessThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;default:return Object.create(null)}return s}a(Dv,"searchByType");function Cv(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(Cv,"createMapFromIterable");function m6(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(m6,"checkToFetchMore");function Lv(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),ao.indexOf(s)>-1)return r===!0?ke.SEARCH_TYPES.SEARCH_ALL_TO_MAP:ke.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(ao[0])<0&&s.indexOf(ao[1])<0)return c===!0?r===!0?ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:ke.SEARCH_TYPES.EQUALS;if(ao.indexOf(i)>=0&&ao.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),ke.SEARCH_TYPES.CONTAINS;if(ao.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),ke.SEARCH_TYPES.ENDS_WITH;if(ao.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),ke.SEARCH_TYPES.STARTS_WITH;if(s.includes(ao[0])||s.includes(ao[1]))return ke.SEARCH_TYPES.EQUALS;throw new Error(Iv.UNKNOWN_SEARCH_TYPE)}else switch(n){case Oc.VALUE_SEARCH_COMPARATORS.BETWEEN:return ke.SEARCH_TYPES.BETWEEN;case Oc.VALUE_SEARCH_COMPARATORS.GREATER:return ke.SEARCH_TYPES.GREATER_THAN;case Oc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return ke.SEARCH_TYPES.GREATER_THAN_EQUAL;case Oc.VALUE_SEARCH_COMPARATORS.LESS:return ke.SEARCH_TYPES.LESS_THAN;case Oc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return ke.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(Iv.UNKNOWN_SEARCH_TYPE)}}a(Lv,"createSearchTypeFromSearchObject");Mv.exports={executeSearch:Pv,createSearchTypeFromSearchObject:Lv,prepSearch:h6,searchByType:Dv}});var Uv=P((nbe,vv)=>{"use strict";var rbe=Fs(),p6=ou(),E6=ae(),g6=(k(),D($)),S6=$p();vv.exports=T6;function T6(e,t){if(!E6.isEmpty(t)&&g6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=p6(e,"value");if(n)throw n;return S6.prepSearch(e,t,!0)}a(T6,"lmdbGetDataByValue")});var Vf=P((obe,xv)=>{"use strict";var ibe=Fs(),A6=ou(),R6=ae(),y6=(k(),D($)),b6=$p();xv.exports=O6;async function O6(e,t){if(!R6.isEmpty(t)&&y6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=A6(e,"value");if(n)throw n;return b6.prepSearch(e,t,!1)}a(O6,"lmdbSearchByValue")});var Hv=P((lbe,Bv)=>{"use strict";var cbe=Ut(),ty=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}},ry=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},ny=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};Bv.exports={SearchByConditionsObject:ty,SearchCondition:ry,SortAttribute:ny}});var $v=P((_be,qv)=>{"use strict";var dbe=Hv().SearchByConditionsObject,N6=Fs(),w6=ou(),sy=iu(),Vp=Ut(),{Resource:fbe}=(Xo(),D(wA)),Gv=$p(),I6=jR(),C6=require("lodash"),{getSchemaPath:P6}=pt(),kv=ut(),{handleHDBError:D6,hdb_errors:L6}=me(),{HTTP_STATUS_CODES:M6}=L6,v6=1e8;qv.exports=U6;async function U6(e){let t=w6(e,"conditions");if(t)throw D6(t,t.message,M6.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=P6(e.schema,e.table),n=await kv.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)kv.openDBI(n,u.search_attribute);let i=C6.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let f=u.search_type;f===Vp.SEARCH_TYPES.EQUALS?u.estimated_count=sy.count(n,u.search_attribute,u.search_value):f===Vp.SEARCH_TYPES.CONTAINS||f===Vp.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=v6}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await Fv(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(Gv.filterByType),d=f.length,_=sy.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=>I6.parseRow(h,_))}else{for(let d=1;d<i.length;d++){let _=i[d],h=await Fv(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=sy.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(U6,"lmdbSearchByConditions");async function Fv(e,t,r,n){let s=new N6(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===Vp.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,Gv.searchByType(e,s,i,n).map(o=>o.value)}a(Fv,"executeConditionSearch")});var Kf=P((mbe,Vv)=>{"use strict";var x6=(k(),D($)).OPERATIONS_ENUM,iy=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=x6.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};Vv.exports=iy});var oy=P((Ebe,Xv)=>{"use strict";var zv=Fs(),Qv=Kf(),jv=Vf(),Jv=Ff(),pn=(k(),D($)),Kv=ae(),Yv=ut(),{getTransactionAuditStorePath:B6,getSchemaPath:H6}=pt(),Wv=j();Xv.exports=k6;async function k6(e){try{if(Kv.isEmpty(global.hdb_schema[e.schema])||Kv.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await F6(e),await G6(e);let t=H6(e.schema,e.table);try{await Yv.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")Wv.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=B6(e.schema,e.table);await Yv.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")Wv.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(k6,"lmdbDropTable");async function F6(e){let t=new zv(pn.SYSTEM_SCHEMA_NAME,pn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await jv(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 Qv(pn.SYSTEM_SCHEMA_NAME,pn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await Jv(s)}a(F6,"deleteAttributesFromSystem");async function G6(e){let t=new zv(pn.SYSTEM_SCHEMA_NAME,pn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await jv(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 Qv(pn.SYSTEM_SCHEMA_NAME,pn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await Jv(s)}catch(i){throw i}}a(G6,"dropTableFromSystem")});var eU=P((Sbe,Zv)=>{"use strict";var q6=require("fs-extra"),$6=Fs(),V6=au(),K6=Kf(),Y6=oy(),W6=Ff(),z6=XR(),Q6=Vf(),co=(k(),D($)),{getSchemaPath:j6}=pt(),{handleHDBError:J6,hdb_errors:X6}=me(),{HDB_ERROR_MSGS:Z6,HTTP_STATUS_CODES:eZ}=X6;Zv.exports=tZ;async function tZ(e){let t;try{t=await rZ(e.schema);let r=new $6(co.SYSTEM_SCHEMA_NAME,co.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,co.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[co.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await Q6(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await Y6(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new K6(co.SYSTEM_SCHEMA_NAME,co.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await W6(s);let i=j6(t);await q6.remove(i)}catch(r){throw r}}a(tZ,"lmdbDropSchema");async function rZ(e){let t=new V6(co.SYSTEM_SCHEMA_NAME,co.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[co.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await z6(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw J6(new Error,Z6.SCHEMA_NOT_FOUND(e),eZ.NOT_FOUND,void 0,void 0,!0);return n}a(rZ,"validateDropSchema")});var Yf=P((Abe,tU)=>{"use strict";var ay=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};tU.exports=ay});var ly=P((bbe,rU)=>{"use strict";var nZ=require("fs-extra"),Kp=ut(),{getTransactionAuditStorePath:sZ}=pt(),cy=Ut(),ybe=Yf();rU.exports=iZ;async function iZ(e){let t;try{let r=sZ(e.schema,e.table);await nZ.mkdirp(r),t=await Kp.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{Kp.createDBI(t,cy.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),Kp.createDBI(t,cy.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),Kp.createDBI(t,cy.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(iZ,"createTransactionsAuditEnvironment")});var iU=P((wbe,sU)=>{"use strict";var uy=(k(),D($)),nU=ut(),oZ=Ac(),{getSystemSchemaPath:aZ,getSchemaPath:cZ}=pt(),Nbe=no(),lZ=xp(),dy=Up(),uZ=j(),dZ=ly();sU.exports=fZ;async function fZ(e,t){let r=cZ(t.schema,t.table),n=new dy(t.schema,t.table,uy.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new dy(t.schema,t.table,uy.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new dy(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await nU.createEnvironment(r,t.table),e!==void 0){let o=await nU.openEnvironment(aZ(),uy.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await oZ.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 fy(n),await fy(s),await fy(i)}await dZ(t)}catch(o){throw o}}a(fZ,"lmdbCreateTable");async function fy(e){try{await lZ(e)}catch(t){uZ.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(fy,"createAttribute")});var aU=P((Cbe,oU)=>{"use strict";var _Z=Bf(),hZ=sf(),mZ=Bp(),Wf=(k(),D($)),pZ=Ac().updateRecords,EZ=ut(),{getSchemaPath:gZ}=pt(),SZ=Hf(),TZ=j();oU.exports=AZ;async function AZ(e){try{let{schema_table:t,attributes:r}=_Z(e);hZ(e,r,t.hash_attribute),e.schema!==Wf.SYSTEM_SCHEMA_NAME&&(r.includes(Wf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Wf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Wf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Wf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await mZ(e.hdb_auth_header,t,r),s=gZ(e.schema,e.table),i=await EZ.openEnvironment(s,e.table),o=await pZ(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await SZ(e,o)}catch(c){TZ.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(AZ,"lmdbUpdateRecords")});var lU=P((Dbe,cU)=>{"use strict";var RZ=(k(),D($)).OPERATIONS_ENUM,_y=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=RZ.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};cU.exports=_y});var dU=P((vbe,uU)=>{"use strict";var Mbe=lU(),yZ=Bf(),bZ=sf(),OZ=Bp(),zf=(k(),D($)),NZ=Ac().upsertRecords,wZ=ut(),{getSchemaPath:IZ}=pt(),CZ=Hf(),PZ=j(),{handleHDBError:DZ,hdb_errors:LZ}=me();uU.exports=MZ;async function MZ(e){let t;try{t=yZ(e)}catch(l){throw DZ(l,l.message,LZ.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:n}=t;bZ(e,n,r.hash_attribute),e.schema!==zf.SYSTEM_SCHEMA_NAME&&(n.includes(zf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(zf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(zf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(zf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await OZ(e.hdb_auth_header,r,n),i=IZ(e.schema,e.table),o=await wZ.openEnvironment(i,e.table),c=await NZ(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await CZ(e,c)}catch(l){PZ.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(MZ,"lmdbUpsertRecords")});var _U=P((xbe,fU)=>{"use strict";var hy=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};fU.exports=hy});var mU=P((Hbe,hU)=>{"use strict";var my=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}};hU.exports=my});var gU=P((Gbe,EU)=>{"use strict";var py=ut(),{getTransactionAuditStorePath:vZ}=pt(),Fbe=_U(),Qf=Ut(),UZ=ae(),pU=mU(),xZ=require("util").promisify,BZ=xZ(setTimeout),HZ=1e4,kZ=100;EU.exports=FZ;async function FZ(e){let t=vZ(e.schema,e.table),r=await py.openEnvironment(t,e.table,!0),n=py.listDBIs(r);py.initializeDBIs(r,Qf.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new pU;do s=await GZ(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 BZ(kZ);while(s.transactions_deleted>0);return i}a(FZ,"deleteAuditLogsBefore");async function GZ(e,t){let r=new pU;try{let n=e.dbis[Qf.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[Qf.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];UZ.isEmpty(c)||(s=e.dbis[Qf.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[Qf.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>HZ)break}return await s,r}catch(n){throw n}}a(GZ,"deleteTransactions")});var TU=P(($be,SU)=>{"use strict";var Ey=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};SU.exports=Ey});var RU=P((Ybe,AU)=>{"use strict";var qZ=Fs(),$Z=Kf(),Kbe=TU(),Si=(k(),D($)),VZ=ae(),gy=ut(),KZ=no(),YZ=Vf(),WZ=Ff(),{getSchemaPath:zZ}=pt();AU.exports=QZ;async function QZ(e,t=!0){let r;e.schema===Si.SYSTEM_SCHEMA_NAME?r=KZ[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await JZ(e),s=zZ(e.schema,e.table),i=await gy.openEnvironment(s,e.table);return t===!0&&await jZ(e,i,r.hash_attribute),gy.dropDBI(i,e.attribute),n}a(QZ,"lmdbDropAttribute");async function jZ(e,t,r){let n=gy.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(jZ,"removeAttributeFromAllObjects");async function JZ(e){let t=new qZ(Si.SYSTEM_SCHEMA_NAME,Si.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await YZ(t)).filter(o=>o[Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(VZ.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new $Z(Si.SYSTEM_SCHEMA_NAME,Si.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return WZ(i)}a(JZ,"dropAttributeFromSystem")});var IU=P((Qbe,wU)=>{"use strict";var Sy=ut(),cu=Ut(),zbe=an(),Ty=(k(),D($)),yU=ae(),{getTransactionAuditStorePath:XZ}=pt(),ZZ=iu(),Yp=ru(),e8=j();wU.exports=t8;async function t8(e){let t=XZ(e.schema,e.table),r=await Sy.openEnvironment(t,e.table,!0),n=Sy.listDBIs(r);Sy.initializeDBIs(r,cu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Ty.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return bU(r,e.search_values);case Ty.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,n8(r,e.search_values,s);case Ty.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return r8(r,e.search_values);default:return bU(r)}}a(t8,"readAuditLog");function bU(e,t=[0,Date.now()]){yU.isEmpty(t[0])&&(t[0]=0),yU.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[cu.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 Yp,s))}a(bU,"searchTransactionsByTimestamp");function r8(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[cu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,NU(e,i))}return Object.fromEntries(r)}a(r8,"searchTransactionsByUsername");function n8(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],f=ZZ.equals(e,cu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,cu.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=NU(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,f=n.get(u);OU(l,"records",r,f,o),OU(l,"original_records",r,f,o)}return Object.fromEntries(o)}a(n8,"searchTransactionsByHashValues");function OU(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 Yp(e.operation,e.user_name,i,void 0);d[t]=[c],u.push(d)}}else{let u=new Yp(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(OU,"loopRecords");function NU(e,t){let r=[];try{let n=e.dbis[cu.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 Yp,i);r.push(o)}}catch(i){e8.warn(i)}return r}catch(n){throw n}}a(NU,"batchSearchTransactions")});var PU=P((Zbe,CU)=>{"use strict";var{getSchemaPath:Jbe}=pt(),Xbe=ut(),{database:s8}=(ve(),D(it));CU.exports={writeTransaction:i8};async function i8(e,t,r){return s8({database:e,table:t}).transaction(r)}a(i8,"writeTransaction")});var vU=P((tOe,MU)=>{"use strict";var{getSchemaPath:DU}=pt(),LU=ut();MU.exports={flush:o8,resetReadTxn:a8};async function o8(e,t){return(await LU.openEnvironment(DU(e,t),t.toString())).flushed}a(o8,"flush");async function a8(e,t){try{(await LU.openEnvironment(DU(e,t),t.toString())).resetReadTxn()}catch{}}a(a8,"resetReadTxn")});var HU=P((nOe,BU)=>{"use strict";var{Readable:c8}=require("stream"),{getDatabases:l8}=(ve(),D(it)),{readSync:u8,openSync:d8,createReadStream:UU}=require("fs"),{open:f8}=require("lmdb"),xU=Df(),_8=Lf(),{AUDIT_STORE_OPTIONS:h8}=(ro(),D(OL)),{INTERNAL_DBIS_NAME:m8,AUDIT_STORE_NAME:p8}=Ut();BU.exports=g8;var Ay=32768,E8=100;async function g8(e){let t=e.database||e.schema||"data",r=l8()[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=f8({noSync:!0,maxDbs:_8.MAX_DBS}),_,h=d.openDB(m8,new xU(!1)),m=f.useReadTransaction(),S=0,g=a(async function(E,T){T.encoding="binary",T.encoder=void 0;let w=d.openDB(E,T),v=f.openDB(E,T);for(let{key:H,version:q,value:W}of v.getRange({start:null,transaction:m,versions:v.useVersions}))_=w.put(H,W,q),S++%E8===0&&(await new Promise(te=>setTimeout(te,20)),m.openTimer&&(m.openTimer=0))},"copyDatabase");for(let{key:E,value:T}of f.getRange({transaction:m,start:!1}))if(s.some(w=>E.startsWith?.(w+"/"))){h.put(E,T);let[,w]=E.split("/"),v=!w,H=new xU(!v,v);await g(E,H)}e.include_audit&&await g(p8,{...h8}),await _;let R=UU(d.path);return R.headers=l(),R.on("close",()=>{m.done(),d.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=d8(o.path);return o.transaction(()=>{let u=Buffer.alloc(Ay);u8(c,u,0,Ay),o.resetReadTxn();let f=o.useReadTransaction();f.renew();let d=UU(null,{fd:c,start:Ay}),_=new c8.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(g8,"getBackup")});var GU=P((iOe,FU)=>{"use strict";var S8=j(),{handleHDBError:T8}=me(),A8=dM(),R8=xp(),y8=KR(),b8=ev(),O8=Ff(),N8=XR(),w8=Nv(),I8=Uv(),C8=Vf(),P8=$v(),D8=eU(),L8=iU(),M8=aU(),v8=dU(),U8=gU(),x8=oy(),B8=RU(),H8=IU(),k8=PU(),kU=vU(),F8=HU(),Ry=class extends A8{static{a(this,"LMDBBridge")}async searchByConditions(t){return P8(t)}async getDataByHash(t){return await N8(t)}async searchByHash(t){return await w8(t)}async getDataByValue(t,r){return await I8(t,r)}async searchByValue(t){return await C8(t)}async createSchema(t){return await b8(t)}async dropSchema(t){return await D8(t)}async createTable(t,r){return await L8(t,r)}async dropTable(t){return await x8(t)}async createAttribute(t){return await R8(t)}async createRecords(t){return await y8(t)}async updateRecords(t){return await M8(t)}async upsertRecords(t){try{return await v8(t)}catch(r){throw T8(r,null,null,S8.ERR,r)}}async deleteRecords(t){return await O8(t)}async dropAttribute(t){return await B8(t)}async deleteAuditLogsBefore(t){return await U8(t)}async readAuditLog(t){return await H8(t)}writeTransaction(t,r,n){return k8.writeTransaction(t,r,n)}flush(t,r){return kU.flush(t,r)}resetReadTxn(t,r){return kU.resetReadTxn(t,r)}getBackup(t){return F8(t)}};FU.exports=Ry});function En(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function jp(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 Bn.ClientError(`${l} must be a string, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be a string, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be a number, attempt to assign ${_}`);En(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 Bn.ClientError(`${l} must be an integer between -2147483648 and 2147483647, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be a number, attempt to assign ${d}`);En(this)[l]=d},"set");break;case"Boolean":u=a(function(d){if(!(typeof d=="boolean"||d==null&&c.nullable!==!1))throw new Bn.ClientError(`${l} must be a boolean, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be a Date, attempt to assign ${d}`);En(this)[l]=d},"set");break;case"Bytes":u=a(function(d){if(!(d instanceof Uint8Array||d==null&&c.nullable!==!1))throw new Bn.ClientError(`${l} must be a Buffer or Uint8Array, attempt to assign ${d}`);En(this)[l]=d},"set");break;case"Blob":u=a(function(d){if(!(d instanceof mi||d==null&&c.nullable!==!1))throw new Bn.ClientError(`${l} must be a Blob, attempt to assign ${d}`);En(this)[l]=d},"set");break;case"Any":case void 0:u=a(function(d){En(this)[l]=d},"set");break;default:u=a(function(d){if(!(typeof d=="object"||d==null&&c.nullable!==!1))throw new Bn.ClientError(`${l} must be an object, attempt to assign ${d}`);En(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=yy(_,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 Bn.ClientError("Can not add a property to a sealed table schema");En(this)[c]=l}),i("deleteProperty",function(c){En(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,$U);break}o=c}while(o&&o!==$U)}function yy(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends jf{static{a(this,"TrackedObject")}},jp(r,t)),new r(e)):new jf(e);case Array:let n=new zp(e.length,e);for(let s=0,i=e.length;s<i;s++){let o=e[s];o&&typeof o=="object"&&(o=yy(o,t?.elements)),n[s]=o}return n;default:return e}}function Jp(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=Jp(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 wc(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=wc(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=XA[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=wc(s);r[n]=s}if(!Array.isArray(e))for(let n in e)G8.call(e,n)&&(r||(r={...e.getRecord?.()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?.()??e}function Wp(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[Nc]||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(Wp(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(Wp(s))return!0}else return!0}else return!0}}return!1}var Bn,qU,$U,jf,G8,Nc,zp,Qp,by=be(()=>{Bn=M(me());Ep();cs();a(En,"getChanges");a(jp,"assignTrackedAccessors");qU=Object.prototype,$U=new Proxy({},{get(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(qU[t])return qU[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=yy(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}});a(yy,"trackObject");jf=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}};jp(jf,{});a(Jp,"collapseData");G8=Object.prototype.hasOwnProperty;a(wc,"updateAndFreeze");a(Wp,"hasChanges");Nc=Symbol.for("has-array-changes"),zp=class extends Array{static{a(this,"TrackedArray")}#e;[Nc];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[Nc]=!0,super.splice(...t)}push(...t){return this[Nc]=!0,super.push(...t)}pop(){return this[Nc]=!0,super.pop()}unshift(...t){return this[Nc]=!0,super.unshift(...t)}shift(){return this[Nc]=!0,super.shift()}};zp.prototype.constructor=Array;Qp=class{constructor(t){this.value=t}static{a(this,"Addition")}__op__="add";update(t){return(+t||0)+this.value}}});var JU={};Ue(JU,{ResourceBridge:()=>wy});function Iy({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 KU(e,t){let r=Ti(e),n=Iy(e,r);if(!r)throw new Gs.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;Ot(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&&Jp(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 Ti(e){let t=e.database||e.schema||$8,r=je()[t];if(!r)throw(0,Gs.handleHDBError)(new Error,q8.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function YU(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*WU(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 zU,Xp,Gs,QU,Oy,Ny,jU,q8,$8,V8,K8,VU,wy,XU=be(()=>{"use strict";zU=M(GU()),Xp=M(ou()),Gs=M(me());ve();QU=M(Bf());k();Oy=M(oo()),Ny=M(ks()),jU=M(ae());sc();by();({HDB_ERROR_MSGS:q8}=Gs.hdb_errors),$8="data",V8=1e4,K8=10,wy=class extends zU.default{static{a(this,"ResourceBridge")}constructor(t){super(t),VU=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,Xp.default)(t,"conditions");if(r)throw(0,Gs.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=Ti(t);if(!n)throw new Gs.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:Iy(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 Gs.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}]}dt({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await Ti(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=Ti(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){Ti(t).dropTable()}createSchema(t){return lu({database:t.schema,table:null}),Oy.signalSchemaChange(new Ny.SchemaEventMsg(process.pid,Gt.CREATE_SCHEMA,t.schema))}async dropSchema(t){await Cy(t.schema),Oy.signalSchemaChange(new Ny.SchemaEventMsg(process.pid,Gt.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,VU.upsertRecords(t)}async upsertRecords(t){let{schema_table:r,attributes:n}=(0,QU.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),Ot(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}_&&(_=Jp(_));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),Ot(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 YU(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=je()[t.schema][t.table];if(!r.createdTimeProperty)throw new Gs.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:Om.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,jU.async_set_timeout)(K8),l=[],s=!0},"chunkDelete");for await(let f of n)l.push(f[r.primaryKey]),c++,c%V8===0&&await u();return l.length>0&&await u(),s?YU(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,Xp.default)(t,"hashes");if(r)throw r;return KU(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of KU(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&oA[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,Xp.default)(t,"value");if(n)throw n;let s=Ti(t);if(!s)throw new Gs.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===Om.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:Iy(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=Ti(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){Ti({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return Ti(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=Ti(t),n={};switch(t.search_type){case Nm.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 Nm.USERNAME:let s=t.search_values;for await(let i of WU(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n;default:return WU(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(Iy,"getSelect");a(KU,"getRecords");a(Ti,"getTable");a(YU,"createDeleteResponse");a(WU,"groupRecordsInHistory")});var Hn=P((pOe,ZU)=>{"use strict";var{ResourceBridge:Y8}=(XU(),D(JU)),W8=le();W8.initSync();var Zp;function z8(){return Zp||(Zp=new Y8,Zp)}a(z8,"getBridge");ZU.exports=z8()});var n0=P((gOe,r0)=>{"use strict";var e0=require("lodash"),Jf=require("mathjs"),Q8=require("jsonata"),t0=ae();r0.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?e0.uniqWith(e,e0.isEqual):e,"distinct_array"),searchJSON:j8,mad:Xf.bind(null,Jf.mad),mean:Xf.bind(null,Jf.mean),mode:Xf.bind(null,Jf.mode),prod:Xf.bind(null,Jf.prod),median:Xf.bind(null,Jf.median)};function Xf(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(Xf,"aggregateFunction");function j8(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(t0.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),t0.isEmpty(this.__ala__.res[r])){let n=Q8(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(j8,"searchJSON")});var i0=P((TOe,s0)=>{"use strict";var jt=require("moment"),Py="YYYY-MM-DDTHH:mm:ss.SSSZZ";jt.suppressDeprecationWarnings=!0;s0.exports={current_date:a(()=>jt().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>jt().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return jt(e).utc().format("YYYY");case"month":return jt(e).utc().format("MM");case"day":return jt(e).utc().format("DD");case"hour":return jt(e).utc().format("HH");case"minute":return jt(e).utc().format("mm");case"second":return jt(e).utc().format("ss");case"millisecond":return jt(e).utc().format("SSS");default:break}},"extract"),date:a(e=>jt(e).utc().format(Py),"date"),date_format:a((e,t)=>jt(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>jt(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>jt(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=jt(e).utc(),s=jt(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>jt().utc().valueOf(),"now"),get_server_time:a(()=>jt().format(Py),"get_server_time"),offset_utc:a((e,t)=>jt(e).utc().utcOffset(t).format(Py),"offset_utc")}});var l0=P((ROe,c0)=>{"use strict";var J8=require("@turf/area"),X8=require("@turf/length"),Z8=require("@turf/circle"),e5=require("@turf/difference"),t5=require("@turf/distance"),r5=require("@turf/boolean-contains"),n5=require("@turf/boolean-equal"),s5=require("@turf/boolean-disjoint"),i5=require("@turf/helpers"),o0=(k(),D($)),$e=ae(),lo=j();c0.exports={geoArea:o5,geoLength:a5,geoCircle:c5,geoDifference:l5,geoDistance:a0,geoNear:u5,geoContains:d5,geoEqual:f5,geoCrosses:_5,geoConvert:h5};function o5(e){if($e.isEmpty(e))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e));try{return J8.default(e)}catch(t){return lo.trace(t,e),NaN}}a(o5,"geoArea");function a5(e,t){if($e.isEmpty(e))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e));try{return X8.default(e,{units:t||"kilometers"})}catch(r){return lo.trace(r,e),NaN}}a(a5,"geoLength");function c5(e,t,r){if($e.isEmpty(e))return NaN;if($e.isEmpty(t))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e));try{return Z8.default(e,t,{units:r||"kilometers"})}catch(n){return lo.trace(n,e,t),NaN}}a(c5,"geoCircle");function l5(e,t){if($e.isEmpty(e))return NaN;if($e.isEmpty(t))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return e5(e,t)}catch(r){return lo.trace(r,e,t),NaN}}a(l5,"geoDifference");function a0(e,t,r){if($e.isEmpty(e))return NaN;if($e.isEmpty(t))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return t5.default(e,t,{units:r||"kilometers"})}catch(n){return lo.trace(n,e,t),NaN}}a(a0,"geoDistance");function u5(e,t,r,n){if($e.isEmpty(e)||$e.isEmpty(t))return!1;if($e.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return a0(e,t,n)<=r}catch(s){return lo.trace(s,e,t),!1}}a(u5,"geoNear");function d5(e,t){if($e.isEmpty(e)||$e.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return r5.default(e,t)}catch(r){return lo.trace(r,e,t),!1}}a(d5,"geoContains");function f5(e,t){if($e.isEmpty(e)||$e.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return n5.default(e,t)}catch(r){return lo.trace(r,e,t),!1}}a(f5,"geoEqual");function _5(e,t){if($e.isEmpty(e)||$e.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return!s5.default(e,t)}catch(r){return lo.trace(r,e,t),!1}}a(_5,"geoCrosses");function h5(e,t,r){if($e.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if($e.isEmpty(t))throw new Error("geo_type is required");if($e.isEmpty(o0.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(o0.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=$e.autoCastJSON(e)),i5[t](e,r)}a(h5,"geoConvert")});var eE=P((bOe,u0)=>{var Ic=n0(),kn=i0(),Ai=l0();u0.exports=e=>{e.aggr.mad=e.aggr.MAD=Ic.mad,e.aggr.mean=e.aggr.MEAN=Ic.mean,e.aggr.mode=e.aggr.MODE=Ic.mode,e.aggr.prod=e.aggr.PROD=Ic.prod,e.aggr.median=e.aggr.MEDIAN=Ic.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Ic.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Ic.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=kn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=kn.current_time,e.fn.extract=e.fn.EXTRACT=kn.extract,e.fn.date=e.fn.DATE=kn.date,e.fn.date_format=e.fn.DATE_FORMAT=kn.date_format,e.fn.date_add=e.fn.DATE_ADD=kn.date_add,e.fn.date_sub=e.fn.DATE_SUB=kn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=kn.date_diff,e.fn.now=e.fn.NOW=kn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=kn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=kn.get_server_time,e.fn.getdate=e.fn.GETDATE=kn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=kn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=Ai.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=Ai.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=Ai.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=Ai.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=Ai.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=Ai.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=Ai.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=Ai.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=Ai.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=Ai.geoNear}});var h0=P((OOe,_0)=>{"use strict";var Zf=require("lodash"),gn=require("alasql");gn.options.cache=!1;var m5=eE(),d0=require("clone"),tE=require("recursive-iterator"),Be=j(),Je=ae(),uu=Hn(),p5=(k(),D($)),{hdb_errors:E5}=me(),{getDatabases:f0}=(ve(),D(it)),g5="IS NULL",qs="There was a problem performing this search. Please check the logs and try again.";m5(gn);var Dy=class{static{a(this,"SQLSearch")}constructor(t,r){if(Je.isEmpty(t))throw Be.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(),Je.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!Je.isEmptyOrZeroLength(n))return Be.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw Be.error("Error thrown from checkEmptySQL in SQLSearch class method search."),Be.error(n),new Error(qs)}try{let n=await this._getFetchAttributeValues();if(n)return n}catch(n){throw Be.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),Be.error(n),new Error(qs)}if(Object.keys(this.data).length===0)return Be.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(n){throw Be.error("Error thrown from processJoins in SQLSearch class method search."),Be.error(n),new Error(qs)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(n){throw Be.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),Be.error(n),new Error(qs)}try{return t=await this._finalSQL(),t}catch(n){throw Be.error("Error thrown from finalSQL in SQLSearch class method search."),Be.error(n),new Error(qs)}}_getColumns(){let t=new tE(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(d0(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Zf.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=f0()[r.databaseid][r.tableid].primaryKey,this.data[n].__merged_data={},this.data[n].__merged_attributes=[],this.data[n].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(Je.isEmpty(this.statement.where)){Be.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new tE(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!Je.isEmpty(r)&&r.right)if(Je.isNotEmptyAndHasValue(r.right.value)){let n=Je.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new gn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=Je.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new gn.yy.LogicValue({value:i}):n instanceof gn.yy.StringValue&&Je.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new gn.yy.NumValue({value:i}))});if(t){Be.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new tE(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(!Je.isEmpty(p5.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(Je.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(Je.isEmptyOrZeroLength(r.left.columnid)||Je.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(Je.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"=":!Je.isEmpty(r.right.value)||!Je.isEmpty(r.left.value)?n.add(Je.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(Je.isEmptyOrZeroLength(this.all_table_attributes)&&Je.isEmptyOrZeroLength(this.statement.from)&&Je.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&&Zf.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(Je.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);Je.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(Je.isEmptyOrZeroLength(this.all_table_attributes)&&!Je.isEmptyOrZeroLength(this.columns.columns))return t;if(Je.isEmptyOrZeroLength(this.all_table_attributes)&&Je.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await gn.promise(r)}catch(r){throw Be.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),Be.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(d0(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(Je.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(g5)>-1&&this.tables.forEach(s=>{let i={columnid:f0()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=Zf.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),!Je.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!Je.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let f=await uu.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 Be.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),Be.error(f),new Error(qs)}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 uu.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 Be.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),Be.error(f),new Error(qs)}else if(!Je.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!Je.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 uu.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 Be.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),Be.error(f),new Error(qs)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await uu.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 Be.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),Be.error(f),new Error(qs)}}}_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 gn.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 gn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new gn.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 gn.yy.FuncValue:new gn.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 gn.promise(m,t),t=null}catch(h){throw Be.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),Be.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=Zf.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 tE(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=Zf.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 Be.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),Be.error(i),new Error(qs)}}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 uu.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 Be.error("Error thrown from getDataByHash function in SQLSearch class method getData."),Be.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();Be.trace(`Final SQL: ${s}`),n=await gn.promise(s,t),this.has_outer_join&&(n=this._translateUndefinedValues(n)),Be.trace(`Final AlaSQL results data included ${n.length} rows`)}catch(s){throw Be.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),Be.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 Be.error(E5.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),Be.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 uu.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 Be.error("There was an error when processing this SQL operation. Check your logs"),Be.error(o),new Error(qs)}}return Object.values(Object.values(this.data)[0].__merged_data)}};_0.exports=Dy});var Kr=P((wOe,m0)=>{"use strict";var S5=lM();m0.exports={searchByConditions:A5,searchByHash:R5,searchByValue:y5,search:b5};var Ly=Hn(),{transformReq:My}=ae(),T5=h0();async function A5(e){return My(e),Ly.searchByConditions(e)}a(A5,"searchByConditions");async function R5(e){My(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of Ly.searchByHash(e))r&&t.push(r);return t}a(R5,"searchByHash");async function y5(e){My(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of Ly.searchByValue(e))t.push(r);return t}a(y5,"searchByValue");function b5(e,t){try{let r=new S5(e);r.validate(),new T5(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(b5,"search")});var uo=P((COe,S0)=>{"use strict";var e_=require("crypto"),O5=le(),{CONFIG_PARAMS:N5}=(k(),D($)),E0="aes-256-cbc",w5=32,I5=16,vy=64,g0=32,C5=vy+g0,p0=new Map;S0.exports={encrypt:P5,decrypt:D5,createNatsTableStreamName:L5};function P5(e){let t=e_.randomBytes(w5),r=e_.randomBytes(I5),n=e_.createCipheriv(E0,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(P5,"encrypt");function D5(e){let t=e.substr(0,vy),r=e.substr(vy,g0),n=e.substr(C5,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=e_.createDecipheriv(E0,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(D5,"decrypt");function L5(e,t){let r=O5.get(N5.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=p0.get(r);return n||(n=e_.createHash("md5").update(r).digest("hex"),p0.set(r,n)),n}a(L5,"createNatsTableStreamName")});var fo=P((LOe,y0)=>{"use strict";var DOe=Kr(),t_=j(),{validateBySchema:T0}=rt(),Cc=require("joi"),M5=uo(),rE=ae(),{handleHDBError:nE,hdb_errors:v5,ClientError:A0}=me(),{HDB_ERROR_MSGS:sE,HTTP_STATUS_CODES:Uy}=v5,R0=le();R0.initSync();var{getDatabases:xy}=(ve(),D(it)),U5=require("fs-extra"),x5=(k(),D($));y0.exports={describeAll:B5,describeTable:iE,describeSchema:H5};async function B5(e={}){try{let t=rE.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 iE({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 iE({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){t_.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 t_.error("Got an error in describeAll"),t_.error(t),nE(new Error,sE.DESCRIBE_ALL_ERR)}}a(B5,"describeAll");async function iE(e,t){rE.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=T0(e,Cc.object({database:Cc.string(),table:Cc.string().required(),exact_count:Cc.boolean().strict()}));if(i)throw new A0(i.message);let c=xy()[r];if(!c)throw nE(new Error,sE.SCHEMA_NOT_FOUND(e.schema),Uy.NOT_FOUND);let l=c[n];if(!l)throw nE(new Error,sE.TABLE_NOT_FOUND(e.schema,e.table),Uy.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 U5.stat(l.primaryStore.env.path)).size}catch(h){t_.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")),R0.get(x5.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=M5.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){t_.warn(`unable to stat table dbi due to ${h}`)}return _}a(iE,"descTable");async function H5(e){rE.transformReq(e);let t=T0(e,Cc.object({database:Cc.string(),exact_count:Cc.boolean().strict()}));if(t)throw new A0(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 nE(new Error,sE.SCHEMA_NOT_FOUND(e.schema),Uy.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),rE.isEmpty(l)||l.describe){let u=await iE({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(H5,"describeSchema")});var $s=P((xOe,I0)=>{var k5=no(),{callbackify:O0,promisify:F5}=require("util"),{getDatabases:N0}=(ve(),D(it));I0.exports={setSchemaDataToGlobal:b0,getTableSchema:G5,getSystemSchema:q5,setSchemaDataToGlobalAsync:F5(b0)};var w0=fo(),vOe=O0(w0.describeAll),UOe=O0(w0.describeTable);function b0(e){global.hdb_schema=N0(),e&&e()}a(b0,"setSchemaDataToGlobal");function G5(e,t,r){let n=N0()[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(G5,"getTableSchema");function q5(){return k5}a(q5,"getSystemSchema")});var Sn=P((HOe,L0)=>{"use strict";var aE=kR(),Lr=ae(),$5=require("util"),cE=Hn(),V5=$s(),C0=j(),{handleHDBError:Pc,hdb_errors:K5}=me(),{HTTP_STATUS_CODES:Dc}=K5,Y5=$5.promisify(V5.getTableSchema),W5="updated",P0="inserted",D0="upserted";L0.exports={insert:Q5,update:j5,upsert:J5,validation:z5,flush:X5};async function z5(e){if(Lr.isEmpty(e))throw new Error("invalid update parameters defined.");if(Lr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(Lr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await Y5(e.schema,e.table),r=aE(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&&Lr.isEmptyOrZeroLength(c[n]))throw C0.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(!Lr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw C0.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!Lr.isEmpty(c[n])&&c[n]!==""&&s.has(Lr.autoCast(c[n]))&&(c.skip=!0),s.add(Lr.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(z5,"validation");async function Q5(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=aE(e);if(t)throw Pc(new Error,t.message,Dc.BAD_REQUEST);Lr.transformReq(e);let r=Lr.checkSchemaTableExist(e.schema,e.table);if(r)throw Pc(new Error,r,Dc.BAD_REQUEST);let n=await cE.createRecords(e);return oE(P0,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(Q5,"insertData");async function j5(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=aE(e);if(t)throw Pc(new Error,t.message,Dc.BAD_REQUEST);Lr.transformReq(e);let r=Lr.checkSchemaTableExist(e.schema,e.table);if(r)throw Pc(new Error,r,Dc.BAD_REQUEST);let n=await cE.updateRecords(e);return Lr.isEmpty(n.existing_rows)?oE(W5,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):oE(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(j5,"updateData");async function J5(e){if(e.operation!=="upsert")throw Pc(new Error,"invalid operation, must be upsert",Dc.INTERNAL_SERVER_ERROR);let t=aE(e);if(t)throw Pc(new Error,t.message,Dc.BAD_REQUEST);Lr.transformReq(e);let r=Lr.checkSchemaTableExist(e.schema,e.table);if(r)throw Pc(new Error,r,Dc.BAD_REQUEST);let n=await cE.upsertRecords(e);return oE(D0,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(J5,"upsertData");function oE(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===P0?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===D0?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(oE,"returnObject");function X5(e){return Lr.transformReq(e),cE.flush(e.schema,e.table)}a(X5,"flush")});var Hy=P((FOe,U0)=>{var Z5=rt(),By=require("joi"),{hdb_table:e9,hdb_database:M0}=gi(),v0={schema:M0,database:M0,table:e9},t9={date:By.date().iso().required()},r9={timestamp:By.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};U0.exports=function(e,t){let r=t==="timestamp"?{...v0,...r9}:{...v0,...t9},n=By.object(r);return Z5.validateBySchema(e,n)}});var H0=P((GOe,B0)=>{var n9=rt(),ky=require("joi"),{hdb_table:s9,hdb_database:x0}=gi(),i9=ky.object({schema:x0,database:x0,table:s9,hash_values:ky.array().required(),ids:ky.array()});B0.exports=function(e){return n9.validateBySchema(e,i9)}});var $y=P((qOe,k0)=>{"use strict";var Fy=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}},Gy=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}},qy=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};k0.exports={InsertObject:Fy,NoSQLSeachObject:Gy,DeleteResponseObject:qy}});var vc=P((VOe,V0)=>{"use strict";var G0=Hy(),o9=H0(),Lc=ae(),F0=require("moment"),q0=j(),{promisify:a9,callbackify:c9}=require("util"),Mc=(k(),D($)),l9=$s(),Vy=a9(l9.getTableSchema),Ky=Hn(),{DeleteResponseObject:u9}=$y(),{handleHDBError:aa,hdb_errors:d9}=me(),{HDB_ERROR_MSGS:lE,HTTP_STATUS_CODES:ca}=d9,f9="records successfully deleted",_9=c9($0);V0.exports={delete:_9,deleteRecord:$0,deleteFilesBefore:h9,deleteAuditLogsBefore:m9};async function h9(e){let t=G0(e,"date");if(t)throw aa(t,t.message,ca.BAD_REQUEST,void 0,void 0,!0);if(Lc.transformReq(e),!F0(e.date,F0.ISO_8601).isValid())throw aa(new Error,lE.INVALID_DATE,ca.BAD_REQUEST,Mc.LOG_LEVELS.ERROR,lE.INVALID_DATE,!0);let n=Lc.checkSchemaTableExist(e.schema,e.table);if(n)throw aa(new Error,n,ca.NOT_FOUND,Mc.LOG_LEVELS.ERROR,n,!0);let s=await Ky.deleteRecordsBefore(e);if(await Vy(e.schema,e.table),q0.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(h9,"deleteFilesBefore");async function m9(e){let t=G0(e,"timestamp");if(t)throw aa(t,t.message,ca.BAD_REQUEST,void 0,void 0,!0);if(Lc.transformReq(e),isNaN(e.timestamp))throw aa(new Error,lE.INVALID_VALUE("Timestamp"),ca.BAD_REQUEST,Mc.LOG_LEVELS.ERROR,lE.INVALID_VALUE("Timestamp"),!0);let r=Lc.checkSchemaTableExist(e.schema,e.table);if(r)throw aa(new Error,r,ca.NOT_FOUND,Mc.LOG_LEVELS.ERROR,r,!0);let n=await Ky.deleteAuditLogsBefore(e);return await Vy(e.schema,e.table),q0.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(m9,"deleteAuditLogsBefore");async function $0(e){e.ids&&(e.hash_values=e.ids);let t=o9(e);if(t)throw aa(t,t.message,ca.BAD_REQUEST,void 0,void 0,!0);Lc.transformReq(e);let r=Lc.checkSchemaTableExist(e.schema,e.table);if(r)throw aa(new Error,r,ca.NOT_FOUND,Mc.LOG_LEVELS.ERROR,r,!0);try{await Vy(e.schema,e.table);let n=await Ky.deleteRecords(e);return Lc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${f9}`),n}catch(n){if(n.message===Mc.SEARCH_NOT_FOUND_MESSAGE){let s=new u9;return s.message=Mc.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a($0,"deleteRecord")});var uE={};Ue(uE,{HASH_FUNCTION:()=>s_,hash:()=>zy,validate:()=>Qy});function Yy(e=n_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(r_.randomBytes(e)).map(r=>t[r%t.length]).join("")}function zy(e,t=s_[Y0?.toUpperCase()]??"sha256"){return Wy[t](e)}function Qy(e,t,r=s_[Y0?.toUpperCase()]??"sha256"){return e?p9[r](e,t):!1}var r_,du,K0,Y0,n_,W0,s_,Wy,p9,dE=be(()=>{r_=M(require("node:crypto")),du=M(require("argon2")),K0=M(le());k();Y0=(0,K0.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),n_=16,W0=9,s_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(s_||{});a(Yy,"generateSalt");Wy={md5:a((e,t=void 0)=>{t=t??Yy(W0);let r=r_.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??Yy(n_);let r=r_.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=Yy(n_),r=await du.hash(e,{type:du.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},p9={md5:a((e,t)=>{let r=e.slice(0,W0);return e===Wy.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,n_);return e===Wy.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await du.verify(e.slice(n_),t),"argon2id")};a(zy,"hash");a(Qy,"validate")});var Q0=P((zOe,z0)=>{var jy=rt(),Yr={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 E9(e){return Yr.password.presence=!0,Yr.username.presence=!0,Yr.role.presence=!0,Yr.active.presence=!0,jy.validateObject(e,Yr)}a(E9,"addUserValidation");function g9(e){return Yr.password.presence=!1,Yr.username.presence=!0,Yr.role.presence=!1,Yr.active.presence=!1,jy.validateObject(e,Yr)}a(g9,"alterUserValidation");function S9(e){return Yr.password.presence=!1,Yr.username.presence=!0,Yr.role.presence=!1,Yr.active.presence=!1,jy.validateObject(e,Yr)}a(S9,"dropUserValidation");z0.exports={addUserValidation:E9,alterUserValidation:g9,dropUserValidation:S9}});var wt=P((JOe,J0)=>{"use strict";var{platform:jOe}=require("os"),T9="nats-server.zip",Jy="nats-server",A9=process.platform==="win32"?`${Jy}.exe`:Jy,R9=/^[^\s.,*>]+$/,j0="__request__",y9=a(e=>`${e}.${j0}`,"REQUEST_SUBJECT"),b9={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},O9={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},N9={HUB:"hub.pid",LEAF:"leaf.pid"},w9={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},I9={SUCCESS:"success",ERROR:"error"},C9={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},P9={TXN:"txn",MSGID:"msgid"},fu={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},D9={[fu.ERR]:1,[fu.WRN]:2,[fu.INF]:3,[fu.DBG]:4,[fu.TRC]:5},L9={debug:"-D",trace:"-DVV"};J0.exports={NATS_SERVER_ZIP:T9,NATS_SERVER_NAME:Jy,NATS_BINARY_NAME:A9,PID_FILES:N9,NATS_CONFIG_FILES:O9,SERVER_SUFFIX:w9,NATS_TERM_CONSTRAINTS_RX:R9,REQUEST_SUFFIX:j0,UPDATE_REMOTE_RESPONSE_STATUSES:I9,CLUSTER_STATUS_STATUSES:C9,REQUEST_SUBJECT:y9,SUBJECT_PREFIXES:P9,MSG_HEADERS:b9,LOG_LEVELS:fu,LOG_LEVEL_FLAGS:L9,LOG_LEVEL_HIERARCHY:D9}});var Xy=P(X0=>{"use strict";var M9={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});$r.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()}});qD={type:"application/json",serializeStream:ff,serialize:_f,deserialize:TJ,q:.5};$r.set("*/*",qD);$r.set("",qD);a(TJ,"tryJSONParse");a(mf,"registerContentHandlers");AJ=require("fastify-plugin"),RJ=AJ(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=Jm(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(Jm,"findBestSerializer");BD=LA.default.get(U.HTTP_COMPRESSIONTHRESHOLD);a(pf,"serialize");a(ea,"serializeMessage");a(xA,"asyncSerialization");a(BA,"hasAsyncSerialization");a(yJ,"streamToBuffer");bJ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(OJ,"isBufferEncoding");a(NJ,"parseContentType");a(Ji,"getDeserializer");a(wJ,"deserializerUnknownType");a(IJ,"transformIterable");a(jm,"toCsvStream")});var cp={};Ue(cp,{Blob:()=>mi,blobsWereEncoded:()=>dc,databasePaths:()=>kA,decodeBlobsWithWrites:()=>op,decodeFromDatabase:()=>fc,decodeWithBlobCallback:()=>ap,deleteBlob:()=>np,deleteBlobsInObject:()=>ta,deleteRootBlobPathsForDB:()=>GA,encodeBlobsAsBuffers:()=>HJ,encodeBlobsWithFilePath:()=>ip,findBlobsInObject:()=>jl,getFileId:()=>sp,getFilePathForBlob:()=>ZD,getRootBlobPathsForDB:()=>Tf,setDeletionDelay:()=>LJ});function jD(){}function np(e){let t=ZD(e);t&&setTimeout(()=>{(0,Qe.unlink)(t,r=>{r&&Zi.default.debug?.("Error trying to remove blob file",r)})},JD)}function LJ(e){JD=e}function XD(e){let t=dn.get(e);if(!t)t={storageIndex:0,fileId:null,store:fn},dn.set(e,t);else{if(t.saving)return t;t.store=fn}return vJ(t),t.source?HA(e,t.source,t):t.contentBuffer?MJ(e,t):HA(e,gf.Readable.from(e.stream()),t),t}function HA(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,Qe.createWriteStream)(n,{autoClose:!1,flags:"w"});if(t.errored){let g=Buffer.from(t.errored.toString());d.end(Buffer.concat([m(BigInt(g.length)+0xff000000000000n),g]));return}let _=!1;e.size!==void 0&&(d.write(m(e.size)),_=!0);let h;o?(_||d.write(PJ),h=(0,tp.createDeflate)(),t.pipe(h).pipe(d)):(_||d.write(CJ),t.pipe(d)),t.on("error",S);function m(g){let R=BigInt(g),E=new Uint8Array(_r),T=new DataView(E.buffer);return R|=BigInt(o?FA:QD)<<48n,T.setBigInt64(0,R),E}a(m,"createHeader");function S(g){i.unlock(f,0);let R=d.fd;g?(R&&(0,Qe.close)(R),u(g)):c?(0,Qe.fdatasync)(R,E=>{E&&u(E),l(),(0,Qe.close)(R)}):(l(),(0,Qe.close)(R))}a(S,"finished"),d.on("error",S).on("finish",()=>{if(_)S();else{let g=h?h.bytesWritten:d.bytesWritten-_r;e.size=g,(0,Qe.write)(d.fd,m(g),0,_r,0,S)}})}),e}function sp(e){return dn.get(e)?.fileId}function ZD(e){let t=dn.get(e);return t?.fileId&&Sf(t)}function Tf(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=kA.get(e);if(!t){if(!e.databaseName)return Zi.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,rp.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,to.join)(n,e.databaseName)):t=[(0,to.join)((0,rp.getHdbBasePath)(),"blobs",e.databaseName)],kA.set(e,t)}return t}async function GA(e){let t=Tf(e);t&&await Promise.all(t.map(r=>eL(r)))}async function eL(e){if((0,Qe.existsSync)(e)){for(let t of await(0,xs.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await eL((0,to.join)(e,t.name));else try{await(0,xs.unlink)((0,to.join)(e,t.name))}catch(r){Zi.default.warn?.("Error deleting file",r)}try{await(0,xs.rmdir)(e)}catch(t){Zi.default.warn?.("Error deleting directory",t)}}}function Sf({storageIndex:e,fileId:t,store:r}){let n=Tf(r);return(0,to.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 MJ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<zD))return e.size=n,HA(e,gf.Readable.from([r]),t)}function vJ(e){let t=Tf(e.store),r=UJ(),n=t?.length>1?xJ(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Sf(e),o=(0,to.dirname)(i);(0,Qe.existsSync)(o)||(0,WD.ensureDirSync)(o),e.filePath=i}function UJ(){let e=YD.get(fn);if(!e){let t=0,r=Tf(fn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Qe.existsSync)(n))for(let c of(0,Qe.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,to.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(fn.getUserSharedBuffer("blob-file-id",e.buffer)),YD.set(fn,e)}return Number(Atomics.add(e,0,1n))}function xJ(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(ep);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,BJ(e)),e.frequencyTable[t%ep]}async function BJ(e){if(!xs.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let o=await(0,xs.statfs)(s),c=o.bavail*o.bsize;return Math.pow(c,.8)})),r=new Array(ep),n=t.map(s=>1/s);for(let s=0;s<ep;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 ip(e,t,r){Ql=t,fn=r,dc=!1;try{return e()}finally{Ql=void 0,fn=void 0}}function HJ(e){Dr=[];let t;try{t=e()}catch(n){throw Dr=void 0,n}let r=Dr.length<2?Dr[0]:Promise.all(Dr);return Dr=void 0,r?r.then(()=>e()):t}function op(e,t){try{Dr=[],uc=t,e()}catch(n){throw uc=void 0,Dr=void 0,n}uc=void 0;let r=Dr.length<2?Dr[0]:Promise.all(Dr);return Dr=void 0,r}function ap(e,t,r){fn=r;try{return uc=t,e()}finally{uc=void 0}}function fc(e,t){return fn=t,e()}function ta(e){jl(e,t=>{np(t)})}function jl(e,t){if(e instanceof mi)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&jl(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&jl(e[r],t)}}function kJ(){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""}}}var eo,xs,Qe,tp,gf,WD,rp,to,Zi,zD,_r,QD,FA,VD,CJ,PJ,KD,dn,uc,mi,Ql,Dr,fn,dc,Ef,Xm,DJ,Zm,JD,kA,YD,ep,cs=be(()=>{eo=require("msgpackr"),xs=require("node:fs/promises"),Qe=require("node:fs"),tp=require("node:zlib"),gf=require("node:stream"),WD=require("fs-extra"),rp=M(le());k();to=require("path"),Zi=M(_i());Xi();zD=8192,_r=8,QD=0,FA=1,VD=255,CJ=new Uint8Array([0,QD,255,255,255,255,255,255]),PJ=new Uint8Array([0,FA,255,255,255,255,255,255]),KD=0xffffffffffff,dn=new WeakMap,mi=global.Blob||kJ(),dc=!1,Ef=new Uint8Array(8),Xm=new DataView(Ef.buffer),DJ=6e4;a(jD,"InstanceOfBlobWithNoConstructor");jD.prototype=mi.prototype;Zm=class e extends jD{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size)}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=dn.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):(BA()&&xA(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=dn.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=Sf(t),o,c=a(async()=>{let l,u=_r;try{if(l=await(0,xs.readFile)(i),l.length>=_r){l.copy(Ef,0,0,_r);let d=Xm.getBigUint64(0);if(Number(d>>48n)===VD)throw new Error("Error in blob: "+buffer.subarray(_r));if(u=Number(d&0xffffffffffffn),u<n&&(u=n),u<KD&&(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");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]===FA?new Promise((d,_)=>{(0,tp.deflate)(l.subarray(_r),(h,m)=>{h?_(h):d(f(m))})}):f(l.subarray(_r))},"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=dn.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=Sf(t),o,c=0,l=0,u,f,d,_=!1,h=this;return new ReadableStream({start(){let S=1e3,g=a((R,E)=>{(0,Qe.open)(i,"r",(T,w)=>{if(T){if(T.code==="ENOENT"&&d!==!1&&(Zi.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(v=>v(T))}else o=w,R(w)})},"openFile");return new Promise(g)},pull:a(S=>{let g=0,R=100;return new Promise(a(function E(T,w){function v(q){(0,Qe.close)(o),clearTimeout(f),u&&u.close(),w(q),h.#e?.forEach(W=>W(q))}a(v,"onError");let H=Buffer.allocUnsafe(262144);(0,Qe.read)(o,H,0,H.length,c,(q,W,te)=>{if(l+=W,q)return v(q);if(c===0){if(W<_r){R-- >0&&d!==!1?(m(),Zi.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>E(T,w),20).unref()):(Zi.default.debug?.("File was empty, throwing error",i,R),w(new Error(`Blob ${t.fileId} was empty`)));return}te.copy(Ef,0,0,_r);let se=Xm.getBigUint64(0);if(Number(se>>48n)===VD)return v(new Error("Error in blob: "+te.subarray(_r)));if(g=Number(se&0xffffffffffffn),g<KD&&h.size!==g&&(h.size=g,h.#t))for(let Y of h.#t)Y(g);te=te.subarray(_r,W),l-=_r}else if(W===0){let se=Buffer.allocUnsafe(8);return(0,Qe.read)(o,se,0,_r,0,Y=>{if(Y)return v(Y);if(Ef.set(se),g=Number(Xm.getBigUint64(0)&0xffffffffffffn),g>l){m()?u?f=setTimeout(()=>{v(new Error("File read timed out"))},DJ).unref():(u=(0,Qe.watch)(i,{persistent:!1},()=>{u.close(),u=null,f&&(clearTimeout(f),f=null,E(T,w))}),E(T,w)):_?v(new Error("Blob is incomplete")):(_=!0,E(T,w));return}(0,Qe.close)(o),S.close(),T()})}else te=te.subarray(0,W);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=W,E(T,w);s&&l>=s&&(l>s&&(te=te.subarray(0,s-c)),l=g=s),n&&n>c&&(te=te.subarray(n-c))}c+=W;try{S.enqueue(te)}catch(se){return Zi.default.debug?.("Error enqueuing chunk",se),T()}l===g&&((0,Qe.close)(o),S.close()),T()})},"readMore"))},"pull"),cancel(){(0,Qe.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=dn.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};dn.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)};dn.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(t){if(fn=t?.primaryStore?.rootStore,!fn)throw new Error("No target table specified");return XD(this).saving??Promise.resolve()}},JD=500;a(np,"deleteBlob");a(LJ,"setDeletionDelay");global.createBlob=function(e,t){let r=new Zm(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(dn.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof gf.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=gf.Readable.from(e);else throw new Error("Invalid source type");return r};a(XD,"saveBlob");a(HA,"writeBlobWithStream");a(sp,"getFileId");a(ZD,"getFilePathForBlob");kA=new Map;a(Tf,"getRootBlobPathsForDB");a(GA,"deleteRootBlobPathsForDB");a(eL,"rimrafSteadily");a(Sf,"getFilePath");a(MJ,"writeBlobWithBuffer");a(vJ,"generateFilePath");YD=new Map;a(UJ,"getNextFileId");ep=128;a(xJ,"getNextStorageIndex");a(BJ,"createFrequencyTableForStoragePaths");a(ip,"encodeBlobsWithFilePath");a(HJ,"encodeBlobsAsBuffers");a(op,"decodeBlobsWithWrites");a(ap,"decodeWithBlobCallback");a(fc,"decodeFromDatabase");a(ta,"deleteBlobsInObject");a(jl,"findBlobsInObject");(0,eo.addExtension)({Class:mi,type:11,unpack:a(function(e){let t=(0,eo.unpack)(e),r=new Zm;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(dn.set(r,{storageIndex:t[1],fileId:t[2],store:fn}),uc)return uc(r)??r;if(!fn)throw new Error("No store specified, cannot load blob from storage")}else dn.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=dn.get(e);if(Ql!==void 0&&(dc=!0,t?.recordId!==void 0&&t.recordId!==Ql))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<zD)return r.size=t.contentBuffer.length,(0,eo.pack)([r,t.contentBuffer])}if(Ql!==void 0){if(t=XD(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=Ql,(0,eo.pack)([r,t.storageIndex,t.fileId])}if(t)try{let n=(0,Qe.readFileSync)(Sf(t));if(n.length>=_r&&(n.copy(Ef,0,0,_r),Number(Xm.getBigUint64(0)&0xffffffffffffn)===n.length-_r))return Buffer.concat([(0,eo.pack)([r]),n]);if(Dr)Dr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Dr)return Dr.push(e.bytes()),Buffer.alloc(0);throw n}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,eo.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(kJ,"polyfillBlob")});var iL={};Ue(iL,{HAS_EXPIRATION:()=>dp,HAS_RESIDENCY_ID:()=>zA,HAS_STRUCTURE_UPDATE:()=>_p,LAST_TIMESTAMP_PLACEHOLDER:()=>bf,LOCAL_TIMESTAMP:()=>FJ,METADATA:()=>hc,NEW_TIMESTAMP_PLACEHOLDER:()=>rL,NO_TIMESTAMP:()=>qA,PENDING_LOCAL_TIME:()=>QA,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>WA,RecordEncoder:()=>YA,TIMESTAMP_ASSIGN_LAST:()=>qJ,TIMESTAMP_ASSIGN_NEW:()=>nL,TIMESTAMP_ASSIGN_PREVIOUS:()=>sL,TIMESTAMP_PLACEHOLDER:()=>lp,TIMESTAMP_RECORD_PREVIOUS:()=>$A,handleLocalTimeForGets:()=>hp,recordUpdater:()=>jA,removeEntry:()=>mc});function VJ(){return yf[0]=yf[0]^64,GJ.getFloat64(0)}function hp(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?.[hc];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?.[hc]>=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[hc];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,_c.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<_c.length;u++){let f=_c[u].deref();(!f||f.isDone||f.isCommitted)&&_c.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function jA(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){d||l==null?Jl=i?.localTime?$A|sL:qA:Jl=l?i?.localTime?$A|16384:nL|16384:qA;let h=u?.expiresAt;if(h>=0&&(c|=dp),Rf=c,VA=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:Jl>0},S,g=0;try{let R=i?.residencyId,E=u?.residencyId;E&&(KA=E,Rf|=zA,g|=pc),R!==E&&(g|=Ec,R||(R=0)),c&dp&&(g|=Nf),u?.originatingOperation&&(g|=Of),d&&(m.ifVersion=S=i?.version??null),i&&i.value&&i.metadataFlags&_n&&(r.getBinaryFast(i.localTime)||ta(i.value));let T;if(s!==void 0&&(T=ip(()=>e.put(n,s,m),n,e.rootStore),dc&&(g|=_n)),l){let w=u?.user?.username;if(_&&(ip(()=>e.encoder.encode(_),n,e.rootStore),dc&&(g|=_n)),e.encoder.hasStructureUpdate&&(g|=_p,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let v=i?.localTime,H=r.get(v);if(H){let q=Nt(H).previousLocalTime;return T=r.put(v,Xl(o,t,n,q,u?.nodeId??server.replication.getThisNodeId(r)??0,w,f,Af,g,E,R,h),{ifVersion:S}),T}}T=r.put(s===void 0?rL:bf,Xl(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,w,f,Af,g,E,R,h,u?.originatingOperation),{append:f!=="invalidate",instructedWrite:!0,ifVersion:S})}return T}catch(R){throw R.message+=" id: "+n+" options: "+m,R}}}function mc(e,t,r){if(t)return t.value&&t.metadataFlags&_n&&!e.auditStore.getBinaryFast(t.localTime)&&ta(t.value),e.remove(t.key,r)}var tL,up,lp,bf,WA,rL,FJ,hc,yf,GJ,qA,nL,qJ,sL,$A,dp,zA,QA,_p,$J,Af,Jl,Rf,VA,KA,YA,_c,Zl=be(()=>{tL=require("msgpackr");ro();up=M(j());cs();cs();lp=new Uint8Array([1,1,1,1,4,64,0,0]),bf=new Uint8Array([1,1,1,1,1,0,0,0]),WA=new Uint8Array([1,1,1,1,3,64,0,0]),rL=new Uint8Array([1,1,1,1,0,64,0,0]),FJ=Symbol("local-timestamp"),hc=Symbol("metadata"),yf=new Uint8Array(8),GJ=new DataView(yf.buffer,0,8),qA=0,nL=0,qJ=1,sL=3,$A=4,dp=16,zA=32,QA=1,_p=256,Jl=0,Rf=-1,VA=-1,KA=0,YA=class extends tL.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(Jl||Rf>=0){let o=0,c=Jl;c&&(o+=8,Jl=0);let l=Rf,u=VA,f=KA;l>=0&&(o+=4,Rf=-1,u>=0&&(o+=8,VA=-1),f&&(o+=4,KA=0));let d=$J=r.call(this,s,i|2048|o);Af=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(lp[4]=c,lp[5]=c>>8,d.set(lp,_),_+=8),dc&&(l|=_n),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|fp<<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 Af=r.call(this,s,i),Af};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(yf,0,c),c+=8;else for(let _=0;_<8;_++)yf[_]=t[c++];l=VJ(),i=t[c]}let u,f;i<32&&(i===fp?(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&dp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&zA&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=fc(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[hc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:fc(()=>super.decode(t,r),this.rootStore)}catch(c){return up.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(VJ,"getTimestamp");a(hp,"handleLocalTimeForGets");_c=[];setInterval(()=>{for(let e=0;e<_c.length;e++){let t=_c[e].deref();!t||t.isDone||t.isCommitted?_c.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(up.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):up.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(jA,"recordUpdater");a(mc,"removeEntry")});var XA={};Ue(XA,{add:()=>mp,applyReverse:()=>oL,getRecordAtTime:()=>JA,rebuildUpdateBefore:()=>pp});function mp(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 pp(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,mp(n,s,i)}else r&&(n||(n={}),n[s]=i)}else n||(n={}),n[s]=e[s];return n}function oL(e,t){for(let r in t){let n=t[r];if(n?.__op__){let s=KJ[n.__op__]?.reverse;if(s)s(e,r,{value:n.value});else throw new Error(`Unsupported operation ${n.__op__}`)}else e[r]=aL}}function JA(e,t,r){let n=r.rootStore.auditStore,s={...e.value},i=e.localTime;for(;i>t;){let l=n.get(i),u=Nt(l);switch(u.type){case"put":s=u.getValue(r);break;case"patch":oL(s,u.getValue(r));break;case"delete":s=null}i=u.previousLocalTime}let o={},c=0;for(let l in s)s[l]===aL&&(o[l]=!0,c++);for(;c>0&&i>0;){let l=n.get(i),u=Nt(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 KJ,aL,Ep=be(()=>{ro();a(mp,"add");mp.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)};KJ={add:mp};a(pp,"rebuildUpdateBefore");a(oL,"applyReverse");aL={};a(JA,"getRecordAtTime")});var fL={};Ue(fL,{onStorageReclamation:()=>wf,runReclamationHandlers:()=>rR,setAvailableSpaceRatioGetter:()=>WJ});function wf(e,t,r){(r||(0,Sp.getWorkerIndex)()===(0,Sp.getWorkerCount)()-1)&&(gp.has(e)||gp.set(e,[]),gp.get(e).push({priority:0,handler:t}),tR||(tR=setTimeout(rR,lL).unref()))}async function rR(){for(let[e,t]of gp)try{let r=await dL(e),n=YJ/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&&(eR.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){eR.default.error?.("Error running storage reclamation handlers",r)}tR=setTimeout(rR,lL).unref()}function WJ(e){dL=e??uL}var ZA,Sp,eR,Tp,cL,gp,YJ,lL,tR,uL,dL,Ap=be(()=>{ZA=require("node:fs/promises"),Sp=M(tt()),eR=M(_i());k();Tp=M(le()),cL=M(ae());Tp.default.initSync();gp=new Map,YJ=Tp.default.get(U.STORAGE_RECLAMATION_THRESHOLD)??.4,lL=(0,cL.convertToMS)(Tp.default.get(U.STORAGE_RECLAMATION_INTERVAL))||36e5;a(wf,"onStorageReclamation");uL=a(async e=>{if(ZA.statfs){let t=await(0,ZA.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"),dL=uL;a(rR,"runReclamationHandlers");a(WJ,"setAvailableSpaceRatioGetter")});var OL={};Ue(OL,{ACTION_32_BIT:()=>fp,ACTION_64_BIT:()=>JJ,AUDIT_STORE_OPTIONS:()=>Pf,Decoder:()=>Sc,HAS_BLOBS:()=>_n,HAS_CURRENT_RESIDENCY_ID:()=>pc,HAS_EXPIRATION_EXTENDED_TYPE:()=>Nf,HAS_ORIGINATING_OPERATION:()=>Of,HAS_PREVIOUS_RESIDENCY_ID:()=>Ec,REMOTE_SEQUENCE_UPDATE:()=>Np,createAuditEntry:()=>Xl,getLastRemoved:()=>QJ,openAuditStore:()=>bp,readAuditEntry:()=>Nt,removeAuditEntry:()=>Op,setAuditRetention:()=>jJ,transactionKeyEncoder:()=>AL});function bp(e){let t=e.auditStore=e.openDB(nR.AUDIT_STORE_NAME,{create:!1,...Pf});t||(t=e.auditStore=e.openDB(nR.AUDIT_STORE_NAME,Pf),hL(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=iR;wf(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()-sR/(1+i*i)})){try{_=Op(t,m,S)}catch(g){eu.warn("Error removing audit entry",g)}if(h=m,await new Promise(setImmediate),++d>=zJ){o=10;break}}await _}finally{d===0?o=Math.min(o<<1,sR/10):(hL(t,h),o>100&&(o=o>>1)),f(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Cf.getWorkerIndex)()===(0,Cf.getWorkerCount)()-1&&c(),(0,Cf.getWorkerIndex)()===0&&!_L)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(_L=!0,eu.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 Op(e,t,r){let n=XJ(r),s;if(n&_n){s=Nt(r);let i=e.tableStores[s.tableId],o=i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&fc(()=>ta(s.getValue(i)),i.rootStore)}if((n&15)===oR){s=s||Nt(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 hL(e,t){aR[0]=t,e.put(Symbol.for("last-removed"),RL)}function QJ(e){let t=e.get(Symbol.for("last-removed"));if(t)return RL.set(t),aR[0]}function jJ(e,t=iR){sR=e,iR=t}function Xl(e,t,r,n,s,i,o,c,l,u,f,d,_){let h=yL[o];if(!h)throw new Error(`Invalid audit entry type ${o}`);let m=1;if(n&&(n>1?ra.setFloat64(0,n):ls.set(WA),m=9),l){if(l&255)throw new Error("Illegal extended type");m+=3}R(s),R(t),g(r),ra.setFloat64(m,e),m+=8,l&pc&&R(u),l&Ec&&R(f),l&Nf&&(ra.setFloat64(m,d),m+=8),l&Of&&R(bL[_]),i?g(i):ls[m++]=0,l?ra.setUint32(n?8:0,h|l|3221225472):ls[n?8:0]=h;let S=ls.subarray(0,m);if(c)return Buffer.concat([S,c]);return S;function g(E){let T=m;m+=1,m=(0,gc.writeKey)(E,ls,m);let w=m-T-1;w>127?w>16383?(eu.error("Key or username was too large for audit entry",E),m=T+1,ls[T]=0):(ls.copyWithin(T+2,T+1,m),ra.setUint16(T,w|32768),m++):ls[T]=w}function R(E){E<128?ls[m++]=E:E<16384?(ra.setUint16(m,E|32768),m+=2):E<1056964608?(ra.setUint32(m,E|3221225472),m+=4):(ls[m]=255,ra.setUint32(m+1,E),m+=5)}}function XJ(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 Sc(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function Nt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new Sc(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&pc&&(_=n.readInt()),i&Ec&&(h=n.readInt()),i&Nf&&(m=n.readFloat64()),i&Of){let T=n.readInt();S=bL[T]}l=n.readInt();let g=n.position,R=n.position+=l,E;return{type:yL[i&7],tableId:c,nodeId:o,get recordId(){return(0,gc.readKey)(e,u,f)},getBinaryRecordId(){return e.subarray(u,f)},version:d,previousLocalTime:s,get user(){return R>g?(0,gc.readKey)(e,g,R):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(T,w,v){if(i&Rp||i&If&&!w)return E||(E=fc(()=>T.decoder.decode(e.subarray(n.position,r)),T.rootStore)),E;if(i&If&&v)return JA(T.getEntry(this.recordId),v,T)},getBinaryValue(){return i&(Rp|If)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:_,previousResidencyId:h,expiresAt:m,originatingOperation:S}}catch(n){return eu.error("Reading audit entry error",n,e),{}}}var gc,yp,nR,Cf,TL,eu,ls,ra,AL,Pf,sR,zJ,aR,RL,iR,_L,Rp,If,mL,oR,pL,EL,gL,SL,fp,JJ,Np,pc,Ec,Of,Nf,_n,yL,bL,Sc,ro=be(()=>{gc=require("ordered-binary"),yp=M(le()),nR=M(Ut());k();Cf=M(tt()),TL=M(ae());Zl();eu=M(j());Ep();cs();Ap();(0,yp.initSync)();ls=Buffer.alloc(2816),ra=new DataView(ls.buffer,ls.byteOffset,2816),AL={writeKey(e,t,r){return e===bf?(t.set(bf,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,gc.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,gc.readKey)(e,t,r)}},Pf={encoding:"binary",keyEncoder:AL},sR=(0,TL.convertToMS)((0,yp.get)(U.LOGGING_AUDITRETENTION))||86400*3,zJ=1e3,aR=new Float64Array(1),RL=new Uint8Array(aR.buffer),iR=1e4,_L=!1;a(bp,"openAuditStore");a(Op,"removeAuditEntry");a(hL,"updateLastRemoved");a(QJ,"getLastRemoved");a(jJ,"setAuditRetention");Rp=16,If=32,mL=1,oR=2,pL=3,EL=4,gL=5,SL=6,fp=14,JJ=15,Np=11,pc=512,Ec=1024,Of=2048,Nf=4096,_n=8192,yL={put:mL|Rp,[mL]:"put",delete:oR,[oR]:"delete",message:pL|Rp,[pL]:"message",invalidate:EL|If,[EL]:"invalidate",patch:gL|If,[gL]:"patch",relocate:SL,[SL]:"relocate"},bL={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(Xl,"createAuditEntry");a(XJ,"readAction");a(Nt,"readAuditEntry");Sc=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 uR(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=wL,ZJ(e.primaryStore,e.auditStore)):(c=NL,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{IL(NL[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=Wl(t);let f=new lR(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 IL(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),CL(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=Nt(s),o=e[i.tableId];if(!o)continue;let c=i.recordId,l=Wl(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,cR.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,cR.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 ZJ(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=wL[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{IL(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function CL(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function PL(e){return e.nextTransaction||(uR({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),CL(e)),e.nextTransaction}var cR,NL,wL,lR,dR=be(()=>{cR=M(j());ql();zl();ro();NL=Object.create(null),wL=Object.create(null);a(uR,"addSubscription");lR=class extends Dn{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(IL,"notifyFromTransactionData");a(ZJ,"listenToCommits");a(CL,"nextTransaction");a(PL,"whenNextTransaction")});var LL=P((dRe,DL)=>{"use strict";var fR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};DL.exports=fR});var vL=P((_Re,ML)=>{"use strict";var _R=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};ML.exports=_R});var Df=P((mRe,xL)=>{"use strict";var UL=le(),e4=(k(),D($)),{RecordEncoder:t4}=(Zl(),D(iL));UL.initSync();var r4=UL.get(e4.CONFIG_PARAMS.STORAGE_CACHING)!==!1,hR=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:t4})}};xL.exports=hR});var Lf=P((ERe,BL)=>{"use strict";var vn=le(),us=(k(),D($));vn.initSync();var wp=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=vn.get(us.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||vn.get(us.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||vn.get(us.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",vn.get(us.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=vn.get(us.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),vn.get(us.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=vn.get(us.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),vn.get(us.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=vn.get(us.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),vn.get(us.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=vn.get(us.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=vn.get(us.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};BL.exports=wp;wp.MAX_DBS=1e4});var ut=P((SRe,WL)=>{"use strict";var pR=require("lmdb"),Bs=require("fs-extra"),Un=require("path"),Ip=an(),FL=j(),hn=Pn().LMDB_ERRORS_ENUM,Cp=vL(),ER=Df(),GL=Lf(),na=Ut(),HL=(k(),D($)),{table:n4,resetDatabases:s4}=(ve(),D(it)),kL=le(),Hs=na.INTERNAL_DBIS_NAME,qL=na.DBI_DEFINITION_NAME,i4="data.mdb",o4="lock.mdb",Mf=".mdb",a4="-lock",mR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=ds(t,r),this.key_type=this.dbi[na.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[na.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new pR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Pp(e,t){if(e===void 0)throw new Error(hn.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(hn.ENV_NAME_REQUIRED)}a(Pp,"pathEnvNameValidation");async function gR(e,t,r=!0){try{await Bs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(hn.INVALID_BASE_PATH):n}try{let n=Un.join(e,t+Mf);return await Bs.access(n,Bs.constants.R_OK|Bs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Bs.access(Un.join(e,t,i4),Bs.constants.R_OK|Bs.constants.F_OK),Un.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(hn.INVALID_ENVIRONMENT)}else throw new Error(hn.INVALID_ENVIRONMENT);throw n}}a(gR,"validateEnvironmentPath");function Dp(e,t){if(Ip.validateEnv(e),t===void 0)throw new Error(hn.DBI_NAME_REQUIRED)}a(Dp,"validateEnvDBIName");async function c4(e,t,r=!1,n=!1){Pp(e,t);let s=Un.basename(e);t=t.toString();let i=kL.get(HL.CONFIG_PARAMS.DATABASES);i||kL.setProperty(HL.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await gR(e,t,n),$L(e,t,r)}catch(o){if(o.message===hn.INVALID_ENVIRONMENT){let c=Un.join(e,t);await Bs.mkdirp(n?c:e);let l=new GL(n?c:c+Mf,!1),u=pR.open(l);u.dbis=Object.create(null);let f=new ER(!1);u.openDB(Hs,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=SR(e,t,r);return u[na.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(c4,"createEnvironment");async function l4(e,t,r,n=!0){Pp(e,t),t=t.toString();let s=Un.join(e,t);return n4({table:t,database:Un.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(l4,"copyEnvironment");async function $L(e,t,r=!1){Pp(e,t),t=t.toString();let n=SR(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 gR(e,t),i=Un.join(e,t+Mf),o=s!=i,c=new GL(s,o),l=pR.open(c);l.dbis=Object.create(null);let u=KL(l);for(let f=0;f<u.length;f++)ds(l,u[f]);return l[na.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a($L,"openEnvironment");async function u4(e,t,r=!1){Pp(e,t),t=t.toString();let n=Un.join(e,t+Mf),s=await gR(e,t);if(global.lmdb_map!==void 0){let i=SR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await VL(o),delete global.lmdb_map[i]}}await Bs.remove(s),await Bs.remove(s===n?s+a4:Un.join(Un.dirname(s),o4))}a(u4,"deleteEnvironment");async function VL(e){Ip.validateEnv(e);let t=e[na.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(VL,"closeEnvironment");function SR(e,t,r=!1){let s=`${Un.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(SR,"getCachedEnvironmentName");function d4(e){Ip.validateEnv(e);let t=Object.create(null),r=ds(e,Hs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Hs)try{t[n]=Object.assign(new Cp,s)}catch{FL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(d4,"listDBIDefinitions");function KL(e){Ip.validateEnv(e);let t=[],r=ds(e,Hs);for(let{key:n}of r.getRange({start:!1}))n!==Hs&&t.push(n);return t}a(KL,"listDBIs");function f4(e,t){let n=ds(e,Hs).getEntry(t),s=new Cp;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{FL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(f4,"getDBIDefinition");function YL(e,t,r,n=!r){if(Dp(e,t),t=t.toString(),t===Hs)throw new Error(hn.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return ds(e,t)}catch(s){if(s.message===hn.DBI_DOES_NOT_EXIST){let i=new ER(r,n===!0),o=e.openDB(t,i),c=new Cp(r===!0,n);return o[qL]=c,ds(e,Hs).putSync(t,c),e.dbis[t]=o,o}throw s}}a(YL,"createDBI");function ds(e,t){if(Dp(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Hs?r=f4(e,t):r=new Cp,r===void 0)throw new Error(hn.DBI_DOES_NOT_EXIST);let n;try{let s=new ER(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(hn.DBI_DOES_NOT_EXIST):s}return n[qL]=r,e.dbis[t]=n,n}a(ds,"openDBI");function _4(e,t){Dp(e,t),t=t.toString();let r=ds(e,t),n=r.getStats();return r[na.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(_4,"statDBI");async function h4(e,t){try{let r=Un.join(e,t+Mf);return(await Bs.stat(r)).size}catch{throw new Error(hn.INVALID_ENVIRONMENT)}}a(h4,"environmentDataSize");function m4(e,t){if(Dp(e,t),t=t.toString(),t===Hs)throw new Error(hn.CANNOT_DROP_INTERNAL_DBIS_NAME);ds(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],ds(e,Hs).removeSync(t)}a(m4,"dropDBI");function p4(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{ds(e,i)}catch(o){if(o.message===hn.DBI_DOES_NOT_EXIST)YL(e,i,i!==t,i===t),n=!0;else throw o}}n&&s4()}a(p4,"initializeDBIs");WL.exports={openDBI:ds,openEnvironment:$L,createEnvironment:c4,listDBIs:KL,listDBIDefinitions:d4,createDBI:YL,dropDBI:m4,statDBI:_4,deleteEnvironment:u4,initializeDBIs:p4,TransactionCursor:mR,environmentDataSize:h4,copyEnvironment:l4,closeEnvironment:VL}});var jL=P((ARe,QL)=>{"use strict";var TR=ut(),E4=j(),zL=Pn().LMDB_ERRORS_ENUM;QL.exports=g4;async function g4(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 TR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==zL.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await TR.closeEnvironment(global.lmdb_map[n]),await TR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==zL.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){E4.error(t)}}a(g4,"cleanLMDBMap")});var no=P((yRe,S4)=>{S4.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 lM=P((ORe,cM)=>{"use strict";var AR=require("recursive-iterator"),T4=require("alasql"),RR=require("clone"),JL=ae(),{handleHDBError:XL,hdb_errors:A4}=me(),{HDB_ERROR_MSGS:ZL,HTTP_STATUS_CODES:eM}=A4,{getDatabases:R4}=(ve(),D(it)),y4=["DISTINCT_ARRAY"],tM=Symbol("validateTables"),yR=Symbol("validateTable"),bRe=Symbol("getAllColumns"),rM=Symbol("validateAllColumns"),Lp=Symbol("findColumn"),nM=Symbol("validateOrderBy"),vf=Symbol("validateSegment"),bR=Symbol("validateColumn"),sM=Symbol("setColumnsForTable"),iM=Symbol("checkColumnsForAsterisk"),oM=Symbol("validateGroupBy"),aM=Symbol("hasColumns"),OR=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[tM](),this[iM](),this[rM]()}[tM](){if(this[aM]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[yR](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[yR](t.table)})}}[aM](){let t=!1,r=new AR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[yR](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=R4();if(!r[t.databaseid])throw XL(new Error,ZL.SCHEMA_NOT_FOUND(t.databaseid),eM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw XL(new Error,ZL.TABLE_NOT_FOUND(t.databaseid,t.tableid),eM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=RR(s);i.table=RR(t),this.attributes.push(i)})}[Lp](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)}[iM](){let t=new AR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[sM](r.tableid)}[sM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new T4.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[rM](){this[vf](this.statement.columns,!1),this[vf](this.statement.joins,!1),this[vf](this.statement.where,!1),this[oM](this.statement.group,!1),this[vf](this.statement.order,!0)}[vf](t,r){if(!t)return;let n=new AR(t),s=[];for(let{node:i,path:o}of n)!JL.isEmpty(i)&&!JL.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[nM](i):s.push(this[bR](i)));return s}[oM](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&y4.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=RR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Lp](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[Lp](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`}[nM](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[bR](t)}[bR](t){let r=this[Lp](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]}};cM.exports=OR});var dM=P((wRe,uM)=>{"use strict";var NR=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")}};uM.exports=NR});var _M=P((CRe,fM)=>{"use strict";var wR=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};fM.exports=wR});var mM=P((DRe,hM)=>{"use strict";var IR=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}};hM.exports=IR});var EM=P((MRe,pM)=>{"use strict";var CR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};pM.exports=CR});var Ac=P((HRe,TM)=>{"use strict";var b4=ut(),O4=_M(),N4=mM(),w4=EM(),pi=an(),Uf=Pn().LMDB_ERRORS_ENUM,I4=Ut(),so=(k(),D($)),C4=ae(),P4=require("uuid"),URe=require("lmdb"),{handleHDBError:D4,hdb_errors:L4}=me(),{OVERFLOW_MARKER:xRe,MAX_SEARCH_KEY_LENGTH:BRe}=I4,gM=le();gM.initSync();var Mp=gM.get(so.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),PR=so.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Tc=so.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function M4(e,t,r,n,s=pi.getNextMonotonicTime()){vR(e,t,r,n),DR(e,t,r);let i=new O4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];SM(u,!0,s);let f=v4(e,t,r,u),d=u[t];o.push(f),c.push(d)}return LR(o,c,n,i,s)}a(M4,"insertRecords");function v4(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][so.FUNC_VAL],n[o]=c)}let l=pi.getIndexedValues(c),u=e.dbis[o];if(l){Mp&&u.prefetch(l.map(f=>({key:f,value:s})),vp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}Mp&&e.dbis[t].prefetch([s],vp),e.dbis[t].put(s,n,n[Tc])})}a(v4,"insertRecord");function U4(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(U4,"removeSkippedRecords");function SM(e,t,r){let n=r>0;(n||!Number.isInteger(e[Tc]))&&(e[Tc]=r||(r=pi.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[PR]))&&(e[PR]=r||pi.getNextMonotonicTime()):delete e[PR]}a(SM,"setTimestamps");function DR(e,t,r){r.indexOf(so.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(so.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(so.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(so.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),b4.initializeDBIs(e,t,r)}a(DR,"initializeTransaction");async function x4(e,t,r,n,s=pi.getNextMonotonicTime()){vR(e,t,r,n),DR(e,t,r);let i=new N4,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let f=n[u],d=f[t],_;try{_=MR(e,t,f,d,i,!0,s)}catch{i.skipped_hashes.push(d),o.push(u);continue}c.push(_),l.push(d)}return LR(c,l,n,i,s,o)}a(x4,"updateRecords");async function B4(e,t,r,n,s=pi.getNextMonotonicTime()){try{vR(e,t,r,n)}catch(l){throw D4(l,l.message,L4.HTTP_STATUS_CODES.BAD_REQUEST)}DR(e,t,r);let i=new w4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;C4.isEmpty(u[t])?(f=P4.v4(),u[t]=f):f=u[t];let d=MR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return LR(o,c,n,i,s)}a(B4,"upsertRecords");async function LR(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||pi.getNextMonotonicTime(),U4(r,i),n}a(LR,"finalizeWrite");function MR(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(SM(r,!f,o),Number.isInteger(r[Tc])&&u[Tc]>r[Tc])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][so.FUNC_VAL],r[m]=S)}if(S===R)continue;let E=pi.getIndexedValues(R);if(E){Mp&&g.prefetch(E.map(T=>({key:T,value:n})),vp);for(let T=0,w=E.length;T<w;T++)g.remove(E[T],n)}if(E=pi.getIndexedValues(S),E){Mp&&g.prefetch(E.map(T=>({key:T,value:n})),vp);for(let T=0,w=E.length;T<w;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[Tc])},"do_put");return l?d=c.ifVersion(n,l.version,_):d=c.ifNoExists(n,_),d.then(h=>h?!0:MR(e,t,r,n,s,i,o))}a(MR,"updateUpsertRecord");function H4(e,t,r){if(pi.validateEnv(e),t===void 0)throw new Error(Uf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Uf.WRITE_ATTRIBUTES_REQUIRED):new Error(Uf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(H4,"validateBasic");function vR(e,t,r,n){if(H4(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Uf.RECORDS_REQUIRED):new Error(Uf.RECORDS_MUST_BE_ARRAY)}a(vR,"validateWrite");function vp(){}a(vp,"noop");TM.exports={insertRecords:M4,updateRecords:x4,upsertRecords:B4}});var rt=P((FRe,AM)=>{"use strict";var mn=require("validate.js");mn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||mn.validators.type.checks[t](e)?null:` must be a '${t}' value`};mn.validators.type.checks={Object:a(function(e){return mn.isObject(e)&&!mn.isArray(e)},"Object"),Array:mn.isArray,Integer:mn.isInteger,Number:mn.isNumber,String:mn.isString,Date:mn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};mn.validators.hasValidFileExt=function(e,t){return mn.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};AM.exports={validateObject:k4,validateObjectAsync:F4,validateBySchema:G4};function k4(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=mn(e,t,{format:"flat"});return r?new Error(r):null}a(k4,"validateObject");async function F4(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await mn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(F4,"validateObjectAsync");function G4(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(G4,"validateBySchema")});var yM=P((qRe,RM)=>{"use strict";var q4=require("uuid"),UR=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||q4.v4(),this.schema_table=`${this.schema}.${this.table}`}};RM.exports=UR});var Up=P((VRe,bM)=>{"use strict";var $4=yM(),xR=class extends $4{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}};bM.exports=xR});var NM=P((YRe,OM)=>{"use strict";OM.exports=K4;var V4="inserted";function K4(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===V4?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(K4,"returnObject")});var xp=P((QRe,IM)=>{"use strict";var Y4=(k(),D($)),BR=ut(),W4=Ac(),{getSystemSchemaPath:z4,getSchemaPath:Q4}=pt(),zRe=no(),{validateBySchema:j4}=rt(),xf=require("joi"),J4=Up(),X4=NM(),{handleHDBError:Z4,hdb_errors:e3,ClientError:t3}=me(),wM=ae(),{HTTP_STATUS_CODES:r3}=e3,n3="inserted";IM.exports=s3;async function s3(e){let t=j4(e,xf.object({database:xf.string(),schema:xf.string(),table:xf.string().required(),attribute:xf.string().required()}));if(t)throw new t3(t.message);let r=!e.skip_table_check&&wM.checkGlobalSchemaTable(e.schema,e.table);if(r)throw Z4(new Error,r,r3.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=wM.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 J4(e.schema,e.table,e.attribute,e.id);try{let i=await BR.openEnvironment(Q4(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}`);BR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await BR.openEnvironment(z4(),Y4.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await W4.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return X4(n3,c,{records:[s]},l)}catch(i){throw i}}a(s3,"lmdbCreateAttribute")});var gi=P((JRe,DM)=>{"use strict";var PM=ae(),CM=(k(),D($)),tu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Ei=require("joi"),sa={schema_format:{pattern:tu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},i3=Ei.alternatives(Ei.string().min(1).max(sa.schema_length.maximum).pattern(tu).messages({"string.pattern.base":"{:#label} "+sa.schema_format.message}),Ei.number(),Ei.array()).required(),o3=Ei.alternatives(Ei.string().min(1).max(sa.schema_length.maximum).pattern(tu).messages({"string.pattern.base":"{:#label} "+sa.schema_format.message}),Ei.number()),a3=Ei.alternatives(Ei.string().min(1).max(sa.schema_length.maximum).pattern(tu).messages({"string.pattern.base":"{:#label} "+sa.schema_format.message}),Ei.number()).required();function c3(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>sa.schema_length.maximum?`'${e}' maximum of 250 characters`:tu.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(c3,"checkValidTable");function l3(e,t){return PM.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(l3,"validateSchemaExists");function u3(e,t){let r=t.state.ancestors[0].schema;return PM.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(u3,"validateTableExists");function d3(e,t){return e.toLowerCase()===CM.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${CM.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(d3,"validateSchemaName");DM.exports={common_validators:sa,schema_regex:tu,hdb_schema_table:i3,validateSchemaExists:l3,validateTableExists:u3,validateSchemaName:d3,checkValidTable:c3,hdb_database:o3,hdb_table:a3}});var kR=P((ZRe,MM)=>{var{hdb_table:f3,hdb_database:LM}=gi(),_3=rt(),HR=require("joi"),h3={undefined:"undefined",null:"null"},m3=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||h3[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"),p3=HR.object({database:LM,schema:LM,table:f3,records:HR.array().items(HR.object().custom(m3)).required()});MM.exports=function(e){return _3.validateBySchema(e,p3)}});var Bf=P((rye,UM)=>{"use strict";var io=ae(),vM=j(),tye=kR(),{getDatabases:E3}=(ve(),D(it)),{ClientError:Rc}=me();UM.exports=g3;function g3(e){if(io.isEmpty(e))throw new Rc("invalid update parameters defined.");if(io.isEmptyOrZeroLength(e.schema))throw new Rc("invalid schema specified.");if(io.isEmptyOrZeroLength(e.table))throw new Rc("invalid table specified.");if(!Array.isArray(e.records))throw new Rc("records must be an array");let t=E3()[e.schema]?.[e.table];if(io.isEmpty(t))throw new Rc(`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&&io.isEmptyOrZeroLength(o[r]))throw vM.error("a valid hash attribute must be provided with update record:",o),new Rc("a valid hash attribute must be provided with update record, check log for more info");if(!io.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw vM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Rc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!io.isEmpty(o[r])&&o[r]!==""&&n.has(io.autoCast(o[r]))&&(o.skip=!0),n.add(io.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(g3,"insertUpdateValidate")});var Bp=P((sye,BM)=>{"use strict";var xM=ae(),S3=(k(),D($)),T3=j(),A3=xp(),R3=Up(),y3=oo(),{SchemaEventMsg:b3}=ks(),O3="already exists in";BM.exports=N3;async function N3(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(N3,"lmdbCheckForNewAttributes");async function w3(e,t,r,n){let s=new R3(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await I3(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(O3))T3.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a(w3,"createNewAttribute");async function I3(e){let t;return t=await A3(e),y3.signalSchemaChange(new b3(process.pid,S3.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(I3,"createAttribute")});var ru=P((oye,HM)=>{"use strict";var FR=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}};HM.exports=FR});var FM=P((cye,kM)=>{"use strict";var C3=ru(),P3=(k(),D($)).OPERATIONS_ENUM,GR=class extends C3{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(P3.INSERT,r,n,s,i),this.records=t}};kM.exports=GR});var qM=P((uye,GM)=>{"use strict";var D3=ru(),L3=(k(),D($)).OPERATIONS_ENUM,qR=class extends D3{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(L3.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};GM.exports=qR});var VM=P((fye,$M)=>{"use strict";var M3=ru(),v3=(k(),D($)).OPERATIONS_ENUM,$R=class extends M3{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(v3.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};$M.exports=$R});var YM=P((hye,KM)=>{"use strict";var U3=ru(),x3=(k(),D($)).OPERATIONS_ENUM,VR=class extends U3{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(x3.DELETE,n,s,t,i),this.original_records=r}};KM.exports=VR});var Hf=P((Eye,jM)=>{"use strict";var pye=require("path"),WM=ut(),B3=FM(),H3=qM(),k3=VM(),F3=YM(),nu=Ut(),zM=ae(),{CONFIG_PARAMS:G3}=(k(),D($)),QM=le();QM.initSync();var Hp=(k(),D($)).OPERATIONS_ENUM,{getTransactionAuditStorePath:q3}=pt();jM.exports=$3;async function $3(e,t){if(QM.get(G3.LOGGING_AUDITLOG)===!1)return;let r=q3(e.schema,e.table),n=await WM.openEnvironment(r,e.table,!0),s=V3(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){WM.initializeDBIs(n,nu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,nu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[nu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[nu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),zM.isEmpty(s.user_name)||n.dbis[nu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[nu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a($3,"writeTransaction");function V3(e,t){let r=zM.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===Hp.INSERT)return new B3(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Hp.UPDATE)return new H3(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Hp.UPSERT)return new k3(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Hp.DELETE)return new F3(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(V3,"createTransactionObject")});var KR=P((Tye,JM)=>{"use strict";var K3=Bf(),Sye=nf(),kf=(k(),D($)),Y3=sf(),W3=Ac().insertRecords,z3=ut(),Q3=j(),j3=Bp(),{getSchemaPath:J3}=pt(),X3=Hf();JM.exports=Z3;async function Z3(e){try{let{schema_table:t,attributes:r}=K3(e);Y3(e,r,t.hash_attribute),e.schema!==kf.SYSTEM_SCHEMA_NAME&&(r.includes(kf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(kf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(kf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(kf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await j3(e.hdb_auth_header,t,r),s=J3(e.schema,e.table),i=await z3.openEnvironment(s,e.table),o=await W3(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await X3(e,o)}catch(c){Q3.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(Z3,"lmdbCreateRecords")});var ev=P((Rye,ZM)=>{"use strict";var XM=(k(),D($)),eX=KR(),tX=nf(),rX=require("fs-extra"),{getSchemaPath:nX}=pt();ZM.exports=sX;async function sX(e){let t=[{name:e.schema,createddate:Date.now()}],r=new tX(XM.SYSTEM_SCHEMA_NAME,XM.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await eX(r),await rX.mkdirp(nX(e.schema))}a(sX,"lmdbCreateSchema")});var rv=P((bye,tv)=>{"use strict";var YR=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}};tv.exports=YR});var ov=P((Cye,iv)=>{"use strict";var nv=ut(),WR=an(),zR=Pn().LMDB_ERRORS_ENUM,iX=Ut(),sv=j(),Nye=ae(),oX=require("lmdb"),aX=rv(),cX=(k(),D($)),{OVERFLOW_MARKER:wye,MAX_SEARCH_KEY_LENGTH:Iye}=iX,lX=cX.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function uX(e,t,r,n){if(WR.validateEnv(e),t===void 0)throw new Error(zR.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(zR.IDS_REQUIRED):new Error(zR.IDS_MUST_BE_ITERABLE);try{let s=nv.listDBIs(e);nv.initializeDBIs(e,t,s);let i=new aX,o,c=[],l=[];for(let _=0,h=r.length;_<h;_++)try{o=r[_];let m=e.dbis[t].get(o);if(!m||n&&m[lX]>n){i.skipped.push(o);continue}let S=e.dbis[t].ifVersion(o,oX.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 w=WR.getIndexedValues(T);if(w)for(let v=0,H=w.length;v<H;v++)E.remove(w[v],o)}catch{sv.warn(`cannot delete from attribute: ${R}, ${T}:${o}`)}}});c.push(S),l.push(o),i.original_records.push(m)}catch(m){sv.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=WR.getNextMonotonicTime(),i}catch(s){throw s}}a(uX,"deleteRecords");iv.exports={deleteRecords:uX}});var Ff=P((Dye,cv)=>{"use strict";var su=ae(),dX=ov(),fX=ut(),{getSchemaPath:_X}=pt(),hX=Hf(),mX=j();cv.exports=pX;async function pX(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(su.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(su.isEmptyOrZeroLength(e.hash_values)&&!su.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];su.isEmpty(l)||e.hash_values.push(l)}}if(su.isEmptyOrZeroLength(e.hash_values))return av([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(su.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=_X(e.schema,e.table),i=await fX.openEnvironment(s,e.table),o=await dX.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await hX(e,o)}catch(c){mX.error(`unable to write transaction due to ${c.message}`)}return av(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(pX,"lmdbDeleteRecords");function av(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(av,"createDeleteResponse")});var jR=P((vye,lv)=>{"use strict";var EX=(k(),D($)),Mye=an();function QR(e,t){let r=Object.create(null);if(t.length===1&&EX.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(QR,"parseRow");function gX(e,t,r,n){let s=QR(r,e);n.push(s)}a(gX,"searchAll");function SX(e,t,r,n){let s=QR(r,e);n[t]=s}a(SX,"searchAllToMap");function TX(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(TX,"iterateDBI");function yc(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(yc,"pushResults");function AX(e,t,r,n,s,i){t.toString().endsWith(e)&&yc(t,r,n,s,i)}a(AX,"endsWith");function RX(e,t,r,n,s,i){t.toString().includes(e)&&yc(t,r,n,s,i)}a(RX,"contains");function yX(e,t,r,n,s,i){t>e&&yc(t,r,n,s,i)}a(yX,"greaterThanCompare");function bX(e,t,r,n,s,i){t>=e&&yc(t,r,n,s,i)}a(bX,"greaterThanEqualCompare");function OX(e,t,r,n,s,i){t<e&&yc(t,r,n,s,i)}a(OX,"lessThanCompare");function NX(e,t,r,n,s,i){t<=e&&yc(t,r,n,s,i)}a(NX,"lessThanEqualCompare");lv.exports={parseRow:QR,searchAll:gX,searchAllToMap:SX,iterateDBI:TX,endsWith:AX,contains:RX,greaterThanCompare:yX,greaterThanEqualCompare:bX,lessThanCompare:OX,lessThanEqualCompare:NX,pushResults:yc}});var iu=P((kye,pv)=>{"use strict";var ia=ut(),xye=j(),xn=an(),kp=Ut(),$t=Pn().LMDB_ERRORS_ENUM,Bye=ae(),wX=(k(),D($)),Fp=jR(),{parseRow:IX}=Fp,Hye=require("lmdb"),{OVERFLOW_MARKER:uv,MAX_SEARCH_KEY_LENGTH:CX}=kp;function dv(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(dv,"iterateFullIndex");function Gf(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(Gf,"iterateRangeBetween");function bc(e,t,r,n){let s=e.database||e,i=ia.openDBI(s,r);i[kp.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&ia.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 fv(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(uv)){if(!s)if(r)s=ia.openDBI(e,r);else{let l=ia.listDBIs(e);for(let u=0,f=l.length;u<f&&(s=ia.openDBI(e,l[u]),!s[kp.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(fv,"getOverflowCheck");function PX(e,t,r,n=!1,s=void 0,i=void 0){if(xn.validateEnv(e),t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);return bc(e,t,t,(o,c,l)=>(Gp(r),r=qf(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>IX(u.value,r))))}a(PX,"searchAll");function DX(e,t,r,n=!1,s=void 0,i=void 0){if(xn.validateEnv(e),t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);Gp(r),r=qf(e.database||e,r);let o=new Map;for(let{key:c,value:l}of dv(e,t,t,n,s,i))o.set(c,Fp.parseRow(l,r));return o}a(DX,"searchAllToMap");function LX(e,t,r=!1,n=void 0,s=void 0){if(xn.validateEnv(e),t===void 0)throw new Error($t.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=dv(e,void 0,t,r,n,s),c=o.transaction,l=fv(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(LX,"iterateDBI");function MX(e,t){if(xn.validateEnv(e),t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);return ia.statDBI(e,t).entryCount}a(MX,"countAll");function vX(e,t,r,n,s=!1,i=void 0,o=void 0){return oa(e,r,n),bc(e,t,r,(c,l,u,f)=>(n=xn.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(vX,"equals");function UX(e,t,r){return oa(e,t,r),ia.openDBI(e,t).getValuesCount(r)}a(UX,"count");function xX(e,t,r,n,s=!1,i=void 0,o=void 0){return oa(e,r,n),bc(e,null,r,(c,l)=>{n=xn.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(xX,"startsWith");function BX(e,t,r,n,s=!1,i=void 0,o=void 0){return _v(e,t,r,n,s,i,o,!0)}a(BX,"endsWith");function _v(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return oa(e,r,n),bc(e,null,r,(l,u,f,d)=>{let _=fv(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(uv)?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[kp.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(_v,"contains");function HX(e,t,r,n,s=!1,i=void 0,o=void 0){oa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Gf(e,t,r,n,l,s,i,o,!0,!1)}a(HX,"greaterThan");function kX(e,t,r,n,s=!1,i=void 0,o=void 0){oa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Gf(e,t,r,n,l,s,i,o,!1,!1)}a(kX,"greaterThanEqual");function FX(e,t,r,n,s=!1,i=void 0,o=void 0){oa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Gf(e,t,r,l,n,s,i,o,!1,!0)}a(FX,"lessThan");function GX(e,t,r,n,s=!1,i=void 0,o=void 0){oa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Gf(e,t,r,l,n,s,i,o,!1,!1)}a(GX,"lessThanEqual");function qX(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(xn.validateEnv(e),r===void 0)throw new Error($t.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error($t.START_VALUE_REQUIRED);if(s===void 0)throw new Error($t.END_VALUE_REQUIRED);if(n=xn.convertKeyValueToWrite(n),s=xn.convertKeyValueToWrite(s),n>s)throw new Error($t.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return Gf(e,t,r,n,s,i,o,c)}a(qX,"between");function $X(e,t,r,n){xn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);if(Gp(r),r=qf(s,r),n===void 0)throw new Error($t.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=Fp.parseRow(c,r)),o}a($X,"searchByHash");function VX(e,t,r){xn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error($t.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(VX,"checkHashExists");function KX(e,t,r,n,s=[]){return mv(e,t,r,n,s),hv(e,t,r,n,s).map(i=>i[1])}a(KX,"batchSearchByHash");function YX(e,t,r,n,s=[]){mv(e,t,r,n,s);let i=new Map;for(let[o,c]of hv(e,t,r,n,s))i.set(o,c);return i}a(YX,"batchSearchByHashToMap");function hv(e,t,r,n,s=[]){return bc(e,t,t,(i,o,c)=>{r=qf(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,Fp.parseRow(f,r)];s.push(u)}).filter(u=>u)})}a(hv,"batchHashSearch");function mv(e,t,r,n,s){if(xn.validateEnv(e),t===void 0)throw new Error($t.HASH_ATTRIBUTE_REQUIRED);if(Gp(r),n==null)throw new Error($t.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error($t.IDS_MUST_BE_ITERABLE)}a(mv,"initializeBatchSearchByHash");function Gp(e){if(!Array.isArray(e))throw e===void 0?new Error($t.FETCH_ATTRIBUTES_REQUIRED):new Error($t.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Gp,"validateFetchAttributes");function oa(e,t,r){if(xn.validateEnv(e),t===void 0)throw new Error($t.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error($t.SEARCH_VALUE_REQUIRED);if(r?.length>CX)throw new Error($t.SEARCH_VALUE_TOO_LARGE)}a(oa,"validateComparisonFunctions");function qf(e,t){return t.length===1&&wX.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=ia.listDBIs(e)),t}a(qf,"setGetWholeRowAttributes");pv.exports={searchAll:PX,searchAllToMap:DX,count:UX,countAll:MX,equals:vX,startsWith:xX,endsWith:BX,contains:_v,searchByHash:$X,setGetWholeRowAttributes:qf,batchSearchByHash:KX,batchSearchByHashToMap:YX,checkHashExists:VX,iterateDBI:LX,greaterThan:HX,greaterThanEqual:kX,lessThan:FX,lessThanEqual:GX,between:qX}});var ou=P((Gye,Av)=>{var Ev=require("lodash"),gv=rt(),He=require("joi"),WX=ae(),{hdb_schema_table:$f,checkValidTable:Sv,hdb_table:Tv,hdb_database:qp}=gi(),{handleHDBError:zX,hdb_errors:QX}=me(),{getDatabases:jX}=(ve(),D(it)),{HTTP_STATUS_CODES:JX}=QX,XX=He.object({database:qp,schema:qp,table:Tv,search_attribute:$f,search_value:He.any().required(),get_attributes:He.array().min(1).items(He.alternatives($f,He.object())).optional(),desc:He.bool(),limit:He.number().integer().min(1),offset:He.number().integer().min(0)}),ZX=He.object({database:qp,schema:qp,table:Tv,operator:He.string().valid("and","or").default("and").lowercase(),offset:He.number().integer().min(0),limit:He.number().integer().min(1),get_attributes:He.array().min(1).items(He.alternatives($f,He.object())).optional(),sort:He.object({attribute:He.alternatives($f,He.array().min(1)),descending:He.bool().optional()}).optional(),conditions:He.array().min(1).items(He.alternatives(He.object({operator:He.string().valid("and","or").default("and").lowercase(),conditions:He.array()}),He.object({search_attribute:He.alternatives($f,He.array().min(1)),search_type:He.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:He.when("search_type",{switch:[{is:"equals",then:He.any()},{is:"between",then:He.array().items(He.alternatives([He.string(),He.number()])).length(2)}],otherwise:He.alternatives(He.string(),He.number())}).required()}))).required()});Av.exports=function(e,t){let r=null;switch(t){case"value":r=gv.validateBySchema(e,XX);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(Sv("database",e.schema)),i(Sv("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=gv.validateBySchema(e,ZX);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=WX.checkGlobalSchemaTable(e.schema,e.table);if(s)return zX(new Error,s,JX.NOT_FOUND);let o=jX()[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=Ev.filter(c,f=>f!=="*"&&!f.startsWith?.("$")&&f.attribute!=="*"&&!Array.isArray(f)&&!f.name&&!Ev.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 JR=P(($ye,Rv)=>{"use strict";var e6=ut(),t6=ou(),{getSchemaPath:r6}=pt();Rv.exports=n6;function n6(e){let t=t6(e,"hashes");if(t)throw t;let r=r6(e.schema,e.table);return e6.openEnvironment(r,e.table)}a(n6,"initialize")});var XR=P((Kye,yv)=>{"use strict";var s6=iu(),i6=JR();yv.exports=o6;async function o6(e){let t=await i6(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return s6.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(o6,"lmdbGetDataByHash")});var au=P((Wye,bv)=>{"use strict";var ZR=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};bv.exports=ZR});var Nv=P((jye,Ov)=>{"use strict";var Qye=au(),a6=iu(),c6=JR();Ov.exports=l6;async function l6(e){let t=await c6(e),r=global.hdb_schema[e.schema][e.table];return a6.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(l6,"lmdbSearchByHash")});var Fs=P((Xye,wv)=>{"use strict";var ey=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}};wv.exports=ey});var $p=P((ebe,Mv)=>{"use strict";var Vr=iu(),u6=ut(),d6=ae(),ke=Ut(),Oc=(k(),D($)),f6=no(),Iv=Pn().LMDB_ERRORS_ENUM,{getSchemaPath:_6}=pt(),ao=Oc.SEARCH_WILDCARDS;async function h6(e,t,r){let n;e.schema===Oc.SYSTEM_SCHEMA_NAME?n=f6[e.table]:n=global.hdb_schema[e.schema][e.table];let s=Lv(e,n.hash_attribute,r,t);return Pv(e,s,n.hash_attribute,r)}a(h6,"prepSearch");async function Pv(e,t,r,n){let s=_6(e.schema,e.table),i=await u6.openEnvironment(s,e.table),o=Dv(i,e,t,r),c=o.transaction||i;if([ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,ke.SEARCH_TYPES.SEARCH_ALL,ke.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(m6(e,r)===!1){let f=e.search_attribute;if(f===r)return n?Cv(o,()=>!0):o.map(_=>({[r]:_.key}));let d=a(_=>({[r]:_.value,[f]:_.key}),"toObject");return n?Cv(o,d):o.map(d)}let u=e.search_attribute===r?o.map(f=>f.key):o.map(f=>f.value);return n===!0?Vr.batchSearchByHashToMap(c,r,e.get_attributes,u):Vr.batchSearchByHash(c,r,e.get_attributes,u)}a(Pv,"executeSearch");function Dv(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 ke.SEARCH_TYPES.EQUALS:s=Vr.equals(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.CONTAINS:s=Vr.contains(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.ENDS_WITH:case ke.SEARCH_TYPES._ENDS_WITH:s=Vr.endsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.STARTS_WITH:case ke.SEARCH_TYPES._STARTS_WITH:s=Vr.startsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return Vr.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return Vr.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case ke.SEARCH_TYPES.SEARCH_ALL:return Vr.searchAll(e,n,t.get_attributes,o,c,l);case ke.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return Vr.searchAllToMap(e,n,t.get_attributes,o,c,l);case ke.SEARCH_TYPES.BETWEEN:s=Vr.between(e,i,t.search_attribute,t.search_value,t.end_value,o,c,l);break;case ke.SEARCH_TYPES.GREATER_THAN:case ke.SEARCH_TYPES._GREATER_THAN:s=Vr.greaterThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.GREATER_THAN_EQUAL:case ke.SEARCH_TYPES._GREATER_THAN_EQUAL:s=Vr.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.LESS_THAN:case ke.SEARCH_TYPES._LESS_THAN:s=Vr.lessThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case ke.SEARCH_TYPES.LESS_THAN_EQUAL:case ke.SEARCH_TYPES._LESS_THAN_EQUAL:s=Vr.lessThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;default:return Object.create(null)}return s}a(Dv,"searchByType");function Cv(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(Cv,"createMapFromIterable");function m6(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(m6,"checkToFetchMore");function Lv(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),ao.indexOf(s)>-1)return r===!0?ke.SEARCH_TYPES.SEARCH_ALL_TO_MAP:ke.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(ao[0])<0&&s.indexOf(ao[1])<0)return c===!0?r===!0?ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:ke.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:ke.SEARCH_TYPES.EQUALS;if(ao.indexOf(i)>=0&&ao.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),ke.SEARCH_TYPES.CONTAINS;if(ao.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),ke.SEARCH_TYPES.ENDS_WITH;if(ao.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),ke.SEARCH_TYPES.STARTS_WITH;if(s.includes(ao[0])||s.includes(ao[1]))return ke.SEARCH_TYPES.EQUALS;throw new Error(Iv.UNKNOWN_SEARCH_TYPE)}else switch(n){case Oc.VALUE_SEARCH_COMPARATORS.BETWEEN:return ke.SEARCH_TYPES.BETWEEN;case Oc.VALUE_SEARCH_COMPARATORS.GREATER:return ke.SEARCH_TYPES.GREATER_THAN;case Oc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return ke.SEARCH_TYPES.GREATER_THAN_EQUAL;case Oc.VALUE_SEARCH_COMPARATORS.LESS:return ke.SEARCH_TYPES.LESS_THAN;case Oc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return ke.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(Iv.UNKNOWN_SEARCH_TYPE)}}a(Lv,"createSearchTypeFromSearchObject");Mv.exports={executeSearch:Pv,createSearchTypeFromSearchObject:Lv,prepSearch:h6,searchByType:Dv}});var Uv=P((nbe,vv)=>{"use strict";var rbe=Fs(),p6=ou(),E6=ae(),g6=(k(),D($)),S6=$p();vv.exports=T6;function T6(e,t){if(!E6.isEmpty(t)&&g6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=p6(e,"value");if(n)throw n;return S6.prepSearch(e,t,!0)}a(T6,"lmdbGetDataByValue")});var Vf=P((obe,xv)=>{"use strict";var ibe=Fs(),A6=ou(),R6=ae(),y6=(k(),D($)),b6=$p();xv.exports=O6;async function O6(e,t){if(!R6.isEmpty(t)&&y6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=A6(e,"value");if(n)throw n;return b6.prepSearch(e,t,!1)}a(O6,"lmdbSearchByValue")});var Hv=P((lbe,Bv)=>{"use strict";var cbe=Ut(),ty=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}},ry=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},ny=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};Bv.exports={SearchByConditionsObject:ty,SearchCondition:ry,SortAttribute:ny}});var $v=P((_be,qv)=>{"use strict";var dbe=Hv().SearchByConditionsObject,N6=Fs(),w6=ou(),sy=iu(),Vp=Ut(),{Resource:fbe}=(Xo(),D(wA)),Gv=$p(),I6=jR(),C6=require("lodash"),{getSchemaPath:P6}=pt(),kv=ut(),{handleHDBError:D6,hdb_errors:L6}=me(),{HTTP_STATUS_CODES:M6}=L6,v6=1e8;qv.exports=U6;async function U6(e){let t=w6(e,"conditions");if(t)throw D6(t,t.message,M6.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=P6(e.schema,e.table),n=await kv.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)kv.openDBI(n,u.search_attribute);let i=C6.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let f=u.search_type;f===Vp.SEARCH_TYPES.EQUALS?u.estimated_count=sy.count(n,u.search_attribute,u.search_value):f===Vp.SEARCH_TYPES.CONTAINS||f===Vp.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=v6}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await Fv(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(Gv.filterByType),d=f.length,_=sy.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=>I6.parseRow(h,_))}else{for(let d=1;d<i.length;d++){let _=i[d],h=await Fv(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=sy.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(U6,"lmdbSearchByConditions");async function Fv(e,t,r,n){let s=new N6(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===Vp.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,Gv.searchByType(e,s,i,n).map(o=>o.value)}a(Fv,"executeConditionSearch")});var Kf=P((mbe,Vv)=>{"use strict";var x6=(k(),D($)).OPERATIONS_ENUM,iy=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=x6.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};Vv.exports=iy});var oy=P((Ebe,Xv)=>{"use strict";var zv=Fs(),Qv=Kf(),jv=Vf(),Jv=Ff(),pn=(k(),D($)),Kv=ae(),Yv=ut(),{getTransactionAuditStorePath:B6,getSchemaPath:H6}=pt(),Wv=j();Xv.exports=k6;async function k6(e){try{if(Kv.isEmpty(global.hdb_schema[e.schema])||Kv.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await F6(e),await G6(e);let t=H6(e.schema,e.table);try{await Yv.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")Wv.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=B6(e.schema,e.table);await Yv.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")Wv.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(k6,"lmdbDropTable");async function F6(e){let t=new zv(pn.SYSTEM_SCHEMA_NAME,pn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await jv(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 Qv(pn.SYSTEM_SCHEMA_NAME,pn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await Jv(s)}a(F6,"deleteAttributesFromSystem");async function G6(e){let t=new zv(pn.SYSTEM_SCHEMA_NAME,pn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await jv(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 Qv(pn.SYSTEM_SCHEMA_NAME,pn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await Jv(s)}catch(i){throw i}}a(G6,"dropTableFromSystem")});var eU=P((Sbe,Zv)=>{"use strict";var q6=require("fs-extra"),$6=Fs(),V6=au(),K6=Kf(),Y6=oy(),W6=Ff(),z6=XR(),Q6=Vf(),co=(k(),D($)),{getSchemaPath:j6}=pt(),{handleHDBError:J6,hdb_errors:X6}=me(),{HDB_ERROR_MSGS:Z6,HTTP_STATUS_CODES:eZ}=X6;Zv.exports=tZ;async function tZ(e){let t;try{t=await rZ(e.schema);let r=new $6(co.SYSTEM_SCHEMA_NAME,co.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,co.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[co.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await Q6(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await Y6(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new K6(co.SYSTEM_SCHEMA_NAME,co.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await W6(s);let i=j6(t);await q6.remove(i)}catch(r){throw r}}a(tZ,"lmdbDropSchema");async function rZ(e){let t=new V6(co.SYSTEM_SCHEMA_NAME,co.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[co.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await z6(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw J6(new Error,Z6.SCHEMA_NOT_FOUND(e),eZ.NOT_FOUND,void 0,void 0,!0);return n}a(rZ,"validateDropSchema")});var Yf=P((Abe,tU)=>{"use strict";var ay=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};tU.exports=ay});var ly=P((bbe,rU)=>{"use strict";var nZ=require("fs-extra"),Kp=ut(),{getTransactionAuditStorePath:sZ}=pt(),cy=Ut(),ybe=Yf();rU.exports=iZ;async function iZ(e){let t;try{let r=sZ(e.schema,e.table);await nZ.mkdirp(r),t=await Kp.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{Kp.createDBI(t,cy.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),Kp.createDBI(t,cy.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),Kp.createDBI(t,cy.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(iZ,"createTransactionsAuditEnvironment")});var iU=P((wbe,sU)=>{"use strict";var uy=(k(),D($)),nU=ut(),oZ=Ac(),{getSystemSchemaPath:aZ,getSchemaPath:cZ}=pt(),Nbe=no(),lZ=xp(),dy=Up(),uZ=j(),dZ=ly();sU.exports=fZ;async function fZ(e,t){let r=cZ(t.schema,t.table),n=new dy(t.schema,t.table,uy.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new dy(t.schema,t.table,uy.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new dy(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await nU.createEnvironment(r,t.table),e!==void 0){let o=await nU.openEnvironment(aZ(),uy.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await oZ.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 fy(n),await fy(s),await fy(i)}await dZ(t)}catch(o){throw o}}a(fZ,"lmdbCreateTable");async function fy(e){try{await lZ(e)}catch(t){uZ.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(fy,"createAttribute")});var aU=P((Cbe,oU)=>{"use strict";var _Z=Bf(),hZ=sf(),mZ=Bp(),Wf=(k(),D($)),pZ=Ac().updateRecords,EZ=ut(),{getSchemaPath:gZ}=pt(),SZ=Hf(),TZ=j();oU.exports=AZ;async function AZ(e){try{let{schema_table:t,attributes:r}=_Z(e);hZ(e,r,t.hash_attribute),e.schema!==Wf.SYSTEM_SCHEMA_NAME&&(r.includes(Wf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Wf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Wf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Wf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await mZ(e.hdb_auth_header,t,r),s=gZ(e.schema,e.table),i=await EZ.openEnvironment(s,e.table),o=await pZ(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await SZ(e,o)}catch(c){TZ.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(AZ,"lmdbUpdateRecords")});var lU=P((Dbe,cU)=>{"use strict";var RZ=(k(),D($)).OPERATIONS_ENUM,_y=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=RZ.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};cU.exports=_y});var dU=P((vbe,uU)=>{"use strict";var Mbe=lU(),yZ=Bf(),bZ=sf(),OZ=Bp(),zf=(k(),D($)),NZ=Ac().upsertRecords,wZ=ut(),{getSchemaPath:IZ}=pt(),CZ=Hf(),PZ=j(),{handleHDBError:DZ,hdb_errors:LZ}=me();uU.exports=MZ;async function MZ(e){let t;try{t=yZ(e)}catch(l){throw DZ(l,l.message,LZ.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:n}=t;bZ(e,n,r.hash_attribute),e.schema!==zf.SYSTEM_SCHEMA_NAME&&(n.includes(zf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(zf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(zf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(zf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await OZ(e.hdb_auth_header,r,n),i=IZ(e.schema,e.table),o=await wZ.openEnvironment(i,e.table),c=await NZ(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await CZ(e,c)}catch(l){PZ.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(MZ,"lmdbUpsertRecords")});var _U=P((xbe,fU)=>{"use strict";var hy=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};fU.exports=hy});var mU=P((Hbe,hU)=>{"use strict";var my=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}};hU.exports=my});var gU=P((Gbe,EU)=>{"use strict";var py=ut(),{getTransactionAuditStorePath:vZ}=pt(),Fbe=_U(),Qf=Ut(),UZ=ae(),pU=mU(),xZ=require("util").promisify,BZ=xZ(setTimeout),HZ=1e4,kZ=100;EU.exports=FZ;async function FZ(e){let t=vZ(e.schema,e.table),r=await py.openEnvironment(t,e.table,!0),n=py.listDBIs(r);py.initializeDBIs(r,Qf.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new pU;do s=await GZ(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 BZ(kZ);while(s.transactions_deleted>0);return i}a(FZ,"deleteAuditLogsBefore");async function GZ(e,t){let r=new pU;try{let n=e.dbis[Qf.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[Qf.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];UZ.isEmpty(c)||(s=e.dbis[Qf.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[Qf.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>HZ)break}return await s,r}catch(n){throw n}}a(GZ,"deleteTransactions")});var TU=P(($be,SU)=>{"use strict";var Ey=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};SU.exports=Ey});var RU=P((Ybe,AU)=>{"use strict";var qZ=Fs(),$Z=Kf(),Kbe=TU(),Si=(k(),D($)),VZ=ae(),gy=ut(),KZ=no(),YZ=Vf(),WZ=Ff(),{getSchemaPath:zZ}=pt();AU.exports=QZ;async function QZ(e,t=!0){let r;e.schema===Si.SYSTEM_SCHEMA_NAME?r=KZ[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await JZ(e),s=zZ(e.schema,e.table),i=await gy.openEnvironment(s,e.table);return t===!0&&await jZ(e,i,r.hash_attribute),gy.dropDBI(i,e.attribute),n}a(QZ,"lmdbDropAttribute");async function jZ(e,t,r){let n=gy.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(jZ,"removeAttributeFromAllObjects");async function JZ(e){let t=new qZ(Si.SYSTEM_SCHEMA_NAME,Si.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await YZ(t)).filter(o=>o[Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(VZ.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Si.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new $Z(Si.SYSTEM_SCHEMA_NAME,Si.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return WZ(i)}a(JZ,"dropAttributeFromSystem")});var IU=P((Qbe,wU)=>{"use strict";var Sy=ut(),cu=Ut(),zbe=an(),Ty=(k(),D($)),yU=ae(),{getTransactionAuditStorePath:XZ}=pt(),ZZ=iu(),Yp=ru(),e8=j();wU.exports=t8;async function t8(e){let t=XZ(e.schema,e.table),r=await Sy.openEnvironment(t,e.table,!0),n=Sy.listDBIs(r);Sy.initializeDBIs(r,cu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Ty.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return bU(r,e.search_values);case Ty.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,n8(r,e.search_values,s);case Ty.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return r8(r,e.search_values);default:return bU(r)}}a(t8,"readAuditLog");function bU(e,t=[0,Date.now()]){yU.isEmpty(t[0])&&(t[0]=0),yU.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[cu.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 Yp,s))}a(bU,"searchTransactionsByTimestamp");function r8(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[cu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,NU(e,i))}return Object.fromEntries(r)}a(r8,"searchTransactionsByUsername");function n8(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],f=ZZ.equals(e,cu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,cu.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=NU(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,f=n.get(u);OU(l,"records",r,f,o),OU(l,"original_records",r,f,o)}return Object.fromEntries(o)}a(n8,"searchTransactionsByHashValues");function OU(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 Yp(e.operation,e.user_name,i,void 0);d[t]=[c],u.push(d)}}else{let u=new Yp(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(OU,"loopRecords");function NU(e,t){let r=[];try{let n=e.dbis[cu.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 Yp,i);r.push(o)}}catch(i){e8.warn(i)}return r}catch(n){throw n}}a(NU,"batchSearchTransactions")});var PU=P((Zbe,CU)=>{"use strict";var{getSchemaPath:Jbe}=pt(),Xbe=ut(),{database:s8}=(ve(),D(it));CU.exports={writeTransaction:i8};async function i8(e,t,r){return s8({database:e,table:t}).transaction(r)}a(i8,"writeTransaction")});var vU=P((tOe,MU)=>{"use strict";var{getSchemaPath:DU}=pt(),LU=ut();MU.exports={flush:o8,resetReadTxn:a8};async function o8(e,t){return(await LU.openEnvironment(DU(e,t),t.toString())).flushed}a(o8,"flush");async function a8(e,t){try{(await LU.openEnvironment(DU(e,t),t.toString())).resetReadTxn()}catch{}}a(a8,"resetReadTxn")});var HU=P((nOe,BU)=>{"use strict";var{Readable:c8}=require("stream"),{getDatabases:l8}=(ve(),D(it)),{readSync:u8,openSync:d8,createReadStream:UU}=require("fs"),{open:f8}=require("lmdb"),xU=Df(),_8=Lf(),{AUDIT_STORE_OPTIONS:h8}=(ro(),D(OL)),{INTERNAL_DBIS_NAME:m8,AUDIT_STORE_NAME:p8}=Ut();BU.exports=g8;var Ay=32768,E8=100;async function g8(e){let t=e.database||e.schema||"data",r=l8()[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=f8({noSync:!0,maxDbs:_8.MAX_DBS}),_,h=d.openDB(m8,new xU(!1)),m=f.useReadTransaction(),S=0,g=a(async function(E,T){T.encoding="binary",T.encoder=void 0;let w=d.openDB(E,T),v=f.openDB(E,T);for(let{key:H,version:q,value:W}of v.getRange({start:null,transaction:m,versions:v.useVersions}))_=w.put(H,W,q),S++%E8===0&&(await new Promise(te=>setTimeout(te,20)),m.openTimer&&(m.openTimer=0))},"copyDatabase");for(let{key:E,value:T}of f.getRange({transaction:m,start:!1}))if(s.some(w=>E.startsWith?.(w+"/"))){h.put(E,T);let[,w]=E.split("/"),v=!w,H=new xU(!v,v);await g(E,H)}e.include_audit&&await g(p8,{...h8}),await _;let R=UU(d.path);return R.headers=l(),R.on("close",()=>{m.done(),d.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=d8(o.path);return o.transaction(()=>{let u=Buffer.alloc(Ay);u8(c,u,0,Ay),o.resetReadTxn();let f=o.useReadTransaction();f.renew();let d=UU(null,{fd:c,start:Ay}),_=new c8.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(g8,"getBackup")});var GU=P((iOe,FU)=>{"use strict";var S8=j(),{handleHDBError:T8}=me(),A8=dM(),R8=xp(),y8=KR(),b8=ev(),O8=Ff(),N8=XR(),w8=Nv(),I8=Uv(),C8=Vf(),P8=$v(),D8=eU(),L8=iU(),M8=aU(),v8=dU(),U8=gU(),x8=oy(),B8=RU(),H8=IU(),k8=PU(),kU=vU(),F8=HU(),Ry=class extends A8{static{a(this,"LMDBBridge")}async searchByConditions(t){return P8(t)}async getDataByHash(t){return await N8(t)}async searchByHash(t){return await w8(t)}async getDataByValue(t,r){return await I8(t,r)}async searchByValue(t){return await C8(t)}async createSchema(t){return await b8(t)}async dropSchema(t){return await D8(t)}async createTable(t,r){return await L8(t,r)}async dropTable(t){return await x8(t)}async createAttribute(t){return await R8(t)}async createRecords(t){return await y8(t)}async updateRecords(t){return await M8(t)}async upsertRecords(t){try{return await v8(t)}catch(r){throw T8(r,null,null,S8.ERR,r)}}async deleteRecords(t){return await O8(t)}async dropAttribute(t){return await B8(t)}async deleteAuditLogsBefore(t){return await U8(t)}async readAuditLog(t){return await H8(t)}writeTransaction(t,r,n){return k8.writeTransaction(t,r,n)}flush(t,r){return kU.flush(t,r)}resetReadTxn(t,r){return kU.resetReadTxn(t,r)}getBackup(t){return F8(t)}};FU.exports=Ry});function En(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function jp(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 Bn.ClientError(`${l} must be a string, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be a string, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be a number, attempt to assign ${_}`);En(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 Bn.ClientError(`${l} must be an integer between -2147483648 and 2147483647, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be a number, attempt to assign ${d}`);En(this)[l]=d},"set");break;case"Boolean":u=a(function(d){if(!(typeof d=="boolean"||d==null&&c.nullable!==!1))throw new Bn.ClientError(`${l} must be a boolean, attempt to assign ${d}`);En(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 Bn.ClientError(`${l} must be a Date, attempt to assign ${d}`);En(this)[l]=d},"set");break;case"Bytes":u=a(function(d){if(!(d instanceof Uint8Array||d==null&&c.nullable!==!1))throw new Bn.ClientError(`${l} must be a Buffer or Uint8Array, attempt to assign ${d}`);En(this)[l]=d},"set");break;case"Blob":u=a(function(d){if(!(d instanceof mi||d==null&&c.nullable!==!1))throw new Bn.ClientError(`${l} must be a Blob, attempt to assign ${d}`);En(this)[l]=d},"set");break;case"Any":case void 0:u=a(function(d){En(this)[l]=d},"set");break;default:u=a(function(d){if(!(typeof d=="object"||d==null&&c.nullable!==!1))throw new Bn.ClientError(`${l} must be an object, attempt to assign ${d}`);En(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=yy(_,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 Bn.ClientError("Can not add a property to a sealed table schema");En(this)[c]=l}),i("deleteProperty",function(c){En(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,$U);break}o=c}while(o&&o!==$U)}function yy(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends jf{static{a(this,"TrackedObject")}},jp(r,t)),new r(e)):new jf(e);case Array:let n=new zp(e.length,e);for(let s=0,i=e.length;s<i;s++){let o=e[s];o&&typeof o=="object"&&(o=yy(o,t?.elements)),n[s]=o}return n;default:return e}}function Jp(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=Jp(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 wc(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=wc(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=XA[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=wc(s);r[n]=s}if(!Array.isArray(e))for(let n in e)G8.call(e,n)&&(r||(r={...e.getRecord?.()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?.()??e}function Wp(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[Nc]||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(Wp(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(Wp(s))return!0}else return!0}else return!0}}return!1}var Bn,qU,$U,jf,G8,Nc,zp,Qp,by=be(()=>{Bn=M(me());Ep();cs();a(En,"getChanges");a(jp,"assignTrackedAccessors");qU=Object.prototype,$U=new Proxy({},{get(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(qU[t])return qU[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=yy(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}});a(yy,"trackObject");jf=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}};jp(jf,{});a(Jp,"collapseData");G8=Object.prototype.hasOwnProperty;a(wc,"updateAndFreeze");a(Wp,"hasChanges");Nc=Symbol.for("has-array-changes"),zp=class extends Array{static{a(this,"TrackedArray")}#e;[Nc];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[Nc]=!0,super.splice(...t)}push(...t){return this[Nc]=!0,super.push(...t)}pop(){return this[Nc]=!0,super.pop()}unshift(...t){return this[Nc]=!0,super.unshift(...t)}shift(){return this[Nc]=!0,super.shift()}};zp.prototype.constructor=Array;Qp=class{constructor(t){this.value=t}static{a(this,"Addition")}__op__="add";update(t){return(+t||0)+this.value}}});var JU={};Ue(JU,{ResourceBridge:()=>wy});function Iy({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 KU(e,t){let r=Ti(e),n=Iy(e,r);if(!r)throw new Gs.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;Ot(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&&Jp(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 Ti(e){let t=e.database||e.schema||$8,r=je()[t];if(!r)throw(0,Gs.handleHDBError)(new Error,q8.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function YU(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*WU(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 zU,Xp,Gs,QU,Oy,Ny,jU,q8,$8,V8,K8,VU,wy,XU=be(()=>{"use strict";zU=M(GU()),Xp=M(ou()),Gs=M(me());ve();QU=M(Bf());k();Oy=M(oo()),Ny=M(ks()),jU=M(ae());sc();by();({HDB_ERROR_MSGS:q8}=Gs.hdb_errors),$8="data",V8=1e4,K8=10,wy=class extends zU.default{static{a(this,"ResourceBridge")}constructor(t){super(t),VU=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,Xp.default)(t,"conditions");if(r)throw(0,Gs.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=Ti(t);if(!n)throw new Gs.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:Iy(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 Gs.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}]}dt({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await Ti(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=Ti(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){Ti(t).dropTable()}createSchema(t){return lu({database:t.schema,table:null}),Oy.signalSchemaChange(new Ny.SchemaEventMsg(process.pid,Gt.CREATE_SCHEMA,t.schema))}async dropSchema(t){await Cy(t.schema),Oy.signalSchemaChange(new Ny.SchemaEventMsg(process.pid,Gt.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,VU.upsertRecords(t)}async upsertRecords(t){let{schema_table:r,attributes:n}=(0,QU.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),Ot(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}_&&(_=Jp(_));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),Ot(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 YU(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=je()[t.schema][t.table];if(!r.createdTimeProperty)throw new Gs.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:Om.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,jU.async_set_timeout)(K8),l=[],s=!0},"chunkDelete");for await(let f of n)l.push(f[r.primaryKey]),c++,c%V8===0&&await u();return l.length>0&&await u(),s?YU(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,Xp.default)(t,"hashes");if(r)throw r;return KU(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of KU(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&oA[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,Xp.default)(t,"value");if(n)throw n;let s=Ti(t);if(!s)throw new Gs.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===Om.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:Iy(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=Ti(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){Ti({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return Ti(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=Ti(t),n={};switch(t.search_type){case Nm.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 Nm.USERNAME:let s=t.search_values;for await(let i of WU(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n;default:return WU(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(Iy,"getSelect");a(KU,"getRecords");a(Ti,"getTable");a(YU,"createDeleteResponse");a(WU,"groupRecordsInHistory")});var Hn=P((pOe,ZU)=>{"use strict";var{ResourceBridge:Y8}=(XU(),D(JU)),W8=le();W8.initSync();var Zp;function z8(){return Zp||(Zp=new Y8,Zp)}a(z8,"getBridge");ZU.exports=z8()});var n0=P((gOe,r0)=>{"use strict";var e0=require("lodash"),Jf=require("mathjs"),Q8=require("jsonata"),t0=ae();r0.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?e0.uniqWith(e,e0.isEqual):e,"distinct_array"),searchJSON:j8,mad:Xf.bind(null,Jf.mad),mean:Xf.bind(null,Jf.mean),mode:Xf.bind(null,Jf.mode),prod:Xf.bind(null,Jf.prod),median:Xf.bind(null,Jf.median)};function Xf(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(Xf,"aggregateFunction");function j8(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(t0.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),t0.isEmpty(this.__ala__.res[r])){let n=Q8(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(j8,"searchJSON")});var i0=P((TOe,s0)=>{"use strict";var jt=require("moment"),Py="YYYY-MM-DDTHH:mm:ss.SSSZZ";jt.suppressDeprecationWarnings=!0;s0.exports={current_date:a(()=>jt().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>jt().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return jt(e).utc().format("YYYY");case"month":return jt(e).utc().format("MM");case"day":return jt(e).utc().format("DD");case"hour":return jt(e).utc().format("HH");case"minute":return jt(e).utc().format("mm");case"second":return jt(e).utc().format("ss");case"millisecond":return jt(e).utc().format("SSS");default:break}},"extract"),date:a(e=>jt(e).utc().format(Py),"date"),date_format:a((e,t)=>jt(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>jt(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>jt(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=jt(e).utc(),s=jt(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>jt().utc().valueOf(),"now"),get_server_time:a(()=>jt().format(Py),"get_server_time"),offset_utc:a((e,t)=>jt(e).utc().utcOffset(t).format(Py),"offset_utc")}});var l0=P((ROe,c0)=>{"use strict";var J8=require("@turf/area"),X8=require("@turf/length"),Z8=require("@turf/circle"),e5=require("@turf/difference"),t5=require("@turf/distance"),r5=require("@turf/boolean-contains"),n5=require("@turf/boolean-equal"),s5=require("@turf/boolean-disjoint"),i5=require("@turf/helpers"),o0=(k(),D($)),$e=ae(),lo=j();c0.exports={geoArea:o5,geoLength:a5,geoCircle:c5,geoDifference:l5,geoDistance:a0,geoNear:u5,geoContains:d5,geoEqual:f5,geoCrosses:_5,geoConvert:h5};function o5(e){if($e.isEmpty(e))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e));try{return J8.default(e)}catch(t){return lo.trace(t,e),NaN}}a(o5,"geoArea");function a5(e,t){if($e.isEmpty(e))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e));try{return X8.default(e,{units:t||"kilometers"})}catch(r){return lo.trace(r,e),NaN}}a(a5,"geoLength");function c5(e,t,r){if($e.isEmpty(e))return NaN;if($e.isEmpty(t))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e));try{return Z8.default(e,t,{units:r||"kilometers"})}catch(n){return lo.trace(n,e,t),NaN}}a(c5,"geoCircle");function l5(e,t){if($e.isEmpty(e))return NaN;if($e.isEmpty(t))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return e5(e,t)}catch(r){return lo.trace(r,e,t),NaN}}a(l5,"geoDifference");function a0(e,t,r){if($e.isEmpty(e))return NaN;if($e.isEmpty(t))return NaN;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return t5.default(e,t,{units:r||"kilometers"})}catch(n){return lo.trace(n,e,t),NaN}}a(a0,"geoDistance");function u5(e,t,r,n){if($e.isEmpty(e)||$e.isEmpty(t))return!1;if($e.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return a0(e,t,n)<=r}catch(s){return lo.trace(s,e,t),!1}}a(u5,"geoNear");function d5(e,t){if($e.isEmpty(e)||$e.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return r5.default(e,t)}catch(r){return lo.trace(r,e,t),!1}}a(d5,"geoContains");function f5(e,t){if($e.isEmpty(e)||$e.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return n5.default(e,t)}catch(r){return lo.trace(r,e,t),!1}}a(f5,"geoEqual");function _5(e,t){if($e.isEmpty(e)||$e.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=$e.autoCastJSON(e)),typeof t=="string"&&(t=$e.autoCastJSON(t));try{return!s5.default(e,t)}catch(r){return lo.trace(r,e,t),!1}}a(_5,"geoCrosses");function h5(e,t,r){if($e.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if($e.isEmpty(t))throw new Error("geo_type is required");if($e.isEmpty(o0.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(o0.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=$e.autoCastJSON(e)),i5[t](e,r)}a(h5,"geoConvert")});var eE=P((bOe,u0)=>{var Ic=n0(),kn=i0(),Ai=l0();u0.exports=e=>{e.aggr.mad=e.aggr.MAD=Ic.mad,e.aggr.mean=e.aggr.MEAN=Ic.mean,e.aggr.mode=e.aggr.MODE=Ic.mode,e.aggr.prod=e.aggr.PROD=Ic.prod,e.aggr.median=e.aggr.MEDIAN=Ic.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Ic.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Ic.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=kn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=kn.current_time,e.fn.extract=e.fn.EXTRACT=kn.extract,e.fn.date=e.fn.DATE=kn.date,e.fn.date_format=e.fn.DATE_FORMAT=kn.date_format,e.fn.date_add=e.fn.DATE_ADD=kn.date_add,e.fn.date_sub=e.fn.DATE_SUB=kn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=kn.date_diff,e.fn.now=e.fn.NOW=kn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=kn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=kn.get_server_time,e.fn.getdate=e.fn.GETDATE=kn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=kn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=Ai.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=Ai.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=Ai.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=Ai.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=Ai.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=Ai.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=Ai.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=Ai.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=Ai.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=Ai.geoNear}});var h0=P((OOe,_0)=>{"use strict";var Zf=require("lodash"),gn=require("alasql");gn.options.cache=!1;var m5=eE(),d0=require("clone"),tE=require("recursive-iterator"),Be=j(),Je=ae(),uu=Hn(),p5=(k(),D($)),{hdb_errors:E5}=me(),{getDatabases:f0}=(ve(),D(it)),g5="IS NULL",qs="There was a problem performing this search. Please check the logs and try again.";m5(gn);var Dy=class{static{a(this,"SQLSearch")}constructor(t,r){if(Je.isEmpty(t))throw Be.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(),Je.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!Je.isEmptyOrZeroLength(n))return Be.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw Be.error("Error thrown from checkEmptySQL in SQLSearch class method search."),Be.error(n),new Error(qs)}try{let n=await this._getFetchAttributeValues();if(n)return n}catch(n){throw Be.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),Be.error(n),new Error(qs)}if(Object.keys(this.data).length===0)return Be.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(n){throw Be.error("Error thrown from processJoins in SQLSearch class method search."),Be.error(n),new Error(qs)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(n){throw Be.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),Be.error(n),new Error(qs)}try{return t=await this._finalSQL(),t}catch(n){throw Be.error("Error thrown from finalSQL in SQLSearch class method search."),Be.error(n),new Error(qs)}}_getColumns(){let t=new tE(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(d0(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Zf.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=f0()[r.databaseid][r.tableid].primaryKey,this.data[n].__merged_data={},this.data[n].__merged_attributes=[],this.data[n].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(Je.isEmpty(this.statement.where)){Be.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new tE(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!Je.isEmpty(r)&&r.right)if(Je.isNotEmptyAndHasValue(r.right.value)){let n=Je.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new gn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=Je.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new gn.yy.LogicValue({value:i}):n instanceof gn.yy.StringValue&&Je.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new gn.yy.NumValue({value:i}))});if(t){Be.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new tE(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(!Je.isEmpty(p5.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(Je.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(Je.isEmptyOrZeroLength(r.left.columnid)||Je.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(Je.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"=":!Je.isEmpty(r.right.value)||!Je.isEmpty(r.left.value)?n.add(Je.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(Je.isEmptyOrZeroLength(this.all_table_attributes)&&Je.isEmptyOrZeroLength(this.statement.from)&&Je.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&&Zf.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(Je.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);Je.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(Je.isEmptyOrZeroLength(this.all_table_attributes)&&!Je.isEmptyOrZeroLength(this.columns.columns))return t;if(Je.isEmptyOrZeroLength(this.all_table_attributes)&&Je.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await gn.promise(r)}catch(r){throw Be.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),Be.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(d0(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(Je.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(g5)>-1&&this.tables.forEach(s=>{let i={columnid:f0()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=Zf.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),!Je.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!Je.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let f=await uu.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 Be.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),Be.error(f),new Error(qs)}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 uu.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 Be.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),Be.error(f),new Error(qs)}else if(!Je.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!Je.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 uu.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 Be.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),Be.error(f),new Error(qs)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await uu.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 Be.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),Be.error(f),new Error(qs)}}}_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 gn.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 gn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new gn.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 gn.yy.FuncValue:new gn.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 gn.promise(m,t),t=null}catch(h){throw Be.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),Be.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=Zf.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 tE(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=Zf.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 Be.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),Be.error(i),new Error(qs)}}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 uu.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 Be.error("Error thrown from getDataByHash function in SQLSearch class method getData."),Be.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();Be.trace(`Final SQL: ${s}`),n=await gn.promise(s,t),this.has_outer_join&&(n=this._translateUndefinedValues(n)),Be.trace(`Final AlaSQL results data included ${n.length} rows`)}catch(s){throw Be.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),Be.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 Be.error(E5.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),Be.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 uu.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 Be.error("There was an error when processing this SQL operation. Check your logs"),Be.error(o),new Error(qs)}}return Object.values(Object.values(this.data)[0].__merged_data)}};_0.exports=Dy});var Kr=P((wOe,m0)=>{"use strict";var S5=lM();m0.exports={searchByConditions:A5,searchByHash:R5,searchByValue:y5,search:b5};var Ly=Hn(),{transformReq:My}=ae(),T5=h0();async function A5(e){return My(e),Ly.searchByConditions(e)}a(A5,"searchByConditions");async function R5(e){My(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of Ly.searchByHash(e))r&&t.push(r);return t}a(R5,"searchByHash");async function y5(e){My(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of Ly.searchByValue(e))t.push(r);return t}a(y5,"searchByValue");function b5(e,t){try{let r=new S5(e);r.validate(),new T5(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(b5,"search")});var uo=P((COe,S0)=>{"use strict";var e_=require("crypto"),O5=le(),{CONFIG_PARAMS:N5}=(k(),D($)),E0="aes-256-cbc",w5=32,I5=16,vy=64,g0=32,C5=vy+g0,p0=new Map;S0.exports={encrypt:P5,decrypt:D5,createNatsTableStreamName:L5};function P5(e){let t=e_.randomBytes(w5),r=e_.randomBytes(I5),n=e_.createCipheriv(E0,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(P5,"encrypt");function D5(e){let t=e.substr(0,vy),r=e.substr(vy,g0),n=e.substr(C5,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=e_.createDecipheriv(E0,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(D5,"decrypt");function L5(e,t){let r=O5.get(N5.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=p0.get(r);return n||(n=e_.createHash("md5").update(r).digest("hex"),p0.set(r,n)),n}a(L5,"createNatsTableStreamName")});var fo=P((LOe,y0)=>{"use strict";var DOe=Kr(),t_=j(),{validateBySchema:T0}=rt(),Cc=require("joi"),M5=uo(),rE=ae(),{handleHDBError:nE,hdb_errors:v5,ClientError:A0}=me(),{HDB_ERROR_MSGS:sE,HTTP_STATUS_CODES:Uy}=v5,R0=le();R0.initSync();var{getDatabases:xy}=(ve(),D(it)),U5=require("fs-extra"),x5=(k(),D($));y0.exports={describeAll:B5,describeTable:iE,describeSchema:H5};async function B5(e={}){try{let t=rE.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 iE({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 iE({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){t_.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 t_.error("Got an error in describeAll"),t_.error(t),nE(new Error,sE.DESCRIBE_ALL_ERR)}}a(B5,"describeAll");async function iE(e,t){rE.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=T0(e,Cc.object({database:Cc.string(),table:Cc.string().required(),exact_count:Cc.boolean().strict()}));if(i)throw new A0(i.message);let c=xy()[r];if(!c)throw nE(new Error,sE.SCHEMA_NOT_FOUND(e.schema),Uy.NOT_FOUND);let l=c[n];if(!l)throw nE(new Error,sE.TABLE_NOT_FOUND(e.schema,e.table),Uy.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 U5.stat(l.primaryStore.env.path)).size}catch(h){t_.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")),R0.get(x5.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=M5.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){t_.warn(`unable to stat table dbi due to ${h}`)}return _}a(iE,"descTable");async function H5(e){rE.transformReq(e);let t=T0(e,Cc.object({database:Cc.string(),exact_count:Cc.boolean().strict()}));if(t)throw new A0(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 nE(new Error,sE.SCHEMA_NOT_FOUND(e.schema),Uy.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),rE.isEmpty(l)||l.describe){let u=await iE({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(H5,"describeSchema")});var $s=P((xOe,I0)=>{var k5=no(),{callbackify:O0,promisify:F5}=require("util"),{getDatabases:N0}=(ve(),D(it));I0.exports={setSchemaDataToGlobal:b0,getTableSchema:G5,getSystemSchema:q5,setSchemaDataToGlobalAsync:F5(b0)};var w0=fo(),vOe=O0(w0.describeAll),UOe=O0(w0.describeTable);function b0(e){global.hdb_schema=N0(),e&&e()}a(b0,"setSchemaDataToGlobal");function G5(e,t,r){let n=N0()[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(G5,"getTableSchema");function q5(){return k5}a(q5,"getSystemSchema")});var Sn=P((HOe,L0)=>{"use strict";var aE=kR(),Lr=ae(),$5=require("util"),cE=Hn(),V5=$s(),C0=j(),{handleHDBError:Pc,hdb_errors:K5}=me(),{HTTP_STATUS_CODES:Dc}=K5,Y5=$5.promisify(V5.getTableSchema),W5="updated",P0="inserted",D0="upserted";L0.exports={insert:Q5,update:j5,upsert:J5,validation:z5,flush:X5};async function z5(e){if(Lr.isEmpty(e))throw new Error("invalid update parameters defined.");if(Lr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(Lr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await Y5(e.schema,e.table),r=aE(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&&Lr.isEmptyOrZeroLength(c[n]))throw C0.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(!Lr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw C0.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!Lr.isEmpty(c[n])&&c[n]!==""&&s.has(Lr.autoCast(c[n]))&&(c.skip=!0),s.add(Lr.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(z5,"validation");async function Q5(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=aE(e);if(t)throw Pc(new Error,t.message,Dc.BAD_REQUEST);Lr.transformReq(e);let r=Lr.checkSchemaTableExist(e.schema,e.table);if(r)throw Pc(new Error,r,Dc.BAD_REQUEST);let n=await cE.createRecords(e);return oE(P0,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(Q5,"insertData");async function j5(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=aE(e);if(t)throw Pc(new Error,t.message,Dc.BAD_REQUEST);Lr.transformReq(e);let r=Lr.checkSchemaTableExist(e.schema,e.table);if(r)throw Pc(new Error,r,Dc.BAD_REQUEST);let n=await cE.updateRecords(e);return Lr.isEmpty(n.existing_rows)?oE(W5,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):oE(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(j5,"updateData");async function J5(e){if(e.operation!=="upsert")throw Pc(new Error,"invalid operation, must be upsert",Dc.INTERNAL_SERVER_ERROR);let t=aE(e);if(t)throw Pc(new Error,t.message,Dc.BAD_REQUEST);Lr.transformReq(e);let r=Lr.checkSchemaTableExist(e.schema,e.table);if(r)throw Pc(new Error,r,Dc.BAD_REQUEST);let n=await cE.upsertRecords(e);return oE(D0,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(J5,"upsertData");function oE(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===P0?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===D0?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(oE,"returnObject");function X5(e){return Lr.transformReq(e),cE.flush(e.schema,e.table)}a(X5,"flush")});var Hy=P((FOe,U0)=>{var Z5=rt(),By=require("joi"),{hdb_table:e9,hdb_database:M0}=gi(),v0={schema:M0,database:M0,table:e9},t9={date:By.date().iso().required()},r9={timestamp:By.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};U0.exports=function(e,t){let r=t==="timestamp"?{...v0,...r9}:{...v0,...t9},n=By.object(r);return Z5.validateBySchema(e,n)}});var H0=P((GOe,B0)=>{var n9=rt(),ky=require("joi"),{hdb_table:s9,hdb_database:x0}=gi(),i9=ky.object({schema:x0,database:x0,table:s9,hash_values:ky.array().required(),ids:ky.array()});B0.exports=function(e){return n9.validateBySchema(e,i9)}});var $y=P((qOe,k0)=>{"use strict";var Fy=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}},Gy=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}},qy=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};k0.exports={InsertObject:Fy,NoSQLSeachObject:Gy,DeleteResponseObject:qy}});var vc=P((VOe,V0)=>{"use strict";var G0=Hy(),o9=H0(),Lc=ae(),F0=require("moment"),q0=j(),{promisify:a9,callbackify:c9}=require("util"),Mc=(k(),D($)),l9=$s(),Vy=a9(l9.getTableSchema),Ky=Hn(),{DeleteResponseObject:u9}=$y(),{handleHDBError:aa,hdb_errors:d9}=me(),{HDB_ERROR_MSGS:lE,HTTP_STATUS_CODES:ca}=d9,f9="records successfully deleted",_9=c9($0);V0.exports={delete:_9,deleteRecord:$0,deleteFilesBefore:h9,deleteAuditLogsBefore:m9};async function h9(e){let t=G0(e,"date");if(t)throw aa(t,t.message,ca.BAD_REQUEST,void 0,void 0,!0);if(Lc.transformReq(e),!F0(e.date,F0.ISO_8601).isValid())throw aa(new Error,lE.INVALID_DATE,ca.BAD_REQUEST,Mc.LOG_LEVELS.ERROR,lE.INVALID_DATE,!0);let n=Lc.checkSchemaTableExist(e.schema,e.table);if(n)throw aa(new Error,n,ca.NOT_FOUND,Mc.LOG_LEVELS.ERROR,n,!0);let s=await Ky.deleteRecordsBefore(e);if(await Vy(e.schema,e.table),q0.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(h9,"deleteFilesBefore");async function m9(e){let t=G0(e,"timestamp");if(t)throw aa(t,t.message,ca.BAD_REQUEST,void 0,void 0,!0);if(Lc.transformReq(e),isNaN(e.timestamp))throw aa(new Error,lE.INVALID_VALUE("Timestamp"),ca.BAD_REQUEST,Mc.LOG_LEVELS.ERROR,lE.INVALID_VALUE("Timestamp"),!0);let r=Lc.checkSchemaTableExist(e.schema,e.table);if(r)throw aa(new Error,r,ca.NOT_FOUND,Mc.LOG_LEVELS.ERROR,r,!0);let n=await Ky.deleteAuditLogsBefore(e);return await Vy(e.schema,e.table),q0.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(m9,"deleteAuditLogsBefore");async function $0(e){e.ids&&(e.hash_values=e.ids);let t=o9(e);if(t)throw aa(t,t.message,ca.BAD_REQUEST,void 0,void 0,!0);Lc.transformReq(e);let r=Lc.checkSchemaTableExist(e.schema,e.table);if(r)throw aa(new Error,r,ca.NOT_FOUND,Mc.LOG_LEVELS.ERROR,r,!0);try{await Vy(e.schema,e.table);let n=await Ky.deleteRecords(e);return Lc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${f9}`),n}catch(n){if(n.message===Mc.SEARCH_NOT_FOUND_MESSAGE){let s=new u9;return s.message=Mc.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a($0,"deleteRecord")});var uE={};Ue(uE,{HASH_FUNCTION:()=>s_,hash:()=>zy,validate:()=>Qy});function Yy(e=n_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(r_.randomBytes(e)).map(r=>t[r%t.length]).join("")}function zy(e,t=s_[Y0?.toUpperCase()]??"sha256"){return Wy[t](e)}function Qy(e,t,r=s_[Y0?.toUpperCase()]??"sha256"){return e?p9[r](e,t):!1}var r_,du,K0,Y0,n_,W0,s_,Wy,p9,dE=be(()=>{r_=M(require("node:crypto")),du=M(require("argon2")),K0=M(le());k();Y0=(0,K0.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),n_=16,W0=9,s_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(s_||{});a(Yy,"generateSalt");Wy={md5:a((e,t=void 0)=>{t=t??Yy(W0);let r=r_.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??Yy(n_);let r=r_.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=Yy(n_),r=await du.hash(e,{type:du.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},p9={md5:a((e,t)=>{let r=e.slice(0,W0);return e===Wy.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,n_);return e===Wy.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await du.verify(e.slice(n_),t),"argon2id")};a(zy,"hash");a(Qy,"validate")});var Q0=P((zOe,z0)=>{var jy=rt(),Yr={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 E9(e){return Yr.password.presence=!0,Yr.username.presence=!0,Yr.role.presence=!0,Yr.active.presence=!0,jy.validateObject(e,Yr)}a(E9,"addUserValidation");function g9(e){return Yr.password.presence=!1,Yr.username.presence=!0,Yr.role.presence=!1,Yr.active.presence=!1,jy.validateObject(e,Yr)}a(g9,"alterUserValidation");function S9(e){return Yr.password.presence=!1,Yr.username.presence=!0,Yr.role.presence=!1,Yr.active.presence=!1,jy.validateObject(e,Yr)}a(S9,"dropUserValidation");z0.exports={addUserValidation:E9,alterUserValidation:g9,dropUserValidation:S9}});var wt=P((JOe,J0)=>{"use strict";var{platform:jOe}=require("os"),T9="nats-server.zip",Jy="nats-server",A9=process.platform==="win32"?`${Jy}.exe`:Jy,R9=/^[^\s.,*>]+$/,j0="__request__",y9=a(e=>`${e}.${j0}`,"REQUEST_SUBJECT"),b9={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},O9={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},N9={HUB:"hub.pid",LEAF:"leaf.pid"},w9={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},I9={SUCCESS:"success",ERROR:"error"},C9={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},P9={TXN:"txn",MSGID:"msgid"},fu={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},D9={[fu.ERR]:1,[fu.WRN]:2,[fu.INF]:3,[fu.DBG]:4,[fu.TRC]:5},L9={debug:"-D",trace:"-DVV"};J0.exports={NATS_SERVER_ZIP:T9,NATS_SERVER_NAME:Jy,NATS_BINARY_NAME:A9,PID_FILES:N9,NATS_CONFIG_FILES:O9,SERVER_SUFFIX:w9,NATS_TERM_CONSTRAINTS_RX:R9,REQUEST_SUFFIX:j0,UPDATE_REMOTE_RESPONSE_STATUSES:I9,CLUSTER_STATUS_STATUSES:C9,REQUEST_SUBJECT:y9,SUBJECT_PREFIXES:P9,MSG_HEADERS:b9,LOG_LEVELS:fu,LOG_LEVEL_FLAGS:L9,LOG_LEVEL_HIERARCHY:D9}});var Xy=P(X0=>{"use strict";var M9={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
|
`)},v9="certificate.pem",U9="privateKey.pem",x9="caCertificate.pem",B9="natsCertificate.pem",H9="natsCaCertificate.pem",Tt={DEFAULT:"default","DEFAULT-CA":"default-ca",SERVER:"server",CA:"ca","OPERATIONS-API":"operations-api","OPERATIONS-CA":"operations-ca"},k9={tls_certificate:Tt.SERVER,tls_certificateAuthority:Tt.CA,customFunctions_tls_certificate:Tt.SERVER,customFunctions_tls_certificateAuthority:Tt.CA,operationsApi_tls_certificate:Tt["OPERATIONS-API"],operationsApi_tls_certificateAuthority:Tt["OPERATIONS-CA"]},F9={[Tt.SERVER]:2,[Tt.DEFAULT]:1},G9={[Tt["OPERATIONS-API"]]:3,[Tt.SERVER]:2,[Tt.DEFAULT]:1},q9={[Tt["OPERATIONS-API"]]:3,[Tt.SERVER]:2,[Tt.DEFAULT]:1},$9={[Tt["OPERATIONS-CA"]]:3,[Tt.CA]:2,[Tt["DEFAULT-CA"]]:1},V9={[Tt["OPERATIONS-CA"]]:3,[Tt.CA]:2,[Tt["DEFAULT-CA"]]:1},K9={[Tt.CA]:2,[Tt["DEFAULT-CA"]]:1};Object.assign(X0,{CERTIFICATE_PEM_NAME:v9,PRIVATEKEY_PEM_NAME:U9,CA_PEM_NAME:x9,CERT_NAME:Tt,CERT_CONFIG_NAME_MAP:k9,CERT_PREFERENCE_APP:F9,CERT_PREFERENCE_OPS:G9,CERT_PREFERENCE_REP:q9,CA_CERT_PREFERENCE_REP:$9,CA_CERT_PREFERENCE_OPS:V9,CA_CERT_PREFERENCE_APP:K9,CERTIFICATE_VALUES:M9,NATS_CERTIFICATE_PEM_NAME:B9,NATS_CA_PEM_NAME:H9})});var eb=P((tNe,sx)=>{"use strict";var rx=require("fs-extra"),Ee=require("joi"),Y9=require("os"),{boolean:Fe,string:ft,number:Jt,array:la}=Ee.types(),{totalmem:Z0}=require("os"),Uc=require("path"),W9=j(),Zy=ae(),eNe=Xy(),ex=(k(),D($)),z9=rt(),tx="log",Q9="components",j9="Invalid logging.rotation.maxSize unit. Available units are G, M or K",J9="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",X9="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",Z9="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",e7="rootPath config parameter is undefined",Tn=Ee.alternatives([Jt.min(0),ft]).optional().empty(null),fE=Ee.alternatives([la.items(ft,{host:ft.required(),port:Tn},{hostname:ft.required(),port:Tn}).empty(null),la.items(ft)]),Ri,nx=!1;sx.exports={configValidator:t7,routesValidator:a7,route_constraints:fE};function t7(e,t=!1){if(nx=t,Ri=e.rootPath,Zy.isEmpty(Ri))throw e7;let r=Fe.optional(),n=Jt.min(0).max(1e3).empty(null).default(o7),s=ft.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(i_),i=ft.optional().empty(null),o=ft.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),c=Ee.string().empty(null).default(i_),l=Ee.custom(n7).empty(null).default(i_),u=e.clustering?.enabled,f=Ee.object({certificate:i,certificateAuthority:i,privateKey:i}),d;return u===!0?d=Ee.object({enabled:r,hubServer:Ee.object({cluster:Ee.object({name:Ee.required().empty(null),network:Ee.object({port:Tn,routes:fE}).required()}).required(),leafNodes:Ee.object({network:Ee.object({port:Tn}).required()}).required(),network:Ee.object({port:Tn}).required()}).required(),leafServer:Ee.object({network:Ee.object({port:Tn,routes:fE}).required(),streams:Ee.object({maxAge:Jt.min(120).allow(null).optional(),maxBytes:Jt.min(1).allow(null).optional(),maxMsgs:Jt.min(1).allow(null).optional(),path:c}).required()}).required(),logLevel:Ee.valid("error","warn","info","debug","trace"),nodeName:o,republishMessages:Fe.optional(),databaseLevel:Fe.optional(),tls:Ee.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:Fe.required(),verify:Fe.optional()}),user:ft.optional().empty(null)}).optional():d=Ee.object({enabled:r,tls:Ee.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:Fe.optional()})}).optional(),Ee.object({authentication:Ee.alternatives(Ee.object({authorizeLocal:Fe,cacheTTL:Jt.required(),cookie:Ee.object({domains:la.items(ft).optional(),expires:ft.optional()}),enableSessions:Fe,hashFunction:ft.valid("md5","sha256","argon2id").optional().empty(null)}),Fe).optional(),analytics:Ee.object({aggregatePeriod:Jt}),replication:Ee.object({hostname:Ee.alternatives(ft,Jt).optional().empty(null),url:ft.optional().empty(null),port:Tn,securePort:Tn,routes:la.optional().empty(null),databases:Ee.alternatives(ft,la),enableRootCAs:Fe.optional(),copyTablesToCatchUp:Fe.optional()}).optional(),componentsRoot:s.optional(),clustering:d,localStudio:Ee.object({enabled:r}).required(),logging:Ee.object({auditAuthEvents:Ee.object({logFailed:Fe,logSuccessful:Fe}),file:Fe.required(),level:Ee.valid("notify","fatal","error","warn","info","debug","trace"),rotation:Ee.object({enabled:Fe.optional(),compress:Fe.optional(),interval:ft.custom(i7).optional().empty(null),maxSize:ft.custom(s7).optional().empty(null),path:ft.optional().empty(null).default(i_)}).required(),root:s,stdStreams:Fe.required(),auditLog:Fe.required()}).required(),operationsApi:Ee.object({network:Ee.object({cors:Fe.optional(),corsAccessList:la.optional(),headersTimeout:Jt.min(1).optional(),keepAliveTimeout:Jt.min(1).optional(),port:Tn,domainSocket:Ee.optional().empty("hdb/operations-server").default(i_),securePort:Tn,timeout:Jt.min(1).optional()}).optional(),tls:Ee.alternatives([Ee.array().items(f),f])}).required(),rootPath:ft.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").required(),mqtt:Ee.object({network:Ee.object({port:Tn,securePort:Tn,mtls:Ee.alternatives([Fe.optional(),Ee.object({user:ft.optional(),certificateAuthority:i,required:Fe.optional()})])}).required(),webSocket:Fe.optional(),requireAuthentication:Fe.optional()}),http:Ee.object({compressionThreshold:Jt.optional(),cors:Fe.optional(),corsAccessList:la.optional(),headersTimeout:Jt.min(1).optional(),port:Tn,securePort:Tn,maxHeaderSize:Jt.optional(),mtls:Ee.alternatives([Fe.optional(),Ee.object({user:ft.optional(),certificateAuthority:i,required:Fe.optional()})]),threadRange:Ee.alternatives([la.optional(),ft.optional()])}).required(),threads:Ee.alternatives(n.optional(),Ee.object({count:n.optional(),debug:Ee.alternatives(Fe.optional(),Ee.object({startingPort:Jt.min(1).optional(),host:ft.optional(),waitForDebugger:Fe.optional()})),maxHeapMemory:Jt.min(0).optional()})),storage:Ee.object({writeAsync:Fe.required(),overlappingSync:Fe.optional(),caching:Fe.optional(),compression:Ee.alternatives([Fe.optional(),Ee.object({dictionary:ft.optional(),threshold:Jt.optional()})]),compactOnStart:Fe.optional(),compactOnStartKeepBackup:Fe.optional(),noReadAhead:Fe.optional(),path:l,prefetchWrites:Fe.optional(),maxFreeSpaceToLoad:Jt.optional(),maxFreeSpaceToRetain:Jt.optional()}).required(),ignoreScripts:Fe.optional(),tls:Ee.alternatives([Ee.array().items(f),f])}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}a(t7,"configValidator");function r7(e){return nx||rx.existsSync(e)?null:`Specified path ${e} does not exist.`}a(r7,"doesPathExist");function n7(e,t){Ee.assert(e,ft.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=r7(e);if(r)return t.message(r)}a(n7,"validatePath");function s7(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(j9);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(X9):e}a(s7,"validateRotationMaxSize");function i7(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(J9);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(Z9):e}a(i7,"validateRotationInterval");function o7(e,t){let r=t.state.path.join("."),n=Y9.cpus().length,s=n-1;s<=2&&(s=2);let i=process.constrainedMemory?.()||Z0();return i=Math.round(Math.min(i,Z0())/1e6),s=Math.max(Math.min(s,Math.round((i-750)/300)),1),W9.info(`Detected ${n} cores and ${i}MB on this machine, defaulting ${r} to ${s}`),s}a(o7,"setDefaultThreads");function i_(e,t){let r=t.state.path.join(".");if(!Zy.isEmpty(t.original)&&r!=="operationsApi.network.domainSocket")return t.original;if(Zy.isEmpty(Ri))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"componentsRoot":return Uc.join(Ri,Q9);case"logging.root":return Uc.join(Ri,tx);case"clustering.leafServer.streams.path":return Uc.join(Ri,"clustering","leaf");case"storage.path":let n=Uc.join(Ri,ex.LEGACY_DATABASES_DIR_NAME);return rx.existsSync(n)?n:Uc.join(Ri,ex.DATABASES_DIR_NAME);case"logging.rotation.path":return Uc.join(Ri,tx);case"operationsApi.network.domainSocket":return r==null?null:Uc.join(Ri,"operations-server");default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(i_,"setDefaultRoot");function a7(e){let t=Ee.object({routes:fE});return z9.validateBySchema({routes:e},t)}a(a7,"routesValidator")});var Ct=P(mx=>{"use strict";var fs=(k(),D($)),hr=ae(),Xt=j(),{configValidator:c7,routesValidator:ix}=eb(),Wr=require("fs-extra"),ax=require("yaml"),Gn=require("path"),l7=require("is-number"),cx=require("properties-reader"),u7=require("lodash"),{handleHDBError:d7}=me(),{HTTP_STATUS_CODES:f7,HDB_ERROR_MSGS:_u}=Pn(),{server:_7}=(Cr(),D(kl)),{PACKAGE_ROOT:lx}=mt(),{DATABASES_PARAM_CONFIG:o_,CONFIG_PARAMS:Fn,CONFIG_PARAM_MAP:Vs}=fs,h7="Unable to get config value because config is uninitialized",m7="Config successfully initialized",p7="Error backing up config file",E7="Empty parameter sent to getConfigValue",ux=Gn.join(lx,"config","yaml",fs.HDB_DEFAULT_CONFIG_FILE),g7=Gn.join(lx,"config","yaml","defaultNatsConfig.yaml"),S7="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",ox={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"},_E,It,hE;Object.assign(mx,{createConfigFile:T7,getDefaultConfig:A7,getConfigValue:fx,initConfig:mE,flattenConfig:hu,updateConfigValue:_x,updateConfigObject:y7,getConfiguration:N7,setConfiguration:w7,readConfigFile:sb,getClusteringRoutes:I7,initOldConfig:hx,getConfigFromFile:C7,getConfigFilePath:xc,addConfig:P7,deleteConfigFromFile:D7,getConfigObj:L7,resolvePath:tb,getFlatConfigObj:M7});function tb(e){if(e?.startsWith("~/"))return Gn.join(hr.getHomeDir(),e.slice(1));let t=le();try{return Gn.resolve(t.getHdbBasePath(),e)}catch(r){return console.error("Unable to resolve path",e,r),e}}a(tb,"resolvePath");function T7(e,t=!1){let r=ua(ux);if(e.clustering_enabled||e.CLUSTERING_ENABLED||e.clustering){let c=ax.parseDocument(Wr.readFileSync(g7,"utf8"),{simpleKeys:!0});r.addIn(["clustering"],c.toJSON().clustering)}_E=hu(r.toJSON());let n;for(let c in e){let l=Vs[c.toLowerCase()];if(l===Fn.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=rb(l,e[c]);l==="rootPath"&&f?.endsWith("/")&&(f=f.slice(0,-1));try{r.setIn([...u],f)}catch(d){Xt.error(d)}}}n&&dx(r,n),nb(r,t);let s=r.toJSON();It=hu(s);let i=r.getIn(["rootPath"]),o=Gn.join(i,fs.HDB_CONFIG_FILE);if(Wr.createFileSync(o),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);Wr.writeFileSync(o,String(r)),Xt.trace(`Config file written to ${o}`)}a(T7,"createConfigFile");function dx(e,t){let r;try{try{r=JSON.parse(t)}catch(n){if(!hr.isObject(t))throw n;r=t}for(let n of r){let s=Object.keys(n)[0];if(n[s].hasOwnProperty(o_.TABLES))for(let i in n[s][o_.TABLES])for(let o in n[s][o_.TABLES][i]){let c=n[s][o_.TABLES][i][o],l=[Fn.DATABASES,s,o_.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=[Fn.DATABASES,s,i];e.hasIn(c)?e.setIn(c,o):e.addIn(c,o)}}}catch(n){Xt.error("Error parsing schemas CLI/env config arguments",n)}}a(dx,"setSchemasConfig");function A7(e){if(_E===void 0){let r=ua(ux);_E=hu(r.toJSON())}let t=Vs[e.toLowerCase()];if(t!==void 0)return _E[t.toLowerCase()]}a(A7,"getDefaultConfig");function fx(e){if(e==null){Xt.info(E7);return}if(It===void 0){Xt.trace(h7);return}let t=Vs[e.toLowerCase()];if(t!==void 0)return It[t.toLowerCase()]}a(fx,"getConfigValue");function xc(e=hr.getPropsFilePath()){let t=hr.getEnvCliRootPath();if(t)return tb(Gn.join(t,fs.HDB_CONFIG_FILE));let r=cx(e);return tb(r.get(fs.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY))}a(xc,"getConfigFilePath");function mE(e=!1){if(It===void 0||e){let t;if(!hr.noBootFile()){t=hr.getPropsFilePath();try{Wr.accessSync(t,Wr.constants.F_OK|Wr.constants.R_OK)}catch(i){throw Xt.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}}let r=xc(t),n;if(r.includes("config/settings.js"))try{hx(r);return}catch(i){if(i.code!==fs.NODE_ERROR_CODES.ENOENT)throw i}try{n=ua(r)}catch(i){if(i.code===fs.NODE_ERROR_CODES.ENOENT){Xt.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 Xt.error(i),new Error(`Error reading HarperDB config file at ${r}`)}R7(n,r),nb(n);let s=n.toJSON();if(_7.config=s,It=hu(s),It.logging_rotation_rotate)for(let i in ox)It[i]&&Xt.error(`Config ${ox[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);Xt.trace(m7)}}a(mE,"initConfig");function R7(e,t){let r=e.getIn(["rootPath"]),n=!1;if(e.hasIn(["storage","path"])||(e.setIn(["storage","path"],Gn.join(r,"database")),n=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],Gn.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(Xt.trace("Updating config file with missing config params"),e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${e.errors}`);Wr.writeFileSync(t,String(e))}}a(R7,"checkForUpdatedConfig");function nb(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 _u.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 _u.CONFIG_VALIDATION("operationsApi.network.port and operationsApi.network.securePort cannot be the same value");let n=c7(r,t);if(n.error)throw _u.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(nb,"validateConfig");function y7(e,t){It===void 0&&(It={});let r=Vs[e.toLowerCase()];if(r===void 0){Xt.trace(`Unable to update config object because config param '${e}' does not exist`);return}It[r.toLowerCase()]=t}a(y7,"updateConfigObject");function _x(e,t,r=void 0,n=!1,s=!1,i=!1){It===void 0&&mE();let o=fx(Vs.hdb_root),c=Gn.join(o,fs.HDB_CONFIG_FILE),l=ua(c),u;if(r&&It){let _=!1;for(let h in r)if(r[h]!=It[h.toLowerCase()]){_=!0;break}if(!_){Xt.trace("No changes detected in config parameters, skipping update");return}}if(r===void 0&&e.toLowerCase()===Fn.DATABASES)u=t;else if(r===void 0){let _;if(i)_=e;else if(_=Vs[e.toLowerCase()],_===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let h=_.split("_"),m=rb(_,t);l.setIn([...h],m)}else for(let _ in r){let h=Vs[_.toLowerCase()];if(h===Fn.HTTP_SECUREPORT&&r[_]===It[Fn.HTTP_PORT]?.toString()&&l.setIn(["http","port"],null),h===Fn.OPERATIONSAPI_NETWORK_SECUREPORT&&r[_]===It[Fn.OPERATIONSAPI_NETWORK_PORT.toLowerCase()]?.toString()&&l.setIn(["operationsApi","network","port"],null),h===Fn.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=fs.LEGACY_CONFIG_PARAMS[_.toUpperCase()];S&&S.startsWith("customFunctions")&&l.hasIn(S.split("_"))&&(h=S,m=S.split("_"));let g=rb(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){Xt.error(R)}}}u&&dx(l,u),nb(l);let f=l.getIn(["rootPath"]),d=Gn.join(f,fs.HDB_CONFIG_FILE);if(n===!0&&b7(c,f),l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${l.errors}`);Wr.writeFileSync(d,String(l)),s&&(It=hu(l.toJSON())),Xt.trace(`Config parameter: ${e} updated with value: ${t}`)}a(_x,"updateConfigValue");function b7(e,t){try{let r=Gn.join(t,"backup",`${new Date(Date.now()).toISOString().replaceAll(":","-")}-${fs.HDB_CONFIG_FILE}.bak`);Wr.copySync(e,r),Xt.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){Xt.error(p7),Xt.error(r)}}a(b7,"backupConfigFile");var O7=["databases"];function hu(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}),hE=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])&&!O7.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;!Fn[l.toUpperCase()]&&Vs[l]&&(s[Vs[l].toLowerCase()]=o[c]),s[l]=o[c]}}n[i]!==void 0&&(s[i.toLowerCase()]=n[i])}return s}a(r,"squashObj")}a(hu,"flattenConfig");function rb(e,t){if(e===Fn.CLUSTERING_NODENAME||e===Fn.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(l7(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||hr.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 hr.autoCast(t)}a(rb,"castConfigValue");function N7(){let e=hr.getPropsFilePath(),t=xc(e);return ua(t).toJSON()}a(N7,"getConfiguration");async function w7(e){let{operation:t,hdb_user:r,hdb_auth_header:n,...s}=e;try{return _x(void 0,void 0,s,!0),S7}catch(i){throw typeof i=="string"||i instanceof String?d7(i,i,f7.BAD_REQUEST,void 0,void 0,!0):i}}a(w7,"setConfiguration");function sb(){let e=hr.getPropsFilePath();try{Wr.accessSync(e,Wr.constants.F_OK|Wr.constants.R_OK)}catch(n){if(!hr.noBootFile())throw Xt.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=xc(e);return ua(t).toJSON()}a(sb,"readConfigFile");function ua(e){return ax.parseDocument(Wr.readFileSync(e,"utf8"),{simpleKeys:!0})}a(ua,"parseYamlDoc");function I7(){let e=sb(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=hr.isEmptyOrZeroLength(t)?[]:t;let r=ix(t);if(r)throw _u.CONFIG_VALIDATION(r.message);let n=e?.clustering?.leafServer?.network?.routes;n=hr.isEmptyOrZeroLength(n)?[]:n;let s=ix(n);if(s)throw _u.CONFIG_VALIDATION(s.message);if(!hr.isEmptyOrZeroLength(n)&&!hr.isEmptyOrZeroLength(t)){let i=t.filter(o=>n.some(c=>c.host===o.host&&c.port===o.port));if(!hr.isEmptyOrZeroLength(i)){let o=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw _u.CONFIG_VALIDATION(o)}}return{hub_routes:t,leaf_routes:n}}a(I7,"getClusteringRoutes");function hx(e){let t=cx(e);It={};for(let r in Vs){let n=t.get(r.toUpperCase());if(hr.isEmpty(n)||typeof n=="string"&&n.trim().length===0)continue;let s=Vs[r].toLowerCase();s===Fn.LOGGING_ROOT?It[s]=Gn.dirname(n):It[s]=n}return It}a(hx,"initOldConfig");function C7(e){let t=sb();return u7.get(t,e.replaceAll("_","."))}a(C7,"getConfigFromFile");async function P7(e,t){let r=ua(xc());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 Wr.writeFile(xc(),String(r))}a(P7,"addConfig");function D7(e){let t=xc(hr.getPropsFilePath()),r=ua(t);r.deleteIn(e);let n=r.getIn(["rootPath"]),s=Gn.join(n,fs.HDB_CONFIG_FILE);Wr.writeFileSync(s,String(r))}a(D7,"deleteConfigFromFile");function L7(){return hE||(mE(),hE)}a(L7,"getConfigObj");function M7(){return It||mE(),It}a(M7,"getFlatConfigObj")});var qn=P((iNe,Ar)=>{"use strict";var gx="username is required",Sx="nothing to update, must supply active, role or password to update",Tx="password cannot be an empty string",Ax="If role is specified, it cannot be empty.",Rx="active must be true or false";Ar.exports.addUser=q7;Ar.exports.alterUser=$7;Ar.exports.dropUser=K7;Ar.exports.getSuperUser=j7;Ar.exports.userInfo=Y7;Ar.exports.listUsers=EE;Ar.exports.listUsersExternal=W7;Ar.exports.setUsersWithRolesCache=Bc;Ar.exports.findAndValidateUser=_b;Ar.exports.getClusterUser=J7;Ar.exports.getUsersWithRolesCache=Q7;Ar.exports.USERNAME_REQUIRED=gx;Ar.exports.ALTERUSER_NOTHING_TO_UPDATE=Sx;Ar.exports.EMPTY_PASSWORD=Tx;Ar.exports.EMPTY_ROLE=Ax;Ar.exports.ACTIVE_BOOLEAN=Rx;var yx=Sn(),v7=vc(),a_=(dE(),D(uE)),bx=Q0(),c_=Kr(),lb=oo(),yi=ae(),Ox=require("validate.js"),ub=j(),{promisify:U7}=require("util"),db=uo(),ob=(k(),D($)),px=wt(),x7=Ct(),B7=le(),H7=no(),{hdb_errors:k7,ClientError:Ks}=me(),{HTTP_STATUS_CODES:_o,AUTHENTICATION_ERROR_MSGS:ib,HDB_ERROR_MSGS:mu}=k7,{UserEventMsg:fb}=ks(),ab=require("lodash"),{server:pE}=(Cr(),D(kl)),F7=j();pE.getUser=(e,t)=>_b(e,t,t!=null);pE.authenticateUser=(e,t)=>_b(e,t);var Nx={username:!0,active:!0,role:!0,password:!0},Ex=new Map,G7=U7(v7.delete),cb=B7.get(ob.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??a_.HASH_FUNCTION.SHA256,bi;async function q7(e){let t=Ox.cleanAttributes(e,Nx),r=bx.addUserValidation(t);if(r)throw new Ks(r.message);let n=await c_.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 Ks(mu.ROLE_NAME_NOT_FOUND(t.role),_o.NOT_FOUND);if(n.length>1)throw new Ks(mu.DUP_ROLES_FOUND(t.role),_o.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=db.encrypt(t.password)),t.password=await a_.hash(t.password,cb),t.hash_function=cb,t.role=n[0].id;let s=await yx.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(ub.debug(s),await Bc(),s.skipped_hashes.length===1)throw new Ks(mu.USER_ALREADY_EXISTS(t.username),_o.CONFLICT);return lb.signalUserChange(new fb(process.pid)),`${t.username} successfully added`}a(q7,"addUser");async function $7(e){let t=Ox.cleanAttributes(e,Nx);if(yi.isEmptyOrZeroLength(t.username))throw new Error(gx);if(yi.isEmptyOrZeroLength(t.password)&&yi.isEmptyOrZeroLength(t.role)&&yi.isEmptyOrZeroLength(t.active))throw new Error(Sx);if(!yi.isEmpty(t.password)&&yi.isEmptyOrZeroLength(t.password.trim()))throw new Error(Tx);if(!yi.isEmpty(t.active)&&!yi.isBoolean(t.active))throw new Error(Rx);if(!yi.isEmpty(t.password)&&!yi.isEmptyOrZeroLength(t.password.trim())&&(V7(t.username)&&(t.hash=db.encrypt(t.password)),t.password=await a_.hash(t.password,cb)),t.role==="")throw new Error(Ax);if(t.role){let n=await c_.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new Ks(mu.ALTER_USER_ROLE_NOT_FOUND(t.role),_o.NOT_FOUND);if(n.length>1)throw new Ks(mu.DUP_ROLES_FOUND(t.role),_o.CONFLICT);t.role=n[0].id}let r=await yx.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await Bc(),lb.signalUserChange(new fb(process.pid)),r}a($7,"alterUser");function V7(e){let t=!1,r=bi.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}a(V7,"isClusterUser");async function K7(e){let t=bx.dropUserValidation(e);if(t)throw new Ks(t.message);if(bi.get(e.username)===void 0)throw new Ks(mu.USER_NOT_EXIST(e.username),_o.NOT_FOUND);let r=await G7({table:"hdb_user",schema:"system",hash_values:[e.username]});return ub.debug(r),await Bc(),lb.signalUserChange(new fb(process.pid)),`${e.username} successfully deleted`}a(K7,"dropUser");async function Y7(e){let t={};if(!e||!e.hdb_user)return"There was no user info in the body";t=ab.cloneDeep(e.hdb_user);let r=await c_.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(Y7,"userInfo");async function W7(){let e=await EE();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}a(W7,"listUsersExternal");async function EE(){let e=await c_.searchByValue({schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=ab.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await c_.searchByValue({schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=ab.cloneDeep(s),s.role=t[s.role],z7(s.role),n.set(s.username,s);return n}a(EE,"listUsers");function z7(e){if(!e){ub.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(H7)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}a(z7,"appendSystemTablesToRole");async function Bc(e=void 0){e?bi=e:bi=await EE()}a(Bc,"setUsersWithRolesCache");async function Q7(){return bi||await Bc(),bi}a(Q7,"getUsersWithRolesCache");async function _b(e,t,r=!0){bi||await Bc();let n=bi.get(e);if(!n){if(!r)return{username:e};throw new Ks(ib.GENERIC_AUTH_FAIL,_o.UNAUTHORIZED)}if(n&&!n.active)throw new Ks(ib.USER_INACTIVE,_o.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(Ex.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)Ex.set(t,n.password);else throw new Ks(ib.GENERIC_AUTH_FAIL,_o.UNAUTHORIZED)}}return s}a(_b,"findAndValidateUser");async function j7(){bi||await Bc();for(let[,e]of bi)if(e.role.role==="super_user")return e}a(j7,"getSuperUser");async function J7(){let e=await EE(),t=x7.getConfigFromFile(ob.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!(r==null||r?.role?.role!==ob.ROLE_TYPES_ENUM.CLUSTER_USER))return r.decrypt_hash=db.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+px.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+px.SERVER_SUFFIX.ADMIN,r}a(J7,"getClusterUser");var wx=[];pE.invalidateUser=function(e){for(let t of wx)try{t(e)}catch(r){F7.error("Error invalidating user",r)}};pE.onInvalidatedUser=function(e){wx.push(e)}});var u_=P((lNe,Dx)=>{"use strict";var Hc=j(),$n=(k(),D($)),X7=jL(),aNe=$s(),cNe=fo(),Z7=qn(),{validateEvent:Ix}=ks(),l_=Hn(),eee=require("process"),{resetDatabases:tee}=(ve(),D(it)),ree={[$n.ITC_EVENT_TYPES.SCHEMA]:nee,[$n.ITC_EVENT_TYPES.USER]:Px};async function nee(e){let t=Ix(e);if(t){Hc.error(t);return}Hc.trace("ITC schemaHandler received schema event:",e),await X7(e.message),await see(e.message)}a(nee,"schemaHandler");async function see(e){try{l_.resetReadTxn($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),l_.resetReadTxn($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),l_.resetReadTxn($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=tee();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){Hc.error(t)}}a(see,"syncSchemaMetadata");var Cx=[];async function Px(e){try{try{l_.resetReadTxn($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),l_.resetReadTxn($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){Hc.warn(r)}let t=Ix(e);if(t){Hc.error(t);return}Hc.trace(`ITC userHandler ${$n.HDB_ITC_CLIENT_PREFIX}${eee.pid} received user event:`,e),await Z7.setUsersWithRolesCache();for(let r of Cx)r()}catch(t){Hc.error(t)}}a(Px,"userHandler");Px.addListener=function(e){Cx.push(e)};Dx.exports=ree});var ks=P((mNe,Mx)=>{"use strict";var dNe=j(),hb=ae(),iee=(k(),D($)),{ITC_ERRORS:d_}=Pn(),{parentPort:fNe,threadId:oee,isMainThread:aee,workerData:_Ne}=require("worker_threads"),{onMessageFromWorkers:cee,broadcast:hNe,broadcastWithAcknowledgement:lee}=tt();Mx.exports={sendItcEvent:uee,validateEvent:Lx,SchemaEventMsg:dee,UserEventMsg:fee};var gE;cee(async(e,t)=>{gE=gE||u_(),Lx(e),gE[e.type]&&await gE[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function uee(e){return!aee&&e.message&&(e.message.originator=oee),lee(e)}a(uee,"sendItcEvent");function Lx(e){if(typeof e!="object")return d_.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||hb.isEmpty(e.type))return d_.MISSING_TYPE;if(!e.hasOwnProperty("message")||hb.isEmpty(e.message))return d_.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||hb.isEmpty(e.message.originator))return d_.MISSING_ORIGIN;if(iee.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return d_.INVALID_EVENT(e.type)}a(Lx,"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 fee(e){this.originator=e}a(fee,"UserEventMsg")});var oo=P((gNe,Bx)=>{"use strict";var vx=(k(),D($)),ENe=ae(),SE=j(),Ux=LL(),pu,{sendItcEvent:xx}=ks();function _ee(e){try{SE.info("signalSchemaChange called with message:",e),pu=pu||u_();let t=new Ux(vx.ITC_EVENT_TYPES.SCHEMA,e);return pu.schema(t),xx(t)}catch(t){SE.error(t)}}a(_ee,"signalSchemaChange");function hee(e){try{SE.trace("signalUserChange called with message:",e),pu=pu||u_();let t=new Ux(vx.ITC_EVENT_TYPES.USER,e);return pu.user(t),xx(t)}catch(t){SE.error(t)}}a(hee,"signalUserChange");Bx.exports={signalSchemaChange:_ee,signalUserChange:hee}});var E_={};Ue(E_,{addAnalyticsListener:()=>p_,calculateCPUUtilization:()=>rB,diffResourceUsage:()=>nB,recordAction:()=>Zt,recordActionBinary:()=>Vn,setAnalyticsEnabled:()=>mee});function mee(e){Jx=e}function pee(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 Eee(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},AE.set(e,o)}function Zt(e,t,r,n,s){if(!Jx)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=AE.get(i);o?pee(e,o):Eee(i,e,t,r,n,s),TE||gee()}function Vn(e,t,r,n,s){Zt(!!e,t,r,n,s)}function p_(e){eB.push(e)}function gee(){TE=performance.now(),setTimeout(async()=>{let e=performance.now()-TE;TE=0;let t=[],r={time:Date.now(),period:e,threadId:kc.threadId,metrics:t};for(let[s,i]of AE){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 tB){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 sB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:kc.threadId,byThread:!0,...n});for(let s of eB)s(t);AE=new Map,kc.parentPort?kc.parentPort.postMessage({type:Zx,report:r}):aB({report:r})},Xx).unref()}function RE(e,t,r){let n={id:(0,h_.getNextMonotonicTime)(),metric:t,...r};e.primaryStore.put(n.id,n,{append:!0}).then(s=>{s||e.primaryStore.put(n.id,n)})}function rB(e,t){let r=e.userCPUTime+e.systemCPUTime;return Math.round(r/t*100)/100}function nB(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 See(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};RE(e,"table-size",l),Fc.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),n+=c}return n}function Hx(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=jx.default.statSync(s.primaryStore.env.path).size,c=See(e,r,n),l=o-c,u={database:r,size:o,used:c,free:l,audit:i};RE(e,"database-size",u),Fc.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){Fc.warn?.("Error getting DB size metrics",s)}}function kx(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};RE(e,"storage-volume",o),Fc.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){Fc.warn?.("Error getting DB volume metrics",s)}}async function Tee(e,t=6e4){let r=pb(),n=iB(),s=new Promise(E=>{let T=performance.now();setImmediate(()=>{let w=performance.now();w-T>5e3&&Fc.warn?.("Unusually high event queue latency on the main thread of "+Math.round(w-T)+"ms"),T=performance.now()}),n.primaryStore.prefetch([1],()=>{let w=performance.now();w-T>5e3&&Fc.warn?.("Unusually high task queue latency on the main thread of "+Math.round(w-T)+"ms"),E(w-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:w,threadId:v}=T;for(let H of w||[]){let{path:q,method:W,type:te,metric:se,count:Y,total:ne,distribution:ue,threads:oe,...pe}=H;Y||(Y=1);let Te=se+(q?"-"+q:"");W!==void 0&&(Te+="-"+W),te!==void 0&&(Te+="-"+te);let ye=c.get(Te);if(ye){if(ye.threads){let lt=ye.threads[v];if(lt)ye=lt;else{ye.threads[v]={...pe};continue}}ye.count||(ye.count=1);let Qt=ye.count;for(let lt in pe){let Tr=pe[lt];typeof Tr=="number"&&(ye[lt]=(ye[lt]*Qt+Tr*Y)/(Qt+Y))}ye.count+=Y,ne>=0&&(ye.total+=ne,ye.ratio=ye.total/ye.count)}else ye={period:t,...H},delete ye.distribution,c.set(Te,ye),ye.byThread&&(ye.threads=[],ye.threads[v]={...pe},u.push(ye));if(ue){ue=ue.map(lt=>typeof lt=="number"?{value:lt,count:1}:lt);let Qt=l.get(Te);Qt?Qt.push(...ue):l.set(Te,ue)}}await sB()}for(let E of u){let{path:T,method:w,type:v,metric:H,count:q,total:W,distribution:te,threads:se,...Y}=E;se=se.filter(ne=>ne);for(let ne in Y){if(typeof E[ne]!="number")continue;let ue=0;for(let oe of se){let pe=oe[ne];typeof pe=="number"&&(ue+=pe)}E[ne]=ue}E.count=se.length,delete E.threads,delete E.byThread}for(let[E,T]of l){let w=c.get(E);T.sort((lt,Tr)=>lt.value>Tr.value?1:-1);let v=w.count-1,H=[],q=0,W=0,te;for(let lt of tB){let Tr=v*lt;for(;q<Tr;)te=T[W++],q+=te.count,W===1&&q--;let ss=T[W>1?W-2:0];te||(te=T[0]),H.push(te.value-(te.value-ss.value)*(q-Tr)/te.count)}let[se,Y,ne,ue,oe,pe,Te,ye,Qt]=H;Object.assign(w,{p1:se,p10:Y,p25:ne,median:ue,p75:oe,p90:pe,p95:Te,p99:ye,p999:Qt})}let d;for(let[E,T]of c)T.id=(0,h_.getNextMonotonicTime)(),T.time=f,n.primaryStore.put(T.id,T,{append:!0}).then(w=>{w||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,h_.getNextMonotonicTime)(),T={id:E,metric:"main-thread-utilization",idle:h-Fx,active:m-Gx,taskQueueLatency:await s,time:_,...process.memoryUsage()};n.primaryStore.put(E,T,{append:!0}).then(w=>{w||n.primaryStore.put(E,T)})}Fx=h,Gx=m;let S=process.resourceUsage(),g=nB(f_,S);g.time=_,g.period=f_.time?_-f_.time:t,g.cpuUtilization=rB(f_,g.period),RE(n,"resource-usage",g),f_=g;let R=je();Hx(n,R),Hx(n,{system:R.system}),kx(n,R),kx(n,{system:R.system})}async function qx(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function pb(){return $x||($x=dt({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function iB(){return Vx||(Vx=dt({table:"hdb_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function yee(){oB=!0;let e=(0,m_.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await Tee(Xx,e),await qx(pb(),Aee),await qx(iB(),Ree)},Math.min(e/2,2147483647)).unref()}function aB(e,t){let r=e.report;r.threadId=t?.threadId||kc.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(Kx+=n.mean*n.count);r.totalBytesProcessed=Kx,t&&(r.metrics.push({metric:"utilization",...t.performance.eventLoopUtilization(Yx.get(t))}),Yx.set(t,t.performance.eventLoopUtilization())),r.id=(0,h_.getNextMonotonicTime)(),pb().primaryStore.put(r.id,r),oB||yee(),bee&&(cB=Nee(r))}async function Nee(e){if(await cB,!da){let r=(0,__.dirname)((0,zx.getLogFilePath)());try{da=await(0,mb.open)((0,__.join)(r,"analytics.log"),"r+")}catch{da=await(0,mb.open)((0,__.join)(r,"analytics.log"),"w+")}}let t=(await da.stat()).size;if(t>Oee){let r=Buffer.alloc(t);await da.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await da.write(r,{position:0}),await da.truncate(r.length),t=r.length}await da.write(JSON.stringify(e)+`
|