harperdb 4.5.31 → 4.5.32
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 +13 -13
- package/package.json +1 -1
- package/server/jobs/jobProcess.js +1 -1
- package/server/threads/threadServer.js +1 -1
- package/studio/build-local/asset-manifest.json +2 -2
- package/studio/build-local/index.html +1 -1
- package/studio/build-local/static/js/{main.fbfcc75d.js → main.64412ce7.js} +2 -2
- package/utility/scripts/restartHdb.js +1 -1
- /package/studio/build-local/static/js/{main.fbfcc75d.js.LICENSE.txt → main.64412ce7.js.LICENSE.txt} +0 -0
package/bin/lite.js
CHANGED
|
@@ -13,7 +13,7 @@ Caused by:`));else if(typeof u=="object")try{n+=JSON.stringify(u)}catch{n+="Obje
|
|
|
13
13
|
|
|
14
14
|
`:`data: ${e}
|
|
15
15
|
|
|
16
|
-
`},"serialize"),compressible:!1,q:.8});Kr.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()}});ZD={type:"application/json",serializeStream:Of,serialize:Nf,deserialize:MJ,q:.5};Kr.set("*/*",ZD);Kr.set("",ZD);a(MJ,"tryJSONParse");a(If,"registerContentHandlers");vJ=require("fastify-plugin"),UJ=vJ(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=ip(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(ip,"findBestSerializer");zD=HA.default.get(B.HTTP_COMPRESSIONTHRESHOLD);a(Cf,"serialize");a(ia,"serializeMessage");a(qA,"asyncSerialization");a($A,"hasAsyncSerialization");a(xJ,"streamToBuffer");BJ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(HJ,"isBufferEncoding");a(kJ,"parseContentType");a(no,"getDeserializer");a(FJ,"deserializerUnknownType");a(GJ,"transformIterable");a(sp,"toCsvStream")});var su={};Ue(su,{Blob:()=>gi,blobsWereEncoded:()=>Rc,cleanupOrphans:()=>t4,databasePaths:()=>KA,decodeBlobsWithWrites:()=>_p,decodeFromDatabase:()=>oo,decodeWithBlobCallback:()=>Lf,deleteBlob:()=>up,deleteBlobsInObject:()=>aa,deleteRootBlobPathsForDB:()=>zA,encodeBlobsAsBuffers:()=>XJ,encodeBlobsWithFilePath:()=>fp,findBlobsInObject:()=>Ac,getFileId:()=>dp,getFilePathForBlob:()=>lL,getRootBlobPathsForDB:()=>nu,isSaving:()=>YJ,saveBlob:()=>Df,setDeletionDelay:()=>KJ,startPreCommitBlobsForRecord:()=>QA});function aL(){}function up(e){let t=lL(e);t&&setTimeout(()=>{(0,Fe.unlink)(t,r=>{r&&Ft.default.debug?.("Error trying to remove blob file",r)})},cL)}function KJ(e){cL=e}function Df(e,t=!1){let r=br.get(e);if(!r)r={storageIndex:0,fileId:null,store:mn},br.set(e,r);else{if(r.fileId)return r;r.store=mn}return r.deleteOnFailure=t,zJ(r),r.source?VA(e,r.source,r):r.contentBuffer?WJ(e,r):VA(e,oa.Readable.from(e.stream()),r),r}function VA(e,t,r){let{filePath:n,fileId:s,store:i,compress:o,flush:c}=r;return r.saving=new Promise((l,u)=>{let f=s+":blob";if(!i.attemptLock(f,0))throw new Error(`Unable to get lock for blob file ${s}`);let d=(0,Fe.createWriteStream)(n,{autoClose:!1,flags:"w"}),_=!1;e.size!==void 0&&(d.write(m(e.size)),_=!0);let h;o?(_||d.write($J),h=(0,cp.createDeflate)(),(0,oa.pipeline)(t,h,d,S)):(_||d.write(qJ),(0,oa.pipeline)(t,d,S));function m(g){let R=BigInt(g),E=new Uint8Array(mr),T=new DataView(E.buffer);return R|=BigInt(o?WA:oL)<<48n,T.setBigInt64(0,R),E}a(m,"createHeader");function S(g){let R=d.fd;if(g){if(i.unlock(f,0),R&&((0,Fe.close)(R),d.fd=null),r.deleteOnFailure)(0,Fe.unlink)(n,E=>{E&&Ft.default.debug?.("Error while deleting aborted blob file",E)});else try{if((0,Fe.statSync)(n).size===0){let E=Buffer.from(g.toString());(0,Fe.writeFile)(n,Buffer.concat([m(BigInt(E.length)+0xff000000000000n),E]),T=>{T&&Ft.default.debug?.("Error write error message to blob file",T)})}}catch(E){Ft.default.debug?.("Error checking blob file after abort",E)}u(g)}else{if(!_){_=!0;let E=h?h.bytesWritten:d.bytesWritten-mr;e.size=E,(0,Fe.write)(R,m(E),0,mr,0,S);return}i.unlock(f,0),c?(0,Fe.fdatasync)(R,E=>{E&&u(E),l(),(0,Fe.close)(R),d.fd=null}):(l(),(0,Fe.close)(R),d.fd=null)}}a(S,"finished")}),e}function dp(e){return br.get(e)?.fileId}function YJ(e){return br.get(e)?.saving}function lL(e){let t=br.get(e);return t?.fileId&&ru(t)}function nu(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 Ft.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,lp.get)(B.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,Ti.join)(n,e.databaseName)):t=[(0,Ti.join)((0,lp.getHdbBasePath)(),"blobs",e.databaseName)],KA.set(e,t)}return t}async function zA(e){let t=nu(e);t&&await Promise.all(t.map(r=>uL(r)))}async function uL(e){if((0,Fe.existsSync)(e)){for(let t of await(0,pn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await uL((0,Ti.join)(e,t.name));else try{await(0,pn.unlink)((0,Ti.join)(e,t.name))}catch(r){Ft.default.warn?.("Error deleting file",r)}try{await(0,pn.rmdir)(e)}catch(t){Ft.default.warn?.("Error deleting directory",t)}}}function ru({storageIndex:e,fileId:t,store:r}){let n=nu(r);return(0,Ti.join)(n[e],t.slice(-9,-6)||"0",t.slice(-6,-3)||"0",t.length<=9?t.slice(-3):t.slice(0,-9)+t.slice(-3))}function WJ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<iL))return e.size=n,VA(e,oa.Readable.from([r]),t)}function zJ(e){let t=nu(e.store),r=QJ(),n=t?.length>1?jJ(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=ru(e),o=(0,Ti.dirname)(i);(0,Fe.existsSync)(o)||(0,YA.ensureDirSync)(o),e.filePath=i}function QJ(){let e=nL.get(mn);if(!e){let t=0,r=nu(mn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Fe.existsSync)(n))for(let c of(0,Fe.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>o&&(o=l)}s+=o,n=(0,Ti.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(mn.getUserSharedBuffer("blob-file-id",e.buffer)),nL.set(mn,e)}return Number(Atomics.add(e,0,1n))}function jJ(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(ap);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,JJ(e)),e.frequencyTable[t%ap]}async function JJ(e){if(!pn.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let o;try{o=await(0,pn.statfs)(s)}catch(l){if(l.code!=="ENOENT")throw l;(0,YA.ensureDirSync)(s),o=await(0,pn.statfs)(s)}let c=o.bavail*o.bsize;return Math.pow(c,.8)})),r=new Array(ap),n=t.map(s=>1/s);for(let s=0;s<ap;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 fp(e,t,r){eu=t,mn=r,Rc=!1;try{return e()}finally{eu=void 0,mn=void 0}}function XJ(e){vr=[];let t;try{t=e()}catch(n){throw vr=void 0,n}let r=vr.length<2?vr[0]:Promise.all(vr);return vr=void 0,r?r.then(()=>e()):t}function _p(e,t,r){try{vr=[],io=r,mn=t,e()}catch(s){throw io=void 0,vr=void 0,s}io=void 0;let n=vr.length<2?vr[0]:Promise.all(vr);return vr=void 0,n}function Lf(e,t,r){mn=r;try{return io=t,e()}finally{io=void 0}}function oo(e,t){return mn=t,e()}function aa(e){Ac(e,t=>{up(t)})}function Ac(e,t){if(e instanceof gi)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&Ac(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&Ac(e[r],t)}}function QA(e,t){let r;for(let n in e){let s=e[n];if(s instanceof tu&&s.saveBeforeCommit){mn=t;let i=Df(s,!0).saving??Promise.resolve();r=r?Promise.all(r,i):i}}return r}function e4(){return class{static{a(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}async function t4(e){let t,r,n=0;for(let u in e){let f=e[u];if(t=f.primaryStore.rootStore,r=f.auditStore,r)break}let s=new Set,i=nu(t);if(i)for(let u of i)await o(u);return await c(),n;async function o(u){try{if(!(0,Fe.existsSync)(u))return;for(let f of await(0,pn.readdir)(u,{withFileTypes:!0})){let d=(0,Ti.join)(u,f.name);if(f.isDirectory())await o(d);else if(s.size%1e6===0&&Ft.default.info?.("Finding all blobs for orphan check, paths accumulated",s.size),s.add(d),s.size%2===0){let _=(0,sL.getHeapStatistics)();_.used_heap_size>_.heap_size_limit*.8&&await c()}}}catch(f){Ft.default.error?.("Error searching path for blobs",u,f)}}a(o,"searchPath");async function c(){for(let u in e){Ft.default.warn?.("Checking for references to potential orphaned blobs in table",u);let f=e[u];for(let d of f.primaryStore.getRange({versions:!0,snapshot:!1,lazy:!0}))try{d.metadataFlags&Ur&&d.value&&l(d.value),await new Promise(setImmediate)}catch(_){Ft.default.error?.("Error searching table",u," for references to potential orphaned blobs failed",_)}}Ft.default.warn?.("Checking for references to potential orphaned blobs in the audit log");for(let{value:u}of r.getRange({start:1,snapshot:!1,lazy:!0}))try{let f=gt(u),d=r.tableStores[f.tableId],_=d?.getEntry(f.recordId);(!_||_.version!==f.version||!_.value)&&l(f.getValue(d))}catch(f){Ft.default.error?.("Error searching audit log for references to potential orphaned blobs failed",f)}Ft.default.warn?.("Deleting",s.size,"orphaned blobs"),n+=s.size;for(let u of s)try{await(0,pn.unlink)(u)}catch(f){Ft.default.warn?.("Error deleting file",f)}Ft.default.warn?.("Finished deleting",s.size,"orphaned blobs"),s.clear()}a(c,"removePathsThatAreNotReferenced");function l(u){Ac(u,f=>{if(f instanceof tu){let d=br.get(f);if(d.fileId!=null){let _=ru(d);s.has(_)&&s.delete(_)}}})}a(l,"checkObjectForReferences")}var Si,pn,Fe,cp,oa,YA,lp,Ti,Ft,sL,iL,mr,oL,WA,tL,qJ,$J,rL,br,io,gi,eu,vr,mn,Rc,Pf,op,VJ,tu,cL,KA,nL,ap,ZJ,hn=Re(()=>{Si=require("msgpackr"),pn=require("node:fs/promises"),Fe=require("node:fs"),cp=require("node:zlib"),oa=require("node:stream"),YA=require("fs-extra"),lp=M(ce());k();Ti=require("path"),Ft=M(ks());so();Ai();sL=require("node:v8"),iL=8192,mr=8,oL=0,WA=1,tL=255,qJ=new Uint8Array([0,oL,255,255,255,255,255,255]),$J=new Uint8Array([0,WA,255,255,255,255,255,255]),rL=0xffffffffffff,br=new WeakMap,gi=global.Blob||e4(),Rc=!1,Pf=new Uint8Array(8),op=new DataView(Pf.buffer),VJ=6e4;a(aL,"InstanceOfBlobWithNoConstructor");aL.prototype=gi.prototype;tu=class e extends aL{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size),t?.saveBeforeCommit!=null&&(this.saveBeforeCommit=t.saveBeforeCommit)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=br.get(this),{start:r,end:n,contentBuffer:s,asString:i}=t;return i||(s&&(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),s?(t.asString=s.toString(),t.asString):($A()&&qA(this.bytes().then(o=>t.contentBuffer=o)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=br.get(this),{start:r,end:n,contentBuffer:s}=t;if(s)return(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),Promise.resolve(s);let i=ru(t),o,c=a(async()=>{let l,u=mr;try{if(l=await(0,pn.readFile)(i),l.length>=mr){l.copy(Pf,0,0,mr);let d=op.getBigUint64(0);if(Number(d>>48n)===tL)throw new Error("Error in blob: "+l.subarray(mr));if(u=Number(d&0xffffffffffffn),u<n&&(u=n),u<rL&&(this.size=u,this.#t))for(let _ of this.#t)_(u)}}catch(d){if(d.code!=="ENOENT")throw d;l=Buffer.alloc(0)}function f(d){if(u>d.length){let _=t.store,h=t.fileId+":blob";if(o)throw new Error(`Incomplete blob for ${i}`);return new Promise((m,S)=>{if(_.attemptLock(h,0,()=>(o=!0,m(c()))))return o=!0,_.unlock(h,0),m(c())})}return(n!=null||r!=null)&&(d=d.subarray(r??0,n??d.length)),d}return a(f,"checkCompletion"),l[1]===WA?new Promise((d,_)=>{(0,cp.deflate)(l.subarray(mr),(h,m)=>{h?_(h):d(f(m))})}):f(l.subarray(mr))},"readContents");return c()}async arrayBuffer(){let t=await this.bytes(),r=new ArrayBuffer(t.length);return new Uint8Array(r).set(t),r}stream(){let t=br.get(this),{contentBuffer:r,start:n,end:s}=t;if(r)return(s!=null||n!=null)&&(r=r.subarray(n??0,s??t.contentBuffer.length)),new ReadableStream({pull(S){S.enqueue(r),S.close()}});let i=ru(t),o,c=0,l=0,u,f,d,_=!1,h=this;return new ReadableStream({start(){let S=1e3,g=a((R,E)=>{(0,Fe.open)(i,"r",(T,N)=>{if(T){if(T.code==="ENOENT"&&d!==!1&&(Ft.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=N,R(N)})},"openFile");return new Promise(g)},pull:a(S=>{let g=0,R=100;return new Promise(a(function E(T,N){function v(X){(0,Fe.close)(o),clearTimeout(f),u&&u.close(),N(X),h.#e?.forEach(W=>W(X))}a(v,"onError");let H=Buffer.allocUnsafe(262144);(0,Fe.read)(o,H,0,H.length,c,(X,W,$)=>{if(l+=W,X)return v(X);if(c===0){if(W<mr){R-- >0&&d!==!1?(m(),Ft.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>E(T,N),20).unref()):(Ft.default.debug?.("File was empty, throwing error",i,R),v(new Error(`Blob ${t.fileId} was empty`)));return}$.copy(Pf,0,0,mr);let ie=op.getBigUint64(0);if(Number(ie>>48n)===tL)return v(new Error("Error in blob: "+$.subarray(mr,W)));if(g=Number(ie&0xffffffffffffn),g<rL&&h.size!==g&&(h.size=g,h.#t))for(let z of h.#t)z(g);$=$.subarray(mr,W),l-=mr}else if(W===0){let ie=Buffer.allocUnsafe(8);return(0,Fe.read)(o,ie,0,mr,0,z=>{if(z)return v(z);if(Pf.set(ie),g=Number(op.getBigUint64(0)&0xffffffffffffn),g>l){m()?u?f=setTimeout(()=>{v(new Error(`File read timed out reading from ${i}`))},VJ).unref():(u=(0,Fe.watch)(i,{persistent:!1},()=>{u.close(),u=null,f&&(clearTimeout(f),f=null,E(T,N))}),E(T,N)):_?v(new Error("Blob is incomplete")):(_=!0,E(T,N));return}(0,Fe.close)(o),S.close(),T()})}else $=$.subarray(0,W);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=W,E(T,N);s&&l>=s&&(l>s&&($=$.subarray(0,s-c)),l=g=s),n&&n>c&&($=$.subarray(n-c))}c+=W;try{S.enqueue($)}catch(ie){return Ft.default.debug?.("Error enqueuing chunk",ie),T()}l===g&&((0,Fe.close)(o),S.close()),T()})},"readMore"))},"pull"),cancel(){(0,Fe.close)(o),clearTimeout(f),u&&u.close()}});function m(){if(d===void 0){let S=t.store,g=t.fileId+":blob";d=!S.attemptLock(g,0,()=>{d=!1}),d||S.unlock(g,0)}return d}}slice(t,r,n){let s=br.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};br.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};br.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return this.saveBeforeCommit=!0,Promise.resolve()}get written(){return br.get(this)?.saving??Promise.resolve()}},cL=500;a(up,"deleteBlob");a(KJ,"setDeletionDelay");global.createBlob=function(e,t){let r=new tu(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(br.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof oa.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=oa.Readable.from(e);else throw new Error("Invalid source type");return r};a(Df,"saveBlob");a(VA,"writeBlobWithStream");a(dp,"getFileId");a(YJ,"isSaving");a(lL,"getFilePathForBlob");KA=new Map;a(nu,"getRootBlobPathsForDB");a(zA,"deleteRootBlobPathsForDB");a(uL,"rimrafSteadily");a(ru,"getFilePath");a(WJ,"writeBlobWithBuffer");a(zJ,"generateFilePath");nL=new Map;a(QJ,"getNextFileId");ap=128;a(jJ,"getNextStorageIndex");a(JJ,"createFrequencyTableForStoragePaths");a(fp,"encodeBlobsWithFilePath");a(XJ,"encodeBlobsAsBuffers");a(_p,"decodeBlobsWithWrites");a(Lf,"decodeWithBlobCallback");a(oo,"decodeFromDatabase");a(aa,"deleteBlobsInObject");a(Ac,"findBlobsInObject");a(QA,"startPreCommitBlobsForRecord");ZJ=new Si.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,Si.addExtension)({Class:gi,type:11,unpack:a(function(e){let t=ZJ.unpack(e),r=new tu;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(br.set(r,{storageIndex:t[1],fileId:t[2],store:mn}),io)return io(r)??r;if(!mn)throw new Error("No store specified, cannot load blob from storage")}else br.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:a(function(e){let t=br.get(e);if(eu!==void 0&&(Rc=!0,t?.recordId!==void 0&&t.recordId!==eu))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<iL)return r.size=t.contentBuffer.length,(0,Si.pack)([r,t.contentBuffer])}if(eu!==void 0){if(t=Df(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=eu,(0,Si.pack)([r,t.storageIndex,t.fileId])}if(t){if(io)return io(e),(0,Si.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Fe.readFileSync)(ru(t));if(n.length>=mr&&(n.copy(Pf,0,0,mr),Number(op.getBigUint64(0)&0xffffffffffffn)===n.length-mr))return Buffer.concat([(0,Si.pack)([r]),n]);if(vr)vr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&vr)return vr.push(e.bytes()),Buffer.alloc(0);throw n}}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Si.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(e4,"polyfillBlob");a(t4,"cleanupOrphans")});var mL={};Ue(mL,{HAS_EXPIRATION:()=>pp,HAS_RESIDENCY_ID:()=>rR,HAS_STRUCTURE_UPDATE:()=>gp,LAST_TIMESTAMP_PLACEHOLDER:()=>xf,LOCAL_TIMESTAMP:()=>r4,METADATA:()=>bc,NEW_TIMESTAMP_PLACEHOLDER:()=>fL,NO_TIMESTAMP:()=>jA,PENDING_LOCAL_TIME:()=>nR,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>tR,RecordEncoder:()=>eR,TIMESTAMP_ASSIGN_LAST:()=>s4,TIMESTAMP_ASSIGN_NEW:()=>_L,TIMESTAMP_ASSIGN_PREVIOUS:()=>hL,TIMESTAMP_PLACEHOLDER:()=>hp,TIMESTAMP_RECORD_PREVIOUS:()=>JA,handleLocalTimeForGets:()=>Sp,recordUpdater:()=>sR,removeEntry:()=>Nc});function o4(){return Uf[0]=Uf[0]^64,n4.getFloat64(0)}function Sp(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?.[bc];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?.[bc]>=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[bc];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,yc.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<yc.length;u++){let f=yc[u].deref();(!f||f.isDone||f.isCommitted)&&yc.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function sR(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){d||l==null?iu=i?.localTime?JA|hL:jA:iu=l?i?.localTime?JA|16384:_L|16384:jA;let h=u?.expiresAt;if(h>=0&&(c|=pp),vf=c,XA=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:iu>0},S,g=0;try{let R=i?.residencyId,E=u?.residencyId;E&&(ZA=E,vf|=rR,g|=wc),R!==E&&(g|=Ic,R||(R=0)),c&pp&&(g|=Hf),u?.originatingOperation&&(g|=Bf),d&&(m.ifVersion=S=i?.version??null),i&&i.value&&f!=="message"&&i.metadataFlags&Ur&&(r.getBinaryFast(i.localTime)||aa(i.value));let T;if(s!==void 0&&(T=fp(()=>e.put(n,s,m),n,e.rootStore),Rc&&(g|=Ur)),l){let N=u?.user?.username;if(_&&(fp(()=>e.encoder.encode(_),n,e.rootStore),Rc&&(g|=Ur)),e.encoder.hasStructureUpdate&&(g|=gp,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let v=i?.localTime,H=r.get(v);if(H){let X=gt(H).previousLocalTime;return T=r.put(v,Oc(o,t,n,X,u?.nodeId??server.replication.getThisNodeId(r)??0,N,f,Mf,g,E,R,h),{ifVersion:S}),T}}T=r.put(s===void 0?fL:xf,Oc(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,f,Mf,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 Nc(e,t,r){if(t)return t.value&&t.metadataFlags&Ur&&!e.auditStore?.getBinaryFast(t.localTime)&&aa(t.value),e.remove(t.key,r)}var dL,mp,hp,xf,tR,fL,r4,bc,Uf,n4,jA,_L,s4,hL,JA,pp,rR,nR,gp,i4,Mf,iu,vf,XA,ZA,eR,yc,ou=Re(()=>{dL=require("msgpackr");Ai();mp=M(ee());hn();hn();hp=new Uint8Array([1,1,1,1,4,64,0,0]),xf=new Uint8Array([1,1,1,1,1,0,0,0]),tR=new Uint8Array([1,1,1,1,3,64,0,0]),fL=new Uint8Array([1,1,1,1,0,64,0,0]),r4=Symbol("local-timestamp"),bc=Symbol("metadata"),Uf=new Uint8Array(8),n4=new DataView(Uf.buffer,0,8),jA=0,_L=0,s4=1,hL=3,JA=4,pp=16,rR=32,nR=1,gp=256,iu=0,vf=-1,XA=-1,ZA=0,eR=class extends dL.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(iu||vf>=0){let o=0,c=iu;c&&(o+=8,iu=0);let l=vf,u=XA,f=ZA;l>=0&&(o+=4,vf=-1,u>=0&&(o+=8,XA=-1),f&&(o+=4,ZA=0));let d=i4=r.call(this,s,i|2048|o);Mf=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(hp[4]=c,hp[5]=c>>8,d.set(hp,_),_+=8),Rc&&(l|=Ur),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|Ep<<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 Mf=r.call(this,s,i),Mf};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(Uf,0,c),c+=8;else for(let _=0;_<8;_++)Uf[_]=t[c++];l=o4(),i=t[c]}let u,f;i<32&&(i===Ep?(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&pp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&rR&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=oo(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[bc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:oo(()=>super.decode(t,r),this.rootStore)}catch(c){return mp.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(o4,"getTimestamp");a(Sp,"handleLocalTimeForGets");yc=[];setInterval(()=>{for(let e=0;e<yc.length;e++){let t=yc[e].deref();!t||t.isDone||t.isCommitted?yc.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(mp.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):mp.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(sR,"recordUpdater");a(Nc,"removeEntry")});var oR={};Ue(oR,{add:()=>Tp,applyReverse:()=>pL,getRecordAtTime:()=>iR,rebuildUpdateBefore:()=>Ap});function Tp(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 Ap(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,Tp(n,s,i)}else r&&(n||(n={}),n[s]=i)}else n||(n={}),n[s]=e[s];return n}function pL(e,t){for(let r in t){let n=t[r];if(n?.__op__){let s=a4[n.__op__]?.reverse;if(s)s(e,r,{value:n.value});else throw new Error(`Unsupported operation ${n.__op__}`)}else e[r]=EL}}function iR(e,t,r){let n=r.rootStore.auditStore,s={...e.value},i=e.localTime;for(;i>t;){let l=n.get(i),u=gt(l);switch(u.type){case"put":s=u.getValue(r);break;case"patch":pL(s,u.getValue(r));break;case"delete":s=null}i=u.previousLocalTime}let o={},c=0;for(let l in s)s[l]===EL&&(o[l]=!0,c++);for(;c>0&&i>0;){let l=n.get(i),u=gt(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 a4,EL,Rp=Re(()=>{Ai();a(Tp,"add");Tp.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)};a4={add:Tp};a(Ap,"rebuildUpdateBefore");a(pL,"applyReverse");EL={};a(iR,"getRecordAtTime")});var RL={};Ue(RL,{onStorageReclamation:()=>kf,runReclamationHandlers:()=>uR,setAvailableSpaceRatioGetter:()=>l4});function kf(e,t,r){(r||(0,bp.getWorkerIndex)()===(0,bp.getWorkerCount)()-1)&&(yp.has(e)||yp.set(e,[]),yp.get(e).push({priority:0,handler:t}),lR||(lR=setTimeout(uR,SL).unref()))}async function uR(){for(let[e,t]of yp)try{let r=await AL(e),n=c4/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&&(cR.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){cR.default.error?.("Error running storage reclamation handlers",r)}lR=setTimeout(uR,SL).unref()}function l4(e){AL=e??TL}var aR,bp,cR,Op,gL,yp,c4,SL,lR,TL,AL,Np=Re(()=>{aR=require("node:fs/promises"),bp=M(st()),cR=M(ks());k();Op=M(ce()),gL=M(oe());Op.default.initSync();yp=new Map,c4=Op.default.get(B.STORAGE_RECLAMATION_THRESHOLD)??.4,SL=(0,gL.convertToMS)(Op.default.get(B.STORAGE_RECLAMATION_INTERVAL))||36e5;a(kf,"onStorageReclamation");TL=a(async e=>{if(aR.statfs){let t=await(0,aR.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"),AL=TL;a(uR,"runReclamationHandlers");a(l4,"setAvailableSpaceRatioGetter")});var UL={};Ue(UL,{ACTION_32_BIT:()=>Ep,ACTION_64_BIT:()=>_4,AUDIT_STORE_OPTIONS:()=>qf,Decoder:()=>Pc,HAS_BLOBS:()=>Ur,HAS_CURRENT_RESIDENCY_ID:()=>wc,HAS_EXPIRATION_EXTENDED_TYPE:()=>Hf,HAS_ORIGINATING_OPERATION:()=>Bf,HAS_PREVIOUS_RESIDENCY_ID:()=>Ic,REMOTE_SEQUENCE_UPDATE:()=>Dp,createAuditEntry:()=>Oc,getLastRemoved:()=>d4,openAuditStore:()=>Cp,readAuditEntry:()=>gt,removeAuditEntry:()=>Pp,setAuditRetention:()=>f4,transactionKeyEncoder:()=>DL});function Cp(e){let t=e.auditStore=e.openDB(dR.AUDIT_STORE_NAME,{create:!1,...qf});t||(t=e.auditStore=e.openDB(dR.AUDIT_STORE_NAME,qf),bL(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=_R;kf(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()-fR/(1+i*i)})){try{_=Pp(t,m,S)}catch(g){au.warn("Error removing audit entry",g)}if(h=m,await new Promise(setImmediate),++d>=u4){o=10;break}}await _}finally{d===0?o=Math.min(o<<1,fR/10):(bL(t,h),o>100&&(o=o>>1)),f(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Gf.getWorkerIndex)()===(0,Gf.getWorkerCount)()-1&&c(),(0,Gf.getWorkerIndex)()===0&&!yL)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(yL=!0,au.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 Pp(e,t,r){let n=h4(r),s;if(n&Ur){s=gt(r);let i=e.tableStores[s.tableId];if(i){let o=s.type==="message"?null:i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&oo(()=>aa(s.getValue(i)),i.rootStore)}}if((n&15)===hR){s=s||gt(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 bL(e,t){mR[0]=t,e.put(Symbol.for("last-removed"),LL)}function d4(e){let t=e.get(Symbol.for("last-removed"));if(t)return LL.set(t),mR[0]}function f4(e,t=_R){fR=e,_R=t}function Oc(e,t,r,n,s,i,o,c,l,u,f,d,_){let h=ML[o];if(!h)throw new Error(`Invalid audit entry type ${o}`);let m=1;if(n&&(n>1?ca.setFloat64(0,n):_s.set(tR),m=9),l){if(l&255)throw new Error("Illegal extended type");m+=3}R(s),R(t),g(r),ca.setFloat64(m,e),m+=8,l&wc&&R(u),l&Ic&&R(f),l&Hf&&(ca.setFloat64(m,d),m+=8),l&Bf&&R(vL[_]),i?g(i):_s[m++]=0,l?ca.setUint32(n?8:0,h|l|3221225472):_s[n?8:0]=h;let S=_s.subarray(0,m);if(c)return Buffer.concat([S,c]);return S;function g(E){let T=m;m+=1,m=(0,Cc.writeKey)(E,_s,m);let N=m-T-1;N>127?N>16383?(au.error("Key or username was too large for audit entry",E),m=T+1,_s[T]=0):(_s.copyWithin(T+2,T+1,m),ca.setUint16(T,N|32768),m++):_s[T]=N}function R(E){E<128?_s[m++]=E:E<16384?(ca.setUint16(m,E|32768),m+=2):E<1056964608?(ca.setUint32(m,E|3221225472),m+=4):(_s[m]=255,ca.setUint32(m+1,E),m+=5)}}function h4(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 Pc(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function gt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new Pc(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&wc&&(_=n.readInt()),i&Ic&&(h=n.readInt()),i&Hf&&(m=n.readFloat64()),i&Bf){let T=n.readInt();S=vL[T]}l=n.readInt();let g=n.position,R=n.position+=l,E;return{type:ML[i&7],tableId:c,nodeId:o,get recordId(){return(0,Cc.readKey)(e,u,f)},getBinaryRecordId(){return e.subarray(u,f)},version:d,previousLocalTime:s,get user(){return R>g?(0,Cc.readKey)(e,g,R):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(T,N,v){if(i&wp||i&Ff&&!N)return E||(E=oo(()=>T.decoder.decode(e.subarray(n.position,r)),T.rootStore)),E;if(i&Ff&&v)return iR(T.getEntry(this.recordId),v,T)},getBinaryValue(){return i&(wp|Ff)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:_,previousResidencyId:h,expiresAt:m,originatingOperation:S}}catch(n){return au.error("Reading audit entry error",n,e),{}}}var Cc,Ip,dR,Gf,PL,au,_s,ca,DL,qf,fR,u4,mR,LL,_R,yL,wp,Ff,OL,hR,NL,wL,IL,CL,Ep,_4,Dp,wc,Ic,Bf,Hf,Ur,ML,vL,Pc,Ai=Re(()=>{Cc=require("ordered-binary"),Ip=M(ce()),dR=M(kt());k();Gf=M(st()),PL=M(oe());ou();au=M(ee());Rp();hn();Np();(0,Ip.initSync)();_s=Buffer.alloc(2816),ca=new DataView(_s.buffer,_s.byteOffset,2816),DL={writeKey(e,t,r){return e===xf?(t.set(xf,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,Cc.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,Cc.readKey)(e,t,r)}},qf={encoding:"binary",keyEncoder:DL},fR=(0,PL.convertToMS)((0,Ip.get)(B.LOGGING_AUDITRETENTION))||86400*3,u4=1e3,mR=new Float64Array(1),LL=new Uint8Array(mR.buffer),_R=1e4,yL=!1;a(Cp,"openAuditStore");a(Pp,"removeAuditEntry");a(bL,"updateLastRemoved");a(d4,"getLastRemoved");a(f4,"setAuditRetention");wp=16,Ff=32,OL=1,hR=2,NL=3,wL=4,IL=5,CL=6,Ep=14,_4=15,Dp=11,wc=512,Ic=1024,Bf=2048,Hf=4096,Ur=8192,ML={put:OL|wp,[OL]:"put",delete:hR,[hR]:"delete",message:NL|wp,[NL]:"message",invalidate:wL|Ff,[wL]:"invalidate",patch:IL|Ff,[IL]:"patch",relocate:CL,[CL]:"relocate"},vL={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(Oc,"createAuditEntry");a(h4,"readAction");a(gt,"readAuditEntry");Pc=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 gR(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=BL,m4(e.primaryStore,e.auditStore)):(c=xL,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{HL(xL[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=Xl(t);let f=new ER(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 HL(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),kL(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=gt(s),o=e[i.tableId];if(!o)continue;let c=i.recordId,l=Xl(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,pR.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,pR.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 m4(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=BL[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{HL(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function kL(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function FL(e){return e.nextTransaction||(gR({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),kL(e)),e.nextTransaction}var pR,xL,BL,ER,SR=Re(()=>{pR=M(ee());Wl();Zl();Ai();xL=Object.create(null),BL=Object.create(null);a(gR,"addSubscription");ER=class extends xn{static{a(this,"Subscription")}listener;subscriptions;startTime;constructor(t){super(),this.listener=t,this.on("close",()=>this.end())}end(){if(this.subscriptions){if(this.subscriptions.splice(this.subscriptions.indexOf(this),1),this.subscriptions.length===0){let t=this.subscriptions.tables;if(t){let r=this.subscriptions.key;if(t.delete(r),t.size===0){let n=t.envs,s=t.dbi;delete n[s]}}}this.subscriptions=null}}toJSON(){return{name:"subscription"}}};a(HL,"notifyFromTransactionData");a(m4,"listenToCommits");a(kL,"nextTransaction");a(FL,"whenNextTransaction")});var qL=C((kRe,GL)=>{"use strict";var TR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};GL.exports=TR});var VL=C((GRe,$L)=>{"use strict";var AR=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};$L.exports=AR});var $f=C(($Re,YL)=>{"use strict";var KL=ce(),p4=(k(),P(q)),{RecordEncoder:E4}=(ou(),P(mL));KL.initSync();var g4=KL.get(p4.CONFIG_PARAMS.STORAGE_CACHING)!==!1,RR=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=g4&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:E4})}};YL.exports=RR});var Vf=C((KRe,WL)=>{"use strict";var kn=ce(),hs=(k(),P(q));kn.initSync();var Lp=class{static{a(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",kn.get(hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=kn.get(hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),kn.get(hs.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=kn.get(hs.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=kn.get(hs.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};WL.exports=Lp;Lp.MAX_DBS=1e4});var dt=C((WRe,nM)=>{"use strict";var bR=require("lmdb"),Fs=require("fs-extra"),Fn=require("path"),Mp=un(),jL=ee(),En=Un().LMDB_ERRORS_ENUM,vp=VL(),OR=$f(),JL=Vf(),la=kt(),zL=(k(),P(q)),{table:S4,resetDatabases:T4}=(xe(),P(at)),QL=ce(),Gs=la.INTERNAL_DBIS_NAME,XL=la.DBI_DEFINITION_NAME,A4="data.mdb",R4="lock.mdb",Kf=".mdb",y4="-lock",yR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=ms(t,r),this.key_type=this.dbi[la.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[la.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new bR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Up(e,t){if(e===void 0)throw new Error(En.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(En.ENV_NAME_REQUIRED)}a(Up,"pathEnvNameValidation");async function NR(e,t,r=!0){try{await Fs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(En.INVALID_BASE_PATH):n}try{let n=Fn.join(e,t+Kf);return await Fs.access(n,Fs.constants.R_OK|Fs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Fs.access(Fn.join(e,t,A4),Fs.constants.R_OK|Fs.constants.F_OK),Fn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(En.INVALID_ENVIRONMENT)}else throw new Error(En.INVALID_ENVIRONMENT);throw n}}a(NR,"validateEnvironmentPath");function xp(e,t){if(Mp.validateEnv(e),t===void 0)throw new Error(En.DBI_NAME_REQUIRED)}a(xp,"validateEnvDBIName");async function b4(e,t,r=!1,n=!1){Up(e,t);let s=Fn.basename(e);t=t.toString();let i=QL.get(zL.CONFIG_PARAMS.DATABASES);i||QL.setProperty(zL.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await NR(e,t,n),ZL(e,t,r)}catch(o){if(o.message===En.INVALID_ENVIRONMENT){let c=Fn.join(e,t);await Fs.mkdirp(n?c:e);let l=new JL(n?c:c+Kf,!1),u=bR.open(l);u.dbis=Object.create(null);let f=new OR(!1);u.openDB(Gs,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=wR(e,t,r);return u[la.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(b4,"createEnvironment");async function O4(e,t,r,n=!0){Up(e,t),t=t.toString();let s=Fn.join(e,t);return S4({table:t,database:Fn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(O4,"copyEnvironment");async function ZL(e,t,r=!1){Up(e,t),t=t.toString();let n=wR(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 NR(e,t),i=Fn.join(e,t+Kf),o=s!=i,c=new JL(s,o),l=bR.open(c);l.dbis=Object.create(null);let u=tM(l);for(let f=0;f<u.length;f++)ms(l,u[f]);return l[la.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(ZL,"openEnvironment");async function N4(e,t,r=!1){Up(e,t),t=t.toString();let n=Fn.join(e,t+Kf),s=await NR(e,t);if(global.lmdb_map!==void 0){let i=wR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await eM(o),delete global.lmdb_map[i]}}await Fs.remove(s),await Fs.remove(s===n?s+y4:Fn.join(Fn.dirname(s),R4))}a(N4,"deleteEnvironment");async function eM(e){Mp.validateEnv(e);let t=e[la.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(eM,"closeEnvironment");function wR(e,t,r=!1){let s=`${Fn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(wR,"getCachedEnvironmentName");function w4(e){Mp.validateEnv(e);let t=Object.create(null),r=ms(e,Gs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Gs)try{t[n]=Object.assign(new vp,s)}catch{jL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(w4,"listDBIDefinitions");function tM(e){Mp.validateEnv(e);let t=[],r=ms(e,Gs);for(let{key:n}of r.getRange({start:!1}))n!==Gs&&t.push(n);return t}a(tM,"listDBIs");function I4(e,t){let n=ms(e,Gs).getEntry(t),s=new vp;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{jL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(I4,"getDBIDefinition");function rM(e,t,r,n=!r){if(xp(e,t),t=t.toString(),t===Gs)throw new Error(En.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return ms(e,t)}catch(s){if(s.message===En.DBI_DOES_NOT_EXIST){let i=new OR(r,n===!0),o=e.openDB(t,i),c=new vp(r===!0,n);return o[XL]=c,ms(e,Gs).putSync(t,c),e.dbis[t]=o,o}throw s}}a(rM,"createDBI");function ms(e,t){if(xp(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Gs?r=I4(e,t):r=new vp,r===void 0)throw new Error(En.DBI_DOES_NOT_EXIST);let n;try{let s=new OR(r.dup_sort,r.useVersions);if(n=e.openDB(t,s),n.db===void 0)throw new Error("MDB_NOTFOUND")}catch(s){throw s.message.includes("MDB_NOTFOUND")===!0?new Error(En.DBI_DOES_NOT_EXIST):s}return n[XL]=r,e.dbis[t]=n,n}a(ms,"openDBI");function C4(e,t){xp(e,t),t=t.toString();let r=ms(e,t),n=r.getStats();return r[la.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(C4,"statDBI");async function P4(e,t){try{let r=Fn.join(e,t+Kf);return(await Fs.stat(r)).size}catch{throw new Error(En.INVALID_ENVIRONMENT)}}a(P4,"environmentDataSize");function D4(e,t){if(xp(e,t),t=t.toString(),t===Gs)throw new Error(En.CANNOT_DROP_INTERNAL_DBIS_NAME);ms(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],ms(e,Gs).removeSync(t)}a(D4,"dropDBI");function L4(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{ms(e,i)}catch(o){if(o.message===En.DBI_DOES_NOT_EXIST)rM(e,i,i!==t,i===t),n=!0;else throw o}}n&&T4()}a(L4,"initializeDBIs");nM.exports={openDBI:ms,openEnvironment:ZL,createEnvironment:b4,listDBIs:tM,listDBIDefinitions:w4,createDBI:rM,dropDBI:D4,statDBI:C4,deleteEnvironment:N4,initializeDBIs:L4,TransactionCursor:yR,environmentDataSize:P4,copyEnvironment:O4,closeEnvironment:eM}});var oM=C((QRe,iM)=>{"use strict";var IR=dt(),M4=ee(),sM=Un().LMDB_ERRORS_ENUM;iM.exports=v4;async function v4(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 IR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==sM.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await IR.closeEnvironment(global.lmdb_map[n]),await IR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==sM.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){M4.error(t)}}a(v4,"cleanLMDBMap")});var ao=C((JRe,U4)=>{U4.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 SM=C((ZRe,gM)=>{"use strict";var CR=require("recursive-iterator"),x4=require("alasql"),PR=require("clone"),aM=oe(),{handleHDBError:cM,hdb_errors:B4}=me(),{HDB_ERROR_MSGS:lM,HTTP_STATUS_CODES:uM}=B4,{getDatabases:H4}=(xe(),P(at)),k4=["DISTINCT_ARRAY"],dM=Symbol("validateTables"),DR=Symbol("validateTable"),XRe=Symbol("getAllColumns"),fM=Symbol("validateAllColumns"),Bp=Symbol("findColumn"),_M=Symbol("validateOrderBy"),Yf=Symbol("validateSegment"),LR=Symbol("validateColumn"),hM=Symbol("setColumnsForTable"),mM=Symbol("checkColumnsForAsterisk"),pM=Symbol("validateGroupBy"),EM=Symbol("hasColumns"),MR=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[dM](),this[mM](),this[fM]()}[dM](){if(this[EM]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[DR](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[DR](t.table)})}}[EM](){let t=!1,r=new CR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[DR](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=H4();if(!r[t.databaseid])throw cM(new Error,lM.SCHEMA_NOT_FOUND(t.databaseid),uM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw cM(new Error,lM.TABLE_NOT_FOUND(t.databaseid,t.tableid),uM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=PR(s);i.table=PR(t),this.attributes.push(i)})}[Bp](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)}[mM](){let t=new CR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[hM](r.tableid)}[hM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new x4.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[fM](){this[Yf](this.statement.columns,!1),this[Yf](this.statement.joins,!1),this[Yf](this.statement.where,!1),this[pM](this.statement.group,!1),this[Yf](this.statement.order,!0)}[Yf](t,r){if(!t)return;let n=new CR(t),s=[];for(let{node:i,path:o}of n)!aM.isEmpty(i)&&!aM.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[_M](i):s.push(this[LR](i)));return s}[pM](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&k4.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=PR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Bp](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[Bp](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`}[_M](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[LR](t)}[LR](t){let r=this[Bp](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]}};gM.exports=MR});var AM=C((tye,TM)=>{"use strict";var vR=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")}};TM.exports=vR});var yM=C((nye,RM)=>{"use strict";var UR=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};RM.exports=UR});var OM=C((iye,bM)=>{"use strict";var xR=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}};bM.exports=xR});var wM=C((aye,NM)=>{"use strict";var BR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};NM.exports=BR});var Lc=C((fye,PM)=>{"use strict";var F4=dt(),G4=yM(),q4=OM(),$4=wM(),Ri=un(),Wf=Un().LMDB_ERRORS_ENUM,V4=kt(),co=(k(),P(q)),K4=oe(),Y4=require("uuid"),lye=require("lmdb"),{handleHDBError:W4,hdb_errors:z4}=me(),{OVERFLOW_MARKER:uye,MAX_SEARCH_KEY_LENGTH:dye}=V4,IM=ce();IM.initSync();var Hp=IM.get(co.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),HR=co.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Dc=co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function Q4(e,t,r,n,s=Ri.getNextMonotonicTime()){qR(e,t,r,n),kR(e,t,r);let i=new G4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];CM(u,!0,s);let f=j4(e,t,r,u),d=u[t];o.push(f),c.push(d)}return FR(o,c,n,i,s)}a(Q4,"insertRecords");function j4(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let o=r[i];if(o===t||n.hasOwnProperty(o)===!1)continue;let c=n[o];if(typeof c=="function"){let f=c([[{}]]);Array.isArray(f)&&(c=f[0][co.FUNC_VAL],n[o]=c)}let l=Ri.getIndexedValues(c),u=e.dbis[o];if(l){Hp&&u.prefetch(l.map(f=>({key:f,value:s})),kp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}Hp&&e.dbis[t].prefetch([s],kp),e.dbis[t].put(s,n,n[Dc])})}a(j4,"insertRecord");function J4(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(J4,"removeSkippedRecords");function CM(e,t,r){let n=r>0;(n||!Number.isInteger(e[Dc]))&&(e[Dc]=r||(r=Ri.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[HR]))&&(e[HR]=r||Ri.getNextMonotonicTime()):delete e[HR]}a(CM,"setTimestamps");function kR(e,t,r){r.indexOf(co.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(co.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),F4.initializeDBIs(e,t,r)}a(kR,"initializeTransaction");async function X4(e,t,r,n,s=Ri.getNextMonotonicTime()){qR(e,t,r,n),kR(e,t,r);let i=new q4,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let f=n[u],d=f[t],_;try{_=GR(e,t,f,d,i,!0,s)}catch{i.skipped_hashes.push(d),o.push(u);continue}c.push(_),l.push(d)}return FR(c,l,n,i,s,o)}a(X4,"updateRecords");async function Z4(e,t,r,n,s=Ri.getNextMonotonicTime()){try{qR(e,t,r,n)}catch(l){throw W4(l,l.message,z4.HTTP_STATUS_CODES.BAD_REQUEST)}kR(e,t,r);let i=new $4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;K4.isEmpty(u[t])?(f=Y4.v4(),u[t]=f):f=u[t];let d=GR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return FR(o,c,n,i,s)}a(Z4,"upsertRecords");async function FR(e,t,r,n,s,i=[]){let o=await Promise.all(e);for(let c=0,l=o.length;c<l;c++)o[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Ri.getNextMonotonicTime(),J4(r,i),n}a(FR,"finalizeWrite");function GR(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(CM(r,!f,o),Number.isInteger(r[Dc])&&u[Dc]>r[Dc])return!1;f&&s.original_records.push(u);let d,_=a(()=>{for(let m in r){if(!r.hasOwnProperty(m)||m===t)continue;let S=r[m],g=e.dbis[m];if(g===void 0)continue;let R=u[m];if(typeof S=="function"){let T=S([[u]]);Array.isArray(T)&&(S=T[0][co.FUNC_VAL],r[m]=S)}if(S===R)continue;let E=Ri.getIndexedValues(R);if(E){Hp&&g.prefetch(E.map(T=>({key:T,value:n})),kp);for(let T=0,N=E.length;T<N;T++)g.remove(E[T],n)}if(E=Ri.getIndexedValues(S),E){Hp&&g.prefetch(E.map(T=>({key:T,value:n})),kp);for(let T=0,N=E.length;T<N;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[Dc])},"do_put");return l?d=c.ifVersion(n,l.version,_):d=c.ifNoExists(n,_),d.then(h=>h?!0:GR(e,t,r,n,s,i,o))}a(GR,"updateUpsertRecord");function e3(e,t,r){if(Ri.validateEnv(e),t===void 0)throw new Error(Wf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Wf.WRITE_ATTRIBUTES_REQUIRED):new Error(Wf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(e3,"validateBasic");function qR(e,t,r,n){if(e3(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Wf.RECORDS_REQUIRED):new Error(Wf.RECORDS_MUST_BE_ARRAY)}a(qR,"validateWrite");function kp(){}a(kp,"noop");PM.exports={insertRecords:Q4,updateRecords:X4,upsertRecords:Z4}});var it=C((hye,DM)=>{"use strict";var gn=require("validate.js");gn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||gn.validators.type.checks[t](e)?null:` must be a '${t}' value`};gn.validators.type.checks={Object:a(function(e){return gn.isObject(e)&&!gn.isArray(e)},"Object"),Array:gn.isArray,Integer:gn.isInteger,Number:gn.isNumber,String:gn.isString,Date:gn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};gn.validators.hasValidFileExt=function(e,t){return gn.isString(e)?e===""?"can't be blank":t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`:null};DM.exports={validateObject:t3,validateObjectAsync:r3,validateBySchema:n3};function t3(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=gn(e,t,{format:"flat"});return r?new Error(r):null}a(t3,"validateObject");async function r3(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await gn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(r3,"validateObjectAsync");function n3(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(n3,"validateBySchema")});var MM=C((pye,LM)=>{"use strict";var s3=require("uuid"),$R=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||s3.v4(),this.schema_table=`${this.schema}.${this.table}`}};LM.exports=$R});var Fp=C((gye,vM)=>{"use strict";var i3=MM(),VR=class extends i3{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}};vM.exports=VR});var xM=C((Tye,UM)=>{"use strict";UM.exports=a3;var o3="inserted";function a3(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===o3?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(a3,"returnObject")});var Gp=C((yye,HM)=>{"use strict";var c3=(k(),P(q)),KR=dt(),l3=Lc(),{getSystemSchemaPath:u3,getSchemaPath:d3}=Et(),Rye=ao(),{validateBySchema:f3}=it(),zf=require("joi"),_3=Fp(),h3=xM(),{handleHDBError:m3,hdb_errors:p3,ClientError:E3}=me(),BM=oe(),{HTTP_STATUS_CODES:g3}=p3,S3="inserted";HM.exports=T3;async function T3(e){let t=f3(e,zf.object({database:zf.string(),schema:zf.string(),table:zf.string().required(),attribute:zf.string().required()}));if(t)throw new E3(t.message);let r=!e.skip_table_check&&BM.checkGlobalSchemaTable(e.schema,e.table);if(r)throw m3(new Error,r,g3.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=BM.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 _3(e.schema,e.table,e.attribute,e.id);try{let i=await KR.openEnvironment(d3(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}`);KR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await KR.openEnvironment(u3(),c3.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await l3.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return h3(S3,c,{records:[s]},l)}catch(i){throw i}}a(T3,"lmdbCreateAttribute")});var bi=C((Oye,GM)=>{"use strict";var FM=oe(),kM=(k(),P(q)),cu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,yi=require("joi"),ua={schema_format:{pattern:cu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},A3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number(),yi.array()).required(),R3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number()),y3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number()).required();function b3(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>ua.schema_length.maximum?`'${e}' maximum of 250 characters`:cu.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(b3,"checkValidTable");function O3(e,t){return FM.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(O3,"validateSchemaExists");function N3(e,t){let r=t.state.ancestors[0].schema;return FM.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(N3,"validateTableExists");function w3(e,t){return e.toLowerCase()===kM.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${kM.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(w3,"validateSchemaName");GM.exports={common_validators:ua,schema_regex:cu,hdb_schema_table:A3,validateSchemaExists:O3,validateTableExists:N3,validateSchemaName:w3,checkValidTable:b3,hdb_database:R3,hdb_table:y3}});var WR=C((wye,$M)=>{var{hdb_table:I3,hdb_database:qM}=bi(),C3=it(),YR=require("joi"),P3={undefined:"undefined",null:"null"},D3=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||P3[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"),L3=YR.object({database:qM,schema:qM,table:I3,records:YR.array().items(YR.object().custom(D3)).required()});$M.exports=function(e){return C3.validateBySchema(e,L3)}});var Qf=C((Pye,KM)=>{"use strict";var lo=oe(),VM=ee(),Cye=WR(),{getDatabases:M3}=(xe(),P(at)),{ClientError:Mc}=me();KM.exports=v3;function v3(e){if(lo.isEmpty(e))throw new Mc("invalid update parameters defined.");if(lo.isEmptyOrZeroLength(e.schema))throw new Mc("invalid schema specified.");if(lo.isEmptyOrZeroLength(e.table))throw new Mc("invalid table specified.");if(!Array.isArray(e.records))throw new Mc("records must be an array");let t=M3()[e.schema]?.[e.table];if(lo.isEmpty(t))throw new Mc(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.primaryKey,n=new Set,s={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(o=>{if(i&&lo.isEmptyOrZeroLength(o[r]))throw VM.error("a valid hash attribute must be provided with update record:",o),new Mc("a valid hash attribute must be provided with update record, check log for more info");if(!lo.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw VM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Mc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!lo.isEmpty(o[r])&&o[r]!==""&&n.has(lo.autoCast(o[r]))&&(o.skip=!0),n.add(lo.autoCast(o[r]));for(let c in o)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}a(v3,"insertUpdateValidate")});var qp=C((Lye,WM)=>{"use strict";var YM=oe(),U3=(k(),P(q)),x3=ee(),B3=Gp(),H3=Fp(),k3=uo(),{SchemaEventMsg:F3}=qs(),G3="already exists in";WM.exports=q3;async function q3(e,t,r){if(YM.isEmptyOrZeroLength(r))return r;let n=[];YM.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 $3(e,t.schema,t.name,i)})),s}a(q3,"lmdbCheckForNewAttributes");async function $3(e,t,r,n){let s=new H3(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await V3(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(G3))x3.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a($3,"createNewAttribute");async function V3(e){let t;return t=await B3(e),k3.signalSchemaChange(new F3(process.pid,U3.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(V3,"createAttribute")});var lu=C((vye,zM)=>{"use strict";var zR=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}};zM.exports=zR});var jM=C((xye,QM)=>{"use strict";var K3=lu(),Y3=(k(),P(q)).OPERATIONS_ENUM,QR=class extends K3{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(Y3.INSERT,r,n,s,i),this.records=t}};QM.exports=QR});var XM=C((Hye,JM)=>{"use strict";var W3=lu(),z3=(k(),P(q)).OPERATIONS_ENUM,jR=class extends W3{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(z3.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};JM.exports=jR});var ev=C((Fye,ZM)=>{"use strict";var Q3=lu(),j3=(k(),P(q)).OPERATIONS_ENUM,JR=class extends Q3{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(j3.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};ZM.exports=JR});var rv=C((qye,tv)=>{"use strict";var J3=lu(),X3=(k(),P(q)).OPERATIONS_ENUM,XR=class extends J3{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(X3.DELETE,n,s,t,i),this.original_records=r}};tv.exports=XR});var jf=C((Kye,ov)=>{"use strict";var Vye=require("path"),nv=dt(),Z3=jM(),eX=XM(),tX=ev(),rX=rv(),uu=kt(),sv=oe(),{CONFIG_PARAMS:nX}=(k(),P(q)),iv=ce();iv.initSync();var $p=(k(),P(q)).OPERATIONS_ENUM,{getTransactionAuditStorePath:sX}=Et();ov.exports=iX;async function iX(e,t){if(iv.get(nX.LOGGING_AUDITLOG)===!1)return;let r=sX(e.schema,e.table),n=await nv.openEnvironment(r,e.table,!0),s=oX(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){nv.initializeDBIs(n,uu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,uu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[uu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[uu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),sv.isEmpty(s.user_name)||n.dbis[uu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[uu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a(iX,"writeTransaction");function oX(e,t){let r=sv.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===$p.INSERT)return new Z3(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===$p.UPDATE)return new eX(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===$p.UPSERT)return new tX(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===$p.DELETE)return new rX(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(oX,"createTransactionObject")});var ZR=C((zye,av)=>{"use strict";var aX=Qf(),Wye=Ef(),Jf=(k(),P(q)),cX=gf(),lX=Lc().insertRecords,uX=dt(),dX=ee(),fX=qp(),{getSchemaPath:_X}=Et(),hX=jf();av.exports=mX;async function mX(e){try{let{schema_table:t,attributes:r}=aX(e);cX(e,r,t.hash_attribute),e.schema!==Jf.SYSTEM_SCHEMA_NAME&&(r.includes(Jf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Jf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Jf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Jf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await fX(e.hdb_auth_header,t,r),s=_X(e.schema,e.table),i=await uX.openEnvironment(s,e.table),o=await lX(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await hX(e,o)}catch(c){dX.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(mX,"lmdbCreateRecords")});var uv=C((jye,lv)=>{"use strict";var cv=(k(),P(q)),pX=ZR(),EX=Ef(),gX=require("fs-extra"),{getSchemaPath:SX}=Et();lv.exports=TX;async function TX(e){let t=[{name:e.schema,createddate:Date.now()}],r=new EX(cv.SYSTEM_SCHEMA_NAME,cv.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await pX(r),await gX.mkdirp(SX(e.schema))}a(TX,"lmdbCreateSchema")});var fv=C((Xye,dv)=>{"use strict";var ey=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}};dv.exports=ey});var pv=C((nbe,mv)=>{"use strict";var _v=dt(),ty=un(),ry=Un().LMDB_ERRORS_ENUM,AX=kt(),hv=ee(),ebe=oe(),RX=require("lmdb"),yX=fv(),bX=(k(),P(q)),{OVERFLOW_MARKER:tbe,MAX_SEARCH_KEY_LENGTH:rbe}=AX,OX=bX.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function NX(e,t,r,n){if(ty.validateEnv(e),t===void 0)throw new Error(ry.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(ry.IDS_REQUIRED):new Error(ry.IDS_MUST_BE_ITERABLE);try{let s=_v.listDBIs(e);_v.initializeDBIs(e,t,s);let i=new yX,o,c=[],l=[];for(let _=0,h=r.length;_<h;_++)try{o=r[_];let m=e.dbis[t].get(o);if(!m||n&&m[OX]>n){i.skipped.push(o);continue}let S=e.dbis[t].ifVersion(o,RX.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let g=0;g<s.length;g++){let R=s[g];if(!m.hasOwnProperty(R)||R===t)continue;let E=e.dbis[R],T=m[R];if(T!=null)try{let N=ty.getIndexedValues(T);if(N)for(let v=0,H=N.length;v<H;v++)E.remove(N[v],o)}catch{hv.warn(`cannot delete from attribute: ${R}, ${T}:${o}`)}}});c.push(S),l.push(o),i.original_records.push(m)}catch(m){hv.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=ty.getNextMonotonicTime(),i}catch(s){throw s}}a(NX,"deleteRecords");mv.exports={deleteRecords:NX}});var Xf=C((ibe,gv)=>{"use strict";var du=oe(),wX=pv(),IX=dt(),{getSchemaPath:CX}=Et(),PX=jf(),DX=ee();gv.exports=LX;async function LX(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(du.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(du.isEmptyOrZeroLength(e.hash_values)&&!du.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];du.isEmpty(l)||e.hash_values.push(l)}}if(du.isEmptyOrZeroLength(e.hash_values))return Ev([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(du.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=CX(e.schema,e.table),i=await IX.openEnvironment(s,e.table),o=await wX.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await PX(e,o)}catch(c){DX.error(`unable to write transaction due to ${c.message}`)}return Ev(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(LX,"lmdbDeleteRecords");function Ev(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(Ev,"createDeleteResponse")});var sy=C((cbe,Sv)=>{"use strict";var MX=(k(),P(q)),abe=un();function ny(e,t){let r=Object.create(null);if(t.length===1&&MX.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(ny,"parseRow");function vX(e,t,r,n){let s=ny(r,e);n.push(s)}a(vX,"searchAll");function UX(e,t,r,n){let s=ny(r,e);n[t]=s}a(UX,"searchAllToMap");function xX(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(xX,"iterateDBI");function vc(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(vc,"pushResults");function BX(e,t,r,n,s,i){t.toString().endsWith(e)&&vc(t,r,n,s,i)}a(BX,"endsWith");function HX(e,t,r,n,s,i){t.toString().includes(e)&&vc(t,r,n,s,i)}a(HX,"contains");function kX(e,t,r,n,s,i){t>e&&vc(t,r,n,s,i)}a(kX,"greaterThanCompare");function FX(e,t,r,n,s,i){t>=e&&vc(t,r,n,s,i)}a(FX,"greaterThanEqualCompare");function GX(e,t,r,n,s,i){t<e&&vc(t,r,n,s,i)}a(GX,"lessThanCompare");function qX(e,t,r,n,s,i){t<=e&&vc(t,r,n,s,i)}a(qX,"lessThanEqualCompare");Sv.exports={parseRow:ny,searchAll:vX,searchAllToMap:UX,iterateDBI:xX,endsWith:BX,contains:HX,greaterThanCompare:kX,greaterThanEqualCompare:FX,lessThanCompare:GX,lessThanEqualCompare:qX,pushResults:vc}});var fu=C((_be,Nv)=>{"use strict";var da=dt(),ube=ee(),Gn=un(),Vp=kt(),zt=Un().LMDB_ERRORS_ENUM,dbe=oe(),$X=(k(),P(q)),Kp=sy(),{parseRow:VX}=Kp,fbe=require("lmdb"),{OVERFLOW_MARKER:Tv,MAX_SEARCH_KEY_LENGTH:KX}=Vp;function Av(e,t,r,n=!1,s=void 0,i=void 0){return Uc(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(Av,"iterateFullIndex");function Zf(e,t,r,n,s,i=!1,o=void 0,c=void 0,l=!1,u=!1){return Uc(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(Zf,"iterateRangeBetween");function Uc(e,t,r,n){let s=e.database||e,i=da.openDBI(s,r);i[Vp.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&da.openDBI(s,t);let o;e.database?o=e:(o=e.useReadTransaction(),o.database=e);let c=n(o,i,s,t);return c.transaction=o,e.database||(c.onDone=()=>{o.done()}),c}a(Uc,"setupTransaction");function Rv(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(Tv)){if(!s)if(r)s=da.openDBI(e,r);else{let l=da.listDBIs(e);for(let u=0,f=l.length;u<f&&(s=da.openDBI(e,l[u]),!s[Vp.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(Rv,"getOverflowCheck");function YX(e,t,r,n=!1,s=void 0,i=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return Uc(e,t,t,(o,c,l)=>(Yp(r),r=e_(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>VX(u.value,r))))}a(YX,"searchAll");function WX(e,t,r,n=!1,s=void 0,i=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);Yp(r),r=e_(e.database||e,r);let o=new Map;for(let{key:c,value:l}of Av(e,t,t,n,s,i))o.set(c,Kp.parseRow(l,r));return o}a(WX,"searchAllToMap");function zX(e,t,r=!1,n=void 0,s=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=Av(e,void 0,t,r,n,s),c=o.transaction,l=Rv(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(zX,"iterateDBI");function QX(e,t){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return da.statDBI(e,t).entryCount}a(QX,"countAll");function jX(e,t,r,n,s=!1,i=void 0,o=void 0){return fa(e,r,n),Uc(e,t,r,(c,l,u,f)=>(n=Gn.convertKeyValueToWrite(n),f===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:o}).map(d=>({key:n,value:d}))))}a(jX,"equals");function JX(e,t,r){return fa(e,t,r),da.openDBI(e,t).getValuesCount(r)}a(JX,"count");function XX(e,t,r,n,s=!1,i=void 0,o=void 0){return fa(e,r,n),Uc(e,null,r,(c,l)=>{n=Gn.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let f;if(s===!0){let d;for(let _ of l.getKeys({transaction:c,start:n}))if(!_.startsWith(n)){d=_;break}return d!==void 0&&(Number.isInteger(o)?o++:i++),f=l.getRange({transaction:c,start:d,end:void 0,reverse:s,limit:i,offset:o}).map(_=>{let{key:h}=_;if(h!==d){if(h.toString().startsWith(n))return _;if(u===!0)return f.DONE}}),f.filter(_=>_)}else return f=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:o}).map(d=>{if(d.key.toString().startsWith(n))return d;if(u===!0)return f.DONE}),u?f:f.filter(d=>d)})}a(XX,"startsWith");function ZX(e,t,r,n,s=!1,i=void 0,o=void 0){return yv(e,t,r,n,s,i,o,!0)}a(ZX,"endsWith");function yv(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return fa(e,r,n),Uc(e,null,r,(l,u,f,d)=>{let _=Rv(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(Tv)?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[Vp.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(yv,"contains");function e6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Zf(e,t,r,n,l,s,i,o,!0,!1)}a(e6,"greaterThan");function t6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Zf(e,t,r,n,l,s,i,o,!1,!1)}a(t6,"greaterThanEqual");function r6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Zf(e,t,r,l,n,s,i,o,!1,!0)}a(r6,"lessThan");function n6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Zf(e,t,r,l,n,s,i,o,!1,!1)}a(n6,"lessThanEqual");function s6(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(Gn.validateEnv(e),r===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(zt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(zt.END_VALUE_REQUIRED);if(n=Gn.convertKeyValueToWrite(n),s=Gn.convertKeyValueToWrite(s),n>s)throw new Error(zt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return Zf(e,t,r,n,s,i,o,c)}a(s6,"between");function i6(e,t,r,n){Gn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(Yp(r),r=e_(s,r),n===void 0)throw new Error(zt.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=Kp.parseRow(c,r)),o}a(i6,"searchByHash");function o6(e,t,r){Gn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(o6,"checkHashExists");function a6(e,t,r,n,s=[]){return Ov(e,t,r,n,s),bv(e,t,r,n,s).map(i=>i[1])}a(a6,"batchSearchByHash");function c6(e,t,r,n,s=[]){Ov(e,t,r,n,s);let i=new Map;for(let[o,c]of bv(e,t,r,n,s))i.set(o,c);return i}a(c6,"batchSearchByHashToMap");function bv(e,t,r,n,s=[]){return Uc(e,t,t,(i,o,c)=>{r=e_(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,Kp.parseRow(f,r)];s.push(u)}).filter(u=>u)})}a(bv,"batchHashSearch");function Ov(e,t,r,n,s){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(Yp(r),n==null)throw new Error(zt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(zt.IDS_MUST_BE_ITERABLE)}a(Ov,"initializeBatchSearchByHash");function Yp(e){if(!Array.isArray(e))throw e===void 0?new Error(zt.FETCH_ATTRIBUTES_REQUIRED):new Error(zt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Yp,"validateFetchAttributes");function fa(e,t,r){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.SEARCH_VALUE_REQUIRED);if(r?.length>KX)throw new Error(zt.SEARCH_VALUE_TOO_LARGE)}a(fa,"validateComparisonFunctions");function e_(e,t){return t.length===1&&$X.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=da.listDBIs(e)),t}a(e_,"setGetWholeRowAttributes");Nv.exports={searchAll:YX,searchAllToMap:WX,count:JX,countAll:QX,equals:jX,startsWith:XX,endsWith:ZX,contains:yv,searchByHash:i6,setGetWholeRowAttributes:e_,batchSearchByHash:a6,batchSearchByHashToMap:c6,checkHashExists:o6,iterateDBI:zX,greaterThan:e6,greaterThanEqual:t6,lessThan:r6,lessThanEqual:n6,between:s6}});var _u=C((mbe,Dv)=>{var wv=require("lodash"),Iv=it(),Ge=require("joi"),l6=oe(),{hdb_schema_table:t_,checkValidTable:Cv,hdb_table:Pv,hdb_database:Wp}=bi(),{handleHDBError:u6,hdb_errors:d6}=me(),{getDatabases:f6}=(xe(),P(at)),{HTTP_STATUS_CODES:_6}=d6,h6=Ge.object({database:Wp,schema:Wp,table:Pv,search_attribute:t_,search_value:Ge.any().required(),get_attributes:Ge.array().min(1).items(Ge.alternatives(t_,Ge.object())).optional(),desc:Ge.bool(),limit:Ge.number().integer().min(1),offset:Ge.number().integer().min(0)}),m6=Ge.object({database:Wp,schema:Wp,table:Pv,operator:Ge.string().valid("and","or").default("and").lowercase(),offset:Ge.number().integer().min(0),limit:Ge.number().integer().min(1),get_attributes:Ge.array().min(1).items(Ge.alternatives(t_,Ge.object())).optional(),sort:Ge.object({attribute:Ge.alternatives(t_,Ge.array().min(1)),descending:Ge.bool().optional()}).optional(),conditions:Ge.array().min(1).items(Ge.alternatives(Ge.object({operator:Ge.string().valid("and","or").default("and").lowercase(),conditions:Ge.array()}),Ge.object({search_attribute:Ge.alternatives(t_,Ge.array().min(1)),search_type:Ge.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:Ge.when("search_type",{switch:[{is:"equals",then:Ge.any()},{is:"between",then:Ge.array().items(Ge.alternatives([Ge.string(),Ge.number()])).length(2)}],otherwise:Ge.alternatives(Ge.string(),Ge.number())}).required()}))).required()});Dv.exports=function(e,t){let r=null;switch(t){case"value":r=Iv.validateBySchema(e,h6);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(Cv("database",e.schema)),i(Cv("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=Iv.validateBySchema(e,m6);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=l6.checkGlobalSchemaTable(e.schema,e.table);if(s)return u6(new Error,s,_6.NOT_FOUND);let o=f6()[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=wv.filter(c,f=>f!=="*"&&!f.startsWith?.("$")&&f.attribute!=="*"&&!Array.isArray(f)&&!f.name&&!wv.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 iy=C((Ebe,Lv)=>{"use strict";var p6=dt(),E6=_u(),{getSchemaPath:g6}=Et();Lv.exports=S6;function S6(e){let t=E6(e,"hashes");if(t)throw t;let r=g6(e.schema,e.table);return p6.openEnvironment(r,e.table)}a(S6,"initialize")});var oy=C((Sbe,Mv)=>{"use strict";var T6=fu(),A6=iy();Mv.exports=R6;async function R6(e){let t=await A6(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return T6.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(R6,"lmdbGetDataByHash")});var hu=C((Abe,vv)=>{"use strict";var ay=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};vv.exports=ay});var xv=C((bbe,Uv)=>{"use strict";var ybe=hu(),y6=fu(),b6=iy();Uv.exports=O6;async function O6(e){let t=await b6(e),r=global.hdb_schema[e.schema][e.table];return y6.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(O6,"lmdbSearchByHash")});var $s=C((Nbe,Bv)=>{"use strict";var cy=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}};Bv.exports=cy});var zp=C((Ibe,$v)=>{"use strict";var Yr=fu(),N6=dt(),w6=oe(),qe=kt(),xc=(k(),P(q)),I6=ao(),Hv=Un().LMDB_ERRORS_ENUM,{getSchemaPath:C6}=Et(),fo=xc.SEARCH_WILDCARDS;async function P6(e,t,r){let n;e.schema===xc.SYSTEM_SCHEMA_NAME?n=I6[e.table]:n=global.hdb_schema[e.schema][e.table];let s=qv(e,n.hash_attribute,r,t);return Fv(e,s,n.hash_attribute,r)}a(P6,"prepSearch");async function Fv(e,t,r,n){let s=C6(e.schema,e.table),i=await N6.openEnvironment(s,e.table),o=Gv(i,e,t,r),c=o.transaction||i;if([qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,qe.SEARCH_TYPES.SEARCH_ALL,qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(D6(e,r)===!1){let f=e.search_attribute;if(f===r)return n?kv(o,()=>!0):o.map(_=>({[r]:_.key}));let d=a(_=>({[r]:_.value,[f]:_.key}),"toObject");return n?kv(o,d):o.map(d)}let u=e.search_attribute===r?o.map(f=>f.key):o.map(f=>f.value);return n===!0?Yr.batchSearchByHashToMap(c,r,e.get_attributes,u):Yr.batchSearchByHash(c,r,e.get_attributes,u)}a(Fv,"executeSearch");function Gv(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:o,limit:c,offset:l}=t;switch(o=typeof o=="boolean"?o:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case qe.SEARCH_TYPES.EQUALS:s=Yr.equals(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.CONTAINS:s=Yr.contains(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.ENDS_WITH:case qe.SEARCH_TYPES._ENDS_WITH:s=Yr.endsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.STARTS_WITH:case qe.SEARCH_TYPES._STARTS_WITH:s=Yr.startsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return Yr.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return Yr.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case qe.SEARCH_TYPES.SEARCH_ALL:return Yr.searchAll(e,n,t.get_attributes,o,c,l);case qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return Yr.searchAllToMap(e,n,t.get_attributes,o,c,l);case qe.SEARCH_TYPES.BETWEEN:s=Yr.between(e,i,t.search_attribute,t.search_value,t.end_value,o,c,l);break;case qe.SEARCH_TYPES.GREATER_THAN:case qe.SEARCH_TYPES._GREATER_THAN:s=Yr.greaterThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.GREATER_THAN_EQUAL:case qe.SEARCH_TYPES._GREATER_THAN_EQUAL:s=Yr.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.LESS_THAN:case qe.SEARCH_TYPES._LESS_THAN:s=Yr.lessThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.LESS_THAN_EQUAL:case qe.SEARCH_TYPES._LESS_THAN_EQUAL:s=Yr.lessThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;default:return Object.create(null)}return s}a(Gv,"searchByType");function kv(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(kv,"createMapFromIterable");function D6(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(D6,"checkToFetchMore");function qv(e,t,r,n){if(w6.isEmpty(n)){let s=e.search_value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),o=s.charAt(s.length-1),c=!1;if(e.search_attribute===t&&(c=!0),fo.indexOf(s)>-1)return r===!0?qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:qe.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(fo[0])<0&&s.indexOf(fo[1])<0)return c===!0?r===!0?qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:qe.SEARCH_TYPES.EQUALS;if(fo.indexOf(i)>=0&&fo.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),qe.SEARCH_TYPES.CONTAINS;if(fo.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),qe.SEARCH_TYPES.ENDS_WITH;if(fo.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),qe.SEARCH_TYPES.STARTS_WITH;if(s.includes(fo[0])||s.includes(fo[1]))return qe.SEARCH_TYPES.EQUALS;throw new Error(Hv.UNKNOWN_SEARCH_TYPE)}else switch(n){case xc.VALUE_SEARCH_COMPARATORS.BETWEEN:return qe.SEARCH_TYPES.BETWEEN;case xc.VALUE_SEARCH_COMPARATORS.GREATER:return qe.SEARCH_TYPES.GREATER_THAN;case xc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return qe.SEARCH_TYPES.GREATER_THAN_EQUAL;case xc.VALUE_SEARCH_COMPARATORS.LESS:return qe.SEARCH_TYPES.LESS_THAN;case xc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return qe.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(Hv.UNKNOWN_SEARCH_TYPE)}}a(qv,"createSearchTypeFromSearchObject");$v.exports={executeSearch:Fv,createSearchTypeFromSearchObject:qv,prepSearch:P6,searchByType:Gv}});var Kv=C((Dbe,Vv)=>{"use strict";var Pbe=$s(),L6=_u(),M6=oe(),v6=(k(),P(q)),U6=zp();Vv.exports=x6;function x6(e,t){if(!M6.isEmpty(t)&&v6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=L6(e,"value");if(n)throw n;return U6.prepSearch(e,t,!0)}a(x6,"lmdbGetDataByValue")});var r_=C((vbe,Yv)=>{"use strict";var Mbe=$s(),B6=_u(),H6=oe(),k6=(k(),P(q)),F6=zp();Yv.exports=G6;async function G6(e,t){if(!H6.isEmpty(t)&&k6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=B6(e,"value");if(n)throw n;return F6.prepSearch(e,t,!1)}a(G6,"lmdbSearchByValue")});var zv=C((Bbe,Wv)=>{"use strict";var xbe=kt(),ly=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}},uy=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},dy=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};Wv.exports={SearchByConditionsObject:ly,SearchCondition:uy,SortAttribute:dy}});var Zv=C((Gbe,Xv)=>{"use strict";var kbe=zv().SearchByConditionsObject,q6=$s(),$6=_u(),fy=fu(),Qp=kt(),{Resource:Fbe}=(na(),P(MA)),Jv=zp(),V6=sy(),K6=require("lodash"),{getSchemaPath:Y6}=Et(),Qv=dt(),{handleHDBError:W6,hdb_errors:z6}=me(),{HTTP_STATUS_CODES:Q6}=z6,j6=1e8;Xv.exports=J6;async function J6(e){let t=$6(e,"conditions");if(t)throw W6(t,t.message,Q6.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=Y6(e.schema,e.table),n=await Qv.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)Qv.openDBI(n,u.search_attribute);let i=K6.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let f=u.search_type;f===Qp.SEARCH_TYPES.EQUALS?u.estimated_count=fy.count(n,u.search_attribute,u.search_value):f===Qp.SEARCH_TYPES.CONTAINS||f===Qp.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=j6}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await jv(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(Jv.filterByType),d=f.length,_=fy.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=>V6.parseRow(h,_))}else{for(let d=1;d<i.length;d++){let _=i[d],h=await jv(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=fy.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(J6,"lmdbSearchByConditions");async function jv(e,t,r,n){let s=new q6(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===Qp.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,Jv.searchByType(e,s,i,n).map(o=>o.value)}a(jv,"executeConditionSearch")});var n_=C(($be,eU)=>{"use strict";var X6=(k(),P(q)).OPERATIONS_ENUM,_y=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}};eU.exports=_y});var hy=C((Kbe,cU)=>{"use strict";var sU=$s(),iU=n_(),oU=r_(),aU=Xf(),Sn=(k(),P(q)),tU=oe(),rU=dt(),{getTransactionAuditStorePath:Z6,getSchemaPath:eZ}=Et(),nU=ee();cU.exports=tZ;async function tZ(e){try{if(tU.isEmpty(global.hdb_schema[e.schema])||tU.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await rZ(e),await nZ(e);let t=eZ(e.schema,e.table);try{await rU.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")nU.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=Z6(e.schema,e.table);await rU.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")nU.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(tZ,"lmdbDropTable");async function rZ(e){let t=new sU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await oU(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 iU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await aU(s)}a(rZ,"deleteAttributesFromSystem");async function nZ(e){let t=new sU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await oU(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 iU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await aU(s)}catch(i){throw i}}a(nZ,"dropTableFromSystem")});var uU=C((Wbe,lU)=>{"use strict";var sZ=require("fs-extra"),iZ=$s(),oZ=hu(),aZ=n_(),cZ=hy(),lZ=Xf(),uZ=oy(),dZ=r_(),_o=(k(),P(q)),{getSchemaPath:fZ}=Et(),{handleHDBError:_Z,hdb_errors:hZ}=me(),{HDB_ERROR_MSGS:mZ,HTTP_STATUS_CODES:pZ}=hZ;lU.exports=EZ;async function EZ(e){let t;try{t=await gZ(e.schema);let r=new iZ(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await dZ(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await cZ(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new aZ(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await lZ(s);let i=fZ(t);await sZ.remove(i)}catch(r){throw r}}a(EZ,"lmdbDropSchema");async function gZ(e){let t=new oZ(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await uZ(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw _Z(new Error,mZ.SCHEMA_NOT_FOUND(e),pZ.NOT_FOUND,void 0,void 0,!0);return n}a(gZ,"validateDropSchema")});var s_=C((Qbe,dU)=>{"use strict";var my=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};dU.exports=my});var Ey=C((Xbe,fU)=>{"use strict";var SZ=require("fs-extra"),jp=dt(),{getTransactionAuditStorePath:TZ}=Et(),py=kt(),Jbe=s_();fU.exports=AZ;async function AZ(e){let t;try{let r=TZ(e.schema,e.table);await SZ.mkdirp(r),t=await jp.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{jp.createDBI(t,py.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),jp.createDBI(t,py.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),jp.createDBI(t,py.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(AZ,"createTransactionsAuditEnvironment")});var mU=C((tOe,hU)=>{"use strict";var gy=(k(),P(q)),_U=dt(),RZ=Lc(),{getSystemSchemaPath:yZ,getSchemaPath:bZ}=Et(),eOe=ao(),OZ=Gp(),Sy=Fp(),NZ=ee(),wZ=Ey();hU.exports=IZ;async function IZ(e,t){let r=bZ(t.schema,t.table),n=new Sy(t.schema,t.table,gy.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new Sy(t.schema,t.table,gy.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new Sy(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await _U.createEnvironment(r,t.table),e!==void 0){let o=await _U.openEnvironment(yZ(),gy.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await RZ.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 Ty(n),await Ty(s),await Ty(i)}await wZ(t)}catch(o){throw o}}a(IZ,"lmdbCreateTable");async function Ty(e){try{await OZ(e)}catch(t){NZ.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Ty,"createAttribute")});var EU=C((nOe,pU)=>{"use strict";var CZ=Qf(),PZ=gf(),DZ=qp(),i_=(k(),P(q)),LZ=Lc().updateRecords,MZ=dt(),{getSchemaPath:vZ}=Et(),UZ=jf(),xZ=ee();pU.exports=BZ;async function BZ(e){try{let{schema_table:t,attributes:r}=CZ(e);PZ(e,r,t.hash_attribute),e.schema!==i_.SYSTEM_SCHEMA_NAME&&(r.includes(i_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(i_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(i_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(i_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await DZ(e.hdb_auth_header,t,r),s=vZ(e.schema,e.table),i=await MZ.openEnvironment(s,e.table),o=await LZ(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await UZ(e,o)}catch(c){xZ.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(BZ,"lmdbUpdateRecords")});var SU=C((iOe,gU)=>{"use strict";var HZ=(k(),P(q)).OPERATIONS_ENUM,Ay=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=HZ.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};gU.exports=Ay});var AU=C((cOe,TU)=>{"use strict";var aOe=SU(),kZ=Qf(),FZ=gf(),GZ=qp(),o_=(k(),P(q)),qZ=Lc().upsertRecords,$Z=dt(),{getSchemaPath:VZ}=Et(),KZ=jf(),YZ=ee(),{handleHDBError:WZ,hdb_errors:zZ}=me();TU.exports=QZ;async function QZ(e){let t;try{t=kZ(e)}catch(l){throw WZ(l,l.message,zZ.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:n}=t;FZ(e,n,r.hash_attribute),e.schema!==o_.SYSTEM_SCHEMA_NAME&&(n.includes(o_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(o_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(o_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(o_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await GZ(e.hdb_auth_header,r,n),i=VZ(e.schema,e.table),o=await $Z.openEnvironment(i,e.table),c=await qZ(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await KZ(e,c)}catch(l){YZ.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(QZ,"lmdbUpsertRecords")});var yU=C((uOe,RU)=>{"use strict";var Ry=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};RU.exports=Ry});var OU=C((fOe,bU)=>{"use strict";var yy=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}};bU.exports=yy});var IU=C((mOe,wU)=>{"use strict";var by=dt(),{getTransactionAuditStorePath:jZ}=Et(),hOe=yU(),a_=kt(),JZ=oe(),NU=OU(),XZ=require("util").promisify,ZZ=XZ(setTimeout),e8=1e4,t8=100;wU.exports=r8;async function r8(e){let t=jZ(e.schema,e.table),r=await by.openEnvironment(t,e.table,!0),n=by.listDBIs(r);by.initializeDBIs(r,a_.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new NU;do s=await n8(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 ZZ(t8);while(s.transactions_deleted>0);return i}a(r8,"deleteAuditLogsBefore");async function n8(e,t){let r=new NU;try{let n=e.dbis[a_.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[a_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];JZ.isEmpty(c)||(s=e.dbis[a_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[a_.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>e8)break}return await s,r}catch(n){throw n}}a(n8,"deleteTransactions")});var PU=C((EOe,CU)=>{"use strict";var Oy=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};CU.exports=Oy});var LU=C((TOe,DU)=>{"use strict";var s8=$s(),i8=n_(),SOe=PU(),Oi=(k(),P(q)),o8=oe(),Ny=dt(),a8=ao(),c8=r_(),l8=Xf(),{getSchemaPath:u8}=Et();DU.exports=d8;async function d8(e,t=!0){let r;e.schema===Oi.SYSTEM_SCHEMA_NAME?r=a8[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await _8(e),s=u8(e.schema,e.table),i=await Ny.openEnvironment(s,e.table);return t===!0&&await f8(e,i,r.hash_attribute),Ny.dropDBI(i,e.attribute),n}a(d8,"lmdbDropAttribute");async function f8(e,t,r){let n=Ny.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(f8,"removeAttributeFromAllObjects");async function _8(e){let t=new s8(Oi.SYSTEM_SCHEMA_NAME,Oi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await c8(t)).filter(o=>o[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(o8.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new i8(Oi.SYSTEM_SCHEMA_NAME,Oi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return l8(i)}a(_8,"dropAttributeFromSystem")});var HU=C((yOe,BU)=>{"use strict";var wy=dt(),mu=kt(),ROe=un(),Iy=(k(),P(q)),MU=oe(),{getTransactionAuditStorePath:h8}=Et(),m8=fu(),Jp=lu(),p8=ee();BU.exports=E8;async function E8(e){let t=h8(e.schema,e.table),r=await wy.openEnvironment(t,e.table,!0),n=wy.listDBIs(r);wy.initializeDBIs(r,mu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Iy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return vU(r,e.search_values);case Iy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,S8(r,e.search_values,s);case Iy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return g8(r,e.search_values);default:return vU(r)}}a(E8,"readAuditLog");function vU(e,t=[0,Date.now()]){MU.isEmpty(t[0])&&(t[0]=0),MU.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[mu.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 Jp,s))}a(vU,"searchTransactionsByTimestamp");function g8(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[mu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,xU(e,i))}return Object.fromEntries(r)}a(g8,"searchTransactionsByUsername");function S8(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],f=m8.equals(e,mu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,mu.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=xU(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,f=n.get(u);UU(l,"records",r,f,o),UU(l,"original_records",r,f,o)}return Object.fromEntries(o)}a(S8,"searchTransactionsByHashValues");function UU(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 Jp(e.operation,e.user_name,i,void 0);d[t]=[c],u.push(d)}}else{let u=new Jp(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(UU,"loopRecords");function xU(e,t){let r=[];try{let n=e.dbis[mu.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 Jp,i);r.push(o)}}catch(i){p8.warn(i)}return r}catch(n){throw n}}a(xU,"batchSearchTransactions")});var FU=C((wOe,kU)=>{"use strict";var{getSchemaPath:OOe}=Et(),NOe=dt(),{database:T8}=(xe(),P(at));kU.exports={writeTransaction:A8};async function A8(e,t,r){return T8({database:e,table:t}).transaction(r)}a(A8,"writeTransaction")});var VU=C((COe,$U)=>{"use strict";var{getSchemaPath:GU}=Et(),qU=dt();$U.exports={flush:R8,resetReadTxn:y8};async function R8(e,t){return(await qU.openEnvironment(GU(e,t),t.toString())).flushed}a(R8,"flush");async function y8(e,t){try{(await qU.openEnvironment(GU(e,t),t.toString())).resetReadTxn()}catch{}}a(y8,"resetReadTxn")});var zU=C((DOe,WU)=>{"use strict";var{Readable:b8}=require("stream"),{getDatabases:O8}=(xe(),P(at)),{readSync:N8,openSync:w8,createReadStream:KU}=require("fs"),{open:I8}=require("lmdb"),YU=$f(),C8=Vf(),{AUDIT_STORE_OPTIONS:P8}=(Ai(),P(UL)),{INTERNAL_DBIS_NAME:D8,AUDIT_STORE_NAME:L8}=kt();WU.exports=v8;var Cy=32768,M8=100;async function v8(e){let t=e.database||e.schema||"data",r=O8()[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=I8({noSync:!0,maxDbs:C8.MAX_DBS}),_,h=d.openDB(D8,new YU(!1)),m=f.useReadTransaction(),S=0,g=a(async function(E,T){T.encoding="binary",T.encoder=void 0;let N=d.openDB(E,T),v=f.openDB(E,T);for(let{key:H,version:X,value:W}of v.getRange({start:null,transaction:m,versions:v.useVersions}))_=N.put(H,W,X),S++%M8===0&&(await new Promise($=>setTimeout($,20)),m.openTimer&&(m.openTimer=0))},"copyDatabase");for(let{key:E,value:T}of f.getRange({transaction:m,start:!1}))if(s.some(N=>E.startsWith?.(N+"/"))){h.put(E,T);let[,N]=E.split("/"),v=!N,H=new YU(!v,v);await g(E,H)}e.include_audit&&await g(L8,{...P8}),await _;let R=KU(d.path);return R.headers=l(),R.on("close",()=>{m.done(),d.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=w8(o.path);return o.transaction(()=>{let u=Buffer.alloc(Cy);N8(c,u,0,Cy),o.resetReadTxn();let f=o.useReadTransaction();f.renew();let d=KU(null,{fd:c,start:Cy}),_=new b8.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(v8,"getBackup")});var JU=C((MOe,jU)=>{"use strict";var U8=ee(),{handleHDBError:x8}=me(),B8=AM(),H8=Gp(),k8=ZR(),F8=uv(),G8=Xf(),q8=oy(),$8=xv(),V8=Kv(),K8=r_(),Y8=Zv(),W8=uU(),z8=mU(),Q8=EU(),j8=AU(),J8=IU(),X8=hy(),Z8=LU(),e5=HU(),t5=FU(),QU=VU(),r5=zU(),Py=class extends B8{static{a(this,"LMDBBridge")}async searchByConditions(t){return Y8(t)}async getDataByHash(t){return await q8(t)}async searchByHash(t){return await $8(t)}async getDataByValue(t,r){return await V8(t,r)}async searchByValue(t){return await K8(t)}async createSchema(t){return await F8(t)}async dropSchema(t){return await W8(t)}async createTable(t,r){return await z8(t,r)}async dropTable(t){return await X8(t)}async createAttribute(t){return await H8(t)}async createRecords(t){return await k8(t)}async updateRecords(t){return await Q8(t)}async upsertRecords(t){try{return await j8(t)}catch(r){throw x8(r,null,null,U8.ERR,r)}}async deleteRecords(t){return await G8(t)}async dropAttribute(t){return await Z8(t)}async deleteAuditLogsBefore(t){return await J8(t)}async readAuditLog(t){return await e5(t)}writeTransaction(t,r,n){return t5.writeTransaction(t,r,n)}flush(t,r){return QU.flush(t,r)}resetReadTxn(t,r){return QU.resetReadTxn(t,r)}getBackup(t){return r5(t)}};jU.exports=Py});function Tn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function tE(e,t){let r=e.prototype,n={},s=t.attributes||t.properties||[];for(let c of s){let l=c.name,u,f;if(c.resolve)f={get(){return c.resolve(this,this.getContext?.())},set(d){return c.set(this,d)},configurable:!0};else{switch(c.type){case"String":u=a(function(d){if(!(typeof d=="string"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a string, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"ID":u=a(function(d){if(!(typeof d=="string"||d?.length>0&&d.every?.(_=>typeof _=="string")||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a string, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Float":case"Number":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="number"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a number, attempt to assign ${_}`);Tn(this)[l]=d},"set");break;case"Int":u=a(function(d){let _=d?.__op__?d.value:d;if(!(_>>0===_||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs((_>>0)-_)<=1)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be an integer between -2147483648 and 2147483647, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Long":u=a(function(d){let _=d?.__op__?d.value:d;if(!(Math.round(_)===d&&Math.abs(_)<=9007199254740992||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs(_)<=9007199254740992)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"BigInt":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="bigint"||d==null&&c.nullable!==!1))if(typeof _=="string"||typeof _=="number")_=BigInt(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be a number, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Boolean":u=a(function(d){if(!(typeof d=="boolean"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a boolean, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Date":u=a(function(d){if(!(d instanceof Date||d==null&&c.nullable!==!1))if(typeof d=="string"||typeof d=="number")d=new Date(d);else throw new qn.ClientError(`${l} must be a Date, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Bytes":u=a(function(d){if(!(d instanceof Uint8Array||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a Buffer or Uint8Array, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Blob":u=a(function(d){if(!(d instanceof gi||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a Blob, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Any":case void 0:u=a(function(d){Tn(this)[l]=d},"set");break;default:u=a(function(d){if(!(typeof d=="object"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be an object, attempt to assign ${d}`);Tn(this)[l]=d},"set")}f={get(){let d=this.getChanges?.();if(d&&l in d){let h=d[l];if(h?.__op__){let m=this.getRecord()?.[l];return h.update(m)}return h}let _=this.getRecord()?.[l];if(_&&typeof _=="object"){let h=Dy(_,c);if(h)return d||this._setChanges(d=Object.create(null)),d[l]=h}return _},set:u,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,n[l]=f,(!(l in r)||Object.getOwnPropertyDescriptor(r,l)?.get?.isAttribute)&&Object.defineProperty(r,l,f)}i("getProperty",function(c){let l=n[c];if(l)return l.get.call(this);let u=this.getChanges();return u?.[c]!==void 0?u[c]:this.getRecord()?.[c]}),i("set",function(c,l){let u=n[c];if(u)return u.set.call(this,l);if(t.sealed)throw new qn.ClientError("Can not add a property to a sealed table schema");Tn(this)[c]=l}),i("deleteProperty",function(c){Tn(this)[c]=void 0}),i("toJSON",function(){let c=this.getChanges?.(),l;for(let f in c){l||(l={...this.getRecord()});let d=c[f];if(d?.__op__){let _=l[f];d=d.update(_)}l[f]=d}return Object.keys(this).length>0&&(l||(l={...this.getRecord()}),Object.assign(l,this)),l||this.getRecord()}),r.get||i("get",r.getProperty),r.delete||i("delete",r.deleteProperty),r.then||i("then",null);function i(c,l){Object.defineProperty(r,c,{value:l,configurable:!0})}a(i,"setMethod");let o=r;do{let c=Object.getPrototypeOf(o);if(c===Object.prototype){Object.setPrototypeOf(o,ZU);break}o=c}while(o&&o!==ZU)}function Dy(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends c_{static{a(this,"TrackedObject")}},tE(r,t)),new r(e)):new c_(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=Dy(o,t?.elements)),n[s]=o}return n;default:return e}}function rE(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=rE(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 pu(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=pu(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=oR[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=pu(s);r[n]=s}if(!Array.isArray(e))for(let n in e)n5.call(e,n)&&(r||(r={...e.getRecord?.()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?.()??e}function Xp(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[Bc]||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(Xp(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(Xp(s))return!0}else return!0}else return!0}}return!1}var qn,XU,ZU,c_,n5,Bc,Zp,eE,Ly=Re(()=>{qn=M(me());Rp();hn();a(Tn,"getChanges");a(tE,"assignTrackedAccessors");XU=Object.prototype,ZU=new Proxy({},{get(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(XU[t])return XU[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=Dy(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}});a(Dy,"trackObject");c_=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}};tE(c_,{});a(rE,"collapseData");n5=Object.prototype.hasOwnProperty;a(pu,"updateAndFreeze");a(Xp,"hasChanges");Bc=Symbol.for("has-array-changes"),Zp=class extends Array{static{a(this,"TrackedArray")}#e;[Bc];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[Bc]=!0,super.splice(...t)}push(...t){return this[Bc]=!0,super.push(...t)}pop(){return this[Bc]=!0,super.pop()}unshift(...t){return this[Bc]=!0,super.unshift(...t)}shift(){return this[Bc]=!0,super.shift()}};Zp.prototype.constructor=Array;eE=class{constructor(t){this.value=t}static{a(this,"Addition")}__op__="add";update(t){return(+t||0)+this.value}}});var a0={};Ue(a0,{ResourceBridge:()=>Uy});function xy({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 t0(e,t){let r=Ni(e),n=xy(e,r);if(!r)throw new Vs.ClientError(`Table ${e.table} not found`);let s;n&&r.attributes.length-n.length>2&&n.length<5&&(s=!0);let i={user:e.hdb_user,onlyIfCached:e.onlyIfCached,noCacheStore:e.noCacheStore,noCache:e.noCache,replicateFrom:e.replicateFrom},o;wt(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&&rE(f)}catch(d){f={message:d.toString()}}return t?{value:{key:u,value:f}}:{value:f}}else return o(),{done:!0}},return(u){return o(),{value:u,done:!0}},throw(u){return o(),{done:!0}}}}}}function Ni(e){let t=e.database||e.schema||i5,r=Je()[t];if(!r)throw(0,Vs.handleHDBError)(new Error,s5.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function r0(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*n0(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 s0,nE,Vs,i0,My,vy,o0,s5,i5,o5,a5,e0,Uy,c0=Re(()=>{"use strict";s0=M(JU()),nE=M(_u()),Vs=M(me());xe();i0=M(Qf());k();My=M(uo()),vy=M(qs()),o0=M(oe());hc();Ly();({HDB_ERROR_MSGS:s5}=Vs.hdb_errors),i5="data",o5=1e4,a5=10,Uy=class extends s0.default{static{a(this,"ResourceBridge")}constructor(t){super(t),e0=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,nE.default)(t,"conditions");if(r)throw(0,Vs.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=Ni(t);if(!n)throw new Vs.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(o){return o.conditions?(o.conditions=o.conditions.map(i),o):{attribute:o.search_attribute??o.attribute,comparator:o.search_type??o.comparator,value:o.search_value!==void 0?o.search_value:o.value}}return a(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:xy(t,n),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let o of n)o.is_primary_key?(o.isPrimaryKey=!0,delete o.is_primary_key):o.name===i&&i&&(o.isPrimaryKey=!0);else{if(!i)throw new Vs.ClientError("A primary key must be specified with a `primary_key` property or with `attributes`");n=[{name:i,isPrimaryKey:!0},{name:"__createdtime__",indexed:!0},{name:"__updatedtime__",indexed:!0}]}ft({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await Ni(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=Ni(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=a((o,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(o,l,()=>r.primaryStore.put(o,c,l)).then(u=>{if(!u){let{value:f,version:d}=r.primaryStore.getEntry(o);return i(o,f,d)}})),"deleteRecord");for(let{key:o,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(o,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){Ni(t).dropTable()}createSchema(t){return Eu({database:t.schema,table:null}),My.signalSchemaChange(new vy.SchemaEventMsg(process.pid,Yt.CREATE_SCHEMA,t.schema))}async dropSchema(t){await By(t.schema),My.signalSchemaChange(new vy.SchemaEventMsg(process.pid,Yt.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,e0.upsertRecords(t)}async upsertRecords(t){let{schema_table:r,attributes:n}=(0,i0.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),wt(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}_&&(_=rE(_));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),wt(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 r0(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=Je()[t.schema][t.table];if(!r.createdTimeProperty)throw new Vs.ClientError("Table must have a '__createdtime__' attribute or @createdTime timestamp defined to perform this operation");let n=await r.search({conditions:[{attribute:r.createdTimeProperty.name,value:Date.parse(t.date),comparator:Mm.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,o0.async_set_timeout)(a5),l=[],s=!0},"chunkDelete");for await(let f of n)l.push(f[r.primaryKey]),c++,c%o5===0&&await u();return l.length>0&&await u(),s?r0(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,nE.default)(t,"hashes");if(r)throw r;return t0(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of t0(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&fA[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,nE.default)(t,"value");if(n)throw n;let s=Ni(t);if(!s)throw new Vs.ClientError(`Table ${t.table} not found`);let i=t.search_value;i.includes?.("*")&&(i.startsWith("*")?i.endsWith("*")?i!=="*"&&(r="contains",i=i.slice(1,-1)):(r="ends_with",i=i.slice(1)):i.endsWith("*")&&(r="starts_with",i=i.slice(0,-1))),r===Mm.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:xy(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=Ni(t);t.get_attributes&&!t.get_attributes.includes(s.primaryKey)&&t.get_attributes[0]!=="*"&&t.get_attributes.push(s.primaryKey);for await(let i of this.searchByValue(t,r))n.set(i[s.primaryKey],i);return n}resetReadTxn(t,r){Ni({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return Ni(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=Ni(t),n={};switch(t.search_type){case vm.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 vm.USERNAME:let s=t.search_values;for await(let i of n0(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n;default:return n0(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(xy,"getSelect");a(t0,"getRecords");a(Ni,"getTable");a(r0,"createDeleteResponse");a(n0,"groupRecordsInHistory")});var $n=C((VOe,l0)=>{"use strict";var{ResourceBridge:c5}=(c0(),P(a0)),l5=ce();l5.initSync();var sE;function u5(){return sE||(sE=new c5,sE)}a(u5,"getBridge");l0.exports=u5()});var _0=C((YOe,f0)=>{"use strict";var u0=require("lodash"),l_=require("mathjs"),d5=require("jsonata"),d0=oe();f0.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?u0.uniqWith(e,u0.isEqual):e,"distinct_array"),searchJSON:f5,mad:u_.bind(null,l_.mad),mean:u_.bind(null,l_.mean),mode:u_.bind(null,l_.mode),prod:u_.bind(null,l_.prod),median:u_.bind(null,l_.median)};function u_(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(u_,"aggregateFunction");function f5(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(d0.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),d0.isEmpty(this.__ala__.res[r])){let n=d5(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(f5,"searchJSON")});var m0=C((zOe,h0)=>{"use strict";var er=require("moment"),Hy="YYYY-MM-DDTHH:mm:ss.SSSZZ";er.suppressDeprecationWarnings=!0;h0.exports={current_date:a(()=>er().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>er().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return er(e).utc().format("YYYY");case"month":return er(e).utc().format("MM");case"day":return er(e).utc().format("DD");case"hour":return er(e).utc().format("HH");case"minute":return er(e).utc().format("mm");case"second":return er(e).utc().format("ss");case"millisecond":return er(e).utc().format("SSS");default:break}},"extract"),date:a(e=>er(e).utc().format(Hy),"date"),date_format:a((e,t)=>er(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>er(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>er(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=er(e).utc(),s=er(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>er().utc().valueOf(),"now"),get_server_time:a(()=>er().format(Hy),"get_server_time"),offset_utc:a((e,t)=>er(e).utc().utcOffset(t).format(Hy),"offset_utc")}});var S0=C((jOe,g0)=>{"use strict";var _5=require("@turf/area"),h5=require("@turf/length"),m5=require("@turf/circle"),p5=require("@turf/difference"),E5=require("@turf/distance"),g5=require("@turf/boolean-contains"),S5=require("@turf/boolean-equal"),T5=require("@turf/boolean-disjoint"),A5=require("@turf/helpers"),p0=(k(),P(q)),Ke=oe(),ho=ee();g0.exports={geoArea:R5,geoLength:y5,geoCircle:b5,geoDifference:O5,geoDistance:E0,geoNear:N5,geoContains:w5,geoEqual:I5,geoCrosses:C5,geoConvert:P5};function R5(e){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return _5.default(e)}catch(t){return ho.trace(t,e),NaN}}a(R5,"geoArea");function y5(e,t){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return h5.default(e,{units:t||"kilometers"})}catch(r){return ho.trace(r,e),NaN}}a(y5,"geoLength");function b5(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return m5.default(e,t,{units:r||"kilometers"})}catch(n){return ho.trace(n,e,t),NaN}}a(b5,"geoCircle");function O5(e,t){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return p5(e,t)}catch(r){return ho.trace(r,e,t),NaN}}a(O5,"geoDifference");function E0(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return E5.default(e,t,{units:r||"kilometers"})}catch(n){return ho.trace(n,e,t),NaN}}a(E0,"geoDistance");function N5(e,t,r,n){if(Ke.isEmpty(e)||Ke.isEmpty(t))return!1;if(Ke.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return E0(e,t,n)<=r}catch(s){return ho.trace(s,e,t),!1}}a(N5,"geoNear");function w5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return g5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(w5,"geoContains");function I5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return S5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(I5,"geoEqual");function C5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return!T5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(C5,"geoCrosses");function P5(e,t,r){if(Ke.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ke.isEmpty(t))throw new Error("geo_type is required");if(Ke.isEmpty(p0.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(p0.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ke.autoCastJSON(e)),A5[t](e,r)}a(P5,"geoConvert")});var iE=C((XOe,T0)=>{var Hc=_0(),Vn=m0(),wi=S0();T0.exports=e=>{e.aggr.mad=e.aggr.MAD=Hc.mad,e.aggr.mean=e.aggr.MEAN=Hc.mean,e.aggr.mode=e.aggr.MODE=Hc.mode,e.aggr.prod=e.aggr.PROD=Hc.prod,e.aggr.median=e.aggr.MEDIAN=Hc.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Hc.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Hc.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=Vn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=Vn.current_time,e.fn.extract=e.fn.EXTRACT=Vn.extract,e.fn.date=e.fn.DATE=Vn.date,e.fn.date_format=e.fn.DATE_FORMAT=Vn.date_format,e.fn.date_add=e.fn.DATE_ADD=Vn.date_add,e.fn.date_sub=e.fn.DATE_SUB=Vn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=Vn.date_diff,e.fn.now=e.fn.NOW=Vn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=Vn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=Vn.get_server_time,e.fn.getdate=e.fn.GETDATE=Vn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=Vn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=wi.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=wi.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=wi.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=wi.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=wi.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=wi.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=wi.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=wi.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=wi.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=wi.geoNear}});var b0=C((ZOe,y0)=>{"use strict";var d_=require("lodash"),An=require("alasql");An.options.cache=!1;var D5=iE(),A0=require("clone"),oE=require("recursive-iterator"),ke=ee(),Xe=oe(),gu=$n(),L5=(k(),P(q)),{hdb_errors:M5}=me(),{getDatabases:R0}=(xe(),P(at)),v5="IS NULL",Ks="There was a problem performing this search. Please check the logs and try again.";D5(An);var ky=class{static{a(this,"SQLSearch")}constructor(t,r){if(Xe.isEmpty(t))throw ke.error("AST statement for SQL select process cannot be empty"),"statement cannot be null";this.statement=t,this.columns={},this.all_table_attributes=r,this.fetch_attributes=[],this.exact_search_values={},this.comparator_search_values={},this.tables=[],this.data={},this.has_aggregator=!1,this.has_ordinal=!1,this.has_outer_join=!1,this._getColumns(),this._getTables(),this._conditionsToFetchAttributeValues(),this._setAliasesForColumns(),Xe.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!Xe.isEmptyOrZeroLength(n))return ke.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw ke.error("Error thrown from checkEmptySQL in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{let n=await this._getFetchAttributeValues();if(n)return n}catch(n){throw ke.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),ke.error(n),new Error(Ks)}if(Object.keys(this.data).length===0)return ke.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(n){throw ke.error("Error thrown from processJoins in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(n){throw ke.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{return t=await this._finalSQL(),t}catch(n){throw ke.error("Error thrown from finalSQL in SQLSearch class method search."),ke.error(n),new Error(Ks)}}_getColumns(){let t=new oE(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(A0(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=d_.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=R0()[r.databaseid][r.tableid].primaryKey,this.data[n].__merged_data={},this.data[n].__merged_attributes=[],this.data[n].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(Xe.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new oE(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!Xe.isEmpty(r)&&r.right)if(Xe.isNotEmptyAndHasValue(r.right.value)){let n=Xe.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new An.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=Xe.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new An.yy.LogicValue({value:i}):n instanceof An.yy.StringValue&&Xe.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new An.yy.NumValue({value:i}))});if(t){ke.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new oE(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let n=new Set,s=r.left.columnid?r.left:r.right,i=this._findColumn(s);if(!i)continue;let o=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!Xe.isEmpty(L5.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(Xe.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(Xe.isEmptyOrZeroLength(r.left.columnid)||Xe.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[o].ignore=!0,this.comparator_search_values[o].comparators=[];continue}this.comparator_search_values[o].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(Xe.isEmpty(this.exact_search_values[o])&&(this.exact_search_values[o]={ignore:!1,values:new Set}),!this.exact_search_values[o].ignore){let c=!1;switch(r.op){case"=":!Xe.isEmpty(r.right.value)||!Xe.isEmpty(r.left.value)?n.add(Xe.isEmpty(r.right.value)?r.left.value:r.right.value):c=!0;break;case"IN":let l=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<l.length;u++)if(l[u].value)n.add(l[u].value);else{c=!0;break}break;default:c=!0;break}this.exact_search_values[o].ignore=c,c?this.exact_search_values[o].values=new Set:this.exact_search_values[o].values=new Set([...this.exact_search_values[o].values,...n])}}}_setAliasesForColumns(){if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&Xe.isEmptyOrZeroLength(this.statement.from)&&Xe.isEmptyOrZeroLength(this.columns.columns))return;let t=[],r={};this.statement.columns.forEach((n,s)=>{if(n.columnid==="*"){t.push(s);return}if(n.aggregatorid&&(this.has_aggregator=!0),!n.aggregatorid&&!n.funcid)if(n.as_orig=n.as?n.as:n.columnid,this.statement.joins)if(r[n.as_orig]>=0){let i=r[n.as_orig]+1;n.as=`[${n.as_orig+i}]`,r[n.as_orig]=i}else n.as=`[${n.as_orig}]`,r[n.as_orig]=0;else n.as=`[${n.as_orig}]`;!n.aggregatorid&&n.funcid&&n.args&&(n.as_orig=n.as?n.as:n.toString().replace(/'/g,'"'),n.as=`[${n.as_orig}]`),n.aggregatorid&&n.expression.columnid!=="*"&&(n.as_orig=n.as?n.as:n.expression.tableid?`${n.aggregatorid}(${n.expression.tableid}.${n.expression.columnid})`:`${n.aggregatorid}(${n.expression.columnid})`,n.as=`[${n.as_orig}]`)}),this.statement.columns.length>1&&t.length>0&&d_.pullAt(this.statement.columns,t)}_findColumn(t){let r=this.all_table_attributes.filter(n=>{if(t.columnid_orig&&t.tableid_orig)return(n.table.as===t.tableid_orig||n.table.tableid===t.tableid_orig)&&n.attribute===t.columnid_orig;if(t.tableid)return(n.table.as===t.tableid||n.table.tableid===t.tableid)&&n.attribute===t.columnid;let s=t.columnid_orig?t.columnid_orig:t.columnid;return n.attribute===s});if(Xe.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);Xe.isEmptyOrZeroLength(n)||(r=this.all_table_attributes.filter(s=>s.attribute===n[0].columnid&&n[0].tableid&&n[0].tableid===(s.table.as?s.table.as:s.table.tableid)))}return r[0]}async _checkEmptySQL(){let t=[];if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&!Xe.isEmptyOrZeroLength(this.columns.columns))return t;if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&Xe.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await An.promise(r)}catch(r){throw ke.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),ke.error(r),new Error("There was a problem with the SQL statement")}return t}_addFetchColumns(t){t&&t.length>0&&t.forEach(r=>{let n=this._findColumn(r);n&&this.fetch_attributes.push(A0(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__merged_attributes.push(r),this.data[t].__merged_attr_map[r]=this.data[t].__merged_attributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__merged_data[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__merged_attr_map[n];this.data[t].__merged_data[r].splice(i,1,s)}async _getFetchAttributeValues(){if(Xe.isEmptyOrZeroLength(Object.keys(this.columns)))return[];this._addFetchColumns(this.columns.joins);let t=null;try{t=this.statement.where?this.statement.where.toString():""}catch{throw new Error("Could not generate proper where clause")}this.columns.where&&this._addFetchColumns(this.columns.where);let r=this._isSimpleSelect();if(r?this._addFetchColumns(this.columns.columns):(!this.columns.where&&this.fetch_attributes.length===0)|t.indexOf(v5)>-1&&this.tables.forEach(s=>{let i={columnid:R0()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=d_.uniqBy(this.fetch_attributes,s=>[s.table.databaseid,s.table.as?s.table.as:s.table.tableid,s.attribute].join()),r)return await this._simpleSQLQuery();let n=this.fetch_attributes.reduce((s,i)=>{let o=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[o].__hash_name;return s[o]||(s[o]=[],s[o].push(null),this._addColumnToMergedAttributes(o,c)),i.attribute!==c&&(s[o].push(null),this._addColumnToMergedAttributes(o,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,o=this.data[i].__hash_name,c={schema:s.table.databaseid,table:s.table.tableid,get_attributes:[s.attribute]},l=!1,u=[s.table.databaseid,s.table.tableid,s.attribute].join("/");if(s.attribute===o&&(l=!0),!Xe.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!Xe.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let f=await gu.getDataByHash(c);for(let d of c.hash_values)f.get(d)&&!this.data[i].__merged_data[d]&&(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Ks)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async f=>{let d={...c};d.search_value=f;let _=await gu.getDataByValue(d);for(let[h,m]of _)this.data[i].__merged_data[h]?this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]):(this.data[i].__merged_data[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Ks)}else if(!Xe.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!Xe.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let f=this.comparator_search_values[u].comparators;for(let d=0,_=f.length;d<_;d++){let h=f[d];c.search_attribute=h.attribute,c.search_value=h.search_value;let m=await gu.getDataByValue(c,h.operation);if(l)for(let[S]of m)this.data[i].__merged_data[S]||(this.data[i].__merged_data[S]=[...n[i]],this._setMergedHashAttribute(i,S));else for(let[S,g]of m)this.data[i].__merged_data[S]?this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]):(this.data[i].__merged_data[S]=[...n[i]],this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]),this._setMergedHashAttribute(i,S))}}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),ke.error(f),new Error(Ks)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await gu.getDataByValue(c);if(l)for(let[d]of f)this.data[i].__merged_data[d]||(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d));else for(let[d,_]of f)this.data[i].__merged_data[d]?this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]):(this.data[i].__merged_data[d]=[...n[i]],this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]),this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),ke.error(f),new Error(Ks)}}}_isSimpleSelect(){let t=!0;return Object.keys(this.statement).length!==2||!this.statement.columns||!this.statement.from||this.statement.from.length!==1?(t=!1,t):(this.statement.columns.forEach(r=>{r instanceof An.yy.Column||(t=!1)}),t)}_updateOrderByToAliases(){this.statement.order.forEach(t=>{if(t.expression.aggregatorid){t.is_aggregator=!0;return}if(t.expression.value){t.is_ordinal=!0,this.has_ordinal=!0;return}else t.is_ordinal=!1;let r=this.statement.columns.filter(s=>{let i=s.aggregatorid?s.expression:s,o=s.aggregatorid?s.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===o});r[0]||r.push(this._findColumn(t.expression));let n=r[0];if(t.is_func=!!n.funcid,t.is_aggregator=!!n.aggregatorid,n.as)if(n.as&&!t.expression.tableid)t.expression.columnid=n.as,t.expression.columnid_orig=n.as_orig;else{let s=new An.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new An.yy.Column,t.expression),t.initial_select_column.as=`[${t.expression.columnid_orig}]`,t.expression.columnid=t.initial_select_column.as;return}if(!t.is_aggregator){let s=t.is_func?new An.yy.FuncValue:new An.yy.Column;t.initial_select_column=Object.assign(s,n)}})}_addNonAggregatorsToFetchColumns(){let r=this.statement.order.filter(n=>!n.is_aggregator&&!n.is_ordinal).map(n=>n.is_func?{columnid:n.initial_select_column.args.filter(i=>!!i.columnid_orig)[0].columnid_orig}:{columnid:n.expression.columnid_orig});this._addFetchColumns(r)}async _processJoins(){let t=[],r=[],n=this.statement.from[0],s=[n],i=["? "+(n.as?" AS "+n.as:n.tableid)];t.push(Object.values(this.data[`${n.databaseid_orig}_${n.as?n.as_orig:n.tableid_orig}`].__merged_data)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let m=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(m+=" ON "+h.on.toString()),i.push(m),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__merged_data))});let o=[],c={};s.forEach(h=>{let m=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hash_name,S=h.as?h.as_orig:h.tableid_orig;o.push({key:`'${S}.${m}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${m}\` AS "${S}.${m}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__merged_attributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(h=>{h.is_func?r.push(h.initial_select_column.toString()):h.initial_select_column.tableid?r.push(`${h.initial_select_column.tableid}.${h.initial_select_column.columnid} AS ${h.expression.columnid}`):r.push(`${h.initial_select_column.columnid} AS ${h.expression.columnid}`)}));let f="",d="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(f=this.statement.limit?"LIMIT "+this.statement.limit:"",d=this.statement.offset?"OFFSET "+this.statement.offset:"");let _=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${f} ${d}`,m=this._convertColumnsToIndexes(h,s);_=await An.promise(m,t),t=null}catch(h){throw ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),ke.error(h),new Error("There was a problem processing the data.")}if(_&&_.length>0){for(let h=0,m=_.length;h<m;h++){let S=_[h];o.forEach(g=>{S[g.key]!==null&&S[g.key]!==void 0&&g.keys.add(S[g.key])})}o.forEach(h=>{let m=Object.keys(this.data[`${h.schema}_${h.table}`].__merged_data),S=d_.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 oE(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=d_.uniqBy(n,i=>[i.table.databaseid,i.table.as?i.table.as:i.table.tableid,i.attribute].join());try{await this._getData(n)}catch(i){throw ke.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),ke.error(i),new Error(Ks)}}async _getData(t){try{let r=t.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]?n[i].columns.push(s.attribute):n[i]={schema:s.table.databaseid,table:s.table.tableid,columns:[s.attribute]},n},{});for(let n in r){let s=r[n],i=this.data[n].__merged_data,o=[];for(let f in i)o.push(i[f][0]);this.data[n].__merged_attributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:o,get_attributes:s.columns},l=await gu.getDataByHash(c),u=s.columns.length;for(let f=0,d=o.length;f<d;f++){let _=o[f],h=l.get(_);for(let m=0;m<u;m++){let S=s.columns[m],g=h[S]===void 0?null:h[S];this.data[n].__merged_data[_].push(g)}}}}catch(r){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__merged_data)),r.as=r.as?r.as:r.tableid,r.databaseid="",r.tableid="?",this.statement.joins&&this.statement.joins.forEach(s=>{s.as=s.as?s.as:s.table.tableid,t.push(Object.values(this.data[`${s.table.databaseid_orig}_${s.table.as?s.table.as_orig:s.table.tableid_orig}`].__merged_data)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(o=>{let c=o.aggregatorid?o.expression:o,l=o.aggregatorid?o.as_orig:c.as_orig;return s.expression.tableid?c.columnid_orig===s.expression.columnid_orig&&c.tableid_orig===s.expression.tableid_orig:c.columnid_orig===s.expression.columnid_orig||s.expression.columnid_orig===l}).length===0&&(s.expression.columnid=s.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&this.statement.limit&&!this.statement.joins&&(delete this.statement.limit,delete this.statement.offset);let n;try{let s=this._buildSQL();ke.trace(`Final SQL: ${s}`),n=await An.promise(s,t),this.has_outer_join&&(n=this._translateUndefinedValues(n)),ke.trace(`Final AlaSQL results data included ${n.length} rows`)}catch(s){throw ke.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),ke.error(s),new Error("There was a problem running the generated sql.")}return n}_translateUndefinedValues(t){try{let r=[];for(let n of t){let s=Object.create(null);Object.keys(n).forEach(i=>{n[i]===void 0?s[i]=null:s[i]=n[i]}),r.push(s)}return r}catch(r){return ke.error(M5.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),ke.trace(r.stack),t}}_buildSQL(t=!0){let r=this.statement.toString();return r=r.replace(/NOT\(NULL\)/g,"NOT NULL"),this.statement.columns.forEach(n=>{if(n.funcid&&n.as){let s=n.toString().replace(" AS "+n.as,"");r=r.replace(n.toString(),s)}}),t===!0?this._convertColumnsToIndexes(r,this.tables):r}_convertColumnsToIndexes(t,r){let n=t,s={};r.forEach(i=>{i.databaseid_orig?s[`${i.databaseid_orig}_${i.as?i.as_orig:i.tableid_orig}`]=i.as?i.as:i.tableid:s[`${i.databaseid}_${i.as?i.as:i.tableid}`]=`\`${i.as?i.as:i.tableid}\``});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,c)=>{let l=s[i],u=new RegExp(`${l}.\`${o}\``,"g"),f=`${l}.[${c}]`;n=n.replace(u,f)});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,c)=>{let l=new RegExp(`\`${o}\``,"g"),u=`[${c}]`;n=n.replace(l,u)});return n}async _simpleSQLQuery(){let t=this.statement.columns.reduce((n,s)=>(s.as_orig&&s.as_orig!=s.columnid_orig?n[s.columnid_orig]=s.as_orig:n[s.columnid_orig]||(n[s.columnid_orig]=s.columnid_orig),n),{}),r=this.fetch_attributes.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]||(n[i]={}),n[i][t[s.attribute]]=null,n},{});for(let n of this.fetch_attributes){let s=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,i={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]};try{i.search_attribute=n.attribute,i.search_value="*";let o=await gu.getDataByValue(i);for(let[c,l]of o)this.data[s].__merged_data[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__merged_data[c]={...r[s]}),this.data[s].__merged_data[c][t[n.attribute]]=l[n.attribute]??null}catch(o){throw ke.error("There was an error when processing this SQL operation. Check your logs"),ke.error(o),new Error(Ks)}}return Object.values(Object.values(this.data)[0].__merged_data)}};y0.exports=ky});var Wr=C((tNe,O0)=>{"use strict";var U5=SM();O0.exports={searchByConditions:B5,searchByHash:H5,searchByValue:k5,search:F5};var Fy=$n(),{transformReq:Gy}=oe(),x5=b0();async function B5(e){return Gy(e),Fy.searchByConditions(e)}a(B5,"searchByConditions");async function H5(e){Gy(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of Fy.searchByHash(e))r&&t.push(r);return t}a(H5,"searchByHash");async function k5(e){Gy(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of Fy.searchByValue(e))t.push(r);return t}a(k5,"searchByValue");function F5(e,t){try{let r=new U5(e);r.validate(),new x5(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(F5,"search")});var mo=C((nNe,C0)=>{"use strict";var f_=require("crypto"),G5=ce(),{CONFIG_PARAMS:q5}=(k(),P(q)),w0="aes-256-cbc",$5=32,V5=16,qy=64,I0=32,K5=qy+I0,N0=new Map;C0.exports={encrypt:Y5,decrypt:W5,createNatsTableStreamName:z5};function Y5(e){let t=f_.randomBytes($5),r=f_.randomBytes(V5),n=f_.createCipheriv(w0,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(Y5,"encrypt");function W5(e){let t=e.substr(0,qy),r=e.substr(qy,I0),n=e.substr(K5,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=f_.createDecipheriv(w0,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(W5,"decrypt");function z5(e,t){let r=G5.get(q5.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=N0.get(r);return n||(n=f_.createHash("md5").update(r).digest("hex"),N0.set(r,n)),n}a(z5,"createNatsTableStreamName")});var po=C((oNe,M0)=>{"use strict";var iNe=Wr(),__=ee(),{validateBySchema:P0}=it(),kc=require("joi"),Q5=mo(),aE=oe(),{handleHDBError:cE,hdb_errors:j5,ClientError:D0}=me(),{HDB_ERROR_MSGS:lE,HTTP_STATUS_CODES:$y}=j5,L0=ce();L0.initSync();var{getDatabases:Vy}=(xe(),P(at)),J5=require("fs-extra"),X5=(k(),P(q));M0.exports={describeAll:Z5,describeTable:uE,describeSchema:e9};async function Z5(e={}){try{let t=aE.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=Vy(),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 uE({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 uE({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){__.error(m)}}let f={};for(let d in l)t||s||r?(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]):c[l[d].schema]&&(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]);for(let d in o)t||s||r?f[d]={}:c[d]&&(f[d]={});return f}catch(t){return __.error("Got an error in describeAll"),__.error(t),cE(new Error,lE.DESCRIBE_ALL_ERR)}}a(Z5,"describeAll");async function uE(e,t){aE.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=P0(e,kc.object({database:kc.string(),table:kc.string().required(),exact_count:kc.boolean().strict()}));if(i)throw new D0(i.message);let c=Vy()[r];if(!c)throw cE(new Error,lE.SCHEMA_NOT_FOUND(e.schema),$y.NOT_FOUND);let l=c[n];if(!l)throw cE(new Error,lE.TABLE_NOT_FOUND(e.schema,e.table),$y.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 J5.stat(l.primaryStore.env.path)).size}catch(h){__.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")),L0.get(X5.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=Q5.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){__.warn(`unable to stat table dbi due to ${h}`)}return _}a(uE,"descTable");async function e9(e){aE.transformReq(e);let t=P0(e,kc.object({database:kc.string(),exact_count:kc.boolean().strict()}));if(t)throw new D0(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=Vy()[n];if(!i)throw cE(new Error,lE.SCHEMA_NOT_FOUND(e.schema),$y.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),aE.isEmpty(l)||l.describe){let u=await uE({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(e9,"describeSchema")});var Ys=C((uNe,H0)=>{var t9=ao(),{callbackify:U0,promisify:r9}=require("util"),{getDatabases:x0}=(xe(),P(at));H0.exports={setSchemaDataToGlobal:v0,getTableSchema:n9,getSystemSchema:s9,setSchemaDataToGlobalAsync:r9(v0)};var B0=po(),cNe=U0(B0.describeAll),lNe=U0(B0.describeTable);function v0(e){global.hdb_schema=x0(),e&&e()}a(v0,"setSchemaDataToGlobal");function n9(e,t,r){let n=x0()[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(n9,"getTableSchema");function s9(){return t9}a(s9,"getSystemSchema")});var Rn=C((fNe,q0)=>{"use strict";var fE=WR(),xr=oe(),i9=require("util"),_E=$n(),o9=Ys(),k0=ee(),{handleHDBError:Fc,hdb_errors:a9}=me(),{HTTP_STATUS_CODES:Gc}=a9,c9=i9.promisify(o9.getTableSchema),l9="updated",F0="inserted",G0="upserted";q0.exports={insert:d9,update:f9,upsert:_9,validation:u9,flush:h9};async function u9(e){if(xr.isEmpty(e))throw new Error("invalid update parameters defined.");if(xr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(xr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await c9(e.schema,e.table),r=fE(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let n=t.hash_attribute,s=new Set,i={},o=!1;return e.operation==="update"&&(o=!0),e.records.forEach(c=>{if(o&&xr.isEmptyOrZeroLength(c[n]))throw k0.error("a valid hash attribute must be provided with update record:",c),new Error("a valid hash attribute must be provided with update record");if(!xr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw k0.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!xr.isEmpty(c[n])&&c[n]!==""&&s.has(xr.autoCast(c[n]))&&(c.skip=!0),s.add(xr.autoCast(c[n]));for(let l in c)i[l]=1}),i[n]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(i)}}a(u9,"validation");async function d9(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=fE(e);if(t)throw Fc(new Error,t.message,Gc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Fc(new Error,r,Gc.BAD_REQUEST);let n=await _E.createRecords(e);return dE(F0,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(d9,"insertData");async function f9(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=fE(e);if(t)throw Fc(new Error,t.message,Gc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Fc(new Error,r,Gc.BAD_REQUEST);let n=await _E.updateRecords(e);return xr.isEmpty(n.existing_rows)?dE(l9,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):dE(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(f9,"updateData");async function _9(e){if(e.operation!=="upsert")throw Fc(new Error,"invalid operation, must be upsert",Gc.INTERNAL_SERVER_ERROR);let t=fE(e);if(t)throw Fc(new Error,t.message,Gc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Fc(new Error,r,Gc.BAD_REQUEST);let n=await _E.upsertRecords(e);return dE(G0,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(_9,"upsertData");function dE(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===F0?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===G0?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(dE,"returnObject");function h9(e){return xr.transformReq(e),_E.flush(e.schema,e.table)}a(h9,"flush")});var Yy=C((hNe,K0)=>{var m9=it(),Ky=require("joi"),{hdb_table:p9,hdb_database:$0}=bi(),V0={schema:$0,database:$0,table:p9},E9={date:Ky.date().iso().required()},g9={timestamp:Ky.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};K0.exports=function(e,t){let r=t==="timestamp"?{...V0,...g9}:{...V0,...E9},n=Ky.object(r);return m9.validateBySchema(e,n)}});var z0=C((mNe,W0)=>{var S9=it(),Wy=require("joi"),{hdb_table:T9,hdb_database:Y0}=bi(),A9=Wy.object({schema:Y0,database:Y0,table:T9,hash_values:Wy.array().required(),ids:Wy.array()});W0.exports=function(e){return S9.validateBySchema(e,A9)}});var Jy=C((pNe,Q0)=>{"use strict";var zy=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}},Qy=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}},jy=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};Q0.exports={InsertObject:zy,NoSQLSeachObject:Qy,DeleteResponseObject:jy}});var Vc=C((gNe,ex)=>{"use strict";var J0=Yy(),R9=z0(),qc=oe(),j0=require("moment"),X0=ee(),{promisify:y9,callbackify:b9}=require("util"),$c=(k(),P(q)),O9=Ys(),Xy=y9(O9.getTableSchema),Zy=$n(),{DeleteResponseObject:N9}=Jy(),{handleHDBError:_a,hdb_errors:w9}=me(),{HDB_ERROR_MSGS:hE,HTTP_STATUS_CODES:ha}=w9,I9="records successfully deleted",C9=b9(Z0);ex.exports={delete:C9,deleteRecord:Z0,deleteFilesBefore:P9,deleteAuditLogsBefore:D9};async function P9(e){let t=J0(e,"date");if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);if(qc.transformReq(e),!j0(e.date,j0.ISO_8601).isValid())throw _a(new Error,hE.INVALID_DATE,ha.BAD_REQUEST,$c.LOG_LEVELS.ERROR,hE.INVALID_DATE,!0);let n=qc.checkSchemaTableExist(e.schema,e.table);if(n)throw _a(new Error,n,ha.NOT_FOUND,$c.LOG_LEVELS.ERROR,n,!0);let s=await Zy.deleteRecordsBefore(e);if(await Xy(e.schema,e.table),X0.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(P9,"deleteFilesBefore");async function D9(e){let t=J0(e,"timestamp");if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);if(qc.transformReq(e),isNaN(e.timestamp))throw _a(new Error,hE.INVALID_VALUE("Timestamp"),ha.BAD_REQUEST,$c.LOG_LEVELS.ERROR,hE.INVALID_VALUE("Timestamp"),!0);let r=qc.checkSchemaTableExist(e.schema,e.table);if(r)throw _a(new Error,r,ha.NOT_FOUND,$c.LOG_LEVELS.ERROR,r,!0);let n=await Zy.deleteAuditLogsBefore(e);return await Xy(e.schema,e.table),X0.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(D9,"deleteAuditLogsBefore");async function Z0(e){e.ids&&(e.hash_values=e.ids);let t=R9(e);if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);qc.transformReq(e);let r=qc.checkSchemaTableExist(e.schema,e.table);if(r)throw _a(new Error,r,ha.NOT_FOUND,$c.LOG_LEVELS.ERROR,r,!0);try{await Xy(e.schema,e.table);let n=await Zy.deleteRecords(e);return qc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${I9}`),n}catch(n){if(n.message===$c.SEARCH_NOT_FOUND_MESSAGE){let s=new N9;return s.message=$c.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(Z0,"deleteRecord")});var mE={};Ue(mE,{HASH_FUNCTION:()=>p_,hash:()=>rb,validate:()=>nb});function eb(e=m_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(h_.randomBytes(e)).map(r=>t[r%t.length]).join("")}function rb(e,t=p_[rx?.toUpperCase()]??"sha256"){return tb[t](e)}function nb(e,t,r=p_[rx?.toUpperCase()]??"sha256"){return e?L9[r](e,t):!1}var h_,Su,tx,rx,m_,nx,p_,tb,L9,pE=Re(()=>{h_=M(require("node:crypto")),Su=M(require("argon2")),tx=M(ce());k();rx=(0,tx.get)(B.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),m_=16,nx=9,p_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(p_||{});a(eb,"generateSalt");tb={md5:a((e,t=void 0)=>{t=t??eb(nx);let r=h_.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??eb(m_);let r=h_.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=eb(m_),r=await Su.hash(e,{type:Su.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},L9={md5:a((e,t)=>{let r=e.slice(0,nx);return e===tb.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,m_);return e===tb.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await Su.verify(e.slice(m_),t),"argon2id")};a(rb,"hash");a(nb,"validate")});var ix=C((RNe,sx)=>{var sb=it(),zr={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 M9(e){return zr.password.presence=!0,zr.username.presence=!0,zr.role.presence=!0,zr.active.presence=!0,sb.validateObject(e,zr)}a(M9,"addUserValidation");function v9(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,sb.validateObject(e,zr)}a(v9,"alterUserValidation");function U9(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,sb.validateObject(e,zr)}a(U9,"dropUserValidation");sx.exports={addUserValidation:M9,alterUserValidation:v9,dropUserValidation:U9}});var It=C((ONe,ax)=>{"use strict";var{platform:bNe}=require("os"),x9="nats-server.zip",ib="nats-server",B9=process.platform==="win32"?`${ib}.exe`:ib,H9=/^[^\s.,*>]+$/,ox="__request__",k9=a(e=>`${e}.${ox}`,"REQUEST_SUBJECT"),F9={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},G9={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},q9={HUB:"hub.pid",LEAF:"leaf.pid"},$9={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},V9={SUCCESS:"success",ERROR:"error"},K9={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},Y9={TXN:"txn",MSGID:"msgid"},Tu={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},W9={[Tu.ERR]:1,[Tu.WRN]:2,[Tu.INF]:3,[Tu.DBG]:4,[Tu.TRC]:5},z9={debug:"-D",trace:"-DVV"};ax.exports={NATS_SERVER_ZIP:x9,NATS_SERVER_NAME:ib,NATS_BINARY_NAME:B9,PID_FILES:q9,NATS_CONFIG_FILES:G9,SERVER_SUFFIX:$9,NATS_TERM_CONSTRAINTS_RX:H9,REQUEST_SUFFIX:ox,UPDATE_REMOTE_RESPONSE_STATUSES:V9,CLUSTER_STATUS_STATUSES:K9,REQUEST_SUBJECT:k9,SUBJECT_PREFIXES:Y9,MSG_HEADERS:F9,LOG_LEVELS:Tu,LOG_LEVEL_FLAGS:z9,LOG_LEVEL_HIERARCHY:W9}});var ob=C(cx=>{"use strict";var Q9={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});Kr.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()}});ZD={type:"application/json",serializeStream:Of,serialize:Nf,deserialize:MJ,q:.5};Kr.set("*/*",ZD);Kr.set("",ZD);a(MJ,"tryJSONParse");a(If,"registerContentHandlers");vJ=require("fastify-plugin"),UJ=vJ(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=ip(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(ip,"findBestSerializer");zD=HA.default.get(B.HTTP_COMPRESSIONTHRESHOLD);a(Cf,"serialize");a(ia,"serializeMessage");a(qA,"asyncSerialization");a($A,"hasAsyncSerialization");a(xJ,"streamToBuffer");BJ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(HJ,"isBufferEncoding");a(kJ,"parseContentType");a(no,"getDeserializer");a(FJ,"deserializerUnknownType");a(GJ,"transformIterable");a(sp,"toCsvStream")});var su={};Ue(su,{Blob:()=>gi,blobsWereEncoded:()=>Rc,cleanupOrphans:()=>t4,databasePaths:()=>KA,decodeBlobsWithWrites:()=>_p,decodeFromDatabase:()=>oo,decodeWithBlobCallback:()=>Lf,deleteBlob:()=>up,deleteBlobsInObject:()=>aa,deleteRootBlobPathsForDB:()=>zA,encodeBlobsAsBuffers:()=>XJ,encodeBlobsWithFilePath:()=>fp,findBlobsInObject:()=>Ac,getFileId:()=>dp,getFilePathForBlob:()=>lL,getRootBlobPathsForDB:()=>nu,isSaving:()=>YJ,saveBlob:()=>Df,setDeletionDelay:()=>KJ,startPreCommitBlobsForRecord:()=>QA});function aL(){}function up(e){let t=lL(e);t&&setTimeout(()=>{(0,Fe.unlink)(t,r=>{r&&Ft.default.debug?.("Error trying to remove blob file",r)})},cL)}function KJ(e){cL=e}function Df(e,t=!1){let r=br.get(e);if(!r)r={storageIndex:0,fileId:null,store:mn},br.set(e,r);else{if(r.fileId)return r;r.store=mn}return r.deleteOnFailure=t,zJ(r),r.source?VA(e,r.source,r):r.contentBuffer?WJ(e,r):VA(e,oa.Readable.from(e.stream()),r),r}function VA(e,t,r){let{filePath:n,fileId:s,store:i,compress:o,flush:c}=r;return r.saving=new Promise((l,u)=>{let f=s+":blob";if(!i.attemptLock(f,0))throw new Error(`Unable to get lock for blob file ${s}`);let d=(0,Fe.createWriteStream)(n,{autoClose:!1,flags:"w"}),_=!1;e.size!==void 0&&(d.write(m(e.size)),_=!0);let h;o?(_||d.write($J),h=(0,cp.createDeflate)(),(0,oa.pipeline)(t,h,d,S)):(_||d.write(qJ),(0,oa.pipeline)(t,d,S));function m(g){let R=BigInt(g),E=new Uint8Array(mr),T=new DataView(E.buffer);return R|=BigInt(o?WA:oL)<<48n,T.setBigInt64(0,R),E}a(m,"createHeader");function S(g){let R=d.fd;if(g){if(i.unlock(f,0),R&&((0,Fe.close)(R),d.fd=null),r.deleteOnFailure)(0,Fe.unlink)(n,E=>{E&&Ft.default.debug?.("Error while deleting aborted blob file",E)});else try{if((0,Fe.statSync)(n).size===0){let E=Buffer.from(g.toString());(0,Fe.writeFile)(n,Buffer.concat([m(BigInt(E.length)+0xff000000000000n),E]),T=>{T&&Ft.default.debug?.("Error write error message to blob file",T)})}}catch(E){Ft.default.debug?.("Error checking blob file after abort",E)}u(g)}else{if(!_){_=!0;let E=h?h.bytesWritten:d.bytesWritten-mr;e.size=E,(0,Fe.write)(R,m(E),0,mr,0,S);return}i.unlock(f,0),c?(0,Fe.fdatasync)(R,E=>{E&&u(E),l(),(0,Fe.close)(R),d.fd=null}):(l(),(0,Fe.close)(R),d.fd=null)}}a(S,"finished")}),e}function dp(e){return br.get(e)?.fileId}function YJ(e){return br.get(e)?.saving}function lL(e){let t=br.get(e);return t?.fileId&&ru(t)}function nu(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 Ft.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,lp.get)(B.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,Ti.join)(n,e.databaseName)):t=[(0,Ti.join)((0,lp.getHdbBasePath)(),"blobs",e.databaseName)],KA.set(e,t)}return t}async function zA(e){let t=nu(e);t&&await Promise.all(t.map(r=>uL(r)))}async function uL(e){if((0,Fe.existsSync)(e)){for(let t of await(0,pn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await uL((0,Ti.join)(e,t.name));else try{await(0,pn.unlink)((0,Ti.join)(e,t.name))}catch(r){Ft.default.warn?.("Error deleting file",r)}try{await(0,pn.rmdir)(e)}catch(t){Ft.default.warn?.("Error deleting directory",t)}}}function ru({storageIndex:e,fileId:t,store:r}){let n=nu(r);return(0,Ti.join)(n[e],t.slice(-9,-6)||"0",t.slice(-6,-3)||"0",t.length<=9?t.slice(-3):t.slice(0,-9)+t.slice(-3))}function WJ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<iL))return e.size=n,VA(e,oa.Readable.from([r]),t)}function zJ(e){let t=nu(e.store),r=QJ(),n=t?.length>1?jJ(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=ru(e),o=(0,Ti.dirname)(i);(0,Fe.existsSync)(o)||(0,YA.ensureDirSync)(o),e.filePath=i}function QJ(){let e=nL.get(mn);if(!e){let t=0,r=nu(mn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Fe.existsSync)(n))for(let c of(0,Fe.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>o&&(o=l)}s+=o,n=(0,Ti.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(mn.getUserSharedBuffer("blob-file-id",e.buffer)),nL.set(mn,e)}return Number(Atomics.add(e,0,1n))}function jJ(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(ap);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,JJ(e)),e.frequencyTable[t%ap]}async function JJ(e){if(!pn.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let o;try{o=await(0,pn.statfs)(s)}catch(l){if(l.code!=="ENOENT")throw l;(0,YA.ensureDirSync)(s),o=await(0,pn.statfs)(s)}let c=o.bavail*o.bsize;return Math.pow(c,.8)})),r=new Array(ap),n=t.map(s=>1/s);for(let s=0;s<ap;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 fp(e,t,r){eu=t,mn=r,Rc=!1;try{return e()}finally{eu=void 0,mn=void 0}}function XJ(e){vr=[];let t;try{t=e()}catch(n){throw vr=void 0,n}let r=vr.length<2?vr[0]:Promise.all(vr);return vr=void 0,r?r.then(()=>e()):t}function _p(e,t,r){try{vr=[],io=r,mn=t,e()}catch(s){throw io=void 0,vr=void 0,s}io=void 0;let n=vr.length<2?vr[0]:Promise.all(vr);return vr=void 0,n}function Lf(e,t,r){mn=r;try{return io=t,e()}finally{io=void 0}}function oo(e,t){return mn=t,e()}function aa(e){Ac(e,t=>{up(t)})}function Ac(e,t){if(e instanceof gi)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&Ac(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&Ac(e[r],t)}}function QA(e,t){let r;for(let n in e){let s=e[n];if(s instanceof tu&&s.saveBeforeCommit){mn=t;let i=Df(s,!0).saving??Promise.resolve();r=r?Promise.all(r,i):i}}return r}function e4(){return class{static{a(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}async function t4(e){let t,r,n=0;for(let u in e){let f=e[u];if(t=f.primaryStore.rootStore,r=f.auditStore,r)break}let s=new Set,i=nu(t);if(i)for(let u of i)await o(u);return await c(),n;async function o(u){try{if(!(0,Fe.existsSync)(u))return;for(let f of await(0,pn.readdir)(u,{withFileTypes:!0})){let d=(0,Ti.join)(u,f.name);if(f.isDirectory())await o(d);else if(s.size%1e6===0&&Ft.default.info?.("Finding all blobs for orphan check, paths accumulated",s.size),s.add(d),s.size%2===0){let _=(0,sL.getHeapStatistics)();_.used_heap_size>_.heap_size_limit*.8&&await c()}}}catch(f){Ft.default.error?.("Error searching path for blobs",u,f)}}a(o,"searchPath");async function c(){for(let u in e){Ft.default.warn?.("Checking for references to potential orphaned blobs in table",u);let f=e[u];for(let d of f.primaryStore.getRange({versions:!0,snapshot:!1,lazy:!0}))try{d.metadataFlags&Ur&&d.value&&l(d.value),await new Promise(setImmediate)}catch(_){Ft.default.error?.("Error searching table",u," for references to potential orphaned blobs failed",_)}}Ft.default.warn?.("Checking for references to potential orphaned blobs in the audit log");for(let{value:u}of r.getRange({start:1,snapshot:!1,lazy:!0}))try{let f=gt(u),d=r.tableStores[f.tableId],_=d?.getEntry(f.recordId);(!_||_.version!==f.version||!_.value)&&l(f.getValue(d))}catch(f){Ft.default.error?.("Error searching audit log for references to potential orphaned blobs failed",f)}Ft.default.warn?.("Deleting",s.size,"orphaned blobs"),n+=s.size;for(let u of s)try{await(0,pn.unlink)(u)}catch(f){Ft.default.warn?.("Error deleting file",f)}Ft.default.warn?.("Finished deleting",s.size,"orphaned blobs"),s.clear()}a(c,"removePathsThatAreNotReferenced");function l(u){Ac(u,f=>{if(f instanceof tu){let d=br.get(f);if(d.fileId!=null){let _=ru(d);s.has(_)&&s.delete(_)}}})}a(l,"checkObjectForReferences")}var Si,pn,Fe,cp,oa,YA,lp,Ti,Ft,sL,iL,mr,oL,WA,tL,qJ,$J,rL,br,io,gi,eu,vr,mn,Rc,Pf,op,VJ,tu,cL,KA,nL,ap,ZJ,hn=Re(()=>{Si=require("msgpackr"),pn=require("node:fs/promises"),Fe=require("node:fs"),cp=require("node:zlib"),oa=require("node:stream"),YA=require("fs-extra"),lp=M(ce());k();Ti=require("path"),Ft=M(ks());so();Ai();sL=require("node:v8"),iL=8192,mr=8,oL=0,WA=1,tL=255,qJ=new Uint8Array([0,oL,255,255,255,255,255,255]),$J=new Uint8Array([0,WA,255,255,255,255,255,255]),rL=0xffffffffffff,br=new WeakMap,gi=global.Blob||e4(),Rc=!1,Pf=new Uint8Array(8),op=new DataView(Pf.buffer),VJ=6e4;a(aL,"InstanceOfBlobWithNoConstructor");aL.prototype=gi.prototype;tu=class e extends aL{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size),t?.saveBeforeCommit!=null&&(this.saveBeforeCommit=t.saveBeforeCommit)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=br.get(this),{start:r,end:n,contentBuffer:s,asString:i}=t;return i||(s&&(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),s?(t.asString=s.toString(),t.asString):($A()&&qA(this.bytes().then(o=>t.contentBuffer=o)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=br.get(this),{start:r,end:n,contentBuffer:s}=t;if(s)return(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),Promise.resolve(s);let i=ru(t),o,c=a(async()=>{let l,u=mr;try{if(l=await(0,pn.readFile)(i),l.length>=mr){l.copy(Pf,0,0,mr);let d=op.getBigUint64(0);if(Number(d>>48n)===tL)throw new Error("Error in blob: "+l.subarray(mr));if(u=Number(d&0xffffffffffffn),u<n&&(u=n),u<rL&&(this.size=u,this.#t))for(let _ of this.#t)_(u)}}catch(d){if(d.code!=="ENOENT")throw d;l=Buffer.alloc(0)}function f(d){if(u>d.length){let _=t.store,h=t.fileId+":blob";if(o)throw new Error(`Incomplete blob for ${i}`);return new Promise((m,S)=>{if(_.attemptLock(h,0,()=>(o=!0,m(c()))))return o=!0,_.unlock(h,0),m(c())})}return(n!=null||r!=null)&&(d=d.subarray(r??0,n??d.length)),d}return a(f,"checkCompletion"),l[1]===WA?new Promise((d,_)=>{(0,cp.deflate)(l.subarray(mr),(h,m)=>{h?_(h):d(f(m))})}):f(l.subarray(mr))},"readContents");return c()}async arrayBuffer(){let t=await this.bytes(),r=new ArrayBuffer(t.length);return new Uint8Array(r).set(t),r}stream(){let t=br.get(this),{contentBuffer:r,start:n,end:s}=t;if(r)return(s!=null||n!=null)&&(r=r.subarray(n??0,s??t.contentBuffer.length)),new ReadableStream({pull(S){S.enqueue(r),S.close()}});let i=ru(t),o,c=0,l=0,u,f,d,_=!1,h=this;return new ReadableStream({start(){let S=1e3,g=a((R,E)=>{(0,Fe.open)(i,"r",(T,N)=>{if(T){if(T.code==="ENOENT"&&d!==!1&&(Ft.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=N,R(N)})},"openFile");return new Promise(g)},pull:a(S=>{let g=0,R=100;return new Promise(a(function E(T,N){function v(X){(0,Fe.close)(o),clearTimeout(f),u&&u.close(),N(X),h.#e?.forEach(W=>W(X))}a(v,"onError");let H=Buffer.allocUnsafe(262144);(0,Fe.read)(o,H,0,H.length,c,(X,W,$)=>{if(l+=W,X)return v(X);if(c===0){if(W<mr){R-- >0&&d!==!1?(m(),Ft.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>E(T,N),20).unref()):(Ft.default.debug?.("File was empty, throwing error",i,R),v(new Error(`Blob ${t.fileId} was empty`)));return}$.copy(Pf,0,0,mr);let ie=op.getBigUint64(0);if(Number(ie>>48n)===tL)return v(new Error("Error in blob: "+$.subarray(mr,W)));if(g=Number(ie&0xffffffffffffn),g<rL&&h.size!==g&&(h.size=g,h.#t))for(let z of h.#t)z(g);$=$.subarray(mr,W),l-=mr}else if(W===0){let ie=Buffer.allocUnsafe(8);return(0,Fe.read)(o,ie,0,mr,0,z=>{if(z)return v(z);if(Pf.set(ie),g=Number(op.getBigUint64(0)&0xffffffffffffn),g>l){m()?u?f=setTimeout(()=>{v(new Error(`File read timed out reading from ${i}`))},VJ).unref():(u=(0,Fe.watch)(i,{persistent:!1},()=>{u.close(),u=null,f&&(clearTimeout(f),f=null,E(T,N))}),E(T,N)):_?v(new Error("Blob is incomplete")):(_=!0,E(T,N));return}(0,Fe.close)(o),S.close(),T()})}else $=$.subarray(0,W);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=W,E(T,N);s&&l>=s&&(l>s&&($=$.subarray(0,s-c)),l=g=s),n&&n>c&&($=$.subarray(n-c))}c+=W;try{S.enqueue($)}catch(ie){return Ft.default.debug?.("Error enqueuing chunk",ie),T()}l===g&&((0,Fe.close)(o),S.close()),T()})},"readMore"))},"pull"),cancel(){(0,Fe.close)(o),clearTimeout(f),u&&u.close()}});function m(){if(d===void 0){let S=t.store,g=t.fileId+":blob";d=!S.attemptLock(g,0,()=>{d=!1}),d||S.unlock(g,0)}return d}}slice(t,r,n){let s=br.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};br.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};br.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return this.saveBeforeCommit=!0,Promise.resolve()}get written(){return br.get(this)?.saving??Promise.resolve()}},cL=500;a(up,"deleteBlob");a(KJ,"setDeletionDelay");global.createBlob=function(e,t){let r=new tu(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(br.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof oa.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=oa.Readable.from(e);else throw new Error("Invalid source type");return r};a(Df,"saveBlob");a(VA,"writeBlobWithStream");a(dp,"getFileId");a(YJ,"isSaving");a(lL,"getFilePathForBlob");KA=new Map;a(nu,"getRootBlobPathsForDB");a(zA,"deleteRootBlobPathsForDB");a(uL,"rimrafSteadily");a(ru,"getFilePath");a(WJ,"writeBlobWithBuffer");a(zJ,"generateFilePath");nL=new Map;a(QJ,"getNextFileId");ap=128;a(jJ,"getNextStorageIndex");a(JJ,"createFrequencyTableForStoragePaths");a(fp,"encodeBlobsWithFilePath");a(XJ,"encodeBlobsAsBuffers");a(_p,"decodeBlobsWithWrites");a(Lf,"decodeWithBlobCallback");a(oo,"decodeFromDatabase");a(aa,"deleteBlobsInObject");a(Ac,"findBlobsInObject");a(QA,"startPreCommitBlobsForRecord");ZJ=new Si.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,Si.addExtension)({Class:gi,type:11,unpack:a(function(e){let t=ZJ.unpack(e),r=new tu;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(br.set(r,{storageIndex:t[1],fileId:t[2],store:mn}),io)return io(r)??r;if(!mn)throw new Error("No store specified, cannot load blob from storage")}else br.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:a(function(e){let t=br.get(e);if(eu!==void 0&&(Rc=!0,t?.recordId!==void 0&&t.recordId!==eu))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<iL)return r.size=t.contentBuffer.length,(0,Si.pack)([r,t.contentBuffer])}if(eu!==void 0){if(t=Df(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=eu,(0,Si.pack)([r,t.storageIndex,t.fileId])}if(t){if(io)return io(e),(0,Si.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Fe.readFileSync)(ru(t));if(n.length>=mr&&(n.copy(Pf,0,0,mr),Number(op.getBigUint64(0)&0xffffffffffffn)===n.length-mr))return Buffer.concat([(0,Si.pack)([r]),n]);if(vr)vr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&vr)return vr.push(e.bytes()),Buffer.alloc(0);throw n}}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Si.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(e4,"polyfillBlob");a(t4,"cleanupOrphans")});var mL={};Ue(mL,{HAS_EXPIRATION:()=>pp,HAS_RESIDENCY_ID:()=>rR,HAS_STRUCTURE_UPDATE:()=>gp,LAST_TIMESTAMP_PLACEHOLDER:()=>xf,LOCAL_TIMESTAMP:()=>r4,METADATA:()=>bc,NEW_TIMESTAMP_PLACEHOLDER:()=>fL,NO_TIMESTAMP:()=>jA,PENDING_LOCAL_TIME:()=>nR,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>tR,RecordEncoder:()=>eR,TIMESTAMP_ASSIGN_LAST:()=>s4,TIMESTAMP_ASSIGN_NEW:()=>_L,TIMESTAMP_ASSIGN_PREVIOUS:()=>hL,TIMESTAMP_PLACEHOLDER:()=>hp,TIMESTAMP_RECORD_PREVIOUS:()=>JA,handleLocalTimeForGets:()=>Sp,recordUpdater:()=>sR,removeEntry:()=>Nc});function o4(){return Uf[0]=Uf[0]^64,n4.getFloat64(0)}function Sp(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?.[bc];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?.[bc]>=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[bc];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,yc.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<yc.length;u++){let f=yc[u].deref();(!f||f.isDone||f.isCommitted)&&yc.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function sR(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){d||l==null?iu=i?.localTime?JA|hL:jA:iu=l?i?.localTime?JA|16384:_L|16384:jA;let h=u?.expiresAt;if(h>=0&&(c|=pp),vf=c,XA=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:iu>0},S,g=0;try{let R=i?.residencyId,E=u?.residencyId;E&&(ZA=E,vf|=rR,g|=wc),R!==E&&(g|=Ic,R||(R=0)),c&pp&&(g|=Hf),u?.originatingOperation&&(g|=Bf),d&&(m.ifVersion=S=i?.version??null),i&&i.value&&f!=="message"&&i.metadataFlags&Ur&&(r.getBinaryFast(i.localTime)||aa(i.value));let T;if(s!==void 0&&(T=fp(()=>e.put(n,s,m),n,e.rootStore),Rc&&(g|=Ur)),l){let N=u?.user?.username;if(_&&(fp(()=>e.encoder.encode(_),n,e.rootStore),Rc&&(g|=Ur)),e.encoder.hasStructureUpdate&&(g|=gp,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let v=i?.localTime,H=r.get(v);if(H){let X=gt(H).previousLocalTime;return T=r.put(v,Oc(o,t,n,X,u?.nodeId??server.replication.getThisNodeId(r)??0,N,f,Mf,g,E,R,h),{ifVersion:S}),T}}T=r.put(s===void 0?fL:xf,Oc(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,f,Mf,g,E,R,h,u?.originatingOperation),{instructedWrite:!0,ifVersion:S})}return T}catch(R){throw R.message+=" id: "+n+" options: "+m,R}}}function Nc(e,t,r){if(t)return t.value&&t.metadataFlags&Ur&&!e.auditStore?.getBinaryFast(t.localTime)&&aa(t.value),e.remove(t.key,r)}var dL,mp,hp,xf,tR,fL,r4,bc,Uf,n4,jA,_L,s4,hL,JA,pp,rR,nR,gp,i4,Mf,iu,vf,XA,ZA,eR,yc,ou=Re(()=>{dL=require("msgpackr");Ai();mp=M(ee());hn();hn();hp=new Uint8Array([1,1,1,1,4,64,0,0]),xf=new Uint8Array([1,1,1,1,1,0,0,0]),tR=new Uint8Array([1,1,1,1,3,64,0,0]),fL=new Uint8Array([1,1,1,1,0,64,0,0]),r4=Symbol("local-timestamp"),bc=Symbol("metadata"),Uf=new Uint8Array(8),n4=new DataView(Uf.buffer,0,8),jA=0,_L=0,s4=1,hL=3,JA=4,pp=16,rR=32,nR=1,gp=256,iu=0,vf=-1,XA=-1,ZA=0,eR=class extends dL.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(iu||vf>=0){let o=0,c=iu;c&&(o+=8,iu=0);let l=vf,u=XA,f=ZA;l>=0&&(o+=4,vf=-1,u>=0&&(o+=8,XA=-1),f&&(o+=4,ZA=0));let d=i4=r.call(this,s,i|2048|o);Mf=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(hp[4]=c,hp[5]=c>>8,d.set(hp,_),_+=8),Rc&&(l|=Ur),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|Ep<<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 Mf=r.call(this,s,i),Mf};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(Uf,0,c),c+=8;else for(let _=0;_<8;_++)Uf[_]=t[c++];l=o4(),i=t[c]}let u,f;i<32&&(i===Ep?(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&pp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&rR&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=oo(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[bc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:oo(()=>super.decode(t,r),this.rootStore)}catch(c){return mp.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(o4,"getTimestamp");a(Sp,"handleLocalTimeForGets");yc=[];setInterval(()=>{for(let e=0;e<yc.length;e++){let t=yc[e].deref();!t||t.isDone||t.isCommitted?yc.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(mp.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):mp.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(sR,"recordUpdater");a(Nc,"removeEntry")});var oR={};Ue(oR,{add:()=>Tp,applyReverse:()=>pL,getRecordAtTime:()=>iR,rebuildUpdateBefore:()=>Ap});function Tp(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 Ap(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,Tp(n,s,i)}else r&&(n||(n={}),n[s]=i)}else n||(n={}),n[s]=e[s];return n}function pL(e,t){for(let r in t){let n=t[r];if(n?.__op__){let s=a4[n.__op__]?.reverse;if(s)s(e,r,{value:n.value});else throw new Error(`Unsupported operation ${n.__op__}`)}else e[r]=EL}}function iR(e,t,r){let n=r.rootStore.auditStore,s={...e.value},i=e.localTime;for(;i>t;){let l=n.get(i),u=gt(l);switch(u.type){case"put":s=u.getValue(r);break;case"patch":pL(s,u.getValue(r));break;case"delete":s=null}i=u.previousLocalTime}let o={},c=0;for(let l in s)s[l]===EL&&(o[l]=!0,c++);for(;c>0&&i>0;){let l=n.get(i),u=gt(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 a4,EL,Rp=Re(()=>{Ai();a(Tp,"add");Tp.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)};a4={add:Tp};a(Ap,"rebuildUpdateBefore");a(pL,"applyReverse");EL={};a(iR,"getRecordAtTime")});var RL={};Ue(RL,{onStorageReclamation:()=>kf,runReclamationHandlers:()=>uR,setAvailableSpaceRatioGetter:()=>l4});function kf(e,t,r){(r||(0,bp.getWorkerIndex)()===(0,bp.getWorkerCount)()-1)&&(yp.has(e)||yp.set(e,[]),yp.get(e).push({priority:0,handler:t}),lR||(lR=setTimeout(uR,SL).unref()))}async function uR(){for(let[e,t]of yp)try{let r=await AL(e),n=c4/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&&(cR.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){cR.default.error?.("Error running storage reclamation handlers",r)}lR=setTimeout(uR,SL).unref()}function l4(e){AL=e??TL}var aR,bp,cR,Op,gL,yp,c4,SL,lR,TL,AL,Np=Re(()=>{aR=require("node:fs/promises"),bp=M(st()),cR=M(ks());k();Op=M(ce()),gL=M(oe());Op.default.initSync();yp=new Map,c4=Op.default.get(B.STORAGE_RECLAMATION_THRESHOLD)??.4,SL=(0,gL.convertToMS)(Op.default.get(B.STORAGE_RECLAMATION_INTERVAL))||36e5;a(kf,"onStorageReclamation");TL=a(async e=>{if(aR.statfs){let t=await(0,aR.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"),AL=TL;a(uR,"runReclamationHandlers");a(l4,"setAvailableSpaceRatioGetter")});var UL={};Ue(UL,{ACTION_32_BIT:()=>Ep,ACTION_64_BIT:()=>_4,AUDIT_STORE_OPTIONS:()=>qf,Decoder:()=>Pc,HAS_BLOBS:()=>Ur,HAS_CURRENT_RESIDENCY_ID:()=>wc,HAS_EXPIRATION_EXTENDED_TYPE:()=>Hf,HAS_ORIGINATING_OPERATION:()=>Bf,HAS_PREVIOUS_RESIDENCY_ID:()=>Ic,REMOTE_SEQUENCE_UPDATE:()=>Dp,createAuditEntry:()=>Oc,getLastRemoved:()=>d4,openAuditStore:()=>Cp,readAuditEntry:()=>gt,removeAuditEntry:()=>Pp,setAuditRetention:()=>f4,transactionKeyEncoder:()=>DL});function Cp(e){let t=e.auditStore=e.openDB(dR.AUDIT_STORE_NAME,{create:!1,...qf});t||(t=e.auditStore=e.openDB(dR.AUDIT_STORE_NAME,qf),bL(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=_R;kf(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()-fR/(1+i*i)})){try{_=Pp(t,m,S)}catch(g){au.warn("Error removing audit entry",g)}if(h=m,await new Promise(setImmediate),++d>=u4){o=10;break}}await _}finally{d===0?o=Math.min(o<<1,fR/10):(bL(t,h),o>100&&(o=o>>1)),f(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Gf.getWorkerIndex)()===(0,Gf.getWorkerCount)()-1&&c(),(0,Gf.getWorkerIndex)()===0&&!yL)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(yL=!0,au.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 Pp(e,t,r){let n=h4(r),s;if(n&Ur){s=gt(r);let i=e.tableStores[s.tableId];if(i){let o=s.type==="message"?null:i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&oo(()=>aa(s.getValue(i)),i.rootStore)}}if((n&15)===hR){s=s||gt(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 bL(e,t){mR[0]=t,e.put(Symbol.for("last-removed"),LL)}function d4(e){let t=e.get(Symbol.for("last-removed"));if(t)return LL.set(t),mR[0]}function f4(e,t=_R){fR=e,_R=t}function Oc(e,t,r,n,s,i,o,c,l,u,f,d,_){let h=ML[o];if(!h)throw new Error(`Invalid audit entry type ${o}`);let m=1;if(n&&(n>1?ca.setFloat64(0,n):_s.set(tR),m=9),l){if(l&255)throw new Error("Illegal extended type");m+=3}R(s),R(t),g(r),ca.setFloat64(m,e),m+=8,l&wc&&R(u),l&Ic&&R(f),l&Hf&&(ca.setFloat64(m,d),m+=8),l&Bf&&R(vL[_]),i?g(i):_s[m++]=0,l?ca.setUint32(n?8:0,h|l|3221225472):_s[n?8:0]=h;let S=_s.subarray(0,m);if(c)return Buffer.concat([S,c]);return S;function g(E){let T=m;m+=1,m=(0,Cc.writeKey)(E,_s,m);let N=m-T-1;N>127?N>16383?(au.error("Key or username was too large for audit entry",E),m=T+1,_s[T]=0):(_s.copyWithin(T+2,T+1,m),ca.setUint16(T,N|32768),m++):_s[T]=N}function R(E){E<128?_s[m++]=E:E<16384?(ca.setUint16(m,E|32768),m+=2):E<1056964608?(ca.setUint32(m,E|3221225472),m+=4):(_s[m]=255,ca.setUint32(m+1,E),m+=5)}}function h4(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 Pc(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function gt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new Pc(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&wc&&(_=n.readInt()),i&Ic&&(h=n.readInt()),i&Hf&&(m=n.readFloat64()),i&Bf){let T=n.readInt();S=vL[T]}l=n.readInt();let g=n.position,R=n.position+=l,E;return{type:ML[i&7],tableId:c,nodeId:o,get recordId(){return(0,Cc.readKey)(e,u,f)},getBinaryRecordId(){return e.subarray(u,f)},version:d,previousLocalTime:s,get user(){return R>g?(0,Cc.readKey)(e,g,R):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(T,N,v){if(i&wp||i&Ff&&!N)return E||(E=oo(()=>T.decoder.decode(e.subarray(n.position,r)),T.rootStore)),E;if(i&Ff&&v)return iR(T.getEntry(this.recordId),v,T)},getBinaryValue(){return i&(wp|Ff)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:_,previousResidencyId:h,expiresAt:m,originatingOperation:S}}catch(n){return au.error("Reading audit entry error",n,e),{}}}var Cc,Ip,dR,Gf,PL,au,_s,ca,DL,qf,fR,u4,mR,LL,_R,yL,wp,Ff,OL,hR,NL,wL,IL,CL,Ep,_4,Dp,wc,Ic,Bf,Hf,Ur,ML,vL,Pc,Ai=Re(()=>{Cc=require("ordered-binary"),Ip=M(ce()),dR=M(kt());k();Gf=M(st()),PL=M(oe());ou();au=M(ee());Rp();hn();Np();(0,Ip.initSync)();_s=Buffer.alloc(2816),ca=new DataView(_s.buffer,_s.byteOffset,2816),DL={writeKey(e,t,r){return e===xf?(t.set(xf,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,Cc.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,Cc.readKey)(e,t,r)}},qf={encoding:"binary",keyEncoder:DL},fR=(0,PL.convertToMS)((0,Ip.get)(B.LOGGING_AUDITRETENTION))||86400*3,u4=1e3,mR=new Float64Array(1),LL=new Uint8Array(mR.buffer),_R=1e4,yL=!1;a(Cp,"openAuditStore");a(Pp,"removeAuditEntry");a(bL,"updateLastRemoved");a(d4,"getLastRemoved");a(f4,"setAuditRetention");wp=16,Ff=32,OL=1,hR=2,NL=3,wL=4,IL=5,CL=6,Ep=14,_4=15,Dp=11,wc=512,Ic=1024,Bf=2048,Hf=4096,Ur=8192,ML={put:OL|wp,[OL]:"put",delete:hR,[hR]:"delete",message:NL|wp,[NL]:"message",invalidate:wL|Ff,[wL]:"invalidate",patch:IL|Ff,[IL]:"patch",relocate:CL,[CL]:"relocate"},vL={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(Oc,"createAuditEntry");a(h4,"readAction");a(gt,"readAuditEntry");Pc=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 gR(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=BL,m4(e.primaryStore,e.auditStore)):(c=xL,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{HL(xL[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=Xl(t);let f=new ER(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 HL(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),kL(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=gt(s),o=e[i.tableId];if(!o)continue;let c=i.recordId,l=Xl(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,pR.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,pR.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 m4(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=BL[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{HL(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function kL(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function FL(e){return e.nextTransaction||(gR({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),kL(e)),e.nextTransaction}var pR,xL,BL,ER,SR=Re(()=>{pR=M(ee());Wl();Zl();Ai();xL=Object.create(null),BL=Object.create(null);a(gR,"addSubscription");ER=class extends xn{static{a(this,"Subscription")}listener;subscriptions;startTime;constructor(t){super(),this.listener=t,this.on("close",()=>this.end())}end(){if(this.subscriptions){if(this.subscriptions.splice(this.subscriptions.indexOf(this),1),this.subscriptions.length===0){let t=this.subscriptions.tables;if(t){let r=this.subscriptions.key;if(t.delete(r),t.size===0){let n=t.envs,s=t.dbi;delete n[s]}}}this.subscriptions=null}}toJSON(){return{name:"subscription"}}};a(HL,"notifyFromTransactionData");a(m4,"listenToCommits");a(kL,"nextTransaction");a(FL,"whenNextTransaction")});var qL=C((kRe,GL)=>{"use strict";var TR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};GL.exports=TR});var VL=C((GRe,$L)=>{"use strict";var AR=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};$L.exports=AR});var $f=C(($Re,YL)=>{"use strict";var KL=ce(),p4=(k(),P(q)),{RecordEncoder:E4}=(ou(),P(mL));KL.initSync();var g4=KL.get(p4.CONFIG_PARAMS.STORAGE_CACHING)!==!1,RR=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=g4&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:E4})}};YL.exports=RR});var Vf=C((KRe,WL)=>{"use strict";var kn=ce(),hs=(k(),P(q));kn.initSync();var Lp=class{static{a(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||kn.get(hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",kn.get(hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=kn.get(hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=kn.get(hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),kn.get(hs.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=kn.get(hs.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=kn.get(hs.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};WL.exports=Lp;Lp.MAX_DBS=1e4});var dt=C((WRe,nM)=>{"use strict";var bR=require("lmdb"),Fs=require("fs-extra"),Fn=require("path"),Mp=un(),jL=ee(),En=Un().LMDB_ERRORS_ENUM,vp=VL(),OR=$f(),JL=Vf(),la=kt(),zL=(k(),P(q)),{table:S4,resetDatabases:T4}=(xe(),P(at)),QL=ce(),Gs=la.INTERNAL_DBIS_NAME,XL=la.DBI_DEFINITION_NAME,A4="data.mdb",R4="lock.mdb",Kf=".mdb",y4="-lock",yR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=ms(t,r),this.key_type=this.dbi[la.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[la.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new bR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Up(e,t){if(e===void 0)throw new Error(En.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(En.ENV_NAME_REQUIRED)}a(Up,"pathEnvNameValidation");async function NR(e,t,r=!0){try{await Fs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(En.INVALID_BASE_PATH):n}try{let n=Fn.join(e,t+Kf);return await Fs.access(n,Fs.constants.R_OK|Fs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Fs.access(Fn.join(e,t,A4),Fs.constants.R_OK|Fs.constants.F_OK),Fn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(En.INVALID_ENVIRONMENT)}else throw new Error(En.INVALID_ENVIRONMENT);throw n}}a(NR,"validateEnvironmentPath");function xp(e,t){if(Mp.validateEnv(e),t===void 0)throw new Error(En.DBI_NAME_REQUIRED)}a(xp,"validateEnvDBIName");async function b4(e,t,r=!1,n=!1){Up(e,t);let s=Fn.basename(e);t=t.toString();let i=QL.get(zL.CONFIG_PARAMS.DATABASES);i||QL.setProperty(zL.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await NR(e,t,n),ZL(e,t,r)}catch(o){if(o.message===En.INVALID_ENVIRONMENT){let c=Fn.join(e,t);await Fs.mkdirp(n?c:e);let l=new JL(n?c:c+Kf,!1),u=bR.open(l);u.dbis=Object.create(null);let f=new OR(!1);u.openDB(Gs,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=wR(e,t,r);return u[la.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(b4,"createEnvironment");async function O4(e,t,r,n=!0){Up(e,t),t=t.toString();let s=Fn.join(e,t);return S4({table:t,database:Fn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(O4,"copyEnvironment");async function ZL(e,t,r=!1){Up(e,t),t=t.toString();let n=wR(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 NR(e,t),i=Fn.join(e,t+Kf),o=s!=i,c=new JL(s,o),l=bR.open(c);l.dbis=Object.create(null);let u=tM(l);for(let f=0;f<u.length;f++)ms(l,u[f]);return l[la.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(ZL,"openEnvironment");async function N4(e,t,r=!1){Up(e,t),t=t.toString();let n=Fn.join(e,t+Kf),s=await NR(e,t);if(global.lmdb_map!==void 0){let i=wR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await eM(o),delete global.lmdb_map[i]}}await Fs.remove(s),await Fs.remove(s===n?s+y4:Fn.join(Fn.dirname(s),R4))}a(N4,"deleteEnvironment");async function eM(e){Mp.validateEnv(e);let t=e[la.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(eM,"closeEnvironment");function wR(e,t,r=!1){let s=`${Fn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(wR,"getCachedEnvironmentName");function w4(e){Mp.validateEnv(e);let t=Object.create(null),r=ms(e,Gs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Gs)try{t[n]=Object.assign(new vp,s)}catch{jL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(w4,"listDBIDefinitions");function tM(e){Mp.validateEnv(e);let t=[],r=ms(e,Gs);for(let{key:n}of r.getRange({start:!1}))n!==Gs&&t.push(n);return t}a(tM,"listDBIs");function I4(e,t){let n=ms(e,Gs).getEntry(t),s=new vp;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{jL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(I4,"getDBIDefinition");function rM(e,t,r,n=!r){if(xp(e,t),t=t.toString(),t===Gs)throw new Error(En.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return ms(e,t)}catch(s){if(s.message===En.DBI_DOES_NOT_EXIST){let i=new OR(r,n===!0),o=e.openDB(t,i),c=new vp(r===!0,n);return o[XL]=c,ms(e,Gs).putSync(t,c),e.dbis[t]=o,o}throw s}}a(rM,"createDBI");function ms(e,t){if(xp(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Gs?r=I4(e,t):r=new vp,r===void 0)throw new Error(En.DBI_DOES_NOT_EXIST);let n;try{let s=new OR(r.dup_sort,r.useVersions);if(n=e.openDB(t,s),n.db===void 0)throw new Error("MDB_NOTFOUND")}catch(s){throw s.message.includes("MDB_NOTFOUND")===!0?new Error(En.DBI_DOES_NOT_EXIST):s}return n[XL]=r,e.dbis[t]=n,n}a(ms,"openDBI");function C4(e,t){xp(e,t),t=t.toString();let r=ms(e,t),n=r.getStats();return r[la.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(C4,"statDBI");async function P4(e,t){try{let r=Fn.join(e,t+Kf);return(await Fs.stat(r)).size}catch{throw new Error(En.INVALID_ENVIRONMENT)}}a(P4,"environmentDataSize");function D4(e,t){if(xp(e,t),t=t.toString(),t===Gs)throw new Error(En.CANNOT_DROP_INTERNAL_DBIS_NAME);ms(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],ms(e,Gs).removeSync(t)}a(D4,"dropDBI");function L4(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{ms(e,i)}catch(o){if(o.message===En.DBI_DOES_NOT_EXIST)rM(e,i,i!==t,i===t),n=!0;else throw o}}n&&T4()}a(L4,"initializeDBIs");nM.exports={openDBI:ms,openEnvironment:ZL,createEnvironment:b4,listDBIs:tM,listDBIDefinitions:w4,createDBI:rM,dropDBI:D4,statDBI:C4,deleteEnvironment:N4,initializeDBIs:L4,TransactionCursor:yR,environmentDataSize:P4,copyEnvironment:O4,closeEnvironment:eM}});var oM=C((QRe,iM)=>{"use strict";var IR=dt(),M4=ee(),sM=Un().LMDB_ERRORS_ENUM;iM.exports=v4;async function v4(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 IR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==sM.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await IR.closeEnvironment(global.lmdb_map[n]),await IR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==sM.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){M4.error(t)}}a(v4,"cleanLMDBMap")});var ao=C((JRe,U4)=>{U4.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 SM=C((ZRe,gM)=>{"use strict";var CR=require("recursive-iterator"),x4=require("alasql"),PR=require("clone"),aM=oe(),{handleHDBError:cM,hdb_errors:B4}=me(),{HDB_ERROR_MSGS:lM,HTTP_STATUS_CODES:uM}=B4,{getDatabases:H4}=(xe(),P(at)),k4=["DISTINCT_ARRAY"],dM=Symbol("validateTables"),DR=Symbol("validateTable"),XRe=Symbol("getAllColumns"),fM=Symbol("validateAllColumns"),Bp=Symbol("findColumn"),_M=Symbol("validateOrderBy"),Yf=Symbol("validateSegment"),LR=Symbol("validateColumn"),hM=Symbol("setColumnsForTable"),mM=Symbol("checkColumnsForAsterisk"),pM=Symbol("validateGroupBy"),EM=Symbol("hasColumns"),MR=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[dM](),this[mM](),this[fM]()}[dM](){if(this[EM]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[DR](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[DR](t.table)})}}[EM](){let t=!1,r=new CR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[DR](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=H4();if(!r[t.databaseid])throw cM(new Error,lM.SCHEMA_NOT_FOUND(t.databaseid),uM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw cM(new Error,lM.TABLE_NOT_FOUND(t.databaseid,t.tableid),uM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=PR(s);i.table=PR(t),this.attributes.push(i)})}[Bp](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)}[mM](){let t=new CR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[hM](r.tableid)}[hM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new x4.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[fM](){this[Yf](this.statement.columns,!1),this[Yf](this.statement.joins,!1),this[Yf](this.statement.where,!1),this[pM](this.statement.group,!1),this[Yf](this.statement.order,!0)}[Yf](t,r){if(!t)return;let n=new CR(t),s=[];for(let{node:i,path:o}of n)!aM.isEmpty(i)&&!aM.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[_M](i):s.push(this[LR](i)));return s}[pM](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&k4.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=PR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Bp](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[Bp](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`}[_M](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[LR](t)}[LR](t){let r=this[Bp](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]}};gM.exports=MR});var AM=C((tye,TM)=>{"use strict";var vR=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")}};TM.exports=vR});var yM=C((nye,RM)=>{"use strict";var UR=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};RM.exports=UR});var OM=C((iye,bM)=>{"use strict";var xR=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}};bM.exports=xR});var wM=C((aye,NM)=>{"use strict";var BR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};NM.exports=BR});var Lc=C((fye,PM)=>{"use strict";var F4=dt(),G4=yM(),q4=OM(),$4=wM(),Ri=un(),Wf=Un().LMDB_ERRORS_ENUM,V4=kt(),co=(k(),P(q)),K4=oe(),Y4=require("uuid"),lye=require("lmdb"),{handleHDBError:W4,hdb_errors:z4}=me(),{OVERFLOW_MARKER:uye,MAX_SEARCH_KEY_LENGTH:dye}=V4,IM=ce();IM.initSync();var Hp=IM.get(co.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),HR=co.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Dc=co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function Q4(e,t,r,n,s=Ri.getNextMonotonicTime()){qR(e,t,r,n),kR(e,t,r);let i=new G4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];CM(u,!0,s);let f=j4(e,t,r,u),d=u[t];o.push(f),c.push(d)}return FR(o,c,n,i,s)}a(Q4,"insertRecords");function j4(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let o=r[i];if(o===t||n.hasOwnProperty(o)===!1)continue;let c=n[o];if(typeof c=="function"){let f=c([[{}]]);Array.isArray(f)&&(c=f[0][co.FUNC_VAL],n[o]=c)}let l=Ri.getIndexedValues(c),u=e.dbis[o];if(l){Hp&&u.prefetch(l.map(f=>({key:f,value:s})),kp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}Hp&&e.dbis[t].prefetch([s],kp),e.dbis[t].put(s,n,n[Dc])})}a(j4,"insertRecord");function J4(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(J4,"removeSkippedRecords");function CM(e,t,r){let n=r>0;(n||!Number.isInteger(e[Dc]))&&(e[Dc]=r||(r=Ri.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[HR]))&&(e[HR]=r||Ri.getNextMonotonicTime()):delete e[HR]}a(CM,"setTimestamps");function kR(e,t,r){r.indexOf(co.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(co.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(co.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),F4.initializeDBIs(e,t,r)}a(kR,"initializeTransaction");async function X4(e,t,r,n,s=Ri.getNextMonotonicTime()){qR(e,t,r,n),kR(e,t,r);let i=new q4,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let f=n[u],d=f[t],_;try{_=GR(e,t,f,d,i,!0,s)}catch{i.skipped_hashes.push(d),o.push(u);continue}c.push(_),l.push(d)}return FR(c,l,n,i,s,o)}a(X4,"updateRecords");async function Z4(e,t,r,n,s=Ri.getNextMonotonicTime()){try{qR(e,t,r,n)}catch(l){throw W4(l,l.message,z4.HTTP_STATUS_CODES.BAD_REQUEST)}kR(e,t,r);let i=new $4,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;K4.isEmpty(u[t])?(f=Y4.v4(),u[t]=f):f=u[t];let d=GR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return FR(o,c,n,i,s)}a(Z4,"upsertRecords");async function FR(e,t,r,n,s,i=[]){let o=await Promise.all(e);for(let c=0,l=o.length;c<l;c++)o[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Ri.getNextMonotonicTime(),J4(r,i),n}a(FR,"finalizeWrite");function GR(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(CM(r,!f,o),Number.isInteger(r[Dc])&&u[Dc]>r[Dc])return!1;f&&s.original_records.push(u);let d,_=a(()=>{for(let m in r){if(!r.hasOwnProperty(m)||m===t)continue;let S=r[m],g=e.dbis[m];if(g===void 0)continue;let R=u[m];if(typeof S=="function"){let T=S([[u]]);Array.isArray(T)&&(S=T[0][co.FUNC_VAL],r[m]=S)}if(S===R)continue;let E=Ri.getIndexedValues(R);if(E){Hp&&g.prefetch(E.map(T=>({key:T,value:n})),kp);for(let T=0,N=E.length;T<N;T++)g.remove(E[T],n)}if(E=Ri.getIndexedValues(S),E){Hp&&g.prefetch(E.map(T=>({key:T,value:n})),kp);for(let T=0,N=E.length;T<N;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[Dc])},"do_put");return l?d=c.ifVersion(n,l.version,_):d=c.ifNoExists(n,_),d.then(h=>h?!0:GR(e,t,r,n,s,i,o))}a(GR,"updateUpsertRecord");function e3(e,t,r){if(Ri.validateEnv(e),t===void 0)throw new Error(Wf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Wf.WRITE_ATTRIBUTES_REQUIRED):new Error(Wf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(e3,"validateBasic");function qR(e,t,r,n){if(e3(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Wf.RECORDS_REQUIRED):new Error(Wf.RECORDS_MUST_BE_ARRAY)}a(qR,"validateWrite");function kp(){}a(kp,"noop");PM.exports={insertRecords:Q4,updateRecords:X4,upsertRecords:Z4}});var it=C((hye,DM)=>{"use strict";var gn=require("validate.js");gn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||gn.validators.type.checks[t](e)?null:` must be a '${t}' value`};gn.validators.type.checks={Object:a(function(e){return gn.isObject(e)&&!gn.isArray(e)},"Object"),Array:gn.isArray,Integer:gn.isInteger,Number:gn.isNumber,String:gn.isString,Date:gn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};gn.validators.hasValidFileExt=function(e,t){return gn.isString(e)?e===""?"can't be blank":t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`:null};DM.exports={validateObject:t3,validateObjectAsync:r3,validateBySchema:n3};function t3(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=gn(e,t,{format:"flat"});return r?new Error(r):null}a(t3,"validateObject");async function r3(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await gn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(r3,"validateObjectAsync");function n3(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(n3,"validateBySchema")});var MM=C((pye,LM)=>{"use strict";var s3=require("uuid"),$R=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||s3.v4(),this.schema_table=`${this.schema}.${this.table}`}};LM.exports=$R});var Fp=C((gye,vM)=>{"use strict";var i3=MM(),VR=class extends i3{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}};vM.exports=VR});var xM=C((Tye,UM)=>{"use strict";UM.exports=a3;var o3="inserted";function a3(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===o3?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(a3,"returnObject")});var Gp=C((yye,HM)=>{"use strict";var c3=(k(),P(q)),KR=dt(),l3=Lc(),{getSystemSchemaPath:u3,getSchemaPath:d3}=Et(),Rye=ao(),{validateBySchema:f3}=it(),zf=require("joi"),_3=Fp(),h3=xM(),{handleHDBError:m3,hdb_errors:p3,ClientError:E3}=me(),BM=oe(),{HTTP_STATUS_CODES:g3}=p3,S3="inserted";HM.exports=T3;async function T3(e){let t=f3(e,zf.object({database:zf.string(),schema:zf.string(),table:zf.string().required(),attribute:zf.string().required()}));if(t)throw new E3(t.message);let r=!e.skip_table_check&&BM.checkGlobalSchemaTable(e.schema,e.table);if(r)throw m3(new Error,r,g3.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=BM.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 _3(e.schema,e.table,e.attribute,e.id);try{let i=await KR.openEnvironment(d3(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}`);KR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await KR.openEnvironment(u3(),c3.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await l3.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return h3(S3,c,{records:[s]},l)}catch(i){throw i}}a(T3,"lmdbCreateAttribute")});var bi=C((Oye,GM)=>{"use strict";var FM=oe(),kM=(k(),P(q)),cu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,yi=require("joi"),ua={schema_format:{pattern:cu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},A3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number(),yi.array()).required(),R3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number()),y3=yi.alternatives(yi.string().min(1).max(ua.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ua.schema_format.message}),yi.number()).required();function b3(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>ua.schema_length.maximum?`'${e}' maximum of 250 characters`:cu.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(b3,"checkValidTable");function O3(e,t){return FM.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(O3,"validateSchemaExists");function N3(e,t){let r=t.state.ancestors[0].schema;return FM.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(N3,"validateTableExists");function w3(e,t){return e.toLowerCase()===kM.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${kM.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(w3,"validateSchemaName");GM.exports={common_validators:ua,schema_regex:cu,hdb_schema_table:A3,validateSchemaExists:O3,validateTableExists:N3,validateSchemaName:w3,checkValidTable:b3,hdb_database:R3,hdb_table:y3}});var WR=C((wye,$M)=>{var{hdb_table:I3,hdb_database:qM}=bi(),C3=it(),YR=require("joi"),P3={undefined:"undefined",null:"null"},D3=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||P3[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"),L3=YR.object({database:qM,schema:qM,table:I3,records:YR.array().items(YR.object().custom(D3)).required()});$M.exports=function(e){return C3.validateBySchema(e,L3)}});var Qf=C((Pye,KM)=>{"use strict";var lo=oe(),VM=ee(),Cye=WR(),{getDatabases:M3}=(xe(),P(at)),{ClientError:Mc}=me();KM.exports=v3;function v3(e){if(lo.isEmpty(e))throw new Mc("invalid update parameters defined.");if(lo.isEmptyOrZeroLength(e.schema))throw new Mc("invalid schema specified.");if(lo.isEmptyOrZeroLength(e.table))throw new Mc("invalid table specified.");if(!Array.isArray(e.records))throw new Mc("records must be an array");let t=M3()[e.schema]?.[e.table];if(lo.isEmpty(t))throw new Mc(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.primaryKey,n=new Set,s={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(o=>{if(i&&lo.isEmptyOrZeroLength(o[r]))throw VM.error("a valid hash attribute must be provided with update record:",o),new Mc("a valid hash attribute must be provided with update record, check log for more info");if(!lo.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw VM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Mc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!lo.isEmpty(o[r])&&o[r]!==""&&n.has(lo.autoCast(o[r]))&&(o.skip=!0),n.add(lo.autoCast(o[r]));for(let c in o)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}a(v3,"insertUpdateValidate")});var qp=C((Lye,WM)=>{"use strict";var YM=oe(),U3=(k(),P(q)),x3=ee(),B3=Gp(),H3=Fp(),k3=uo(),{SchemaEventMsg:F3}=qs(),G3="already exists in";WM.exports=q3;async function q3(e,t,r){if(YM.isEmptyOrZeroLength(r))return r;let n=[];YM.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 $3(e,t.schema,t.name,i)})),s}a(q3,"lmdbCheckForNewAttributes");async function $3(e,t,r,n){let s=new H3(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await V3(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(G3))x3.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a($3,"createNewAttribute");async function V3(e){let t;return t=await B3(e),k3.signalSchemaChange(new F3(process.pid,U3.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(V3,"createAttribute")});var lu=C((vye,zM)=>{"use strict";var zR=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}};zM.exports=zR});var jM=C((xye,QM)=>{"use strict";var K3=lu(),Y3=(k(),P(q)).OPERATIONS_ENUM,QR=class extends K3{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(Y3.INSERT,r,n,s,i),this.records=t}};QM.exports=QR});var XM=C((Hye,JM)=>{"use strict";var W3=lu(),z3=(k(),P(q)).OPERATIONS_ENUM,jR=class extends W3{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(z3.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};JM.exports=jR});var ev=C((Fye,ZM)=>{"use strict";var Q3=lu(),j3=(k(),P(q)).OPERATIONS_ENUM,JR=class extends Q3{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(j3.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};ZM.exports=JR});var rv=C((qye,tv)=>{"use strict";var J3=lu(),X3=(k(),P(q)).OPERATIONS_ENUM,XR=class extends J3{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(X3.DELETE,n,s,t,i),this.original_records=r}};tv.exports=XR});var jf=C((Kye,ov)=>{"use strict";var Vye=require("path"),nv=dt(),Z3=jM(),eX=XM(),tX=ev(),rX=rv(),uu=kt(),sv=oe(),{CONFIG_PARAMS:nX}=(k(),P(q)),iv=ce();iv.initSync();var $p=(k(),P(q)).OPERATIONS_ENUM,{getTransactionAuditStorePath:sX}=Et();ov.exports=iX;async function iX(e,t){if(iv.get(nX.LOGGING_AUDITLOG)===!1)return;let r=sX(e.schema,e.table),n=await nv.openEnvironment(r,e.table,!0),s=oX(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){nv.initializeDBIs(n,uu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,uu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[uu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[uu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),sv.isEmpty(s.user_name)||n.dbis[uu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[uu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a(iX,"writeTransaction");function oX(e,t){let r=sv.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===$p.INSERT)return new Z3(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===$p.UPDATE)return new eX(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===$p.UPSERT)return new tX(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===$p.DELETE)return new rX(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(oX,"createTransactionObject")});var ZR=C((zye,av)=>{"use strict";var aX=Qf(),Wye=Ef(),Jf=(k(),P(q)),cX=gf(),lX=Lc().insertRecords,uX=dt(),dX=ee(),fX=qp(),{getSchemaPath:_X}=Et(),hX=jf();av.exports=mX;async function mX(e){try{let{schema_table:t,attributes:r}=aX(e);cX(e,r,t.hash_attribute),e.schema!==Jf.SYSTEM_SCHEMA_NAME&&(r.includes(Jf.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Jf.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Jf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Jf.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await fX(e.hdb_auth_header,t,r),s=_X(e.schema,e.table),i=await uX.openEnvironment(s,e.table),o=await lX(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await hX(e,o)}catch(c){dX.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(mX,"lmdbCreateRecords")});var uv=C((jye,lv)=>{"use strict";var cv=(k(),P(q)),pX=ZR(),EX=Ef(),gX=require("fs-extra"),{getSchemaPath:SX}=Et();lv.exports=TX;async function TX(e){let t=[{name:e.schema,createddate:Date.now()}],r=new EX(cv.SYSTEM_SCHEMA_NAME,cv.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await pX(r),await gX.mkdirp(SX(e.schema))}a(TX,"lmdbCreateSchema")});var fv=C((Xye,dv)=>{"use strict";var ey=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}};dv.exports=ey});var pv=C((nbe,mv)=>{"use strict";var _v=dt(),ty=un(),ry=Un().LMDB_ERRORS_ENUM,AX=kt(),hv=ee(),ebe=oe(),RX=require("lmdb"),yX=fv(),bX=(k(),P(q)),{OVERFLOW_MARKER:tbe,MAX_SEARCH_KEY_LENGTH:rbe}=AX,OX=bX.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function NX(e,t,r,n){if(ty.validateEnv(e),t===void 0)throw new Error(ry.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(ry.IDS_REQUIRED):new Error(ry.IDS_MUST_BE_ITERABLE);try{let s=_v.listDBIs(e);_v.initializeDBIs(e,t,s);let i=new yX,o,c=[],l=[];for(let _=0,h=r.length;_<h;_++)try{o=r[_];let m=e.dbis[t].get(o);if(!m||n&&m[OX]>n){i.skipped.push(o);continue}let S=e.dbis[t].ifVersion(o,RX.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let g=0;g<s.length;g++){let R=s[g];if(!m.hasOwnProperty(R)||R===t)continue;let E=e.dbis[R],T=m[R];if(T!=null)try{let N=ty.getIndexedValues(T);if(N)for(let v=0,H=N.length;v<H;v++)E.remove(N[v],o)}catch{hv.warn(`cannot delete from attribute: ${R}, ${T}:${o}`)}}});c.push(S),l.push(o),i.original_records.push(m)}catch(m){hv.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=ty.getNextMonotonicTime(),i}catch(s){throw s}}a(NX,"deleteRecords");mv.exports={deleteRecords:NX}});var Xf=C((ibe,gv)=>{"use strict";var du=oe(),wX=pv(),IX=dt(),{getSchemaPath:CX}=Et(),PX=jf(),DX=ee();gv.exports=LX;async function LX(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(du.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(du.isEmptyOrZeroLength(e.hash_values)&&!du.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];du.isEmpty(l)||e.hash_values.push(l)}}if(du.isEmptyOrZeroLength(e.hash_values))return Ev([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(du.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=CX(e.schema,e.table),i=await IX.openEnvironment(s,e.table),o=await wX.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await PX(e,o)}catch(c){DX.error(`unable to write transaction due to ${c.message}`)}return Ev(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(LX,"lmdbDeleteRecords");function Ev(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(Ev,"createDeleteResponse")});var sy=C((cbe,Sv)=>{"use strict";var MX=(k(),P(q)),abe=un();function ny(e,t){let r=Object.create(null);if(t.length===1&&MX.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(ny,"parseRow");function vX(e,t,r,n){let s=ny(r,e);n.push(s)}a(vX,"searchAll");function UX(e,t,r,n){let s=ny(r,e);n[t]=s}a(UX,"searchAllToMap");function xX(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(xX,"iterateDBI");function vc(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(vc,"pushResults");function BX(e,t,r,n,s,i){t.toString().endsWith(e)&&vc(t,r,n,s,i)}a(BX,"endsWith");function HX(e,t,r,n,s,i){t.toString().includes(e)&&vc(t,r,n,s,i)}a(HX,"contains");function kX(e,t,r,n,s,i){t>e&&vc(t,r,n,s,i)}a(kX,"greaterThanCompare");function FX(e,t,r,n,s,i){t>=e&&vc(t,r,n,s,i)}a(FX,"greaterThanEqualCompare");function GX(e,t,r,n,s,i){t<e&&vc(t,r,n,s,i)}a(GX,"lessThanCompare");function qX(e,t,r,n,s,i){t<=e&&vc(t,r,n,s,i)}a(qX,"lessThanEqualCompare");Sv.exports={parseRow:ny,searchAll:vX,searchAllToMap:UX,iterateDBI:xX,endsWith:BX,contains:HX,greaterThanCompare:kX,greaterThanEqualCompare:FX,lessThanCompare:GX,lessThanEqualCompare:qX,pushResults:vc}});var fu=C((_be,Nv)=>{"use strict";var da=dt(),ube=ee(),Gn=un(),Vp=kt(),zt=Un().LMDB_ERRORS_ENUM,dbe=oe(),$X=(k(),P(q)),Kp=sy(),{parseRow:VX}=Kp,fbe=require("lmdb"),{OVERFLOW_MARKER:Tv,MAX_SEARCH_KEY_LENGTH:KX}=Vp;function Av(e,t,r,n=!1,s=void 0,i=void 0){return Uc(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(Av,"iterateFullIndex");function Zf(e,t,r,n,s,i=!1,o=void 0,c=void 0,l=!1,u=!1){return Uc(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(Zf,"iterateRangeBetween");function Uc(e,t,r,n){let s=e.database||e,i=da.openDBI(s,r);i[Vp.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&da.openDBI(s,t);let o;e.database?o=e:(o=e.useReadTransaction(),o.database=e);let c=n(o,i,s,t);return c.transaction=o,e.database||(c.onDone=()=>{o.done()}),c}a(Uc,"setupTransaction");function Rv(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(Tv)){if(!s)if(r)s=da.openDBI(e,r);else{let l=da.listDBIs(e);for(let u=0,f=l.length;u<f&&(s=da.openDBI(e,l[u]),!s[Vp.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(Rv,"getOverflowCheck");function YX(e,t,r,n=!1,s=void 0,i=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return Uc(e,t,t,(o,c,l)=>(Yp(r),r=e_(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>VX(u.value,r))))}a(YX,"searchAll");function WX(e,t,r,n=!1,s=void 0,i=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);Yp(r),r=e_(e.database||e,r);let o=new Map;for(let{key:c,value:l}of Av(e,t,t,n,s,i))o.set(c,Kp.parseRow(l,r));return o}a(WX,"searchAllToMap");function zX(e,t,r=!1,n=void 0,s=void 0){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=Av(e,void 0,t,r,n,s),c=o.transaction,l=Rv(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(zX,"iterateDBI");function QX(e,t){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return da.statDBI(e,t).entryCount}a(QX,"countAll");function jX(e,t,r,n,s=!1,i=void 0,o=void 0){return fa(e,r,n),Uc(e,t,r,(c,l,u,f)=>(n=Gn.convertKeyValueToWrite(n),f===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:o}).map(d=>({key:n,value:d}))))}a(jX,"equals");function JX(e,t,r){return fa(e,t,r),da.openDBI(e,t).getValuesCount(r)}a(JX,"count");function XX(e,t,r,n,s=!1,i=void 0,o=void 0){return fa(e,r,n),Uc(e,null,r,(c,l)=>{n=Gn.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let f;if(s===!0){let d;for(let _ of l.getKeys({transaction:c,start:n}))if(!_.startsWith(n)){d=_;break}return d!==void 0&&(Number.isInteger(o)?o++:i++),f=l.getRange({transaction:c,start:d,end:void 0,reverse:s,limit:i,offset:o}).map(_=>{let{key:h}=_;if(h!==d){if(h.toString().startsWith(n))return _;if(u===!0)return f.DONE}}),f.filter(_=>_)}else return f=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:o}).map(d=>{if(d.key.toString().startsWith(n))return d;if(u===!0)return f.DONE}),u?f:f.filter(d=>d)})}a(XX,"startsWith");function ZX(e,t,r,n,s=!1,i=void 0,o=void 0){return yv(e,t,r,n,s,i,o,!0)}a(ZX,"endsWith");function yv(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return fa(e,r,n),Uc(e,null,r,(l,u,f,d)=>{let _=Rv(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(Tv)?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[Vp.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(yv,"contains");function e6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Zf(e,t,r,n,l,s,i,o,!0,!1)}a(e6,"greaterThan");function t6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Zf(e,t,r,n,l,s,i,o,!1,!1)}a(t6,"greaterThanEqual");function r6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Zf(e,t,r,l,n,s,i,o,!1,!0)}a(r6,"lessThan");function n6(e,t,r,n,s=!1,i=void 0,o=void 0){fa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Zf(e,t,r,l,n,s,i,o,!1,!1)}a(n6,"lessThanEqual");function s6(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(Gn.validateEnv(e),r===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(zt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(zt.END_VALUE_REQUIRED);if(n=Gn.convertKeyValueToWrite(n),s=Gn.convertKeyValueToWrite(s),n>s)throw new Error(zt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return Zf(e,t,r,n,s,i,o,c)}a(s6,"between");function i6(e,t,r,n){Gn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(Yp(r),r=e_(s,r),n===void 0)throw new Error(zt.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=Kp.parseRow(c,r)),o}a(i6,"searchByHash");function o6(e,t,r){Gn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(o6,"checkHashExists");function a6(e,t,r,n,s=[]){return Ov(e,t,r,n,s),bv(e,t,r,n,s).map(i=>i[1])}a(a6,"batchSearchByHash");function c6(e,t,r,n,s=[]){Ov(e,t,r,n,s);let i=new Map;for(let[o,c]of bv(e,t,r,n,s))i.set(o,c);return i}a(c6,"batchSearchByHashToMap");function bv(e,t,r,n,s=[]){return Uc(e,t,t,(i,o,c)=>{r=e_(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,Kp.parseRow(f,r)];s.push(u)}).filter(u=>u)})}a(bv,"batchHashSearch");function Ov(e,t,r,n,s){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(Yp(r),n==null)throw new Error(zt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(zt.IDS_MUST_BE_ITERABLE)}a(Ov,"initializeBatchSearchByHash");function Yp(e){if(!Array.isArray(e))throw e===void 0?new Error(zt.FETCH_ATTRIBUTES_REQUIRED):new Error(zt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Yp,"validateFetchAttributes");function fa(e,t,r){if(Gn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.SEARCH_VALUE_REQUIRED);if(r?.length>KX)throw new Error(zt.SEARCH_VALUE_TOO_LARGE)}a(fa,"validateComparisonFunctions");function e_(e,t){return t.length===1&&$X.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=da.listDBIs(e)),t}a(e_,"setGetWholeRowAttributes");Nv.exports={searchAll:YX,searchAllToMap:WX,count:JX,countAll:QX,equals:jX,startsWith:XX,endsWith:ZX,contains:yv,searchByHash:i6,setGetWholeRowAttributes:e_,batchSearchByHash:a6,batchSearchByHashToMap:c6,checkHashExists:o6,iterateDBI:zX,greaterThan:e6,greaterThanEqual:t6,lessThan:r6,lessThanEqual:n6,between:s6}});var _u=C((mbe,Dv)=>{var wv=require("lodash"),Iv=it(),Ge=require("joi"),l6=oe(),{hdb_schema_table:t_,checkValidTable:Cv,hdb_table:Pv,hdb_database:Wp}=bi(),{handleHDBError:u6,hdb_errors:d6}=me(),{getDatabases:f6}=(xe(),P(at)),{HTTP_STATUS_CODES:_6}=d6,h6=Ge.object({database:Wp,schema:Wp,table:Pv,search_attribute:t_,search_value:Ge.any().required(),get_attributes:Ge.array().min(1).items(Ge.alternatives(t_,Ge.object())).optional(),desc:Ge.bool(),limit:Ge.number().integer().min(1),offset:Ge.number().integer().min(0)}),m6=Ge.object({database:Wp,schema:Wp,table:Pv,operator:Ge.string().valid("and","or").default("and").lowercase(),offset:Ge.number().integer().min(0),limit:Ge.number().integer().min(1),get_attributes:Ge.array().min(1).items(Ge.alternatives(t_,Ge.object())).optional(),sort:Ge.object({attribute:Ge.alternatives(t_,Ge.array().min(1)),descending:Ge.bool().optional()}).optional(),conditions:Ge.array().min(1).items(Ge.alternatives(Ge.object({operator:Ge.string().valid("and","or").default("and").lowercase(),conditions:Ge.array()}),Ge.object({search_attribute:Ge.alternatives(t_,Ge.array().min(1)),search_type:Ge.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:Ge.when("search_type",{switch:[{is:"equals",then:Ge.any()},{is:"between",then:Ge.array().items(Ge.alternatives([Ge.string(),Ge.number()])).length(2)}],otherwise:Ge.alternatives(Ge.string(),Ge.number())}).required()}))).required()});Dv.exports=function(e,t){let r=null;switch(t){case"value":r=Iv.validateBySchema(e,h6);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(Cv("database",e.schema)),i(Cv("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=Iv.validateBySchema(e,m6);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=l6.checkGlobalSchemaTable(e.schema,e.table);if(s)return u6(new Error,s,_6.NOT_FOUND);let o=f6()[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=wv.filter(c,f=>f!=="*"&&!f.startsWith?.("$")&&f.attribute!=="*"&&!Array.isArray(f)&&!f.name&&!wv.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 iy=C((Ebe,Lv)=>{"use strict";var p6=dt(),E6=_u(),{getSchemaPath:g6}=Et();Lv.exports=S6;function S6(e){let t=E6(e,"hashes");if(t)throw t;let r=g6(e.schema,e.table);return p6.openEnvironment(r,e.table)}a(S6,"initialize")});var oy=C((Sbe,Mv)=>{"use strict";var T6=fu(),A6=iy();Mv.exports=R6;async function R6(e){let t=await A6(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return T6.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(R6,"lmdbGetDataByHash")});var hu=C((Abe,vv)=>{"use strict";var ay=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};vv.exports=ay});var xv=C((bbe,Uv)=>{"use strict";var ybe=hu(),y6=fu(),b6=iy();Uv.exports=O6;async function O6(e){let t=await b6(e),r=global.hdb_schema[e.schema][e.table];return y6.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(O6,"lmdbSearchByHash")});var $s=C((Nbe,Bv)=>{"use strict";var cy=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}};Bv.exports=cy});var zp=C((Ibe,$v)=>{"use strict";var Yr=fu(),N6=dt(),w6=oe(),qe=kt(),xc=(k(),P(q)),I6=ao(),Hv=Un().LMDB_ERRORS_ENUM,{getSchemaPath:C6}=Et(),fo=xc.SEARCH_WILDCARDS;async function P6(e,t,r){let n;e.schema===xc.SYSTEM_SCHEMA_NAME?n=I6[e.table]:n=global.hdb_schema[e.schema][e.table];let s=qv(e,n.hash_attribute,r,t);return Fv(e,s,n.hash_attribute,r)}a(P6,"prepSearch");async function Fv(e,t,r,n){let s=C6(e.schema,e.table),i=await N6.openEnvironment(s,e.table),o=Gv(i,e,t,r),c=o.transaction||i;if([qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,qe.SEARCH_TYPES.SEARCH_ALL,qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(D6(e,r)===!1){let f=e.search_attribute;if(f===r)return n?kv(o,()=>!0):o.map(_=>({[r]:_.key}));let d=a(_=>({[r]:_.value,[f]:_.key}),"toObject");return n?kv(o,d):o.map(d)}let u=e.search_attribute===r?o.map(f=>f.key):o.map(f=>f.value);return n===!0?Yr.batchSearchByHashToMap(c,r,e.get_attributes,u):Yr.batchSearchByHash(c,r,e.get_attributes,u)}a(Fv,"executeSearch");function Gv(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:o,limit:c,offset:l}=t;switch(o=typeof o=="boolean"?o:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case qe.SEARCH_TYPES.EQUALS:s=Yr.equals(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.CONTAINS:s=Yr.contains(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.ENDS_WITH:case qe.SEARCH_TYPES._ENDS_WITH:s=Yr.endsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.STARTS_WITH:case qe.SEARCH_TYPES._STARTS_WITH:s=Yr.startsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return Yr.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return Yr.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case qe.SEARCH_TYPES.SEARCH_ALL:return Yr.searchAll(e,n,t.get_attributes,o,c,l);case qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return Yr.searchAllToMap(e,n,t.get_attributes,o,c,l);case qe.SEARCH_TYPES.BETWEEN:s=Yr.between(e,i,t.search_attribute,t.search_value,t.end_value,o,c,l);break;case qe.SEARCH_TYPES.GREATER_THAN:case qe.SEARCH_TYPES._GREATER_THAN:s=Yr.greaterThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.GREATER_THAN_EQUAL:case qe.SEARCH_TYPES._GREATER_THAN_EQUAL:s=Yr.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.LESS_THAN:case qe.SEARCH_TYPES._LESS_THAN:s=Yr.lessThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case qe.SEARCH_TYPES.LESS_THAN_EQUAL:case qe.SEARCH_TYPES._LESS_THAN_EQUAL:s=Yr.lessThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;default:return Object.create(null)}return s}a(Gv,"searchByType");function kv(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(kv,"createMapFromIterable");function D6(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(D6,"checkToFetchMore");function qv(e,t,r,n){if(w6.isEmpty(n)){let s=e.search_value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),o=s.charAt(s.length-1),c=!1;if(e.search_attribute===t&&(c=!0),fo.indexOf(s)>-1)return r===!0?qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:qe.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(fo[0])<0&&s.indexOf(fo[1])<0)return c===!0?r===!0?qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:qe.SEARCH_TYPES.EQUALS;if(fo.indexOf(i)>=0&&fo.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),qe.SEARCH_TYPES.CONTAINS;if(fo.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),qe.SEARCH_TYPES.ENDS_WITH;if(fo.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),qe.SEARCH_TYPES.STARTS_WITH;if(s.includes(fo[0])||s.includes(fo[1]))return qe.SEARCH_TYPES.EQUALS;throw new Error(Hv.UNKNOWN_SEARCH_TYPE)}else switch(n){case xc.VALUE_SEARCH_COMPARATORS.BETWEEN:return qe.SEARCH_TYPES.BETWEEN;case xc.VALUE_SEARCH_COMPARATORS.GREATER:return qe.SEARCH_TYPES.GREATER_THAN;case xc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return qe.SEARCH_TYPES.GREATER_THAN_EQUAL;case xc.VALUE_SEARCH_COMPARATORS.LESS:return qe.SEARCH_TYPES.LESS_THAN;case xc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return qe.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(Hv.UNKNOWN_SEARCH_TYPE)}}a(qv,"createSearchTypeFromSearchObject");$v.exports={executeSearch:Fv,createSearchTypeFromSearchObject:qv,prepSearch:P6,searchByType:Gv}});var Kv=C((Dbe,Vv)=>{"use strict";var Pbe=$s(),L6=_u(),M6=oe(),v6=(k(),P(q)),U6=zp();Vv.exports=x6;function x6(e,t){if(!M6.isEmpty(t)&&v6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=L6(e,"value");if(n)throw n;return U6.prepSearch(e,t,!0)}a(x6,"lmdbGetDataByValue")});var r_=C((vbe,Yv)=>{"use strict";var Mbe=$s(),B6=_u(),H6=oe(),k6=(k(),P(q)),F6=zp();Yv.exports=G6;async function G6(e,t){if(!H6.isEmpty(t)&&k6.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=B6(e,"value");if(n)throw n;return F6.prepSearch(e,t,!1)}a(G6,"lmdbSearchByValue")});var zv=C((Bbe,Wv)=>{"use strict";var xbe=kt(),ly=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}},uy=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},dy=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};Wv.exports={SearchByConditionsObject:ly,SearchCondition:uy,SortAttribute:dy}});var Zv=C((Gbe,Xv)=>{"use strict";var kbe=zv().SearchByConditionsObject,q6=$s(),$6=_u(),fy=fu(),Qp=kt(),{Resource:Fbe}=(na(),P(MA)),Jv=zp(),V6=sy(),K6=require("lodash"),{getSchemaPath:Y6}=Et(),Qv=dt(),{handleHDBError:W6,hdb_errors:z6}=me(),{HTTP_STATUS_CODES:Q6}=z6,j6=1e8;Xv.exports=J6;async function J6(e){let t=$6(e,"conditions");if(t)throw W6(t,t.message,Q6.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=Y6(e.schema,e.table),n=await Qv.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)Qv.openDBI(n,u.search_attribute);let i=K6.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let f=u.search_type;f===Qp.SEARCH_TYPES.EQUALS?u.estimated_count=fy.count(n,u.search_attribute,u.search_value):f===Qp.SEARCH_TYPES.CONTAINS||f===Qp.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=j6}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await jv(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(Jv.filterByType),d=f.length,_=fy.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=>V6.parseRow(h,_))}else{for(let d=1;d<i.length;d++){let _=i[d],h=await jv(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=fy.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(J6,"lmdbSearchByConditions");async function jv(e,t,r,n){let s=new q6(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===Qp.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,Jv.searchByType(e,s,i,n).map(o=>o.value)}a(jv,"executeConditionSearch")});var n_=C(($be,eU)=>{"use strict";var X6=(k(),P(q)).OPERATIONS_ENUM,_y=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}};eU.exports=_y});var hy=C((Kbe,cU)=>{"use strict";var sU=$s(),iU=n_(),oU=r_(),aU=Xf(),Sn=(k(),P(q)),tU=oe(),rU=dt(),{getTransactionAuditStorePath:Z6,getSchemaPath:eZ}=Et(),nU=ee();cU.exports=tZ;async function tZ(e){try{if(tU.isEmpty(global.hdb_schema[e.schema])||tU.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await rZ(e),await nZ(e);let t=eZ(e.schema,e.table);try{await rU.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")nU.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=Z6(e.schema,e.table);await rU.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")nU.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(tZ,"lmdbDropTable");async function rZ(e){let t=new sU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await oU(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 iU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await aU(s)}a(rZ,"deleteAttributesFromSystem");async function nZ(e){let t=new sU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Sn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await oU(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 iU(Sn.SYSTEM_SCHEMA_NAME,Sn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await aU(s)}catch(i){throw i}}a(nZ,"dropTableFromSystem")});var uU=C((Wbe,lU)=>{"use strict";var sZ=require("fs-extra"),iZ=$s(),oZ=hu(),aZ=n_(),cZ=hy(),lZ=Xf(),uZ=oy(),dZ=r_(),_o=(k(),P(q)),{getSchemaPath:fZ}=Et(),{handleHDBError:_Z,hdb_errors:hZ}=me(),{HDB_ERROR_MSGS:mZ,HTTP_STATUS_CODES:pZ}=hZ;lU.exports=EZ;async function EZ(e){let t;try{t=await gZ(e.schema);let r=new iZ(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await dZ(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await cZ(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new aZ(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await lZ(s);let i=fZ(t);await sZ.remove(i)}catch(r){throw r}}a(EZ,"lmdbDropSchema");async function gZ(e){let t=new oZ(_o.SYSTEM_SCHEMA_NAME,_o.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[_o.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await uZ(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw _Z(new Error,mZ.SCHEMA_NOT_FOUND(e),pZ.NOT_FOUND,void 0,void 0,!0);return n}a(gZ,"validateDropSchema")});var s_=C((Qbe,dU)=>{"use strict";var my=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};dU.exports=my});var Ey=C((Xbe,fU)=>{"use strict";var SZ=require("fs-extra"),jp=dt(),{getTransactionAuditStorePath:TZ}=Et(),py=kt(),Jbe=s_();fU.exports=AZ;async function AZ(e){let t;try{let r=TZ(e.schema,e.table);await SZ.mkdirp(r),t=await jp.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{jp.createDBI(t,py.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),jp.createDBI(t,py.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),jp.createDBI(t,py.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(AZ,"createTransactionsAuditEnvironment")});var mU=C((tOe,hU)=>{"use strict";var gy=(k(),P(q)),_U=dt(),RZ=Lc(),{getSystemSchemaPath:yZ,getSchemaPath:bZ}=Et(),eOe=ao(),OZ=Gp(),Sy=Fp(),NZ=ee(),wZ=Ey();hU.exports=IZ;async function IZ(e,t){let r=bZ(t.schema,t.table),n=new Sy(t.schema,t.table,gy.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new Sy(t.schema,t.table,gy.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new Sy(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await _U.createEnvironment(r,t.table),e!==void 0){let o=await _U.openEnvironment(yZ(),gy.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await RZ.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 Ty(n),await Ty(s),await Ty(i)}await wZ(t)}catch(o){throw o}}a(IZ,"lmdbCreateTable");async function Ty(e){try{await OZ(e)}catch(t){NZ.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Ty,"createAttribute")});var EU=C((nOe,pU)=>{"use strict";var CZ=Qf(),PZ=gf(),DZ=qp(),i_=(k(),P(q)),LZ=Lc().updateRecords,MZ=dt(),{getSchemaPath:vZ}=Et(),UZ=jf(),xZ=ee();pU.exports=BZ;async function BZ(e){try{let{schema_table:t,attributes:r}=CZ(e);PZ(e,r,t.hash_attribute),e.schema!==i_.SYSTEM_SCHEMA_NAME&&(r.includes(i_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(i_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(i_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(i_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await DZ(e.hdb_auth_header,t,r),s=vZ(e.schema,e.table),i=await MZ.openEnvironment(s,e.table),o=await LZ(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await UZ(e,o)}catch(c){xZ.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(BZ,"lmdbUpdateRecords")});var SU=C((iOe,gU)=>{"use strict";var HZ=(k(),P(q)).OPERATIONS_ENUM,Ay=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=HZ.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};gU.exports=Ay});var AU=C((cOe,TU)=>{"use strict";var aOe=SU(),kZ=Qf(),FZ=gf(),GZ=qp(),o_=(k(),P(q)),qZ=Lc().upsertRecords,$Z=dt(),{getSchemaPath:VZ}=Et(),KZ=jf(),YZ=ee(),{handleHDBError:WZ,hdb_errors:zZ}=me();TU.exports=QZ;async function QZ(e){let t;try{t=kZ(e)}catch(l){throw WZ(l,l.message,zZ.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:n}=t;FZ(e,n,r.hash_attribute),e.schema!==o_.SYSTEM_SCHEMA_NAME&&(n.includes(o_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(o_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(o_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(o_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await GZ(e.hdb_auth_header,r,n),i=VZ(e.schema,e.table),o=await $Z.openEnvironment(i,e.table),c=await qZ(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await KZ(e,c)}catch(l){YZ.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(QZ,"lmdbUpsertRecords")});var yU=C((uOe,RU)=>{"use strict";var Ry=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};RU.exports=Ry});var OU=C((fOe,bU)=>{"use strict";var yy=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}};bU.exports=yy});var IU=C((mOe,wU)=>{"use strict";var by=dt(),{getTransactionAuditStorePath:jZ}=Et(),hOe=yU(),a_=kt(),JZ=oe(),NU=OU(),XZ=require("util").promisify,ZZ=XZ(setTimeout),e8=1e4,t8=100;wU.exports=r8;async function r8(e){let t=jZ(e.schema,e.table),r=await by.openEnvironment(t,e.table,!0),n=by.listDBIs(r);by.initializeDBIs(r,a_.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new NU;do s=await n8(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 ZZ(t8);while(s.transactions_deleted>0);return i}a(r8,"deleteAuditLogsBefore");async function n8(e,t){let r=new NU;try{let n=e.dbis[a_.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[a_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];JZ.isEmpty(c)||(s=e.dbis[a_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[a_.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>e8)break}return await s,r}catch(n){throw n}}a(n8,"deleteTransactions")});var PU=C((EOe,CU)=>{"use strict";var Oy=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};CU.exports=Oy});var LU=C((TOe,DU)=>{"use strict";var s8=$s(),i8=n_(),SOe=PU(),Oi=(k(),P(q)),o8=oe(),Ny=dt(),a8=ao(),c8=r_(),l8=Xf(),{getSchemaPath:u8}=Et();DU.exports=d8;async function d8(e,t=!0){let r;e.schema===Oi.SYSTEM_SCHEMA_NAME?r=a8[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await _8(e),s=u8(e.schema,e.table),i=await Ny.openEnvironment(s,e.table);return t===!0&&await f8(e,i,r.hash_attribute),Ny.dropDBI(i,e.attribute),n}a(d8,"lmdbDropAttribute");async function f8(e,t,r){let n=Ny.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(f8,"removeAttributeFromAllObjects");async function _8(e){let t=new s8(Oi.SYSTEM_SCHEMA_NAME,Oi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await c8(t)).filter(o=>o[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(o8.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Oi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new i8(Oi.SYSTEM_SCHEMA_NAME,Oi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return l8(i)}a(_8,"dropAttributeFromSystem")});var HU=C((yOe,BU)=>{"use strict";var wy=dt(),mu=kt(),ROe=un(),Iy=(k(),P(q)),MU=oe(),{getTransactionAuditStorePath:h8}=Et(),m8=fu(),Jp=lu(),p8=ee();BU.exports=E8;async function E8(e){let t=h8(e.schema,e.table),r=await wy.openEnvironment(t,e.table,!0),n=wy.listDBIs(r);wy.initializeDBIs(r,mu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Iy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return vU(r,e.search_values);case Iy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,S8(r,e.search_values,s);case Iy.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return g8(r,e.search_values);default:return vU(r)}}a(E8,"readAuditLog");function vU(e,t=[0,Date.now()]){MU.isEmpty(t[0])&&(t[0]=0),MU.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[mu.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 Jp,s))}a(vU,"searchTransactionsByTimestamp");function g8(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[mu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,xU(e,i))}return Object.fromEntries(r)}a(g8,"searchTransactionsByUsername");function S8(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],f=m8.equals(e,mu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,mu.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=xU(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,f=n.get(u);UU(l,"records",r,f,o),UU(l,"original_records",r,f,o)}return Object.fromEntries(o)}a(S8,"searchTransactionsByHashValues");function UU(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 Jp(e.operation,e.user_name,i,void 0);d[t]=[c],u.push(d)}}else{let u=new Jp(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(UU,"loopRecords");function xU(e,t){let r=[];try{let n=e.dbis[mu.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 Jp,i);r.push(o)}}catch(i){p8.warn(i)}return r}catch(n){throw n}}a(xU,"batchSearchTransactions")});var FU=C((wOe,kU)=>{"use strict";var{getSchemaPath:OOe}=Et(),NOe=dt(),{database:T8}=(xe(),P(at));kU.exports={writeTransaction:A8};async function A8(e,t,r){return T8({database:e,table:t}).transaction(r)}a(A8,"writeTransaction")});var VU=C((COe,$U)=>{"use strict";var{getSchemaPath:GU}=Et(),qU=dt();$U.exports={flush:R8,resetReadTxn:y8};async function R8(e,t){return(await qU.openEnvironment(GU(e,t),t.toString())).flushed}a(R8,"flush");async function y8(e,t){try{(await qU.openEnvironment(GU(e,t),t.toString())).resetReadTxn()}catch{}}a(y8,"resetReadTxn")});var zU=C((DOe,WU)=>{"use strict";var{Readable:b8}=require("stream"),{getDatabases:O8}=(xe(),P(at)),{readSync:N8,openSync:w8,createReadStream:KU}=require("fs"),{open:I8}=require("lmdb"),YU=$f(),C8=Vf(),{AUDIT_STORE_OPTIONS:P8}=(Ai(),P(UL)),{INTERNAL_DBIS_NAME:D8,AUDIT_STORE_NAME:L8}=kt();WU.exports=v8;var Cy=32768,M8=100;async function v8(e){let t=e.database||e.schema||"data",r=O8()[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=I8({noSync:!0,maxDbs:C8.MAX_DBS}),_,h=d.openDB(D8,new YU(!1)),m=f.useReadTransaction(),S=0,g=a(async function(E,T){T.encoding="binary",T.encoder=void 0;let N=d.openDB(E,T),v=f.openDB(E,T);for(let{key:H,version:X,value:W}of v.getRange({start:null,transaction:m,versions:v.useVersions}))_=N.put(H,W,X),S++%M8===0&&(await new Promise($=>setTimeout($,20)),m.openTimer&&(m.openTimer=0))},"copyDatabase");for(let{key:E,value:T}of f.getRange({transaction:m,start:!1}))if(s.some(N=>E.startsWith?.(N+"/"))){h.put(E,T);let[,N]=E.split("/"),v=!N,H=new YU(!v,v);await g(E,H)}e.include_audit&&await g(L8,{...P8}),await _;let R=KU(d.path);return R.headers=l(),R.on("close",()=>{m.done(),d.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=w8(o.path);return o.transaction(()=>{let u=Buffer.alloc(Cy);N8(c,u,0,Cy),o.resetReadTxn();let f=o.useReadTransaction();f.renew();let d=KU(null,{fd:c,start:Cy}),_=new b8.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(v8,"getBackup")});var JU=C((MOe,jU)=>{"use strict";var U8=ee(),{handleHDBError:x8}=me(),B8=AM(),H8=Gp(),k8=ZR(),F8=uv(),G8=Xf(),q8=oy(),$8=xv(),V8=Kv(),K8=r_(),Y8=Zv(),W8=uU(),z8=mU(),Q8=EU(),j8=AU(),J8=IU(),X8=hy(),Z8=LU(),e5=HU(),t5=FU(),QU=VU(),r5=zU(),Py=class extends B8{static{a(this,"LMDBBridge")}async searchByConditions(t){return Y8(t)}async getDataByHash(t){return await q8(t)}async searchByHash(t){return await $8(t)}async getDataByValue(t,r){return await V8(t,r)}async searchByValue(t){return await K8(t)}async createSchema(t){return await F8(t)}async dropSchema(t){return await W8(t)}async createTable(t,r){return await z8(t,r)}async dropTable(t){return await X8(t)}async createAttribute(t){return await H8(t)}async createRecords(t){return await k8(t)}async updateRecords(t){return await Q8(t)}async upsertRecords(t){try{return await j8(t)}catch(r){throw x8(r,null,null,U8.ERR,r)}}async deleteRecords(t){return await G8(t)}async dropAttribute(t){return await Z8(t)}async deleteAuditLogsBefore(t){return await J8(t)}async readAuditLog(t){return await e5(t)}writeTransaction(t,r,n){return t5.writeTransaction(t,r,n)}flush(t,r){return QU.flush(t,r)}resetReadTxn(t,r){return QU.resetReadTxn(t,r)}getBackup(t){return r5(t)}};jU.exports=Py});function Tn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function tE(e,t){let r=e.prototype,n={},s=t.attributes||t.properties||[];for(let c of s){let l=c.name,u,f;if(c.resolve)f={get(){return c.resolve(this,this.getContext?.())},set(d){return c.set(this,d)},configurable:!0};else{switch(c.type){case"String":u=a(function(d){if(!(typeof d=="string"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a string, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"ID":u=a(function(d){if(!(typeof d=="string"||d?.length>0&&d.every?.(_=>typeof _=="string")||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a string, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Float":case"Number":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="number"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a number, attempt to assign ${_}`);Tn(this)[l]=d},"set");break;case"Int":u=a(function(d){let _=d?.__op__?d.value:d;if(!(_>>0===_||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs((_>>0)-_)<=1)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be an integer between -2147483648 and 2147483647, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Long":u=a(function(d){let _=d?.__op__?d.value:d;if(!(Math.round(_)===d&&Math.abs(_)<=9007199254740992||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs(_)<=9007199254740992)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"BigInt":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="bigint"||d==null&&c.nullable!==!1))if(typeof _=="string"||typeof _=="number")_=BigInt(_),d?.__op__?d.value=_:d=_;else throw new qn.ClientError(`${l} must be a number, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Boolean":u=a(function(d){if(!(typeof d=="boolean"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a boolean, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Date":u=a(function(d){if(!(d instanceof Date||d==null&&c.nullable!==!1))if(typeof d=="string"||typeof d=="number")d=new Date(d);else throw new qn.ClientError(`${l} must be a Date, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Bytes":u=a(function(d){if(!(d instanceof Uint8Array||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a Buffer or Uint8Array, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Blob":u=a(function(d){if(!(d instanceof gi||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be a Blob, attempt to assign ${d}`);Tn(this)[l]=d},"set");break;case"Any":case void 0:u=a(function(d){Tn(this)[l]=d},"set");break;default:u=a(function(d){if(!(typeof d=="object"||d==null&&c.nullable!==!1))throw new qn.ClientError(`${l} must be an object, attempt to assign ${d}`);Tn(this)[l]=d},"set")}f={get(){let d=this.getChanges?.();if(d&&l in d){let h=d[l];if(h?.__op__){let m=this.getRecord()?.[l];return h.update(m)}return h}let _=this.getRecord()?.[l];if(_&&typeof _=="object"){let h=Dy(_,c);if(h)return d||this._setChanges(d=Object.create(null)),d[l]=h}return _},set:u,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,n[l]=f,(!(l in r)||Object.getOwnPropertyDescriptor(r,l)?.get?.isAttribute)&&Object.defineProperty(r,l,f)}i("getProperty",function(c){let l=n[c];if(l)return l.get.call(this);let u=this.getChanges();return u?.[c]!==void 0?u[c]:this.getRecord()?.[c]}),i("set",function(c,l){let u=n[c];if(u)return u.set.call(this,l);if(t.sealed)throw new qn.ClientError("Can not add a property to a sealed table schema");Tn(this)[c]=l}),i("deleteProperty",function(c){Tn(this)[c]=void 0}),i("toJSON",function(){let c=this.getChanges?.(),l;for(let f in c){l||(l={...this.getRecord()});let d=c[f];if(d?.__op__){let _=l[f];d=d.update(_)}l[f]=d}return Object.keys(this).length>0&&(l||(l={...this.getRecord()}),Object.assign(l,this)),l||this.getRecord()}),r.get||i("get",r.getProperty),r.delete||i("delete",r.deleteProperty),r.then||i("then",null);function i(c,l){Object.defineProperty(r,c,{value:l,configurable:!0})}a(i,"setMethod");let o=r;do{let c=Object.getPrototypeOf(o);if(c===Object.prototype){Object.setPrototypeOf(o,ZU);break}o=c}while(o&&o!==ZU)}function Dy(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends c_{static{a(this,"TrackedObject")}},tE(r,t)),new r(e)):new c_(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=Dy(o,t?.elements)),n[s]=o}return n;default:return e}}function rE(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=rE(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 pu(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=pu(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=oR[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=pu(s);r[n]=s}if(!Array.isArray(e))for(let n in e)n5.call(e,n)&&(r||(r={...e.getRecord?.()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?.()??e}function Xp(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[Bc]||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(Xp(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(Xp(s))return!0}else return!0}else return!0}}return!1}var qn,XU,ZU,c_,n5,Bc,Zp,eE,Ly=Re(()=>{qn=M(me());Rp();hn();a(Tn,"getChanges");a(tE,"assignTrackedAccessors");XU=Object.prototype,ZU=new Proxy({},{get(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(XU[t])return XU[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=Dy(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}});a(Dy,"trackObject");c_=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}};tE(c_,{});a(rE,"collapseData");n5=Object.prototype.hasOwnProperty;a(pu,"updateAndFreeze");a(Xp,"hasChanges");Bc=Symbol.for("has-array-changes"),Zp=class extends Array{static{a(this,"TrackedArray")}#e;[Bc];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[Bc]=!0,super.splice(...t)}push(...t){return this[Bc]=!0,super.push(...t)}pop(){return this[Bc]=!0,super.pop()}unshift(...t){return this[Bc]=!0,super.unshift(...t)}shift(){return this[Bc]=!0,super.shift()}};Zp.prototype.constructor=Array;eE=class{constructor(t){this.value=t}static{a(this,"Addition")}__op__="add";update(t){return(+t||0)+this.value}}});var a0={};Ue(a0,{ResourceBridge:()=>Uy});function xy({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 t0(e,t){let r=Ni(e),n=xy(e,r);if(!r)throw new Vs.ClientError(`Table ${e.table} not found`);let s;n&&r.attributes.length-n.length>2&&n.length<5&&(s=!0);let i={user:e.hdb_user,onlyIfCached:e.onlyIfCached,noCacheStore:e.noCacheStore,noCache:e.noCache,replicateFrom:e.replicateFrom},o;wt(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&&rE(f)}catch(d){f={message:d.toString()}}return t?{value:{key:u,value:f}}:{value:f}}else return o(),{done:!0}},return(u){return o(),{value:u,done:!0}},throw(u){return o(),{done:!0}}}}}}function Ni(e){let t=e.database||e.schema||i5,r=Je()[t];if(!r)throw(0,Vs.handleHDBError)(new Error,s5.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function r0(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*n0(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 s0,nE,Vs,i0,My,vy,o0,s5,i5,o5,a5,e0,Uy,c0=Re(()=>{"use strict";s0=M(JU()),nE=M(_u()),Vs=M(me());xe();i0=M(Qf());k();My=M(uo()),vy=M(qs()),o0=M(oe());hc();Ly();({HDB_ERROR_MSGS:s5}=Vs.hdb_errors),i5="data",o5=1e4,a5=10,Uy=class extends s0.default{static{a(this,"ResourceBridge")}constructor(t){super(t),e0=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,nE.default)(t,"conditions");if(r)throw(0,Vs.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=Ni(t);if(!n)throw new Vs.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(o){return o.conditions?(o.conditions=o.conditions.map(i),o):{attribute:o.search_attribute??o.attribute,comparator:o.search_type??o.comparator,value:o.search_value!==void 0?o.search_value:o.value}}return a(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:xy(t,n),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let o of n)o.is_primary_key?(o.isPrimaryKey=!0,delete o.is_primary_key):o.name===i&&i&&(o.isPrimaryKey=!0);else{if(!i)throw new Vs.ClientError("A primary key must be specified with a `primary_key` property or with `attributes`");n=[{name:i,isPrimaryKey:!0},{name:"__createdtime__",indexed:!0},{name:"__updatedtime__",indexed:!0}]}ft({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await Ni(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=Ni(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=a((o,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(o,l,()=>r.primaryStore.put(o,c,l)).then(u=>{if(!u){let{value:f,version:d}=r.primaryStore.getEntry(o);return i(o,f,d)}})),"deleteRecord");for(let{key:o,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(o,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){Ni(t).dropTable()}createSchema(t){return Eu({database:t.schema,table:null}),My.signalSchemaChange(new vy.SchemaEventMsg(process.pid,Yt.CREATE_SCHEMA,t.schema))}async dropSchema(t){await By(t.schema),My.signalSchemaChange(new vy.SchemaEventMsg(process.pid,Yt.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,e0.upsertRecords(t)}async upsertRecords(t){let{schema_table:r,attributes:n}=(0,i0.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),wt(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}_&&(_=rE(_));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),wt(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 r0(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=Je()[t.schema][t.table];if(!r.createdTimeProperty)throw new Vs.ClientError("Table must have a '__createdtime__' attribute or @createdTime timestamp defined to perform this operation");let n=await r.search({conditions:[{attribute:r.createdTimeProperty.name,value:Date.parse(t.date),comparator:Mm.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,o0.async_set_timeout)(a5),l=[],s=!0},"chunkDelete");for await(let f of n)l.push(f[r.primaryKey]),c++,c%o5===0&&await u();return l.length>0&&await u(),s?r0(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,nE.default)(t,"hashes");if(r)throw r;return t0(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of t0(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&fA[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,nE.default)(t,"value");if(n)throw n;let s=Ni(t);if(!s)throw new Vs.ClientError(`Table ${t.table} not found`);let i=t.search_value;i.includes?.("*")&&(i.startsWith("*")?i.endsWith("*")?i!=="*"&&(r="contains",i=i.slice(1,-1)):(r="ends_with",i=i.slice(1)):i.endsWith("*")&&(r="starts_with",i=i.slice(0,-1))),r===Mm.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:xy(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=Ni(t);t.get_attributes&&!t.get_attributes.includes(s.primaryKey)&&t.get_attributes[0]!=="*"&&t.get_attributes.push(s.primaryKey);for await(let i of this.searchByValue(t,r))n.set(i[s.primaryKey],i);return n}resetReadTxn(t,r){Ni({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return Ni(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=Ni(t),n={};switch(t.search_type){case vm.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 vm.USERNAME:let s=t.search_values;for await(let i of n0(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n;default:return n0(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(xy,"getSelect");a(t0,"getRecords");a(Ni,"getTable");a(r0,"createDeleteResponse");a(n0,"groupRecordsInHistory")});var $n=C((VOe,l0)=>{"use strict";var{ResourceBridge:c5}=(c0(),P(a0)),l5=ce();l5.initSync();var sE;function u5(){return sE||(sE=new c5,sE)}a(u5,"getBridge");l0.exports=u5()});var _0=C((YOe,f0)=>{"use strict";var u0=require("lodash"),l_=require("mathjs"),d5=require("jsonata"),d0=oe();f0.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?u0.uniqWith(e,u0.isEqual):e,"distinct_array"),searchJSON:f5,mad:u_.bind(null,l_.mad),mean:u_.bind(null,l_.mean),mode:u_.bind(null,l_.mode),prod:u_.bind(null,l_.prod),median:u_.bind(null,l_.median)};function u_(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(u_,"aggregateFunction");function f5(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(d0.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),d0.isEmpty(this.__ala__.res[r])){let n=d5(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(f5,"searchJSON")});var m0=C((zOe,h0)=>{"use strict";var er=require("moment"),Hy="YYYY-MM-DDTHH:mm:ss.SSSZZ";er.suppressDeprecationWarnings=!0;h0.exports={current_date:a(()=>er().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>er().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return er(e).utc().format("YYYY");case"month":return er(e).utc().format("MM");case"day":return er(e).utc().format("DD");case"hour":return er(e).utc().format("HH");case"minute":return er(e).utc().format("mm");case"second":return er(e).utc().format("ss");case"millisecond":return er(e).utc().format("SSS");default:break}},"extract"),date:a(e=>er(e).utc().format(Hy),"date"),date_format:a((e,t)=>er(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>er(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>er(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=er(e).utc(),s=er(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>er().utc().valueOf(),"now"),get_server_time:a(()=>er().format(Hy),"get_server_time"),offset_utc:a((e,t)=>er(e).utc().utcOffset(t).format(Hy),"offset_utc")}});var S0=C((jOe,g0)=>{"use strict";var _5=require("@turf/area"),h5=require("@turf/length"),m5=require("@turf/circle"),p5=require("@turf/difference"),E5=require("@turf/distance"),g5=require("@turf/boolean-contains"),S5=require("@turf/boolean-equal"),T5=require("@turf/boolean-disjoint"),A5=require("@turf/helpers"),p0=(k(),P(q)),Ke=oe(),ho=ee();g0.exports={geoArea:R5,geoLength:y5,geoCircle:b5,geoDifference:O5,geoDistance:E0,geoNear:N5,geoContains:w5,geoEqual:I5,geoCrosses:C5,geoConvert:P5};function R5(e){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return _5.default(e)}catch(t){return ho.trace(t,e),NaN}}a(R5,"geoArea");function y5(e,t){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return h5.default(e,{units:t||"kilometers"})}catch(r){return ho.trace(r,e),NaN}}a(y5,"geoLength");function b5(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return m5.default(e,t,{units:r||"kilometers"})}catch(n){return ho.trace(n,e,t),NaN}}a(b5,"geoCircle");function O5(e,t){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return p5(e,t)}catch(r){return ho.trace(r,e,t),NaN}}a(O5,"geoDifference");function E0(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return E5.default(e,t,{units:r||"kilometers"})}catch(n){return ho.trace(n,e,t),NaN}}a(E0,"geoDistance");function N5(e,t,r,n){if(Ke.isEmpty(e)||Ke.isEmpty(t))return!1;if(Ke.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return E0(e,t,n)<=r}catch(s){return ho.trace(s,e,t),!1}}a(N5,"geoNear");function w5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return g5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(w5,"geoContains");function I5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return S5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(I5,"geoEqual");function C5(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return!T5.default(e,t)}catch(r){return ho.trace(r,e,t),!1}}a(C5,"geoCrosses");function P5(e,t,r){if(Ke.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ke.isEmpty(t))throw new Error("geo_type is required");if(Ke.isEmpty(p0.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(p0.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ke.autoCastJSON(e)),A5[t](e,r)}a(P5,"geoConvert")});var iE=C((XOe,T0)=>{var Hc=_0(),Vn=m0(),wi=S0();T0.exports=e=>{e.aggr.mad=e.aggr.MAD=Hc.mad,e.aggr.mean=e.aggr.MEAN=Hc.mean,e.aggr.mode=e.aggr.MODE=Hc.mode,e.aggr.prod=e.aggr.PROD=Hc.prod,e.aggr.median=e.aggr.MEDIAN=Hc.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Hc.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Hc.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=Vn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=Vn.current_time,e.fn.extract=e.fn.EXTRACT=Vn.extract,e.fn.date=e.fn.DATE=Vn.date,e.fn.date_format=e.fn.DATE_FORMAT=Vn.date_format,e.fn.date_add=e.fn.DATE_ADD=Vn.date_add,e.fn.date_sub=e.fn.DATE_SUB=Vn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=Vn.date_diff,e.fn.now=e.fn.NOW=Vn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=Vn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=Vn.get_server_time,e.fn.getdate=e.fn.GETDATE=Vn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=Vn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=wi.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=wi.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=wi.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=wi.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=wi.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=wi.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=wi.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=wi.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=wi.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=wi.geoNear}});var b0=C((ZOe,y0)=>{"use strict";var d_=require("lodash"),An=require("alasql");An.options.cache=!1;var D5=iE(),A0=require("clone"),oE=require("recursive-iterator"),ke=ee(),Xe=oe(),gu=$n(),L5=(k(),P(q)),{hdb_errors:M5}=me(),{getDatabases:R0}=(xe(),P(at)),v5="IS NULL",Ks="There was a problem performing this search. Please check the logs and try again.";D5(An);var ky=class{static{a(this,"SQLSearch")}constructor(t,r){if(Xe.isEmpty(t))throw ke.error("AST statement for SQL select process cannot be empty"),"statement cannot be null";this.statement=t,this.columns={},this.all_table_attributes=r,this.fetch_attributes=[],this.exact_search_values={},this.comparator_search_values={},this.tables=[],this.data={},this.has_aggregator=!1,this.has_ordinal=!1,this.has_outer_join=!1,this._getColumns(),this._getTables(),this._conditionsToFetchAttributeValues(),this._setAliasesForColumns(),Xe.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!Xe.isEmptyOrZeroLength(n))return ke.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw ke.error("Error thrown from checkEmptySQL in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{let n=await this._getFetchAttributeValues();if(n)return n}catch(n){throw ke.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),ke.error(n),new Error(Ks)}if(Object.keys(this.data).length===0)return ke.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(n){throw ke.error("Error thrown from processJoins in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(n){throw ke.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),ke.error(n),new Error(Ks)}try{return t=await this._finalSQL(),t}catch(n){throw ke.error("Error thrown from finalSQL in SQLSearch class method search."),ke.error(n),new Error(Ks)}}_getColumns(){let t=new oE(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(A0(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=d_.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=R0()[r.databaseid][r.tableid].primaryKey,this.data[n].__merged_data={},this.data[n].__merged_attributes=[],this.data[n].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(Xe.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new oE(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!Xe.isEmpty(r)&&r.right)if(Xe.isNotEmptyAndHasValue(r.right.value)){let n=Xe.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new An.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=Xe.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new An.yy.LogicValue({value:i}):n instanceof An.yy.StringValue&&Xe.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new An.yy.NumValue({value:i}))});if(t){ke.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new oE(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let n=new Set,s=r.left.columnid?r.left:r.right,i=this._findColumn(s);if(!i)continue;let o=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!Xe.isEmpty(L5.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(Xe.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(Xe.isEmptyOrZeroLength(r.left.columnid)||Xe.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[o].ignore=!0,this.comparator_search_values[o].comparators=[];continue}this.comparator_search_values[o].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(Xe.isEmpty(this.exact_search_values[o])&&(this.exact_search_values[o]={ignore:!1,values:new Set}),!this.exact_search_values[o].ignore){let c=!1;switch(r.op){case"=":!Xe.isEmpty(r.right.value)||!Xe.isEmpty(r.left.value)?n.add(Xe.isEmpty(r.right.value)?r.left.value:r.right.value):c=!0;break;case"IN":let l=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<l.length;u++)if(l[u].value)n.add(l[u].value);else{c=!0;break}break;default:c=!0;break}this.exact_search_values[o].ignore=c,c?this.exact_search_values[o].values=new Set:this.exact_search_values[o].values=new Set([...this.exact_search_values[o].values,...n])}}}_setAliasesForColumns(){if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&Xe.isEmptyOrZeroLength(this.statement.from)&&Xe.isEmptyOrZeroLength(this.columns.columns))return;let t=[],r={};this.statement.columns.forEach((n,s)=>{if(n.columnid==="*"){t.push(s);return}if(n.aggregatorid&&(this.has_aggregator=!0),!n.aggregatorid&&!n.funcid)if(n.as_orig=n.as?n.as:n.columnid,this.statement.joins)if(r[n.as_orig]>=0){let i=r[n.as_orig]+1;n.as=`[${n.as_orig+i}]`,r[n.as_orig]=i}else n.as=`[${n.as_orig}]`,r[n.as_orig]=0;else n.as=`[${n.as_orig}]`;!n.aggregatorid&&n.funcid&&n.args&&(n.as_orig=n.as?n.as:n.toString().replace(/'/g,'"'),n.as=`[${n.as_orig}]`),n.aggregatorid&&n.expression.columnid!=="*"&&(n.as_orig=n.as?n.as:n.expression.tableid?`${n.aggregatorid}(${n.expression.tableid}.${n.expression.columnid})`:`${n.aggregatorid}(${n.expression.columnid})`,n.as=`[${n.as_orig}]`)}),this.statement.columns.length>1&&t.length>0&&d_.pullAt(this.statement.columns,t)}_findColumn(t){let r=this.all_table_attributes.filter(n=>{if(t.columnid_orig&&t.tableid_orig)return(n.table.as===t.tableid_orig||n.table.tableid===t.tableid_orig)&&n.attribute===t.columnid_orig;if(t.tableid)return(n.table.as===t.tableid||n.table.tableid===t.tableid)&&n.attribute===t.columnid;let s=t.columnid_orig?t.columnid_orig:t.columnid;return n.attribute===s});if(Xe.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);Xe.isEmptyOrZeroLength(n)||(r=this.all_table_attributes.filter(s=>s.attribute===n[0].columnid&&n[0].tableid&&n[0].tableid===(s.table.as?s.table.as:s.table.tableid)))}return r[0]}async _checkEmptySQL(){let t=[];if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&!Xe.isEmptyOrZeroLength(this.columns.columns))return t;if(Xe.isEmptyOrZeroLength(this.all_table_attributes)&&Xe.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await An.promise(r)}catch(r){throw ke.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),ke.error(r),new Error("There was a problem with the SQL statement")}return t}_addFetchColumns(t){t&&t.length>0&&t.forEach(r=>{let n=this._findColumn(r);n&&this.fetch_attributes.push(A0(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__merged_attributes.push(r),this.data[t].__merged_attr_map[r]=this.data[t].__merged_attributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__merged_data[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__merged_attr_map[n];this.data[t].__merged_data[r].splice(i,1,s)}async _getFetchAttributeValues(){if(Xe.isEmptyOrZeroLength(Object.keys(this.columns)))return[];this._addFetchColumns(this.columns.joins);let t=null;try{t=this.statement.where?this.statement.where.toString():""}catch{throw new Error("Could not generate proper where clause")}this.columns.where&&this._addFetchColumns(this.columns.where);let r=this._isSimpleSelect();if(r?this._addFetchColumns(this.columns.columns):(!this.columns.where&&this.fetch_attributes.length===0)|t.indexOf(v5)>-1&&this.tables.forEach(s=>{let i={columnid:R0()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=d_.uniqBy(this.fetch_attributes,s=>[s.table.databaseid,s.table.as?s.table.as:s.table.tableid,s.attribute].join()),r)return await this._simpleSQLQuery();let n=this.fetch_attributes.reduce((s,i)=>{let o=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[o].__hash_name;return s[o]||(s[o]=[],s[o].push(null),this._addColumnToMergedAttributes(o,c)),i.attribute!==c&&(s[o].push(null),this._addColumnToMergedAttributes(o,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,o=this.data[i].__hash_name,c={schema:s.table.databaseid,table:s.table.tableid,get_attributes:[s.attribute]},l=!1,u=[s.table.databaseid,s.table.tableid,s.attribute].join("/");if(s.attribute===o&&(l=!0),!Xe.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!Xe.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let f=await gu.getDataByHash(c);for(let d of c.hash_values)f.get(d)&&!this.data[i].__merged_data[d]&&(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Ks)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async f=>{let d={...c};d.search_value=f;let _=await gu.getDataByValue(d);for(let[h,m]of _)this.data[i].__merged_data[h]?this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]):(this.data[i].__merged_data[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Ks)}else if(!Xe.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!Xe.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let f=this.comparator_search_values[u].comparators;for(let d=0,_=f.length;d<_;d++){let h=f[d];c.search_attribute=h.attribute,c.search_value=h.search_value;let m=await gu.getDataByValue(c,h.operation);if(l)for(let[S]of m)this.data[i].__merged_data[S]||(this.data[i].__merged_data[S]=[...n[i]],this._setMergedHashAttribute(i,S));else for(let[S,g]of m)this.data[i].__merged_data[S]?this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]):(this.data[i].__merged_data[S]=[...n[i]],this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]),this._setMergedHashAttribute(i,S))}}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),ke.error(f),new Error(Ks)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await gu.getDataByValue(c);if(l)for(let[d]of f)this.data[i].__merged_data[d]||(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d));else for(let[d,_]of f)this.data[i].__merged_data[d]?this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]):(this.data[i].__merged_data[d]=[...n[i]],this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]),this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),ke.error(f),new Error(Ks)}}}_isSimpleSelect(){let t=!0;return Object.keys(this.statement).length!==2||!this.statement.columns||!this.statement.from||this.statement.from.length!==1?(t=!1,t):(this.statement.columns.forEach(r=>{r instanceof An.yy.Column||(t=!1)}),t)}_updateOrderByToAliases(){this.statement.order.forEach(t=>{if(t.expression.aggregatorid){t.is_aggregator=!0;return}if(t.expression.value){t.is_ordinal=!0,this.has_ordinal=!0;return}else t.is_ordinal=!1;let r=this.statement.columns.filter(s=>{let i=s.aggregatorid?s.expression:s,o=s.aggregatorid?s.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===o});r[0]||r.push(this._findColumn(t.expression));let n=r[0];if(t.is_func=!!n.funcid,t.is_aggregator=!!n.aggregatorid,n.as)if(n.as&&!t.expression.tableid)t.expression.columnid=n.as,t.expression.columnid_orig=n.as_orig;else{let s=new An.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new An.yy.Column,t.expression),t.initial_select_column.as=`[${t.expression.columnid_orig}]`,t.expression.columnid=t.initial_select_column.as;return}if(!t.is_aggregator){let s=t.is_func?new An.yy.FuncValue:new An.yy.Column;t.initial_select_column=Object.assign(s,n)}})}_addNonAggregatorsToFetchColumns(){let r=this.statement.order.filter(n=>!n.is_aggregator&&!n.is_ordinal).map(n=>n.is_func?{columnid:n.initial_select_column.args.filter(i=>!!i.columnid_orig)[0].columnid_orig}:{columnid:n.expression.columnid_orig});this._addFetchColumns(r)}async _processJoins(){let t=[],r=[],n=this.statement.from[0],s=[n],i=["? "+(n.as?" AS "+n.as:n.tableid)];t.push(Object.values(this.data[`${n.databaseid_orig}_${n.as?n.as_orig:n.tableid_orig}`].__merged_data)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let m=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(m+=" ON "+h.on.toString()),i.push(m),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__merged_data))});let o=[],c={};s.forEach(h=>{let m=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hash_name,S=h.as?h.as_orig:h.tableid_orig;o.push({key:`'${S}.${m}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${m}\` AS "${S}.${m}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__merged_attributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(h=>{h.is_func?r.push(h.initial_select_column.toString()):h.initial_select_column.tableid?r.push(`${h.initial_select_column.tableid}.${h.initial_select_column.columnid} AS ${h.expression.columnid}`):r.push(`${h.initial_select_column.columnid} AS ${h.expression.columnid}`)}));let f="",d="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(f=this.statement.limit?"LIMIT "+this.statement.limit:"",d=this.statement.offset?"OFFSET "+this.statement.offset:"");let _=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${f} ${d}`,m=this._convertColumnsToIndexes(h,s);_=await An.promise(m,t),t=null}catch(h){throw ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),ke.error(h),new Error("There was a problem processing the data.")}if(_&&_.length>0){for(let h=0,m=_.length;h<m;h++){let S=_[h];o.forEach(g=>{S[g.key]!==null&&S[g.key]!==void 0&&g.keys.add(S[g.key])})}o.forEach(h=>{let m=Object.keys(this.data[`${h.schema}_${h.table}`].__merged_data),S=d_.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 oE(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=d_.uniqBy(n,i=>[i.table.databaseid,i.table.as?i.table.as:i.table.tableid,i.attribute].join());try{await this._getData(n)}catch(i){throw ke.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),ke.error(i),new Error(Ks)}}async _getData(t){try{let r=t.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]?n[i].columns.push(s.attribute):n[i]={schema:s.table.databaseid,table:s.table.tableid,columns:[s.attribute]},n},{});for(let n in r){let s=r[n],i=this.data[n].__merged_data,o=[];for(let f in i)o.push(i[f][0]);this.data[n].__merged_attributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:o,get_attributes:s.columns},l=await gu.getDataByHash(c),u=s.columns.length;for(let f=0,d=o.length;f<d;f++){let _=o[f],h=l.get(_);for(let m=0;m<u;m++){let S=s.columns[m],g=h[S]===void 0?null:h[S];this.data[n].__merged_data[_].push(g)}}}}catch(r){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__merged_data)),r.as=r.as?r.as:r.tableid,r.databaseid="",r.tableid="?",this.statement.joins&&this.statement.joins.forEach(s=>{s.as=s.as?s.as:s.table.tableid,t.push(Object.values(this.data[`${s.table.databaseid_orig}_${s.table.as?s.table.as_orig:s.table.tableid_orig}`].__merged_data)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(o=>{let c=o.aggregatorid?o.expression:o,l=o.aggregatorid?o.as_orig:c.as_orig;return s.expression.tableid?c.columnid_orig===s.expression.columnid_orig&&c.tableid_orig===s.expression.tableid_orig:c.columnid_orig===s.expression.columnid_orig||s.expression.columnid_orig===l}).length===0&&(s.expression.columnid=s.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&this.statement.limit&&!this.statement.joins&&(delete this.statement.limit,delete this.statement.offset);let n;try{let s=this._buildSQL();ke.trace(`Final SQL: ${s}`),n=await An.promise(s,t),this.has_outer_join&&(n=this._translateUndefinedValues(n)),ke.trace(`Final AlaSQL results data included ${n.length} rows`)}catch(s){throw ke.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),ke.error(s),new Error("There was a problem running the generated sql.")}return n}_translateUndefinedValues(t){try{let r=[];for(let n of t){let s=Object.create(null);Object.keys(n).forEach(i=>{n[i]===void 0?s[i]=null:s[i]=n[i]}),r.push(s)}return r}catch(r){return ke.error(M5.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),ke.trace(r.stack),t}}_buildSQL(t=!0){let r=this.statement.toString();return r=r.replace(/NOT\(NULL\)/g,"NOT NULL"),this.statement.columns.forEach(n=>{if(n.funcid&&n.as){let s=n.toString().replace(" AS "+n.as,"");r=r.replace(n.toString(),s)}}),t===!0?this._convertColumnsToIndexes(r,this.tables):r}_convertColumnsToIndexes(t,r){let n=t,s={};r.forEach(i=>{i.databaseid_orig?s[`${i.databaseid_orig}_${i.as?i.as_orig:i.tableid_orig}`]=i.as?i.as:i.tableid:s[`${i.databaseid}_${i.as?i.as:i.tableid}`]=`\`${i.as?i.as:i.tableid}\``});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,c)=>{let l=s[i],u=new RegExp(`${l}.\`${o}\``,"g"),f=`${l}.[${c}]`;n=n.replace(u,f)});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,c)=>{let l=new RegExp(`\`${o}\``,"g"),u=`[${c}]`;n=n.replace(l,u)});return n}async _simpleSQLQuery(){let t=this.statement.columns.reduce((n,s)=>(s.as_orig&&s.as_orig!=s.columnid_orig?n[s.columnid_orig]=s.as_orig:n[s.columnid_orig]||(n[s.columnid_orig]=s.columnid_orig),n),{}),r=this.fetch_attributes.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]||(n[i]={}),n[i][t[s.attribute]]=null,n},{});for(let n of this.fetch_attributes){let s=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,i={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]};try{i.search_attribute=n.attribute,i.search_value="*";let o=await gu.getDataByValue(i);for(let[c,l]of o)this.data[s].__merged_data[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__merged_data[c]={...r[s]}),this.data[s].__merged_data[c][t[n.attribute]]=l[n.attribute]??null}catch(o){throw ke.error("There was an error when processing this SQL operation. Check your logs"),ke.error(o),new Error(Ks)}}return Object.values(Object.values(this.data)[0].__merged_data)}};y0.exports=ky});var Wr=C((tNe,O0)=>{"use strict";var U5=SM();O0.exports={searchByConditions:B5,searchByHash:H5,searchByValue:k5,search:F5};var Fy=$n(),{transformReq:Gy}=oe(),x5=b0();async function B5(e){return Gy(e),Fy.searchByConditions(e)}a(B5,"searchByConditions");async function H5(e){Gy(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of Fy.searchByHash(e))r&&t.push(r);return t}a(H5,"searchByHash");async function k5(e){Gy(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of Fy.searchByValue(e))t.push(r);return t}a(k5,"searchByValue");function F5(e,t){try{let r=new U5(e);r.validate(),new x5(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(F5,"search")});var mo=C((nNe,C0)=>{"use strict";var f_=require("crypto"),G5=ce(),{CONFIG_PARAMS:q5}=(k(),P(q)),w0="aes-256-cbc",$5=32,V5=16,qy=64,I0=32,K5=qy+I0,N0=new Map;C0.exports={encrypt:Y5,decrypt:W5,createNatsTableStreamName:z5};function Y5(e){let t=f_.randomBytes($5),r=f_.randomBytes(V5),n=f_.createCipheriv(w0,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(Y5,"encrypt");function W5(e){let t=e.substr(0,qy),r=e.substr(qy,I0),n=e.substr(K5,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=f_.createDecipheriv(w0,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(W5,"decrypt");function z5(e,t){let r=G5.get(q5.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=N0.get(r);return n||(n=f_.createHash("md5").update(r).digest("hex"),N0.set(r,n)),n}a(z5,"createNatsTableStreamName")});var po=C((oNe,M0)=>{"use strict";var iNe=Wr(),__=ee(),{validateBySchema:P0}=it(),kc=require("joi"),Q5=mo(),aE=oe(),{handleHDBError:cE,hdb_errors:j5,ClientError:D0}=me(),{HDB_ERROR_MSGS:lE,HTTP_STATUS_CODES:$y}=j5,L0=ce();L0.initSync();var{getDatabases:Vy}=(xe(),P(at)),J5=require("fs-extra"),X5=(k(),P(q));M0.exports={describeAll:Z5,describeTable:uE,describeSchema:e9};async function Z5(e={}){try{let t=aE.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=Vy(),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 uE({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 uE({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){__.error(m)}}let f={};for(let d in l)t||s||r?(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]):c[l[d].schema]&&(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]);for(let d in o)t||s||r?f[d]={}:c[d]&&(f[d]={});return f}catch(t){return __.error("Got an error in describeAll"),__.error(t),cE(new Error,lE.DESCRIBE_ALL_ERR)}}a(Z5,"describeAll");async function uE(e,t){aE.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=P0(e,kc.object({database:kc.string(),table:kc.string().required(),exact_count:kc.boolean().strict()}));if(i)throw new D0(i.message);let c=Vy()[r];if(!c)throw cE(new Error,lE.SCHEMA_NOT_FOUND(e.schema),$y.NOT_FOUND);let l=c[n];if(!l)throw cE(new Error,lE.TABLE_NOT_FOUND(e.schema,e.table),$y.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 J5.stat(l.primaryStore.env.path)).size}catch(h){__.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")),L0.get(X5.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=Q5.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){__.warn(`unable to stat table dbi due to ${h}`)}return _}a(uE,"descTable");async function e9(e){aE.transformReq(e);let t=P0(e,kc.object({database:kc.string(),exact_count:kc.boolean().strict()}));if(t)throw new D0(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=Vy()[n];if(!i)throw cE(new Error,lE.SCHEMA_NOT_FOUND(e.schema),$y.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),aE.isEmpty(l)||l.describe){let u=await uE({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(e9,"describeSchema")});var Ys=C((uNe,H0)=>{var t9=ao(),{callbackify:U0,promisify:r9}=require("util"),{getDatabases:x0}=(xe(),P(at));H0.exports={setSchemaDataToGlobal:v0,getTableSchema:n9,getSystemSchema:s9,setSchemaDataToGlobalAsync:r9(v0)};var B0=po(),cNe=U0(B0.describeAll),lNe=U0(B0.describeTable);function v0(e){global.hdb_schema=x0(),e&&e()}a(v0,"setSchemaDataToGlobal");function n9(e,t,r){let n=x0()[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(n9,"getTableSchema");function s9(){return t9}a(s9,"getSystemSchema")});var Rn=C((fNe,q0)=>{"use strict";var fE=WR(),xr=oe(),i9=require("util"),_E=$n(),o9=Ys(),k0=ee(),{handleHDBError:Fc,hdb_errors:a9}=me(),{HTTP_STATUS_CODES:Gc}=a9,c9=i9.promisify(o9.getTableSchema),l9="updated",F0="inserted",G0="upserted";q0.exports={insert:d9,update:f9,upsert:_9,validation:u9,flush:h9};async function u9(e){if(xr.isEmpty(e))throw new Error("invalid update parameters defined.");if(xr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(xr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await c9(e.schema,e.table),r=fE(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let n=t.hash_attribute,s=new Set,i={},o=!1;return e.operation==="update"&&(o=!0),e.records.forEach(c=>{if(o&&xr.isEmptyOrZeroLength(c[n]))throw k0.error("a valid hash attribute must be provided with update record:",c),new Error("a valid hash attribute must be provided with update record");if(!xr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw k0.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!xr.isEmpty(c[n])&&c[n]!==""&&s.has(xr.autoCast(c[n]))&&(c.skip=!0),s.add(xr.autoCast(c[n]));for(let l in c)i[l]=1}),i[n]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(i)}}a(u9,"validation");async function d9(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=fE(e);if(t)throw Fc(new Error,t.message,Gc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Fc(new Error,r,Gc.BAD_REQUEST);let n=await _E.createRecords(e);return dE(F0,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(d9,"insertData");async function f9(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=fE(e);if(t)throw Fc(new Error,t.message,Gc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Fc(new Error,r,Gc.BAD_REQUEST);let n=await _E.updateRecords(e);return xr.isEmpty(n.existing_rows)?dE(l9,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):dE(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(f9,"updateData");async function _9(e){if(e.operation!=="upsert")throw Fc(new Error,"invalid operation, must be upsert",Gc.INTERNAL_SERVER_ERROR);let t=fE(e);if(t)throw Fc(new Error,t.message,Gc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Fc(new Error,r,Gc.BAD_REQUEST);let n=await _E.upsertRecords(e);return dE(G0,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(_9,"upsertData");function dE(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===F0?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===G0?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(dE,"returnObject");function h9(e){return xr.transformReq(e),_E.flush(e.schema,e.table)}a(h9,"flush")});var Yy=C((hNe,K0)=>{var m9=it(),Ky=require("joi"),{hdb_table:p9,hdb_database:$0}=bi(),V0={schema:$0,database:$0,table:p9},E9={date:Ky.date().iso().required()},g9={timestamp:Ky.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};K0.exports=function(e,t){let r=t==="timestamp"?{...V0,...g9}:{...V0,...E9},n=Ky.object(r);return m9.validateBySchema(e,n)}});var z0=C((mNe,W0)=>{var S9=it(),Wy=require("joi"),{hdb_table:T9,hdb_database:Y0}=bi(),A9=Wy.object({schema:Y0,database:Y0,table:T9,hash_values:Wy.array().required(),ids:Wy.array()});W0.exports=function(e){return S9.validateBySchema(e,A9)}});var Jy=C((pNe,Q0)=>{"use strict";var zy=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}},Qy=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}},jy=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};Q0.exports={InsertObject:zy,NoSQLSeachObject:Qy,DeleteResponseObject:jy}});var Vc=C((gNe,ex)=>{"use strict";var J0=Yy(),R9=z0(),qc=oe(),j0=require("moment"),X0=ee(),{promisify:y9,callbackify:b9}=require("util"),$c=(k(),P(q)),O9=Ys(),Xy=y9(O9.getTableSchema),Zy=$n(),{DeleteResponseObject:N9}=Jy(),{handleHDBError:_a,hdb_errors:w9}=me(),{HDB_ERROR_MSGS:hE,HTTP_STATUS_CODES:ha}=w9,I9="records successfully deleted",C9=b9(Z0);ex.exports={delete:C9,deleteRecord:Z0,deleteFilesBefore:P9,deleteAuditLogsBefore:D9};async function P9(e){let t=J0(e,"date");if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);if(qc.transformReq(e),!j0(e.date,j0.ISO_8601).isValid())throw _a(new Error,hE.INVALID_DATE,ha.BAD_REQUEST,$c.LOG_LEVELS.ERROR,hE.INVALID_DATE,!0);let n=qc.checkSchemaTableExist(e.schema,e.table);if(n)throw _a(new Error,n,ha.NOT_FOUND,$c.LOG_LEVELS.ERROR,n,!0);let s=await Zy.deleteRecordsBefore(e);if(await Xy(e.schema,e.table),X0.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(P9,"deleteFilesBefore");async function D9(e){let t=J0(e,"timestamp");if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);if(qc.transformReq(e),isNaN(e.timestamp))throw _a(new Error,hE.INVALID_VALUE("Timestamp"),ha.BAD_REQUEST,$c.LOG_LEVELS.ERROR,hE.INVALID_VALUE("Timestamp"),!0);let r=qc.checkSchemaTableExist(e.schema,e.table);if(r)throw _a(new Error,r,ha.NOT_FOUND,$c.LOG_LEVELS.ERROR,r,!0);let n=await Zy.deleteAuditLogsBefore(e);return await Xy(e.schema,e.table),X0.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(D9,"deleteAuditLogsBefore");async function Z0(e){e.ids&&(e.hash_values=e.ids);let t=R9(e);if(t)throw _a(t,t.message,ha.BAD_REQUEST,void 0,void 0,!0);qc.transformReq(e);let r=qc.checkSchemaTableExist(e.schema,e.table);if(r)throw _a(new Error,r,ha.NOT_FOUND,$c.LOG_LEVELS.ERROR,r,!0);try{await Xy(e.schema,e.table);let n=await Zy.deleteRecords(e);return qc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${I9}`),n}catch(n){if(n.message===$c.SEARCH_NOT_FOUND_MESSAGE){let s=new N9;return s.message=$c.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(Z0,"deleteRecord")});var mE={};Ue(mE,{HASH_FUNCTION:()=>p_,hash:()=>rb,validate:()=>nb});function eb(e=m_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(h_.randomBytes(e)).map(r=>t[r%t.length]).join("")}function rb(e,t=p_[rx?.toUpperCase()]??"sha256"){return tb[t](e)}function nb(e,t,r=p_[rx?.toUpperCase()]??"sha256"){return e?L9[r](e,t):!1}var h_,Su,tx,rx,m_,nx,p_,tb,L9,pE=Re(()=>{h_=M(require("node:crypto")),Su=M(require("argon2")),tx=M(ce());k();rx=(0,tx.get)(B.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),m_=16,nx=9,p_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(p_||{});a(eb,"generateSalt");tb={md5:a((e,t=void 0)=>{t=t??eb(nx);let r=h_.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??eb(m_);let r=h_.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=eb(m_),r=await Su.hash(e,{type:Su.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},L9={md5:a((e,t)=>{let r=e.slice(0,nx);return e===tb.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,m_);return e===tb.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await Su.verify(e.slice(m_),t),"argon2id")};a(rb,"hash");a(nb,"validate")});var ix=C((RNe,sx)=>{var sb=it(),zr={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 M9(e){return zr.password.presence=!0,zr.username.presence=!0,zr.role.presence=!0,zr.active.presence=!0,sb.validateObject(e,zr)}a(M9,"addUserValidation");function v9(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,sb.validateObject(e,zr)}a(v9,"alterUserValidation");function U9(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,sb.validateObject(e,zr)}a(U9,"dropUserValidation");sx.exports={addUserValidation:M9,alterUserValidation:v9,dropUserValidation:U9}});var It=C((ONe,ax)=>{"use strict";var{platform:bNe}=require("os"),x9="nats-server.zip",ib="nats-server",B9=process.platform==="win32"?`${ib}.exe`:ib,H9=/^[^\s.,*>]+$/,ox="__request__",k9=a(e=>`${e}.${ox}`,"REQUEST_SUBJECT"),F9={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},G9={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},q9={HUB:"hub.pid",LEAF:"leaf.pid"},$9={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},V9={SUCCESS:"success",ERROR:"error"},K9={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},Y9={TXN:"txn",MSGID:"msgid"},Tu={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},W9={[Tu.ERR]:1,[Tu.WRN]:2,[Tu.INF]:3,[Tu.DBG]:4,[Tu.TRC]:5},z9={debug:"-D",trace:"-DVV"};ax.exports={NATS_SERVER_ZIP:x9,NATS_SERVER_NAME:ib,NATS_BINARY_NAME:B9,PID_FILES:q9,NATS_CONFIG_FILES:G9,SERVER_SUFFIX:$9,NATS_TERM_CONSTRAINTS_RX:H9,REQUEST_SUFFIX:ox,UPDATE_REMOTE_RESPONSE_STATUSES:V9,CLUSTER_STATUS_STATUSES:K9,REQUEST_SUBJECT:k9,SUBJECT_PREFIXES:Y9,MSG_HEADERS:F9,LOG_LEVELS:Tu,LOG_LEVEL_FLAGS:z9,LOG_LEVEL_HIERARCHY:W9}});var ob=C(cx=>{"use strict";var Q9={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
|
`)},j9="certificate.pem",J9="privateKey.pem",X9="caCertificate.pem",Z9="natsCertificate.pem",e7="natsCaCertificate.pem",Rt={DEFAULT:"default","DEFAULT-CA":"default-ca",SERVER:"server",CA:"ca","OPERATIONS-API":"operations-api","OPERATIONS-CA":"operations-ca"},t7={tls_certificate:Rt.SERVER,tls_certificateAuthority:Rt.CA,customFunctions_tls_certificate:Rt.SERVER,customFunctions_tls_certificateAuthority:Rt.CA,operationsApi_tls_certificate:Rt["OPERATIONS-API"],operationsApi_tls_certificateAuthority:Rt["OPERATIONS-CA"]},r7={[Rt.SERVER]:2,[Rt.DEFAULT]:1},n7={[Rt["OPERATIONS-API"]]:3,[Rt.SERVER]:2,[Rt.DEFAULT]:1},s7={[Rt["OPERATIONS-API"]]:3,[Rt.SERVER]:2,[Rt.DEFAULT]:1},i7={[Rt["OPERATIONS-CA"]]:3,[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1},o7={[Rt["OPERATIONS-CA"]]:3,[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1},a7={[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1};Object.assign(cx,{CERTIFICATE_PEM_NAME:j9,PRIVATEKEY_PEM_NAME:J9,CA_PEM_NAME:X9,CERT_NAME:Rt,CERT_CONFIG_NAME_MAP:t7,CERT_PREFERENCE_APP:r7,CERT_PREFERENCE_OPS:n7,CERT_PREFERENCE_REP:s7,CA_CERT_PREFERENCE_REP:i7,CA_CERT_PREFERENCE_OPS:o7,CA_CERT_PREFERENCE_APP:a7,CERTIFICATE_VALUES:Q9,NATS_CERTIFICATE_PEM_NAME:Z9,NATS_CA_PEM_NAME:e7})});var cb=C((CNe,hx)=>{"use strict";var fx=require("fs-extra"),Ee=require("joi"),c7=require("os"),{boolean:$e,string:_t,number:tr,array:ma}=Ee.types(),{totalmem:lx}=require("os"),Kc=require("path"),l7=ee(),ab=oe(),INe=ob(),ux=(k(),P(q)),u7=it(),dx="log",d7="components",f7="Invalid logging.rotation.maxSize unit. Available units are G, M or K",_7="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",h7="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",m7="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",p7="rootPath config parameter is undefined",yn=Ee.alternatives([tr.min(0),_t]).optional().empty(null),EE=Ee.alternatives([ma.items(_t,{host:_t.required(),port:yn},{hostname:_t.required(),port:yn}).empty(null),ma.items(_t)]),Ii,_x=!1;hx.exports={configValidator:E7,routesValidator:y7,route_constraints:EE};function E7(e,t=!1){if(_x=t,Ii=e.rootPath,ab.isEmpty(Ii))throw p7;let r=$e.optional(),n=tr.min(0).max(1e3).empty(null).default(R7),s=_t.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(E_),i=_t.optional().empty(null),o=_t.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),c=Ee.string().empty(null).default(E_),l=Ee.custom(S7).empty(null).default(E_),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:yn,routes:EE}).required()}).required(),leafNodes:Ee.object({network:Ee.object({port:yn}).required()}).required(),network:Ee.object({port:yn}).required()}).required(),leafServer:Ee.object({network:Ee.object({port:yn,routes:EE}).required(),streams:Ee.object({maxAge:tr.min(120).allow(null).optional(),maxBytes:tr.min(1).allow(null).optional(),maxMsgs:tr.min(1).allow(null).optional(),path:c}).required()}).required(),logLevel:Ee.valid("error","warn","info","debug","trace"),nodeName:o,republishMessages:$e.optional(),databaseLevel:$e.optional(),tls:Ee.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:$e.required(),verify:$e.optional()}),user:_t.optional().empty(null)}).optional():d=Ee.object({enabled:r,tls:Ee.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:$e.optional()})}).optional(),Ee.object({authentication:Ee.alternatives(Ee.object({authorizeLocal:$e,cacheTTL:tr.required(),cookie:Ee.object({domains:ma.items(_t).optional(),expires:_t.optional()}),enableSessions:$e,hashFunction:_t.valid("md5","sha256","argon2id").optional().empty(null)}),$e).optional(),analytics:Ee.object({aggregatePeriod:tr}),replication:Ee.object({hostname:Ee.alternatives(_t,tr).optional().empty(null),url:_t.optional().empty(null),port:yn,securePort:yn,routes:ma.optional().empty(null),databases:Ee.alternatives(_t,ma),enableRootCAs:$e.optional(),copyTablesToCatchUp:$e.optional()}).optional(),componentsRoot:s.optional(),clustering:d,localStudio:Ee.object({enabled:r}).required(),logging:Ee.object({auditAuthEvents:Ee.object({logFailed:$e,logSuccessful:$e}),file:$e.required(),level:Ee.valid("notify","fatal","error","warn","info","debug","trace"),rotation:Ee.object({enabled:$e.optional(),compress:$e.optional(),interval:_t.custom(A7).optional().empty(null),maxSize:_t.custom(T7).optional().empty(null),path:_t.optional().empty(null).default(E_)}).required(),root:s,stdStreams:$e.required(),auditLog:$e.required()}).required(),operationsApi:Ee.object({network:Ee.object({cors:$e.optional(),corsAccessList:ma.optional(),headersTimeout:tr.min(1).optional(),keepAliveTimeout:tr.min(1).optional(),port:yn,domainSocket:Ee.optional().empty("hdb/operations-server").default(E_),securePort:yn,timeout:tr.min(1).optional()}).optional(),tls:Ee.alternatives([Ee.array().items(f),f])}).required(),rootPath:_t.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").required(),mqtt:Ee.object({network:Ee.object({port:yn,securePort:yn,mtls:Ee.alternatives([$e.optional(),Ee.object({user:_t.optional(),certificateAuthority:i,required:$e.optional()})])}).required(),webSocket:$e.optional(),requireAuthentication:$e.optional()}),http:Ee.object({compressionThreshold:tr.optional(),cors:$e.optional(),corsAccessList:ma.optional(),headersTimeout:tr.min(1).optional(),port:yn,securePort:yn,maxHeaderSize:tr.optional(),mtls:Ee.alternatives([$e.optional(),Ee.object({user:_t.optional(),certificateAuthority:i,required:$e.optional()})]),threadRange:Ee.alternatives([ma.optional(),_t.optional()])}).required(),threads:Ee.alternatives(n.optional(),Ee.object({count:n.optional(),debug:Ee.alternatives($e.optional(),Ee.object({startingPort:tr.min(1).optional(),host:_t.optional(),waitForDebugger:$e.optional()})),maxHeapMemory:tr.min(0).optional()})),storage:Ee.object({writeAsync:$e.required(),overlappingSync:$e.optional(),caching:$e.optional(),compression:Ee.alternatives([$e.optional(),Ee.object({dictionary:_t.optional(),threshold:tr.optional()})]),compactOnStart:$e.optional(),compactOnStartKeepBackup:$e.optional(),noReadAhead:$e.optional(),path:l,prefetchWrites:$e.optional(),maxFreeSpaceToLoad:tr.optional(),maxFreeSpaceToRetain:tr.optional()}).required(),ignoreScripts:$e.optional(),tls:Ee.alternatives([Ee.array().items(f),f])}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}a(E7,"configValidator");function g7(e){return _x||fx.existsSync(e)?null:`Specified path ${e} does not exist.`}a(g7,"doesPathExist");function S7(e,t){Ee.assert(e,_t.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=g7(e);if(r)return t.message(r)}a(S7,"validatePath");function T7(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(f7);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(h7):e}a(T7,"validateRotationMaxSize");function A7(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(_7);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(m7):e}a(A7,"validateRotationInterval");function R7(e,t){let r=t.state.path.join("."),n=c7.cpus().length,s=n-1;s<=2&&(s=2);let i=process.constrainedMemory?.()||lx();return i=Math.round(Math.min(i,lx())/1e6),s=Math.max(Math.min(s,Math.round((i-750)/300)),1),l7.info(`Detected ${n} cores and ${i}MB on this machine, defaulting ${r} to ${s}`),s}a(R7,"setDefaultThreads");function E_(e,t){let r=t.state.path.join(".");if(!ab.isEmpty(t.original)&&r!=="operationsApi.network.domainSocket")return t.original;if(ab.isEmpty(Ii))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"componentsRoot":return Kc.join(Ii,d7);case"logging.root":return Kc.join(Ii,dx);case"clustering.leafServer.streams.path":return Kc.join(Ii,"clustering","leaf");case"storage.path":let n=Kc.join(Ii,ux.LEGACY_DATABASES_DIR_NAME);return fx.existsSync(n)?n:Kc.join(Ii,ux.DATABASES_DIR_NAME);case"logging.rotation.path":return Kc.join(Ii,dx);case"operationsApi.network.domainSocket":return r==null?null:Kc.join(Ii,"operations-server");default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(E_,"setDefaultRoot");function y7(e){let t=Ee.object({routes:EE});return u7.validateBySchema({routes:e},t)}a(y7,"routesValidator")});var Pt=C(Ox=>{"use strict";var ps=(k(),P(q)),pr=oe(),rr=ee(),{configValidator:b7,routesValidator:mx}=cb(),Qr=require("fs-extra"),Ex=require("yaml"),Yn=require("path"),O7=require("is-number"),gx=require("properties-reader"),N7=require("lodash"),{handleHDBError:w7}=me(),{HTTP_STATUS_CODES:I7,HDB_ERROR_MSGS:Au}=Un(),{server:C7}=(Lr(),P(Vl)),{PACKAGE_ROOT:Sx}=pt(),{DATABASES_PARAM_CONFIG:g_,CONFIG_PARAMS:Kn,CONFIG_PARAM_MAP:Ws}=ps,P7="Unable to get config value because config is uninitialized",D7="Config successfully initialized",L7="Error backing up config file",M7="Empty parameter sent to getConfigValue",Tx=Yn.join(Sx,"config","yaml",ps.HDB_DEFAULT_CONFIG_FILE),v7=Yn.join(Sx,"config","yaml","defaultNatsConfig.yaml"),U7="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",px={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"},gE,Ct,SE;Object.assign(Ox,{createConfigFile:x7,getDefaultConfig:B7,getConfigValue:Rx,initConfig:TE,flattenConfig:Ru,updateConfigValue:yx,updateConfigObject:k7,getConfiguration:q7,setConfiguration:$7,readConfigFile:fb,getClusteringRoutes:V7,initOldConfig:bx,getConfigFromFile:K7,getConfigFilePath:Yc,addConfig:Y7,deleteConfigFromFile:W7,getConfigObj:z7,resolvePath:lb,getFlatConfigObj:Q7});function lb(e){if(e?.startsWith("~/"))return Yn.join(pr.getHomeDir(),e.slice(1));let t=ce();try{return Yn.resolve(t.getHdbBasePath(),e)}catch(r){return console.error("Unable to resolve path",e,r),e}}a(lb,"resolvePath");function x7(e,t=!1){let r=pa(Tx);if(e.clustering_enabled||e.CLUSTERING_ENABLED||e.clustering){let c=Ex.parseDocument(Qr.readFileSync(v7,"utf8"),{simpleKeys:!0});r.addIn(["clustering"],c.toJSON().clustering)}gE=Ru(r.toJSON());let n;for(let c in e){let l=Ws[c.toLowerCase()];if(l===Kn.DATABASES){Array.isArray(e[c])?n=e[c]:n=Object.keys(e[c]).map(u=>({[u]:e[c][u]}));continue}if(!l&&(c.endsWith("_package")||c.endsWith("_port"))&&(l=c),l!==void 0){let u=l.split("_"),f=ub(l,e[c]);l==="rootPath"&&f?.endsWith("/")&&(f=f.slice(0,-1));try{r.setIn([...u],f)}catch(d){rr.error(d)}}}n&&Ax(r,n),db(r,t);let s=r.toJSON();Ct=Ru(s);let i=r.getIn(["rootPath"]),o=Yn.join(i,ps.HDB_CONFIG_FILE);if(Qr.createFileSync(o),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);Qr.writeFileSync(o,String(r)),rr.trace(`Config file written to ${o}`)}a(x7,"createConfigFile");function Ax(e,t){let r;try{try{r=JSON.parse(t)}catch(n){if(!pr.isObject(t))throw n;r=t}for(let n of r){let s=Object.keys(n)[0];if(n[s].hasOwnProperty(g_.TABLES))for(let i in n[s][g_.TABLES])for(let o in n[s][g_.TABLES][i]){let c=n[s][g_.TABLES][i][o],l=[Kn.DATABASES,s,g_.TABLES,i,o];e.hasIn(l)?e.setIn(l,c):e.addIn(l,c)}else for(let i in n[s]){let o=n[s][i],c=[Kn.DATABASES,s,i];e.hasIn(c)?e.setIn(c,o):e.addIn(c,o)}}}catch(n){rr.error("Error parsing schemas CLI/env config arguments",n)}}a(Ax,"setSchemasConfig");function B7(e){if(gE===void 0){let r=pa(Tx);gE=Ru(r.toJSON())}let t=Ws[e.toLowerCase()];if(t!==void 0)return gE[t.toLowerCase()]}a(B7,"getDefaultConfig");function Rx(e){if(e==null){rr.info(M7);return}if(Ct===void 0){rr.trace(P7);return}let t=Ws[e.toLowerCase()];if(t!==void 0)return Ct[t.toLowerCase()]}a(Rx,"getConfigValue");function Yc(e=pr.getPropsFilePath()){let t=pr.getEnvCliRootPath();if(t)return lb(Yn.join(t,ps.HDB_CONFIG_FILE));let r=gx(e);return lb(r.get(ps.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY))}a(Yc,"getConfigFilePath");function TE(e=!1){if(Ct===void 0||e){let t;if(!pr.noBootFile()){t=pr.getPropsFilePath();try{Qr.accessSync(t,Qr.constants.F_OK|Qr.constants.R_OK)}catch(i){throw rr.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}}let r=Yc(t),n;if(r.includes("config/settings.js"))try{bx(r);return}catch(i){if(i.code!==ps.NODE_ERROR_CODES.ENOENT)throw i}try{n=pa(r)}catch(i){if(i.code===ps.NODE_ERROR_CODES.ENOENT){rr.trace(`HarperDB config file not found at ${r}.
|
|
19
19
|
This can occur during early stages of install where the config file has not yet been created`);return}else throw rr.error(i),new Error(`Error reading HarperDB config file at ${r}`)}H7(n,r),db(n);let s=n.toJSON();if(C7.config=s,Ct=Ru(s),Ct.logging_rotation_rotate)for(let i in px)Ct[i]&&rr.error(`Config ${px[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);rr.trace(D7)}}a(TE,"initConfig");function H7(e,t){let r=e.getIn(["rootPath"]),n=!1;if(e.hasIn(["storage","path"])||(e.setIn(["storage","path"],Yn.join(r,"database")),n=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],Yn.join(r,"log")),n=!0),e.hasIn(["authentication"])||(e.addIn(["authentication"],{cacheTTL:3e4,enableSessions:!0,operationTokenTimeout:e.getIn(["operationsApi","authentication","operationTokenTimeout"])??"1d",refreshTokenTimeout:e.getIn(["operationsApi","authentication","refreshTokenTimeout"])??"30d"}),n=!0),e.hasIn(["analytics"])||(e.addIn(["analytics"],{aggregatePeriod:60}),n=!0),n){if(rr.trace("Updating config file with missing config params"),e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${e.errors}`);Qr.writeFileSync(t,String(e))}}a(H7,"checkForUpdatedConfig");function db(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 Au.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 Au.CONFIG_VALIDATION("operationsApi.network.port and operationsApi.network.securePort cannot be the same value");let n=b7(r,t);if(n.error)throw Au.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(db,"validateConfig");function k7(e,t){Ct===void 0&&(Ct={});let r=Ws[e.toLowerCase()];if(r===void 0){rr.trace(`Unable to update config object because config param '${e}' does not exist`);return}Ct[r.toLowerCase()]=t}a(k7,"updateConfigObject");function yx(e,t,r=void 0,n=!1,s=!1,i=!1){Ct===void 0&&TE();let o=Rx(Ws.hdb_root),c=Yn.join(o,ps.HDB_CONFIG_FILE),l=pa(c),u;if(r&&Ct){let _=!1;for(let h in r)if(r[h]!=Ct[h.toLowerCase()]){_=!0;break}if(!_){rr.trace("No changes detected in config parameters, skipping update");return}}if(r===void 0&&e.toLowerCase()===Kn.DATABASES)u=t;else if(r===void 0){let _;if(i)_=e;else if(_=Ws[e.toLowerCase()],_===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let h=_.split("_"),m=ub(_,t);l.setIn([...h],m)}else for(let _ in r){let h=Ws[_.toLowerCase()];if(h===Kn.HTTP_SECUREPORT&&r[_]===Ct[Kn.HTTP_PORT]?.toString()&&l.setIn(["http","port"],null),h===Kn.OPERATIONSAPI_NETWORK_SECUREPORT&&r[_]===Ct[Kn.OPERATIONSAPI_NETWORK_PORT.toLowerCase()]?.toString()&&l.setIn(["operationsApi","network","port"],null),h===Kn.DATABASES){u=r[_];continue}if(h?.startsWith("threads_")){let m=l.getIn(["threads"]);m>=0&&(l.deleteIn(["threads"]),l.setIn(["threads","count"],m))}if(!h&&(_.endsWith("_package")||_.endsWith("_port"))&&(h=_),h!==void 0){let m=h.split("_"),S=ps.LEGACY_CONFIG_PARAMS[_.toUpperCase()];S&&S.startsWith("customFunctions")&&l.hasIn(S.split("_"))&&(h=S,m=S.split("_"));let g=ub(h,r[_]);h==="rootPath"&&g?.endsWith("/")&&(g=g.slice(0,-1));try{m.length>1&&typeof l.getIn(m.slice(0,-1))=="boolean"&&l.deleteIn(m.slice(0,-1)),l.setIn([...m],g)}catch(R){rr.error(R)}}}u&&Ax(l,u),db(l);let f=l.getIn(["rootPath"]),d=Yn.join(f,ps.HDB_CONFIG_FILE);if(n===!0&&F7(c,f),l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${l.errors}`);Qr.writeFileSync(d,String(l)),s&&(Ct=Ru(l.toJSON())),rr.trace(`Config parameter: ${e} updated with value: ${t}`)}a(yx,"updateConfigValue");function F7(e,t){try{let r=Yn.join(t,"backup",`${new Date(Date.now()).toISOString().replaceAll(":","-")}-${ps.HDB_CONFIG_FILE}.bak`);Qr.copySync(e,r),rr.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){rr.error(L7),rr.error(r)}}a(F7,"backupConfigFile");var G7=["databases"];function Ru(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}),SE=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])&&!G7.includes(i)){let o=r(n[i]);for(let c in o){if(!o.hasOwnProperty(c))continue;c!=="package"&&(i=i.toLowerCase());let l=i+"_"+c;!Kn[l.toUpperCase()]&&Ws[l]&&(s[Ws[l].toLowerCase()]=o[c]),s[l]=o[c]}}n[i]!==void 0&&(s[i.toLowerCase()]=n[i])}return s}a(r,"squashObj")}a(Ru,"flattenConfig");function ub(e,t){if(e===Kn.CLUSTERING_NODENAME||e===Kn.CLUSTERING_USER){if(t==null)return t;if(!isNaN(t))return t.toString();if(typeof t=="string"&&t.toLowerCase()==="true"||typeof t=="string"&&t.toLowerCase()==="false")return t}else{if(O7(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||pr.isObject(t)||t===null)return t;if(typeof t=="string"&&t.toLowerCase()==="true")return!0;if(typeof t=="string"&&t.toLowerCase()==="false")return!1}if(t===void 0||t.toLowerCase()==="undefined")return null;if(typeof t=="string"&&(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")))try{return JSON.parse(t)}catch{}return pr.autoCast(t)}a(ub,"castConfigValue");function q7(){let e=pr.getPropsFilePath(),t=Yc(e);return pa(t).toJSON()}a(q7,"getConfiguration");async function $7(e){let{operation:t,hdb_user:r,hdb_auth_header:n,...s}=e;try{return yx(void 0,void 0,s,!0),U7}catch(i){throw typeof i=="string"||i instanceof String?w7(i,i,I7.BAD_REQUEST,void 0,void 0,!0):i}}a($7,"setConfiguration");function fb(){let e=pr.getPropsFilePath();try{Qr.accessSync(e,Qr.constants.F_OK|Qr.constants.R_OK)}catch(n){if(!pr.noBootFile())throw rr.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=Yc(e);return pa(t).toJSON()}a(fb,"readConfigFile");function pa(e){return Ex.parseDocument(Qr.readFileSync(e,"utf8"),{simpleKeys:!0})}a(pa,"parseYamlDoc");function V7(){let e=fb(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=pr.isEmptyOrZeroLength(t)?[]:t;let r=mx(t);if(r)throw Au.CONFIG_VALIDATION(r.message);let n=e?.clustering?.leafServer?.network?.routes;n=pr.isEmptyOrZeroLength(n)?[]:n;let s=mx(n);if(s)throw Au.CONFIG_VALIDATION(s.message);if(!pr.isEmptyOrZeroLength(n)&&!pr.isEmptyOrZeroLength(t)){let i=t.filter(o=>n.some(c=>c.host===o.host&&c.port===o.port));if(!pr.isEmptyOrZeroLength(i)){let o=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw Au.CONFIG_VALIDATION(o)}}return{hub_routes:t,leaf_routes:n}}a(V7,"getClusteringRoutes");function bx(e){let t=gx(e);Ct={};for(let r in Ws){let n=t.get(r.toUpperCase());if(pr.isEmpty(n)||typeof n=="string"&&n.trim().length===0)continue;let s=Ws[r].toLowerCase();s===Kn.LOGGING_ROOT?Ct[s]=Yn.dirname(n):Ct[s]=n}return Ct}a(bx,"initOldConfig");function K7(e){let t=fb();return N7.get(t,e.replaceAll("_","."))}a(K7,"getConfigFromFile");async function Y7(e,t){let r=pa(Yc());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 Qr.writeFile(Yc(),String(r))}a(Y7,"addConfig");function W7(e){let t=Yc(pr.getPropsFilePath()),r=pa(t);r.deleteIn(e);let n=r.getIn(["rootPath"]),s=Yn.join(n,ps.HDB_CONFIG_FILE);Qr.writeFileSync(s,String(r))}a(W7,"deleteConfigFromFile");function z7(){return SE||(TE(),SE)}a(z7,"getConfigObj");function Q7(){return Ct||TE(),Ct}a(Q7,"getFlatConfigObj")});var Wn=C((MNe,Or)=>{"use strict";var Ix="username is required",Cx="nothing to update, must supply active, role or password to update",Px="password cannot be an empty string",Dx="If role is specified, it cannot be empty.",Lx="active must be true or false";Or.exports.addUser=see;Or.exports.alterUser=iee;Or.exports.dropUser=aee;Or.exports.getSuperUser=fee;Or.exports.userInfo=cee;Or.exports.listUsers=RE;Or.exports.listUsersExternal=lee;Or.exports.setUsersWithRolesCache=Wc;Or.exports.findAndValidateUser=Ab;Or.exports.getClusterUser=_ee;Or.exports.getUsersWithRolesCache=dee;Or.exports.USERNAME_REQUIRED=Ix;Or.exports.ALTERUSER_NOTHING_TO_UPDATE=Cx;Or.exports.EMPTY_PASSWORD=Px;Or.exports.EMPTY_ROLE=Dx;Or.exports.ACTIVE_BOOLEAN=Lx;var Mx=Rn(),j7=Vc(),S_=(pE(),P(mE)),vx=ix(),T_=Wr(),Eb=uo(),Ci=oe(),Ux=require("validate.js"),gb=ee(),{promisify:J7}=require("util"),Sb=mo(),hb=(k(),P(q)),Nx=It(),X7=Pt(),Z7=ce(),eee=ao(),{hdb_errors:tee,ClientError:zs}=me(),{HTTP_STATUS_CODES:Eo,AUTHENTICATION_ERROR_MSGS:_b,HDB_ERROR_MSGS:yu}=tee,{UserEventMsg:Tb}=qs(),mb=require("lodash"),{server:AE}=(Lr(),P(Vl)),ree=ee();AE.getUser=(e,t)=>Ab(e,t,t!=null);AE.authenticateUser=(e,t)=>Ab(e,t);var xx={username:!0,active:!0,role:!0,password:!0},wx=new Map,nee=J7(j7.delete),pb=Z7.get(hb.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??S_.HASH_FUNCTION.SHA256,Pi;async function see(e){let t=Ux.cleanAttributes(e,xx),r=vx.addUserValidation(t);if(r)throw new zs(r.message);let n=await T_.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["id","permission","role"]});if(!n||n.length<1)throw new zs(yu.ROLE_NAME_NOT_FOUND(t.role),Eo.NOT_FOUND);if(n.length>1)throw new zs(yu.DUP_ROLES_FOUND(t.role),Eo.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=Sb.encrypt(t.password)),t.password=await S_.hash(t.password,pb),t.hash_function=pb,t.role=n[0].id;let s=await Mx.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(gb.debug(s),await Wc(),s.skipped_hashes.length===1)throw new zs(yu.USER_ALREADY_EXISTS(t.username),Eo.CONFLICT);return Eb.signalUserChange(new Tb(process.pid)),`${t.username} successfully added`}a(see,"addUser");async function iee(e){let t=Ux.cleanAttributes(e,xx);if(Ci.isEmptyOrZeroLength(t.username))throw new Error(Ix);if(Ci.isEmptyOrZeroLength(t.password)&&Ci.isEmptyOrZeroLength(t.role)&&Ci.isEmptyOrZeroLength(t.active))throw new Error(Cx);if(!Ci.isEmpty(t.password)&&Ci.isEmptyOrZeroLength(t.password.trim()))throw new Error(Px);if(!Ci.isEmpty(t.active)&&!Ci.isBoolean(t.active))throw new Error(Lx);if(!Ci.isEmpty(t.password)&&!Ci.isEmptyOrZeroLength(t.password.trim())&&(oee(t.username)&&(t.hash=Sb.encrypt(t.password)),t.password=await S_.hash(t.password,pb)),t.role==="")throw new Error(Dx);if(t.role){let n=await T_.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new zs(yu.ALTER_USER_ROLE_NOT_FOUND(t.role),Eo.NOT_FOUND);if(n.length>1)throw new zs(yu.DUP_ROLES_FOUND(t.role),Eo.CONFLICT);t.role=n[0].id}let r=await Mx.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await Wc(),Eb.signalUserChange(new Tb(process.pid)),r}a(iee,"alterUser");function oee(e){let t=!1,r=Pi.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}a(oee,"isClusterUser");async function aee(e){let t=vx.dropUserValidation(e);if(t)throw new zs(t.message);if(Pi.get(e.username)===void 0)throw new zs(yu.USER_NOT_EXIST(e.username),Eo.NOT_FOUND);let r=await nee({table:"hdb_user",schema:"system",hash_values:[e.username]});return gb.debug(r),await Wc(),Eb.signalUserChange(new Tb(process.pid)),`${e.username} successfully deleted`}a(aee,"dropUser");async function cee(e){let t={};if(!e||!e.hdb_user)return"There was no user info in the body";t=mb.cloneDeep(e.hdb_user);let r=await T_.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(cee,"userInfo");async function lee(){let e=await RE();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}a(lee,"listUsersExternal");async function RE(){let e=await T_.searchByValue({schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=mb.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await T_.searchByValue({schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=mb.cloneDeep(s),s.role=t[s.role],uee(s.role),n.set(s.username,s);return n}a(RE,"listUsers");function uee(e){if(!e){gb.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(eee)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}a(uee,"appendSystemTablesToRole");async function Wc(e=void 0){e?Pi=e:Pi=await RE()}a(Wc,"setUsersWithRolesCache");async function dee(){return Pi||await Wc(),Pi}a(dee,"getUsersWithRolesCache");async function Ab(e,t,r=!0){Pi||await Wc();let n=Pi.get(e);if(!n){if(!r)return{username:e};throw new zs(_b.GENERIC_AUTH_FAIL,Eo.UNAUTHORIZED)}if(n&&!n.active)throw new zs(_b.USER_INACTIVE,Eo.UNAUTHORIZED);let s={active:n.active,username:n.username};if(n.refresh_token&&(s.refresh_token=n.refresh_token),n.role&&(s.role=n.role),r===!0){if(wx.get(t)===n.password)return s;{let i=S_.validate(n.password,t,n.hash_function||S_.HASH_FUNCTION.MD5);if(i?.then&&(i=await i),i===!0)wx.set(t,n.password);else throw new zs(_b.GENERIC_AUTH_FAIL,Eo.UNAUTHORIZED)}}return s}a(Ab,"findAndValidateUser");async function fee(){Pi||await Wc();for(let[,e]of Pi)if(e.role.role==="super_user")return e}a(fee,"getSuperUser");async function _ee(){let e=await RE(),t=X7.getConfigFromFile(hb.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!(r==null||r?.role?.role!==hb.ROLE_TYPES_ENUM.CLUSTER_USER))return r.decrypt_hash=Sb.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+Nx.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+Nx.SERVER_SUFFIX.ADMIN,r}a(_ee,"getClusterUser");var Bx=[];AE.invalidateUser=function(e){for(let t of Bx)try{t(e)}catch(r){ree.error("Error invalidating user",r)}};AE.onInvalidatedUser=function(e){Bx.push(e)}});var R_=C((BNe,Gx)=>{"use strict";var zc=ee(),zn=(k(),P(q)),hee=oM(),UNe=Ys(),xNe=po(),mee=Wn(),{validateEvent:Hx}=qs(),A_=$n(),pee=require("process"),{resetDatabases:Eee}=(xe(),P(at)),gee={[zn.ITC_EVENT_TYPES.SCHEMA]:See,[zn.ITC_EVENT_TYPES.USER]:Fx};async function See(e){let t=Hx(e);if(t){zc.error(t);return}zc.trace("ITC schemaHandler received schema event:",e),await hee(e.message),await Tee(e.message)}a(See,"schemaHandler");async function Tee(e){try{A_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),A_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),A_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=Eee();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){zc.error(t)}}a(Tee,"syncSchemaMetadata");var kx=[];async function Fx(e){try{try{A_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),A_.resetReadTxn(zn.SYSTEM_SCHEMA_NAME,zn.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){zc.warn(r)}let t=Hx(e);if(t){zc.error(t);return}zc.trace(`ITC userHandler ${zn.HDB_ITC_CLIENT_PREFIX}${pee.pid} received user event:`,e),await mee.setUsersWithRolesCache();for(let r of kx)r()}catch(t){zc.error(t)}}a(Fx,"userHandler");Fx.addListener=function(e){kx.push(e)};Gx.exports=gee});var qs=C(($Ne,$x)=>{"use strict";var kNe=ee(),Rb=oe(),Aee=(k(),P(q)),{ITC_ERRORS:y_}=Un(),{parentPort:FNe,threadId:Ree,isMainThread:yee,workerData:GNe}=require("worker_threads"),{onMessageFromWorkers:bee,broadcast:qNe,broadcastWithAcknowledgement:Oee}=st();$x.exports={sendItcEvent:Nee,validateEvent:qx,SchemaEventMsg:wee,UserEventMsg:Iee};var yE;bee(async(e,t)=>{yE=yE||R_(),qx(e),yE[e.type]&&await yE[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function Nee(e){return!yee&&e.message&&(e.message.originator=Ree),Oee(e)}a(Nee,"sendItcEvent");function qx(e){if(typeof e!="object")return y_.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||Rb.isEmpty(e.type))return y_.MISSING_TYPE;if(!e.hasOwnProperty("message")||Rb.isEmpty(e.message))return y_.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||Rb.isEmpty(e.message.originator))return y_.MISSING_ORIGIN;if(Aee.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return y_.INVALID_EVENT(e.type)}a(qx,"validateEvent");function wee(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(wee,"SchemaEventMsg");function Iee(e){this.originator=e}a(Iee,"UserEventMsg")});var uo=C((YNe,Wx)=>{"use strict";var Vx=(k(),P(q)),KNe=oe(),bE=ee(),Kx=qL(),bu,{sendItcEvent:Yx}=qs();function Cee(e){try{bE.info("signalSchemaChange called with message:",e),bu=bu||R_();let t=new Kx(Vx.ITC_EVENT_TYPES.SCHEMA,e);return bu.schema(t),Yx(t)}catch(t){bE.error(t)}}a(Cee,"signalSchemaChange");function Pee(e){try{bE.trace("signalUserChange called with message:",e),bu=bu||R_();let t=new Kx(Vx.ITC_EVENT_TYPES.USER,e);return bu.user(t),Yx(t)}catch(t){bE.error(t)}}a(Pee,"signalUserChange");Wx.exports={signalSchemaChange:Cee,signalUserChange:Pee}});var C_={};Ue(C_,{addAnalyticsListener:()=>I_,calculateCPUUtilization:()=>fB,diffResourceUsage:()=>_B,recordAction:()=>Dt,recordActionBinary:()=>Qn,setAnalyticsEnabled:()=>Dee});function Dee(e){aB=e}function Lee(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 Mee(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},NE.set(e,o)}function Dt(e,t,r,n,s){if(!aB)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=NE.get(i);o?Lee(e,o):Mee(i,e,t,r,n,s),OE||vee()}function Qn(e,t,r,n,s){Dt(!!e,t,r,n,s)}function I_(e){uB.push(e)}function vee(){OE=performance.now(),setTimeout(async()=>{let e=performance.now()-OE;OE=0;let t=[],r={time:Date.now(),period:e,threadId:Qc.threadId,metrics:t};for(let[s,i]of NE){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 dB){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 hB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:Qc.threadId,byThread:!0,...n});for(let s of uB)s(t);NE=new Map,Qc.parentPort?Qc.parentPort.postMessage({type:lB,report:r}):EB({report:r})},cB).unref()}function wE(e,t,r){let n={id:(0,N_.getNextMonotonicTime)(),metric:t,...r};e.primaryStore.put(n.id,n,{append:!0}).then(s=>{s||e.primaryStore.put(n.id,n)})}function fB(e,t){let r=e.userCPUTime+e.systemCPUTime;return Math.round(r/t*100)/100}function _B(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 Uee(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};wE(e,"table-size",l),jc.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),n+=c}return n}function zx(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=oB.default.statSync(s.primaryStore.env.path).size,c=Uee(e,r,n),l=o-c,u={database:r,size:o,used:c,free:l,audit:i};wE(e,"database-size",u),jc.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){jc.warn?.("Error getting DB size metrics",s)}}function Qx(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};wE(e,"storage-volume",o),jc.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){jc.warn?.("Error getting DB volume metrics",s)}}async function xee(e,t=6e4){let r=bb(),n=mB(),s=new Promise(E=>{let T=performance.now();setImmediate(()=>{let N=performance.now();N-T>5e3&&jc.warn?.("Unusually high event queue latency on the main thread of "+Math.round(N-T)+"ms"),T=performance.now()}),n.primaryStore.prefetch([1],()=>{let N=performance.now();N-T>5e3&&jc.warn?.("Unusually high task queue latency on the main thread of "+Math.round(N-T)+"ms"),E(N-T)})}),i;for(let E of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(E.value?.time){i=E.value.time;break}if(Date.now()-t<i)return;let o,c=new Map,l=new Map,u=[],f;for(let{key:E,value:T}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!T)continue;if(o){if(E>o+t)break}else o=E;f=E;let{metrics:N,threadId:v}=T;for(let H of N||[]){let{path:X,method:W,type:$,metric:ie,count:z,total:de,distribution:le,threads:Z,...Ae}=H;z||(z=1);let pe=ie+(X?"-"+X:"");W!==void 0&&(pe+="-"+W),$!==void 0&&(pe+="-"+$);let ye=c.get(pe);if(ye){if(ye.threads){let ut=ye.threads[v];if(ut)ye=ut;else{ye.threads[v]={...Ae};continue}}ye.count||(ye.count=1);let xt=ye.count;for(let ut in Ae){let Ln=Ae[ut];typeof Ln=="number"&&(ye[ut]=(ye[ut]*xt+Ln*z)/(xt+z))}ye.count+=z,de>=0&&(ye.total+=de,ye.ratio=ye.total/ye.count)}else ye={period:t,...H},delete ye.distribution,c.set(pe,ye),ye.byThread&&(ye.threads=[],ye.threads[v]={...Ae},u.push(ye));if(le){le=le.map(ut=>typeof ut=="number"?{value:ut,count:1}:ut);let xt=l.get(pe);xt?xt.push(...le):l.set(pe,le)}}await hB()}for(let E of u){let{path:T,method:N,type:v,metric:H,count:X,total:W,distribution:$,threads:ie,...z}=E;ie=ie.filter(de=>de);for(let de in z){if(typeof E[de]!="number")continue;let le=0;for(let Z of ie){let Ae=Z[de];typeof Ae=="number"&&(le+=Ae)}E[de]=le}E.count=ie.length,delete E.threads,delete E.byThread}for(let[E,T]of l){let N=c.get(E);T.sort((ut,Ln)=>ut.value>Ln.value?1:-1);let v=N.count-1,H=[],X=0,W=0,$;for(let ut of dB){let Ln=v*ut;for(;X<Ln;)$=T[W++],X+=$.count,W===1&&X--;let an=T[W>1?W-2:0];$||($=T[0]),H.push($.value-($.value-an.value)*(X-Ln)/$.count)}let[ie,z,de,le,Z,Ae,pe,ye,xt]=H;Object.assign(N,{p1:ie,p10:z,p25:de,median:le,p75:Z,p90:Ae,p95:pe,p99:ye,p999:xt})}let d;for(let[E,T]of c)T.id=(0,N_.getNextMonotonicTime)(),T.time=f,n.primaryStore.put(T.id,T,{append:!0}).then(N=>{N||n.primaryStore.put(T.id,T)}),d=!0;let _=Date.now(),{idle:h,active:m}=performance.eventLoopUtilization();if(d||m*10>h){let E=(0,N_.getNextMonotonicTime)(),T={id:E,metric:"main-thread-utilization",idle:h-jx,active:m-Jx,taskQueueLatency:await s,time:_,...process.memoryUsage()};n.primaryStore.put(E,T,{append:!0}).then(N=>{N||n.primaryStore.put(E,T)})}jx=h,Jx=m;let S=process.resourceUsage(),g=_B(b_,S);g.time=_,g.period=b_.time?_-b_.time:t,g.cpuUtilization=fB(b_,g.period),wE(n,"resource-usage",g),b_=g;let R=Je();zx(n,R),zx(n,{system:R.system}),Qx(n,R),Qx(n,{system:R.system})}async function Xx(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function bb(){return Zx||(Zx=ft({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function mB(){return eB||(eB=ft({table:"hdb_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function kee(){pB=!0;let e=(0,w_.get)(B.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await xee(cB,e),await Xx(bb(),Bee),await Xx(mB(),Hee)},Math.min(e/2,2147483647)).unref()}function EB(e,t){let r=e.report;r.threadId=t?.threadId||Qc.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(tB+=n.mean*n.count);r.totalBytesProcessed=tB,t&&(r.metrics.push({metric:"utilization",...t.performance.eventLoopUtilization(rB.get(t))}),rB.set(t,t.performance.eventLoopUtilization())),r.id=(0,N_.getNextMonotonicTime)(),bb().primaryStore.put(r.id,r),pB||kee(),Fee&&(gB=qee(r))}async function qee(e){if(await gB,!Ea){let r=(0,O_.dirname)((0,sB.getLogFilePath)());try{Ea=await(0,yb.open)((0,O_.join)(r,"analytics.log"),"r+")}catch{Ea=await(0,yb.open)((0,O_.join)(r,"analytics.log"),"w+")}}let t=(await Ea.stat()).size;if(t>Gee){let r=Buffer.alloc(t);await Ea.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await Ea.write(r,{position:0}),await Ea.truncate(r.length),t=r.length}await Ea.write(JSON.stringify(e)+`
|