harperdb 4.6.1 → 4.6.2
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 +2 -2
- 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 +26 -26
- 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.1faf79b7.js → main.447848b8.js} +2 -2
- package/utility/scripts/restartHdb.js +1 -1
- /package/studio/build-local/static/js/{main.1faf79b7.js.LICENSE.txt → main.447848b8.js.LICENSE.txt} +0 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
`:`data: ${e}
|
|
10
10
|
|
|
11
|
-
`},"serialize"),compressible:!1,q:.8});tn.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()}});Ev={type:"application/json",serializeStream:Wf,serialize:zf,deserialize:BZ,q:.5};tn.set("*/*",Ev);tn.set("",Ev);o(BZ,"tryJSONParse");o(Qf,"registerContentHandlers");FZ=(0,hv.default)(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:a,type:c}=$E(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&a.serializeStream){if(l.mapError){let d=l.getColumns;l=l.mapError(f=>(f.toJSON=()=>({error:f.name,message:f.message,...f.partialObject}),f)),l.getColumns=d}u=a.serializeStream}else u=a.serialize;return u(l,{headers:{set:o((d,f)=>{s.header(d,f)},"set")}})})}),r()},{name:"content-type-negotiation"});o($E,"findBestSerializer");lv=iA.default.get(U.HTTP_COMPRESSIONTHRESHOLD);o(Jf,"serialize");o(_a,"serializeMessage");o(lA,"asyncSerialization");o(uA,"hasAsyncSerialization");o(HZ,"streamToBuffer");kZ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];o(GZ,"isBufferEncoding");o(qZ,"parseContentType");o(mo,"getDeserializer");o($Z,"deserializerUnknownType");o(VZ,"transformIterable");o(qE,"toCsvStream")});var pA={};Ce(pA,{Blob:()=>gs,blobsWereEncoded:()=>Bc,databasePaths:()=>fA,decodeBlobsWithWrites:()=>XE,decodeFromDatabase:()=>Fc,decodeWithBlobCallback:()=>ZE,deleteBlob:()=>jE,deleteBlobsInObject:()=>ga,deleteRootBlobPathsForDB:()=>hA,encodeBlobsAsBuffers:()=>e6,encodeBlobsWithFilePath:()=>JE,findBlobsInObject:()=>pu,getFileId:()=>QE,getFilePathForBlob:()=>wv,getRootBlobPathsForDB:()=>tm,setDeletionDelay:()=>zZ});function bv(){}function jE(e){let t=wv(e);t&&setTimeout(()=>{(0,Ze.unlink)(t,r=>{r&&po.default.debug?.("Error trying to remove blob file",r)})},Iv)}function zZ(e){Iv=e}function Nv(e){let t=An.get(e);if(!t)t={storageIndex:0,fileId:null,store:bn},An.set(e,t);else{if(t.saving)return t;t.store=bn}return QZ(t),t.source?dA(e,t.source,t):t.contentBuffer?jZ(e,t):dA(e,Zf.Readable.from(e.stream()),t),t}function dA(e,t,r){let{filePath:n,fileId:s,store:i,compress:a,flush:c}=r;return r.saving=new Promise((l,u)=>{let d=s+":blob";if(!i.attemptLock(d,0))throw new Error(`Unable to get lock for blob file ${s}`);let f=(0,Ze.createWriteStream)(n,{autoClose:!1,flags:"w"});if(t.errored){let g=Buffer.from(t.errored.toString());f.end(Buffer.concat([p(BigInt(g.length)+0xff000000000000n),g]));return}let m=!1;e.size!==void 0&&(f.write(p(e.size)),m=!0);let h;a?(m||f.write(YZ),h=(0,WE.createDeflate)(),t.pipe(h).pipe(f)):(m||f.write(KZ),t.pipe(f)),t.on("error",_);function p(g){let y=BigInt(g),T=new Uint8Array(Rr),R=new DataView(T.buffer);return y|=BigInt(a?mA:Av)<<48n,R.setBigInt64(0,y),T}o(p,"createHeader");function _(g){i.unlock(d,0);let y=f.fd;g?(y&&(0,Ze.close)(y),u(g)):c?(0,Ze.fdatasync)(y,T=>{T&&u(T),l(),(0,Ze.close)(y)}):(l(),(0,Ze.close)(y))}o(_,"finished"),f.on("error",_).on("finish",()=>{if(m)_();else{let g=h?h.bytesWritten:f.bytesWritten-Rr;e.size=g,(0,Ze.write)(f.fd,p(g),0,Rr,0,_)}})}),e}function QE(e){return An.get(e)?.fileId}function wv(e){let t=An.get(e);return t?.fileId&&em(t)}function tm(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=fA.get(e);if(!t){if(!e.databaseName)return po.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,zE.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,_o.join)(n,e.databaseName)):t=[(0,_o.join)((0,zE.getHdbBasePath)(),"blobs",e.databaseName)],fA.set(e,t)}return t}async function hA(e){let t=tm(e);t&&await Promise.all(t.map(r=>Ov(r)))}async function Ov(e){if((0,Ze.existsSync)(e)){for(let t of await(0,zs.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await Ov((0,_o.join)(e,t.name));else try{await(0,zs.unlink)((0,_o.join)(e,t.name))}catch(r){po.default.warn?.("Error deleting file",r)}try{await(0,zs.rmdir)(e)}catch(t){po.default.warn?.("Error deleting directory",t)}}}function em({storageIndex:e,fileId:t,store:r}){let n=tm(r);return(0,_o.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 jZ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<yv))return e.size=n,dA(e,Zf.Readable.from([r]),t)}function QZ(e){let t=tm(e.store),r=JZ(),n=t?.length>1?XZ(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=em(e),a=(0,_o.dirname)(i);(0,Ze.existsSync)(a)||(0,Rv.ensureDirSync)(a),e.filePath=i}function JZ(){let e=Tv.get(bn);if(!e){let t=0,r=tm(bn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let a=0;if((0,Ze.existsSync)(n))for(let c of(0,Ze.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>a&&(a=l)}s+=a,n=(0,_o.join)(n,a.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(bn.getUserSharedBuffer("blob-file-id",e.buffer)),Tv.set(bn,e)}return Number(Atomics.add(e,0,1n))}function XZ(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(YE);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,ZZ(e)),e.frequencyTable[t%YE]}async function ZZ(e){if(!zs.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let a=await(0,zs.statfs)(s),c=a.bavail*a.bsize;return Math.pow(c,.8)})),r=new Array(YE),n=t.map(s=>1/s);for(let s=0;s<YE;s++){let i=1/0,a=0;for(let c=0;c<n.length;c++)n[c]<i&&(a=c,i=n[c]);n[a]+=1/t[a],r[s]=a}e.frequencyTable=r}function JE(e,t,r){hu=t,bn=r,Bc=!1;try{return e()}finally{hu=void 0,bn=void 0}}function e6(e){Gr=[];let t;try{t=e()}catch(n){throw Gr=void 0,n}let r=Gr.length<2?Gr[0]:Promise.all(Gr);return Gr=void 0,r?r.then(()=>e()):t}function XE(e,t){try{Gr=[],xc=t,e()}catch(n){throw xc=void 0,Gr=void 0,n}xc=void 0;let r=Gr.length<2?Gr[0]:Promise.all(Gr);return Gr=void 0,r}function ZE(e,t,r){bn=r;try{return xc=t,e()}finally{xc=void 0}}function Fc(e,t){return bn=t,e()}function ga(e){pu(e,t=>{jE(t)})}function pu(e,t){if(e instanceof gs)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&pu(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&pu(e[r],t)}}function t6(){return class{static{o(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}var Eo,zs,Ze,WE,Zf,Rv,zE,_o,po,yv,Rr,Av,mA,gv,KZ,YZ,Sv,An,xc,gs,hu,Gr,bn,Bc,Xf,VE,WZ,KE,Iv,fA,Tv,YE,Ss=fe(()=>{Eo=require("msgpackr"),zs=require("node:fs/promises"),Ze=require("node:fs"),WE=require("node:zlib"),Zf=require("node:stream"),Rv=require("fs-extra"),zE=w(ce());k();_o=require("path"),po=w(Ni());ho();yv=8192,Rr=8,Av=0,mA=1,gv=255,KZ=new Uint8Array([0,Av,255,255,255,255,255,255]),YZ=new Uint8Array([0,mA,255,255,255,255,255,255]),Sv=0xffffffffffff,An=new WeakMap,gs=global.Blob||t6(),Bc=!1,Xf=new Uint8Array(8),VE=new DataView(Xf.buffer),WZ=6e4;o(bv,"InstanceOfBlobWithNoConstructor");bv.prototype=gs.prototype;KE=class e extends bv{static{o(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=An.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):(uA()&&lA(this.bytes().then(a=>t.contentBuffer=a)),`[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=An.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=em(t),a,c=o(async()=>{let l,u=Rr;try{if(l=await(0,zs.readFile)(i),l.length>=Rr){l.copy(Xf,0,0,Rr);let f=VE.getBigUint64(0);if(Number(f>>48n)===gv)throw new Error("Error in blob: "+buffer.subarray(Rr));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<Sv&&(this.size=u,this.#t))for(let m of this.#t)m(u)}}catch(f){if(f.code!=="ENOENT")throw f;l=Buffer.alloc(0)}function d(f){if(u>f.length){let m=t.store,h=t.fileId+":blob";if(a)throw new Error("Incomplete blob");return new Promise((p,_)=>{if(m.attemptLock(h,0,()=>(a=!0,m.unlock(h,0),p(c()))))return a=!0,m.unlock(h,0),p(c())})}return(n!=null||r!=null)&&(f=f.subarray(r??0,n??f.length)),f}return o(d,"checkCompletion"),l[1]===mA?new Promise((f,m)=>{(0,WE.deflate)(l.subarray(Rr),(h,p)=>{h?m(h):f(d(p))})}):d(l.subarray(Rr))},"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=An.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(_){_.enqueue(r),_.close()}});let i=em(t),a,c=0,l=0,u,d,f,m=!1,h=this;return new ReadableStream({start(){let _=1e3,g=o((y,T)=>{(0,Ze.open)(i,"r",(R,I)=>{if(R){if(R.code==="ENOENT"&&f!==!1&&(po.default.debug?.("File does not exist yet, waiting for it to be created",i,_),_-- >0))return setTimeout(()=>{p(),g(y,T)},20).unref();T(R),h.#e?.forEach(P=>P(R))}else a=I,y(I)})},"openFile");return new Promise(g)},pull:o(_=>{let g=0,y=100;return new Promise(o(function T(R,I){function P(te){(0,Ze.close)(a),clearTimeout(d),u&&u.close(),I(te),h.#e?.forEach(x=>x(te))}o(P,"onError");let Y=Buffer.allocUnsafe(262144);(0,Ze.read)(a,Y,0,Y.length,c,(te,x,$)=>{if(l+=x,te)return P(te);if(c===0){if(x<Rr){y-- >0&&f!==!1?(p(),po.default.debug?.("File was empty, waiting for data to be written",i,y),setTimeout(()=>T(R,I),20).unref()):(po.default.debug?.("File was empty, throwing error",i,y),I(new Error(`Blob ${t.fileId} was empty`)));return}$.copy(Xf,0,0,Rr);let j=VE.getBigUint64(0);if(Number(j>>48n)===gv)return P(new Error("Error in blob: "+$.subarray(Rr)));if(g=Number(j&0xffffffffffffn),g<Sv&&h.size!==g&&(h.size=g,h.#t))for(let V of h.#t)V(g);$=$.subarray(Rr,x),l-=Rr}else if(x===0){let j=Buffer.allocUnsafe(8);return(0,Ze.read)(a,j,0,Rr,0,V=>{if(V)return P(V);if(Xf.set(j),g=Number(VE.getBigUint64(0)&0xffffffffffffn),g>l){p()?u?d=setTimeout(()=>{P(new Error("File read timed out"))},WZ).unref():(u=(0,Ze.watch)(i,{persistent:!1},()=>{u.close(),u=null,d&&(clearTimeout(d),d=null,T(R,I))}),T(R,I)):m?P(new Error("Blob is incomplete")):(m=!0,T(R,I));return}(0,Ze.close)(a),_.close(),R()})}else $=$.subarray(0,x);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=x,T(R,I);s&&l>=s&&(l>s&&($=$.subarray(0,s-c)),l=g=s),n&&n>c&&($=$.subarray(n-c))}c+=x;try{_.enqueue($)}catch(j){return po.default.debug?.("Error enqueuing chunk",j),R()}l===g&&((0,Ze.close)(a),_.close()),R()})},"readMore"))},"pull"),cancel(){(0,Ze.close)(a),clearTimeout(d),u&&u.close()}});function p(){if(f===void 0){let _=t.store,g=t.fileId+":blob";f=!_.attemptLock(g,0,()=>{f=!1,_.unlock(g,0)}),f||_.unlock(g,0)}return f}}slice(t,r,n){let s=An.get(this),i=new e(n&&{type:n});if(s?.fileId){let a={...s,start:t,end:r};An.set(i,a),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let a={...s,contentBuffer:s.contentBuffer.subarray(t,r)};An.set(i,a),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(t){if(bn=t?.primaryStore?.rootStore,!bn)throw new Error("No target table specified");return Nv(this).saving??Promise.resolve()}},Iv=500;o(jE,"deleteBlob");o(zZ,"setDeletionDelay");global.createBlob=function(e,t){let r=new KE(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(An.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof Zf.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=Zf.Readable.from(e);else throw new Error("Invalid source type");return r};o(Nv,"saveBlob");o(dA,"writeBlobWithStream");o(QE,"getFileId");o(wv,"getFilePathForBlob");fA=new Map;o(tm,"getRootBlobPathsForDB");o(hA,"deleteRootBlobPathsForDB");o(Ov,"rimrafSteadily");o(em,"getFilePath");o(jZ,"writeBlobWithBuffer");o(QZ,"generateFilePath");Tv=new Map;o(JZ,"getNextFileId");YE=128;o(XZ,"getNextStorageIndex");o(ZZ,"createFrequencyTableForStoragePaths");o(JE,"encodeBlobsWithFilePath");o(e6,"encodeBlobsAsBuffers");o(XE,"decodeBlobsWithWrites");o(ZE,"decodeWithBlobCallback");o(Fc,"decodeFromDatabase");o(ga,"deleteBlobsInObject");o(pu,"findBlobsInObject");(0,Eo.addExtension)({Class:gs,type:11,unpack:o(function(e){let t=(0,Eo.unpack)(e),r=new KE;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(An.set(r,{storageIndex:t[1],fileId:t[2],store:bn}),xc)return xc(r)??r;if(!bn)throw new Error("No store specified, cannot load blob from storage")}else An.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:o(function(e){let t=An.get(e);if(hu!==void 0&&(Bc=!0,t?.recordId!==void 0&&t.recordId!==hu))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<yv)return r.size=t.contentBuffer.length,(0,Eo.pack)([r,t.contentBuffer])}if(hu!==void 0){if(t=Nv(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=hu,(0,Eo.pack)([r,t.storageIndex,t.fileId])}if(t)try{let n=(0,Ze.readFileSync)(em(t));if(n.length>=Rr&&(n.copy(Xf,0,0,Rr),Number(VE.getBigUint64(0)&0xffffffffffffn)===n.length-Rr))return Buffer.concat([(0,Eo.pack)([r]),n]);if(Gr)Gr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Gr)return Gr.push(e.bytes()),Buffer.alloc(0);throw n}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Eo.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});o(t6,"polyfillBlob")});var Mv={};Ce(Mv,{onStorageReclamation:()=>rm,runReclamationHandlers:()=>SA,setAvailableSpaceRatioGetter:()=>n6});function rm(e,t,r){(r||(0,t_.getWorkerIndex)()===(0,t_.getWorkerCount)()-1)&&(e_.has(e)||e_.set(e,[]),e_.get(e).push({priority:0,handler:t}),gA||(gA=setTimeout(SA,Pv).unref()))}async function SA(){for(let[e,t]of e_)try{let r=await Dv(e),n=r6/r;for(let s of t){let{priority:i,handler:a}=s;if(s.priority=n,n>1||i>1){let c=a(n>1?n:0);c&&(_A.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){_A.default.error?.("Error running storage reclamation handlers",r)}gA=setTimeout(SA,Pv).unref()}function n6(e){Dv=e??Lv}var EA,t_,_A,r_,Cv,e_,r6,Pv,gA,Lv,Dv,n_=fe(()=>{EA=require("node:fs/promises"),t_=w(st()),_A=w(Ni());k();r_=w(ce()),Cv=w(ie());r_.default.initSync();e_=new Map,r6=r_.default.get(U.STORAGE_RECLAMATION_THRESHOLD)??.4,Pv=(0,Cv.convertToMS)(r_.default.get(U.STORAGE_RECLAMATION_INTERVAL))||36e5;o(rm,"onStorageReclamation");Lv=o(async e=>{if(EA.statfs){let t=await(0,EA.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"),Dv=Lv;o(SA,"runReclamationHandlers");o(n6,"setAvailableSpaceRatioGetter")});var Yv={};Ce(Yv,{ACTION_32_BIT:()=>c_,ACTION_64_BIT:()=>o6,AUDIT_STORE_OPTIONS:()=>im,Decoder:()=>kc,HAS_BLOBS:()=>In,HAS_CURRENT_RESIDENCY_ID:()=>Gc,HAS_EXPIRATION_EXTENDED_TYPE:()=>cm,HAS_ORIGINATING_OPERATION:()=>am,HAS_PREVIOUS_RESIDENCY_ID:()=>qc,REMOTE_SEQUENCE_UPDATE:()=>l_,createAuditEntry:()=>_u,getLastRemoved:()=>IA,openAuditStore:()=>o_,readAuditEntry:()=>vt,removeAuditEntry:()=>a_,setAuditRetention:()=>i6,transactionKeyEncoder:()=>qv});function o_(e){let t=e.auditStore=e.openDB(TA.AUDIT_STORE_NAME,{create:!1,...im});t||(t=e.auditStore=e.openDB(TA.AUDIT_STORE_NAME,im),Uv(t,1)),t.rootStore=e,t.tableStores=[];let r=[];t.addDeleteRemovalCallback=function(l,u,d){return r[l]=d,t.tableStores[l]=u,t.deleteCallbacks=r,{remove(){delete r[l]}}};let n=null,s,i=0,a=yA;rm(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(a=l),clearTimeout(n);let u=new Promise(d=>{n=setTimeout(async()=>{if(await s,s=u,t.rootStore.status==="closed"||t.rootStore.status==="closing")return;let f=0,m,h;try{for(let{key:p,value:_}of t.getRange({start:1,snapshot:!1,end:Date.now()-RA/(1+i*i)})){try{m=a_(t,p,_)}catch(g){Eu.warn("Error removing audit entry",g)}if(h=p,await new Promise(setImmediate),++f>=s6){a=10;break}}await m}finally{f===0?a=Math.min(a<<1,RA/10):(Uv(t,h),a>100&&(a=a>>1)),d(void 0),c()}},a).unref()});return u}if(o(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,sm.getWorkerIndex)()===(0,sm.getWorkerCount)()-1&&c(),(0,sm.getWorkerIndex)()===0&&!vv)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(vv=!0,Eu.error("The current time is before the last recorded entry in the audit log. Time reversal can undermine the integrity of data tracking and certificate validation and the time must be corrected."));return t}function a_(e,t,r){let n=a6(r),s;if(n&In){s=vt(r);let i=e.tableStores[s.tableId],a=i?.getEntry(s.recordId);(!a||a.version!==s.version||!a.value)&&Fc(()=>ga(s.getValue(i)),i.rootStore)}if((n&15)===AA){s=s||vt(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 Uv(e,t){bA[0]=t,e.put(Symbol.for("last-removed"),$v)}function IA(e){let t=e.get(Symbol.for("last-removed"));if(t)return $v.set(t),bA[0]}function i6(e,t=yA){RA=e,yA=t}function _u(e,t,r,n,s,i,a,c,l,u,d,f,m){let h=Vv[a];if(!h)throw new Error(`Invalid audit entry type ${a}`);let p=1;if(n&&(n>1?Sa.setFloat64(0,n):Ts.set(NA),p=9),l){if(l&255)throw new Error("Illegal extended type");p+=3}y(s),y(t),g(r),Sa.setFloat64(p,e),p+=8,l&Gc&&y(u),l&qc&&y(d),l&cm&&(Sa.setFloat64(p,f),p+=8),l&am&&y(Kv[m]),i?g(i):Ts[p++]=0,l?Sa.setUint32(n?8:0,h|l|3221225472):Ts[n?8:0]=h;let _=Ts.subarray(0,p);if(c)return Buffer.concat([_,c]);return _;function g(T){let R=p;p+=1,p=(0,Hc.writeKey)(T,Ts,p);let I=p-R-1;I>127?I>16383?(Eu.error("Key or username was too large for audit entry",T),p=R+1,Ts[R]=0):(Ts.copyWithin(R+2,R+1,p),Sa.setUint16(R,I|32768),p++):Ts[R]=I}function y(T){T<128?Ts[p++]=T:T<16384?(Sa.setUint16(p,T|32768),p+=2):T<1056964608?(Sa.setUint32(p,T|3221225472),p+=4):(Ts[p]=255,Sa.setUint32(p+1,T),p+=5)}}function a6(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 kc(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function vt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new kc(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),a=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,d=n.position+=l,f=n.readFloat64(),m,h,p,_;if(i&Gc&&(m=n.readInt()),i&qc&&(h=n.readInt()),i&cm&&(p=n.readFloat64()),i&am){let R=n.readInt();_=Kv[R]}l=n.readInt();let g=n.position,y=n.position+=l,T;return{type:Vv[i&7],tableId:c,nodeId:a,get recordId(){return(0,Hc.readKey)(e,u,d)},getBinaryRecordId(){return e.subarray(u,d)},version:f,previousLocalTime:s,get user(){return y>g?(0,Hc.readKey)(e,g,y):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(R,I,P){if(i&s_||i&nm&&!I)return T||(T=Fc(()=>R.decoder.decode(e.subarray(n.position,r)),R.rootStore)),T;if(i&nm&&P)return Zy(R.getEntry(this.recordId),P,R)},getBinaryValue(){return i&(s_|nm)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:m,previousResidencyId:h,expiresAt:p,originatingOperation:_}}catch(n){return Eu.error("Reading audit entry error",n,e),{}}}var Hc,i_,TA,sm,Gv,Eu,Ts,Sa,qv,im,RA,s6,bA,$v,yA,vv,s_,nm,xv,AA,Bv,Fv,Hv,kv,c_,o6,l_,Gc,qc,am,cm,In,Vv,Kv,kc,lo=fe(()=>{Hc=require("ordered-binary"),i_=w(ce()),TA=w(kt());k();sm=w(st()),Gv=w(ie());$c();Eu=w(z());HE();Ss();n_();(0,i_.initSync)();Ts=Buffer.alloc(2816),Sa=new DataView(Ts.buffer,Ts.byteOffset,2816),qv={writeKey(e,t,r){return e===om?(t.set(om,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,Hc.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,Hc.readKey)(e,t,r)}},im={encoding:"binary",keyEncoder:qv},RA=(0,Gv.convertToMS)((0,i_.get)(U.LOGGING_AUDITRETENTION))||86400*3,s6=1e3,bA=new Float64Array(1),$v=new Uint8Array(bA.buffer),yA=1e4,vv=!1;o(o_,"openAuditStore");o(a_,"removeAuditEntry");o(Uv,"updateLastRemoved");o(IA,"getLastRemoved");o(i6,"setAuditRetention");s_=16,nm=32,xv=1,AA=2,Bv=3,Fv=4,Hv=5,kv=6,c_=14,o6=15,l_=11,Gc=512,qc=1024,am=2048,cm=4096,In=8192,Vv={put:xv|s_,[xv]:"put",delete:AA,[AA]:"delete",message:Bv|s_,[Bv]:"message",invalidate:Fv|nm,[Fv]:"invalidate",patch:Hv|nm,[Hv]:"patch",relocate:kv,[kv]:"relocate"},Kv={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};o(_u,"createAuditEntry");o(a6,"readAction");o(vt,"readAuditEntry");kc=class extends DataView{static{o(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}}}});var Jv={};Ce(Jv,{ENTRY:()=>l6,HAS_EXPIRATION:()=>f_,HAS_RESIDENCY_ID:()=>DA,HAS_STRUCTURE_UPDATE:()=>m_,LAST_TIMESTAMP_PLACEHOLDER:()=>om,LOCAL_TIMESTAMP:()=>c6,METADATA:()=>Su,NEW_TIMESTAMP_PLACEHOLDER:()=>zv,NO_TIMESTAMP:()=>wA,PENDING_LOCAL_TIME:()=>MA,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>NA,RecordEncoder:()=>LA,TIMESTAMP_ASSIGN_LAST:()=>d6,TIMESTAMP_ASSIGN_NEW:()=>jv,TIMESTAMP_ASSIGN_PREVIOUS:()=>Qv,TIMESTAMP_PLACEHOLDER:()=>u_,TIMESTAMP_RECORD_PREVIOUS:()=>OA,entryMap:()=>Ta,handleLocalTimeForGets:()=>h_,lastMetadata:()=>at,recordUpdater:()=>vA,removeEntry:()=>Kc});function m6(){return dm[0]=dm[0]^64,u6.getFloat64(0)}function h_(e,t){let r=e.getEntry;e.readCount=0,e.cachePuts=!1,e.rootStore=t,e.encoder.rootStore=t,e.getEntry=function(a,c){e.readCount++,at=null;let l=r.call(this,a,c);return l&&(at&&(l.metadataFlags=at[Su],l.localTime=at.localTime,l.residencyId=at.residencyId,at.expiresAt>=0&&(l.expiresAt=at.expiresAt),at=null),l.value&&Ta.set(l.value,l),l.key=a),l};let n=e.get;e.get=function(a,c){at=null;let l=n.call(this,a,c);return at&&l&&(Ta.set(l,at),at=null),l};let s=e.getRange;e.getRange=function(a){let c=s.call(this,a);return a.valuesForKey?c.map(l=>l?.value):a.values===!1||a.onlyCount?c:c.map(l=>(at&&(l.metadataFlags=at[Su],l.localTime=at.localTime,l.residencyId=at.residencyId,at.expiresAt>=0&&(l.expiresAt=at.expiresAt),at=null),l))};let i=e.useReadTransaction();if(i.done(),!i.done.isTracked){let a=i.constructor,c=i.use,l=i.done;a.prototype.use=function(){this.timerTracked||(this.timerTracked=!0,Vc.push(new WeakRef(this))),c.call(this)},a.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<Vc.length;u++){let d=Vc[u].deref();(!d||d.isDone||d.isCommitted)&&Vc.splice(u--,1)}},a.prototype.done.isTracked=!0}return e}function vA(e,t,r){return function(n,s,i,a,c=-1,l,u,d="put",f,m){f||l==null?gu=i?.localTime?OA|Qv:wA:gu=l?i?.localTime?OA|16384:jv|16384:wA;let h=u?.expiresAt;if(h>=0&&(c|=f_),um=c,CA=h,i?.version===a&&l===!1)throw new Error("Must retain local time if version is not changed");let p={version:a,instructedWrite:gu>0},_,g=0;try{let y=i?.residencyId,T=u?.residencyId;T&&(PA=T,um|=DA,g|=Gc),y!==T&&(g|=qc,y||(y=0)),c&f_&&(g|=cm),u?.originatingOperation&&(g|=am),f&&(p.ifVersion=_=i?.version??null),i&&i.value&&i.metadataFlags&In&&(r.getBinaryFast(i.localTime)||ga(i.value));let R;if(s!==void 0&&(R=JE(()=>e.put(n,s,p),n,e.rootStore),Bc&&(g|=In)),l){let I=u?.user?.username;if(m&&(JE(()=>e.encoder.encode(m),n,e.rootStore),Bc&&(g|=In)),e.encoder.hasStructureUpdate&&(g|=m_,e.encoder.hasStructureUpdate=!1),f&&i?.localTime){let P=i?.localTime,Y=r.get(P);if(Y){let te=vt(Y).previousLocalTime;return R=r.put(P,_u(a,t,n,te,u?.nodeId??server.replication.getThisNodeId(r)??0,I,d,lm,g,T,y,h),{ifVersion:_}),R}}R=r.put(s===void 0?zv:om,_u(a,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,I,d,lm,g,T,y,h,u?.originatingOperation),{append:d!=="invalidate",instructedWrite:!0,ifVersion:_})}return R}catch(y){throw y.message+=" id: "+n+" options: "+p,y}}}function Kc(e,t,r){if(t)return t.value&&t.metadataFlags&In&&!e.auditStore.getBinaryFast(t.localTime)&&ga(t.value),e.remove(t.key,r)}var Wv,d_,u_,om,NA,zv,c6,Su,l6,dm,u6,wA,jv,d6,Qv,OA,f_,DA,MA,m_,Ta,f6,lm,gu,um,CA,PA,at,LA,Vc,$c=fe(()=>{Wv=require("msgpackr");lo();d_=w(z());Ss();Ss();u_=new Uint8Array([1,1,1,1,4,64,0,0]),om=new Uint8Array([1,1,1,1,1,0,0,0]),NA=new Uint8Array([1,1,1,1,3,64,0,0]),zv=new Uint8Array([1,1,1,1,0,64,0,0]),c6=Symbol("local-timestamp"),Su=Symbol("metadata"),l6=Symbol("entry"),dm=new Uint8Array(8),u6=new DataView(dm.buffer,0,8),wA=0,jv=0,d6=1,Qv=3,OA=4,f_=16,DA=32,MA=1,m_=256,Ta=new WeakMap,gu=0,um=-1,CA=-1,PA=0,at=null,LA=class extends Wv.Encoder{static{o(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0;class r{static{o(this,"RecordObject")}getUpdatedTime(){return Ta.get(this)?.version}getExpiresAt(){return Ta.get(this)?.expiresAt}}t.structPrototype=r.prototype,super(t);let n=this.encode;this.encode=function(i,a){if(gu||um>=0){let c=0,l=gu;l&&(c+=8,gu=0);let u=um,d=CA,f=PA;u>=0&&(c+=4,um=-1,d>=0&&(c+=8,CA=-1),f&&(c+=4,PA=0));let m=f6=n.call(this,i,a|2048|c);lm=m.subarray((m.start||0)+c,m.end);let h=m.start||0;return l&&(u_[4]=l,u_[5]=l>>8,m.set(u_,h),h+=8),Bc&&(u|=In),u>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(h,u|c_<<24),h+=4,d>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setFloat64(h,d),h+=8),f&&(m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(h,f)),m}else return lm=n.call(this,i,a),lm};let s=this.saveStructures;this.saveStructures=function(i,a){let c=s.call(this,i,a);return this.hasStructureUpdate=!0,c}}decode(t,r){at=null;let n=r?.start||0,s=r>-1?r:r?.end||t.length,i=t[n],a=0;try{if(i<32&&s>2){let c=n,l;if(i===2){if(t.copy)t.copy(dm,0,c),c+=8;else for(let m=0;m<8;m++)dm[m]=t[c++];l=m6(),i=t[c]}let u,d;i<32&&(i===c_?(a=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4):(a=i|t[c+1]<<5,c+=2),a&f_&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),a&DA&&(d=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let f=Fc(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return at={localTime:l,[Su]:a,expiresAt:u,residencyId:d},f}return r?.valueAsBuffer?t:Fc(()=>super.decode(t,r),this.rootStore)}catch(c){return d_.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};o(m6,"getTimestamp");o(h_,"handleLocalTimeForGets");Vc=[];setInterval(()=>{for(let e=0;e<Vc.length;e++){let t=Vc[e].deref();!t||t.isDone||t.isCommitted?Vc.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(d_.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):d_.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();o(vA,"recordUpdater");o(Kc,"removeEntry")});function BA(e,t,r,n,s,i,a,c){let l=e[0];if(t==="or"){let f=u(l);for(let h=1;h<e.length;h++){let p=e[h],_=u(p);f=f.concat(_)}let m=new Set;return f.filter(h=>{let p=h.key??h;return m.has(p)?!1:(m.add(p),!0)})}else{let f=u(l),m=d(e.slice(1),!0,l.estimated_count);return m.length>0?a(f,m):f}function u(f){return f.conditions?BA(f.conditions,f.operator,r,n,s,i,a,c):Au(f,n,f.descending||s.reverse===!0,r,s.allowFullScan,c,i)}o(u,"executeCondition");function d(f,m,h){return f.map((p,_)=>{if(p.conditions){let T=p.operator==="or",R=d(p.conditions,!T,h);return T?(I,P)=>R.some(Y=>Y(I,P)):(I,P)=>R.every(Y=>Y(I,P))}let g=(p.attribute||p[0])===r.primaryKey,y=mm(p,r,i,c,g,h);return m&&_<f.length-1&&h&&(h=y6(r.primaryStore,p.estimated_count,h)),y}).filter(Boolean)}o(d,"mapConditionsToFilters")}function Au(e,t,r,n,s,i,a){let c=e[0]??e.attribute,l=e[1]??e.value,u=e.comparator;if(l===void 0&&u!=="sort")throw new qr.ClientError(`Search condition for ${c} must have a value`);if(Array.isArray(c)){let R=c[0],I=Ci(n.attributes,R);if(I.relationship){if(c.length<2)throw new qr.ClientError("Can not directly query a relational attribute, must query an attribute within the target table");let P=I.definition?.tableClass||I.elements?.definition?.tableClass,Y=new Map,te=Au({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:u},t,r,P,s,Y);if(I.relationship.to){i[c[0]]=Y;let x=!!Ci(P.attributes,I.relationship.to)?.elements;te=g6(te,I,P.primaryStore,x,Y)}if(I.relationship.from){let x=o($=>($?.key!==void 0&&($=$.key),Au({attribute:I.relationship.from,value:$},t,r,n,s,Y)),"searchEntry");I.elements?(i[c[0]]=Y,te=S6(te,I,P.primaryStore,Y,x)):te=te.flatMap(x)}return te}else if(c.length===1)c=c[0];else throw new qr.ClientError("Unable to query by attribute "+JSON.stringify(c))}let d=c===n.primaryKey||c==null,f=d?n.primaryStore:n.indices[c],m,h,p,_;l instanceof Date&&(l=l.getTime());let g;switch(FA[u]||u){case"lt":m=!0,h=l;break;case"le":m=!0,h=l,p=!0;break;case"gt":m=l,_=!0;break;case"ge":m=l;break;case"prefix":Array.isArray(l)?l[l.length-1]!=null&&(l=l.concat(null)):l=[l,null],m=l,h=l.slice(0),h[h.length-1]=Oi.MAXIMUM_KEY;break;case"starts_with":m=l.toString(),h=l+"\uFFFF";break;case"between":case"gele":case"gelt":case"gtlt":case"gtle":m=l[0],m instanceof Date&&(m=m.getTime()),h=l[1],h instanceof Date&&(h=h.getTime()),p=u==="gele"||u==="gtle"||u==="between",_=u==="gtlt"||u==="gtle";break;case"equals":case void 0:m=l,h=l,p=!0;break;case"ne":if(l===null){m=l,_=!0;break}case"sort":case"contains":case"ends_with":m=!0,g=!0;break;default:throw new qr.ClientError(`Unknown query comparator "${u}"`)}let y;if(typeof m=="string"&&m.length>Rs.MAX_SEARCH_KEY_LENGTH&&(m=m.slice(0,Rs.MAX_SEARCH_KEY_LENGTH)+Rs.OVERFLOW_MARKER,_=!1,y=mm(e,n,null,i,d)),typeof h=="string"&&h.length>Rs.MAX_SEARCH_KEY_LENGTH&&(h=h.slice(0,Rs.MAX_SEARCH_KEY_LENGTH)+Rs.OVERFLOW_MARKER,p=!0,y=y??mm(e,n,null,i,d)),r){let R=m;m=h,h=R,R=!_,_=!p,p=R}if(!f||f.isIndexing||g||l===null&&!f.indexNulls){if(s===!1&&!f)throw new qr.ClientError(`"${c}" is not indexed, can not search for this attribute`,404);if(s===!1&&g)throw new qr.ClientError(`Can not use ${u||"equal"} operator without combining with a condition that uses an index, can not search for attribute ${c}`,403);if(f?.isIndexing)throw new qr.ServerError(`"${c}" is not indexed yet, can not search for this attribute`,503);if(l===null&&f&&!f.indexNulls)throw new qr.ClientError(`"${c}" is not indexed for nulls, index needs to be rebuilt to search for nulls, can not search for this attribute`,400);if(y=y??mm(e,n,null,i,d),!y)throw new qr.ClientError(`Unknown search operator ${e.comparator}`)}let T={start:m,end:h,inclusiveEnd:p,exclusiveStart:_,values:!0,versions:d,transaction:t,reverse:r};if(d){let R=f.getRange(T).map(y?function({key:I,value:P}){return this?.isSync?P&&y(P)?I:Ra.SKIP:new Promise((Y,te)=>setImmediate(()=>{try{Y(P&&y(P)?I:Ra.SKIP)}catch(x){te(x)}}))}:I=>I.value==null&&!(I.metadataFlags&(Nn|ya))?Ra.SKIP:I);return R.hasEntries=!0,R}else return f?f.customIndex?f.customIndex.search(e,a).map(R=>{if(typeof R=="object"&&R){let{key:I,...P}=R,Y=n.primaryStore.getEntry(I);return{...P,...Y}}return R}):f.getRange(T).map(y?function({key:R,value:I}){let P;return typeof R=="string"&&R.length>Rs.MAX_SEARCH_KEY_LENGTH?P=n.primaryStore.get(I):P={[c]:R},this.isSync?y(P)?I:Ra.SKIP:new Promise((Y,te)=>setImmediate(()=>{try{Y(y(P)?I:Ra.SKIP)}catch(x){te(x)}}))}:({value:R})=>R):n.primaryStore.getRange(r?{end:!0,transaction:t,reverse:!0}:{start:!0,transaction:t}).map(function({key:R,value:I}){return this.isSync?I&&y(I)?R:Ra.SKIP:new Promise((P,Y)=>setImmediate(()=>{try{P(I&&y(I)?R:Ra.SKIP)}catch(te){Y(te)}}))})}function Ci(e,t){if(Array.isArray(t))if(t.length>1){let r=Ci(e,t[0]),n=(r?.definition?.tableClass||r?.elements?.definition?.tableClass)?.attributes??r?.properties;return n?Ci(n,t.slice(1)):void 0}else t=t.toString();else typeof t!="string"&&(t=t.toString());return e.find(r=>r.name===t)}function g6(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i;return s.hasMappings=!0,{next(){if(!i){let c=t.relationship.to,l=o((u,d)=>{let f=s.get(u);f?f.push(d):s.set(u,f=[d])},"addEntry");for(let u of e){let d=u.value??r.get(u.key??u),f=d?.[c];if(f!=null&&!s.filters?.some(m=>!m(d)))if(n)for(let m=0;m<f.length;m++)l(f[m],u);else l(f,u)}return i=s.keys()[Symbol.iterator](),this.next()}let a=i.next();return a.done?a:{value:a.value}},return(){if(i?.return)return i.return()}}}})}function S6(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i,a,c=new Set;return{next(){let l;if(a)for(;l=a.next(),!l.done;){let u=l.value;if(!c.has(u))return c.add(u),l}if(!i){let u=new Set;n.fromRecord=d=>d[t.relationship.from]?.filter?.(f=>u.has(f));for(let d of e){if(n.filters){let f=r.get(d);if(n.filters.some(m=>!m(f)))continue}u.add(d)}return i=u[Symbol.iterator](),this.next()}do{let u=i.next();return u.done?u:(a=s(u.value)[Symbol.iterator](),this.next())}while(!0)},return(){return a?.return?.()},throw(){return a?.throw?.()}}}})}function mm(e,t,r,n,s,i){let a=e.comparator,c=e[0]??e.attribute,l=e[1]??e.value;if(Array.isArray(c)){if(c.length===0)return()=>!0;if(c.length===1)c=c[0];else if(c.length>1){let d=c[0],f=Ci(t.attributes,d),m=f.definition?.tableClass||f.elements.definition?.tableClass,h=n?.[d],p=mm({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:a},m,r,h?.[d]?.joined,c[1]===m.primaryKey,i);if(!p)return;if(h){h.filters||(h.filters=[]),h.filters.push(p);return}let _=t.propertyResolvers?.[d];_.to&&(p.to=_.to);let g,y=o((R,I)=>{let P,Y;return _?_.returnDirect?(P=_(R,r,I),Y=at):(Y=_(R,r,I,!0),Array.isArray(Y)?(P=Y.map(te=>te.value),Y=null):P=Y?.value):P=R[d],{subObject:P,subEntry:Y}},"getSubObject"),T=o((R,I)=>{if(_&&p.idFilter){if(!g)if(p.idFilter.idSet?.size===1){for(let $ of p.idFilter.idSet)e={attribute:_.from??t.primaryKey,value:$};g=u(_.from??t.primaryKey,p.idFilter,!0,!0)}else g=u(_.from??t.primaryKey,p.idFilter,!1,!0);let x=g(R);return g.idFilter&&(T.idFilter=g.idFilter),x}let{subObject:P,subEntry:Y}=y(R,I);return P?Array.isArray(P)?(!n?.[d]&&n&&(n[d]={fromRecord(x){let $=y(x).subObject;return Array.isArray($)?$.filter(p).map(j=>j[m.primaryKey]):$}}),P.some(p)):p(P,Y):!1},"recordFilter");return T}}switch(l instanceof Date&&(l=l.getTime()),FA[a]||a){case Rs.SEARCH_TYPES.EQUALS:case void 0:return u(c,d=>d===l,!0);case"contains":return u(c,d=>d?.toString().includes(l));case"ends_with":return u(c,d=>d?.toString().endsWith(l));case"starts_with":return u(c,d=>typeof d=="string"&&d.startsWith(l),!0);case"prefix":return Array.isArray(l)?l[l.length-1]==null&&(l=l.slice(0,-1)):l=[l],u(c,d=>{if(!Array.isArray(d))return!1;for(let f=0,m=l.length;f<m;f++)if(d[f]!==l[f])return!1;return!0},!0);case"between":return l[0]instanceof Date&&(l[0]=l[0].getTime()),l[1]instanceof Date&&(l[1]=l[1].getTime()),u(c,d=>(0,Oi.compareKeys)(d,l[0])>=0&&(0,Oi.compareKeys)(d,l[1])<=0,!0);case"gt":return u(c,d=>(0,Oi.compareKeys)(d,l)>0);case"ge":return u(c,d=>(0,Oi.compareKeys)(d,l)>=0);case"lt":return u(c,d=>(0,Oi.compareKeys)(d,l)<0);case"le":return u(c,d=>(0,Oi.compareKeys)(d,l)<=0);case"ne":return u(c,d=>(0,Oi.compareKeys)(d,l)!==0,!1,!0);case"sort":return()=>!0;default:throw new qr.ClientError(`Unknown query comparator "${a}"`)}function u(d,f,m,h){let p;m=m&&!s&&t?.indices[d]&&i>3,m&&(e.estimated_count==null&&E_(t)(e),p=e.estimated_count>>4,(isNaN(p)||p>=i)&&(m=!1));let _=0,g=3;function y(T){let R=T[d],I;if(typeof R!="object"||!R||h?I=f(R):Array.isArray(R)?I=R.some(f):R instanceof Date&&(I=f(R.getTime())),m&&(g++,!I&&!y.idFilter&&++_/g*i>p)){let P=Au(e,r.transaction.getReadTxn(),!1,t),Y;y.to?Y=P.flatMap(x=>t.primaryStore.get(x)[y.to]):Y=P.map(bu);let te=new Set(Y);y.idFilter=x=>te.has(bu(x)),y.idFilter.idSet=te}return I}return o(y,"recordFilter"),s&&(y.idFilter=f),y}o(u,"attributeComparator")}function E_(e){function t(r){if(r.estimated_count===void 0){if(r.conditions){let s;if(r.operator==="or"){s=0;for(let i of r.conditions)t(i),s+=i.estimated_count}else{s=1/0;for(let i of r.conditions)t(i),s=isFinite(s)?s*i.estimated_count/go(e.primaryStore):i.estimated_count}return r.estimated_count=s,r.estimated_count}let n=r.comparator||r.search_type;if(n=FA[n]||n,n===Rs.SEARCH_TYPES.EQUALS||!n){let s=r[0]??r.attribute;if(s==null||s===e.primaryKey)r.estimated_count=1;else if(Array.isArray(s)&&s.length>1){let i=Ci(e.attributes,s[0]),a=i.definition?.tableClass||i.elements.definition?.tableClass,c=E_(a)({value:r.value,attribute:s.length>2?s.slice(1):s[1],comparator:"equals"}),l=e.indices[i.relationship.from];r.estimated_count=c+(l?c*go(e.indices[i.relationship.from])/(go(a.primaryStore)||1):c)}else{let i=e.indices[s];r.estimated_count=i?i.getValuesCount(r[1]??r.value):1/0}}else if(n==="contains"||n==="ends_with"||n==="ne"){let s=r[0]??r.attribute,i=e.indices[s];r.value===null&&n==="ne"?r.estimated_count=go(e.primaryStore)-(i?i.getValuesCount(null):0):r.estimated_count=1/0}else if(n==="starts_with"||n==="prefix")r.estimated_count=E6*go(e.primaryStore)+1;else if(n==="between")r.estimated_count=p6*go(e.primaryStore)+1;else if(n==="sort"){let s=r[0]??r.attribute,i=e.indices[s];i?.customIndex?.estimateCountAsSort?r.estimated_count=i.customIndex.estimateCountAsSort(r):r.estimated_count=go(e.primaryStore)+1}else{let s=r[0]??r.attribute,i=e.indices[s];i?.customIndex?.estimateCount?r.estimated_count=i.customIndex.estimateCount(r.value):r.estimated_count=h6*go(e.primaryStore)+1}typeof r.descending=="boolean"&&(r.estimated_count/=2)}return r.estimated_count}return o(t,"estimateConditionForTable"),t}function __(e,t){if(e)if(So=e,Tu.lastIndex=0,T6.test(e))try{if(t&&(t.conditions=[]),js=t??new yu,fm(js,""),Lr!==So.length&&Gt("Unable to parse query, unexpected end of query"),js.parseErrorMessage&&(js.parseError=new UA(t.parseErrorMessage),!t))throw js.parseError;return js}catch(r){if(r.statusCode=400,r.message=`Unable to parse query, ${r.message} at position ${Lr} in '${So}'`,js.parseErrorMessage&&(r.message+=", "+js.parseErrorMessage),t)t.parseError=r;else throw r}else return t??new URLSearchParams(e)}function Gt(e){let t=`${e} at position ${Lr}`;js.parseErrorMessage=js.parseErrorMessage?js.parseErrorMessage+", "+t:t}function fm(e,t){let r=Tu,n,s,i,a,c,l=decodeURIComponent,u;for(;n=r.exec(So);){Lr=r.lastIndex;let[,d,f]=n;a?(d&&Gt(`expected operator, but encountered '${d}'`),a=!1,c=!1):c=!0;let m;switch(f){case"=":s!=null?(d.length<=2?i=d:Gt(`invalid FIQL operator ${d}`),l=Xv):(l=decodeURIComponent,i="equals",d||Gt("attribute must be specified before equality comparator"),s=Ru(d));break;case"==":case"!=":case"<":case"<=":case">":case">=":case"===":case"!==":i=_6[f],l=xA[i]?Xv:decodeURIComponent,d||Gt(`attribute must be specified before comparator ${f}`),s=Ru(d);break;case"&=":case"|=":case"|":case"&":case"":case void 0:if(s==null)s===void 0&&(t&&Gt(`expected '${t}', but encountered ${f[0]?"'"+f[0]+"'":"end of string"}}`),Gt(`no comparison specified before ${f?"'"+f+"'":"end of string"}`));else{e.conditions||Gt("conditions/comparisons are not allowed in a property list");let p={comparator:i,attribute:s||null,value:l(d)};if(i==="eq"&&Zv(p,d),s===""){let _=e.conditions[e.conditions.length-1];_.chainedConditions=_.chainedConditions||[],_.chainedConditions.push(p),_.operator=u}else p_(e,u),e.conditions.push(p)}f==="&"?(u="and",s=void 0):f==="|"?(u="or",s=void 0):f==="&="?(u="and",s=""):f==="|="&&(u="or",s="");break;case",":e.conditions?Gt("conditions/comparisons are not allowed in a property list"):e.push(Ru(d)),s=void 0;break;case"(":Tu.lastIndex=Lr;let h=fm(d?[]:new yu,")");switch(d){case"":p_(e,u),e.conditions.push(h);break;case"limit":switch(h.length){case 1:e.limit=+h[0];break;case 2:e.offset=+h[0],e.limit=h[1]-e.offset;break;default:Gt("limit must have 1 or 2 arguments")}break;case"select":Array.isArray(h[0])&&h.length===1&&!h[0].name?(e.select=h[0],e.select.asArray=!0):h.length===1?e.select=h[0]:h.length===2&&h[1]===""?e.select=h.slice(0,1):e.select=h;break;case"group-by":Gt("group by is not implemented yet");case"sort":e.sort=eU(h);break;default:Gt(`unknown query function call ${d}`)}So[Lr]===","?r.lastIndex=++Lr:a=!0,s=null;break;case"{":e.conditions&&Gt("property sets are not allowed in a queries"),d||Gt("property sets must have a defined parent property name"),Tu.lastIndex=Lr,m=fm([],"}"),m.name=d,e.push(m),So[Lr]===","?r.lastIndex=++Lr:a=!0;break;case"[":if(Tu.lastIndex=Lr,d?(m=fm(new yu,"]"),m.name=d):m=fm(e.conditions?new yu:[],"]"),e.conditions)if(p_(e,u),So[Lr]==="="){l=decodeURIComponent,i="equals",s=Ru(d),r.lastIndex=++Lr;break}else e.conditions.push(m),s=null;else e.push(m);So[Lr]===","?r.lastIndex=++Lr:a=!0;break;case")":case"]":case"}":if(t===f[0]){if(e.conditions)if(s){let p={comparator:i||"equals",attribute:s,value:l(d)};i==="eq"&&Zv(p,d),p_(e,u),e.conditions.push(p)}else d&&Gt("no attribute or comparison specified");else(d||e.length>0&&c)&&e.push(Ru(d));return e}else Gt(t?`expected '${t}', but encountered '${f[0]}'`:`unexpected token '${f[0]}'`);default:Gt(`unexpected operator '${f}'`)}if(t!==")"&&(r=s?R6:Tu,r.lastIndex=Lr),Lr===So.length)return e}t&&Gt(`expected '${t}', but encountered end of string`)}function p_(e,t){e.conditions.length>0&&(e.operator?e.operator!==t&&Gt("Can not mix operators within a condition grouping"):e.operator=t)}function Ru(e){return e.indexOf(".")>-1?e.split(".").map(Ru):decodeURIComponent(e)}function Xv(e){if(e==="null")return null;if(e.indexOf(":")>-1){let[t,r]=e.split(":");if(t==="number")return r[0]==="$"?parseInt(r.slice(1),36):+r;if(t==="boolean")return r==="true";if(t==="date")return new Date(isNaN(r)?decodeURIComponent(r):+r);if(t==="string")return decodeURIComponent(r);throw new qr.ClientError(`Unknown type ${t}`)}return decodeURIComponent(e)}function Zv(e,t){if(t.indexOf("*")>-1)if(t.endsWith("*"))e.comparator="starts_with",e.value=decodeURIComponent(t.slice(0,-1));else throw new qr.ClientError("wildcard can only be used at the end of a string")}function eU(e){let t=tU(e[0]);return e.length>1&&(t.next=eU(e.slice(1))),t}function tU(e){if(Array.isArray(e)){let t=tU(e[0]);return e[0]=t.attribute,t.attribute=e,t}if(typeof e=="string")switch(e[0]){case"-":return{attribute:e.slice(1),descending:!0};case"+":return{attribute:e.slice(1),descending:!1};default:return{attribute:e,descending:!1}}Gt(`Unknown sort type ${e}`)}function bu(e){return Array.isArray(e)?e.join("\0"):e}function go(e){let t=Date.now();return(e.estimatedEntryCountExpires||0)<t&&(e.estimatedEntryCount=e.getStats().entryCount,e.estimatedEntryCountExpires=t+1e4),e.estimatedEntryCount}function y6(e,t,r){return t*r/go(e)}var qr,Rs,Oi,Ra,h6,p6,E6,_6,xA,FA,UA,T6,Tu,R6,Lr,js,So,yu,g_=fe(()=>{qr=w(Ee()),Rs=w(kt()),Oi=require("ordered-binary"),Ra=require("lmdb");hm();$c();h6=.3,p6=.1,E6=.05,_6={"<":"lt","<=":"le",">":"gt",">=":"ge","!=":"ne","==":"eq","===":"equals","!==":"not_equal"},xA={lt:!0,le:!0,gt:!0,ge:!0,ne:!0,eq:!0};o(BA,"executeConditions");o(Au,"searchByIndex");o(Ci,"findAttribute");o(g6,"joinTo");o(S6,"joinFrom");FA={eq:"equals",greater_than:"gt",greaterThan:"gt",greater_than_equal:"ge",greaterThanEqual:"ge",less_than:"lt",lessThan:"lt",less_than_equal:"le",lessThanEqual:"le",not_equal:"ne",notEqual:"ne",equal:"equals",sw:"starts_with",startsWith:"starts_with",ew:"ends_with",endsWith:"ends_with",ct:"contains",">":"gt",">=":"ge","<":"lt","<=":"le","...":"between"};o(mm,"filterByType");o(E_,"estimateCondition");UA=class extends qr.Violation{static{o(this,"SyntaxViolation")}},T6=/[()[\]|!<>.]|(=\w*=)/,Tu=/([^?&|=<>!([{}\]),]*)([([{}\])|,&]|[=<>!]*)/g,R6=/([^&|=[\]{}]+)([[\]{}]|[&|=]*)/g;o(__,"parseQuery");o(Gt,"recordError");o(fm,"parseBlock");o(p_,"assignOperator");o(Ru,"decodeProperty");o(Xv,"typedDecoding");o(Zv,"wildcardDecoding");o(eU,"toSortObject");o(tU,"toSortEntry");yu=class{static{o(this,"Query")}constructor(){this.conditions=[]}[Symbol.iterator](){return this.conditions[Symbol.iterator]()}get(t){for(let r=0;r<this.conditions.length;r++){let n=this.conditions[r];if(n.attribute===t)return n.value}}getAll(){let t=[];for(let r=0,n=this.conditions.length;r<n;r++){let s=this.conditions[r];s.attribute&&t.push(s.value)}return t}};o(bu,"flattenKey");o(go,"estimatedEntryCount");o(y6,"intersectionEstimate")});var rU,Qs,S_=fe(()=>{rU=w(Ws());Aa();Qs=class extends URLSearchParams{static{o(this,"RequestTarget")}#e;pathname;search;id;isCollection;constructor(t){let r,n;if(t&&(r=t.indexOf("?"))>-1){n=t.slice(0,r);let s=t.slice(r+1);super(s),this.search=s}else super(),n=t;this.pathname=n??"",this.#e=t}toString(){return this.#e?this.#e:this.size>0?this.pathname+"?"+super.toString():this.pathname}get url(){return this.toString()}delete(t){super.delete(t),this.conditions&&(this.conditions=this.conditions.filter(r=>r.attribute!==t)),this.#e=void 0}set(t,r){this.delete(t),super.set(t,r),this.conditions?.push({attribute:t,value:r})}append(t,r){super.append(t,r),this.#e=void 0,this.conditions?.push({attribute:t,value:r})}};(0,rU._assignPackageExport)("Resource",Dr)});var aU={};Ce(aU,{MultiPartId:()=>T_,Resource:()=>Dr,contextStorage:()=>Nu,snakeCase:()=>b6,transformForSelect:()=>R_});function b6(e){return e[0].toLowerCase()+e.slice(1).replace(/[a-z][A-Z][a-z]/g,t=>t[0]+"_"+t.slice(1))}function nU(e,t){if(Yc=!1,e==="")return null;if(e=e.slice(1),t.splitSegments){if(e.indexOf("/")===-1)return e===""?(Yc=!0,null):t.coerceId(decodeURIComponent(e));let r=e.split("/"),n=new T_;for(let s=0;s<r.length;s++){let i=r[s];if(!i&&s===r.length-1){Yc=!0;break}n[s]=t.coerceId(decodeURIComponent(i))}return n}else{if(e==="")return Yc=!0,null;e[e.length-1]==="/"&&(Yc=!0)}return t.coerceId(decodeURIComponent(e))}function wn(e,t){n.reliesOnPrototype=!0;let r=t.hasContent;return n;function n(s,i,a){let c,l,u,d;if(r){if(a)d=i,a=a.getContext?.()||a;else if(i)typeof s=="object"&&s&&(!Array.isArray(s)||typeof s[0]=="object")?(d=s,c=d[this.primaryKey]??null,a=i.getContext?.()||i):i?.transaction instanceof co?a=i:d=i;else if(s&&typeof s=="object")d=s,s=void 0,c=d.getId?.()??d[this.primaryKey];else throw new Iu.ClientError(`Invalid argument for data, must be an object, but got ${s}`);c===null&&(u=!0)}else i?a=i.getContext?.()||i:s&&typeof s=="object"&&!Array.isArray(s)&&(a=s);if(c===void 0)if(typeof s=="object"&&s){if(l=s,c=s instanceof URLSearchParams?s.toString():s.url,s.conditions)c=s.id;else if(typeof c=="string")if(this.directURLMapping)c=c.slice(1),l.id=c;else{let _=c.indexOf("?");_>-1&&(l=this.parseQuery(c.slice(_+1),s),c=c.slice(0,_),c===""&&(u=!0));let g=this.parsePath(c,a,l);g?.id!==void 0?(g.query&&(l?l=Object.assign(g.query,l):l=g.query),u=g.isCollection,c=g.id):c=g,c&&(l.id=c)}else if(s[Symbol.iterator]){c=[],u=!0;for(let _ of s){if(typeof _=="object"&&_)break;c.push(_)}c.length===0?c=null:(c.length===1&&(c=c[0]),l.slice&&(l=l.slice(c.length,l.length),l.length===0&&(l=new Qs,l.id=c,u=!1)))}c===void 0&&(c=s.id??null,c==null&&(u=!0))}else c=s,l=new Qs,l.id=c,c==null&&(u=!0);l||(l=new Qs,l.id=c),u&&(l.isCollection=!0);let f;a||(a=Nu.getStore()??{}),l.ensureLoaded!=null||l.async||u?(f={...t},l.ensureLoaded!=null&&(f.ensureLoaded=l.ensureLoaded),l.async&&(f.async=l.async),u&&(f.isCollection=!0)):f=t;let m=this.loadAsInstance,h=p;if((m===!1?!this.explicitContext:this.explicitContext===!1)&&(h=o(_=>Nu.run(a,()=>p(_)),"runAction")),a?.transaction){let _=this.getResource(c,a,f);return _.then?_.then(h):h(_)}else return Mt(a,()=>{let _=this.getResource(c,a,f);return _.then?_.then(h):h(_)},f);function p(_){if(m!==!1&&a.authorize){a.authorize=!1;let g=t.type==="read"?_.allowRead(a.user,l,a):t.type==="update"?_.doesExist?.()===!1?_.allowCreate(a.user,d,a):_.allowUpdate(a.user,d,a):t.type==="create"?_.allowCreate(a.user,d,a):_.allowDelete(a.user,l,a);if(g?.then)return g.then(y=>{if(!y)throw new Iu.AccessViolation(a.user);return typeof d?.then=="function"?d.then(T=>e(_,l,a,T)):e(_,l,a,d)});if(!g)throw new Iu.AccessViolation(a.user)}return typeof d?.then=="function"?d.then(g=>e(_,l,a,g)):e(_,l,a,d)}o(p,"authorizeActionOnResource")}}function $n(e,t){let r=new Iu.ClientError(`The ${e.constructor.name} does not have a ${t} method implemented`,405);r.allow=[],r.method=t;for(let n of["get","put","post","delete","query","move","copy"])typeof e[n]=="function"&&r.allow.push(n);throw r}function HA(e,t,r){let n=e.getRecord?.();if(n){let s=e.getChanges?.();return i=>{let a,c;return e.hasOwnProperty(i)&&typeof(a=e[i])!="function"?a:s&&i in s?s[i]:(c=t?.[i])?c(e,r):n[i]}}else return t?s=>{let i=t[s];return i?i(e,r):e[s]}:s=>e[s]}function R_(e,t){let r=t.propertyResolvers,n=t.getContext?.(),s;if(typeof e=="string")return o(function a(c){return c.then?c.then(a):Array.isArray(c)?c.map(a):HA(c,r,n)(e)},"transform");if(typeof e=="object"){if(e.asArray)return o(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(c);let u=[],d=i(HA(l,r,n));for(let f of e)u.push(d(f));return u},"transform");let a=e.forceNulls;return o(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(m=>m&&typeof m=="object"?c(m):m);let u={},d=i(HA(l,r,n)),f;for(let m of e){let h=d(m);h===void 0&&a&&(h=null),h?.then?(f||(f=[]),f.push(h.then(p=>u[m.name||m]=p))):u[m.name||m]=h}return f?Promise.all(f).then(()=>u):u},"transform")}else throw new Error("Invalid select argument type "+typeof e);function i(a){return c=>{if(typeof c=="string")return a(c);if(typeof c=="object")if(c.name){s||(s={});let l=s[c.name];if(!l){let d=r[c.name]?.definition?.tableClass;l=s[c.name]=R_(c.select||c,d)}let u=a(c.name);return l(u)}else return a(c);else return c}}o(i,"handleProperty")}var sU,iU,Iu,oU,Nu,A6,Dr,Yc,T_,Aa=fe(()=>{sU=require("crypto");Kf();mu();iU=w(Ws()),Iu=w(Ee());Dc();g_();oU=require("async_hooks");S_();Nu=new oU.AsyncLocalStorage,A6={json:"application/json",cbor:"application/cbor",msgpack:"application/x-msgpack",csv:"text/csv"},Dr=class{static{o(this,"Resource")}#e;#t;#r;static transactions;static directURLMapping=!1;static loadAsInstance;constructor(t,r){this.#e=t;let n=r?.getContext?r.getContext()??null:void 0;this.#t=n!==void 0?n:r||null}static get=wn(function(t,r,n,s){let i=t.get?.(r);if(i?.then)return i.then(a);return a(i);function a(c){let l;if((l=r?.select)&&c!=null&&!c.selectApplied){let u=R_(l,t.constructor);return typeof c?.map=="function"?c.map(u):u(c)}return c}},{type:"read",letItLinger:!0,ensureLoaded:!0,async:!0});static put=wn(function(t,r,n,s){if(Array.isArray(s)&&t.#r&&t.constructor.loadAsInstance!==!1){let i=[];for(let a of s){let c=t.constructor,l=a[c.primaryKey],u=c.getResource(l,n,{async:!0});u.then?i.push(u.then(d=>d.put(a,n))):i.push(u.put(a,n))}return Promise.all(i)}return t.put?t.constructor.loadAsInstance===!1?t.put(r,s):t.put(s,r):$n(t,"put")},{hasContent:!0,type:"update"});static patch=wn(function(t,r,n,s){return t.patch?t.constructor.loadAsInstance===!1?t.patch(r,s):t.patch(s,r):$n(t,"patch")},{hasContent:!0,type:"update"});static delete=wn(function(t,r,n,s){return t.delete?t.delete(r):$n(t,"delete")},{hasContent:!1,type:"delete"});static getNewId(){return(0,sU.randomUUID)()}static create(t,r,n){n?n.getContext&&(n=n.getContext()):n=Nu.getStore()??{};let s;return this.loadAsInstance===!1?s=t:t==null?s=r?.[this.primaryKey]??this.getNewId():Array.isArray(t)&&typeof t[0]!="object"?s=r?.[this.primaryKey]??[...t,this.getNewId()]:typeof t!="object"?s=r?.[this.primaryKey]??[t,this.getNewId()]:(s=t?.[this.primaryKey]??this.getNewId(),n=r||{},r=t),Mt(n,async()=>{let i=new this(s,n),a=await i.create?i.create(s,r):$n(i,"create");return n.newLocation=s??a?.[this.primaryKey],n.createdResource=!0,this.loadAsInstance===!1?a:i})}static invalidate=wn(function(t,r,n,s){return t.invalidate?t.invalidate(r):$n(t,"delete")},{hasContent:!1,type:"update"});static post=wn(function(t,r,n,s){return t.#e!=null&&t.update?.(),t.constructor.loadAsInstance===!1?t.post(r,s):t.post(s,r)},{hasContent:!0,type:"create"});static update=wn(function(t,r,n,s){return t.update(r,s)},{hasContent:!0,type:"create"});static connect=wn(function(t,r,n,s){return t.connect?t.constructor.loadAsInstance===!1?t.connect(r,s):t.connect(s,r):$n(t,"connect")},{hasContent:!0,type:"read"});static subscribe=wn(function(t,r,n,s){return t.subscribe?t.subscribe(r):$n(t,"subscribe")},{type:"read"});static publish=wn(function(t,r,n,s){return t.#e!=null&&t.update?.(),t.publish?t.constructor.loadAsInstance===!1?t.publish(r,s):t.publish(s,r):$n(t,"publish")},{hasContent:!0,type:"create"});static search=wn(function(t,r,n){let s=t.search?t.search(r):$n(t,"search"),i=n.select;if(i&&n.hasOwnProperty("select")&&s!=null&&!s.selectApplied){let a=R_(i,t.constructor);return s.map(a)}return s},{type:"read"});static query=wn(function(t,r,n,s){return t.search?t.constructor.loadAsInstance===!1?t.search(r,s):t.search(s,r):$n(t,"search")},{hasContent:!0,type:"read"});static copy=wn(function(t,r,n,s){return t.copy?t.constructor.loadAsInstance===!1?t.copy(r,s):t.copy(s,r):$n(t,"copy")},{hasContent:!0,type:"create"});static move=wn(function(t,r,n,s){return t.move?t.constructor.loadAsInstance===!1?t.move(r,s):t.move(s,r):$n(t,"move")},{hasContent:!0,type:"delete"});async post(t){if(this.#r)return(await this.constructor.create(this.#e,t,this.#t)).#e;$n(this,"post")}static isCollection(t){return t&&t.#r}get isCollection(){return this.#r}static coerceId(t){return t}static parseQuery(t,r){return __(t,r)}static parsePath(t,r,n){let s=t.indexOf(".");if(s>-1){let a=t.slice(s+1),c=r?.headers&&A6[a];if(c)r.requestedContentType=c,t=t.slice(0,s);else if(this.attributes?.find(l=>l.name===a))if(t=t.slice(0,s),n)n.property=a;else return{query:{property:a},id:nU(t,this),isCollection:Yc}}let i=nU(t,this);return Yc?{id:i,isCollection:!0}:i}static getResource(t,r,n){let s,i=r.getContext?.(),a;typeof r.isCollection=="boolean"&&r.hasOwnProperty("isCollection")?a=r.isCollection:a=n?.isCollection;let c=a&&this.Collection||this;if(i||(i=i===void 0?r:{}),i.transaction){let l;if(i.resourceCache?l=i.resourceCache:l=i.resourceCache=[],l.asMap){let u=l.asMap.get(t);if(s=u?.find(d=>d.constructor===c),s)return s;u||l.asMap.set(t,u=[]),u.push(s=new c(t,i))}else{if(s=l.find(u=>u.#e===t&&u.constructor===c),s)return s;if(l.push(s=new c(t,i)),l.length>10){let u=new Map;for(let d of l){let f=d.#e,m=u.get(f);m?m.push(d):u.set(f,[d])}i.resourceCache.length=0,i.resourceCache.asMap=u}}}else s=new c(t,i);return a&&(s.#r=!0),s}subscribe(t){return new qn}connect(t,r){return r?.subscribe!==!1?this.subscribe?.(r):new qn}allowRead(t,r){return t?.role.permission.super_user}allowUpdate(t,r,n){return t?.role.permission.super_user}allowCreate(t,r,n){return t?.role.permission.super_user}allowDelete(t,r){return t?.role.permission.super_user}getId(){return this.#e}getContext(){return this.#t}};(0,iU._assignPackageExport)("Resource",Dr);o(b6,"snakeCase");o(nU,"pathToId");T_=class extends Array{static{o(this,"MultiPartId")}toString(){return this.join("/")}};o(wn,"transactional");o($n,"missingMethod");o(HA,"selectFromObject");o(R_,"transformForSelect")});var Wc,kA=fe(()=>{Wc=class{static{o(this,"ErrorResource")}error;constructor(t){this.error=t}isError=!0;allowRead(){throw this.error}allowUpdate(){throw this.error}allowCreate(){throw this.error}allowDelete(){throw this.error}getId(){throw this.error}getContext(){throw this.error}get(){throw this.error}post(){throw this.error}put(){throw this.error}delete(){throw this.error}connect(){throw this.error}getResource(){return this}publish(){throw this.error}subscribe(){throw this.error}}});var uU={};Ce(uU,{Resources:()=>y_,keyArrayToString:()=>wu,resetResources:()=>I6,resources:()=>ys});function I6(){return ys=new y_,ve.resources=ys,ys}function wu(e){return Array.isArray(e)?e[e.length-1]===null?e.slice(0,-1).join("/")+"/":e.join("/"):e}var cU,lU,y_,ys,Ou=fe(()=>{Dc();kA();cU=w(z()),lU=w(Ee());Pr();y_=class extends Map{static{o(this,"Resources")}isWorker=!0;loginPath;set(t,r,n,s){if(!r)throw new Error("Must provide a resource");t.startsWith("/")&&(t=t.replace(/^\/+/,""));let i={Resource:r,path:t,exportTypes:n,hasSubPaths:!1,relativeURL:""},a=super.get(t);if(a&&(a.Resource.databaseName!==r.databaseName||a.Resource.tableName!==r.tableName)&&!s){let c=new lU.ServerError(`Conflicting paths for ${t}`);cU.default.error(c),i.Resource=new Wc(c)}super.set(t,i);for(let[c,l]of this){let u=2;for(;(u=c.indexOf("/",u))>-1;){let d=this.get(c.slice(0,u));d&&(d.hasSubPaths=!0),u+=2}}}getMatch(t,r){let n=2,s=0,i,a=t.length;for(;n<a;){s=n,n=t.indexOf("/",n),n===-1&&(n=a);let u=n===a?t:t.slice(0,n),d=this.get(u),f=-1;if(!d&&n===a&&(f=u.indexOf("?",s),f!==-1)){let m=u.slice(0,f);d=this.get(m)}if(d&&(!r||d.exportTypes?.[r]!==!1)){if(d.relativeURL=t.slice(f!==-1?f:n),!d.hasSubPaths)return d;i=d}n+=2}if(i)return i;let c=t.indexOf("?"),l=c>-1?t.slice(0,c):t;return i=this.get(l),!i&&l.indexOf(".")>-1&&(i=this.get(l.split(".")[0])),i&&(!r||i.exportTypes?.[r]!==!1)?i.relativeURL=c>-1?t.slice(c):"":i||(i=this.get(""),i&&(!r||i.exportTypes?.[r]!==!1)&&(t.charAt(0)!=="/"&&(t="/"+t),i.relativeURL=t)),i}getResource(t,r){let n=this.getMatch(t);if(n)return t=n.relativeURL,n.Resource.getResource(this.pathToId(t,n.Resource),r)}call(t,r,n){return Mt(r,async()=>{let s=this.getMatch(t);if(s)return t=s.relativeURL,n(s.Resource,s.path,t)})}setRepresentation(t,r,n){}};o(I6,"resetResources");o(wu,"keyArrayToString")});function $A(e,t,r,n,s){let i=e.primaryStore.env.path,a=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=fU,N6(e.primaryStore,e.auditStore)):(c=dU,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{mU(dU[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[a];u||(u=l[a]=new Map,u.envs=l,u.tableId=a,u.store=e.primaryStore),t=wu(t);let d=new qA(r);d.startTime=n;let f=u.get(t);return f?f.push(d):(u.set(t,f=[d]),f.tables=u,f.key=t),d.subscriptions=f,d}function mU(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),hU(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=vt(s),a=e[i.tableId];if(!a)continue;let c=i.recordId,l=wu(c),u=0;do{let d=a.get(l);if(d){for(let m of d)if(!(u>0&&!(m.includeDescendants&&!(m.onlyChildren&&u>1)))){if(m.startTime>=n){(0,GA.info)("omitting",c,m.startTime,n);continue}try{let h;m.supportsTransactions&&m.txnInProgress!==i.version&&(h=!0,m.txnInProgress||(r?r.push(m):r=[m]),m.txnInProgress=i.version),m.listener(c,i,n,h)}catch(h){console.error(h),(0,GA.info)(h)}}}if(l==null)break;let f=l.lastIndexOf?.("/",l.length-2);f!==l.length-1&&u++,f>-1?l=l.slice(0,f+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 N6(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:a,txnId:c})=>{let l=fU[s];if(!l)return;let u=o(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),l.txnTime=r.threadLocalWrites[0]||Date.now();try{mU(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function hU(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function pU(e){return e.nextTransaction||($A({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),hU(e)),e.nextTransaction}var GA,dU,fU,qA,VA=fe(()=>{GA=w(z());mu();Ou();lo();dU=Object.create(null),fU=Object.create(null);o($A,"addSubscription");qA=class extends qn{static{o(this,"Subscription")}listener;subscriptions;startTime;includeDescendants;supportsTransactions;onlyChildren;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"}}};o(mU,"notifyFromTransactionData");o(N6,"listenToCommits");o(hU,"nextTransaction");o(pU,"whenNextTransaction")});var _U=M((bNe,EU)=>{"use strict";var KA=class{static{o(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};EU.exports=KA});var SU=M((NNe,gU)=>{"use strict";var YA=class{static{o(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};gU.exports=YA});var pm=M((ONe,RU)=>{"use strict";var TU=ce(),w6=(k(),v(K)),{RecordEncoder:O6}=($c(),v(Jv));TU.initSync();var C6=TU.get(w6.CONFIG_PARAMS.STORAGE_CACHING)!==!1,WA=class{static{o(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=C6&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:O6})}};RU.exports=WA});var Em=M((PNe,yU)=>{"use strict";var Vn=ce(),As=(k(),v(K));Vn.initSync();var A_=class{static{o(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=Vn.get(As.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||Vn.get(As.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||Vn.get(As.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",Vn.get(As.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=Vn.get(As.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),Vn.get(As.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=Vn.get(As.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),Vn.get(As.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=Vn.get(As.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),Vn.get(As.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=Vn.get(As.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=Vn.get(As.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};yU.exports=A_;A_.MAX_DBS=1e4});var Et=M((DNe,DU)=>{"use strict";var jA=require("lmdb"),Js=require("fs-extra"),Kn=require("path"),b_=yn(),IU=z(),On=en().LMDB_ERRORS_ENUM,I_=SU(),QA=pm(),NU=Em(),ba=kt(),AU=(k(),v(K)),{table:P6,resetDatabases:L6}=(Le(),v(ft)),bU=ce(),Xs=ba.INTERNAL_DBIS_NAME,wU=ba.DBI_DEFINITION_NAME,D6="data.mdb",M6="lock.mdb",_m=".mdb",v6="-lock",zA=class{static{o(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=bs(t,r),this.key_type=this.dbi[ba.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[ba.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new jA.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function N_(e,t){if(e===void 0)throw new Error(On.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(On.ENV_NAME_REQUIRED)}o(N_,"pathEnvNameValidation");async function JA(e,t,r=!0){try{await Js.access(e)}catch(n){throw n.code==="ENOENT"?new Error(On.INVALID_BASE_PATH):n}try{let n=Kn.join(e,t+_m);return await Js.access(n,Js.constants.R_OK|Js.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Js.access(Kn.join(e,t,D6),Js.constants.R_OK|Js.constants.F_OK),Kn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(On.INVALID_ENVIRONMENT)}else throw new Error(On.INVALID_ENVIRONMENT);throw n}}o(JA,"validateEnvironmentPath");function w_(e,t){if(b_.validateEnv(e),t===void 0)throw new Error(On.DBI_NAME_REQUIRED)}o(w_,"validateEnvDBIName");async function U6(e,t,r=!1,n=!1){N_(e,t);let s=Kn.basename(e);t=t.toString();let i=bU.get(AU.CONFIG_PARAMS.DATABASES);i||bU.setProperty(AU.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await JA(e,t,n),OU(e,t,r)}catch(a){if(a.message===On.INVALID_ENVIRONMENT){let c=Kn.join(e,t);await Js.mkdirp(n?c:e);let l=new NU(n?c:c+_m,!1),u=jA.open(l);u.dbis=Object.create(null);let d=new QA(!1);u.openDB(Xs,d),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let f=XA(e,t,r);return u[ba.ENVIRONMENT_NAME_KEY]=f,global.lmdb_map[f]=u,u}throw a}}o(U6,"createEnvironment");async function x6(e,t,r,n=!0){N_(e,t),t=t.toString();let s=Kn.join(e,t);return P6({table:t,database:Kn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}o(x6,"copyEnvironment");async function OU(e,t,r=!1){N_(e,t),t=t.toString();let n=XA(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 JA(e,t),i=Kn.join(e,t+_m),a=s!=i,c=new NU(s,a),l=jA.open(c);l.dbis=Object.create(null);let u=PU(l);for(let d=0;d<u.length;d++)bs(l,u[d]);return l[ba.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}o(OU,"openEnvironment");async function B6(e,t,r=!1){N_(e,t),t=t.toString();let n=Kn.join(e,t+_m),s=await JA(e,t);if(global.lmdb_map!==void 0){let i=XA(e,t,r);if(global.lmdb_map[i]){let a=global.lmdb_map[i];await CU(a),delete global.lmdb_map[i]}}await Js.remove(s),await Js.remove(s===n?s+v6:Kn.join(Kn.dirname(s),M6))}o(B6,"deleteEnvironment");async function CU(e){b_.validateEnv(e);let t=e[ba.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}o(CU,"closeEnvironment");function XA(e,t,r=!1){let s=`${Kn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}o(XA,"getCachedEnvironmentName");function F6(e){b_.validateEnv(e);let t=Object.create(null),r=bs(e,Xs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Xs)try{t[n]=Object.assign(new I_,s)}catch{IU.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}o(F6,"listDBIDefinitions");function PU(e){b_.validateEnv(e);let t=[],r=bs(e,Xs);for(let{key:n}of r.getRange({start:!1}))n!==Xs&&t.push(n);return t}o(PU,"listDBIs");function H6(e,t){let n=bs(e,Xs).getEntry(t),s=new I_;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{IU.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}o(H6,"getDBIDefinition");function LU(e,t,r,n=!r){if(w_(e,t),t=t.toString(),t===Xs)throw new Error(On.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return bs(e,t)}catch(s){if(s.message===On.DBI_DOES_NOT_EXIST){let i=new QA(r,n===!0),a=e.openDB(t,i),c=new I_(r===!0,n);return a[wU]=c,bs(e,Xs).putSync(t,c),e.dbis[t]=a,a}throw s}}o(LU,"createDBI");function bs(e,t){if(w_(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Xs?r=H6(e,t):r=new I_,r===void 0)throw new Error(On.DBI_DOES_NOT_EXIST);let n;try{let s=new QA(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(On.DBI_DOES_NOT_EXIST):s}return n[wU]=r,e.dbis[t]=n,n}o(bs,"openDBI");function k6(e,t){w_(e,t),t=t.toString();let r=bs(e,t),n=r.getStats();return r[ba.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}o(k6,"statDBI");async function G6(e,t){try{let r=Kn.join(e,t+_m);return(await Js.stat(r)).size}catch{throw new Error(On.INVALID_ENVIRONMENT)}}o(G6,"environmentDataSize");function q6(e,t){if(w_(e,t),t=t.toString(),t===Xs)throw new Error(On.CANNOT_DROP_INTERNAL_DBIS_NAME);bs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],bs(e,Xs).removeSync(t)}o(q6,"dropDBI");function $6(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{bs(e,i)}catch(a){if(a.message===On.DBI_DOES_NOT_EXIST)LU(e,i,i!==t,i===t),n=!0;else throw a}}n&&L6()}o($6,"initializeDBIs");DU.exports={openDBI:bs,openEnvironment:OU,createEnvironment:U6,listDBIs:PU,listDBIDefinitions:F6,createDBI:LU,dropDBI:q6,statDBI:k6,deleteEnvironment:B6,initializeDBIs:$6,TransactionCursor:zA,environmentDataSize:G6,copyEnvironment:x6,closeEnvironment:CU}});var UU=M((vNe,vU)=>{"use strict";var ZA=Et(),V6=z(),MU=en().LMDB_ERRORS_ENUM;vU.exports=K6;async function K6(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 a=t[i];if(a.startsWith(`${e.schema}.`)||a.startsWith(`txn.${e.schema}.`))try{await ZA.closeEnvironment(global.lmdb_map[a])}catch(c){if(c.message!==MU.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await ZA.closeEnvironment(global.lmdb_map[n]),await ZA.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==MU.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){V6.error(t)}}o(K6,"cleanLMDBMap")});var To=M((xNe,Y6)=>{Y6.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_hostname:{hash_attribute:"id",name:"hdb_analytics_hostname",schema:"system",attributes:[{attribute:"id"},{attribute:"hostname"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",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 Zs=M((BNe,FU)=>{var W6=To(),{promisify:z6}=require("util"),{getDatabases:BU}=(Le(),v(ft));FU.exports={setSchemaDataToGlobal:xU,getTableSchema:j6,getSystemSchema:Q6,setSchemaDataToGlobalAsync:z6(xU)};function xU(e){global.hdb_schema=BU(),e&&e()}o(xU,"setSchemaDataToGlobal");function j6(e,t,r){let n=BU()[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`)}o(j6,"getTableSchema");function Q6(){return W6}o(Q6,"getSystemSchema")});var JU=M((kNe,QU)=>{"use strict";var eb=require("recursive-iterator"),J6=require("alasql"),tb=require("clone"),HU=ie(),{handleHDBError:kU,hdbErrors:X6}=Ee(),{HDB_ERROR_MSGS:GU,HTTP_STATUS_CODES:qU}=X6,{getDatabases:Z6}=(Le(),v(ft)),e8=["DISTINCT_ARRAY"],$U=Symbol("validateTables"),rb=Symbol("validateTable"),HNe=Symbol("getAllColumns"),VU=Symbol("validateAllColumns"),O_=Symbol("findColumn"),KU=Symbol("validateOrderBy"),gm=Symbol("validateSegment"),nb=Symbol("validateColumn"),YU=Symbol("setColumnsForTable"),WU=Symbol("checkColumnsForAsterisk"),zU=Symbol("validateGroupBy"),jU=Symbol("hasColumns"),sb=class{static{o(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[$U](),this[WU](),this[VU]()}[$U](){if(this[jU]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[rb](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[rb](t.table)})}}[jU](){let t=!1,r=new eb(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[rb](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=Z6();if(!r[t.databaseid])throw kU(new Error,GU.SCHEMA_NOT_FOUND(t.databaseid),qU.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw kU(new Error,GU.TABLE_NOT_FOUND(t.databaseid,t.tableid),qU.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=tb(s);i.table=tb(t),this.attributes.push(i)})}[O_](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)}[WU](){let t=new eb(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[YU](r.tableid)}[YU](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new J6.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[VU](){this[gm](this.statement.columns,!1),this[gm](this.statement.joins,!1),this[gm](this.statement.where,!1),this[zU](this.statement.group,!1),this[gm](this.statement.order,!0)}[gm](t,r){if(!t)return;let n=new eb(t),s=[];for(let{node:i,path:a}of n)!HU.isEmpty(i)&&!HU.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[KU](i):s.push(this[nb](i)));return s}[zU](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&e8.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=tb(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[O_](n)[0];s&&r.push(s)}}}),this.statement.group.forEach(n=>{let s=null;if(!n.columnid)r.forEach((i,a)=>{if(i.toString()===n.toString()){s=i,r.splice(a,1);return}});else{let i=this[O_](n);if(!i||i.length===0)throw`unknown column '${group_column.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${group_column.toString()}' in group by`;r.forEach((a,c)=>{if(a.attribute===i[0].attribute&&a.table.tableid===i[0].table.tableid){s=a,r.splice(c,1);return}})}if(!s)throw`group by column '${group_column.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`}[KU](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[nb](t)}[nb](t){let r=this[O_](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]}};QU.exports=sb});var ZU=M((qNe,XU)=>{"use strict";var ib=class{static{o(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")}};XU.exports=ib});var tx=M((VNe,ex)=>{"use strict";var ob=class{static{o(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};ex.exports=ob});var nx=M((YNe,rx)=>{"use strict";var ab=class{static{o(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}};rx.exports=ab});var ix=M((zNe,sx)=>{"use strict";var cb=class{static{o(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};sx.exports=cb});var jc=M((ZNe,cx)=>{"use strict";var t8=Et(),r8=tx(),n8=nx(),s8=ix(),Pi=yn(),Sm=en().LMDB_ERRORS_ENUM,i8=kt(),Ro=(k(),v(K)),o8=ie(),a8=require("uuid"),QNe=require("lmdb"),{handleHDBError:c8,hdbErrors:l8}=Ee(),{OVERFLOW_MARKER:JNe,MAX_SEARCH_KEY_LENGTH:XNe}=i8,ox=ce();ox.initSync();var C_=ox.get(Ro.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),lb=Ro.TIME_STAMP_NAMES_ENUM.CREATED_TIME,zc=Ro.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function u8(e,t,r,n,s=Pi.getNextMonotonicTime()){mb(e,t,r,n),ub(e,t,r);let i=new r8,a=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];ax(u,!0,s);let d=d8(e,t,r,u),f=u[t];a.push(d),c.push(f)}return db(a,c,n,i,s)}o(u8,"insertRecords");function d8(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let a=r[i];if(a===t||n.hasOwnProperty(a)===!1)continue;let c=n[a];if(typeof c=="function"){let d=c([[{}]]);Array.isArray(d)&&(c=d[0][Ro.FUNC_VAL],n[a]=c)}let l=Pi.getIndexedValues(c),u=e.dbis[a];if(l){C_&&u.prefetch(l.map(d=>({key:d,value:s})),P_);for(let d=0,f=l.length;d<f;d++)u.put(l[d],s)}}C_&&e.dbis[t].prefetch([s],P_),e.dbis[t].put(s,n,n[zc])})}o(d8,"insertRecord");function f8(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}o(f8,"removeSkippedRecords");function ax(e,t,r){let n=r>0;(n||!Number.isInteger(e[zc]))&&(e[zc]=r||(r=Pi.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[lb]))&&(e[lb]=r||Pi.getNextMonotonicTime()):delete e[lb]}o(ax,"setTimestamps");function ub(e,t,r){r.indexOf(Ro.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(Ro.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(Ro.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(Ro.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),t8.initializeDBIs(e,t,r)}o(ub,"initializeTransaction");async function m8(e,t,r,n,s=Pi.getNextMonotonicTime()){mb(e,t,r,n),ub(e,t,r);let i=new n8,a=[],c=[],l=[];for(let u=0;u<n.length;u++){let d=n[u],f=d[t],m;try{m=fb(e,t,d,f,i,!0,s)}catch{i.skipped_hashes.push(f),a.push(u);continue}c.push(m),l.push(f)}return db(c,l,n,i,s,a)}o(m8,"updateRecords");async function h8(e,t,r,n,s=Pi.getNextMonotonicTime()){try{mb(e,t,r,n)}catch(l){throw c8(l,l.message,l8.HTTP_STATUS_CODES.BAD_REQUEST)}ub(e,t,r);let i=new s8,a=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],d;o8.isEmpty(u[t])?(d=a8.v4(),u[t]=d):d=u[t];let f=fb(e,t,u,d,i,!1,s);a.push(f),c.push(d)}return db(a,c,n,i,s)}o(h8,"upsertRecords");async function db(e,t,r,n,s,i=[]){let a=await Promise.all(e);for(let c=0,l=a.length;c<l;c++)a[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Pi.getNextMonotonicTime(),f8(r,i),n}o(db,"finalizeWrite");function fb(e,t,r,n,s,i=!1,a){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,d=u;if(!u){if(i)return!1;u={}}if(ax(r,!d,a),Number.isInteger(r[zc])&&u[zc]>r[zc])return!1;d&&s.original_records.push(u);let f,m=o(()=>{for(let p in r){if(!r.hasOwnProperty(p)||p===t)continue;let _=r[p],g=e.dbis[p];if(g===void 0)continue;let y=u[p];if(typeof _=="function"){let R=_([[u]]);Array.isArray(R)&&(_=R[0][Ro.FUNC_VAL],r[p]=_)}if(_===y)continue;let T=Pi.getIndexedValues(y);if(T){C_&&g.prefetch(T.map(R=>({key:R,value:n})),P_);for(let R=0,I=T.length;R<I;R++)g.remove(T[R],n)}if(T=Pi.getIndexedValues(_),T){C_&&g.prefetch(T.map(R=>({key:R,value:n})),P_);for(let R=0,I=T.length;R<I;R++)g.put(T[R],n)}}let h={...u,...r};c.put(n,h,h[zc])},"doPut");return l?f=c.ifVersion(n,l.version,m):f=c.ifNoExists(n,m),f.then(h=>h?!0:fb(e,t,r,n,s,i,a))}o(fb,"updateUpsertRecord");function p8(e,t,r){if(Pi.validateEnv(e),t===void 0)throw new Error(Sm.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Sm.WRITE_ATTRIBUTES_REQUIRED):new Error(Sm.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}o(p8,"validateBasic");function mb(e,t,r,n){if(p8(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Sm.RECORDS_REQUIRED):new Error(Sm.RECORDS_MUST_BE_ARRAY)}o(mb,"validateWrite");function P_(){}o(P_,"noop");cx.exports={insertRecords:u8,updateRecords:m8,upsertRecords:h8}});var ct=M((twe,lx)=>{"use strict";var Cn=require("validate.js");Cn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||Cn.validators.type.checks[t](e)?null:` must be a '${t}' value`};Cn.validators.type.checks={Object:o(function(e){return Cn.isObject(e)&&!Cn.isArray(e)},"Object"),Array:Cn.isArray,Integer:Cn.isInteger,Number:Cn.isNumber,String:Cn.isString,Date:Cn.isDate,Boolean:o(function(e){return typeof e=="boolean"},"Boolean")};Cn.validators.hasValidFileExt=function(e,t){return Cn.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};lx.exports={validateObject:E8,validateObjectAsync:_8,validateBySchema:g8};function E8(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=Cn(e,t,{format:"flat"});return r?new Error(r):null}o(E8,"validateObject");async function _8(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await Cn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}o(_8,"validateObjectAsync");function g8(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}o(g8,"validateBySchema")});var dx=M((nwe,ux)=>{"use strict";var S8=require("uuid"),hb=class{static{o(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||S8.v4(),this.schema_table=`${this.schema}.${this.table}`}};ux.exports=hb});var L_=M((iwe,fx)=>{"use strict";var T8=dx(),pb=class extends T8{static{o(this,"LMDBCreateAttributeObject")}constructor(t,r,n,s,i=!0,a=!1){super(t,r,n,s),this.dup_sort=i,this.is_hash_attribute=a}};fx.exports=pb});var hx=M((awe,mx)=>{"use strict";mx.exports=y8;var R8="inserted";function y8(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===R8?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}o(y8,"returnObject")});var D_=M((uwe,Ex)=>{"use strict";var A8=(k(),v(K)),Eb=Et(),b8=jc(),{getSystemSchemaPath:I8,getSchemaPath:N8}=yt(),lwe=To(),{validateBySchema:w8}=ct(),Tm=require("joi"),O8=L_(),C8=hx(),{handleHDBError:P8,hdbErrors:L8,ClientError:D8}=Ee(),px=ie(),{HTTP_STATUS_CODES:M8}=L8,v8="inserted";Ex.exports=U8;async function U8(e){let t=w8(e,Tm.object({database:Tm.string(),schema:Tm.string(),table:Tm.string().required(),attribute:Tm.string().required()}));if(t)throw new D8(t.message);let r=!e.skip_table_check&&px.checkGlobalSchemaTable(e.schema,e.table);if(r)throw P8(new Error,r,M8.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=px.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 O8(e.schema,e.table,e.attribute,e.id);try{let i=await Eb.openEnvironment(N8(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${create_attribute_obj.attribute}' already exists in ${e.schema}.${e.table}`);Eb.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let a=await Eb.openEnvironment(I8(),A8.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await b8.insertRecords(a,HDB_TABLE_INFO.hash_attribute,hdbAttributeAttributes,[s]);return C8(v8,c,{records:[s]},l)}catch(i){throw i}}o(U8,"lmdbCreateAttribute")});var Di=M((fwe,gx)=>{"use strict";var _x=ie(),x8=(k(),v(K)),Cu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Li=require("joi"),Ia={schema_format:{pattern:Cu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},B8=Li.alternatives(Li.string().min(1).max(Ia.schema_length.maximum).pattern(Cu).messages({"string.pattern.base":"{:#label} "+Ia.schema_format.message}),Li.number(),Li.array()).required(),F8=Li.alternatives(Li.string().min(1).max(Ia.schema_length.maximum).pattern(Cu).messages({"string.pattern.base":"{:#label} "+Ia.schema_format.message}),Li.number()),H8=Li.alternatives(Li.string().min(1).max(Ia.schema_length.maximum).pattern(Cu).messages({"string.pattern.base":"{:#label} "+Ia.schema_format.message}),Li.number()).required();function k8(e,t){return t?typeof t!="string"?`'${property_name}' must be a string`:t.length?t.length>Ia.schema_length.maximum?`'${property_name}' maximum of 250 characters`:Cu.test(t)?"":`'${property_name}' has illegal characters`:`'${property_name}' must be at least one character`:`'${property_name}' is required`}o(k8,"checkValidTable");function G8(e,t){return _x.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}o(G8,"validateSchemaExists");function q8(e,t){let r=t.state.ancestors[0].schema;return _x.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}o(q8,"validateTableExists");function $8(e,t){return e.toLowerCase()===x8.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${hdb_terms.SYSTEM_SCHEMA_NAME}' name is reserved`):e}o($8,"validateSchemaName");gx.exports={commonValidators:Ia,schemaRegex:Cu,hdbSchemaTable:B8,validateSchemaExists:G8,validateTableExists:q8,validateSchemaName:$8,checkValidTable:k8,hdbDatabase:F8,hdbTable:H8}});var gb=M((hwe,Tx)=>{var{hdbTable:V8,hdbDatabase:Sx}=Di(),K8=ct(),_b=require("joi"),Y8={undefined:"undefined",null:"null"},W8=o((e,t)=>{let r=Object.keys(e),n=r.length,s;for(let i=0;i<n;i++){let a=r[i];(!a||a.length===0||Y8[a]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${a}'`:s+=`. Invalid attribute name: '${a}'`)}return s?t.message(s):e},"customRecordsVal"),z8=_b.object({database:Sx,schema:Sx,table:V8,records:_b.array().items(_b.object().custom(W8)).required()});Tx.exports=function(e){return K8.validateBySchema(e,z8)}});var Rm=M((_we,yx)=>{"use strict";var yo=ie(),Rx=z(),Ewe=gb(),{getDatabases:j8}=(Le(),v(ft)),{ClientError:Qc}=Ee();yx.exports=Q8;function Q8(e){if(yo.isEmpty(e))throw new Qc("invalid update parameters defined.");if(yo.isEmptyOrZeroLength(e.schema))throw new Qc("invalid schema specified.");if(yo.isEmptyOrZeroLength(e.table))throw new Qc("invalid table specified.");if(!Array.isArray(e.records))throw new Qc("records must be an array");let t=j8()[e.schema]?.[e.table];if(yo.isEmpty(t))throw new Qc(`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(a=>{if(i&&yo.isEmptyOrZeroLength(a[r]))throw Rx.error("a valid hash attribute must be provided with update record:",a),new Qc("a valid hash attribute must be provided with update record, check log for more info");if(!yo.isEmptyOrZeroLength(a[r])&&(a[r]==="null"||a[r]==="undefined"))throw Rx.error(`a valid hash value must be provided with ${e.operation} record:`,a),new Qc(`Invalid hash value: '${a[r]}' is not a valid hash attribute value, check log for more info`);!yo.isEmpty(a[r])&&a[r]!==""&&n.has(yo.autoCast(a[r]))&&(a.skip=!0),n.add(yo.autoCast(a[r]));for(let c in a)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}o(Q8,"insertUpdateValidate")});var M_=M((Swe,bx)=>{"use strict";var Ax=ie(),J8=(k(),v(K)),X8=z(),Z8=D_(),e5=L_(),t5=Ao(),{SchemaEventMsg:r5}=ei(),n5="already exists in";bx.exports=s5;async function s5(e,t,r){if(Ax.isEmptyOrZeroLength(r))return r;let n=[];Ax.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 i5(e,t.schema,t.name,i)})),s}o(s5,"lmdbCheckForNewAttributes");async function i5(e,t,r,n){let s=new e5(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await o5(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(n5))X8.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}o(i5,"createNewAttribute");async function o5(e){let t;return t=await Z8(e),t5.signalSchemaChange(new r5(process.pid,J8.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}o(o5,"createAttribute")});var Pu=M((Rwe,Ix)=>{"use strict";var Sb=class{static{o(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}};Ix.exports=Sb});var wx=M((Awe,Nx)=>{"use strict";var a5=Pu(),c5=(k(),v(K)).OPERATIONS_ENUM,Tb=class extends a5{static{o(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(c5.INSERT,r,n,s,i),this.records=t}};Nx.exports=Tb});var Cx=M((Iwe,Ox)=>{"use strict";var l5=Pu(),u5=(k(),v(K)).OPERATIONS_ENUM,Rb=class extends l5{static{o(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,a=void 0){super(u5.UPDATE,n,s,i,a),this.records=t,this.original_records=r}};Ox.exports=Rb});var Lx=M((wwe,Px)=>{"use strict";var d5=Pu(),f5=(k(),v(K)).OPERATIONS_ENUM,yb=class extends d5{static{o(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,a=void 0){super(f5.UPSERT,n,s,i,a),this.records=t,this.original_records=r}};Px.exports=yb});var Mx=M((Cwe,Dx)=>{"use strict";var m5=Pu(),h5=(k(),v(K)).OPERATIONS_ENUM,Ab=class extends m5{static{o(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(h5.DELETE,n,s,t,i),this.original_records=r}};Dx.exports=Ab});var ym=M((Dwe,Bx)=>{"use strict";var Lwe=require("path"),vx=Et(),p5=wx(),E5=Cx(),_5=Lx(),g5=Mx(),Lu=kt(),Ux=ie(),{CONFIG_PARAMS:S5}=(k(),v(K)),xx=ce();xx.initSync();var v_=(k(),v(K)).OPERATIONS_ENUM,{getTransactionAuditStorePath:T5}=yt();Bx.exports=R5;async function R5(e,t){if(xx.get(S5.LOGGING_AUDITLOG)===!1)return;let r=T5(e.schema,e.table),n=await vx.openEnvironment(r,e.table,!0),s=y5(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){vx.initializeDBIs(n,Lu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Lu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[Lu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[Lu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),Ux.isEmpty(s.user_name)||n.dbis[Lu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let a=0;a<s.hash_values.length;a++)n.dbis[Lu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[a],i)})}}o(R5,"writeTransaction");function y5(e,t){let r=Ux.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===v_.INSERT)return new p5(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===v_.UPDATE)return new E5(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===v_.UPSERT)return new _5(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===v_.DELETE)return new g5(t.deleted,t.original_records,r,t.txn_time,e.__origin)}o(y5,"createTransactionObject")});var bb=M((Uwe,Fx)=>{"use strict";var A5=Rm(),vwe=qf(),Am=(k(),v(K)),b5=$f(),I5=jc().insertRecords,N5=Et(),w5=z(),O5=M_(),{getSchemaPath:C5}=yt(),P5=ym();Fx.exports=L5;async function L5(e){try{let{schemaTable:t,attributes:r}=A5(e);b5(e,r,t.hash_attribute),e.schema!==Am.SYSTEM_SCHEMA_NAME&&(r.includes(Am.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Am.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Am.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Am.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await O5(e.hdb_auth_header,t,r),s=C5(e.schema,e.table),i=await N5.openEnvironment(s,e.table),a=await I5(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await P5(e,a)}catch(c){w5.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:a.txn_time}}catch(t){throw t}}o(L5,"lmdbCreateRecords")});var Gx=M((Bwe,kx)=>{"use strict";var Hx=(k(),v(K)),D5=bb(),M5=qf(),v5=require("fs-extra"),{getSchemaPath:U5}=yt();kx.exports=x5;async function x5(e){let t=[{name:e.schema,createddate:Date.now()}],r=new M5(Hx.SYSTEM_SCHEMA_NAME,Hx.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await D5(r),await v5.mkdirp(U5(e.schema))}o(x5,"lmdbCreateSchema")});var $x=M((Hwe,qx)=>{"use strict";var Ib=class{static{o(this,"DeleteRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.deleted=t,this.skipped=r,this.txn_time=n,this.original_records=s}};qx.exports=Ib});var Wx=M((Vwe,Yx)=>{"use strict";var Vx=Et(),Nb=yn(),wb=en().LMDB_ERRORS_ENUM,B5=kt(),Kx=z(),Gwe=ie(),F5=require("lmdb"),H5=$x(),k5=(k(),v(K)),{OVERFLOW_MARKER:qwe,MAX_SEARCH_KEY_LENGTH:$we}=B5,G5=k5.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function q5(e,t,r,n){if(Nb.validateEnv(e),t===void 0)throw new Error(wb.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(wb.IDS_REQUIRED):new Error(wb.IDS_MUST_BE_ITERABLE);try{let s=Vx.listDBIs(e);Vx.initializeDBIs(e,t,s);let i=new H5,a,c=[],l=[];for(let m=0,h=r.length;m<h;m++)try{a=r[m];let p=e.dbis[t].get(a);if(!p||n&&p[G5]>n){i.skipped.push(a);continue}let _=e.dbis[t].ifVersion(a,F5.IF_EXISTS,()=>{e.dbis[t].remove(a);for(let g=0;g<s.length;g++){let y=s[g];if(!p.hasOwnProperty(y)||y===t)continue;let T=e.dbis[y],R=p[y];if(R!=null)try{let I=Nb.getIndexedValues(R);if(I)for(let P=0,Y=I.length;P<Y;P++)T.remove(I[P],a)}catch{Kx.warn(`cannot delete from attribute: ${y}, ${R}:${a}`)}}});c.push(_),l.push(a),i.original_records.push(p)}catch(p){Kx.warn(p),i.skipped.push(a)}let u=[],d=await Promise.all(c);for(let m=0,h=d.length;m<h;m++)d[m]===!0?i.deleted.push(l[m]):(i.skipped.push(l[m]),u.push(m));let f=0;for(let m=0;m<u.length;m++){let h=u[m];i.original_records.splice(h-f,1),f++}return i.txn_time=Nb.getNextMonotonicTime(),i}catch(s){throw s}}o(q5,"deleteRecords");Yx.exports={deleteRecords:q5}});var bm=M((Ywe,jx)=>{"use strict";var Du=ie(),$5=Wx(),V5=Et(),{getSchemaPath:K5}=yt(),Y5=ym(),W5=z();jx.exports=z5;async function z5(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 zx([],[]);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=K5(e.schema,e.table),i=await V5.openEnvironment(s,e.table),a=await $5.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await Y5(e,a)}catch(c){W5.error(`unable to write transaction due to ${c.message}`)}return zx(a.deleted,a.skipped,a.txn_time)}catch(s){throw s}}o(z5,"lmdbDeleteRecords");function zx(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}}o(zx,"createDeleteResponse")});var Cb=M((jwe,Qx)=>{"use strict";var j5=(k(),v(K)),zwe=yn();function Ob(e,t){let r=Object.create(null);if(t.length===1&&j5.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}o(Ob,"parseRow");function Q5(e,t,r,n){let s=Ob(r,e);n.push(s)}o(Q5,"searchAll");function J5(e,t,r,n){let s=Ob(r,e);n[t]=s}o(J5,"searchAllToMap");function X5(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}o(X5,"iterateDBI");function Jc(e,t,r,n,s){let i=Object.create(null);i[s]=e;let a;n===s?a=e:(a=t,n!==void 0&&(i[n]=a)),r[0].push(a),r[1].push(i)}o(Jc,"pushResults");function Z5(e,t,r,n,s,i){t.toString().endsWith(e)&&Jc(t,r,n,s,i)}o(Z5,"endsWith");function e9(e,t,r,n,s,i){t.toString().includes(e)&&Jc(t,r,n,s,i)}o(e9,"contains");function t9(e,t,r,n,s,i){t>e&&Jc(t,r,n,s,i)}o(t9,"greaterThanCompare");function r9(e,t,r,n,s,i){t>=e&&Jc(t,r,n,s,i)}o(r9,"greaterThanEqualCompare");function n9(e,t,r,n,s,i){t<e&&Jc(t,r,n,s,i)}o(n9,"lessThanCompare");function s9(e,t,r,n,s,i){t<=e&&Jc(t,r,n,s,i)}o(s9,"lessThanEqualCompare");Qx.exports={parseRow:Ob,searchAll:Q5,searchAllToMap:J5,iterateDBI:X5,endsWith:Z5,contains:e9,greaterThanCompare:t9,greaterThanEqualCompare:r9,lessThanCompare:n9,lessThanEqualCompare:s9,pushResults:Jc}});var Mu=M((eOe,n0)=>{"use strict";var Na=Et(),Jwe=z(),Yn=yn(),U_=kt(),Qt=en().LMDB_ERRORS_ENUM,Xwe=ie(),i9=(k(),v(K)),x_=Cb(),{parseRow:o9}=x_,Zwe=require("lmdb"),{OVERFLOW_MARKER:Jx,MAX_SEARCH_KEY_LENGTH:a9}=U_;function Xx(e,t,r,n=!1,s=void 0,i=void 0){return Xc(e,t,r,(a,c)=>c.getRange({transaction:a,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}))}o(Xx,"iterateFullIndex");function Im(e,t,r,n,s,i=!1,a=void 0,c=void 0,l=!1,u=!1){return Xc(e,t,r,(d,f,m,h)=>{let T={transaction:d,start:i===!0?s:n,end:i===!0?n:s,reverse:i,limit:a,offset:c,inclusiveEnd:i===!0?!l:!u,exclusiveStart:i===!0?u:l};return h===r?(T.values=!1,f.getRange(T).map(R=>({value:R}))):f.getRange(T)})}o(Im,"iterateRangeBetween");function Xc(e,t,r,n){let s=e.database||e,i=Na.openDBI(s,r);i[U_.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&Na.openDBI(s,t);let a;e.database?a=e:(a=e.useReadTransaction(),a.database=e);let c=n(a,i,s,t);return c.transaction=a,e.database||(c.onDone=()=>{a.done()}),c}o(Xc,"setupTransaction");function Zx(e,t,r,n){let s;return function(i,a){if(typeof i=="string"&&i.endsWith(Jx)){if(!s)if(r)s=Na.openDBI(e,r);else{let l=Na.listDBIs(e);for(let u=0,d=l.length;u<d&&(s=Na.openDBI(e,l[u]),!s[U_.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(a,{transaction:t,lazy:!0})[n]}return i}}o(Zx,"getOverflowCheck");function c9(e,t,r,n=!1,s=void 0,i=void 0){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);return Xc(e,t,t,(a,c,l)=>(B_(r),r=Nm(l,r),c.getRange({transaction:a,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>o9(u.value,r))))}o(c9,"searchAll");function l9(e,t,r,n=!1,s=void 0,i=void 0){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);B_(r),r=Nm(e.database||e,r);let a=new Map;for(let{key:c,value:l}of Xx(e,t,t,n,s,i))a.set(c,x_.parseRow(l,r));return a}o(l9,"searchAllToMap");function u9(e,t,r=!1,n=void 0,s=void 0){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.ATTRIBUTE_REQUIRED);let i=Object.create(null),a=Xx(e,void 0,t,r,n,s),c=a.transaction,l=Zx(c.database,c,void 0,t);for(let{key:u,value:d}of a){let f=l(u,d);i[f]===void 0&&(i[f]=[]),i[f].push(d)}return i}o(u9,"iterateDBI");function d9(e,t){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);return Na.statDBI(e,t).entryCount}o(d9,"countAll");function f9(e,t,r,n,s=!1,i=void 0,a=void 0){return wa(e,r,n),Xc(e,t,r,(c,l,u,d)=>(n=Yn.convertKeyValueToWrite(n),d===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:a}).map(f=>({key:n,value:f}))))}o(f9,"equals");function m9(e,t,r){return wa(e,t,r),Na.openDBI(e,t).getValuesCount(r)}o(m9,"count");function h9(e,t,r,n,s=!1,i=void 0,a=void 0){return wa(e,r,n),Xc(e,null,r,(c,l)=>{n=Yn.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let d;if(s===!0){let f;for(let m of l.getKeys({transaction:c,start:n}))if(!m.startsWith(n)){f=m;break}return f!==void 0&&(Number.isInteger(a)?a++:i++),d=l.getRange({transaction:c,start:f,end:void 0,reverse:s,limit:i,offset:a}).map(m=>{let{key:h}=m;if(h!==f){if(h.toString().startsWith(n))return m;if(u===!0)return d.DONE}}),d.filter(m=>m)}else return d=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:a}).map(f=>{if(f.key.toString().startsWith(n))return f;if(u===!0)return d.DONE}),u?d:d.filter(f=>f)})}o(h9,"startsWith");function p9(e,t,r,n,s=!1,i=void 0,a=void 0){return e0(e,t,r,n,s,i,a,!0)}o(p9,"endsWith");function e0(e,t,r,n,s=!1,i=void 0,a=void 0,c=!1){return wa(e,r,n),Xc(e,null,r,(l,u,d,f)=>{let m=Zx(d,l,f,r);return a=Number.isInteger(a)?a:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(h=>{let p=h.toString();return p.endsWith(Jx)?u.getValues(h,{transaction:l}).map(_=>{let g=m(h,_);if(c?g.endsWith(n):g.includes(n))return{key:g,value:_}}).filter(_=>_):(c?p.endsWith(n):p.includes(n))?u[U_.DBI_DEFINITION_NAME].is_hash_attribute?{key:h,value:h}:u.getValues(h,{transaction:l}).map(_=>({key:h,value:_})):[]}).slice(a,i===void 0?void 0:i+(a||0))})}o(e0,"contains");function E9(e,t,r,n,s=!1,i=void 0,a=void 0){wa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Im(e,t,r,n,l,s,i,a,!0,!1)}o(E9,"greaterThan");function _9(e,t,r,n,s=!1,i=void 0,a=void 0){wa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Im(e,t,r,n,l,s,i,a,!1,!1)}o(_9,"greaterThanEqual");function g9(e,t,r,n,s=!1,i=void 0,a=void 0){wa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Im(e,t,r,l,n,s,i,a,!1,!0)}o(g9,"lessThan");function S9(e,t,r,n,s=!1,i=void 0,a=void 0){wa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Im(e,t,r,l,n,s,i,a,!1,!1)}o(S9,"lessThanEqual");function T9(e,t,r,n,s,i=!1,a=void 0,c=void 0){if(Yn.validateEnv(e),r===void 0)throw new Error(Qt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(Qt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(Qt.END_VALUE_REQUIRED);if(n=Yn.convertKeyValueToWrite(n),s=Yn.convertKeyValueToWrite(s),n>s)throw new Error(Qt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return Im(e,t,r,n,s,i,a,c)}o(T9,"between");function R9(e,t,r,n){Yn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);if(B_(r),r=Nm(s,r),n===void 0)throw new Error(Qt.ID_REQUIRED);let a=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(a=x_.parseRow(c,r)),a}o(R9,"searchByHash");function y9(e,t,r){Yn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Qt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}o(y9,"checkHashExists");function A9(e,t,r,n,s=[]){return r0(e,t,r,n,s),t0(e,t,r,n,s).map(i=>i[1])}o(A9,"batchSearchByHash");function b9(e,t,r,n,s=[]){r0(e,t,r,n,s);let i=new Map;for(let[a,c]of t0(e,t,r,n,s))i.set(a,c);return i}o(b9,"batchSearchByHashToMap");function t0(e,t,r,n,s=[]){return Xc(e,t,t,(i,a,c)=>{r=Nm(c,r);let l=r.length<3;return n.map(u=>{let d=c.dbis[t].get(u,{transaction:i,lazy:l});if(d)return[u,x_.parseRow(d,r)];s.push(u)}).filter(u=>u)})}o(t0,"batchHashSearch");function r0(e,t,r,n,s){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);if(B_(r),n==null)throw new Error(Qt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(Qt.IDS_MUST_BE_ITERABLE)}o(r0,"initializeBatchSearchByHash");function B_(e){if(!Array.isArray(e))throw e===void 0?new Error(Qt.FETCH_ATTRIBUTES_REQUIRED):new Error(Qt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}o(B_,"validateFetchAttributes");function wa(e,t,r){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Qt.SEARCH_VALUE_REQUIRED);if(r?.length>a9)throw new Error(Qt.SEARCH_VALUE_TOO_LARGE)}o(wa,"validateComparisonFunctions");function Nm(e,t){return t.length===1&&i9.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=Na.listDBIs(e)),t}o(Nm,"setGetWholeRowAttributes");n0.exports={searchAll:c9,searchAllToMap:l9,count:m9,countAll:d9,equals:f9,startsWith:h9,endsWith:p9,contains:e0,searchByHash:R9,setGetWholeRowAttributes:Nm,batchSearchByHash:A9,batchSearchByHashToMap:b9,checkHashExists:y9,iterateDBI:u9,greaterThan:E9,greaterThanEqual:_9,lessThan:g9,lessThanEqual:S9,between:T9}});var vu=M((rOe,c0)=>{var s0=require("lodash"),i0=ct(),$e=require("joi"),I9=ie(),{hdbSchemaTable:wm,checkValidTable:o0,hdbTable:a0,hdbDatabase:F_}=Di(),{handleHDBError:N9,hdbErrors:w9}=Ee(),{getDatabases:O9}=(Le(),v(ft)),{HTTP_STATUS_CODES:C9}=w9,P9=$e.object({database:F_,schema:F_,table:a0,search_attribute:wm,search_value:$e.any().required(),get_attributes:$e.array().min(1).items($e.alternatives(wm,$e.object())).optional(),desc:$e.bool(),limit:$e.number().integer().min(1),offset:$e.number().integer().min(0)}),L9=$e.object({database:F_,schema:F_,table:a0,operator:$e.string().valid("and","or").default("and").lowercase(),offset:$e.number().integer().min(0),limit:$e.number().integer().min(1),get_attributes:$e.array().min(1).items($e.alternatives(wm,$e.object())).optional(),sort:$e.object({attribute:$e.alternatives(wm,$e.array().min(1)),descending:$e.bool().optional()}).optional(),conditions:$e.array().min(1).items($e.alternatives($e.object({operator:$e.string().valid("and","or").default("and").lowercase(),conditions:$e.array()}),$e.object({search_attribute:$e.alternatives(wm,$e.array().min(1)),search_type:$e.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:$e.when("search_type",{switch:[{is:"equals",then:$e.any()},{is:"between",then:$e.array().items($e.alternatives([$e.string(),$e.number()])).length(2)}],otherwise:$e.alternatives($e.string(),$e.number())}).required()}))).required()});c0.exports=function(e,t){let r=null;switch(t){case"value":r=i0.validateBySchema(e,P9);break;case"hashes":let i=function(a){s?s+=". "+a:s=a};var n=i;o(i,"addError");let s;i(o0("database",e.schema)),i(o0("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(a=>typeof a=="string"||typeof a=="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(a=>typeof a=="string"||typeof a=="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=i0.validateBySchema(e,L9);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=I9.checkGlobalSchemaTable(e.schema,e.table);if(s)return N9(new Error,s,C9.NOT_FOUND);let a=O9()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.search_attribute);let l=o(d=>{for(let f=0,m=d.conditions.length;f<m;f++){let h=d.conditions[f];h.conditions?l(h):c.push(h.search_attribute)}},"addConditions");t==="conditions"&&l(e);let u=s0.filter(c,d=>d!=="*"&&!d.startsWith?.("$")&&d.attribute!=="*"&&!Array.isArray(d)&&!d.name&&!s0.some(a,f=>f===d||f.attribute===d||f.attribute===d.attribute));if(u&&u.length>0){let d=u.join(", ");return d=d.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${d}'`)}}return r}});var Pb=M((sOe,l0)=>{"use strict";var D9=Et(),M9=vu(),{getSchemaPath:v9}=yt();l0.exports=U9;function U9(e){let t=M9(e,"hashes");if(t)throw t;let r=v9(e.schema,e.table);return D9.openEnvironment(r,e.table)}o(U9,"initialize")});var Lb=M((oOe,u0)=>{"use strict";var x9=Mu(),B9=Pb();u0.exports=F9;async function F9(e){let t=await B9(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return x9.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}o(F9,"lmdbGetDataByHash")});var Uu=M((cOe,d0)=>{"use strict";var Db=class{static{o(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};d0.exports=Db});var m0=M((dOe,f0)=>{"use strict";var uOe=Uu(),H9=Mu(),k9=Pb();f0.exports=G9;async function G9(e){let t=await k9(e),r=global.hdb_schema[e.schema][e.table];return H9.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}o(G9,"lmdbSearchByHash")});var ti=M((mOe,h0)=>{"use strict";var Mb=class{static{o(this,"SearchObject")}constructor(t,r,n,s,i,a,c,l=!1,u=void 0,d=void 0){this.schema=t,this.table=r,this.search_attribute=n,this.search_value=s,this.hash_attribute=i,this.get_attributes=a,this.end_value=c,this.reverse=l,this.limit=u,this.offset=d}};h0.exports=Mb});var H_=M((pOe,T0)=>{"use strict";var rn=Mu(),q9=Et(),$9=ie(),Ve=kt(),Zc=(k(),v(K)),V9=To(),p0=en().LMDB_ERRORS_ENUM,{getSchemaPath:K9}=yt(),bo=Zc.SEARCH_WILDCARDS;async function Y9(e,t,r){let n;e.schema===Zc.SYSTEM_SCHEMA_NAME?n=V9[e.table]:n=global.hdb_schema[e.schema][e.table];let s=S0(e,n.hash_attribute,r,t);return _0(e,s,n.hash_attribute,r)}o(Y9,"prepSearch");async function _0(e,t,r,n){let s=K9(e.schema,e.table),i=await q9.openEnvironment(s,e.table),a=g0(i,e,t,r),c=a.transaction||i;if([Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,Ve.SEARCH_TYPES.SEARCH_ALL,Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return a;if(W9(e,r)===!1){let d=e.search_attribute;if(d===r)return n?E0(a,()=>!0):a.map(m=>({[r]:m.key}));let f=o(m=>({[r]:m.value,[d]:m.key}),"toObject");return n?E0(a,f):a.map(f)}let u=e.search_attribute===r?a.map(d=>d.key):a.map(d=>d.value);return n===!0?rn.batchSearchByHashToMap(c,r,e.get_attributes,u):rn.batchSearchByHash(c,r,e.get_attributes,u)}o(_0,"executeSearch");function g0(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:a,limit:c,offset:l}=t;switch(a=typeof a=="boolean"?a:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case Ve.SEARCH_TYPES.EQUALS:s=rn.equals(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.CONTAINS:s=rn.contains(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.ENDS_WITH:case Ve.SEARCH_TYPES._ENDS_WITH:s=rn.endsWith(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.STARTS_WITH:case Ve.SEARCH_TYPES._STARTS_WITH:s=rn.startsWith(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return rn.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return rn.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case Ve.SEARCH_TYPES.SEARCH_ALL:return rn.searchAll(e,n,t.get_attributes,a,c,l);case Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return rn.searchAllToMap(e,n,t.get_attributes,a,c,l);case Ve.SEARCH_TYPES.BETWEEN:s=rn.between(e,i,t.search_attribute,t.search_value,t.end_value,a,c,l);break;case Ve.SEARCH_TYPES.GREATER_THAN:case Ve.SEARCH_TYPES._GREATER_THAN:s=rn.greaterThan(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.GREATER_THAN_EQUAL:case Ve.SEARCH_TYPES._GREATER_THAN_EQUAL:s=rn.greaterThanEqual(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.LESS_THAN:case Ve.SEARCH_TYPES._LESS_THAN:s=rn.lessThan(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.LESS_THAN_EQUAL:case Ve.SEARCH_TYPES._LESS_THAN_EQUAL:s=rn.lessThanEqual(e,i,t.search_attribute,t.search_value,a,c,l);break;default:return Object.create(null)}return s}o(g0,"searchByType");function E0(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}o(E0,"createMapFromIterable");function W9(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}o(W9,"checkToFetchMore");function S0(e,t,r,n){if($9.isEmpty(n)){let s=e.search_value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),a=s.charAt(s.length-1),c=!1;if(e.search_attribute===t&&(c=!0),bo.indexOf(s)>-1)return r===!0?Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP:Ve.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(bo[0])<0&&s.indexOf(bo[1])<0)return c===!0?r===!0?Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:Ve.SEARCH_TYPES.EQUALS;if(bo.indexOf(i)>=0&&bo.indexOf(a)>=0)return e.search_value=e.search_value.slice(1,-1),Ve.SEARCH_TYPES.CONTAINS;if(bo.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),Ve.SEARCH_TYPES.ENDS_WITH;if(bo.indexOf(a)>=0)return e.search_value=e.search_value.slice(0,-1),Ve.SEARCH_TYPES.STARTS_WITH;if(s.includes(bo[0])||s.includes(bo[1]))return Ve.SEARCH_TYPES.EQUALS;throw new Error(p0.UNKNOWN_SEARCH_TYPE)}else switch(n){case Zc.VALUE_SEARCH_COMPARATORS.BETWEEN:return Ve.SEARCH_TYPES.BETWEEN;case Zc.VALUE_SEARCH_COMPARATORS.GREATER:return Ve.SEARCH_TYPES.GREATER_THAN;case Zc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return Ve.SEARCH_TYPES.GREATER_THAN_EQUAL;case Zc.VALUE_SEARCH_COMPARATORS.LESS:return Ve.SEARCH_TYPES.LESS_THAN;case Zc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return Ve.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(p0.UNKNOWN_SEARCH_TYPE)}}o(S0,"createSearchTypeFromSearchObject");T0.exports={executeSearch:_0,createSearchTypeFromSearchObject:S0,prepSearch:Y9,searchByType:g0}});var y0=M((gOe,R0)=>{"use strict";var _Oe=ti(),z9=vu(),j9=ie(),Q9=(k(),v(K)),J9=H_();R0.exports=X9;function X9(e,t){if(!j9.isEmpty(t)&&Q9.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=z9(e,"value");if(n)throw n;return J9.prepSearch(e,t,!0)}o(X9,"lmdbGetDataByValue")});var Om=M((ROe,A0)=>{"use strict";var TOe=ti(),Z9=vu(),e7=ie(),t7=(k(),v(K)),r7=H_();A0.exports=n7;async function n7(e,t){if(!e7.isEmpty(t)&&t7.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Z9(e,"value");if(n)throw n;return r7.prepSearch(e,t,!1)}o(n7,"lmdbSearchByValue")});var I0=M((bOe,b0)=>{"use strict";var AOe=kt(),vb=class{static{o(this,"SearchByConditionsObject")}constructor(t,r,n,s,i=void 0,a=void 0,c="and"){this.schema=t,this.table=r,this.get_attributes=n,this.limit=i,this.offset=a,this.conditions=s,this.operator=c}},Ub=class{static{o(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},xb=class{static{o(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};b0.exports={SearchByConditionsObject:vb,SearchCondition:Ub,SortAttribute:xb}});var P0=M((OOe,C0)=>{"use strict";var NOe=I0().SearchByConditionsObject,s7=ti(),i7=vu(),Bb=Mu(),k_=kt(),{Resource:wOe}=(Aa(),v(aU)),O0=H_(),o7=Cb(),a7=require("lodash"),{getSchemaPath:c7}=yt(),N0=Et(),{handleHDBError:l7,hdbErrors:u7}=Ee(),{HTTP_STATUS_CODES:d7}=u7,f7=1e8;C0.exports=m7;async function m7(e){let t=i7(e,"conditions");if(t)throw l7(t,t.message,d7.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=c7(e.schema,e.table),n=await N0.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)N0.openDBI(n,u.search_attribute);let i=a7.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let d=u.search_type;d===k_.SEARCH_TYPES.EQUALS?u.estimated_count=Bb.count(n,u.search_attribute,u.search_value):d===k_.SEARCH_TYPES.CONTAINS||d===k_.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=f7}return u.estimated_count}),a=n.useReadTransaction();a.database=n;let c=await w0(a,e,i[0],s.hash_attribute),l;if(!e.operator||e.operator.toLowerCase()==="and"){let u=n.dbis[s.hash_attribute],d=i.slice(1).map(O0.filterByType),f=d.length,m=Bb.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(h=>u.get(h,{transaction:a,lazy:!0})),f>0&&(l=l.filter(h=>{for(let p=0;p<f;p++)if(!d[p](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=>o7.parseRow(h,m))}else{for(let f=1;f<i.length;f++){let m=i[f],h=await w0(a,e,m,s.hash_attribute);c=c.concat(h)}let u=new Set,d=e.offset||0;c=c.filter(f=>u.has(f)?!1:(u.add(f),!0)).slice(d,e.limit&&e.limit+d),l=Bb.batchSearchByHash(a,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{a.done()},l}o(m7,"lmdbSearchByConditions");async function w0(e,t,r,n){let s=new s7(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===k_.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,O0.searchByType(e,s,i,n).map(a=>a.value)}o(w0,"executeConditionSearch")});var Cm=M((POe,L0)=>{"use strict";var h7=(k(),v(K)).OPERATIONS_ENUM,Fb=class{static{o(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=h7.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};L0.exports=Fb});var Hb=M((DOe,H0)=>{"use strict";var U0=ti(),x0=Cm(),B0=Om(),F0=bm(),Pn=(k(),v(K)),D0=ie(),M0=Et(),{getTransactionAuditStorePath:p7,getSchemaPath:E7}=yt(),v0=z();H0.exports=_7;async function _7(e){try{if(D0.isEmpty(global.hdb_schema[e.schema])||D0.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await g7(e),await S7(e);let t=E7(e.schema,e.table);try{await M0.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")v0.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=p7(e.schema,e.table);await M0.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")v0.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}o(_7,"lmdbDropTable");async function g7(e){let t=new U0(Pn.SYSTEM_SCHEMA_NAME,Pn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await B0(t)),n=[];for(let i=0;i<r.length;i++){let a=r[i];n.push(a.id)}if(n.length===0)return;let s=new x0(Pn.SYSTEM_SCHEMA_NAME,Pn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await F0(s)}o(g7,"deleteAttributesFromSystem");async function S7(e){let t=new U0(Pn.SYSTEM_SCHEMA_NAME,Pn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await B0(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let a=r[i];a.name===e.table&&a.schema===e.schema&&(n=a)}if(!n)throw new Error(`${e.schema}.${e.table} was not found`);let s=new x0(Pn.SYSTEM_SCHEMA_NAME,Pn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await F0(s)}catch(i){throw i}}o(S7,"dropTableFromSystem")});var G0=M((vOe,k0)=>{"use strict";var T7=require("fs-extra"),R7=ti(),y7=Uu(),A7=Cm(),b7=Hb(),I7=bm(),N7=Lb(),w7=Om(),Io=(k(),v(K)),{getSchemaPath:O7}=yt(),{handleHDBError:C7,hdbErrors:P7}=Ee(),{HDB_ERROR_MSGS:L7,HTTP_STATUS_CODES:D7}=P7;k0.exports=M7;async function M7(e){let t;try{t=await v7(e.schema);let r=new R7(Io.SYSTEM_SCHEMA_NAME,Io.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Io.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[Io.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await w7(r));for(let a=0;a<n.length;a++){let c={schema:t,table:n[a].name};try{await b7(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new A7(Io.SYSTEM_SCHEMA_NAME,Io.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await I7(s);let i=O7(t);await T7.remove(i)}catch(r){throw r}}o(M7,"lmdbDropSchema");async function v7(e){let t=new y7(Io.SYSTEM_SCHEMA_NAME,Io.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[Io.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await N7(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw C7(new Error,L7.SCHEMA_NOT_FOUND(e),D7.NOT_FOUND,void 0,void 0,!0);return n}o(v7,"validateDropSchema")});var Pm=M((xOe,q0)=>{"use strict";var kb=class{static{o(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};q0.exports=kb});var qb=M((HOe,$0)=>{"use strict";var U7=require("fs-extra"),G_=Et(),{getTransactionAuditStorePath:x7}=yt(),Gb=kt(),FOe=Pm();$0.exports=B7;async function B7(e){let t;try{let r=x7(e.schema,e.table);await U7.mkdirp(r),t=await G_.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{G_.createDBI(t,Gb.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),G_.createDBI(t,Gb.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),G_.createDBI(t,Gb.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}o(B7,"createTransactionsAuditEnvironment")});var Y0=M((qOe,K0)=>{"use strict";var $b=(k(),v(K)),V0=Et(),F7=jc(),{getSystemSchemaPath:H7,getSchemaPath:k7}=yt(),GOe=To(),G7=D_(),Vb=L_(),q7=z(),$7=qb();K0.exports=V7;async function V7(e,t){let r=k7(t.schema,t.table),n=new Vb(t.schema,t.table,$b.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new Vb(t.schema,t.table,$b.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new Vb(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await V0.createEnvironment(r,t.table),e!==void 0){let a=await V0.openEnvironment(H7(),$b.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await F7.insertRecords(a,HDB_TABLE_INFO.hash_attribute,hdbTableAttributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await Kb(n),await Kb(s),await Kb(i)}await $7(t)}catch(a){throw a}}o(V7,"lmdbCreateTable");async function Kb(e){try{await G7(e)}catch(t){q7.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}o(Kb,"createAttribute")});var z0=M((VOe,W0)=>{"use strict";var K7=Rm(),Y7=$f(),W7=M_(),Lm=(k(),v(K)),z7=jc().updateRecords,j7=Et(),{getSchemaPath:Q7}=yt(),J7=ym(),X7=z();W0.exports=Z7;async function Z7(e){try{let{schemaTable:t,attributes:r}=K7(e);Y7(e,r,t.hash_attribute),e.schema!==Lm.SYSTEM_SCHEMA_NAME&&(r.includes(Lm.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Lm.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Lm.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Lm.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await W7(e.hdb_auth_header,t,r),s=Q7(e.schema,e.table),i=await j7.openEnvironment(s,e.table),a=await z7(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await J7(e,a)}catch(c){X7.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:a.txn_time}}catch(t){throw t}}o(Z7,"lmdbUpdateRecords")});var Q0=M((YOe,j0)=>{"use strict";var eee=(k(),v(K)).OPERATIONS_ENUM,Yb=class{static{o(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=eee.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};j0.exports=Yb});var X0=M((jOe,J0)=>{"use strict";var zOe=Q0(),tee=Rm(),ree=$f(),nee=M_(),Dm=(k(),v(K)),see=jc().upsertRecords,iee=Et(),{getSchemaPath:oee}=yt(),aee=ym(),cee=z(),{handleHDBError:lee,hdbErrors:uee}=Ee();J0.exports=dee;async function dee(e){let t;try{t=tee(e)}catch(l){throw lee(l,l.message,uee.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schemaTable:r,attributes:n}=t;ree(e,n,r.hash_attribute),e.schema!==Dm.SYSTEM_SCHEMA_NAME&&(n.includes(Dm.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(Dm.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(Dm.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(Dm.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await nee(e.hdb_auth_header,r,n),i=oee(e.schema,e.table),a=await iee.openEnvironment(i,e.table),c=await see(a,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await aee(e,c)}catch(l){cee.error(`unable to write transaction due to ${l.message}`)}return{written_hashes:c.written_hashes,schemaTable:r,new_attributes:s,txn_time:c.txn_time}}o(dee,"lmdbUpsertRecords")});var eB=M((JOe,Z0)=>{"use strict";var Wb=class{static{o(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};Z0.exports=Wb});var rB=M((ZOe,tB)=>{"use strict";var zb=class{static{o(this,"DeleteAuditLogsBeforeResults")}constructor(t=void 0,r=void 0,n=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=n}};tB.exports=zb});var iB=M((rCe,sB)=>{"use strict";var jb=Et(),{getTransactionAuditStorePath:fee}=yt(),tCe=eB(),Mm=kt(),mee=ie(),nB=rB(),hee=require("util").promisify,pee=hee(setTimeout),Eee=1e4,_ee=100;sB.exports=gee;async function gee(e){let t=fee(e.schema,e.table),r=await jb.openEnvironment(t,e.table,!0),n=jb.listDBIs(r);jb.initializeDBIs(r,Mm.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new nB;do s=await See(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 pee(_ee);while(s.transactions_deleted>0);return i}o(gee,"deleteAuditLogsBefore");async function See(e,t){let r=new nB;try{let n=e.dbis[Mm.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let{key:i,value:a}of n.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),s=n.remove(i);let c=a[Mm.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];mee.isEmpty(c)||(s=e.dbis[Mm.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<a.hash_values.length;l++)s=e.dbis[Mm.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(a.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>Eee)break}return await s,r}catch(n){throw n}}o(See,"deleteTransactions")});var aB=M((sCe,oB)=>{"use strict";var Qb=class{static{o(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};oB.exports=Qb});var lB=M((aCe,cB)=>{"use strict";var Tee=ti(),Ree=Cm(),oCe=aB(),Mi=(k(),v(K)),yee=ie(),Jb=Et(),Aee=To(),bee=Om(),Iee=bm(),{getSchemaPath:Nee}=yt();cB.exports=wee;async function wee(e,t=!0){let r;e.schema===Mi.SYSTEM_SCHEMA_NAME?r=Aee[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await Cee(e),s=Nee(e.schema,e.table),i=await Jb.openEnvironment(s,e.table);return t===!0&&await Oee(e,i,r.hash_attribute),Jb.dropDBI(i,e.attribute),n}o(wee,"lmdbDropAttribute");async function Oee(e,t,r){let n=Jb.openDBI(t,r),s,i=e.attribute;for(let{key:a,value:c,version:l}of n.getRange({start:!1,versions:!0})){let u={};for(let d in c)d!==i&&(u[d]=c[d]);s=t.dbis[r].put(a,u,l)}await s}o(Oee,"removeAttributeFromAllObjects");async function Cee(e){let t=new Tee(Mi.SYSTEM_SCHEMA_NAME,Mi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await bee(t)).filter(a=>a[Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(yee.isEmptyOrZeroLength(n))throw new Error(`Attribute '${drop_attribute_obj.attribute}' was not found in '${drop_attribute_obj.schema}.${drop_attribute_obj.table}'`);let s=n.map(a=>a[Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new Ree(Mi.SYSTEM_SCHEMA_NAME,Mi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return Iee(i)}o(Cee,"dropAttributeFromSystem")});var pB=M((uCe,hB)=>{"use strict";var Xb=Et(),xu=kt(),lCe=yn(),Zb=(k(),v(K)),uB=ie(),{getTransactionAuditStorePath:Pee}=yt(),Lee=Mu(),q_=Pu(),Dee=z();hB.exports=Mee;async function Mee(e){let t=Pee(e.schema,e.table),r=await Xb.openEnvironment(t,e.table,!0),n=Xb.listDBIs(r);Xb.initializeDBIs(r,xu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Zb.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return dB(r,e.search_values);case Zb.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,Uee(r,e.search_values,s);case Zb.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return vee(r,e.search_values);default:return dB(r)}}o(Mee,"readAuditLog");function dB(e,t=[0,Date.now()]){uB.isEmpty(t[0])&&(t[0]=0),uB.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[xu.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 q_,s))}o(dB,"searchTransactionsByTimestamp");function vee(e,t=[]){let r=new Map;for(let n=0;n<t.length;n++){let s=t[n],i=[];for(let a of e.dbis[xu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(a);r.set(s,mB(e,i))}return Object.fromEntries(r)}o(vee,"searchTransactionsByUsername");function Uee(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],d=Lee.equals(e,xu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,xu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let{value:f}of d){let m=Number(f);n.has(m)?n.get(m).push(u.toString()):n.set(m,[u.toString()])}}let s=Array.from(n.keys()),i=mB(e,s),a=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,d=n.get(u);fB(l,"records",r,d,a),fB(l,"original_records",r,d,a)}return Object.fromEntries(a)}o(Uee,"searchTransactionsByHashValues");function fB(e,t,r,n,s){let i=e.timestamp;if(e[t])for(let a=0;a<e[t].length;a++){let c=e[t][a],l=c[r].toString();if(n.indexOf(l)>=0)if(s.has(l)){let u=s.get(l),d=u[u.length-1];if(d.timestamp===i)d[t]=[c];else{let f=new q_(e.operation,e.user_name,i,void 0);f[t]=[c],u.push(f)}}else{let u=new q_(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}o(fB,"loopRecords");function mB(e,t){let r=[];try{let n=e.dbis[xu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let s=0;s<t.length;s++)try{let i=n.get(t[s]);if(i){let a=Object.assign(new q_,i);r.push(a)}}catch(i){Dee.warn(i)}return r}catch(n){throw n}}o(mB,"batchSearchTransactions")});var _B=M((hCe,EB)=>{"use strict";var{getSchemaPath:fCe}=yt(),mCe=Et(),{database:xee}=(Le(),v(ft));EB.exports={writeTransaction:Bee};async function Bee(e,t,r){return xee({database:e,table:t}).transaction(r)}o(Bee,"writeTransaction")});var RB=M((ECe,TB)=>{"use strict";var{getSchemaPath:gB}=yt(),SB=Et();TB.exports={flush:Fee,resetReadTxn:Hee};async function Fee(e,t){return(await SB.openEnvironment(gB(e,t),t.toString())).flushed}o(Fee,"flush");async function Hee(e,t){try{(await SB.openEnvironment(gB(e,t),t.toString())).resetReadTxn()}catch{}}o(Hee,"resetReadTxn")});var IB=M((gCe,bB)=>{"use strict";var{Readable:kee}=require("stream"),{getDatabases:Gee}=(Le(),v(ft)),{readSync:qee,openSync:$ee,createReadStream:yB}=require("fs"),{open:Vee}=require("lmdb"),AB=pm(),Kee=Em(),{AUDIT_STORE_OPTIONS:Yee}=(lo(),v(Yv)),{INTERNAL_DBIS_NAME:Wee,AUDIT_STORE_NAME:zee}=kt();bB.exports=Qee;var eI=32768,jee=100;async function Qee(e){let t=e.database||e.schema||"data",r=Gee()[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 d=u.dbisDB,f=Vee({noSync:!0,maxDbs:Kee.MAX_DBS}),m,h=f.openDB(Wee,new AB(!1)),p=d.useReadTransaction(),_=0,g=o(async function(T,R){R.encoding="binary",R.encoder=void 0;let I=f.openDB(T,R),P=d.openDB(T,R);for(let{key:Y,version:te,value:x}of P.getRange({start:null,transaction:p,versions:P.useVersions}))m=I.put(Y,x,te),_++%jee===0&&(await new Promise($=>setTimeout($,20)),p.openTimer&&(p.openTimer=0))},"copyDatabase");for(let{key:T,value:R}of d.getRange({transaction:p,start:!1}))if(s.some(I=>T.startsWith?.(I+"/"))){h.put(T,R);let[,I]=T.split("/"),P=!I,Y=new AB(!P,P);await g(T,Y)}e.include_audit&&await g(zee,{...Yee}),await m;let y=yB(f.path);return y.headers=l(),y.on("close",()=>{p.done(),f.close()}),y}let a=r[Object.keys(r)[0]].primaryStore,c=$ee(a.path);return a.transaction(()=>{let u=Buffer.alloc(eI);qee(c,u,0,eI),a.resetReadTxn();let d=a.useReadTransaction();d.renew();let f=yB(null,{fd:c,start:eI}),m=new kee.from(async function*(){yield u;for await(let h of f)d.openTimer&&(d.openTimer=0),yield h;d.done()}());return m.headers=l(),m});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}}o(Qee,"getBackup")});var OB=M((TCe,wB)=>{"use strict";var Jee=z(),{handleHDBError:Xee}=Ee(),Zee=ZU(),ete=D_(),tte=bb(),rte=Gx(),nte=bm(),ste=Lb(),ite=m0(),ote=y0(),ate=Om(),cte=P0(),lte=G0(),ute=Y0(),dte=z0(),fte=X0(),mte=iB(),hte=Hb(),pte=lB(),Ete=pB(),_te=_B(),NB=RB(),gte=IB(),tI=class extends Zee{static{o(this,"LMDBBridge")}async searchByConditions(t){return cte(t)}async getDataByHash(t){return await ste(t)}async searchByHash(t){return await ite(t)}async getDataByValue(t,r){return await ote(t,r)}async searchByValue(t){return await ate(t)}async createSchema(t){return await rte(t)}async dropSchema(t){return await lte(t)}async createTable(t,r){return await ute(t,r)}async dropTable(t){return await hte(t)}async createAttribute(t){return await ete(t)}async createRecords(t){return await tte(t)}async updateRecords(t){return await dte(t)}async upsertRecords(t){try{return await fte(t)}catch(r){throw Xee(r,null,null,Jee.ERR,r)}}async deleteRecords(t){return await nte(t)}async dropAttribute(t){return await pte(t)}async deleteAuditLogsBefore(t){return await mte(t)}async readAuditLog(t){return await Ete(t)}writeTransaction(t,r,n){return _te.writeTransaction(t,r,n)}flush(t,r){return NB.flush(t,r)}resetReadTxn(t,r){return NB.resetReadTxn(t,r)}getBackup(t){return gte(t)}};wB.exports=tI});function Ln(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function Um(e,t,r=!1){let n=e.prototype,s={},i=t.attributes||t.properties||[];for(let l of i){let u=l.name,d,f;if(l.resolve)f={get(){return l.resolve(this,this.getContext?.())},set(m){return l.set(this,m)},configurable:!0};else{switch(l.type){case"String":d=o(function(m){if(!(typeof m=="string"||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a string, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"ID":d=o(function(m){if(!(typeof m=="string"||m?.length>0&&m.every?.(h=>typeof h=="string")||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a string, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Float":case"Number":d=o(function(m){let h=m?.__op__?m.value:m;if(!(typeof h=="number"||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a number, attempt to assign ${h}`);Ln(this)[u]=m},"set");break;case"Int":d=o(function(m){let h=m?.__op__?m.value:m;if(!(h>>0===h||m==null&&l.nullable!==!1))if(typeof h=="number"&&Math.abs((h>>0)-h)<=1)h=Math.round(h),m?.__op__?m.value=h:m=h;else throw new Wn.ClientError(`${u} must be an integer between -2147483648 and 2147483647, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Long":d=o(function(m){let h=m?.__op__?m.value:m;if(!(Math.round(h)===m&&Math.abs(h)<=9007199254740992||m==null&&l.nullable!==!1))if(typeof h=="number"&&Math.abs(h)<=9007199254740992)h=Math.round(h),m?.__op__?m.value=h:m=h;else throw new Wn.ClientError(`${u} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"BigInt":d=o(function(m){let h=m?.__op__?m.value:m;if(!(typeof h=="bigint"||m==null&&l.nullable!==!1))if(typeof h=="string"||typeof h=="number")h=BigInt(h),m?.__op__?m.value=h:m=h;else throw new Wn.ClientError(`${u} must be a number, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Boolean":d=o(function(m){if(!(typeof m=="boolean"||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a boolean, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Date":d=o(function(m){if(!(m instanceof Date||m==null&&l.nullable!==!1))if(typeof m=="string"||typeof m=="number")m=new Date(m);else throw new Wn.ClientError(`${u} must be a Date, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Bytes":d=o(function(m){if(!(m instanceof Uint8Array||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a Buffer or Uint8Array, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Blob":d=o(function(m){if(!(m instanceof gs||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a Blob, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Any":case void 0:d=o(function(m){Ln(this)[u]=m},"set");break;default:d=o(function(m){if(!(typeof m=="object"||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be an object, attempt to assign ${m}`);Ln(this)[u]=m},"set")}f={get(){let m=this.getChanges?.();if(m&&u in m){let p=m[u];if(p?.__op__){let _=this.getRecord()?.[u];return p.update(_)}return p}let h=this.getRecord()?.[u];if(h&&typeof h=="object"){let p=rI(h,l);if(p)return m||this._setChanges(m=Object.create(null)),m[u]=p}return h},set:d,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,s[u]=f,(!(u in n)||Object.getOwnPropertyDescriptor(n,u)?.get?.isAttribute)&&Object.defineProperty(n,u,f)}a("getProperty",function(l){let u=s[l];if(u)return u.get.call(this);let d=this.getChanges();return d?.[l]!==void 0?d[l]:this.getRecord()?.[l]}),a("set",function(l,u){let d=s[l];if(d)return d.set.call(this,u);if(t.sealed)throw new Wn.ClientError("Can not add a property to a sealed table schema");Ln(this)[l]=u}),a("deleteProperty",function(l){Ln(this)[l]=void 0}),a("toJSON",function(){let l=this.getChanges?.(),u;for(let f in l){u||(u={...this.getRecord()});let m=l[f];if(m?.__op__){let h=u[f];m=m.update(h)}u[f]=m}return Object.keys(this).length>0&&(u||(u={...this.getRecord()}),Object.assign(u,this)),u||this.getRecord()}),n.get||a("get",n.getProperty),n.delete||a("delete",n.deleteProperty),n.then||a("then",null);function a(l,u){Object.defineProperty(n,l,{value:u,configurable:!0})}o(a,"setMethod");let c=n;do{let l=Object.getPrototypeOf(c);if(l===Object.prototype){Object.setPrototypeOf(c,r?LB:PB);break}c=l}while(c&&c!==PB&&c!==LB)}function DB(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(CB[t])return CB[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=rI(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}function Ste(e,t,r,n){if(typeof t=="string"){let s=n.getChanges?.();s||(s={},n._setChanges(s)),s[t]=r}else Object.defineProperty(n,t,{value:r,configurable:!0,writable:!0});return!0}function rI(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends tl{static{o(this,"TrackedObject")}},Um(r,t)),new r(e)):new tl(e);case Array:let n=new V_(e.length,e);for(let s=0,i=e.length;s<i;s++){let a=e[s];a&&typeof a=="object"&&(a=rI(a,t?.elements)),n[s]=a}return n;default:return e}}function K_(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 a=r[s];i=i.update(a)}else i=K_(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 Oa(e,t=e.getChanges?.()){let r;if(!e)return t;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 a=Oa(i);a!==i&&r===e&&(r=e.slice(0)),i=a}r[n]=i}return Object.freeze(r)}for(let n in t){r||(r={...e.getRecord?e.getRecord():e});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=eA[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=Oa(s);r[n]=s}if(!Array.isArray(e)&&e.getRecord)for(let n in e)Tte.call(e,n)&&(r||(r={...e.getRecord()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?e.getRecord():e}function $_(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[el]||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($_(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($_(s))return!0}else return!0}else return!0}}return!1}var Wn,CB,PB,LB,tl,Tte,el,V_,vm,nI=fe(()=>{Wn=w(Ee());HE();Ss();o(Ln,"getChanges");o(Um,"assignTrackedAccessors");CB=Object.prototype,PB=new Proxy({},{get:DB}),LB=new Proxy({},{get:DB,set:Ste});o(DB,"getProxiedProperty");o(Ste,"setProxiedProperty");o(rI,"trackObject");tl=class{static{o(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}};Um(tl,{},!0);o(K_,"collapseData");Tte=Object.prototype.hasOwnProperty;o(Oa,"updateAndFreeze");o($_,"hasChanges");el=Symbol.for("has-array-changes"),V_=class extends Array{static{o(this,"TrackedArray")}#e;[el];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[el]=!0,super.splice(...t)}push(...t){return this[el]=!0,super.push(...t)}pop(){return this[el]=!0,super.pop()}unshift(...t){return this[el]=!0,super.unshift(...t)}shift(){return this[el]=!0,super.shift()}};V_.prototype.constructor=Array;vm=class{static{o(this,"Addition")}__op__="add";value;constructor(t){this.value=t}update(t){return(+t||0)+this.value}}});var kB={};Ce(kB,{ResourceBridge:()=>oI});function aI({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 MB(e,t){let r=vi(e),n=aI(e,r);if(!r)throw new ri.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},a;Mt(i,()=>new Promise(u=>a=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],d;try{d=await r.get({id:u,lazy:s,select:n},i),d=d&&K_(d)}catch(f){d={message:(0,HB.errorToString)(f)}}return t?{value:{key:u,value:d}}:{value:d}}else return a(),{done:!0}},return(u){return a(),{value:u,done:!0}},throw(u){return a(),{done:!0}}}}}}function vi(e){let t=e.database||e.schema||yte,r=it()[t];if(!r)throw(0,ri.handleHDBError)(new Error,Rte.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function vB(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*UB(e,t,r,n){let s,i=0;for await(let a of e.getHistory(t,r)){let c=a.operation??a.type;c==="put"&&(c="upsert");let{id:l,version:u,value:d}=a;if(s?.timestamp===u)s.hash_values.push(l),s.records.push(d);else{if(s&&(yield s,i++,n&&n<=i)){s=void 0;break}s={operation:c,user_name:a.user,timestamp:u,hash_values:[l],records:[d]}}}s&&(yield s)}var xB,Y_,ri,BB,sI,iI,FB,HB,Rte,yte,Ate,bte,oI,GB=fe(()=>{xB=w(OB()),Y_=w(vu()),ri=w(Ee());Le();BB=w(Rm());k();sI=w(Ao()),iI=w(ei()),FB=w(ie());Dc();nI();HB=w(z()),{HDB_ERROR_MSGS:Rte}=ri.hdbErrors,yte="data",Ate=1e4,bte=10,oI=class extends xB.default{static{o(this,"ResourceBridge")}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);for(let a of t.conditions||[])a?.attribute!==void 0&&(a.search_attribute=a.attribute),a?.comparator!==void 0&&(a.search_type=a.comparator),a?.value!==void 0&&(a.search_value=a.value);let r=(0,Y_.default)(t,"conditions");if(r)throw(0,ri.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=vi(t);if(!n)throw new ri.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(a){if("conditions"in a&&a.conditions)return a.conditions=a.conditions.map(i),a;{let c=a;return{attribute:c.search_attribute??c.attribute,comparator:c.search_type??c.comparator,value:c.search_value!==void 0?c.search_value:c.value}}}return o(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:aI(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 a of n)a.is_primary_key?(a.isPrimaryKey=!0,delete a.is_primary_key):a.name===i&&i&&(a.isPrimaryKey=!0);else{if(!i)throw new ri.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}]}et({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await vi(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=vi(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=o((a,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(a,l,()=>r.primaryStore.put(a,c,l)).then(u=>{if(!u){let{value:d,version:f}=r.primaryStore.getEntry(a);return i(a,d,f)}})),"deleteRecord");for(let{key:a,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(a,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){return vi(t).dropTable()}createSchema(t){return Bu({database:t.schema,table:null}),sI.signalSchemaChange(new iI.SchemaEventMsg(process.pid,G.CREATE_SCHEMA,t.schema))}async dropSchema(t){await cI(t.schema),sI.signalSchemaChange(new iI.SchemaEventMsg(process.pid,G.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,this.upsertRecords(t)}async upsertRecords(t){let{schemaTable:r,attributes:n}=(0,BB.default)(t),s,i=it()[t.schema][t.table],a={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(a.replicateTo=t.replicateTo),t.replicatedConfirmation&&(a.replicatedConfirmation=t.replicatedConfirmation),Mt(a,async c=>{if(!i.schemaDefined){s=[];for(let d of n)i.attributes.find(m=>m.name==d)||s.push(d);s.length>0&&await i.addAttributes(s.map(d=>({name:d,indexed:!0})))}let l=[],u=[];for(let d of t.records){let f=d[i.primaryKey],m=f!=null&&await i.get(f,a);if(t.requires_existing&&!m||t.requires_no_existing&&m){u.push(d[i.primaryKey]);continue}m&&(m=K_(m));for(let h in d)if(Object.prototype.hasOwnProperty.call(d,h)){let p=d[h];if(typeof p=="function")try{let _=p([[m]]);Array.isArray(_)&&(p=_[0].func_val,d[h]=p)}catch(_){throw _.message+="Trying to set key "+h+" on object"+JSON.stringify(d),_}}if(m)for(let h in m)Object.prototype.hasOwnProperty.call(d,h)||(d[h]=m[h]);await(f==null?i.create(d,a):i.put(d,a)),l.push(d[i.primaryKey])}return{txn_time:c.timestamp,written_hashes:l,new_attributes:s,skipped_hashes:u}})}async deleteRecords(t){let r=it()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),Mt(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),a=[],c=[];for(let l of i)await r.delete(l,n)?a.push(l):c.push(l);return vB(a,c,s.timestamp)})}async deleteRecordsBefore(t){let r=it()[t.schema][t.table];if(!r.createdTimeProperty)throw new ri.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:AE.LESS}]}),s=!1,i=[],a=[],c=0,l=[],u=o(async()=>{let d=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...d.deleted_hashes),a.push(...d.skipped_hashes),await(0,FB.asyncSetTimeout)(bte),l=[],s=!0},"chunkDelete");for await(let d of n)l.push(d[r.primaryKey]),c++,c%Ate===0&&await u();return l.length>0&&await u(),s?vB(i,a,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,Y_.default)(t,"hashes");if(r)throw r;return MB(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of MB(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&xy[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=t.attribute),t.value!==void 0&&(t.search_value=t.value);let n=(0,Y_.default)(t,"value");if(n)throw n;let s=vi(t);if(!s)throw new ri.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===AE.BETWEEN&&(i=[i,t.end_value]);let a=i==="*"?[]:[{attribute:t.search_attribute,value:i,comparator:r}];return s.search({conditions:a,allowFullScan:!0,limit:t.limit,offset:t.offset,reverse:t.reverse,sort:t.sort,select:aI(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=vi(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){vi({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return vi(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=vi(t),n={};switch(t.search_type){case bE.HASH_VALUE:for(let s of t.search_values)n[s]=(await r.getHistoryOfRecord(s)).map(i=>{let a=i.operation??i.type;return a==="put"&&(a="upsert"),{operation:a,timestamp:i.version,user_name:i.user,hash_values:[s],records:[i.value]}});return n;case bE.USERNAME:{let s=t.search_values;for await(let i of UB(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n}default:return UB(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};o(aI,"getSelect");o(MB,"getRecords");o(vi,"getTable");o(vB,"createDeleteResponse");o(UB,"groupRecordsInHistory")});var zn=M((LCe,qB)=>{"use strict";var{ResourceBridge:Ite}=(GB(),v(kB)),Nte=ce();Nte.initSync();var W_;function wte(){return W_||(W_=new Ite,W_)}o(wte,"getBridge");qB.exports=wte()});var YB=M((MCe,KB)=>{"use strict";var $B=require("lodash"),xm=require("mathjs"),Ote=require("jsonata"),VB=ie();KB.exports={distinct_array:o(e=>Array.isArray(e)&&e.length>1?$B.uniqWith(e,$B.isEqual):e,"distinct_array"),searchJSON:Cte,mad:Bm.bind(null,xm.mad),mean:Bm.bind(null,xm.mean),mode:Bm.bind(null,xm.mode),prod:Bm.bind(null,xm.prod),median:Bm.bind(null,xm.median)};function Bm(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}o(Bm,"aggregateFunction");function Cte(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(VB.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),VB.isEmpty(this.__ala__.res[r])){let n=Ote(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}o(Cte,"searchJSON")});var zB=M((UCe,WB)=>{"use strict";var ir=require("moment"),lI="YYYY-MM-DDTHH:mm:ss.SSSZZ";ir.suppressDeprecationWarnings=!0;WB.exports={current_date:o(()=>ir().utc().format("YYYY-MM-DD"),"current_date"),current_time:o(()=>ir().utc().format("HH:mm:ss.SSS"),"current_time"),extract:o((e,t)=>{switch(t.toLowerCase()){case"year":return ir(e).utc().format("YYYY");case"month":return ir(e).utc().format("MM");case"day":return ir(e).utc().format("DD");case"hour":return ir(e).utc().format("HH");case"minute":return ir(e).utc().format("mm");case"second":return ir(e).utc().format("ss");case"millisecond":return ir(e).utc().format("SSS");default:break}},"extract"),date:o(e=>ir(e).utc().format(lI),"date"),date_format:o((e,t)=>ir(e).utc().format(t),"date_format"),date_add:o((e,t,r)=>ir(e).utc().add(t,r).valueOf(),"date_add"),date_sub:o((e,t,r)=>ir(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:o((e,t,r)=>{let n=ir(e).utc(),s=ir(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:o(()=>ir().utc().valueOf(),"now"),get_server_time:o(()=>ir().format(lI),"get_server_time"),offset_utc:o((e,t)=>ir(e).utc().utcOffset(t).format(lI),"offset_utc")}});var XB=M((BCe,JB)=>{"use strict";var Pte=require("@turf/area"),Lte=require("@turf/length"),Dte=require("@turf/circle"),Mte=require("@turf/difference"),vte=require("@turf/distance"),Ute=require("@turf/boolean-contains"),xte=require("@turf/boolean-equal"),Bte=require("@turf/boolean-disjoint"),Fte=require("@turf/helpers"),jB=(k(),v(K)),Ye=ie(),No=z();JB.exports={geoArea:Hte,geoLength:kte,geoCircle:Gte,geoDifference:qte,geoDistance:QB,geoNear:$te,geoContains:Vte,geoEqual:Kte,geoCrosses:Yte,geoConvert:Wte};function Hte(e){if(Ye.isEmpty(e))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return Pte.default(e)}catch(t){return No.trace(t,e),NaN}}o(Hte,"geoArea");function kte(e,t){if(Ye.isEmpty(e))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return Lte.default(e,{units:t||"kilometers"})}catch(r){return No.trace(r,e),NaN}}o(kte,"geoLength");function Gte(e,t,r){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return Dte.default(e,t,{units:r||"kilometers"})}catch(n){return No.trace(n,e,t),NaN}}o(Gte,"geoCircle");function qte(e,t){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Mte(e,t)}catch(r){return No.trace(r,e,t),NaN}}o(qte,"geoDifference");function QB(e,t,r){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return vte.default(e,t,{units:r||"kilometers"})}catch(n){return No.trace(n,e,t),NaN}}o(QB,"geoDistance");function $te(e,t,r,n){if(Ye.isEmpty(e)||Ye.isEmpty(t))return!1;if(Ye.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return QB(e,t,n)<=r}catch(s){return No.trace(s,e,t),!1}}o($te,"geoNear");function Vte(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Ute.default(e,t)}catch(r){return No.trace(r,e,t),!1}}o(Vte,"geoContains");function Kte(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return xte.default(e,t)}catch(r){return No.trace(r,e,t),!1}}o(Kte,"geoEqual");function Yte(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return!Bte.default(e,t)}catch(r){return No.trace(r,e,t),!1}}o(Yte,"geoCrosses");function Wte(e,t,r){if(Ye.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ye.isEmpty(t))throw new Error("geo_type is required");if(Ye.isEmpty(jB.GEO_CONVERSION_ENUM[t]))throw new Error(`geoType of ${t} is invalid please use one of the following types: ${Object.keys(jB.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ye.autoCastJSON(e)),Fte[t](e,r)}o(Wte,"geoConvert")});var z_=M((HCe,ZB)=>{var rl=YB(),jn=zB(),Ui=XB();ZB.exports=e=>{e.aggr.mad=e.aggr.MAD=rl.mad,e.aggr.mean=e.aggr.MEAN=rl.mean,e.aggr.mode=e.aggr.MODE=rl.mode,e.aggr.prod=e.aggr.PROD=rl.prod,e.aggr.median=e.aggr.MEDIAN=rl.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=rl.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=rl.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=jn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=jn.current_time,e.fn.extract=e.fn.EXTRACT=jn.extract,e.fn.date=e.fn.DATE=jn.date,e.fn.date_format=e.fn.DATE_FORMAT=jn.date_format,e.fn.date_add=e.fn.DATE_ADD=jn.date_add,e.fn.date_sub=e.fn.DATE_SUB=jn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=jn.date_diff,e.fn.now=e.fn.NOW=jn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=jn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=jn.get_server_time,e.fn.getdate=e.fn.GETDATE=jn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=jn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=Ui.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=Ui.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=Ui.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=Ui.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=Ui.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=Ui.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=Ui.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=Ui.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=Ui.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=Ui.geoNear}});var nF=M((kCe,rF)=>{"use strict";var Fm=require("lodash"),Dn=require("alasql");Dn.options.cache=!1;var zte=z_(),eF=require("clone"),j_=require("recursive-iterator"),ke=z(),tt=ie(),Fu=zn(),jte=(k(),v(K)),{hdbErrors:Qte}=Ee(),{getDatabases:tF}=(Le(),v(ft)),Jte="IS NULL",ni="There was a problem performing this search. Please check the logs and try again.";zte(Dn);var uI=class{static{o(this,"SQLSearch")}constructor(t,r){if(tt.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(),tt.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!tt.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(ni)}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(ni)}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(ni)}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(ni)}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(ni)}}_getColumns(){let t=new j_(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(eF(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Fm.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].__hashName=tF()[r.databaseid][r.tableid].primaryKey,this.data[n].__mergedData={},this.data[n].__mergedAttributes=[],this.data[n].__mergedAttrMap={}})}_conditionsToFetchAttributeValues(){if(tt.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new j_(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!tt.isEmpty(r)&&r.right)if(tt.isNotEmptyAndHasValue(r.right.value)){let n=tt.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new Dn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=tt.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new Dn.yy.LogicValue({value:i}):n instanceof Dn.yy.StringValue&&tt.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Dn.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 j_(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 a=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!tt.isEmpty(jte.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(tt.isEmpty(this.comparator_search_values[a])&&(this.comparator_search_values[a]={ignore:!1,comparators:[]}),!this.comparator_search_values[a].ignore){if(tt.isEmptyOrZeroLength(r.left.columnid)||tt.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[a].ignore=!0,this.comparator_search_values[a].comparators=[];continue}this.comparator_search_values[a].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(tt.isEmpty(this.exact_search_values[a])&&(this.exact_search_values[a]={ignore:!1,values:new Set}),!this.exact_search_values[a].ignore){let c=!1;switch(r.op){case"=":!tt.isEmpty(r.right.value)||!tt.isEmpty(r.left.value)?n.add(tt.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[a].ignore=c,c?this.exact_search_values[a].values=new Set:this.exact_search_values[a].values=new Set([...this.exact_search_values[a].values,...n])}}}_setAliasesForColumns(){if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&tt.isEmptyOrZeroLength(this.statement.from)&&tt.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&&Fm.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(tt.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);tt.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(tt.isEmptyOrZeroLength(this.all_table_attributes)&&!tt.isEmptyOrZeroLength(this.columns.columns))return t;if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&tt.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await Dn.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(eF(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__mergedAttributes.push(r),this.data[t].__mergedAttrMap[r]=this.data[t].__mergedAttributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__mergedData[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__mergedAttrMap[n];this.data[t].__mergedData[r].splice(i,1,s)}async _getFetchAttributeValues(){if(tt.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(Jte)>-1&&this.tables.forEach(s=>{let i={columnid:tF()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=Fm.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 a=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[a].__hashName;return s[a]||(s[a]=[],s[a].push(null),this._addColumnToMergedAttributes(a,c)),i.attribute!==c&&(s[a].push(null),this._addColumnToMergedAttributes(a,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,a=this.data[i].__hashName,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===a&&(l=!0),!tt.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!tt.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let d=await Fu.getDataByHash(c);for(let f of c.hash_values)d.get(f)&&!this.data[i].__mergedData[f]&&(this.data[i].__mergedData[f]=[...n[i]],this._setMergedHashAttribute(i,f))}catch(d){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(d),new Error(ni)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async d=>{let f={...c};f.search_value=d;let m=await Fu.getDataByValue(f);for(let[h,p]of m)this.data[i].__mergedData[h]?this._updateMergedAttribute(i,h,s.attribute,p[s.attribute]):(this.data[i].__mergedData[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,p[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(d){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(d),new Error(ni)}else if(!tt.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!tt.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let d=this.comparator_search_values[u].comparators;for(let f=0,m=d.length;f<m;f++){let h=d[f];c.search_attribute=h.attribute,c.search_value=h.search_value;let p=await Fu.getDataByValue(c,h.operation);if(l)for(let[_]of p)this.data[i].__mergedData[_]||(this.data[i].__mergedData[_]=[...n[i]],this._setMergedHashAttribute(i,_));else for(let[_,g]of p)this.data[i].__mergedData[_]?this._updateMergedAttribute(i,_,s.attribute,g[s.attribute]):(this.data[i].__mergedData[_]=[...n[i]],this._updateMergedAttribute(i,_,s.attribute,g[s.attribute]),this._setMergedHashAttribute(i,_))}}catch(d){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),ke.error(d),new Error(ni)}else try{c.search_attribute=s.attribute,c.search_value="*";let d=await Fu.getDataByValue(c);if(l)for(let[f]of d)this.data[i].__mergedData[f]||(this.data[i].__mergedData[f]=[...n[i]],this._setMergedHashAttribute(i,f));else for(let[f,m]of d)this.data[i].__mergedData[f]?this._updateMergedAttribute(i,f,s.attribute,m[s.attribute]):(this.data[i].__mergedData[f]=[...n[i]],this._updateMergedAttribute(i,f,s.attribute,m[s.attribute]),this._setMergedHashAttribute(i,f))}catch(d){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),ke.error(d),new Error(ni)}}}_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 Dn.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,a=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===a});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 Dn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Dn.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 Dn.yy.FuncValue:new Dn.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}`].__mergedData)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let p=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(p+=" ON "+h.on.toString()),i.push(p),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__mergedData))});let a=[],c={};s.forEach(h=>{let p=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hashName,_=h.as?h.as_orig:h.tableid_orig;a.push({key:`'${_}.${p}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${p}\` AS "${_}.${p}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__mergedAttributes});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 d="",f="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(d=this.statement.limit?"LIMIT "+this.statement.limit:"",f=this.statement.offset?"OFFSET "+this.statement.offset:"");let m=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${d} ${f}`,p=this._convertColumnsToIndexes(h,s);m=await Dn.promise(p,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(m&&m.length>0){for(let h=0,p=m.length;h<p;h++){let _=m[h];a.forEach(g=>{_[g.key]!==null&&_[g.key]!==void 0&&g.keys.add(_[g.key])})}a.forEach(h=>{let p=Object.keys(this.data[`${h.schema}_${h.table}`].__mergedData),_=Fm.difference(p,[...h.keys].map(g=>g.toString()));for(let g=0,y=_.length;g<y;g++){let T=_[g];delete this.data[`${h.schema}_${h.table}`].__mergedData[T]}})}return{existing_attributes:c,joined_length:m?m.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new j_(this.columns);for(let{node:i}of s)if(i&&i.columnid){let a=this._findColumn(i);if(a){let c=a.table.as?a.table.as:a.table.tableid;(!t[c]||t[c].indexOf(a.attribute)<0)&&n.push(a)}}n=Fm.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(ni)}}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].__mergedData,a=[];for(let d in i)a.push(i[d][0]);this.data[n].__mergedAttributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:a,get_attributes:s.columns},l=await Fu.getDataByHash(c),u=s.columns.length;for(let d=0,f=a.length;d<f;d++){let m=a[d],h=l.get(m);for(let p=0;p<u;p++){let _=s.columns[p],g=h[_]===void 0?null:h[_];this.data[n].__mergedData[m].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}`].__mergedData)),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}`].__mergedData)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(a=>{let c=a.aggregatorid?a.expression:a,l=a.aggregatorid?a.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 Dn.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(Qte.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].__mergedAttributes.forEach((a,c)=>{let l=s[i],u=new RegExp(`${l}.\`${a}\``,"g"),d=`${l}.[${c}]`;n=n.replace(u,d)});for(let i in this.data)this.data[i].__mergedAttributes.forEach((a,c)=>{let l=new RegExp(`\`${a}\``,"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 a=await Fu.getDataByValue(i);for(let[c,l]of a)this.data[s].__mergedData[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__mergedData[c]={...r[s]}),this.data[s].__mergedData[c][t[n.attribute]]=l[n.attribute]??null}catch(a){throw ke.error("There was an error when processing this SQL operation. Check your logs"),ke.error(a),new Error(ni)}}return Object.values(Object.values(this.data)[0].__mergedData)}};rF.exports=uI});var nn=M((qCe,sF)=>{"use strict";var Xte=JU();sF.exports={searchByConditions:ere,searchByHash:tre,searchByValue:rre,search:nre};var dI=zn(),{transformReq:fI}=ie(),Zte=nF();async function ere(e){return fI(e),dI.searchByConditions(e)}o(ere,"searchByConditions");async function tre(e){fI(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of dI.searchByHash(e))r&&t.push(r);return t}o(tre,"searchByHash");async function rre(e){fI(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of dI.searchByValue(e))t.push(r);return t}o(rre,"searchByValue");function nre(e,t){try{let r=new Xte(e);r.validate(),new Zte(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}o(nre,"search")});var xi=M((VCe,cF)=>{"use strict";var Hm=require("crypto"),sre=ce(),{CONFIG_PARAMS:ire}=(k(),v(K)),oF="aes-256-cbc",ore=32,are=16,mI=64,aF=32,cre=mI+aF,iF=new Map;cF.exports={encrypt:lre,decrypt:ure,createNatsTableStreamName:dre};function lre(e){let t=Hm.randomBytes(ore),r=Hm.randomBytes(are),n=Hm.createCipheriv(oF,Buffer.from(t),r),s=n.update(e);s=Buffer.concat([s,n.final()]);let i=t.toString("hex"),a=r.toString("hex"),c=s.toString("hex");return i+a+c}o(lre,"encrypt");function ure(e){let t=e.substr(0,mI),r=e.substr(mI,aF),n=e.substr(cre,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),a=Hm.createDecipheriv(oF,Buffer.from(t,"hex"),s),c=a.update(i);return c=Buffer.concat([c,a.final()]),c.toString()}o(ure,"decrypt");function dre(e,t){let r=sre.get(ire.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=iF.get(r);return n||(n=Hm.createHash("md5").update(r).digest("hex"),iF.set(r,n)),n}o(dre,"createNatsTableStreamName")});var Ca=M((WCe,fF)=>{"use strict";var YCe=nn(),km=z(),{validateBySchema:lF}=ct(),nl=require("joi"),fre=xi(),Q_=ie(),{handleHDBError:J_,hdbErrors:mre,ClientError:uF}=Ee(),{HDB_ERROR_MSGS:X_,HTTP_STATUS_CODES:hI}=mre,dF=ce();dF.initSync();var{getDatabases:pI}=(Le(),v(ft)),hre=require("fs-extra"),pre=(k(),v(K));fF.exports={describeAll:Ere,describeTable:Z_,describeSchema:_re};async function Ere(e={}){try{let t=Q_.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=pI(),a={},c={},l=[],u=e?.exact_count;for(let f in i){a[f]=!0,!t&&!s&&!r&&(c[f]=e.hdb_user?.role?.permission[f]?.describe);let m=i[f];for(let h in m)try{let p;if(t||s||r)p=await Z_({schema:f,table:h,exactCount:u});else if(n&&n[f].describe&&n[f].tables[h].describe){let _=n[f].tables[h].attribute_permissions;p=await Z_({schema:f,table:h,exactCount:u},_)}p&&l.push(p)}catch(p){km.error(p)}}let d={};for(let f in l)t||s||r?(d[l[f].schema]==null&&(d[l[f].schema]={}),d[l[f].schema][l[f].name]=l[f],a[l[f].schema]&&delete a[l[f].schema]):c[l[f].schema]&&(d[l[f].schema]==null&&(d[l[f].schema]={}),d[l[f].schema][l[f].name]=l[f],a[l[f].schema]&&delete a[l[f].schema]);for(let f in a)t||s||r?d[f]={}:c[f]&&(d[f]={});return d}catch(t){return km.error("Got an error in describeAll"),km.error(t),J_(new Error,X_.DESCRIBE_ALL_ERR)}}o(Ere,"describeAll");async function Z_(e,t){Q_.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=lF(e,nl.object({database:nl.string(),table:nl.string().required(),exact_count:nl.boolean().strict()}));if(i)throw new uF(i.message);let c=pI()[r];if(!c)throw J_(new Error,X_.SCHEMA_NOT_FOUND(e.schema),hI.NOT_FOUND);let l=c[n];if(!l)throw J_(new Error,X_.TABLE_NOT_FOUND(e.schema,e.table),hI.NOT_FOUND);function u(h){d.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(p=>({type:p.type,name:p.name})):void 0})}o(u,"pushAtt");let d=[];if(s){let h={};s.forEach(p=>{p.describe&&(h[p.attribute_name]=!0)}),l.attributes.forEach(p=>{h[p.name]&&u(p)})}else l.attributes?.forEach(h=>u(h));let f;try{f=(await hre.stat(l.primaryStore.env.path)).size}catch(h){km.warn("unable to get database size",h)}let m={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:d,db_size:f};l.replicate!==void 0&&(m.replicate=l.replicate),l.expirationMS!==void 0&&(m.expiration=l.expirationMS/1e3+"s"),l.sealed!==void 0&&(m.sealed=l.sealed),l.sources?.length>0&&(m.sources=l.sources.map(h=>h.name).filter(h=>h&&h!=="NATSReplicator"&&h!=="Replicator")),dF.get(pre.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(m.clustering_stream_name=fre.createNatsTableStreamName(m.schema,m.name));try{let h=await l.getRecordCount({exactCount:!!e.exact_count});m.record_count=h.recordCount,m.table_size=l.getSize(),m.db_audit_size=l.getAuditSize(),m.estimated_record_range=h.estimatedRange;let p=l.auditStore;if(p)for(let _ of p.getKeys({reverse:!0,limit:1}))m.last_updated_record=_[0];if(!m.last_updated_record&&l.indices.__updatedtime__)for(let _ of l.indices.__updatedtime__.getKeys({reverse:!0,limit:1}))m.last_updated_record=_}catch(h){km.warn(`unable to stat table dbi due to ${h}`)}return m}o(Z_,"descTable");async function _re(e){Q_.transformReq(e);let t=lF(e,nl.object({database:nl.string(),exact_count:nl.boolean().strict()}));if(t)throw new uF(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=pI()[n];if(!i)throw J_(new Error,X_.SCHEMA_NOT_FOUND(e.schema),hI.NOT_FOUND);let a={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),Q_.isEmpty(l)||l.describe){let u=await Z_({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(a[u.name]=u)}}return a}o(_re,"describeSchema")});var Mn=M((jCe,EF)=>{"use strict";var tg=gb(),$r=ie(),gre=require("util"),rg=zn(),Sre=Zs(),mF=z(),{handleHDBError:sl,hdbErrors:Tre}=Ee(),{HTTP_STATUS_CODES:il}=Tre,Rre=gre.promisify(Sre.getTableSchema),yre="updated",hF="inserted",pF="upserted";EF.exports={insert:bre,update:Ire,upsert:Nre,validation:Are,flush:wre};async function Are(e){if($r.isEmpty(e))throw new Error("invalid update parameters defined.");if($r.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if($r.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await Rre(e.schema,e.table),r=tg(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={},a=!1;return e.operation==="update"&&(a=!0),e.records.forEach(c=>{if(a&&$r.isEmptyOrZeroLength(c[n]))throw mF.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(!$r.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw mF.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!$r.isEmpty(c[n])&&c[n]!==""&&s.has($r.autoCast(c[n]))&&(c.skip=!0),s.add($r.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)}}o(Are,"validation");async function bre(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=tg(e);if(t)throw sl(new Error,t.message,il.BAD_REQUEST);$r.transformReq(e);let r=$r.checkSchemaTableExist(e.schema,e.table);if(r)throw sl(new Error,r,il.BAD_REQUEST);let n=await rg.createRecords(e);return eg(hF,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}o(bre,"insertData");async function Ire(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=tg(e);if(t)throw sl(new Error,t.message,il.BAD_REQUEST);$r.transformReq(e);let r=$r.checkSchemaTableExist(e.schema,e.table);if(r)throw sl(new Error,r,il.BAD_REQUEST);let n=await rg.updateRecords(e);return $r.isEmpty(n.existing_rows)?eg(yre,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):eg(n.update_action,[],e,n.hashes,void 0,n.txn_time)}o(Ire,"updateData");async function Nre(e){if(e.operation!=="upsert")throw sl(new Error,"invalid operation, must be upsert",il.INTERNAL_SERVER_ERROR);let t=tg(e);if(t)throw sl(new Error,t.message,il.BAD_REQUEST);$r.transformReq(e);let r=$r.checkSchemaTableExist(e.schema,e.table);if(r)throw sl(new Error,r,il.BAD_REQUEST);let n=await rg.upsertRecords(e);return eg(pF,n.written_hashes,e,[],n.new_attributes,n.txn_time)}o(Nre,"upsertData");function eg(e,t,r,n,s,i){let a={message:`${e} ${t.length} of ${t.length+n.length} records`,new_attributes:s,txn_time:i};return e===hF?(a.inserted_hashes=t,a.skipped_hashes=n,a):e===pF?(a.upserted_hashes=t,a):(a.update_hashes=t,a.skipped_hashes=n,a)}o(eg,"returnObject");function wre(e){return $r.transformReq(e),rg.flush(e.schema,e.table)}o(wre,"flush")});var _I=M((JCe,SF)=>{var Ore=ct(),EI=require("joi"),{hdbTable:Cre,hdbDatabase:_F}=Di(),gF={schema:_F,database:_F,table:Cre},Pre={date:EI.date().iso().required()},Lre={timestamp:EI.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};SF.exports=function(e,t){let r=t==="timestamp"?{...gF,...Lre}:{...gF,...Pre},n=EI.object(r);return Ore.validateBySchema(e,n)}});var yF=M((XCe,RF)=>{var Dre=ct(),gI=require("joi"),{hdbTable:Mre,hdbDatabase:TF}=Di(),vre=gI.object({schema:TF,database:TF,table:Mre,hash_values:gI.array().required(),ids:gI.array()});RF.exports=function(e){return Dre.validateBySchema(e,vre)}});var yI=M((ZCe,AF)=>{"use strict";var SI=class{static{o(this,"InsertObject")}constructor(t,r,n,s,i){this.operation=t,this.schema=r,this.table=n,this.hash_attribute=s,this.records=i}},TI=class{static{o(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,a){this.schema=t,this.table=r,this.search_attribute=n,this.hash_attribute=s,this.get_attributes=i,this.search_value=a}},RI=class{static{o(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};AF.exports={InsertObject:SI,NoSQLSeachObject:TI,DeleteResponseObject:RI}});var cl=M((tPe,OF)=>{"use strict";var IF=_I(),Ure=yF(),ol=ie(),bF=require("moment"),NF=z(),{promisify:xre,callbackify:Bre}=require("util"),al=(k(),v(K)),Fre=Zs(),AI=xre(Fre.getTableSchema),bI=zn(),{DeleteResponseObject:Hre}=yI(),{handleHDBError:Pa,hdbErrors:kre}=Ee(),{HDB_ERROR_MSGS:ng,HTTP_STATUS_CODES:La}=kre,Gre="records successfully deleted",qre=Bre(wF);OF.exports={delete:qre,deleteRecord:wF,deleteFilesBefore:$re,deleteAuditLogsBefore:Vre};async function $re(e){let t=IF(e,"date");if(t)throw Pa(t,t.message,La.BAD_REQUEST,void 0,void 0,!0);if(ol.transformReq(e),!bF(e.date,bF.ISO_8601).isValid())throw Pa(new Error,ng.INVALID_DATE,La.BAD_REQUEST,al.LOG_LEVELS.ERROR,ng.INVALID_DATE,!0);let n=ol.checkSchemaTableExist(e.schema,e.table);if(n)throw Pa(new Error,n,La.NOT_FOUND,al.LOG_LEVELS.ERROR,n,!0);let s=await bI.deleteRecordsBefore(e);if(await AI(e.schema,e.table),NF.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}o($re,"deleteFilesBefore");async function Vre(e){let t=IF(e,"timestamp");if(t)throw Pa(t,t.message,La.BAD_REQUEST,void 0,void 0,!0);if(ol.transformReq(e),isNaN(e.timestamp))throw Pa(new Error,ng.INVALID_VALUE("Timestamp"),La.BAD_REQUEST,al.LOG_LEVELS.ERROR,ng.INVALID_VALUE("Timestamp"),!0);let r=ol.checkSchemaTableExist(e.schema,e.table);if(r)throw Pa(new Error,r,La.NOT_FOUND,al.LOG_LEVELS.ERROR,r,!0);let n=await bI.deleteAuditLogsBefore(e);return await AI(e.schema,e.table),NF.info(`Finished deleting audit logs before ${e.timestamp}`),n}o(Vre,"deleteAuditLogsBefore");async function wF(e){e.ids&&(e.hash_values=e.ids);let t=Ure(e);if(t)throw Pa(t,t.message,La.BAD_REQUEST,void 0,void 0,!0);ol.transformReq(e);let r=ol.checkSchemaTableExist(e.schema,e.table);if(r)throw Pa(new Error,r,La.NOT_FOUND,al.LOG_LEVELS.ERROR,r,!0);try{await AI(e.schema,e.table);let n=await bI.deleteRecords(e);return ol.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${Gre}`),n}catch(n){if(n.message===al.SEARCH_NOT_FOUND_MESSAGE){let s=new Hre;return s.message=al.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}o(wF,"deleteRecord")});var sg={};Ce(sg,{HASH_FUNCTION:()=>Mr,hash:()=>wI,validate:()=>OI});function II(e=qm){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(Gm.randomBytes(e)).map(r=>t[r%t.length]).join("")}function wI(e,t=Mr[PF?.toUpperCase()]??Mr.SHA256){return NI[t](e)}function OI(e,t,r=Mr[PF?.toUpperCase()]??Mr.SHA256){return e?Kre[r](e,t):!1}var Gm,Hu,CF,PF,qm,LF,Mr,NI,Kre,ig=fe(()=>{Gm=w(require("node:crypto")),Hu=w(require("argon2")),CF=w(ce());k();PF=(0,CF.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),qm=16,LF=9,Mr={MD5:"md5",SHA256:"sha256",ARGON2ID:"argon2id"};o(II,"generateSalt");NI={[Mr.MD5]:(e,t=void 0)=>{t=t??II(LF);let r=Gm.createHash(Mr.MD5).update(e+t).digest("hex");return t+r},[Mr.SHA256]:(e,t=void 0)=>{t=t??II(qm);let r=Gm.createHash(Mr.SHA256).update(e+t).digest("hex");return t+r},[Mr.ARGON2ID]:async e=>{let t=II(qm),r=await Hu.hash(e,{type:Hu.argon2id,salt:Buffer.from(t)});return t+r}},Kre={[Mr.MD5]:(e,t)=>{let r=e.slice(0,LF);return e===NI[Mr.MD5](t,r)},[Mr.SHA256]:(e,t)=>{let r=e.slice(0,qm);return e===NI[Mr.SHA256](t,r)},[Mr.ARGON2ID]:async(e,t)=>await Hu.verify(e.slice(qm),t)};o(wI,"hash");o(OI,"validate")});var MF=M((iPe,DF)=>{var CI=ct(),sn={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 Yre(e){return sn.password.presence=!0,sn.username.presence=!0,sn.role.presence=!0,sn.active.presence=!0,CI.validateObject(e,sn)}o(Yre,"addUserValidation");function Wre(e){return sn.password.presence=!1,sn.username.presence=!0,sn.role.presence=!1,sn.active.presence=!1,CI.validateObject(e,sn)}o(Wre,"alterUserValidation");function zre(e){return sn.password.presence=!1,sn.username.presence=!0,sn.role.presence=!1,sn.active.presence=!1,CI.validateObject(e,sn)}o(zre,"dropUserValidation");DF.exports={addUserValidation:Yre,alterUserValidation:Wre,dropUserValidation:zre}});var bt=M((cPe,UF)=>{"use strict";var{platform:aPe}=require("os"),jre="nats-server.zip",PI="nats-server",Qre=process.platform==="win32"?`${PI}.exe`:PI,Jre=/^[^\s.,*>]+$/,vF="__request__",Xre=o(e=>`${e}.${vF}`,"REQUEST_SUBJECT"),Zre={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},ene={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},tne={HUB:"hub.pid",LEAF:"leaf.pid"},rne={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},nne={SUCCESS:"success",ERROR:"error"},sne={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},ine={TXN:"txn",MSGID:"msgid"},ku={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},one={[ku.ERR]:1,[ku.WRN]:2,[ku.INF]:3,[ku.DBG]:4,[ku.TRC]:5},ane={debug:"-D",trace:"-DVV"};UF.exports={NATS_SERVER_ZIP:jre,NATS_SERVER_NAME:PI,NATS_BINARY_NAME:Qre,PID_FILES:tne,NATS_CONFIG_FILES:ene,SERVER_SUFFIX:rne,NATS_TERM_CONSTRAINTS_RX:Jre,REQUEST_SUFFIX:vF,UPDATE_REMOTE_RESPONSE_STATUSES:nne,CLUSTER_STATUS_STATUSES:sne,REQUEST_SUBJECT:Xre,SUBJECT_PREFIXES:ine,MSG_HEADERS:Zre,LOG_LEVELS:ku,LOG_LEVEL_FLAGS:ane,LOG_LEVEL_HIERARCHY:one}});var LI=M(on=>{"use strict";var cne={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
|
|
11
|
+
`},"serialize"),compressible:!1,q:.8});tn.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()}});Ev={type:"application/json",serializeStream:Wf,serialize:zf,deserialize:BZ,q:.5};tn.set("*/*",Ev);tn.set("",Ev);o(BZ,"tryJSONParse");o(Qf,"registerContentHandlers");FZ=(0,hv.default)(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:a,type:c}=$E(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&a.serializeStream){if(l.mapError){let d=l.getColumns;l=l.mapError(f=>(f.toJSON=()=>({error:f.name,message:f.message,...f.partialObject}),f)),l.getColumns=d}u=a.serializeStream}else u=a.serialize;return u(l,{headers:{set:o((d,f)=>{s.header(d,f)},"set")}})})}),r()},{name:"content-type-negotiation"});o($E,"findBestSerializer");lv=iA.default.get(U.HTTP_COMPRESSIONTHRESHOLD);o(Jf,"serialize");o(_a,"serializeMessage");o(lA,"asyncSerialization");o(uA,"hasAsyncSerialization");o(HZ,"streamToBuffer");kZ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];o(GZ,"isBufferEncoding");o(qZ,"parseContentType");o(mo,"getDeserializer");o($Z,"deserializerUnknownType");o(VZ,"transformIterable");o(qE,"toCsvStream")});var pA={};Ce(pA,{Blob:()=>gs,blobsWereEncoded:()=>Bc,databasePaths:()=>fA,decodeBlobsWithWrites:()=>XE,decodeFromDatabase:()=>Fc,decodeWithBlobCallback:()=>ZE,deleteBlob:()=>jE,deleteBlobsInObject:()=>ga,deleteRootBlobPathsForDB:()=>hA,encodeBlobsAsBuffers:()=>e6,encodeBlobsWithFilePath:()=>JE,findBlobsInObject:()=>pu,getFileId:()=>QE,getFilePathForBlob:()=>wv,getRootBlobPathsForDB:()=>tm,setDeletionDelay:()=>zZ});function bv(){}function jE(e){let t=wv(e);t&&setTimeout(()=>{(0,Ze.unlink)(t,r=>{r&&po.default.debug?.("Error trying to remove blob file",r)})},Iv)}function zZ(e){Iv=e}function Nv(e){let t=An.get(e);if(!t)t={storageIndex:0,fileId:null,store:bn},An.set(e,t);else{if(t.saving)return t;t.store=bn}return QZ(t),t.source?dA(e,t.source,t):t.contentBuffer?jZ(e,t):dA(e,Zf.Readable.from(e.stream()),t),t}function dA(e,t,r){let{filePath:n,fileId:s,store:i,compress:a,flush:c}=r;return r.saving=new Promise((l,u)=>{let d=s+":blob";if(!i.attemptLock(d,0))throw new Error(`Unable to get lock for blob file ${s}`);let f=(0,Ze.createWriteStream)(n,{autoClose:!1,flags:"w"});if(t.errored){let g=Buffer.from(t.errored.toString());f.end(Buffer.concat([p(BigInt(g.length)+0xff000000000000n),g]));return}let m=!1;e.size!==void 0&&(f.write(p(e.size)),m=!0);let h;a?(m||f.write(YZ),h=(0,WE.createDeflate)(),t.pipe(h).pipe(f)):(m||f.write(KZ),t.pipe(f)),t.on("error",_);function p(g){let y=BigInt(g),T=new Uint8Array(Rr),R=new DataView(T.buffer);return y|=BigInt(a?mA:Av)<<48n,R.setBigInt64(0,y),T}o(p,"createHeader");function _(g){i.unlock(d,0);let y=f.fd;g?(y&&(0,Ze.close)(y),u(g)):c?(0,Ze.fdatasync)(y,T=>{T&&u(T),l(),(0,Ze.close)(y)}):(l(),(0,Ze.close)(y))}o(_,"finished"),f.on("error",_).on("finish",()=>{if(m)_();else{let g=h?h.bytesWritten:f.bytesWritten-Rr;e.size=g,(0,Ze.write)(f.fd,p(g),0,Rr,0,_)}})}),e}function QE(e){return An.get(e)?.fileId}function wv(e){let t=An.get(e);return t?.fileId&&em(t)}function tm(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=fA.get(e);if(!t){if(!e.databaseName)return po.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,zE.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,_o.join)(n,e.databaseName)):t=[(0,_o.join)((0,zE.getHdbBasePath)(),"blobs",e.databaseName)],fA.set(e,t)}return t}async function hA(e){let t=tm(e);t&&await Promise.all(t.map(r=>Ov(r)))}async function Ov(e){if((0,Ze.existsSync)(e)){for(let t of await(0,zs.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await Ov((0,_o.join)(e,t.name));else try{await(0,zs.unlink)((0,_o.join)(e,t.name))}catch(r){po.default.warn?.("Error deleting file",r)}try{await(0,zs.rmdir)(e)}catch(t){po.default.warn?.("Error deleting directory",t)}}}function em({storageIndex:e,fileId:t,store:r}){let n=tm(r);return(0,_o.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 jZ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<yv))return e.size=n,dA(e,Zf.Readable.from([r]),t)}function QZ(e){let t=tm(e.store),r=JZ(),n=t?.length>1?XZ(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=em(e),a=(0,_o.dirname)(i);(0,Ze.existsSync)(a)||(0,Rv.ensureDirSync)(a),e.filePath=i}function JZ(){let e=Tv.get(bn);if(!e){let t=0,r=tm(bn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let a=0;if((0,Ze.existsSync)(n))for(let c of(0,Ze.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>a&&(a=l)}s+=a,n=(0,_o.join)(n,a.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(bn.getUserSharedBuffer("blob-file-id",e.buffer)),Tv.set(bn,e)}return Number(Atomics.add(e,0,1n))}function XZ(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(YE);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,ZZ(e)),e.frequencyTable[t%YE]}async function ZZ(e){if(!zs.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let a=await(0,zs.statfs)(s),c=a.bavail*a.bsize;return Math.pow(c,.8)})),r=new Array(YE),n=t.map(s=>1/s);for(let s=0;s<YE;s++){let i=1/0,a=0;for(let c=0;c<n.length;c++)n[c]<i&&(a=c,i=n[c]);n[a]+=1/t[a],r[s]=a}e.frequencyTable=r}function JE(e,t,r){hu=t,bn=r,Bc=!1;try{return e()}finally{hu=void 0,bn=void 0}}function e6(e){Gr=[];let t;try{t=e()}catch(n){throw Gr=void 0,n}let r=Gr.length<2?Gr[0]:Promise.all(Gr);return Gr=void 0,r?r.then(()=>e()):t}function XE(e,t){try{Gr=[],xc=t,e()}catch(n){throw xc=void 0,Gr=void 0,n}xc=void 0;let r=Gr.length<2?Gr[0]:Promise.all(Gr);return Gr=void 0,r}function ZE(e,t,r){bn=r;try{return xc=t,e()}finally{xc=void 0}}function Fc(e,t){return bn=t,e()}function ga(e){pu(e,t=>{jE(t)})}function pu(e,t){if(e instanceof gs)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&pu(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&pu(e[r],t)}}function t6(){return class{static{o(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}var Eo,zs,Ze,WE,Zf,Rv,zE,_o,po,yv,Rr,Av,mA,gv,KZ,YZ,Sv,An,xc,gs,hu,Gr,bn,Bc,Xf,VE,WZ,KE,Iv,fA,Tv,YE,Ss=fe(()=>{Eo=require("msgpackr"),zs=require("node:fs/promises"),Ze=require("node:fs"),WE=require("node:zlib"),Zf=require("node:stream"),Rv=require("fs-extra"),zE=w(ce());k();_o=require("path"),po=w(Ni());ho();yv=8192,Rr=8,Av=0,mA=1,gv=255,KZ=new Uint8Array([0,Av,255,255,255,255,255,255]),YZ=new Uint8Array([0,mA,255,255,255,255,255,255]),Sv=0xffffffffffff,An=new WeakMap,gs=global.Blob||t6(),Bc=!1,Xf=new Uint8Array(8),VE=new DataView(Xf.buffer),WZ=6e4;o(bv,"InstanceOfBlobWithNoConstructor");bv.prototype=gs.prototype;KE=class e extends bv{static{o(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=An.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):(uA()&&lA(this.bytes().then(a=>t.contentBuffer=a)),`[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=An.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=em(t),a,c=o(async()=>{let l,u=Rr;try{if(l=await(0,zs.readFile)(i),l.length>=Rr){l.copy(Xf,0,0,Rr);let f=VE.getBigUint64(0);if(Number(f>>48n)===gv)throw new Error("Error in blob: "+buffer.subarray(Rr));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<Sv&&(this.size=u,this.#t))for(let m of this.#t)m(u)}}catch(f){if(f.code!=="ENOENT")throw f;l=Buffer.alloc(0)}function d(f){if(u>f.length){let m=t.store,h=t.fileId+":blob";if(a)throw new Error("Incomplete blob");return new Promise((p,_)=>{if(m.attemptLock(h,0,()=>(a=!0,m.unlock(h,0),p(c()))))return a=!0,m.unlock(h,0),p(c())})}return(n!=null||r!=null)&&(f=f.subarray(r??0,n??f.length)),f}return o(d,"checkCompletion"),l[1]===mA?new Promise((f,m)=>{(0,WE.deflate)(l.subarray(Rr),(h,p)=>{h?m(h):f(d(p))})}):d(l.subarray(Rr))},"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=An.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(_){_.enqueue(r),_.close()}});let i=em(t),a,c=0,l=0,u,d,f,m=!1,h=this;return new ReadableStream({start(){let _=1e3,g=o((y,T)=>{(0,Ze.open)(i,"r",(R,I)=>{if(R){if(R.code==="ENOENT"&&f!==!1&&(po.default.debug?.("File does not exist yet, waiting for it to be created",i,_),_-- >0))return setTimeout(()=>{p(),g(y,T)},20).unref();T(R),h.#e?.forEach(P=>P(R))}else a=I,y(I)})},"openFile");return new Promise(g)},pull:o(_=>{let g=0,y=100;return new Promise(o(function T(R,I){function P(te){(0,Ze.close)(a),clearTimeout(d),u&&u.close(),I(te),h.#e?.forEach(x=>x(te))}o(P,"onError");let Y=Buffer.allocUnsafe(262144);(0,Ze.read)(a,Y,0,Y.length,c,(te,x,$)=>{if(l+=x,te)return P(te);if(c===0){if(x<Rr){y-- >0&&f!==!1?(p(),po.default.debug?.("File was empty, waiting for data to be written",i,y),setTimeout(()=>T(R,I),20).unref()):(po.default.debug?.("File was empty, throwing error",i,y),I(new Error(`Blob ${t.fileId} was empty`)));return}$.copy(Xf,0,0,Rr);let j=VE.getBigUint64(0);if(Number(j>>48n)===gv)return P(new Error("Error in blob: "+$.subarray(Rr)));if(g=Number(j&0xffffffffffffn),g<Sv&&h.size!==g&&(h.size=g,h.#t))for(let V of h.#t)V(g);$=$.subarray(Rr,x),l-=Rr}else if(x===0){let j=Buffer.allocUnsafe(8);return(0,Ze.read)(a,j,0,Rr,0,V=>{if(V)return P(V);if(Xf.set(j),g=Number(VE.getBigUint64(0)&0xffffffffffffn),g>l){p()?u?d=setTimeout(()=>{P(new Error("File read timed out"))},WZ).unref():(u=(0,Ze.watch)(i,{persistent:!1},()=>{u.close(),u=null,d&&(clearTimeout(d),d=null,T(R,I))}),T(R,I)):m?P(new Error("Blob is incomplete")):(m=!0,T(R,I));return}(0,Ze.close)(a),_.close(),R()})}else $=$.subarray(0,x);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=x,T(R,I);s&&l>=s&&(l>s&&($=$.subarray(0,s-c)),l=g=s),n&&n>c&&($=$.subarray(n-c))}c+=x;try{_.enqueue($)}catch(j){return po.default.debug?.("Error enqueuing chunk",j),R()}l===g&&((0,Ze.close)(a),_.close()),R()})},"readMore"))},"pull"),cancel(){(0,Ze.close)(a),clearTimeout(d),u&&u.close()}});function p(){if(f===void 0){let _=t.store,g=t.fileId+":blob";f=!_.attemptLock(g,0,()=>{f=!1,_.unlock(g,0)}),f||_.unlock(g,0)}return f}}slice(t,r,n){let s=An.get(this),i=new e(n&&{type:n});if(s?.fileId){let a={...s,start:t,end:r};An.set(i,a),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let a={...s,contentBuffer:s.contentBuffer.subarray(t,r)};An.set(i,a),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(t){if(bn=t?.primaryStore?.rootStore,!bn)throw new Error("No target table specified");return Nv(this).saving??Promise.resolve()}},Iv=500;o(jE,"deleteBlob");o(zZ,"setDeletionDelay");global.createBlob=function(e,t){let r=new KE(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(An.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof Zf.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=Zf.Readable.from(e);else throw new Error("Invalid source type");return r};o(Nv,"saveBlob");o(dA,"writeBlobWithStream");o(QE,"getFileId");o(wv,"getFilePathForBlob");fA=new Map;o(tm,"getRootBlobPathsForDB");o(hA,"deleteRootBlobPathsForDB");o(Ov,"rimrafSteadily");o(em,"getFilePath");o(jZ,"writeBlobWithBuffer");o(QZ,"generateFilePath");Tv=new Map;o(JZ,"getNextFileId");YE=128;o(XZ,"getNextStorageIndex");o(ZZ,"createFrequencyTableForStoragePaths");o(JE,"encodeBlobsWithFilePath");o(e6,"encodeBlobsAsBuffers");o(XE,"decodeBlobsWithWrites");o(ZE,"decodeWithBlobCallback");o(Fc,"decodeFromDatabase");o(ga,"deleteBlobsInObject");o(pu,"findBlobsInObject");(0,Eo.addExtension)({Class:gs,type:11,unpack:o(function(e){let t=(0,Eo.unpack)(e),r=new KE;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(An.set(r,{storageIndex:t[1],fileId:t[2],store:bn}),xc)return xc(r)??r;if(!bn)throw new Error("No store specified, cannot load blob from storage")}else An.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:o(function(e){let t=An.get(e);if(hu!==void 0&&(Bc=!0,t?.recordId!==void 0&&t.recordId!==hu))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<yv)return r.size=t.contentBuffer.length,(0,Eo.pack)([r,t.contentBuffer])}if(hu!==void 0){if(t=Nv(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=hu,(0,Eo.pack)([r,t.storageIndex,t.fileId])}if(t)try{let n=(0,Ze.readFileSync)(em(t));if(n.length>=Rr&&(n.copy(Xf,0,0,Rr),Number(VE.getBigUint64(0)&0xffffffffffffn)===n.length-Rr))return Buffer.concat([(0,Eo.pack)([r]),n]);if(Gr)Gr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Gr)return Gr.push(e.bytes()),Buffer.alloc(0);throw n}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Eo.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});o(t6,"polyfillBlob")});var Mv={};Ce(Mv,{onStorageReclamation:()=>rm,runReclamationHandlers:()=>SA,setAvailableSpaceRatioGetter:()=>n6});function rm(e,t,r){(r||(0,t_.getWorkerIndex)()===(0,t_.getWorkerCount)()-1)&&(e_.has(e)||e_.set(e,[]),e_.get(e).push({priority:0,handler:t}),gA||(gA=setTimeout(SA,Pv).unref()))}async function SA(){for(let[e,t]of e_)try{let r=await Dv(e),n=r6/r;for(let s of t){let{priority:i,handler:a}=s;if(s.priority=n,n>1||i>1){let c=a(n>1?n:0);c&&(_A.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){_A.default.error?.("Error running storage reclamation handlers",r)}gA=setTimeout(SA,Pv).unref()}function n6(e){Dv=e??Lv}var EA,t_,_A,r_,Cv,e_,r6,Pv,gA,Lv,Dv,n_=fe(()=>{EA=require("node:fs/promises"),t_=w(st()),_A=w(Ni());k();r_=w(ce()),Cv=w(ie());r_.default.initSync();e_=new Map,r6=r_.default.get(U.STORAGE_RECLAMATION_THRESHOLD)??.4,Pv=(0,Cv.convertToMS)(r_.default.get(U.STORAGE_RECLAMATION_INTERVAL))||36e5;o(rm,"onStorageReclamation");Lv=o(async e=>{if(EA.statfs){let t=await(0,EA.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"),Dv=Lv;o(SA,"runReclamationHandlers");o(n6,"setAvailableSpaceRatioGetter")});var Yv={};Ce(Yv,{ACTION_32_BIT:()=>c_,ACTION_64_BIT:()=>o6,AUDIT_STORE_OPTIONS:()=>im,Decoder:()=>kc,HAS_BLOBS:()=>In,HAS_CURRENT_RESIDENCY_ID:()=>Gc,HAS_EXPIRATION_EXTENDED_TYPE:()=>cm,HAS_ORIGINATING_OPERATION:()=>am,HAS_PREVIOUS_RESIDENCY_ID:()=>qc,REMOTE_SEQUENCE_UPDATE:()=>l_,createAuditEntry:()=>_u,getLastRemoved:()=>IA,openAuditStore:()=>o_,readAuditEntry:()=>vt,removeAuditEntry:()=>a_,setAuditRetention:()=>i6,transactionKeyEncoder:()=>qv});function o_(e){let t=e.auditStore=e.openDB(TA.AUDIT_STORE_NAME,{create:!1,...im});t||(t=e.auditStore=e.openDB(TA.AUDIT_STORE_NAME,im),Uv(t,1)),t.rootStore=e,t.tableStores=[];let r=[];t.addDeleteRemovalCallback=function(l,u,d){return r[l]=d,t.tableStores[l]=u,t.deleteCallbacks=r,{remove(){delete r[l]}}};let n=null,s,i=0,a=yA;rm(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(a=l),clearTimeout(n);let u=new Promise(d=>{n=setTimeout(async()=>{if(await s,s=u,t.rootStore.status==="closed"||t.rootStore.status==="closing")return;let f=0,m,h;try{for(let{key:p,value:_}of t.getRange({start:1,snapshot:!1,end:Date.now()-RA/(1+i*i)})){try{m=a_(t,p,_)}catch(g){Eu.warn("Error removing audit entry",g)}if(h=p,await new Promise(setImmediate),++f>=s6){a=10;break}}await m}finally{f===0?a=Math.min(a<<1,RA/10):(Uv(t,h),a>100&&(a=a>>1)),d(void 0),c()}},a).unref()});return u}if(o(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,sm.getWorkerIndex)()===(0,sm.getWorkerCount)()-1&&c(),(0,sm.getWorkerIndex)()===0&&!vv)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(vv=!0,Eu.error("The current time is before the last recorded entry in the audit log. Time reversal can undermine the integrity of data tracking and certificate validation and the time must be corrected."));return t}function a_(e,t,r){let n=a6(r),s;if(n&In){s=vt(r);let i=e.tableStores[s.tableId],a=i?.getEntry(s.recordId);(!a||a.version!==s.version||!a.value)&&Fc(()=>ga(s.getValue(i)),i.rootStore)}if((n&15)===AA){s=s||vt(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 Uv(e,t){bA[0]=t,e.put(Symbol.for("last-removed"),$v)}function IA(e){let t=e.get(Symbol.for("last-removed"));if(t)return $v.set(t),bA[0]}function i6(e,t=yA){RA=e,yA=t}function _u(e,t,r,n,s,i,a,c,l,u,d,f,m){let h=Vv[a];if(!h)throw new Error(`Invalid audit entry type ${a}`);let p=1;if(n&&(n>1?Sa.setFloat64(0,n):Ts.set(NA),p=9),l){if(l&255)throw new Error("Illegal extended type");p+=3}y(s),y(t),g(r),Sa.setFloat64(p,e),p+=8,l&Gc&&y(u),l&qc&&y(d),l&cm&&(Sa.setFloat64(p,f),p+=8),l&am&&y(Kv[m]),i?g(i):Ts[p++]=0,l?Sa.setUint32(n?8:0,h|l|3221225472):Ts[n?8:0]=h;let _=Ts.subarray(0,p);if(c)return Buffer.concat([_,c]);return _;function g(T){let R=p;p+=1,p=(0,Hc.writeKey)(T,Ts,p);let I=p-R-1;I>127?I>16383?(Eu.error("Key or username was too large for audit entry",T),p=R+1,Ts[R]=0):(Ts.copyWithin(R+2,R+1,p),Sa.setUint16(R,I|32768),p++):Ts[R]=I}function y(T){T<128?Ts[p++]=T:T<16384?(Sa.setUint16(p,T|32768),p+=2):T<1056964608?(Sa.setUint32(p,T|3221225472),p+=4):(Ts[p]=255,Sa.setUint32(p+1,T),p+=5)}}function a6(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 kc(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function vt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new kc(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),a=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,d=n.position+=l,f=n.readFloat64(),m,h,p,_;if(i&Gc&&(m=n.readInt()),i&qc&&(h=n.readInt()),i&cm&&(p=n.readFloat64()),i&am){let R=n.readInt();_=Kv[R]}l=n.readInt();let g=n.position,y=n.position+=l,T;return{type:Vv[i&7],tableId:c,nodeId:a,get recordId(){return(0,Hc.readKey)(e,u,d)},getBinaryRecordId(){return e.subarray(u,d)},version:f,previousLocalTime:s,get user(){return y>g?(0,Hc.readKey)(e,g,y):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(R,I,P){if(i&s_||i&nm&&!I)return T||(T=Fc(()=>R.decoder.decode(e.subarray(n.position,r)),R.rootStore)),T;if(i&nm&&P)return Zy(R.getEntry(this.recordId),P,R)},getBinaryValue(){return i&(s_|nm)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:m,previousResidencyId:h,expiresAt:p,originatingOperation:_}}catch(n){return Eu.error("Reading audit entry error",n,e),{}}}var Hc,i_,TA,sm,Gv,Eu,Ts,Sa,qv,im,RA,s6,bA,$v,yA,vv,s_,nm,xv,AA,Bv,Fv,Hv,kv,c_,o6,l_,Gc,qc,am,cm,In,Vv,Kv,kc,lo=fe(()=>{Hc=require("ordered-binary"),i_=w(ce()),TA=w(kt());k();sm=w(st()),Gv=w(ie());$c();Eu=w(z());HE();Ss();n_();(0,i_.initSync)();Ts=Buffer.alloc(2816),Sa=new DataView(Ts.buffer,Ts.byteOffset,2816),qv={writeKey(e,t,r){return e===om?(t.set(om,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,Hc.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,Hc.readKey)(e,t,r)}},im={encoding:"binary",keyEncoder:qv},RA=(0,Gv.convertToMS)((0,i_.get)(U.LOGGING_AUDITRETENTION))||86400*3,s6=1e3,bA=new Float64Array(1),$v=new Uint8Array(bA.buffer),yA=1e4,vv=!1;o(o_,"openAuditStore");o(a_,"removeAuditEntry");o(Uv,"updateLastRemoved");o(IA,"getLastRemoved");o(i6,"setAuditRetention");s_=16,nm=32,xv=1,AA=2,Bv=3,Fv=4,Hv=5,kv=6,c_=14,o6=15,l_=11,Gc=512,qc=1024,am=2048,cm=4096,In=8192,Vv={put:xv|s_,[xv]:"put",delete:AA,[AA]:"delete",message:Bv|s_,[Bv]:"message",invalidate:Fv|nm,[Fv]:"invalidate",patch:Hv|nm,[Hv]:"patch",relocate:kv,[kv]:"relocate"},Kv={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};o(_u,"createAuditEntry");o(a6,"readAction");o(vt,"readAuditEntry");kc=class extends DataView{static{o(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}}}});var Jv={};Ce(Jv,{ENTRY:()=>l6,HAS_EXPIRATION:()=>f_,HAS_RESIDENCY_ID:()=>DA,HAS_STRUCTURE_UPDATE:()=>m_,LAST_TIMESTAMP_PLACEHOLDER:()=>om,LOCAL_TIMESTAMP:()=>c6,METADATA:()=>Su,NEW_TIMESTAMP_PLACEHOLDER:()=>zv,NO_TIMESTAMP:()=>wA,PENDING_LOCAL_TIME:()=>MA,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>NA,RecordEncoder:()=>LA,TIMESTAMP_ASSIGN_LAST:()=>d6,TIMESTAMP_ASSIGN_NEW:()=>jv,TIMESTAMP_ASSIGN_PREVIOUS:()=>Qv,TIMESTAMP_PLACEHOLDER:()=>u_,TIMESTAMP_RECORD_PREVIOUS:()=>OA,entryMap:()=>Ta,handleLocalTimeForGets:()=>h_,lastMetadata:()=>at,recordUpdater:()=>vA,removeEntry:()=>Kc});function m6(){return dm[0]=dm[0]^64,u6.getFloat64(0)}function h_(e,t){let r=e.getEntry;e.readCount=0,e.cachePuts=!1,e.rootStore=t,e.encoder.rootStore=t,e.getEntry=function(a,c){e.readCount++,at=null;let l=r.call(this,a,c);return l&&(at&&(l.metadataFlags=at[Su],l.localTime=at.localTime,l.residencyId=at.residencyId,at.expiresAt>=0&&(l.expiresAt=at.expiresAt),at=null),l.value&&Ta.set(l.value,l),l.key=a),l};let n=e.get;e.get=function(a,c){at=null;let l=n.call(this,a,c);return at&&l&&(Ta.set(l,at),at=null),l};let s=e.getRange;e.getRange=function(a){let c=s.call(this,a);return a.valuesForKey?c.map(l=>l?.value):a.values===!1||a.onlyCount?c:c.map(l=>(at&&(l.metadataFlags=at[Su],l.localTime=at.localTime,l.residencyId=at.residencyId,at.expiresAt>=0&&(l.expiresAt=at.expiresAt),at=null),l))};let i=e.useReadTransaction();if(i.done(),!i.done.isTracked){let a=i.constructor,c=i.use,l=i.done;a.prototype.use=function(){this.timerTracked||(this.timerTracked=!0,Vc.push(new WeakRef(this))),c.call(this)},a.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<Vc.length;u++){let d=Vc[u].deref();(!d||d.isDone||d.isCommitted)&&Vc.splice(u--,1)}},a.prototype.done.isTracked=!0}return e}function vA(e,t,r){return function(n,s,i,a,c=-1,l,u,d="put",f,m){f||l==null?gu=i?.localTime?OA|Qv:wA:gu=l?i?.localTime?OA|16384:jv|16384:wA;let h=u?.expiresAt;if(h>=0&&(c|=f_),um=c,CA=h,i?.version===a&&l===!1)throw new Error("Must retain local time if version is not changed");let p={version:a,instructedWrite:gu>0},_,g=0;try{let y=i?.residencyId,T=u?.residencyId;T&&(PA=T,um|=DA,g|=Gc),y!==T&&(g|=qc,y||(y=0)),c&f_&&(g|=cm),u?.originatingOperation&&(g|=am),f&&(p.ifVersion=_=i?.version??null),i&&i.value&&i.metadataFlags&In&&(r.getBinaryFast(i.localTime)||ga(i.value));let R;if(s!==void 0&&(R=JE(()=>e.put(n,s,p),n,e.rootStore),Bc&&(g|=In)),l){let I=u?.user?.username;if(m&&(JE(()=>e.encoder.encode(m),n,e.rootStore),Bc&&(g|=In)),e.encoder.hasStructureUpdate&&(g|=m_,e.encoder.hasStructureUpdate=!1),f&&i?.localTime){let P=i?.localTime,Y=r.get(P);if(Y){let te=vt(Y).previousLocalTime;return R=r.put(P,_u(a,t,n,te,u?.nodeId??server.replication.getThisNodeId(r)??0,I,d,lm,g,T,y,h),{ifVersion:_}),R}}R=r.put(s===void 0?zv:om,_u(a,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,I,d,lm,g,T,y,h,u?.originatingOperation),{append:d!=="invalidate",instructedWrite:!0,ifVersion:_})}return R}catch(y){throw y.message+=" id: "+n+" options: "+p,y}}}function Kc(e,t,r){if(t)return t.value&&t.metadataFlags&In&&!e.auditStore.getBinaryFast(t.localTime)&&ga(t.value),e.remove(t.key,r)}var Wv,d_,u_,om,NA,zv,c6,Su,l6,dm,u6,wA,jv,d6,Qv,OA,f_,DA,MA,m_,Ta,f6,lm,gu,um,CA,PA,at,LA,Vc,$c=fe(()=>{Wv=require("msgpackr");lo();d_=w(z());Ss();Ss();u_=new Uint8Array([1,1,1,1,4,64,0,0]),om=new Uint8Array([1,1,1,1,1,0,0,0]),NA=new Uint8Array([1,1,1,1,3,64,0,0]),zv=new Uint8Array([1,1,1,1,0,64,0,0]),c6=Symbol("local-timestamp"),Su=Symbol("metadata"),l6=Symbol("entry"),dm=new Uint8Array(8),u6=new DataView(dm.buffer,0,8),wA=0,jv=0,d6=1,Qv=3,OA=4,f_=16,DA=32,MA=1,m_=256,Ta=new WeakMap,gu=0,um=-1,CA=-1,PA=0,at=null,LA=class extends Wv.Encoder{static{o(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0;class r{static{o(this,"RecordObject")}getUpdatedTime(){return Ta.get(this)?.version}getExpiresAt(){return Ta.get(this)?.expiresAt}}t.structPrototype=r.prototype,super(t);let n=this.encode;this.encode=function(i,a){if(gu||um>=0){let c=0,l=gu;l&&(c+=8,gu=0);let u=um,d=CA,f=PA;u>=0&&(c+=4,um=-1,d>=0&&(c+=8,CA=-1),f&&(c+=4,PA=0));let m=f6=n.call(this,i,a|2048|c);lm=m.subarray((m.start||0)+c,m.end);let h=m.start||0;return l&&(u_[4]=l,u_[5]=l>>8,m.set(u_,h),h+=8),Bc&&(u|=In),u>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(h,u|c_<<24),h+=4,d>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setFloat64(h,d),h+=8),f&&(m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(h,f)),m}else return lm=n.call(this,i,a),lm};let s=this.saveStructures;this.saveStructures=function(i,a){let c=s.call(this,i,a);return this.hasStructureUpdate=!0,c}}decode(t,r){at=null;let n=r?.start||0,s=r>-1?r:r?.end||t.length,i=t[n],a=0;try{if(i<32&&s>2){let c=n,l;if(i===2){if(t.copy)t.copy(dm,0,c),c+=8;else for(let m=0;m<8;m++)dm[m]=t[c++];l=m6(),i=t[c]}let u,d;i<32&&(i===c_?(a=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4):(a=i|t[c+1]<<5,c+=2),a&f_&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),a&DA&&(d=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let f=Fc(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return at={localTime:l,[Su]:a,expiresAt:u,residencyId:d},f}return r?.valueAsBuffer?t:Fc(()=>super.decode(t,r),this.rootStore)}catch(c){return d_.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};o(m6,"getTimestamp");o(h_,"handleLocalTimeForGets");Vc=[];setInterval(()=>{for(let e=0;e<Vc.length;e++){let t=Vc[e].deref();!t||t.isDone||t.isCommitted?Vc.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(d_.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):d_.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();o(vA,"recordUpdater");o(Kc,"removeEntry")});function BA(e,t,r,n,s,i,a,c){let l=e[0];if(t==="or"){let f=u(l);for(let h=1;h<e.length;h++){let p=e[h],_=u(p);f=f.concat(_)}let m=new Set;return f.filter(h=>{let p=h.key??h;return m.has(p)?!1:(m.add(p),!0)})}else{let f=u(l),m=d(e.slice(1),!0,l.estimated_count);return m.length>0?a(f,m):f}function u(f){return f.conditions?BA(f.conditions,f.operator,r,n,s,i,a,c):Au(f,n,f.descending||s.reverse===!0,r,s.allowFullScan,c,i)}o(u,"executeCondition");function d(f,m,h){return f.map((p,_)=>{if(p.conditions){let T=p.operator==="or",R=d(p.conditions,!T,h);return T?(I,P)=>R.some(Y=>Y(I,P)):(I,P)=>R.every(Y=>Y(I,P))}let g=(p.attribute||p[0])===r.primaryKey,y=mm(p,r,i,c,g,h);return m&&_<f.length-1&&h&&(h=y6(r.primaryStore,p.estimated_count,h)),y}).filter(Boolean)}o(d,"mapConditionsToFilters")}function Au(e,t,r,n,s,i,a){let c=e[0]??e.attribute,l=e[1]??e.value,u=e.comparator;if(l===void 0&&u!=="sort")throw new qr.ClientError(`Search condition for ${c} must have a value`);if(Array.isArray(c)){let R=c[0],I=Ci(n.attributes,R);if(I.relationship){if(c.length<2)throw new qr.ClientError("Can not directly query a relational attribute, must query an attribute within the target table");let P=I.definition?.tableClass||I.elements?.definition?.tableClass,Y=new Map,te=Au({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:u},t,r,P,s,Y);if(I.relationship.to){i[c[0]]=Y;let x=!!Ci(P.attributes,I.relationship.to)?.elements;te=g6(te,I,P.primaryStore,x,Y)}if(I.relationship.from){let x=o($=>($?.key!==void 0&&($=$.key),Au({attribute:I.relationship.from,value:$},t,r,n,s,Y)),"searchEntry");I.elements?(i[c[0]]=Y,te=S6(te,I,P.primaryStore,Y,x)):te=te.flatMap(x)}return te}else if(c.length===1)c=c[0];else throw new qr.ClientError("Unable to query by attribute "+JSON.stringify(c))}let d=c===n.primaryKey||c==null,f=d?n.primaryStore:n.indices[c],m,h,p,_;l instanceof Date&&(l=l.getTime());let g;switch(FA[u]||u){case"lt":m=!0,h=l;break;case"le":m=!0,h=l,p=!0;break;case"gt":m=l,_=!0;break;case"ge":m=l;break;case"prefix":Array.isArray(l)?l[l.length-1]!=null&&(l=l.concat(null)):l=[l,null],m=l,h=l.slice(0),h[h.length-1]=Oi.MAXIMUM_KEY;break;case"starts_with":m=l.toString(),h=l+"\uFFFF";break;case"between":case"gele":case"gelt":case"gtlt":case"gtle":m=l[0],m instanceof Date&&(m=m.getTime()),h=l[1],h instanceof Date&&(h=h.getTime()),p=u==="gele"||u==="gtle"||u==="between",_=u==="gtlt"||u==="gtle";break;case"equals":case void 0:m=l,h=l,p=!0;break;case"ne":if(l===null){m=l,_=!0;break}case"sort":case"contains":case"ends_with":m=!0,g=!0;break;default:throw new qr.ClientError(`Unknown query comparator "${u}"`)}let y;if(typeof m=="string"&&m.length>Rs.MAX_SEARCH_KEY_LENGTH&&(m=m.slice(0,Rs.MAX_SEARCH_KEY_LENGTH)+Rs.OVERFLOW_MARKER,_=!1,y=mm(e,n,null,i,d)),typeof h=="string"&&h.length>Rs.MAX_SEARCH_KEY_LENGTH&&(h=h.slice(0,Rs.MAX_SEARCH_KEY_LENGTH)+Rs.OVERFLOW_MARKER,p=!0,y=y??mm(e,n,null,i,d)),r){let R=m;m=h,h=R,R=!_,_=!p,p=R}if(!f||f.isIndexing||g||l===null&&!f.indexNulls){if(s===!1&&!f)throw new qr.ClientError(`"${c}" is not indexed, can not search for this attribute`,404);if(s===!1&&g)throw new qr.ClientError(`Can not use ${u||"equal"} operator without combining with a condition that uses an index, can not search for attribute ${c}`,403);if(f?.isIndexing)throw new qr.ServerError(`"${c}" is not indexed yet, can not search for this attribute`,503);if(l===null&&f&&!f.indexNulls)throw new qr.ClientError(`"${c}" is not indexed for nulls, index needs to be rebuilt to search for nulls, can not search for this attribute`,400);if(y=y??mm(e,n,null,i,d),!y)throw new qr.ClientError(`Unknown search operator ${e.comparator}`)}let T={start:m,end:h,inclusiveEnd:p,exclusiveStart:_,values:!0,versions:d,transaction:t,reverse:r};if(d){let R=f.getRange(T).map(y?function({key:I,value:P}){return this?.isSync?P&&y(P)?I:Ra.SKIP:new Promise((Y,te)=>setImmediate(()=>{try{Y(P&&y(P)?I:Ra.SKIP)}catch(x){te(x)}}))}:I=>I.value==null&&!(I.metadataFlags&(Nn|ya))?Ra.SKIP:I);return R.hasEntries=!0,R}else return f?f.customIndex?f.customIndex.search(e,a).map(R=>{if(typeof R=="object"&&R){let{key:I,...P}=R,Y=n.primaryStore.getEntry(I);return{...P,...Y}}return R}):f.getRange(T).map(y?function({key:R,value:I}){let P;return typeof R=="string"&&R.length>Rs.MAX_SEARCH_KEY_LENGTH?P=n.primaryStore.get(I):P={[c]:R},this.isSync?y(P)?I:Ra.SKIP:new Promise((Y,te)=>setImmediate(()=>{try{Y(y(P)?I:Ra.SKIP)}catch(x){te(x)}}))}:({value:R})=>R):n.primaryStore.getRange(r?{end:!0,transaction:t,reverse:!0}:{start:!0,transaction:t}).map(function({key:R,value:I}){return this.isSync?I&&y(I)?R:Ra.SKIP:new Promise((P,Y)=>setImmediate(()=>{try{P(I&&y(I)?R:Ra.SKIP)}catch(te){Y(te)}}))})}function Ci(e,t){if(Array.isArray(t))if(t.length>1){let r=Ci(e,t[0]),n=(r?.definition?.tableClass||r?.elements?.definition?.tableClass)?.attributes??r?.properties;return n?Ci(n,t.slice(1)):void 0}else t=t.toString();else typeof t!="string"&&(t=t.toString());return e.find(r=>r.name===t)}function g6(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i;return s.hasMappings=!0,{next(){if(!i){let c=t.relationship.to,l=o((u,d)=>{let f=s.get(u);f?f.push(d):s.set(u,f=[d])},"addEntry");for(let u of e){let d=u.value??r.get(u.key??u),f=d?.[c];if(f!=null&&!s.filters?.some(m=>!m(d)))if(n)for(let m=0;m<f.length;m++)l(f[m],u);else l(f,u)}return i=s.keys()[Symbol.iterator](),this.next()}let a=i.next();return a.done?a:{value:a.value}},return(){if(i?.return)return i.return()}}}})}function S6(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i,a,c=new Set;return{next(){let l;if(a)for(;l=a.next(),!l.done;){let u=l.value;if(!c.has(u))return c.add(u),l}if(!i){let u=new Set;n.fromRecord=d=>d[t.relationship.from]?.filter?.(f=>u.has(f));for(let d of e){if(n.filters){let f=r.get(d);if(n.filters.some(m=>!m(f)))continue}u.add(d)}return i=u[Symbol.iterator](),this.next()}do{let u=i.next();return u.done?u:(a=s(u.value)[Symbol.iterator](),this.next())}while(!0)},return(){return a?.return?.()},throw(){return a?.throw?.()}}}})}function mm(e,t,r,n,s,i){let a=e.comparator,c=e[0]??e.attribute,l=e[1]??e.value;if(Array.isArray(c)){if(c.length===0)return()=>!0;if(c.length===1)c=c[0];else if(c.length>1){let d=c[0],f=Ci(t.attributes,d),m=f.definition?.tableClass||f.elements.definition?.tableClass,h=n?.[d],p=mm({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:a},m,r,h?.[d]?.joined,c[1]===m.primaryKey,i);if(!p)return;if(h){h.filters||(h.filters=[]),h.filters.push(p);return}let _=t.propertyResolvers?.[d];_.to&&(p.to=_.to);let g,y=o((R,I)=>{let P,Y;return _?_.returnDirect?(P=_(R,r,I),Y=at):(Y=_(R,r,I,!0),Array.isArray(Y)?(P=Y.map(te=>te.value),Y=null):P=Y?.value):P=R[d],{subObject:P,subEntry:Y}},"getSubObject"),T=o((R,I)=>{if(_&&p.idFilter){if(!g)if(p.idFilter.idSet?.size===1){for(let $ of p.idFilter.idSet)e={attribute:_.from??t.primaryKey,value:$};g=u(_.from??t.primaryKey,p.idFilter,!0,!0)}else g=u(_.from??t.primaryKey,p.idFilter,!1,!0);let x=g(R);return g.idFilter&&(T.idFilter=g.idFilter),x}let{subObject:P,subEntry:Y}=y(R,I);return P?Array.isArray(P)?(!n?.[d]&&n&&(n[d]={fromRecord(x){let $=y(x).subObject;return Array.isArray($)?$.filter(p).map(j=>j[m.primaryKey]):$}}),P.some(p)):p(P,Y):!1},"recordFilter");return T}}switch(l instanceof Date&&(l=l.getTime()),FA[a]||a){case Rs.SEARCH_TYPES.EQUALS:case void 0:return u(c,d=>d===l,!0);case"contains":return u(c,d=>d?.toString().includes(l));case"ends_with":return u(c,d=>d?.toString().endsWith(l));case"starts_with":return u(c,d=>typeof d=="string"&&d.startsWith(l),!0);case"prefix":return Array.isArray(l)?l[l.length-1]==null&&(l=l.slice(0,-1)):l=[l],u(c,d=>{if(!Array.isArray(d))return!1;for(let f=0,m=l.length;f<m;f++)if(d[f]!==l[f])return!1;return!0},!0);case"between":return l[0]instanceof Date&&(l[0]=l[0].getTime()),l[1]instanceof Date&&(l[1]=l[1].getTime()),u(c,d=>(0,Oi.compareKeys)(d,l[0])>=0&&(0,Oi.compareKeys)(d,l[1])<=0,!0);case"gt":return u(c,d=>(0,Oi.compareKeys)(d,l)>0);case"ge":return u(c,d=>(0,Oi.compareKeys)(d,l)>=0);case"lt":return u(c,d=>(0,Oi.compareKeys)(d,l)<0);case"le":return u(c,d=>(0,Oi.compareKeys)(d,l)<=0);case"ne":return u(c,d=>(0,Oi.compareKeys)(d,l)!==0,!1,!0);case"sort":return()=>!0;default:throw new qr.ClientError(`Unknown query comparator "${a}"`)}function u(d,f,m,h){let p;m=m&&!s&&t?.indices[d]&&i>3,m&&(e.estimated_count==null&&E_(t)(e),p=e.estimated_count>>4,(isNaN(p)||p>=i)&&(m=!1));let _=0,g=3;function y(T){let R=T[d],I;if(typeof R!="object"||!R||h?I=f(R):Array.isArray(R)?I=R.some(f):R instanceof Date&&(I=f(R.getTime())),m&&(g++,!I&&!y.idFilter&&++_/g*i>p)){let P=Au(e,r.transaction.getReadTxn(),!1,t),Y;y.to?Y=P.flatMap(x=>t.primaryStore.get(x)[y.to]):Y=P.map(bu);let te=new Set(Y);y.idFilter=x=>te.has(bu(x)),y.idFilter.idSet=te}return I}return o(y,"recordFilter"),s&&(y.idFilter=f),y}o(u,"attributeComparator")}function E_(e){function t(r){if(r.estimated_count===void 0){if(r.conditions){let s;if(r.operator==="or"){s=0;for(let i of r.conditions)t(i),s+=i.estimated_count}else{s=1/0;for(let i of r.conditions)t(i),s=isFinite(s)?s*i.estimated_count/go(e.primaryStore):i.estimated_count}return r.estimated_count=s,r.estimated_count}let n=r.comparator||r.search_type;if(n=FA[n]||n,n===Rs.SEARCH_TYPES.EQUALS||!n){let s=r[0]??r.attribute;if(s==null||s===e.primaryKey)r.estimated_count=1;else if(Array.isArray(s)&&s.length>1){let i=Ci(e.attributes,s[0]),a=i.definition?.tableClass||i.elements.definition?.tableClass,c=E_(a)({value:r.value,attribute:s.length>2?s.slice(1):s[1],comparator:"equals"}),l=e.indices[i.relationship.from];r.estimated_count=c+(l?c*go(e.indices[i.relationship.from])/(go(a.primaryStore)||1):c)}else{let i=e.indices[s];r.estimated_count=i?i.getValuesCount(r[1]??r.value):1/0}}else if(n==="contains"||n==="ends_with"||n==="ne"){let s=r[0]??r.attribute,i=e.indices[s];r.value===null&&n==="ne"?r.estimated_count=go(e.primaryStore)-(i?i.getValuesCount(null):0):r.estimated_count=1/0}else if(n==="starts_with"||n==="prefix")r.estimated_count=E6*go(e.primaryStore)+1;else if(n==="between")r.estimated_count=p6*go(e.primaryStore)+1;else if(n==="sort"){let s=r[0]??r.attribute,i=e.indices[s];i?.customIndex?.estimateCountAsSort?r.estimated_count=i.customIndex.estimateCountAsSort(r):r.estimated_count=go(e.primaryStore)+1}else{let s=r[0]??r.attribute,i=e.indices[s];i?.customIndex?.estimateCount?r.estimated_count=i.customIndex.estimateCount(r.value):r.estimated_count=h6*go(e.primaryStore)+1}typeof r.descending=="boolean"&&(r.estimated_count/=2)}return r.estimated_count}return o(t,"estimateConditionForTable"),t}function __(e,t){if(e)if(So=e,Tu.lastIndex=0,T6.test(e))try{if(t&&(t.conditions=[]),js=t??new yu,fm(js,""),Lr!==So.length&&Gt("Unable to parse query, unexpected end of query"),js.parseErrorMessage&&(js.parseError=new UA(t.parseErrorMessage),!t))throw js.parseError;return js}catch(r){if(r.statusCode=400,r.message=`Unable to parse query, ${r.message} at position ${Lr} in '${So}'`,js.parseErrorMessage&&(r.message+=", "+js.parseErrorMessage),t)t.parseError=r;else throw r}else return t??new URLSearchParams(e)}function Gt(e){let t=`${e} at position ${Lr}`;js.parseErrorMessage=js.parseErrorMessage?js.parseErrorMessage+", "+t:t}function fm(e,t){let r=Tu,n,s,i,a,c,l=decodeURIComponent,u;for(;n=r.exec(So);){Lr=r.lastIndex;let[,d,f]=n;a?(d&&Gt(`expected operator, but encountered '${d}'`),a=!1,c=!1):c=!0;let m;switch(f){case"=":s!=null?(d.length<=2?i=d:Gt(`invalid FIQL operator ${d}`),l=Xv):(l=decodeURIComponent,i="equals",d||Gt("attribute must be specified before equality comparator"),s=Ru(d));break;case"==":case"!=":case"<":case"<=":case">":case">=":case"===":case"!==":i=_6[f],l=xA[i]?Xv:decodeURIComponent,d||Gt(`attribute must be specified before comparator ${f}`),s=Ru(d);break;case"&=":case"|=":case"|":case"&":case"":case void 0:if(s==null)s===void 0&&(t&&Gt(`expected '${t}', but encountered ${f[0]?"'"+f[0]+"'":"end of string"}}`),Gt(`no comparison specified before ${f?"'"+f+"'":"end of string"}`));else{e.conditions||Gt("conditions/comparisons are not allowed in a property list");let p={comparator:i,attribute:s||null,value:l(d)};if(i==="eq"&&Zv(p,d),s===""){let _=e.conditions[e.conditions.length-1];_.chainedConditions=_.chainedConditions||[],_.chainedConditions.push(p),_.operator=u}else p_(e,u),e.conditions.push(p)}f==="&"?(u="and",s=void 0):f==="|"?(u="or",s=void 0):f==="&="?(u="and",s=""):f==="|="&&(u="or",s="");break;case",":e.conditions?Gt("conditions/comparisons are not allowed in a property list"):e.push(Ru(d)),s=void 0;break;case"(":Tu.lastIndex=Lr;let h=fm(d?[]:new yu,")");switch(d){case"":p_(e,u),e.conditions.push(h);break;case"limit":switch(h.length){case 1:e.limit=+h[0];break;case 2:e.offset=+h[0],e.limit=h[1]-e.offset;break;default:Gt("limit must have 1 or 2 arguments")}break;case"select":Array.isArray(h[0])&&h.length===1&&!h[0].name?(e.select=h[0],e.select.asArray=!0):h.length===1?e.select=h[0]:h.length===2&&h[1]===""?e.select=h.slice(0,1):e.select=h;break;case"group-by":Gt("group by is not implemented yet");case"sort":e.sort=eU(h);break;default:Gt(`unknown query function call ${d}`)}So[Lr]===","?r.lastIndex=++Lr:a=!0,s=null;break;case"{":e.conditions&&Gt("property sets are not allowed in a queries"),d||Gt("property sets must have a defined parent property name"),Tu.lastIndex=Lr,m=fm([],"}"),m.name=d,e.push(m),So[Lr]===","?r.lastIndex=++Lr:a=!0;break;case"[":if(Tu.lastIndex=Lr,d?(m=fm(new yu,"]"),m.name=d):m=fm(e.conditions?new yu:[],"]"),e.conditions)if(p_(e,u),So[Lr]==="="){l=decodeURIComponent,i="equals",s=Ru(d),r.lastIndex=++Lr;break}else e.conditions.push(m),s=null;else e.push(m);So[Lr]===","?r.lastIndex=++Lr:a=!0;break;case")":case"]":case"}":if(t===f[0]){if(e.conditions)if(s){let p={comparator:i||"equals",attribute:s,value:l(d)};i==="eq"&&Zv(p,d),p_(e,u),e.conditions.push(p)}else d&&Gt("no attribute or comparison specified");else(d||e.length>0&&c)&&e.push(Ru(d));return e}else Gt(t?`expected '${t}', but encountered '${f[0]}'`:`unexpected token '${f[0]}'`);default:Gt(`unexpected operator '${f}'`)}if(t!==")"&&(r=s?R6:Tu,r.lastIndex=Lr),Lr===So.length)return e}t&&Gt(`expected '${t}', but encountered end of string`)}function p_(e,t){e.conditions.length>0&&(e.operator?e.operator!==t&&Gt("Can not mix operators within a condition grouping"):e.operator=t)}function Ru(e){return e.indexOf(".")>-1?e.split(".").map(Ru):decodeURIComponent(e)}function Xv(e){if(e==="null")return null;if(e.indexOf(":")>-1){let[t,r]=e.split(":");if(t==="number")return r[0]==="$"?parseInt(r.slice(1),36):+r;if(t==="boolean")return r==="true";if(t==="date")return new Date(isNaN(r)?decodeURIComponent(r):+r);if(t==="string")return decodeURIComponent(r);throw new qr.ClientError(`Unknown type ${t}`)}return decodeURIComponent(e)}function Zv(e,t){if(t.indexOf("*")>-1)if(t.endsWith("*"))e.comparator="starts_with",e.value=decodeURIComponent(t.slice(0,-1));else throw new qr.ClientError("wildcard can only be used at the end of a string")}function eU(e){let t=tU(e[0]);return e.length>1&&(t.next=eU(e.slice(1))),t}function tU(e){if(Array.isArray(e)){let t=tU(e[0]);return e[0]=t.attribute,t.attribute=e,t}if(typeof e=="string")switch(e[0]){case"-":return{attribute:e.slice(1),descending:!0};case"+":return{attribute:e.slice(1),descending:!1};default:return{attribute:e,descending:!1}}Gt(`Unknown sort type ${e}`)}function bu(e){return Array.isArray(e)?e.join("\0"):e}function go(e){let t=Date.now();return(e.estimatedEntryCountExpires||0)<t&&(e.estimatedEntryCount=e.getStats().entryCount,e.estimatedEntryCountExpires=t+1e4),e.estimatedEntryCount}function y6(e,t,r){return t*r/go(e)}var qr,Rs,Oi,Ra,h6,p6,E6,_6,xA,FA,UA,T6,Tu,R6,Lr,js,So,yu,g_=fe(()=>{qr=w(Ee()),Rs=w(kt()),Oi=require("ordered-binary"),Ra=require("lmdb");hm();$c();h6=.3,p6=.1,E6=.05,_6={"<":"lt","<=":"le",">":"gt",">=":"ge","!=":"ne","==":"eq","===":"equals","!==":"not_equal"},xA={lt:!0,le:!0,gt:!0,ge:!0,ne:!0,eq:!0};o(BA,"executeConditions");o(Au,"searchByIndex");o(Ci,"findAttribute");o(g6,"joinTo");o(S6,"joinFrom");FA={eq:"equals",greater_than:"gt",greaterThan:"gt",greater_than_equal:"ge",greaterThanEqual:"ge",less_than:"lt",lessThan:"lt",less_than_equal:"le",lessThanEqual:"le",not_equal:"ne",notEqual:"ne",equal:"equals",sw:"starts_with",startsWith:"starts_with",ew:"ends_with",endsWith:"ends_with",ct:"contains",">":"gt",">=":"ge","<":"lt","<=":"le","...":"between"};o(mm,"filterByType");o(E_,"estimateCondition");UA=class extends qr.Violation{static{o(this,"SyntaxViolation")}},T6=/[()[\]|!<>.]|(=\w*=)/,Tu=/([^?&|=<>!([{}\]),]*)([([{}\])|,&]|[=<>!]*)/g,R6=/([^&|=[\]{}]+)([[\]{}]|[&|=]*)/g;o(__,"parseQuery");o(Gt,"recordError");o(fm,"parseBlock");o(p_,"assignOperator");o(Ru,"decodeProperty");o(Xv,"typedDecoding");o(Zv,"wildcardDecoding");o(eU,"toSortObject");o(tU,"toSortEntry");yu=class{static{o(this,"Query")}constructor(){this.conditions=[]}[Symbol.iterator](){return this.conditions[Symbol.iterator]()}get(t){for(let r=0;r<this.conditions.length;r++){let n=this.conditions[r];if(n.attribute===t)return n.value}}getAll(){let t=[];for(let r=0,n=this.conditions.length;r<n;r++){let s=this.conditions[r];s.attribute&&t.push(s.value)}return t}};o(bu,"flattenKey");o(go,"estimatedEntryCount");o(y6,"intersectionEstimate")});var rU,Qs,S_=fe(()=>{rU=w(Ws());Aa();Qs=class extends URLSearchParams{static{o(this,"RequestTarget")}#e;pathname;search;id;isCollection;constructor(t){let r,n;if(t&&(r=t.indexOf("?"))>-1){n=t.slice(0,r);let s=t.slice(r+1);super(s),this.search=s}else super(),n=t;this.pathname=n??"",this.#e=t}toString(){return this.#e?this.#e:this.size>0?this.pathname+"?"+super.toString():this.pathname}get url(){return this.toString()}delete(t){super.delete(t),this.conditions&&(this.conditions=this.conditions.filter(r=>r.attribute!==t)),this.#e=void 0}set(t,r){this.delete(t),super.set(t,r),this.conditions?.push({attribute:t,value:r})}append(t,r){super.append(t,r),this.#e=void 0,this.conditions?.push({attribute:t,value:r})}};(0,rU._assignPackageExport)("Resource",Dr)});var aU={};Ce(aU,{MultiPartId:()=>T_,Resource:()=>Dr,contextStorage:()=>Nu,snakeCase:()=>b6,transformForSelect:()=>R_});function b6(e){return e[0].toLowerCase()+e.slice(1).replace(/[a-z][A-Z][a-z]/g,t=>t[0]+"_"+t.slice(1))}function nU(e,t){if(Yc=!1,e==="")return null;if(e=e.slice(1),t.splitSegments){if(e.indexOf("/")===-1)return e===""?(Yc=!0,null):t.coerceId(decodeURIComponent(e));let r=e.split("/"),n=new T_;for(let s=0;s<r.length;s++){let i=r[s];if(!i&&s===r.length-1){Yc=!0;break}n[s]=t.coerceId(decodeURIComponent(i))}return n}else{if(e==="")return Yc=!0,null;e[e.length-1]==="/"&&(Yc=!0)}return t.coerceId(decodeURIComponent(e))}function wn(e,t){n.reliesOnPrototype=!0;let r=t.hasContent;return n;function n(s,i,a){let c,l,u,d;if(r){if(a)d=i,a=a.getContext?.()||a;else if(i)typeof s=="object"&&s&&(!Array.isArray(s)||typeof s[0]=="object")?(d=s,c=d[this.primaryKey]??null,a=i.getContext?.()||i):i?.transaction instanceof co?a=i:d=i;else if(s&&typeof s=="object")d=s,s=void 0,c=d.getId?.()??d[this.primaryKey];else throw new Iu.ClientError(`Invalid argument for data, must be an object, but got ${s}`);c===null&&(u=!0)}else i?a=i.getContext?.()||i:s&&typeof s=="object"&&!Array.isArray(s)&&(a=s);if(c===void 0)if(typeof s=="object"&&s){if(l=s,c=s instanceof URLSearchParams?s.toString():s.url,s.conditions)c=s.id;else if(typeof c=="string")if(this.directURLMapping)c=c.slice(1),l.id=c;else{let _=c.indexOf("?");_>-1&&(l=this.parseQuery(c.slice(_+1),s),c=c.slice(0,_),c===""&&(u=!0));let g=this.parsePath(c,a,l);g?.id!==void 0?(g.query&&(l?l=Object.assign(g.query,l):l=g.query),u=g.isCollection,c=g.id):c=g,c&&(l.id=c)}else if(s[Symbol.iterator]){c=[],u=!0;for(let _ of s){if(typeof _=="object"&&_)break;c.push(_)}c.length===0?c=null:(c.length===1&&(c=c[0]),l.slice&&(l=l.slice(c.length,l.length),l.length===0&&(l=new Qs,l.id=c,u=!1)))}c===void 0&&(c=s.id??null,c==null&&(u=!0))}else c=s,l=new Qs,l.id=c,c==null&&(u=!0);l||(l=new Qs,l.id=c),u&&(l.isCollection=!0);let f;a||(a=Nu.getStore()??{}),l.ensureLoaded!=null||l.async||u?(f={...t},l.ensureLoaded!=null&&(f.ensureLoaded=l.ensureLoaded),l.async&&(f.async=l.async),u&&(f.isCollection=!0)):f=t;let m=this.loadAsInstance,h=p;if((m===!1?!this.explicitContext:this.explicitContext===!1)&&(h=o(_=>Nu.run(a,()=>p(_)),"runAction")),a?.transaction){let _=this.getResource(c,a,f);return _.then?_.then(h):h(_)}else return Mt(a,()=>{let _=this.getResource(c,a,f);return _.then?_.then(h):h(_)},f);function p(_){if(m!==!1&&a.authorize){a.authorize=!1;let g=t.type==="read"?_.allowRead(a.user,l,a):t.type==="update"?_.doesExist?.()===!1?_.allowCreate(a.user,d,a):_.allowUpdate(a.user,d,a):t.type==="create"?_.allowCreate(a.user,d,a):_.allowDelete(a.user,l,a);if(g?.then)return g.then(y=>{if(!y)throw new Iu.AccessViolation(a.user);return typeof d?.then=="function"?d.then(T=>e(_,l,a,T)):e(_,l,a,d)});if(!g)throw new Iu.AccessViolation(a.user)}return typeof d?.then=="function"?d.then(g=>e(_,l,a,g)):e(_,l,a,d)}o(p,"authorizeActionOnResource")}}function $n(e,t){let r=new Iu.ClientError(`The ${e.constructor.name} does not have a ${t} method implemented`,405);r.allow=[],r.method=t;for(let n of["get","put","post","delete","query","move","copy"])typeof e[n]=="function"&&r.allow.push(n);throw r}function HA(e,t,r){let n=e.getRecord?.();if(n){let s=e.getChanges?.();return i=>{let a,c;return e.hasOwnProperty(i)&&typeof(a=e[i])!="function"?a:s&&i in s?s[i]:(c=t?.[i])?c(e,r):n[i]}}else return t?s=>{let i=t[s];return i?i(e,r):e[s]}:s=>e[s]}function R_(e,t){let r=t.propertyResolvers,n=t.getContext?.(),s;if(typeof e=="string")return o(function a(c){return c.then?c.then(a):Array.isArray(c)?c.map(a):HA(c,r,n)(e)},"transform");if(typeof e=="object"){if(e.asArray)return o(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(c);let u=[],d=i(HA(l,r,n));for(let f of e)u.push(d(f));return u},"transform");let a=e.forceNulls;return o(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(m=>m&&typeof m=="object"?c(m):m);let u={},d=i(HA(l,r,n)),f;for(let m of e){let h=d(m);h===void 0&&a&&(h=null),h?.then?(f||(f=[]),f.push(h.then(p=>u[m.name||m]=p))):u[m.name||m]=h}return f?Promise.all(f).then(()=>u):u},"transform")}else throw new Error("Invalid select argument type "+typeof e);function i(a){return c=>{if(typeof c=="string")return a(c);if(typeof c=="object")if(c.name){s||(s={});let l=s[c.name];if(!l){let d=r[c.name]?.definition?.tableClass;l=s[c.name]=R_(c.select||c,d)}let u=a(c.name);return l(u)}else return a(c);else return c}}o(i,"handleProperty")}var sU,iU,Iu,oU,Nu,A6,Dr,Yc,T_,Aa=fe(()=>{sU=require("crypto");Kf();mu();iU=w(Ws()),Iu=w(Ee());Dc();g_();oU=require("async_hooks");S_();Nu=new oU.AsyncLocalStorage,A6={json:"application/json",cbor:"application/cbor",msgpack:"application/x-msgpack",csv:"text/csv"},Dr=class{static{o(this,"Resource")}#e;#t;#r;static transactions;static directURLMapping=!1;static loadAsInstance;constructor(t,r){this.#e=t;let n=r?.getContext?r.getContext()??null:void 0;this.#t=n!==void 0?n:r||null}static get=wn(function(t,r,n,s){let i=t.get?.(r);if(i?.then)return i.then(a);return a(i);function a(c){let l;if((l=r?.select)&&c!=null&&!c.selectApplied){let u=R_(l,t.constructor);return typeof c?.map=="function"?c.map(u):u(c)}return c}},{type:"read",letItLinger:!0,ensureLoaded:!0,async:!0});static put=wn(function(t,r,n,s){if(Array.isArray(s)&&t.#r&&t.constructor.loadAsInstance!==!1){let i=[];for(let a of s){let c=t.constructor,l=a[c.primaryKey],u=c.getResource(l,n,{async:!0});u.then?i.push(u.then(d=>d.put(a,n))):i.push(u.put(a,n))}return Promise.all(i)}return t.put?t.constructor.loadAsInstance===!1?t.put(r,s):t.put(s,r):$n(t,"put")},{hasContent:!0,type:"update"});static patch=wn(function(t,r,n,s){return t.patch?t.constructor.loadAsInstance===!1?t.patch(r,s):t.patch(s,r):$n(t,"patch")},{hasContent:!0,type:"update"});static delete=wn(function(t,r,n,s){return t.delete?t.delete(r):$n(t,"delete")},{hasContent:!1,type:"delete"});static getNewId(){return(0,sU.randomUUID)()}static create(t,r,n){n?n.getContext&&(n=n.getContext()):n=Nu.getStore()??{};let s;return this.loadAsInstance===!1?s=t:t==null?s=r?.[this.primaryKey]??this.getNewId():Array.isArray(t)&&typeof t[0]!="object"?s=r?.[this.primaryKey]??[...t,this.getNewId()]:typeof t!="object"?s=r?.[this.primaryKey]??[t,this.getNewId()]:(s=t?.[this.primaryKey]??this.getNewId(),n=r||{},r=t),Mt(n,async()=>{let i=new this(s,n),a=await i.create?i.create(s,r):$n(i,"create");return n.newLocation=s??a?.[this.primaryKey],n.createdResource=!0,this.loadAsInstance===!1?a:i})}static invalidate=wn(function(t,r,n,s){return t.invalidate?t.invalidate(r):$n(t,"delete")},{hasContent:!1,type:"update"});static post=wn(function(t,r,n,s){return t.#e!=null&&t.update?.(),t.constructor.loadAsInstance===!1?t.post(r,s):t.post(s,r)},{hasContent:!0,type:"create"});static update=wn(function(t,r,n,s){return t.update(r,s)},{hasContent:!0,type:"create"});static connect=wn(function(t,r,n,s){return t.connect?t.constructor.loadAsInstance===!1?t.connect(r,s):t.connect(s,r):$n(t,"connect")},{hasContent:!0,type:"read"});static subscribe=wn(function(t,r,n,s){return t.subscribe?t.subscribe(r):$n(t,"subscribe")},{type:"read"});static publish=wn(function(t,r,n,s){return t.#e!=null&&t.update?.(),t.publish?t.constructor.loadAsInstance===!1?t.publish(r,s):t.publish(s,r):$n(t,"publish")},{hasContent:!0,type:"create"});static search=wn(function(t,r,n){let s=t.search?t.search(r):$n(t,"search"),i=n.select;if(i&&n.hasOwnProperty("select")&&s!=null&&!s.selectApplied){let a=R_(i,t.constructor);return s.map(a)}return s},{type:"read"});static query=wn(function(t,r,n,s){return t.search?t.constructor.loadAsInstance===!1?t.search(r,s):t.search(s,r):$n(t,"search")},{hasContent:!0,type:"read"});static copy=wn(function(t,r,n,s){return t.copy?t.constructor.loadAsInstance===!1?t.copy(r,s):t.copy(s,r):$n(t,"copy")},{hasContent:!0,type:"create"});static move=wn(function(t,r,n,s){return t.move?t.constructor.loadAsInstance===!1?t.move(r,s):t.move(s,r):$n(t,"move")},{hasContent:!0,type:"delete"});async post(t){if(this.#r)return(await this.constructor.create(this.#e,t,this.#t)).#e;$n(this,"post")}static isCollection(t){return t&&t.#r}get isCollection(){return this.#r}static coerceId(t){return t}static parseQuery(t,r){return __(t,r)}static parsePath(t,r,n){let s=t.indexOf(".");if(s>-1){let a=t.slice(s+1),c=r?.headers&&A6[a];if(c)r.requestedContentType=c,t=t.slice(0,s);else if(this.attributes?.find(l=>l.name===a))if(t=t.slice(0,s),n)n.property=a;else return{query:{property:a},id:nU(t,this),isCollection:Yc}}let i=nU(t,this);return Yc?{id:i,isCollection:!0}:i}static getResource(t,r,n){let s,i=r.getContext?.(),a;typeof r.isCollection=="boolean"&&r.hasOwnProperty("isCollection")?a=r.isCollection:a=n?.isCollection;let c=a&&this.Collection||this;if(i||(i=i===void 0?r:{}),i.transaction){let l;if(i.resourceCache?l=i.resourceCache:l=i.resourceCache=[],l.asMap){let u=l.asMap.get(t);if(s=u?.find(d=>d.constructor===c),s)return s;u||l.asMap.set(t,u=[]),u.push(s=new c(t,i))}else{if(s=l.find(u=>u.#e===t&&u.constructor===c),s)return s;if(l.push(s=new c(t,i)),l.length>10){let u=new Map;for(let d of l){let f=d.#e,m=u.get(f);m?m.push(d):u.set(f,[d])}i.resourceCache.length=0,i.resourceCache.asMap=u}}}else s=new c(t,i);return a&&(s.#r=!0),s}subscribe(t){return new qn}connect(t,r){return r?.subscribe!==!1?this.subscribe?.(r):new qn}allowRead(t,r){return t?.role.permission.super_user}allowUpdate(t,r,n){return t?.role.permission.super_user}allowCreate(t,r,n){return t?.role.permission.super_user}allowDelete(t,r){return t?.role.permission.super_user}getId(){return this.#e}getContext(){return this.#t}};(0,iU._assignPackageExport)("Resource",Dr);o(b6,"snakeCase");o(nU,"pathToId");T_=class extends Array{static{o(this,"MultiPartId")}toString(){return this.join("/")}};o(wn,"transactional");o($n,"missingMethod");o(HA,"selectFromObject");o(R_,"transformForSelect")});var Wc,kA=fe(()=>{Wc=class{static{o(this,"ErrorResource")}error;constructor(t){this.error=t}isError=!0;allowRead(){throw this.error}allowUpdate(){throw this.error}allowCreate(){throw this.error}allowDelete(){throw this.error}getId(){throw this.error}getContext(){throw this.error}get(){throw this.error}post(){throw this.error}put(){throw this.error}delete(){throw this.error}connect(){throw this.error}getResource(){return this}publish(){throw this.error}subscribe(){throw this.error}}});var uU={};Ce(uU,{Resources:()=>y_,keyArrayToString:()=>wu,resetResources:()=>I6,resources:()=>ys});function I6(){return ys=new y_,ve.resources=ys,ys}function wu(e){return Array.isArray(e)?e[e.length-1]===null?e.slice(0,-1).join("/")+"/":e.join("/"):e}var cU,lU,y_,ys,Ou=fe(()=>{Dc();kA();cU=w(z()),lU=w(Ee());Pr();y_=class extends Map{static{o(this,"Resources")}isWorker=!0;loginPath;set(t,r,n,s){if(!r)throw new Error("Must provide a resource");t.startsWith("/")&&(t=t.replace(/^\/+/,""));let i={Resource:r,path:t,exportTypes:n,hasSubPaths:!1,relativeURL:""},a=super.get(t);if(a&&(a.Resource.databaseName!==r.databaseName||a.Resource.tableName!==r.tableName)&&!s){let c=new lU.ServerError(`Conflicting paths for ${t}`);cU.default.error(c),i.Resource=new Wc(c)}super.set(t,i);for(let[c,l]of this){let u=2;for(;(u=c.indexOf("/",u))>-1;){let d=this.get(c.slice(0,u));d&&(d.hasSubPaths=!0),u+=2}}}getMatch(t,r){let n=2,s=0,i,a=t.length;for(;n<a;){s=n,n=t.indexOf("/",n),n===-1&&(n=a);let u=n===a?t:t.slice(0,n),d=this.get(u),f=-1;if(!d&&n===a&&(f=u.indexOf("?",s),f!==-1)){let m=u.slice(0,f);d=this.get(m)}if(d&&(!r||d.exportTypes?.[r]!==!1)){if(d.relativeURL=t.slice(f!==-1?f:n),!d.hasSubPaths)return d;i=d}n+=2}if(i)return i;let c=t.indexOf("?"),l=c>-1?t.slice(0,c):t;return i=this.get(l),!i&&l.indexOf(".")>-1&&(i=this.get(l.split(".")[0])),i&&(!r||i.exportTypes?.[r]!==!1)?i.relativeURL=c>-1?t.slice(c):"":i||(i=this.get(""),i&&(!r||i.exportTypes?.[r]!==!1)&&(t.charAt(0)!=="/"&&(t="/"+t),i.relativeURL=t)),i}getResource(t,r){let n=this.getMatch(t);if(n)return t=n.relativeURL,n.Resource.getResource(this.pathToId(t,n.Resource),r)}call(t,r,n){return Mt(r,async()=>{let s=this.getMatch(t);if(s)return t=s.relativeURL,n(s.Resource,s.path,t)})}setRepresentation(t,r,n){}};o(I6,"resetResources");o(wu,"keyArrayToString")});function $A(e,t,r,n,s){let i=e.primaryStore.env.path,a=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=fU,N6(e.primaryStore,e.auditStore)):(c=dU,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{mU(dU[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[a];u||(u=l[a]=new Map,u.envs=l,u.tableId=a,u.store=e.primaryStore),t=wu(t);let d=new qA(r);d.startTime=n;let f=u.get(t);return f?f.push(d):(u.set(t,f=[d]),f.tables=u,f.key=t),d.subscriptions=f,d}function mU(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),hU(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=vt(s),a=e[i.tableId];if(!a)continue;let c=i.recordId,l=wu(c),u=0;do{let d=a.get(l);if(d){for(let m of d)if(!(u>0&&!(m.includeDescendants&&!(m.onlyChildren&&u>1)))){if(m.startTime>=n){(0,GA.info)("omitting",c,m.startTime,n);continue}try{let h;m.supportsTransactions&&m.txnInProgress!==i.version&&(h=!0,m.txnInProgress||(r?r.push(m):r=[m]),m.txnInProgress=i.version),m.listener(c,i,n,h)}catch(h){console.error(h),(0,GA.info)(h)}}}if(l==null)break;let f=l.lastIndexOf?.("/",l.length-2);f!==l.length-1&&u++,f>-1?l=l.slice(0,f+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 N6(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:a,txnId:c})=>{let l=fU[s];if(!l)return;let u=o(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),l.txnTime=r.threadLocalWrites[0]||Date.now();try{mU(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function hU(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function pU(e){return e.nextTransaction||($A({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),hU(e)),e.nextTransaction}var GA,dU,fU,qA,VA=fe(()=>{GA=w(z());mu();Ou();lo();dU=Object.create(null),fU=Object.create(null);o($A,"addSubscription");qA=class extends qn{static{o(this,"Subscription")}listener;subscriptions;startTime;includeDescendants;supportsTransactions;onlyChildren;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"}}};o(mU,"notifyFromTransactionData");o(N6,"listenToCommits");o(hU,"nextTransaction");o(pU,"whenNextTransaction")});var _U=M((bNe,EU)=>{"use strict";var KA=class{static{o(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};EU.exports=KA});var SU=M((NNe,gU)=>{"use strict";var YA=class{static{o(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};gU.exports=YA});var pm=M((ONe,RU)=>{"use strict";var TU=ce(),w6=(k(),v(K)),{RecordEncoder:O6}=($c(),v(Jv));TU.initSync();var C6=TU.get(w6.CONFIG_PARAMS.STORAGE_CACHING)!==!1,WA=class{static{o(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=C6&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:O6})}};RU.exports=WA});var Em=M((PNe,yU)=>{"use strict";var Vn=ce(),As=(k(),v(K));Vn.initSync();var A_=class{static{o(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=Vn.get(As.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||Vn.get(As.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||Vn.get(As.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",Vn.get(As.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=Vn.get(As.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),Vn.get(As.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=Vn.get(As.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),Vn.get(As.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=Vn.get(As.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),Vn.get(As.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=Vn.get(As.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=Vn.get(As.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};yU.exports=A_;A_.MAX_DBS=1e4});var Et=M((DNe,DU)=>{"use strict";var jA=require("lmdb"),Js=require("fs-extra"),Kn=require("path"),b_=yn(),IU=z(),On=en().LMDB_ERRORS_ENUM,I_=SU(),QA=pm(),NU=Em(),ba=kt(),AU=(k(),v(K)),{table:P6,resetDatabases:L6}=(Le(),v(ft)),bU=ce(),Xs=ba.INTERNAL_DBIS_NAME,wU=ba.DBI_DEFINITION_NAME,D6="data.mdb",M6="lock.mdb",_m=".mdb",v6="-lock",zA=class{static{o(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=bs(t,r),this.key_type=this.dbi[ba.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[ba.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new jA.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function N_(e,t){if(e===void 0)throw new Error(On.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(On.ENV_NAME_REQUIRED)}o(N_,"pathEnvNameValidation");async function JA(e,t,r=!0){try{await Js.access(e)}catch(n){throw n.code==="ENOENT"?new Error(On.INVALID_BASE_PATH):n}try{let n=Kn.join(e,t+_m);return await Js.access(n,Js.constants.R_OK|Js.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Js.access(Kn.join(e,t,D6),Js.constants.R_OK|Js.constants.F_OK),Kn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(On.INVALID_ENVIRONMENT)}else throw new Error(On.INVALID_ENVIRONMENT);throw n}}o(JA,"validateEnvironmentPath");function w_(e,t){if(b_.validateEnv(e),t===void 0)throw new Error(On.DBI_NAME_REQUIRED)}o(w_,"validateEnvDBIName");async function U6(e,t,r=!1,n=!1){N_(e,t);let s=Kn.basename(e);t=t.toString();let i=bU.get(AU.CONFIG_PARAMS.DATABASES);i||bU.setProperty(AU.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await JA(e,t,n),OU(e,t,r)}catch(a){if(a.message===On.INVALID_ENVIRONMENT){let c=Kn.join(e,t);await Js.mkdirp(n?c:e);let l=new NU(n?c:c+_m,!1),u=jA.open(l);u.dbis=Object.create(null);let d=new QA(!1);u.openDB(Xs,d),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let f=XA(e,t,r);return u[ba.ENVIRONMENT_NAME_KEY]=f,global.lmdb_map[f]=u,u}throw a}}o(U6,"createEnvironment");async function x6(e,t,r,n=!0){N_(e,t),t=t.toString();let s=Kn.join(e,t);return P6({table:t,database:Kn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}o(x6,"copyEnvironment");async function OU(e,t,r=!1){N_(e,t),t=t.toString();let n=XA(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 JA(e,t),i=Kn.join(e,t+_m),a=s!=i,c=new NU(s,a),l=jA.open(c);l.dbis=Object.create(null);let u=PU(l);for(let d=0;d<u.length;d++)bs(l,u[d]);return l[ba.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}o(OU,"openEnvironment");async function B6(e,t,r=!1){N_(e,t),t=t.toString();let n=Kn.join(e,t+_m),s=await JA(e,t);if(global.lmdb_map!==void 0){let i=XA(e,t,r);if(global.lmdb_map[i]){let a=global.lmdb_map[i];await CU(a),delete global.lmdb_map[i]}}await Js.remove(s),await Js.remove(s===n?s+v6:Kn.join(Kn.dirname(s),M6))}o(B6,"deleteEnvironment");async function CU(e){b_.validateEnv(e);let t=e[ba.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}o(CU,"closeEnvironment");function XA(e,t,r=!1){let s=`${Kn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}o(XA,"getCachedEnvironmentName");function F6(e){b_.validateEnv(e);let t=Object.create(null),r=bs(e,Xs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Xs)try{t[n]=Object.assign(new I_,s)}catch{IU.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}o(F6,"listDBIDefinitions");function PU(e){b_.validateEnv(e);let t=[],r=bs(e,Xs);for(let{key:n}of r.getRange({start:!1}))n!==Xs&&t.push(n);return t}o(PU,"listDBIs");function H6(e,t){let n=bs(e,Xs).getEntry(t),s=new I_;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{IU.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}o(H6,"getDBIDefinition");function LU(e,t,r,n=!r){if(w_(e,t),t=t.toString(),t===Xs)throw new Error(On.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return bs(e,t)}catch(s){if(s.message===On.DBI_DOES_NOT_EXIST){let i=new QA(r,n===!0),a=e.openDB(t,i),c=new I_(r===!0,n);return a[wU]=c,bs(e,Xs).putSync(t,c),e.dbis[t]=a,a}throw s}}o(LU,"createDBI");function bs(e,t){if(w_(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Xs?r=H6(e,t):r=new I_,r===void 0)throw new Error(On.DBI_DOES_NOT_EXIST);let n;try{let s=new QA(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(On.DBI_DOES_NOT_EXIST):s}return n[wU]=r,e.dbis[t]=n,n}o(bs,"openDBI");function k6(e,t){w_(e,t),t=t.toString();let r=bs(e,t),n=r.getStats();return r[ba.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}o(k6,"statDBI");async function G6(e,t){try{let r=Kn.join(e,t+_m);return(await Js.stat(r)).size}catch{throw new Error(On.INVALID_ENVIRONMENT)}}o(G6,"environmentDataSize");function q6(e,t){if(w_(e,t),t=t.toString(),t===Xs)throw new Error(On.CANNOT_DROP_INTERNAL_DBIS_NAME);bs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],bs(e,Xs).removeSync(t)}o(q6,"dropDBI");function $6(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{bs(e,i)}catch(a){if(a.message===On.DBI_DOES_NOT_EXIST)LU(e,i,i!==t,i===t),n=!0;else throw a}}n&&L6()}o($6,"initializeDBIs");DU.exports={openDBI:bs,openEnvironment:OU,createEnvironment:U6,listDBIs:PU,listDBIDefinitions:F6,createDBI:LU,dropDBI:q6,statDBI:k6,deleteEnvironment:B6,initializeDBIs:$6,TransactionCursor:zA,environmentDataSize:G6,copyEnvironment:x6,closeEnvironment:CU}});var UU=M((vNe,vU)=>{"use strict";var ZA=Et(),V6=z(),MU=en().LMDB_ERRORS_ENUM;vU.exports=K6;async function K6(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 a=t[i];if(a.startsWith(`${e.schema}.`)||a.startsWith(`txn.${e.schema}.`))try{await ZA.closeEnvironment(global.lmdb_map[a])}catch(c){if(c.message!==MU.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await ZA.closeEnvironment(global.lmdb_map[n]),await ZA.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==MU.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){V6.error(t)}}o(K6,"cleanLMDBMap")});var To=M((xNe,Y6)=>{Y6.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_hostname:{hash_attribute:"id",name:"hdb_analytics_hostname",schema:"system",attributes:[{attribute:"id"},{attribute:"hostname"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",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 Zs=M((BNe,FU)=>{var W6=To(),{promisify:z6}=require("util"),{getDatabases:BU}=(Le(),v(ft));FU.exports={setSchemaDataToGlobal:xU,getTableSchema:j6,getSystemSchema:Q6,setSchemaDataToGlobalAsync:z6(xU)};function xU(e){global.hdb_schema=BU(),e&&e()}o(xU,"setSchemaDataToGlobal");function j6(e,t,r){let n=BU()[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`)}o(j6,"getTableSchema");function Q6(){return W6}o(Q6,"getSystemSchema")});var JU=M((kNe,QU)=>{"use strict";var eb=require("recursive-iterator"),J6=require("alasql"),tb=require("clone"),HU=ie(),{handleHDBError:kU,hdbErrors:X6}=Ee(),{HDB_ERROR_MSGS:GU,HTTP_STATUS_CODES:qU}=X6,{getDatabases:Z6}=(Le(),v(ft)),e8=["DISTINCT_ARRAY"],$U=Symbol("validateTables"),rb=Symbol("validateTable"),HNe=Symbol("getAllColumns"),VU=Symbol("validateAllColumns"),O_=Symbol("findColumn"),KU=Symbol("validateOrderBy"),gm=Symbol("validateSegment"),nb=Symbol("validateColumn"),YU=Symbol("setColumnsForTable"),WU=Symbol("checkColumnsForAsterisk"),zU=Symbol("validateGroupBy"),jU=Symbol("hasColumns"),sb=class{static{o(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[$U](),this[WU](),this[VU]()}[$U](){if(this[jU]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[rb](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[rb](t.table)})}}[jU](){let t=!1,r=new eb(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[rb](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=Z6();if(!r[t.databaseid])throw kU(new Error,GU.SCHEMA_NOT_FOUND(t.databaseid),qU.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw kU(new Error,GU.TABLE_NOT_FOUND(t.databaseid,t.tableid),qU.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=tb(s);i.table=tb(t),this.attributes.push(i)})}[O_](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)}[WU](){let t=new eb(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[YU](r.tableid)}[YU](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new J6.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[VU](){this[gm](this.statement.columns,!1),this[gm](this.statement.joins,!1),this[gm](this.statement.where,!1),this[zU](this.statement.group,!1),this[gm](this.statement.order,!0)}[gm](t,r){if(!t)return;let n=new eb(t),s=[];for(let{node:i,path:a}of n)!HU.isEmpty(i)&&!HU.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[KU](i):s.push(this[nb](i)));return s}[zU](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&e8.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=tb(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[O_](n)[0];s&&r.push(s)}}}),this.statement.group.forEach(n=>{let s=null;if(!n.columnid)r.forEach((i,a)=>{if(i.toString()===n.toString()){s=i,r.splice(a,1);return}});else{let i=this[O_](n);if(!i||i.length===0)throw`unknown column '${group_column.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${group_column.toString()}' in group by`;r.forEach((a,c)=>{if(a.attribute===i[0].attribute&&a.table.tableid===i[0].table.tableid){s=a,r.splice(c,1);return}})}if(!s)throw`group by column '${group_column.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`}[KU](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[nb](t)}[nb](t){let r=this[O_](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]}};QU.exports=sb});var ZU=M((qNe,XU)=>{"use strict";var ib=class{static{o(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")}};XU.exports=ib});var tx=M((VNe,ex)=>{"use strict";var ob=class{static{o(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};ex.exports=ob});var nx=M((YNe,rx)=>{"use strict";var ab=class{static{o(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}};rx.exports=ab});var ix=M((zNe,sx)=>{"use strict";var cb=class{static{o(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};sx.exports=cb});var jc=M((ZNe,cx)=>{"use strict";var t8=Et(),r8=tx(),n8=nx(),s8=ix(),Pi=yn(),Sm=en().LMDB_ERRORS_ENUM,i8=kt(),Ro=(k(),v(K)),o8=ie(),a8=require("uuid"),QNe=require("lmdb"),{handleHDBError:c8,hdbErrors:l8}=Ee(),{OVERFLOW_MARKER:JNe,MAX_SEARCH_KEY_LENGTH:XNe}=i8,ox=ce();ox.initSync();var C_=ox.get(Ro.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),lb=Ro.TIME_STAMP_NAMES_ENUM.CREATED_TIME,zc=Ro.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function u8(e,t,r,n,s=Pi.getNextMonotonicTime()){mb(e,t,r,n),ub(e,t,r);let i=new r8,a=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];ax(u,!0,s);let d=d8(e,t,r,u),f=u[t];a.push(d),c.push(f)}return db(a,c,n,i,s)}o(u8,"insertRecords");function d8(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let a=r[i];if(a===t||n.hasOwnProperty(a)===!1)continue;let c=n[a];if(typeof c=="function"){let d=c([[{}]]);Array.isArray(d)&&(c=d[0][Ro.FUNC_VAL],n[a]=c)}let l=Pi.getIndexedValues(c),u=e.dbis[a];if(l){C_&&u.prefetch(l.map(d=>({key:d,value:s})),P_);for(let d=0,f=l.length;d<f;d++)u.put(l[d],s)}}C_&&e.dbis[t].prefetch([s],P_),e.dbis[t].put(s,n,n[zc])})}o(d8,"insertRecord");function f8(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}o(f8,"removeSkippedRecords");function ax(e,t,r){let n=r>0;(n||!Number.isInteger(e[zc]))&&(e[zc]=r||(r=Pi.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[lb]))&&(e[lb]=r||Pi.getNextMonotonicTime()):delete e[lb]}o(ax,"setTimestamps");function ub(e,t,r){r.indexOf(Ro.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(Ro.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(Ro.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(Ro.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),t8.initializeDBIs(e,t,r)}o(ub,"initializeTransaction");async function m8(e,t,r,n,s=Pi.getNextMonotonicTime()){mb(e,t,r,n),ub(e,t,r);let i=new n8,a=[],c=[],l=[];for(let u=0;u<n.length;u++){let d=n[u],f=d[t],m;try{m=fb(e,t,d,f,i,!0,s)}catch{i.skipped_hashes.push(f),a.push(u);continue}c.push(m),l.push(f)}return db(c,l,n,i,s,a)}o(m8,"updateRecords");async function h8(e,t,r,n,s=Pi.getNextMonotonicTime()){try{mb(e,t,r,n)}catch(l){throw c8(l,l.message,l8.HTTP_STATUS_CODES.BAD_REQUEST)}ub(e,t,r);let i=new s8,a=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],d;o8.isEmpty(u[t])?(d=a8.v4(),u[t]=d):d=u[t];let f=fb(e,t,u,d,i,!1,s);a.push(f),c.push(d)}return db(a,c,n,i,s)}o(h8,"upsertRecords");async function db(e,t,r,n,s,i=[]){let a=await Promise.all(e);for(let c=0,l=a.length;c<l;c++)a[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Pi.getNextMonotonicTime(),f8(r,i),n}o(db,"finalizeWrite");function fb(e,t,r,n,s,i=!1,a){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,d=u;if(!u){if(i)return!1;u={}}if(ax(r,!d,a),Number.isInteger(r[zc])&&u[zc]>r[zc])return!1;d&&s.original_records.push(u);let f,m=o(()=>{for(let p in r){if(!r.hasOwnProperty(p)||p===t)continue;let _=r[p],g=e.dbis[p];if(g===void 0)continue;let y=u[p];if(typeof _=="function"){let R=_([[u]]);Array.isArray(R)&&(_=R[0][Ro.FUNC_VAL],r[p]=_)}if(_===y)continue;let T=Pi.getIndexedValues(y);if(T){C_&&g.prefetch(T.map(R=>({key:R,value:n})),P_);for(let R=0,I=T.length;R<I;R++)g.remove(T[R],n)}if(T=Pi.getIndexedValues(_),T){C_&&g.prefetch(T.map(R=>({key:R,value:n})),P_);for(let R=0,I=T.length;R<I;R++)g.put(T[R],n)}}let h={...u,...r};c.put(n,h,h[zc])},"doPut");return l?f=c.ifVersion(n,l.version,m):f=c.ifNoExists(n,m),f.then(h=>h?!0:fb(e,t,r,n,s,i,a))}o(fb,"updateUpsertRecord");function p8(e,t,r){if(Pi.validateEnv(e),t===void 0)throw new Error(Sm.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Sm.WRITE_ATTRIBUTES_REQUIRED):new Error(Sm.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}o(p8,"validateBasic");function mb(e,t,r,n){if(p8(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Sm.RECORDS_REQUIRED):new Error(Sm.RECORDS_MUST_BE_ARRAY)}o(mb,"validateWrite");function P_(){}o(P_,"noop");cx.exports={insertRecords:u8,updateRecords:m8,upsertRecords:h8}});var ct=M((twe,lx)=>{"use strict";var Cn=require("validate.js");Cn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||Cn.validators.type.checks[t](e)?null:` must be a '${t}' value`};Cn.validators.type.checks={Object:o(function(e){return Cn.isObject(e)&&!Cn.isArray(e)},"Object"),Array:Cn.isArray,Integer:Cn.isInteger,Number:Cn.isNumber,String:Cn.isString,Date:Cn.isDate,Boolean:o(function(e){return typeof e=="boolean"},"Boolean")};Cn.validators.hasValidFileExt=function(e,t){return Cn.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};lx.exports={validateObject:E8,validateObjectAsync:_8,validateBySchema:g8};function E8(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=Cn(e,t,{format:"flat"});return r?new Error(r):null}o(E8,"validateObject");async function _8(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await Cn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}o(_8,"validateObjectAsync");function g8(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}o(g8,"validateBySchema")});var dx=M((nwe,ux)=>{"use strict";var S8=require("uuid"),hb=class{static{o(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||S8.v4(),this.schema_table=`${this.schema}.${this.table}`}};ux.exports=hb});var L_=M((iwe,fx)=>{"use strict";var T8=dx(),pb=class extends T8{static{o(this,"LMDBCreateAttributeObject")}constructor(t,r,n,s,i=!0,a=!1){super(t,r,n,s),this.dup_sort=i,this.is_hash_attribute=a}};fx.exports=pb});var hx=M((awe,mx)=>{"use strict";mx.exports=y8;var R8="inserted";function y8(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===R8?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}o(y8,"returnObject")});var D_=M((uwe,Ex)=>{"use strict";var A8=(k(),v(K)),Eb=Et(),b8=jc(),{getSystemSchemaPath:I8,getSchemaPath:N8}=yt(),lwe=To(),{validateBySchema:w8}=ct(),Tm=require("joi"),O8=L_(),C8=hx(),{handleHDBError:P8,hdbErrors:L8,ClientError:D8}=Ee(),px=ie(),{HTTP_STATUS_CODES:M8}=L8,v8="inserted";Ex.exports=U8;async function U8(e){let t=w8(e,Tm.object({database:Tm.string(),schema:Tm.string(),table:Tm.string().required(),attribute:Tm.string().required()}));if(t)throw new D8(t.message);let r=!e.skip_table_check&&px.checkGlobalSchemaTable(e.schema,e.table);if(r)throw P8(new Error,r,M8.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=px.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 O8(e.schema,e.table,e.attribute,e.id);try{let i=await Eb.openEnvironment(N8(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${create_attribute_obj.attribute}' already exists in ${e.schema}.${e.table}`);Eb.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let a=await Eb.openEnvironment(I8(),A8.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await b8.insertRecords(a,HDB_TABLE_INFO.hash_attribute,hdbAttributeAttributes,[s]);return C8(v8,c,{records:[s]},l)}catch(i){throw i}}o(U8,"lmdbCreateAttribute")});var Di=M((fwe,gx)=>{"use strict";var _x=ie(),x8=(k(),v(K)),Cu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Li=require("joi"),Ia={schema_format:{pattern:Cu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},B8=Li.alternatives(Li.string().min(1).max(Ia.schema_length.maximum).pattern(Cu).messages({"string.pattern.base":"{:#label} "+Ia.schema_format.message}),Li.number(),Li.array()).required(),F8=Li.alternatives(Li.string().min(1).max(Ia.schema_length.maximum).pattern(Cu).messages({"string.pattern.base":"{:#label} "+Ia.schema_format.message}),Li.number()),H8=Li.alternatives(Li.string().min(1).max(Ia.schema_length.maximum).pattern(Cu).messages({"string.pattern.base":"{:#label} "+Ia.schema_format.message}),Li.number()).required();function k8(e,t){return t?typeof t!="string"?`'${property_name}' must be a string`:t.length?t.length>Ia.schema_length.maximum?`'${property_name}' maximum of 250 characters`:Cu.test(t)?"":`'${property_name}' has illegal characters`:`'${property_name}' must be at least one character`:`'${property_name}' is required`}o(k8,"checkValidTable");function G8(e,t){return _x.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}o(G8,"validateSchemaExists");function q8(e,t){let r=t.state.ancestors[0].schema;return _x.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}o(q8,"validateTableExists");function $8(e,t){return e.toLowerCase()===x8.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${hdb_terms.SYSTEM_SCHEMA_NAME}' name is reserved`):e}o($8,"validateSchemaName");gx.exports={commonValidators:Ia,schemaRegex:Cu,hdbSchemaTable:B8,validateSchemaExists:G8,validateTableExists:q8,validateSchemaName:$8,checkValidTable:k8,hdbDatabase:F8,hdbTable:H8}});var gb=M((hwe,Tx)=>{var{hdbTable:V8,hdbDatabase:Sx}=Di(),K8=ct(),_b=require("joi"),Y8={undefined:"undefined",null:"null"},W8=o((e,t)=>{let r=Object.keys(e),n=r.length,s;for(let i=0;i<n;i++){let a=r[i];(!a||a.length===0||Y8[a]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${a}'`:s+=`. Invalid attribute name: '${a}'`)}return s?t.message(s):e},"customRecordsVal"),z8=_b.object({database:Sx,schema:Sx,table:V8,records:_b.array().items(_b.object().custom(W8)).required()});Tx.exports=function(e){return K8.validateBySchema(e,z8)}});var Rm=M((_we,yx)=>{"use strict";var yo=ie(),Rx=z(),Ewe=gb(),{getDatabases:j8}=(Le(),v(ft)),{ClientError:Qc}=Ee();yx.exports=Q8;function Q8(e){if(yo.isEmpty(e))throw new Qc("invalid update parameters defined.");if(yo.isEmptyOrZeroLength(e.schema))throw new Qc("invalid schema specified.");if(yo.isEmptyOrZeroLength(e.table))throw new Qc("invalid table specified.");if(!Array.isArray(e.records))throw new Qc("records must be an array");let t=j8()[e.schema]?.[e.table];if(yo.isEmpty(t))throw new Qc(`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(a=>{if(i&&yo.isEmptyOrZeroLength(a[r]))throw Rx.error("a valid hash attribute must be provided with update record:",a),new Qc("a valid hash attribute must be provided with update record, check log for more info");if(!yo.isEmptyOrZeroLength(a[r])&&(a[r]==="null"||a[r]==="undefined"))throw Rx.error(`a valid hash value must be provided with ${e.operation} record:`,a),new Qc(`Invalid hash value: '${a[r]}' is not a valid hash attribute value, check log for more info`);!yo.isEmpty(a[r])&&a[r]!==""&&n.has(yo.autoCast(a[r]))&&(a.skip=!0),n.add(yo.autoCast(a[r]));for(let c in a)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}o(Q8,"insertUpdateValidate")});var M_=M((Swe,bx)=>{"use strict";var Ax=ie(),J8=(k(),v(K)),X8=z(),Z8=D_(),e5=L_(),t5=Ao(),{SchemaEventMsg:r5}=ei(),n5="already exists in";bx.exports=s5;async function s5(e,t,r){if(Ax.isEmptyOrZeroLength(r))return r;let n=[];Ax.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 i5(e,t.schema,t.name,i)})),s}o(s5,"lmdbCheckForNewAttributes");async function i5(e,t,r,n){let s=new e5(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await o5(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(n5))X8.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}o(i5,"createNewAttribute");async function o5(e){let t;return t=await Z8(e),t5.signalSchemaChange(new r5(process.pid,J8.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}o(o5,"createAttribute")});var Pu=M((Rwe,Ix)=>{"use strict";var Sb=class{static{o(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}};Ix.exports=Sb});var wx=M((Awe,Nx)=>{"use strict";var a5=Pu(),c5=(k(),v(K)).OPERATIONS_ENUM,Tb=class extends a5{static{o(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(c5.INSERT,r,n,s,i),this.records=t}};Nx.exports=Tb});var Cx=M((Iwe,Ox)=>{"use strict";var l5=Pu(),u5=(k(),v(K)).OPERATIONS_ENUM,Rb=class extends l5{static{o(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,a=void 0){super(u5.UPDATE,n,s,i,a),this.records=t,this.original_records=r}};Ox.exports=Rb});var Lx=M((wwe,Px)=>{"use strict";var d5=Pu(),f5=(k(),v(K)).OPERATIONS_ENUM,yb=class extends d5{static{o(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,a=void 0){super(f5.UPSERT,n,s,i,a),this.records=t,this.original_records=r}};Px.exports=yb});var Mx=M((Cwe,Dx)=>{"use strict";var m5=Pu(),h5=(k(),v(K)).OPERATIONS_ENUM,Ab=class extends m5{static{o(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(h5.DELETE,n,s,t,i),this.original_records=r}};Dx.exports=Ab});var ym=M((Dwe,Bx)=>{"use strict";var Lwe=require("path"),vx=Et(),p5=wx(),E5=Cx(),_5=Lx(),g5=Mx(),Lu=kt(),Ux=ie(),{CONFIG_PARAMS:S5}=(k(),v(K)),xx=ce();xx.initSync();var v_=(k(),v(K)).OPERATIONS_ENUM,{getTransactionAuditStorePath:T5}=yt();Bx.exports=R5;async function R5(e,t){if(xx.get(S5.LOGGING_AUDITLOG)===!1)return;let r=T5(e.schema,e.table),n=await vx.openEnvironment(r,e.table,!0),s=y5(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){vx.initializeDBIs(n,Lu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Lu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[Lu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[Lu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),Ux.isEmpty(s.user_name)||n.dbis[Lu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let a=0;a<s.hash_values.length;a++)n.dbis[Lu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[a],i)})}}o(R5,"writeTransaction");function y5(e,t){let r=Ux.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===v_.INSERT)return new p5(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===v_.UPDATE)return new E5(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===v_.UPSERT)return new _5(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===v_.DELETE)return new g5(t.deleted,t.original_records,r,t.txn_time,e.__origin)}o(y5,"createTransactionObject")});var bb=M((Uwe,Fx)=>{"use strict";var A5=Rm(),vwe=qf(),Am=(k(),v(K)),b5=$f(),I5=jc().insertRecords,N5=Et(),w5=z(),O5=M_(),{getSchemaPath:C5}=yt(),P5=ym();Fx.exports=L5;async function L5(e){try{let{schemaTable:t,attributes:r}=A5(e);b5(e,r,t.hash_attribute),e.schema!==Am.SYSTEM_SCHEMA_NAME&&(r.includes(Am.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Am.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Am.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Am.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await O5(e.hdb_auth_header,t,r),s=C5(e.schema,e.table),i=await N5.openEnvironment(s,e.table),a=await I5(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await P5(e,a)}catch(c){w5.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:a.txn_time}}catch(t){throw t}}o(L5,"lmdbCreateRecords")});var Gx=M((Bwe,kx)=>{"use strict";var Hx=(k(),v(K)),D5=bb(),M5=qf(),v5=require("fs-extra"),{getSchemaPath:U5}=yt();kx.exports=x5;async function x5(e){let t=[{name:e.schema,createddate:Date.now()}],r=new M5(Hx.SYSTEM_SCHEMA_NAME,Hx.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await D5(r),await v5.mkdirp(U5(e.schema))}o(x5,"lmdbCreateSchema")});var $x=M((Hwe,qx)=>{"use strict";var Ib=class{static{o(this,"DeleteRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.deleted=t,this.skipped=r,this.txn_time=n,this.original_records=s}};qx.exports=Ib});var Wx=M((Vwe,Yx)=>{"use strict";var Vx=Et(),Nb=yn(),wb=en().LMDB_ERRORS_ENUM,B5=kt(),Kx=z(),Gwe=ie(),F5=require("lmdb"),H5=$x(),k5=(k(),v(K)),{OVERFLOW_MARKER:qwe,MAX_SEARCH_KEY_LENGTH:$we}=B5,G5=k5.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function q5(e,t,r,n){if(Nb.validateEnv(e),t===void 0)throw new Error(wb.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(wb.IDS_REQUIRED):new Error(wb.IDS_MUST_BE_ITERABLE);try{let s=Vx.listDBIs(e);Vx.initializeDBIs(e,t,s);let i=new H5,a,c=[],l=[];for(let m=0,h=r.length;m<h;m++)try{a=r[m];let p=e.dbis[t].get(a);if(!p||n&&p[G5]>n){i.skipped.push(a);continue}let _=e.dbis[t].ifVersion(a,F5.IF_EXISTS,()=>{e.dbis[t].remove(a);for(let g=0;g<s.length;g++){let y=s[g];if(!p.hasOwnProperty(y)||y===t)continue;let T=e.dbis[y],R=p[y];if(R!=null)try{let I=Nb.getIndexedValues(R);if(I)for(let P=0,Y=I.length;P<Y;P++)T.remove(I[P],a)}catch{Kx.warn(`cannot delete from attribute: ${y}, ${R}:${a}`)}}});c.push(_),l.push(a),i.original_records.push(p)}catch(p){Kx.warn(p),i.skipped.push(a)}let u=[],d=await Promise.all(c);for(let m=0,h=d.length;m<h;m++)d[m]===!0?i.deleted.push(l[m]):(i.skipped.push(l[m]),u.push(m));let f=0;for(let m=0;m<u.length;m++){let h=u[m];i.original_records.splice(h-f,1),f++}return i.txn_time=Nb.getNextMonotonicTime(),i}catch(s){throw s}}o(q5,"deleteRecords");Yx.exports={deleteRecords:q5}});var bm=M((Ywe,jx)=>{"use strict";var Du=ie(),$5=Wx(),V5=Et(),{getSchemaPath:K5}=yt(),Y5=ym(),W5=z();jx.exports=z5;async function z5(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 zx([],[]);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=K5(e.schema,e.table),i=await V5.openEnvironment(s,e.table),a=await $5.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await Y5(e,a)}catch(c){W5.error(`unable to write transaction due to ${c.message}`)}return zx(a.deleted,a.skipped,a.txn_time)}catch(s){throw s}}o(z5,"lmdbDeleteRecords");function zx(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}}o(zx,"createDeleteResponse")});var Cb=M((jwe,Qx)=>{"use strict";var j5=(k(),v(K)),zwe=yn();function Ob(e,t){let r=Object.create(null);if(t.length===1&&j5.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}o(Ob,"parseRow");function Q5(e,t,r,n){let s=Ob(r,e);n.push(s)}o(Q5,"searchAll");function J5(e,t,r,n){let s=Ob(r,e);n[t]=s}o(J5,"searchAllToMap");function X5(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}o(X5,"iterateDBI");function Jc(e,t,r,n,s){let i=Object.create(null);i[s]=e;let a;n===s?a=e:(a=t,n!==void 0&&(i[n]=a)),r[0].push(a),r[1].push(i)}o(Jc,"pushResults");function Z5(e,t,r,n,s,i){t.toString().endsWith(e)&&Jc(t,r,n,s,i)}o(Z5,"endsWith");function e9(e,t,r,n,s,i){t.toString().includes(e)&&Jc(t,r,n,s,i)}o(e9,"contains");function t9(e,t,r,n,s,i){t>e&&Jc(t,r,n,s,i)}o(t9,"greaterThanCompare");function r9(e,t,r,n,s,i){t>=e&&Jc(t,r,n,s,i)}o(r9,"greaterThanEqualCompare");function n9(e,t,r,n,s,i){t<e&&Jc(t,r,n,s,i)}o(n9,"lessThanCompare");function s9(e,t,r,n,s,i){t<=e&&Jc(t,r,n,s,i)}o(s9,"lessThanEqualCompare");Qx.exports={parseRow:Ob,searchAll:Q5,searchAllToMap:J5,iterateDBI:X5,endsWith:Z5,contains:e9,greaterThanCompare:t9,greaterThanEqualCompare:r9,lessThanCompare:n9,lessThanEqualCompare:s9,pushResults:Jc}});var Mu=M((eOe,n0)=>{"use strict";var Na=Et(),Jwe=z(),Yn=yn(),U_=kt(),Qt=en().LMDB_ERRORS_ENUM,Xwe=ie(),i9=(k(),v(K)),x_=Cb(),{parseRow:o9}=x_,Zwe=require("lmdb"),{OVERFLOW_MARKER:Jx,MAX_SEARCH_KEY_LENGTH:a9}=U_;function Xx(e,t,r,n=!1,s=void 0,i=void 0){return Xc(e,t,r,(a,c)=>c.getRange({transaction:a,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}))}o(Xx,"iterateFullIndex");function Im(e,t,r,n,s,i=!1,a=void 0,c=void 0,l=!1,u=!1){return Xc(e,t,r,(d,f,m,h)=>{let T={transaction:d,start:i===!0?s:n,end:i===!0?n:s,reverse:i,limit:a,offset:c,inclusiveEnd:i===!0?!l:!u,exclusiveStart:i===!0?u:l};return h===r?(T.values=!1,f.getRange(T).map(R=>({value:R}))):f.getRange(T)})}o(Im,"iterateRangeBetween");function Xc(e,t,r,n){let s=e.database||e,i=Na.openDBI(s,r);i[U_.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&Na.openDBI(s,t);let a;e.database?a=e:(a=e.useReadTransaction(),a.database=e);let c=n(a,i,s,t);return c.transaction=a,e.database||(c.onDone=()=>{a.done()}),c}o(Xc,"setupTransaction");function Zx(e,t,r,n){let s;return function(i,a){if(typeof i=="string"&&i.endsWith(Jx)){if(!s)if(r)s=Na.openDBI(e,r);else{let l=Na.listDBIs(e);for(let u=0,d=l.length;u<d&&(s=Na.openDBI(e,l[u]),!s[U_.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(a,{transaction:t,lazy:!0})[n]}return i}}o(Zx,"getOverflowCheck");function c9(e,t,r,n=!1,s=void 0,i=void 0){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);return Xc(e,t,t,(a,c,l)=>(B_(r),r=Nm(l,r),c.getRange({transaction:a,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>o9(u.value,r))))}o(c9,"searchAll");function l9(e,t,r,n=!1,s=void 0,i=void 0){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);B_(r),r=Nm(e.database||e,r);let a=new Map;for(let{key:c,value:l}of Xx(e,t,t,n,s,i))a.set(c,x_.parseRow(l,r));return a}o(l9,"searchAllToMap");function u9(e,t,r=!1,n=void 0,s=void 0){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.ATTRIBUTE_REQUIRED);let i=Object.create(null),a=Xx(e,void 0,t,r,n,s),c=a.transaction,l=Zx(c.database,c,void 0,t);for(let{key:u,value:d}of a){let f=l(u,d);i[f]===void 0&&(i[f]=[]),i[f].push(d)}return i}o(u9,"iterateDBI");function d9(e,t){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);return Na.statDBI(e,t).entryCount}o(d9,"countAll");function f9(e,t,r,n,s=!1,i=void 0,a=void 0){return wa(e,r,n),Xc(e,t,r,(c,l,u,d)=>(n=Yn.convertKeyValueToWrite(n),d===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:a}).map(f=>({key:n,value:f}))))}o(f9,"equals");function m9(e,t,r){return wa(e,t,r),Na.openDBI(e,t).getValuesCount(r)}o(m9,"count");function h9(e,t,r,n,s=!1,i=void 0,a=void 0){return wa(e,r,n),Xc(e,null,r,(c,l)=>{n=Yn.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let d;if(s===!0){let f;for(let m of l.getKeys({transaction:c,start:n}))if(!m.startsWith(n)){f=m;break}return f!==void 0&&(Number.isInteger(a)?a++:i++),d=l.getRange({transaction:c,start:f,end:void 0,reverse:s,limit:i,offset:a}).map(m=>{let{key:h}=m;if(h!==f){if(h.toString().startsWith(n))return m;if(u===!0)return d.DONE}}),d.filter(m=>m)}else return d=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:a}).map(f=>{if(f.key.toString().startsWith(n))return f;if(u===!0)return d.DONE}),u?d:d.filter(f=>f)})}o(h9,"startsWith");function p9(e,t,r,n,s=!1,i=void 0,a=void 0){return e0(e,t,r,n,s,i,a,!0)}o(p9,"endsWith");function e0(e,t,r,n,s=!1,i=void 0,a=void 0,c=!1){return wa(e,r,n),Xc(e,null,r,(l,u,d,f)=>{let m=Zx(d,l,f,r);return a=Number.isInteger(a)?a:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(h=>{let p=h.toString();return p.endsWith(Jx)?u.getValues(h,{transaction:l}).map(_=>{let g=m(h,_);if(c?g.endsWith(n):g.includes(n))return{key:g,value:_}}).filter(_=>_):(c?p.endsWith(n):p.includes(n))?u[U_.DBI_DEFINITION_NAME].is_hash_attribute?{key:h,value:h}:u.getValues(h,{transaction:l}).map(_=>({key:h,value:_})):[]}).slice(a,i===void 0?void 0:i+(a||0))})}o(e0,"contains");function E9(e,t,r,n,s=!1,i=void 0,a=void 0){wa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Im(e,t,r,n,l,s,i,a,!0,!1)}o(E9,"greaterThan");function _9(e,t,r,n,s=!1,i=void 0,a=void 0){wa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),Im(e,t,r,n,l,s,i,a,!1,!1)}o(_9,"greaterThanEqual");function g9(e,t,r,n,s=!1,i=void 0,a=void 0){wa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Im(e,t,r,l,n,s,i,a,!1,!0)}o(g9,"lessThan");function S9(e,t,r,n,s=!1,i=void 0,a=void 0){wa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),Im(e,t,r,l,n,s,i,a,!1,!1)}o(S9,"lessThanEqual");function T9(e,t,r,n,s,i=!1,a=void 0,c=void 0){if(Yn.validateEnv(e),r===void 0)throw new Error(Qt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(Qt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(Qt.END_VALUE_REQUIRED);if(n=Yn.convertKeyValueToWrite(n),s=Yn.convertKeyValueToWrite(s),n>s)throw new Error(Qt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return Im(e,t,r,n,s,i,a,c)}o(T9,"between");function R9(e,t,r,n){Yn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);if(B_(r),r=Nm(s,r),n===void 0)throw new Error(Qt.ID_REQUIRED);let a=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(a=x_.parseRow(c,r)),a}o(R9,"searchByHash");function y9(e,t,r){Yn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Qt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}o(y9,"checkHashExists");function A9(e,t,r,n,s=[]){return r0(e,t,r,n,s),t0(e,t,r,n,s).map(i=>i[1])}o(A9,"batchSearchByHash");function b9(e,t,r,n,s=[]){r0(e,t,r,n,s);let i=new Map;for(let[a,c]of t0(e,t,r,n,s))i.set(a,c);return i}o(b9,"batchSearchByHashToMap");function t0(e,t,r,n,s=[]){return Xc(e,t,t,(i,a,c)=>{r=Nm(c,r);let l=r.length<3;return n.map(u=>{let d=c.dbis[t].get(u,{transaction:i,lazy:l});if(d)return[u,x_.parseRow(d,r)];s.push(u)}).filter(u=>u)})}o(t0,"batchHashSearch");function r0(e,t,r,n,s){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.HASH_ATTRIBUTE_REQUIRED);if(B_(r),n==null)throw new Error(Qt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(Qt.IDS_MUST_BE_ITERABLE)}o(r0,"initializeBatchSearchByHash");function B_(e){if(!Array.isArray(e))throw e===void 0?new Error(Qt.FETCH_ATTRIBUTES_REQUIRED):new Error(Qt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}o(B_,"validateFetchAttributes");function wa(e,t,r){if(Yn.validateEnv(e),t===void 0)throw new Error(Qt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Qt.SEARCH_VALUE_REQUIRED);if(r?.length>a9)throw new Error(Qt.SEARCH_VALUE_TOO_LARGE)}o(wa,"validateComparisonFunctions");function Nm(e,t){return t.length===1&&i9.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=Na.listDBIs(e)),t}o(Nm,"setGetWholeRowAttributes");n0.exports={searchAll:c9,searchAllToMap:l9,count:m9,countAll:d9,equals:f9,startsWith:h9,endsWith:p9,contains:e0,searchByHash:R9,setGetWholeRowAttributes:Nm,batchSearchByHash:A9,batchSearchByHashToMap:b9,checkHashExists:y9,iterateDBI:u9,greaterThan:E9,greaterThanEqual:_9,lessThan:g9,lessThanEqual:S9,between:T9}});var vu=M((rOe,c0)=>{var s0=require("lodash"),i0=ct(),$e=require("joi"),I9=ie(),{hdbSchemaTable:wm,checkValidTable:o0,hdbTable:a0,hdbDatabase:F_}=Di(),{handleHDBError:N9,hdbErrors:w9}=Ee(),{getDatabases:O9}=(Le(),v(ft)),{HTTP_STATUS_CODES:C9}=w9,P9=$e.object({database:F_,schema:F_,table:a0,search_attribute:wm,search_value:$e.any().required(),get_attributes:$e.array().min(1).items($e.alternatives(wm,$e.object())).optional(),desc:$e.bool(),limit:$e.number().integer().min(1),offset:$e.number().integer().min(0)}),L9=$e.object({database:F_,schema:F_,table:a0,operator:$e.string().valid("and","or").default("and").lowercase(),offset:$e.number().integer().min(0),limit:$e.number().integer().min(1),get_attributes:$e.array().min(1).items($e.alternatives(wm,$e.object())).optional(),sort:$e.object({attribute:$e.alternatives(wm,$e.array().min(1)),descending:$e.bool().optional()}).optional(),conditions:$e.array().min(1).items($e.alternatives($e.object({operator:$e.string().valid("and","or").default("and").lowercase(),conditions:$e.array()}),$e.object({search_attribute:$e.alternatives(wm,$e.array().min(1)),search_type:$e.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:$e.when("search_type",{switch:[{is:"equals",then:$e.any()},{is:"between",then:$e.array().items($e.alternatives([$e.string(),$e.number()])).length(2)}],otherwise:$e.alternatives($e.string(),$e.number())}).required()}))).required()});c0.exports=function(e,t){let r=null;switch(t){case"value":r=i0.validateBySchema(e,P9);break;case"hashes":let i=function(a){s?s+=". "+a:s=a};var n=i;o(i,"addError");let s;i(o0("database",e.schema)),i(o0("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(a=>typeof a=="string"||typeof a=="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(a=>typeof a=="string"||typeof a=="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=i0.validateBySchema(e,L9);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=I9.checkGlobalSchemaTable(e.schema,e.table);if(s)return N9(new Error,s,C9.NOT_FOUND);let a=O9()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.search_attribute);let l=o(d=>{for(let f=0,m=d.conditions.length;f<m;f++){let h=d.conditions[f];h.conditions?l(h):c.push(h.search_attribute)}},"addConditions");t==="conditions"&&l(e);let u=s0.filter(c,d=>d!=="*"&&!d.startsWith?.("$")&&d.attribute!=="*"&&!Array.isArray(d)&&!d.name&&!s0.some(a,f=>f===d||f.attribute===d||f.attribute===d.attribute));if(u&&u.length>0){let d=u.join(", ");return d=d.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${d}'`)}}return r}});var Pb=M((sOe,l0)=>{"use strict";var D9=Et(),M9=vu(),{getSchemaPath:v9}=yt();l0.exports=U9;function U9(e){let t=M9(e,"hashes");if(t)throw t;let r=v9(e.schema,e.table);return D9.openEnvironment(r,e.table)}o(U9,"initialize")});var Lb=M((oOe,u0)=>{"use strict";var x9=Mu(),B9=Pb();u0.exports=F9;async function F9(e){let t=await B9(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return x9.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}o(F9,"lmdbGetDataByHash")});var Uu=M((cOe,d0)=>{"use strict";var Db=class{static{o(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};d0.exports=Db});var m0=M((dOe,f0)=>{"use strict";var uOe=Uu(),H9=Mu(),k9=Pb();f0.exports=G9;async function G9(e){let t=await k9(e),r=global.hdb_schema[e.schema][e.table];return H9.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}o(G9,"lmdbSearchByHash")});var ti=M((mOe,h0)=>{"use strict";var Mb=class{static{o(this,"SearchObject")}constructor(t,r,n,s,i,a,c,l=!1,u=void 0,d=void 0){this.schema=t,this.table=r,this.search_attribute=n,this.search_value=s,this.hash_attribute=i,this.get_attributes=a,this.end_value=c,this.reverse=l,this.limit=u,this.offset=d}};h0.exports=Mb});var H_=M((pOe,T0)=>{"use strict";var rn=Mu(),q9=Et(),$9=ie(),Ve=kt(),Zc=(k(),v(K)),V9=To(),p0=en().LMDB_ERRORS_ENUM,{getSchemaPath:K9}=yt(),bo=Zc.SEARCH_WILDCARDS;async function Y9(e,t,r){let n;e.schema===Zc.SYSTEM_SCHEMA_NAME?n=V9[e.table]:n=global.hdb_schema[e.schema][e.table];let s=S0(e,n.hash_attribute,r,t);return _0(e,s,n.hash_attribute,r)}o(Y9,"prepSearch");async function _0(e,t,r,n){let s=K9(e.schema,e.table),i=await q9.openEnvironment(s,e.table),a=g0(i,e,t,r),c=a.transaction||i;if([Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,Ve.SEARCH_TYPES.SEARCH_ALL,Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return a;if(W9(e,r)===!1){let d=e.search_attribute;if(d===r)return n?E0(a,()=>!0):a.map(m=>({[r]:m.key}));let f=o(m=>({[r]:m.value,[d]:m.key}),"toObject");return n?E0(a,f):a.map(f)}let u=e.search_attribute===r?a.map(d=>d.key):a.map(d=>d.value);return n===!0?rn.batchSearchByHashToMap(c,r,e.get_attributes,u):rn.batchSearchByHash(c,r,e.get_attributes,u)}o(_0,"executeSearch");function g0(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:a,limit:c,offset:l}=t;switch(a=typeof a=="boolean"?a:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case Ve.SEARCH_TYPES.EQUALS:s=rn.equals(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.CONTAINS:s=rn.contains(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.ENDS_WITH:case Ve.SEARCH_TYPES._ENDS_WITH:s=rn.endsWith(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.STARTS_WITH:case Ve.SEARCH_TYPES._STARTS_WITH:s=rn.startsWith(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return rn.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return rn.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case Ve.SEARCH_TYPES.SEARCH_ALL:return rn.searchAll(e,n,t.get_attributes,a,c,l);case Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return rn.searchAllToMap(e,n,t.get_attributes,a,c,l);case Ve.SEARCH_TYPES.BETWEEN:s=rn.between(e,i,t.search_attribute,t.search_value,t.end_value,a,c,l);break;case Ve.SEARCH_TYPES.GREATER_THAN:case Ve.SEARCH_TYPES._GREATER_THAN:s=rn.greaterThan(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.GREATER_THAN_EQUAL:case Ve.SEARCH_TYPES._GREATER_THAN_EQUAL:s=rn.greaterThanEqual(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.LESS_THAN:case Ve.SEARCH_TYPES._LESS_THAN:s=rn.lessThan(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.LESS_THAN_EQUAL:case Ve.SEARCH_TYPES._LESS_THAN_EQUAL:s=rn.lessThanEqual(e,i,t.search_attribute,t.search_value,a,c,l);break;default:return Object.create(null)}return s}o(g0,"searchByType");function E0(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}o(E0,"createMapFromIterable");function W9(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}o(W9,"checkToFetchMore");function S0(e,t,r,n){if($9.isEmpty(n)){let s=e.search_value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),a=s.charAt(s.length-1),c=!1;if(e.search_attribute===t&&(c=!0),bo.indexOf(s)>-1)return r===!0?Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP:Ve.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(bo[0])<0&&s.indexOf(bo[1])<0)return c===!0?r===!0?Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:Ve.SEARCH_TYPES.EQUALS;if(bo.indexOf(i)>=0&&bo.indexOf(a)>=0)return e.search_value=e.search_value.slice(1,-1),Ve.SEARCH_TYPES.CONTAINS;if(bo.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),Ve.SEARCH_TYPES.ENDS_WITH;if(bo.indexOf(a)>=0)return e.search_value=e.search_value.slice(0,-1),Ve.SEARCH_TYPES.STARTS_WITH;if(s.includes(bo[0])||s.includes(bo[1]))return Ve.SEARCH_TYPES.EQUALS;throw new Error(p0.UNKNOWN_SEARCH_TYPE)}else switch(n){case Zc.VALUE_SEARCH_COMPARATORS.BETWEEN:return Ve.SEARCH_TYPES.BETWEEN;case Zc.VALUE_SEARCH_COMPARATORS.GREATER:return Ve.SEARCH_TYPES.GREATER_THAN;case Zc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return Ve.SEARCH_TYPES.GREATER_THAN_EQUAL;case Zc.VALUE_SEARCH_COMPARATORS.LESS:return Ve.SEARCH_TYPES.LESS_THAN;case Zc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return Ve.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(p0.UNKNOWN_SEARCH_TYPE)}}o(S0,"createSearchTypeFromSearchObject");T0.exports={executeSearch:_0,createSearchTypeFromSearchObject:S0,prepSearch:Y9,searchByType:g0}});var y0=M((gOe,R0)=>{"use strict";var _Oe=ti(),z9=vu(),j9=ie(),Q9=(k(),v(K)),J9=H_();R0.exports=X9;function X9(e,t){if(!j9.isEmpty(t)&&Q9.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=z9(e,"value");if(n)throw n;return J9.prepSearch(e,t,!0)}o(X9,"lmdbGetDataByValue")});var Om=M((ROe,A0)=>{"use strict";var TOe=ti(),Z9=vu(),e7=ie(),t7=(k(),v(K)),r7=H_();A0.exports=n7;async function n7(e,t){if(!e7.isEmpty(t)&&t7.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Z9(e,"value");if(n)throw n;return r7.prepSearch(e,t,!1)}o(n7,"lmdbSearchByValue")});var I0=M((bOe,b0)=>{"use strict";var AOe=kt(),vb=class{static{o(this,"SearchByConditionsObject")}constructor(t,r,n,s,i=void 0,a=void 0,c="and"){this.schema=t,this.table=r,this.get_attributes=n,this.limit=i,this.offset=a,this.conditions=s,this.operator=c}},Ub=class{static{o(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},xb=class{static{o(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};b0.exports={SearchByConditionsObject:vb,SearchCondition:Ub,SortAttribute:xb}});var P0=M((OOe,C0)=>{"use strict";var NOe=I0().SearchByConditionsObject,s7=ti(),i7=vu(),Bb=Mu(),k_=kt(),{Resource:wOe}=(Aa(),v(aU)),O0=H_(),o7=Cb(),a7=require("lodash"),{getSchemaPath:c7}=yt(),N0=Et(),{handleHDBError:l7,hdbErrors:u7}=Ee(),{HTTP_STATUS_CODES:d7}=u7,f7=1e8;C0.exports=m7;async function m7(e){let t=i7(e,"conditions");if(t)throw l7(t,t.message,d7.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=c7(e.schema,e.table),n=await N0.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)N0.openDBI(n,u.search_attribute);let i=a7.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let d=u.search_type;d===k_.SEARCH_TYPES.EQUALS?u.estimated_count=Bb.count(n,u.search_attribute,u.search_value):d===k_.SEARCH_TYPES.CONTAINS||d===k_.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=f7}return u.estimated_count}),a=n.useReadTransaction();a.database=n;let c=await w0(a,e,i[0],s.hash_attribute),l;if(!e.operator||e.operator.toLowerCase()==="and"){let u=n.dbis[s.hash_attribute],d=i.slice(1).map(O0.filterByType),f=d.length,m=Bb.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(h=>u.get(h,{transaction:a,lazy:!0})),f>0&&(l=l.filter(h=>{for(let p=0;p<f;p++)if(!d[p](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=>o7.parseRow(h,m))}else{for(let f=1;f<i.length;f++){let m=i[f],h=await w0(a,e,m,s.hash_attribute);c=c.concat(h)}let u=new Set,d=e.offset||0;c=c.filter(f=>u.has(f)?!1:(u.add(f),!0)).slice(d,e.limit&&e.limit+d),l=Bb.batchSearchByHash(a,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{a.done()},l}o(m7,"lmdbSearchByConditions");async function w0(e,t,r,n){let s=new s7(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===k_.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,O0.searchByType(e,s,i,n).map(a=>a.value)}o(w0,"executeConditionSearch")});var Cm=M((POe,L0)=>{"use strict";var h7=(k(),v(K)).OPERATIONS_ENUM,Fb=class{static{o(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=h7.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};L0.exports=Fb});var Hb=M((DOe,H0)=>{"use strict";var U0=ti(),x0=Cm(),B0=Om(),F0=bm(),Pn=(k(),v(K)),D0=ie(),M0=Et(),{getTransactionAuditStorePath:p7,getSchemaPath:E7}=yt(),v0=z();H0.exports=_7;async function _7(e){try{if(D0.isEmpty(global.hdb_schema[e.schema])||D0.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await g7(e),await S7(e);let t=E7(e.schema,e.table);try{await M0.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")v0.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=p7(e.schema,e.table);await M0.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")v0.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}o(_7,"lmdbDropTable");async function g7(e){let t=new U0(Pn.SYSTEM_SCHEMA_NAME,Pn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await B0(t)),n=[];for(let i=0;i<r.length;i++){let a=r[i];n.push(a.id)}if(n.length===0)return;let s=new x0(Pn.SYSTEM_SCHEMA_NAME,Pn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await F0(s)}o(g7,"deleteAttributesFromSystem");async function S7(e){let t=new U0(Pn.SYSTEM_SCHEMA_NAME,Pn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Pn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await B0(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let a=r[i];a.name===e.table&&a.schema===e.schema&&(n=a)}if(!n)throw new Error(`${e.schema}.${e.table} was not found`);let s=new x0(Pn.SYSTEM_SCHEMA_NAME,Pn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await F0(s)}catch(i){throw i}}o(S7,"dropTableFromSystem")});var G0=M((vOe,k0)=>{"use strict";var T7=require("fs-extra"),R7=ti(),y7=Uu(),A7=Cm(),b7=Hb(),I7=bm(),N7=Lb(),w7=Om(),Io=(k(),v(K)),{getSchemaPath:O7}=yt(),{handleHDBError:C7,hdbErrors:P7}=Ee(),{HDB_ERROR_MSGS:L7,HTTP_STATUS_CODES:D7}=P7;k0.exports=M7;async function M7(e){let t;try{t=await v7(e.schema);let r=new R7(Io.SYSTEM_SCHEMA_NAME,Io.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Io.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[Io.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await w7(r));for(let a=0;a<n.length;a++){let c={schema:t,table:n[a].name};try{await b7(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new A7(Io.SYSTEM_SCHEMA_NAME,Io.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await I7(s);let i=O7(t);await T7.remove(i)}catch(r){throw r}}o(M7,"lmdbDropSchema");async function v7(e){let t=new y7(Io.SYSTEM_SCHEMA_NAME,Io.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[Io.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await N7(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw C7(new Error,L7.SCHEMA_NOT_FOUND(e),D7.NOT_FOUND,void 0,void 0,!0);return n}o(v7,"validateDropSchema")});var Pm=M((xOe,q0)=>{"use strict";var kb=class{static{o(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};q0.exports=kb});var qb=M((HOe,$0)=>{"use strict";var U7=require("fs-extra"),G_=Et(),{getTransactionAuditStorePath:x7}=yt(),Gb=kt(),FOe=Pm();$0.exports=B7;async function B7(e){let t;try{let r=x7(e.schema,e.table);await U7.mkdirp(r),t=await G_.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{G_.createDBI(t,Gb.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),G_.createDBI(t,Gb.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),G_.createDBI(t,Gb.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}o(B7,"createTransactionsAuditEnvironment")});var Y0=M((qOe,K0)=>{"use strict";var $b=(k(),v(K)),V0=Et(),F7=jc(),{getSystemSchemaPath:H7,getSchemaPath:k7}=yt(),GOe=To(),G7=D_(),Vb=L_(),q7=z(),$7=qb();K0.exports=V7;async function V7(e,t){let r=k7(t.schema,t.table),n=new Vb(t.schema,t.table,$b.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new Vb(t.schema,t.table,$b.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new Vb(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await V0.createEnvironment(r,t.table),e!==void 0){let a=await V0.openEnvironment(H7(),$b.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await F7.insertRecords(a,HDB_TABLE_INFO.hash_attribute,hdbTableAttributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await Kb(n),await Kb(s),await Kb(i)}await $7(t)}catch(a){throw a}}o(V7,"lmdbCreateTable");async function Kb(e){try{await G7(e)}catch(t){q7.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}o(Kb,"createAttribute")});var z0=M((VOe,W0)=>{"use strict";var K7=Rm(),Y7=$f(),W7=M_(),Lm=(k(),v(K)),z7=jc().updateRecords,j7=Et(),{getSchemaPath:Q7}=yt(),J7=ym(),X7=z();W0.exports=Z7;async function Z7(e){try{let{schemaTable:t,attributes:r}=K7(e);Y7(e,r,t.hash_attribute),e.schema!==Lm.SYSTEM_SCHEMA_NAME&&(r.includes(Lm.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Lm.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Lm.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Lm.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await W7(e.hdb_auth_header,t,r),s=Q7(e.schema,e.table),i=await j7.openEnvironment(s,e.table),a=await z7(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await J7(e,a)}catch(c){X7.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:a.txn_time}}catch(t){throw t}}o(Z7,"lmdbUpdateRecords")});var Q0=M((YOe,j0)=>{"use strict";var eee=(k(),v(K)).OPERATIONS_ENUM,Yb=class{static{o(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=eee.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};j0.exports=Yb});var X0=M((jOe,J0)=>{"use strict";var zOe=Q0(),tee=Rm(),ree=$f(),nee=M_(),Dm=(k(),v(K)),see=jc().upsertRecords,iee=Et(),{getSchemaPath:oee}=yt(),aee=ym(),cee=z(),{handleHDBError:lee,hdbErrors:uee}=Ee();J0.exports=dee;async function dee(e){let t;try{t=tee(e)}catch(l){throw lee(l,l.message,uee.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schemaTable:r,attributes:n}=t;ree(e,n,r.hash_attribute),e.schema!==Dm.SYSTEM_SCHEMA_NAME&&(n.includes(Dm.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(Dm.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(Dm.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(Dm.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await nee(e.hdb_auth_header,r,n),i=oee(e.schema,e.table),a=await iee.openEnvironment(i,e.table),c=await see(a,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await aee(e,c)}catch(l){cee.error(`unable to write transaction due to ${l.message}`)}return{written_hashes:c.written_hashes,schemaTable:r,new_attributes:s,txn_time:c.txn_time}}o(dee,"lmdbUpsertRecords")});var eB=M((JOe,Z0)=>{"use strict";var Wb=class{static{o(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};Z0.exports=Wb});var rB=M((ZOe,tB)=>{"use strict";var zb=class{static{o(this,"DeleteAuditLogsBeforeResults")}constructor(t=void 0,r=void 0,n=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=n}};tB.exports=zb});var iB=M((rCe,sB)=>{"use strict";var jb=Et(),{getTransactionAuditStorePath:fee}=yt(),tCe=eB(),Mm=kt(),mee=ie(),nB=rB(),hee=require("util").promisify,pee=hee(setTimeout),Eee=1e4,_ee=100;sB.exports=gee;async function gee(e){let t=fee(e.schema,e.table),r=await jb.openEnvironment(t,e.table,!0),n=jb.listDBIs(r);jb.initializeDBIs(r,Mm.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new nB;do s=await See(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 pee(_ee);while(s.transactions_deleted>0);return i}o(gee,"deleteAuditLogsBefore");async function See(e,t){let r=new nB;try{let n=e.dbis[Mm.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let{key:i,value:a}of n.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),s=n.remove(i);let c=a[Mm.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];mee.isEmpty(c)||(s=e.dbis[Mm.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<a.hash_values.length;l++)s=e.dbis[Mm.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(a.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>Eee)break}return await s,r}catch(n){throw n}}o(See,"deleteTransactions")});var aB=M((sCe,oB)=>{"use strict";var Qb=class{static{o(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};oB.exports=Qb});var lB=M((aCe,cB)=>{"use strict";var Tee=ti(),Ree=Cm(),oCe=aB(),Mi=(k(),v(K)),yee=ie(),Jb=Et(),Aee=To(),bee=Om(),Iee=bm(),{getSchemaPath:Nee}=yt();cB.exports=wee;async function wee(e,t=!0){let r;e.schema===Mi.SYSTEM_SCHEMA_NAME?r=Aee[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await Cee(e),s=Nee(e.schema,e.table),i=await Jb.openEnvironment(s,e.table);return t===!0&&await Oee(e,i,r.hash_attribute),Jb.dropDBI(i,e.attribute),n}o(wee,"lmdbDropAttribute");async function Oee(e,t,r){let n=Jb.openDBI(t,r),s,i=e.attribute;for(let{key:a,value:c,version:l}of n.getRange({start:!1,versions:!0})){let u={};for(let d in c)d!==i&&(u[d]=c[d]);s=t.dbis[r].put(a,u,l)}await s}o(Oee,"removeAttributeFromAllObjects");async function Cee(e){let t=new Tee(Mi.SYSTEM_SCHEMA_NAME,Mi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await bee(t)).filter(a=>a[Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(yee.isEmptyOrZeroLength(n))throw new Error(`Attribute '${drop_attribute_obj.attribute}' was not found in '${drop_attribute_obj.schema}.${drop_attribute_obj.table}'`);let s=n.map(a=>a[Mi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new Ree(Mi.SYSTEM_SCHEMA_NAME,Mi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return Iee(i)}o(Cee,"dropAttributeFromSystem")});var pB=M((uCe,hB)=>{"use strict";var Xb=Et(),xu=kt(),lCe=yn(),Zb=(k(),v(K)),uB=ie(),{getTransactionAuditStorePath:Pee}=yt(),Lee=Mu(),q_=Pu(),Dee=z();hB.exports=Mee;async function Mee(e){let t=Pee(e.schema,e.table),r=await Xb.openEnvironment(t,e.table,!0),n=Xb.listDBIs(r);Xb.initializeDBIs(r,xu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Zb.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return dB(r,e.search_values);case Zb.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,Uee(r,e.search_values,s);case Zb.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return vee(r,e.search_values);default:return dB(r)}}o(Mee,"readAuditLog");function dB(e,t=[0,Date.now()]){uB.isEmpty(t[0])&&(t[0]=0),uB.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[xu.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 q_,s))}o(dB,"searchTransactionsByTimestamp");function vee(e,t=[]){let r=new Map;for(let n=0;n<t.length;n++){let s=t[n],i=[];for(let a of e.dbis[xu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(a);r.set(s,mB(e,i))}return Object.fromEntries(r)}o(vee,"searchTransactionsByUsername");function Uee(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],d=Lee.equals(e,xu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,xu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let{value:f}of d){let m=Number(f);n.has(m)?n.get(m).push(u.toString()):n.set(m,[u.toString()])}}let s=Array.from(n.keys()),i=mB(e,s),a=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,d=n.get(u);fB(l,"records",r,d,a),fB(l,"original_records",r,d,a)}return Object.fromEntries(a)}o(Uee,"searchTransactionsByHashValues");function fB(e,t,r,n,s){let i=e.timestamp;if(e[t])for(let a=0;a<e[t].length;a++){let c=e[t][a],l=c[r].toString();if(n.indexOf(l)>=0)if(s.has(l)){let u=s.get(l),d=u[u.length-1];if(d.timestamp===i)d[t]=[c];else{let f=new q_(e.operation,e.user_name,i,void 0);f[t]=[c],u.push(f)}}else{let u=new q_(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}o(fB,"loopRecords");function mB(e,t){let r=[];try{let n=e.dbis[xu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let s=0;s<t.length;s++)try{let i=n.get(t[s]);if(i){let a=Object.assign(new q_,i);r.push(a)}}catch(i){Dee.warn(i)}return r}catch(n){throw n}}o(mB,"batchSearchTransactions")});var _B=M((hCe,EB)=>{"use strict";var{getSchemaPath:fCe}=yt(),mCe=Et(),{database:xee}=(Le(),v(ft));EB.exports={writeTransaction:Bee};async function Bee(e,t,r){return xee({database:e,table:t}).transaction(r)}o(Bee,"writeTransaction")});var RB=M((ECe,TB)=>{"use strict";var{getSchemaPath:gB}=yt(),SB=Et();TB.exports={flush:Fee,resetReadTxn:Hee};async function Fee(e,t){return(await SB.openEnvironment(gB(e,t),t.toString())).flushed}o(Fee,"flush");async function Hee(e,t){try{(await SB.openEnvironment(gB(e,t),t.toString())).resetReadTxn()}catch{}}o(Hee,"resetReadTxn")});var IB=M((gCe,bB)=>{"use strict";var{Readable:kee}=require("stream"),{getDatabases:Gee}=(Le(),v(ft)),{readSync:qee,openSync:$ee,createReadStream:yB}=require("fs"),{open:Vee}=require("lmdb"),AB=pm(),Kee=Em(),{AUDIT_STORE_OPTIONS:Yee}=(lo(),v(Yv)),{INTERNAL_DBIS_NAME:Wee,AUDIT_STORE_NAME:zee}=kt();bB.exports=Qee;var eI=32768,jee=100;async function Qee(e){let t=e.database||e.schema||"data",r=Gee()[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 d=u.dbisDB,f=Vee({noSync:!0,maxDbs:Kee.MAX_DBS}),m,h=f.openDB(Wee,new AB(!1)),p=d.useReadTransaction(),_=0,g=o(async function(T,R){R.encoding="binary",R.encoder=void 0;let I=f.openDB(T,R),P=d.openDB(T,R);for(let{key:Y,version:te,value:x}of P.getRange({start:null,transaction:p,versions:P.useVersions}))m=I.put(Y,x,te),_++%jee===0&&(await new Promise($=>setTimeout($,20)),p.openTimer&&(p.openTimer=0))},"copyDatabase");for(let{key:T,value:R}of d.getRange({transaction:p,start:!1}))if(s.some(I=>T.startsWith?.(I+"/"))){h.put(T,R);let[,I]=T.split("/"),P=!I,Y=new AB(!P,P);await g(T,Y)}e.include_audit&&await g(zee,{...Yee}),await m;let y=yB(f.path);return y.headers=l(),y.on("close",()=>{p.done(),f.close()}),y}let a=r[Object.keys(r)[0]].primaryStore,c=$ee(a.path);return a.transaction(()=>{let u=Buffer.alloc(eI);qee(c,u,0,eI),a.resetReadTxn();let d=a.useReadTransaction();d.renew();let f=yB(null,{fd:c,start:eI}),m=new kee.from(async function*(){yield u;for await(let h of f)d.openTimer&&(d.openTimer=0),yield h;d.done()}());return m.headers=l(),m});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}}o(Qee,"getBackup")});var OB=M((TCe,wB)=>{"use strict";var Jee=z(),{handleHDBError:Xee}=Ee(),Zee=ZU(),ete=D_(),tte=bb(),rte=Gx(),nte=bm(),ste=Lb(),ite=m0(),ote=y0(),ate=Om(),cte=P0(),lte=G0(),ute=Y0(),dte=z0(),fte=X0(),mte=iB(),hte=Hb(),pte=lB(),Ete=pB(),_te=_B(),NB=RB(),gte=IB(),tI=class extends Zee{static{o(this,"LMDBBridge")}async searchByConditions(t){return cte(t)}async getDataByHash(t){return await ste(t)}async searchByHash(t){return await ite(t)}async getDataByValue(t,r){return await ote(t,r)}async searchByValue(t){return await ate(t)}async createSchema(t){return await rte(t)}async dropSchema(t){return await lte(t)}async createTable(t,r){return await ute(t,r)}async dropTable(t){return await hte(t)}async createAttribute(t){return await ete(t)}async createRecords(t){return await tte(t)}async updateRecords(t){return await dte(t)}async upsertRecords(t){try{return await fte(t)}catch(r){throw Xee(r,null,null,Jee.ERR,r)}}async deleteRecords(t){return await nte(t)}async dropAttribute(t){return await pte(t)}async deleteAuditLogsBefore(t){return await mte(t)}async readAuditLog(t){return await Ete(t)}writeTransaction(t,r,n){return _te.writeTransaction(t,r,n)}flush(t,r){return NB.flush(t,r)}resetReadTxn(t,r){return NB.resetReadTxn(t,r)}getBackup(t){return gte(t)}};wB.exports=tI});function Ln(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function Um(e,t,r=!1){let n=e.prototype,s={},i=t.attributes||t.properties||[];for(let l of i){let u=l.name,d,f;if(l.resolve)f={get(){return l.resolve(this,this.getContext?.())},set(m){return l.set(this,m)},configurable:!0};else{switch(l.type){case"String":d=o(function(m){if(!(typeof m=="string"||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a string, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"ID":d=o(function(m){if(!(typeof m=="string"||m?.length>0&&m.every?.(h=>typeof h=="string")||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a string, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Float":case"Number":d=o(function(m){let h=m?.__op__?m.value:m;if(!(typeof h=="number"||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a number, attempt to assign ${h}`);Ln(this)[u]=m},"set");break;case"Int":d=o(function(m){let h=m?.__op__?m.value:m;if(!(h>>0===h||m==null&&l.nullable!==!1))if(typeof h=="number"&&Math.abs((h>>0)-h)<=1)h=Math.round(h),m?.__op__?m.value=h:m=h;else throw new Wn.ClientError(`${u} must be an integer between -2147483648 and 2147483647, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Long":d=o(function(m){let h=m?.__op__?m.value:m;if(!(Math.round(h)===m&&Math.abs(h)<=9007199254740992||m==null&&l.nullable!==!1))if(typeof h=="number"&&Math.abs(h)<=9007199254740992)h=Math.round(h),m?.__op__?m.value=h:m=h;else throw new Wn.ClientError(`${u} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"BigInt":d=o(function(m){let h=m?.__op__?m.value:m;if(!(typeof h=="bigint"||m==null&&l.nullable!==!1))if(typeof h=="string"||typeof h=="number")h=BigInt(h),m?.__op__?m.value=h:m=h;else throw new Wn.ClientError(`${u} must be a number, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Boolean":d=o(function(m){if(!(typeof m=="boolean"||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a boolean, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Date":d=o(function(m){if(!(m instanceof Date||m==null&&l.nullable!==!1))if(typeof m=="string"||typeof m=="number")m=new Date(m);else throw new Wn.ClientError(`${u} must be a Date, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Bytes":d=o(function(m){if(!(m instanceof Uint8Array||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a Buffer or Uint8Array, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Blob":d=o(function(m){if(!(m instanceof gs||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be a Blob, attempt to assign ${m}`);Ln(this)[u]=m},"set");break;case"Any":case void 0:d=o(function(m){Ln(this)[u]=m},"set");break;default:d=o(function(m){if(!(typeof m=="object"||m==null&&l.nullable!==!1))throw new Wn.ClientError(`${u} must be an object, attempt to assign ${m}`);Ln(this)[u]=m},"set")}f={get(){let m=this.getChanges?.();if(m&&u in m){let p=m[u];if(p?.__op__){let _=this.getRecord()?.[u];return p.update(_)}return p}let h=this.getRecord()?.[u];if(h&&typeof h=="object"){let p=rI(h,l);if(p)return m||this._setChanges(m=Object.create(null)),m[u]=p}return h},set:d,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,s[u]=f,(!(u in n)||Object.getOwnPropertyDescriptor(n,u)?.get?.isAttribute)&&Object.defineProperty(n,u,f)}a("getProperty",function(l){let u=s[l];if(u)return u.get.call(this);let d=this.getChanges();return d?.[l]!==void 0?d[l]:this.getRecord()?.[l]}),a("set",function(l,u){let d=s[l];if(d)return d.set.call(this,u);if(t.sealed)throw new Wn.ClientError("Can not add a property to a sealed table schema");Ln(this)[l]=u}),a("deleteProperty",function(l){Ln(this)[l]=void 0}),a("toJSON",function(){let l=this.getChanges?.(),u;for(let f in l){u||(u={...this.getRecord()});let m=l[f];if(m?.__op__){let h=u[f];m=m.update(h)}u[f]=m}return Object.keys(this).length>0&&(u||(u={...this.getRecord()}),Object.assign(u,this)),u||this.getRecord()}),n.get||a("get",n.getProperty),n.delete||a("delete",n.deleteProperty),n.then||a("then",null);function a(l,u){Object.defineProperty(n,l,{value:u,configurable:!0})}o(a,"setMethod");let c=n;do{let l=Object.getPrototypeOf(c);if(l===Object.prototype){Object.setPrototypeOf(c,r?LB:PB);break}c=l}while(c&&c!==PB&&c!==LB)}function DB(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(CB[t])return CB[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=rI(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}function Ste(e,t,r,n){if(typeof t=="string"){let s=n.getChanges?.();s||(s={},n._setChanges(s)),s[t]=r}else Object.defineProperty(n,t,{value:r,configurable:!0,writable:!0});return!0}function rI(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends tl{static{o(this,"TrackedObject")}},Um(r,t)),new r(e)):new tl(e);case Array:let n=new V_(e.length,e);for(let s=0,i=e.length;s<i;s++){let a=e[s];a&&typeof a=="object"&&(a=rI(a,t?.elements)),n[s]=a}return n;default:return e}}function K_(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 a=r[s];i=i.update(a)}else i=K_(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 Oa(e,t=e.getChanges?.()){let r;if(!e)return t;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 a=Oa(i);a!==i&&r===e&&(r=e.slice(0)),i=a}r[n]=i}return Object.freeze(r)}for(let n in t){r||(r={...e.getRecord?e.getRecord():e});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=eA[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=Oa(s);r[n]=s}if(!Array.isArray(e)&&e.getRecord)for(let n in e)Tte.call(e,n)&&(r||(r={...e.getRecord()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?e.getRecord():e}function $_(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[el]||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($_(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($_(s))return!0}else return!0}else return!0}}return!1}var Wn,CB,PB,LB,tl,Tte,el,V_,vm,nI=fe(()=>{Wn=w(Ee());HE();Ss();o(Ln,"getChanges");o(Um,"assignTrackedAccessors");CB=Object.prototype,PB=new Proxy({},{get:DB}),LB=new Proxy({},{get:DB,set:Ste});o(DB,"getProxiedProperty");o(Ste,"setProxiedProperty");o(rI,"trackObject");tl=class{static{o(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}};Um(tl,{},!0);o(K_,"collapseData");Tte=Object.prototype.hasOwnProperty;o(Oa,"updateAndFreeze");o($_,"hasChanges");el=Symbol.for("has-array-changes"),V_=class extends Array{static{o(this,"TrackedArray")}#e;[el];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[el]=!0,super.splice(...t)}push(...t){return this[el]=!0,super.push(...t)}pop(){return this[el]=!0,super.pop()}unshift(...t){return this[el]=!0,super.unshift(...t)}shift(){return this[el]=!0,super.shift()}};V_.prototype.constructor=Array;vm=class{static{o(this,"Addition")}__op__="add";value;constructor(t){this.value=t}update(t){return(+t||0)+this.value}}});var kB={};Ce(kB,{ResourceBridge:()=>oI});function aI({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 MB(e,t){let r=vi(e),n=aI(e,r);if(!r)throw new ri.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},a;Mt(i,()=>new Promise(u=>a=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],d;try{d=await r.get({id:u,lazy:s,select:n},i),d=d&&K_(d)}catch(f){d={message:(0,HB.errorToString)(f)}}return t?{value:{key:u,value:d}}:{value:d}}else return a(),{done:!0}},return(u){return a(),{value:u,done:!0}},throw(u){return a(),{done:!0}}}}}}function vi(e){let t=e.database||e.schema||yte,r=it()[t];if(!r)throw(0,ri.handleHDBError)(new Error,Rte.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function vB(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*UB(e,t,r,n){let s,i=0;for await(let a of e.getHistory(t,r)){let c=a.operation??a.type;c==="put"&&(c="upsert");let{id:l,version:u,value:d}=a;if(s?.timestamp===u)s.hash_values.push(l),s.records.push(d);else{if(s&&(yield s,i++,n&&n<=i)){s=void 0;break}s={operation:c,user_name:a.user,timestamp:u,hash_values:[l],records:[d]}}}s&&(yield s)}var xB,Y_,ri,BB,sI,iI,FB,HB,Rte,yte,Ate,bte,oI,GB=fe(()=>{xB=w(OB()),Y_=w(vu()),ri=w(Ee());Le();BB=w(Rm());k();sI=w(Ao()),iI=w(ei()),FB=w(ie());Dc();nI();HB=w(z()),{HDB_ERROR_MSGS:Rte}=ri.hdbErrors,yte="data",Ate=1e4,bte=10,oI=class extends xB.default{static{o(this,"ResourceBridge")}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);for(let a of t.conditions||[])a?.attribute!==void 0&&(a.search_attribute=a.attribute),a?.comparator!==void 0&&(a.search_type=a.comparator),a?.value!==void 0&&(a.search_value=a.value);let r=(0,Y_.default)(t,"conditions");if(r)throw(0,ri.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=vi(t);if(!n)throw new ri.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(a){if("conditions"in a&&a.conditions)return a.conditions=a.conditions.map(i),a;{let c=a;return{attribute:c.search_attribute??c.attribute,comparator:c.search_type??c.comparator,value:c.search_value!==void 0?c.search_value:c.value}}}return o(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:aI(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 a of n)a.is_primary_key?(a.isPrimaryKey=!0,delete a.is_primary_key):a.name===i&&i&&(a.isPrimaryKey=!0);else{if(!i)throw new ri.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}]}et({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await vi(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=vi(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=o((a,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(a,l,()=>r.primaryStore.put(a,c,l)).then(u=>{if(!u){let{value:d,version:f}=r.primaryStore.getEntry(a);return i(a,d,f)}})),"deleteRecord");for(let{key:a,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(a,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){return vi(t).dropTable()}createSchema(t){return Bu({database:t.schema,table:null}),sI.signalSchemaChange(new iI.SchemaEventMsg(process.pid,G.CREATE_SCHEMA,t.schema))}async dropSchema(t){await cI(t.schema),sI.signalSchemaChange(new iI.SchemaEventMsg(process.pid,G.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,this.upsertRecords(t)}async upsertRecords(t){let{schemaTable:r,attributes:n}=(0,BB.default)(t),s,i=it()[t.schema][t.table],a={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(a.replicateTo=t.replicateTo),t.replicatedConfirmation&&(a.replicatedConfirmation=t.replicatedConfirmation),Mt(a,async c=>{if(!i.schemaDefined){s=[];for(let d of n)i.attributes.find(m=>m.name==d)||s.push(d);s.length>0&&await i.addAttributes(s.map(d=>({name:d,indexed:!0})))}let l=[],u=[];for(let d of t.records){let f=d[i.primaryKey],m=f!=null&&await i.get(f,a);if(t.requires_existing&&!m||t.requires_no_existing&&m){u.push(d[i.primaryKey]);continue}m&&(m=K_(m));for(let h in d)if(Object.prototype.hasOwnProperty.call(d,h)){let p=d[h];if(typeof p=="function")try{let _=p([[m]]);Array.isArray(_)&&(p=_[0].func_val,d[h]=p)}catch(_){throw _.message+="Trying to set key "+h+" on object"+JSON.stringify(d),_}}if(m)for(let h in m)Object.prototype.hasOwnProperty.call(d,h)||(d[h]=m[h]);await(f==null?i.create(d,a):i.put(d,a)),l.push(d[i.primaryKey])}return{txn_time:c.timestamp,written_hashes:l,new_attributes:s,skipped_hashes:u}})}async deleteRecords(t){let r=it()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),Mt(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),a=[],c=[];for(let l of i)await r.delete(l,n)?a.push(l):c.push(l);return vB(a,c,s.timestamp)})}async deleteRecordsBefore(t){let r=it()[t.schema][t.table];if(!r.createdTimeProperty)throw new ri.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:AE.LESS}]}),s=!1,i=[],a=[],c=0,l=[],u=o(async()=>{let d=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...d.deleted_hashes),a.push(...d.skipped_hashes),await(0,FB.asyncSetTimeout)(bte),l=[],s=!0},"chunkDelete");for await(let d of n)l.push(d[r.primaryKey]),c++,c%Ate===0&&await u();return l.length>0&&await u(),s?vB(i,a,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,Y_.default)(t,"hashes");if(r)throw r;return MB(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of MB(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&xy[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=t.attribute),t.value!==void 0&&(t.search_value=t.value);let n=(0,Y_.default)(t,"value");if(n)throw n;let s=vi(t);if(!s)throw new ri.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===AE.BETWEEN&&(i=[i,t.end_value]);let a=i==="*"?[]:[{attribute:t.search_attribute,value:i,comparator:r}];return s.search({conditions:a,allowFullScan:!0,limit:t.limit,offset:t.offset,reverse:t.reverse,sort:t.sort,select:aI(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=vi(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){vi({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return vi(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=vi(t),n={};switch(t.search_type){case bE.HASH_VALUE:for(let s of t.search_values)n[s]=(await r.getHistoryOfRecord(s)).map(i=>{let a=i.operation??i.type;return a==="put"&&(a="upsert"),{operation:a,timestamp:i.version,user_name:i.user,hash_values:[s],records:[i.value]}});return n;case bE.USERNAME:{let s=t.search_values;for await(let i of UB(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n}default:return UB(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};o(aI,"getSelect");o(MB,"getRecords");o(vi,"getTable");o(vB,"createDeleteResponse");o(UB,"groupRecordsInHistory")});var zn=M((LCe,qB)=>{"use strict";var{ResourceBridge:Ite}=(GB(),v(kB)),Nte=ce();Nte.initSync();var W_;function wte(){return W_||(W_=new Ite,W_)}o(wte,"getBridge");qB.exports=wte()});var YB=M((MCe,KB)=>{"use strict";var $B=require("lodash"),xm=require("mathjs"),Ote=require("jsonata"),VB=ie();KB.exports={distinct_array:o(e=>Array.isArray(e)&&e.length>1?$B.uniqWith(e,$B.isEqual):e,"distinct_array"),searchJSON:Cte,mad:Bm.bind(null,xm.mad),mean:Bm.bind(null,xm.mean),mode:Bm.bind(null,xm.mode),prod:Bm.bind(null,xm.prod),median:Bm.bind(null,xm.median)};function Bm(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}o(Bm,"aggregateFunction");function Cte(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(VB.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),VB.isEmpty(this.__ala__.res[r])){let n=Ote(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}o(Cte,"searchJSON")});var zB=M((UCe,WB)=>{"use strict";var ir=require("moment"),lI="YYYY-MM-DDTHH:mm:ss.SSSZZ";ir.suppressDeprecationWarnings=!0;WB.exports={current_date:o(()=>ir().utc().format("YYYY-MM-DD"),"current_date"),current_time:o(()=>ir().utc().format("HH:mm:ss.SSS"),"current_time"),extract:o((e,t)=>{switch(t.toLowerCase()){case"year":return ir(e).utc().format("YYYY");case"month":return ir(e).utc().format("MM");case"day":return ir(e).utc().format("DD");case"hour":return ir(e).utc().format("HH");case"minute":return ir(e).utc().format("mm");case"second":return ir(e).utc().format("ss");case"millisecond":return ir(e).utc().format("SSS");default:break}},"extract"),date:o(e=>ir(e).utc().format(lI),"date"),date_format:o((e,t)=>ir(e).utc().format(t),"date_format"),date_add:o((e,t,r)=>ir(e).utc().add(t,r).valueOf(),"date_add"),date_sub:o((e,t,r)=>ir(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:o((e,t,r)=>{let n=ir(e).utc(),s=ir(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:o(()=>ir().utc().valueOf(),"now"),get_server_time:o(()=>ir().format(lI),"get_server_time"),offset_utc:o((e,t)=>ir(e).utc().utcOffset(t).format(lI),"offset_utc")}});var XB=M((BCe,JB)=>{"use strict";var Pte=require("@turf/area"),Lte=require("@turf/length"),Dte=require("@turf/circle"),Mte=require("@turf/difference"),vte=require("@turf/distance"),Ute=require("@turf/boolean-contains"),xte=require("@turf/boolean-equal"),Bte=require("@turf/boolean-disjoint"),Fte=require("@turf/helpers"),jB=(k(),v(K)),Ye=ie(),No=z();JB.exports={geoArea:Hte,geoLength:kte,geoCircle:Gte,geoDifference:qte,geoDistance:QB,geoNear:$te,geoContains:Vte,geoEqual:Kte,geoCrosses:Yte,geoConvert:Wte};function Hte(e){if(Ye.isEmpty(e))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return Pte.default(e)}catch(t){return No.trace(t,e),NaN}}o(Hte,"geoArea");function kte(e,t){if(Ye.isEmpty(e))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return Lte.default(e,{units:t||"kilometers"})}catch(r){return No.trace(r,e),NaN}}o(kte,"geoLength");function Gte(e,t,r){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return Dte.default(e,t,{units:r||"kilometers"})}catch(n){return No.trace(n,e,t),NaN}}o(Gte,"geoCircle");function qte(e,t){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Mte(e,t)}catch(r){return No.trace(r,e,t),NaN}}o(qte,"geoDifference");function QB(e,t,r){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return vte.default(e,t,{units:r||"kilometers"})}catch(n){return No.trace(n,e,t),NaN}}o(QB,"geoDistance");function $te(e,t,r,n){if(Ye.isEmpty(e)||Ye.isEmpty(t))return!1;if(Ye.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return QB(e,t,n)<=r}catch(s){return No.trace(s,e,t),!1}}o($te,"geoNear");function Vte(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Ute.default(e,t)}catch(r){return No.trace(r,e,t),!1}}o(Vte,"geoContains");function Kte(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return xte.default(e,t)}catch(r){return No.trace(r,e,t),!1}}o(Kte,"geoEqual");function Yte(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return!Bte.default(e,t)}catch(r){return No.trace(r,e,t),!1}}o(Yte,"geoCrosses");function Wte(e,t,r){if(Ye.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ye.isEmpty(t))throw new Error("geo_type is required");if(Ye.isEmpty(jB.GEO_CONVERSION_ENUM[t]))throw new Error(`geoType of ${t} is invalid please use one of the following types: ${Object.keys(jB.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ye.autoCastJSON(e)),Fte[t](e,r)}o(Wte,"geoConvert")});var z_=M((HCe,ZB)=>{var rl=YB(),jn=zB(),Ui=XB();ZB.exports=e=>{e.aggr.mad=e.aggr.MAD=rl.mad,e.aggr.mean=e.aggr.MEAN=rl.mean,e.aggr.mode=e.aggr.MODE=rl.mode,e.aggr.prod=e.aggr.PROD=rl.prod,e.aggr.median=e.aggr.MEDIAN=rl.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=rl.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=rl.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=jn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=jn.current_time,e.fn.extract=e.fn.EXTRACT=jn.extract,e.fn.date=e.fn.DATE=jn.date,e.fn.date_format=e.fn.DATE_FORMAT=jn.date_format,e.fn.date_add=e.fn.DATE_ADD=jn.date_add,e.fn.date_sub=e.fn.DATE_SUB=jn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=jn.date_diff,e.fn.now=e.fn.NOW=jn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=jn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=jn.get_server_time,e.fn.getdate=e.fn.GETDATE=jn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=jn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=Ui.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=Ui.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=Ui.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=Ui.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=Ui.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=Ui.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=Ui.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=Ui.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=Ui.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=Ui.geoNear}});var nF=M((kCe,rF)=>{"use strict";var Fm=require("lodash"),Dn=require("alasql");Dn.options.cache=!1;var zte=z_(),eF=require("clone"),j_=require("recursive-iterator"),ke=z(),tt=ie(),Fu=zn(),jte=(k(),v(K)),{hdbErrors:Qte}=Ee(),{getDatabases:tF}=(Le(),v(ft)),Jte="IS NULL",ni="There was a problem performing this search. Please check the logs and try again.";zte(Dn);var uI=class{static{o(this,"SQLSearch")}constructor(t,r){if(tt.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(),tt.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!tt.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(ni)}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(ni)}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(ni)}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(ni)}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(ni)}}_getColumns(){let t=new j_(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(eF(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Fm.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].__hashName=tF()[r.databaseid][r.tableid].primaryKey,this.data[n].__mergedData={},this.data[n].__mergedAttributes=[],this.data[n].__mergedAttrMap={}})}_conditionsToFetchAttributeValues(){if(tt.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new j_(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!tt.isEmpty(r)&&r.right)if(tt.isNotEmptyAndHasValue(r.right.value)){let n=tt.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new Dn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=tt.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new Dn.yy.LogicValue({value:i}):n instanceof Dn.yy.StringValue&&tt.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Dn.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 j_(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 a=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!tt.isEmpty(jte.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(tt.isEmpty(this.comparator_search_values[a])&&(this.comparator_search_values[a]={ignore:!1,comparators:[]}),!this.comparator_search_values[a].ignore){if(tt.isEmptyOrZeroLength(r.left.columnid)||tt.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[a].ignore=!0,this.comparator_search_values[a].comparators=[];continue}this.comparator_search_values[a].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(tt.isEmpty(this.exact_search_values[a])&&(this.exact_search_values[a]={ignore:!1,values:new Set}),!this.exact_search_values[a].ignore){let c=!1;switch(r.op){case"=":!tt.isEmpty(r.right.value)||!tt.isEmpty(r.left.value)?n.add(tt.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[a].ignore=c,c?this.exact_search_values[a].values=new Set:this.exact_search_values[a].values=new Set([...this.exact_search_values[a].values,...n])}}}_setAliasesForColumns(){if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&tt.isEmptyOrZeroLength(this.statement.from)&&tt.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&&Fm.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(tt.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);tt.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(tt.isEmptyOrZeroLength(this.all_table_attributes)&&!tt.isEmptyOrZeroLength(this.columns.columns))return t;if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&tt.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await Dn.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(eF(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__mergedAttributes.push(r),this.data[t].__mergedAttrMap[r]=this.data[t].__mergedAttributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__mergedData[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__mergedAttrMap[n];this.data[t].__mergedData[r].splice(i,1,s)}async _getFetchAttributeValues(){if(tt.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(Jte)>-1&&this.tables.forEach(s=>{let i={columnid:tF()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=Fm.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 a=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[a].__hashName;return s[a]||(s[a]=[],s[a].push(null),this._addColumnToMergedAttributes(a,c)),i.attribute!==c&&(s[a].push(null),this._addColumnToMergedAttributes(a,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,a=this.data[i].__hashName,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===a&&(l=!0),!tt.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!tt.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let d=await Fu.getDataByHash(c);for(let f of c.hash_values)d.get(f)&&!this.data[i].__mergedData[f]&&(this.data[i].__mergedData[f]=[...n[i]],this._setMergedHashAttribute(i,f))}catch(d){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(d),new Error(ni)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async d=>{let f={...c};f.search_value=d;let m=await Fu.getDataByValue(f);for(let[h,p]of m)this.data[i].__mergedData[h]?this._updateMergedAttribute(i,h,s.attribute,p[s.attribute]):(this.data[i].__mergedData[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,p[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(d){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(d),new Error(ni)}else if(!tt.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!tt.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let d=this.comparator_search_values[u].comparators;for(let f=0,m=d.length;f<m;f++){let h=d[f];c.search_attribute=h.attribute,c.search_value=h.search_value;let p=await Fu.getDataByValue(c,h.operation);if(l)for(let[_]of p)this.data[i].__mergedData[_]||(this.data[i].__mergedData[_]=[...n[i]],this._setMergedHashAttribute(i,_));else for(let[_,g]of p)this.data[i].__mergedData[_]?this._updateMergedAttribute(i,_,s.attribute,g[s.attribute]):(this.data[i].__mergedData[_]=[...n[i]],this._updateMergedAttribute(i,_,s.attribute,g[s.attribute]),this._setMergedHashAttribute(i,_))}}catch(d){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),ke.error(d),new Error(ni)}else try{c.search_attribute=s.attribute,c.search_value="*";let d=await Fu.getDataByValue(c);if(l)for(let[f]of d)this.data[i].__mergedData[f]||(this.data[i].__mergedData[f]=[...n[i]],this._setMergedHashAttribute(i,f));else for(let[f,m]of d)this.data[i].__mergedData[f]?this._updateMergedAttribute(i,f,s.attribute,m[s.attribute]):(this.data[i].__mergedData[f]=[...n[i]],this._updateMergedAttribute(i,f,s.attribute,m[s.attribute]),this._setMergedHashAttribute(i,f))}catch(d){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),ke.error(d),new Error(ni)}}}_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 Dn.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,a=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===a});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 Dn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Dn.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 Dn.yy.FuncValue:new Dn.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}`].__mergedData)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let p=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(p+=" ON "+h.on.toString()),i.push(p),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__mergedData))});let a=[],c={};s.forEach(h=>{let p=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hashName,_=h.as?h.as_orig:h.tableid_orig;a.push({key:`'${_}.${p}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${p}\` AS "${_}.${p}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__mergedAttributes});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 d="",f="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(d=this.statement.limit?"LIMIT "+this.statement.limit:"",f=this.statement.offset?"OFFSET "+this.statement.offset:"");let m=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${d} ${f}`,p=this._convertColumnsToIndexes(h,s);m=await Dn.promise(p,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(m&&m.length>0){for(let h=0,p=m.length;h<p;h++){let _=m[h];a.forEach(g=>{_[g.key]!==null&&_[g.key]!==void 0&&g.keys.add(_[g.key])})}a.forEach(h=>{let p=Object.keys(this.data[`${h.schema}_${h.table}`].__mergedData),_=Fm.difference(p,[...h.keys].map(g=>g.toString()));for(let g=0,y=_.length;g<y;g++){let T=_[g];delete this.data[`${h.schema}_${h.table}`].__mergedData[T]}})}return{existing_attributes:c,joined_length:m?m.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new j_(this.columns);for(let{node:i}of s)if(i&&i.columnid){let a=this._findColumn(i);if(a){let c=a.table.as?a.table.as:a.table.tableid;(!t[c]||t[c].indexOf(a.attribute)<0)&&n.push(a)}}n=Fm.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(ni)}}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].__mergedData,a=[];for(let d in i)a.push(i[d][0]);this.data[n].__mergedAttributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:a,get_attributes:s.columns},l=await Fu.getDataByHash(c),u=s.columns.length;for(let d=0,f=a.length;d<f;d++){let m=a[d],h=l.get(m);for(let p=0;p<u;p++){let _=s.columns[p],g=h[_]===void 0?null:h[_];this.data[n].__mergedData[m].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}`].__mergedData)),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}`].__mergedData)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(a=>{let c=a.aggregatorid?a.expression:a,l=a.aggregatorid?a.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 Dn.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(Qte.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].__mergedAttributes.forEach((a,c)=>{let l=s[i],u=new RegExp(`${l}.\`${a}\``,"g"),d=`${l}.[${c}]`;n=n.replace(u,d)});for(let i in this.data)this.data[i].__mergedAttributes.forEach((a,c)=>{let l=new RegExp(`\`${a}\``,"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 a=await Fu.getDataByValue(i);for(let[c,l]of a)this.data[s].__mergedData[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__mergedData[c]={...r[s]}),this.data[s].__mergedData[c][t[n.attribute]]=l[n.attribute]??null}catch(a){throw ke.error("There was an error when processing this SQL operation. Check your logs"),ke.error(a),new Error(ni)}}return Object.values(Object.values(this.data)[0].__mergedData)}};rF.exports=uI});var nn=M((qCe,sF)=>{"use strict";var Xte=JU();sF.exports={searchByConditions:ere,searchByHash:tre,searchByValue:rre,search:nre};var dI=zn(),{transformReq:fI}=ie(),Zte=nF();async function ere(e){return fI(e),dI.searchByConditions(e)}o(ere,"searchByConditions");async function tre(e){fI(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of dI.searchByHash(e))r&&t.push(r);return t}o(tre,"searchByHash");async function rre(e){fI(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of dI.searchByValue(e))t.push(r);return t}o(rre,"searchByValue");function nre(e,t){try{let r=new Xte(e);r.validate(),new Zte(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}o(nre,"search")});var xi=M((VCe,cF)=>{"use strict";var Hm=require("crypto"),sre=ce(),{CONFIG_PARAMS:ire}=(k(),v(K)),oF="aes-256-cbc",ore=32,are=16,mI=64,aF=32,cre=mI+aF,iF=new Map;cF.exports={encrypt:lre,decrypt:ure,createNatsTableStreamName:dre};function lre(e){let t=Hm.randomBytes(ore),r=Hm.randomBytes(are),n=Hm.createCipheriv(oF,Buffer.from(t),r),s=n.update(e);s=Buffer.concat([s,n.final()]);let i=t.toString("hex"),a=r.toString("hex"),c=s.toString("hex");return i+a+c}o(lre,"encrypt");function ure(e){let t=e.substr(0,mI),r=e.substr(mI,aF),n=e.substr(cre,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),a=Hm.createDecipheriv(oF,Buffer.from(t,"hex"),s),c=a.update(i);return c=Buffer.concat([c,a.final()]),c.toString()}o(ure,"decrypt");function dre(e,t){let r=sre.get(ire.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=iF.get(r);return n||(n=Hm.createHash("md5").update(r).digest("hex"),iF.set(r,n)),n}o(dre,"createNatsTableStreamName")});var Ca=M((WCe,fF)=>{"use strict";var YCe=nn(),km=z(),{validateBySchema:lF}=ct(),nl=require("joi"),fre=xi(),Q_=ie(),{handleHDBError:J_,hdbErrors:mre,ClientError:uF}=Ee(),{HDB_ERROR_MSGS:X_,HTTP_STATUS_CODES:hI}=mre,dF=ce();dF.initSync();var{getDatabases:pI}=(Le(),v(ft)),hre=require("fs-extra"),pre=(k(),v(K));fF.exports={describeAll:Ere,describeTable:Z_,describeSchema:_re};async function Ere(e={}){try{let t=Q_.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=pI(),a={},c={},l=[],u=e?.exact_count;for(let f in i){a[f]=!0,!t&&!s&&!r&&(c[f]=e.hdb_user?.role?.permission[f]?.describe);let m=i[f];for(let h in m)try{let p;if(t||s||r)p=await Z_({schema:f,table:h,exactCount:u});else if(n&&n[f].describe&&n[f].tables[h].describe){let _=n[f].tables[h].attribute_permissions;p=await Z_({schema:f,table:h,exactCount:u},_)}p&&l.push(p)}catch(p){km.error(p)}}let d={};for(let f in l)t||s||r?(d[l[f].schema]==null&&(d[l[f].schema]={}),d[l[f].schema][l[f].name]=l[f],a[l[f].schema]&&delete a[l[f].schema]):c[l[f].schema]&&(d[l[f].schema]==null&&(d[l[f].schema]={}),d[l[f].schema][l[f].name]=l[f],a[l[f].schema]&&delete a[l[f].schema]);for(let f in a)t||s||r?d[f]={}:c[f]&&(d[f]={});return d}catch(t){return km.error("Got an error in describeAll"),km.error(t),J_(new Error,X_.DESCRIBE_ALL_ERR)}}o(Ere,"describeAll");async function Z_(e,t){Q_.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=lF(e,nl.object({database:nl.string(),table:nl.string().required(),exact_count:nl.boolean().strict()}));if(i)throw new uF(i.message);let c=pI()[r];if(!c)throw J_(new Error,X_.SCHEMA_NOT_FOUND(e.schema),hI.NOT_FOUND);let l=c[n];if(!l)throw J_(new Error,X_.TABLE_NOT_FOUND(e.schema,e.table),hI.NOT_FOUND);function u(h){d.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(p=>({type:p.type,name:p.name})):void 0})}o(u,"pushAtt");let d=[];if(s){let h={};s.forEach(p=>{p.describe&&(h[p.attribute_name]=!0)}),l.attributes.forEach(p=>{h[p.name]&&u(p)})}else l.attributes?.forEach(h=>u(h));let f;try{f=(await hre.stat(l.primaryStore.env.path)).size}catch(h){km.warn("unable to get database size",h)}let m={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:d,db_size:f};l.replicate!==void 0&&(m.replicate=l.replicate),l.expirationMS!==void 0&&(m.expiration=l.expirationMS/1e3+"s"),l.sealed!==void 0&&(m.sealed=l.sealed),l.sources?.length>0&&(m.sources=l.sources.map(h=>h.name).filter(h=>h&&h!=="NATSReplicator"&&h!=="Replicator")),dF.get(pre.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(m.clustering_stream_name=fre.createNatsTableStreamName(m.schema,m.name));try{let h=await l.getRecordCount({exactCount:!!e.exact_count});m.record_count=h.recordCount,m.table_size=l.getSize(),m.db_audit_size=l.getAuditSize(),m.estimated_record_range=h.estimatedRange;let p=l.auditStore;if(p)for(let _ of p.getKeys({reverse:!0,limit:1}))m.last_updated_record=_[0];if(!m.last_updated_record&&l.indices.__updatedtime__)for(let _ of l.indices.__updatedtime__.getKeys({reverse:!0,limit:1}))m.last_updated_record=_}catch(h){km.warn(`unable to stat table dbi due to ${h}`)}return m}o(Z_,"descTable");async function _re(e){Q_.transformReq(e);let t=lF(e,nl.object({database:nl.string(),exact_count:nl.boolean().strict()}));if(t)throw new uF(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=pI()[n];if(!i)throw J_(new Error,X_.SCHEMA_NOT_FOUND(e.schema),hI.NOT_FOUND);let a={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),Q_.isEmpty(l)||l.describe){let u=await Z_({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(a[u.name]=u)}}return a}o(_re,"describeSchema")});var Mn=M((jCe,EF)=>{"use strict";var tg=gb(),$r=ie(),gre=require("util"),rg=zn(),Sre=Zs(),mF=z(),{handleHDBError:sl,hdbErrors:Tre}=Ee(),{HTTP_STATUS_CODES:il}=Tre,Rre=gre.promisify(Sre.getTableSchema),yre="updated",hF="inserted",pF="upserted";EF.exports={insert:bre,update:Ire,upsert:Nre,validation:Are,flush:wre};async function Are(e){if($r.isEmpty(e))throw new Error("invalid update parameters defined.");if($r.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if($r.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await Rre(e.schema,e.table),r=tg(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={},a=!1;return e.operation==="update"&&(a=!0),e.records.forEach(c=>{if(a&&$r.isEmptyOrZeroLength(c[n]))throw mF.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(!$r.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw mF.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!$r.isEmpty(c[n])&&c[n]!==""&&s.has($r.autoCast(c[n]))&&(c.skip=!0),s.add($r.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)}}o(Are,"validation");async function bre(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=tg(e);if(t)throw sl(new Error,t.message,il.BAD_REQUEST);$r.transformReq(e);let r=$r.checkSchemaTableExist(e.schema,e.table);if(r)throw sl(new Error,r,il.BAD_REQUEST);let n=await rg.createRecords(e);return eg(hF,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}o(bre,"insertData");async function Ire(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=tg(e);if(t)throw sl(new Error,t.message,il.BAD_REQUEST);$r.transformReq(e);let r=$r.checkSchemaTableExist(e.schema,e.table);if(r)throw sl(new Error,r,il.BAD_REQUEST);let n=await rg.updateRecords(e);return $r.isEmpty(n.existing_rows)?eg(yre,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):eg(n.update_action,[],e,n.hashes,void 0,n.txn_time)}o(Ire,"updateData");async function Nre(e){if(e.operation!=="upsert")throw sl(new Error,"invalid operation, must be upsert",il.INTERNAL_SERVER_ERROR);let t=tg(e);if(t)throw sl(new Error,t.message,il.BAD_REQUEST);$r.transformReq(e);let r=$r.checkSchemaTableExist(e.schema,e.table);if(r)throw sl(new Error,r,il.BAD_REQUEST);let n=await rg.upsertRecords(e);return eg(pF,n.written_hashes,e,[],n.new_attributes,n.txn_time)}o(Nre,"upsertData");function eg(e,t,r,n,s,i){let a={message:`${e} ${t.length} of ${t.length+n.length} records`,new_attributes:s,txn_time:i};return e===hF?(a.inserted_hashes=t,a.skipped_hashes=n,a):e===pF?(a.upserted_hashes=t,a):(a.update_hashes=t,a.skipped_hashes=n,a)}o(eg,"returnObject");function wre(e){return $r.transformReq(e),rg.flush(e.schema,e.table)}o(wre,"flush")});var _I=M((JCe,SF)=>{var Ore=ct(),EI=require("joi"),{hdbTable:Cre,hdbDatabase:_F}=Di(),gF={schema:_F,database:_F,table:Cre},Pre={date:EI.date().iso().required()},Lre={timestamp:EI.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};SF.exports=function(e,t){let r=t==="timestamp"?{...gF,...Lre}:{...gF,...Pre},n=EI.object(r);return Ore.validateBySchema(e,n)}});var yF=M((XCe,RF)=>{var Dre=ct(),gI=require("joi"),{hdbTable:Mre,hdbDatabase:TF}=Di(),vre=gI.object({schema:TF,database:TF,table:Mre,hash_values:gI.array().required(),ids:gI.array()});RF.exports=function(e){return Dre.validateBySchema(e,vre)}});var yI=M((ZCe,AF)=>{"use strict";var SI=class{static{o(this,"InsertObject")}constructor(t,r,n,s,i){this.operation=t,this.schema=r,this.table=n,this.hash_attribute=s,this.records=i}},TI=class{static{o(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,a){this.schema=t,this.table=r,this.search_attribute=n,this.hash_attribute=s,this.get_attributes=i,this.search_value=a}},RI=class{static{o(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};AF.exports={InsertObject:SI,NoSQLSeachObject:TI,DeleteResponseObject:RI}});var cl=M((tPe,OF)=>{"use strict";var IF=_I(),Ure=yF(),ol=ie(),bF=require("moment"),NF=z(),{promisify:xre,callbackify:Bre}=require("util"),al=(k(),v(K)),Fre=Zs(),AI=xre(Fre.getTableSchema),bI=zn(),{DeleteResponseObject:Hre}=yI(),{handleHDBError:Pa,hdbErrors:kre}=Ee(),{HDB_ERROR_MSGS:ng,HTTP_STATUS_CODES:La}=kre,Gre="records successfully deleted",qre=Bre(wF);OF.exports={delete:qre,deleteRecord:wF,deleteFilesBefore:$re,deleteAuditLogsBefore:Vre};async function $re(e){let t=IF(e,"date");if(t)throw Pa(t,t.message,La.BAD_REQUEST,void 0,void 0,!0);if(ol.transformReq(e),!bF(e.date,bF.ISO_8601).isValid())throw Pa(new Error,ng.INVALID_DATE,La.BAD_REQUEST,al.LOG_LEVELS.ERROR,ng.INVALID_DATE,!0);let n=ol.checkSchemaTableExist(e.schema,e.table);if(n)throw Pa(new Error,n,La.NOT_FOUND,al.LOG_LEVELS.ERROR,n,!0);let s=await bI.deleteRecordsBefore(e);if(await AI(e.schema,e.table),NF.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}o($re,"deleteFilesBefore");async function Vre(e){let t=IF(e,"timestamp");if(t)throw Pa(t,t.message,La.BAD_REQUEST,void 0,void 0,!0);if(ol.transformReq(e),isNaN(e.timestamp))throw Pa(new Error,ng.INVALID_VALUE("Timestamp"),La.BAD_REQUEST,al.LOG_LEVELS.ERROR,ng.INVALID_VALUE("Timestamp"),!0);let r=ol.checkSchemaTableExist(e.schema,e.table);if(r)throw Pa(new Error,r,La.NOT_FOUND,al.LOG_LEVELS.ERROR,r,!0);let n=await bI.deleteAuditLogsBefore(e);return await AI(e.schema,e.table),NF.info(`Finished deleting audit logs before ${e.timestamp}`),n}o(Vre,"deleteAuditLogsBefore");async function wF(e){e.ids&&(e.hash_values=e.ids);let t=Ure(e);if(t)throw Pa(t,t.message,La.BAD_REQUEST,void 0,void 0,!0);ol.transformReq(e);let r=ol.checkSchemaTableExist(e.schema,e.table);if(r)throw Pa(new Error,r,La.NOT_FOUND,al.LOG_LEVELS.ERROR,r,!0);try{await AI(e.schema,e.table);let n=await bI.deleteRecords(e);return ol.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${Gre}`),n}catch(n){if(n.message===al.SEARCH_NOT_FOUND_MESSAGE){let s=new Hre;return s.message=al.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}o(wF,"deleteRecord")});var sg={};Ce(sg,{HASH_FUNCTION:()=>Mr,hash:()=>wI,validate:()=>OI});function II(e=qm){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(Gm.randomBytes(e)).map(r=>t[r%t.length]).join("")}function wI(e,t=Mr[PF?.toUpperCase()]??Mr.SHA256){return NI[t](e)}function OI(e,t,r=Mr[PF?.toUpperCase()]??Mr.SHA256){return e?Kre[r](e,t):!1}var Gm,Hu,CF,PF,qm,LF,Mr,NI,Kre,ig=fe(()=>{Gm=w(require("node:crypto")),Hu=w(require("argon2")),CF=w(ce());k();PF=(0,CF.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),qm=16,LF=9,Mr={MD5:"md5",SHA256:"sha256",ARGON2ID:"argon2id"};o(II,"generateSalt");NI={[Mr.MD5]:(e,t=void 0)=>{t=t??II(LF);let r=Gm.createHash(Mr.MD5).update(e+t).digest("hex");return t+r},[Mr.SHA256]:(e,t=void 0)=>{t=t??II(qm);let r=Gm.createHash(Mr.SHA256).update(e+t).digest("hex");return t+r},[Mr.ARGON2ID]:async e=>{let t=II(qm),r=await Hu.hash(e,{type:Hu.argon2id,salt:Buffer.from(t)});return t+r}},Kre={[Mr.MD5]:(e,t)=>{let r=e.slice(0,LF);return e===NI[Mr.MD5](t,r)},[Mr.SHA256]:(e,t)=>{let r=e.slice(0,qm);return e===NI[Mr.SHA256](t,r)},[Mr.ARGON2ID]:async(e,t)=>await Hu.verify(e.slice(qm),t)};o(wI,"hash");o(OI,"validate")});var MF=M((iPe,DF)=>{var CI=ct(),sn={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 Yre(e){return sn.password.presence=!0,sn.username.presence=!0,sn.role.presence=!0,sn.active.presence=!0,CI.validateObject(e,sn)}o(Yre,"addUserValidation");function Wre(e){return sn.password.presence=!1,sn.username.presence=!0,sn.role.presence=!1,sn.active.presence=!1,CI.validateObject(e,sn)}o(Wre,"alterUserValidation");function zre(e){return sn.password.presence=!1,sn.username.presence=!0,sn.role.presence=!1,sn.active.presence=!1,CI.validateObject(e,sn)}o(zre,"dropUserValidation");DF.exports={addUserValidation:Yre,alterUserValidation:Wre,dropUserValidation:zre}});var bt=M((cPe,UF)=>{"use strict";var{platform:aPe}=require("os"),jre="nats-server.zip",PI="nats-server",Qre=process.platform==="win32"?`${PI}.exe`:PI,Jre=/^[^\s.,*>]+$/,vF="__request__",Xre=o(e=>`${e}.${vF}`,"REQUEST_SUBJECT"),Zre={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},ene={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},tne={HUB:"hub.pid",LEAF:"leaf.pid"},rne={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},nne={SUCCESS:"success",ERROR:"error"},sne={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},ine={TXN:"txn",MSGID:"msgid"},ku={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},one={[ku.ERR]:1,[ku.WRN]:2,[ku.INF]:3,[ku.DBG]:4,[ku.TRC]:5},ane={debug:"-D",trace:"-DVV"};UF.exports={NATS_SERVER_ZIP:jre,NATS_SERVER_NAME:PI,NATS_BINARY_NAME:Qre,PID_FILES:tne,NATS_CONFIG_FILES:ene,SERVER_SUFFIX:rne,NATS_TERM_CONSTRAINTS_RX:Jre,REQUEST_SUFFIX:vF,UPDATE_REMOTE_RESPONSE_STATUSES:nne,CLUSTER_STATUS_STATUSES:sne,REQUEST_SUBJECT:Xre,SUBJECT_PREFIXES:ine,MSG_HEADERS:Zre,LOG_LEVELS:ku,LOG_LEVEL_FLAGS:ane,LOG_LEVEL_HIERARCHY:one}});var LI=M(on=>{"use strict";var cne={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
|
|
12
12
|
`),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
|
|
13
13
|
`)},lne="certificate.pem",une="privateKey.pem",dne="caCertificate.pem",fne="natsCertificate.pem",mne="natsCaCertificate.pem",It={DEFAULT:"default","DEFAULT-CA":"default-ca",SERVER:"server",CA:"ca","OPERATIONS-API":"operations-api","OPERATIONS-CA":"operations-ca"},hne={tls_certificate:It.SERVER,tlsCertificateAuthority:It.CA,customFunctions_tls_certificate:It.SERVER,customFunctionsTlsCertificateAuthority:It.CA,operationsApi_tls_certificate:It["OPERATIONS-API"],operationsApiTlsCertificateAuthority:It["OPERATIONS-CA"]},pne={[It.SERVER]:2,[It.DEFAULT]:1},Ene={[It["OPERATIONS-API"]]:3,[It.SERVER]:2,[It.DEFAULT]:1},_ne={[It["OPERATIONS-API"]]:3,[It.SERVER]:2,[It.DEFAULT]:1},gne={[It["OPERATIONS-CA"]]:3,[It.CA]:2,[It["DEFAULT-CA"]]:1},Sne={[It["OPERATIONS-CA"]]:3,[It.CA]:2,[It["DEFAULT-CA"]]:1},Tne={[It.CA]:2,[It["DEFAULT-CA"]]:1};on.CERTIFICATE_PEM_NAME=lne;on.PRIVATEKEY_PEM_NAME=une;on.CA_PEM_NAME=dne;on.CERT_NAME=It;on.CERT_CONFIG_NAME_MAP=hne;on.CERT_PREFERENCE_APP=pne;on.CERT_PREFERENCE_OPS=Ene;on.CERT_PREFERENCE_REP=_ne;on.CA_CERT_PREFERENCE_REP=gne;on.CA_CERT_PREFERENCE_OPS=Sne;on.CA_CERT_PREFERENCE_APP=Tne;on.CERTIFICATE_VALUES=cne;on.NATS_CERTIFICATE_PEM_NAME=fne;on.NATS_CA_PEM_NAME=mne});var MI=M((fPe,GF)=>{"use strict";var HF=require("fs-extra"),Se=require("joi"),Rne=require("os"),{boolean:qe,string:_t,number:or,array:Da}=Se.types(),{totalmem:xF}=require("os"),ll=require("path"),yne=z(),DI=ie(),dPe=LI(),BF=(k(),v(K)),Ane=ct(),FF="log",bne="components",Ine="Invalid logging.rotation.maxSize unit. Available units are G, M or K",Nne="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",wne="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",One="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",Cne="rootPath config parameter is undefined",vn=Se.alternatives([or.min(0),_t]).optional().empty(null),og=Se.alternatives([Da.items(_t,{host:_t.required(),port:vn},{hostname:_t.required(),port:vn}).empty(null),Da.items(_t)]),Bi,kF=!1;GF.exports={configValidator:Pne,routesValidator:xne,routeConstraints:og};function Pne(e,t=!1){if(kF=t,Bi=e.rootPath,DI.isEmpty(Bi))throw Cne;let r=qe.optional(),n=or.min(0).max(1e3).empty(null).default(Une),s=_t.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default($m),i=_t.optional().empty(null),a=_t.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),c=Se.string().empty(null).default($m),l=Se.custom(Dne).empty(null).default($m),u=e.clustering?.enabled,d=Se.object({certificate:i,certificateAuthority:i,privateKey:i}),f;return u===!0?f=Se.object({enabled:r,hubServer:Se.object({cluster:Se.object({name:Se.required().empty(null),network:Se.object({port:vn,routes:og}).required()}).required(),leafNodes:Se.object({network:Se.object({port:vn}).required()}).required(),network:Se.object({port:vn}).required()}).required(),leafServer:Se.object({network:Se.object({port:vn,routes:og}).required(),streams:Se.object({maxAge:or.min(120).allow(null).optional(),maxBytes:or.min(1).allow(null).optional(),maxMsgs:or.min(1).allow(null).optional(),path:c}).required()}).required(),logLevel:Se.valid("error","warn","info","debug","trace"),nodeName:a,republishMessages:qe.optional(),databaseLevel:qe.optional(),tls:Se.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:qe.required(),verify:qe.optional()}),user:_t.optional().empty(null)}).optional():f=Se.object({enabled:r,tls:Se.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:qe.optional()})}).optional(),Se.object({authentication:Se.alternatives(Se.object({authorizeLocal:qe,cacheTTL:or.required(),cookie:Se.object({domains:Da.items(_t).optional(),expires:_t.optional()}),enableSessions:qe,hashFunction:_t.valid("md5","sha256","argon2id").optional().empty(null)}),qe).optional(),analytics:Se.object({aggregatePeriod:or,replicate:qe.optional()}),replication:Se.object({hostname:Se.alternatives(_t,or).optional().empty(null),url:_t.optional().empty(null),port:vn,securePort:vn,routes:Da.optional().empty(null),databases:Se.alternatives(_t,Da),enableRootCAs:qe.optional(),copyTablesToCatchUp:qe.optional()}).optional(),componentsRoot:s.optional(),clustering:f,localStudio:Se.object({enabled:r}).required(),logging:Se.object({auditAuthEvents:Se.object({logFailed:qe,logSuccessful:qe}),file:qe.required(),level:Se.valid("notify","fatal","error","warn","info","debug","trace"),rotation:Se.object({enabled:qe.optional(),compress:qe.optional(),interval:_t.custom(vne).optional().empty(null),maxSize:_t.custom(Mne).optional().empty(null),path:_t.optional().empty(null).default($m)}).required(),root:s,stdStreams:qe.required(),auditLog:qe.required()}).required(),operationsApi:Se.object({network:Se.object({cors:qe.optional(),corsAccessList:Da.optional(),headersTimeout:or.min(1).optional(),keepAliveTimeout:or.min(1).optional(),port:vn,domainSocket:Se.optional().empty("hdb/operations-server").default($m),securePort:vn,timeout:or.min(1).optional()}).optional(),tls:Se.alternatives([Se.array().items(d),d])}).required(),rootPath:_t.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").required(),mqtt:Se.object({network:Se.object({port:vn,securePort:vn,mtls:Se.alternatives([qe.optional(),Se.object({user:_t.optional(),certificateAuthority:i,required:qe.optional()})])}).required(),webSocket:qe.optional(),requireAuthentication:qe.optional()}),http:Se.object({compressionThreshold:or.optional(),cors:qe.optional(),corsAccessList:Da.optional(),headersTimeout:or.min(1).optional(),port:vn,securePort:vn,maxHeaderSize:or.optional(),mtls:Se.alternatives([qe.optional(),Se.object({user:_t.optional(),certificateAuthority:i,required:qe.optional()})]),threadRange:Se.alternatives([Da.optional(),_t.optional()])}).required(),threads:Se.alternatives(n.optional(),Se.object({count:n.optional(),debug:Se.alternatives(qe.optional(),Se.object({startingPort:or.min(1).optional(),host:_t.optional(),waitForDebugger:qe.optional()})),maxHeapMemory:or.min(0).optional()})),storage:Se.object({writeAsync:qe.required(),overlappingSync:qe.optional(),caching:qe.optional(),compression:Se.alternatives([qe.optional(),Se.object({dictionary:_t.optional(),threshold:or.optional()})]),compactOnStart:qe.optional(),compactOnStartKeepBackup:qe.optional(),noReadAhead:qe.optional(),path:l,prefetchWrites:qe.optional(),maxFreeSpaceToLoad:or.optional(),maxFreeSpaceToRetain:or.optional()}).required(),ignoreScripts:qe.optional(),tls:Se.alternatives([Se.array().items(d),d])}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}o(Pne,"configValidator");function Lne(e){return kF||HF.existsSync(e)?null:`Specified path ${e} does not exist.`}o(Lne,"doesPathExist");function Dne(e,t){Se.assert(e,_t.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=Lne(e);if(r)return t.message(r)}o(Dne,"validatePath");function Mne(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(Ine);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(wne):e}o(Mne,"validateRotationMaxSize");function vne(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(Nne);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(One):e}o(vne,"validateRotationInterval");function Une(e,t){let r=t.state.path.join("."),n=Rne.cpus().length,s=n-1;s<=2&&(s=2);let i=process.constrainedMemory?.()||xF();return i=Math.round(Math.min(i,xF())/1e6),s=Math.max(Math.min(s,Math.round((i-750)/300)),1),yne.info(`Detected ${n} cores and ${i}MB on this machine, defaulting ${r} to ${s}`),s}o(Une,"setDefaultThreads");function $m(e,t){let r=t.state.path.join(".");if(!DI.isEmpty(t.original)&&r!=="operationsApi.network.domainSocket")return t.original;if(DI.isEmpty(Bi))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"componentsRoot":return ll.join(Bi,bne);case"logging.root":return ll.join(Bi,FF);case"clustering.leafServer.streams.path":return ll.join(Bi,"clustering","leaf");case"storage.path":let n=ll.join(Bi,BF.LEGACY_DATABASES_DIR_NAME);return HF.existsSync(n)?n:ll.join(Bi,BF.DATABASES_DIR_NAME);case"logging.rotation.path":return ll.join(Bi,FF);case"operationsApi.network.domainSocket":return r==null?null:ll.join(Bi,"operations-server");default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}o($m,"setDefaultRoot");function xne(e){let t=Se.object({routes:og});return Ane.validateBySchema({routes:e},t)}o(xne,"routesValidator")});var At=M(Jt=>{"use strict";var Is=(k(),v(K)),yr=ie(),ar=z(),{configValidator:Bne,routesValidator:qF}=MI(),an=require("fs-extra"),VF=require("yaml"),Jn=require("path"),Fne=require("is-number"),KF=require("properties-reader"),Hne=require("lodash"),{handleHDBError:kne}=Ee(),{HTTP_STATUS_CODES:Gne,HDB_ERROR_MSGS:Gu}=en(),{server:qne}=(Pr(),v(Uf)),{PACKAGE_ROOT:YF}=Rt(),{DATABASES_PARAM_CONFIG:Vm,CONFIG_PARAMS:Qn,CONFIG_PARAM_MAP:si}=Is,$ne="Unable to get config value because config is uninitialized",Vne="Config successfully initialized",Kne="Error backing up config file",Yne="Empty parameter sent to getConfigValue",WF=Jn.join(YF,"config","yaml",Is.HDB_DEFAULT_CONFIG_FILE),Wne=Jn.join(YF,"config","yaml","defaultNatsConfig.yaml"),zne="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",$F={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"},ag,Ut,cg;Jt.createConfigFile=jne;Jt.getDefaultConfig=Qne;Jt.getConfigValue=jF;Jt.initConfig=lg;Jt.flattenConfig=qu;Jt.updateConfigValue=QF;Jt.updateConfigObject=Xne;Jt.getConfiguration=tse;Jt.setConfiguration=rse;Jt.readConfigFile=BI;Jt.getClusteringRoutes=nse;Jt.initOldConfig=JF;Jt.getConfigFromFile=sse;Jt.getConfigFilePath=ul;Jt.addConfig=ise;Jt.deleteConfigFromFile=ose;Jt.getConfigObj=ase;Jt.resolvePath=vI;Jt.getFlatConfigObj=cse;function vI(e){if(e?.startsWith("~/"))return Jn.join(yr.getHomeDir(),e.slice(1));let t=ce();try{return Jn.resolve(t.getHdbBasePath(),e)}catch(r){return console.error("Unable to resolve path",e,r),e}}o(vI,"resolvePath");function jne(e,t=!1){let r=Ma(WF);if(e.clustering_enabled||e.CLUSTERING_ENABLED||e.clustering){let c=VF.parseDocument(an.readFileSync(Wne,"utf8"),{simpleKeys:!0});r.addIn(["clustering"],c.toJSON().clustering)}ag=qu(r.toJSON());let n;for(let c in e){let l=si[c.toLowerCase()];if(l===Qn.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("_"),d=UI(l,e[c]);l==="rootPath"&&d?.endsWith("/")&&(d=d.slice(0,-1));try{r.setIn([...u],d)}catch(f){ar.error(f)}}}n&&zF(r,n),xI(r,t);let s=r.toJSON();Ut=qu(s);let i=r.getIn(["rootPath"]),a=Jn.join(i,Is.HDB_CONFIG_FILE);if(an.createFileSync(a),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);an.writeFileSync(a,String(r)),ar.trace(`Config file written to ${a}`)}o(jne,"createConfigFile");function zF(e,t){let r;try{try{r=JSON.parse(t)}catch(n){if(!yr.isObject(t))throw n;r=t}for(let n of r){let s=Object.keys(n)[0];if(n[s].hasOwnProperty(Vm.TABLES))for(let i in n[s][Vm.TABLES])for(let a in n[s][Vm.TABLES][i]){let c=n[s][Vm.TABLES][i][a],l=[Qn.DATABASES,s,Vm.TABLES,i,a];e.hasIn(l)?e.setIn(l,c):e.addIn(l,c)}else for(let i in n[s]){let a=n[s][i],c=[Qn.DATABASES,s,i];e.hasIn(c)?e.setIn(c,a):e.addIn(c,a)}}}catch(n){ar.error("Error parsing schemas CLI/env config arguments",n)}}o(zF,"setSchemasConfig");function Qne(e){if(ag===void 0){let r=Ma(WF);ag=qu(r.toJSON())}let t=si[e.toLowerCase()];if(t!==void 0)return ag[t.toLowerCase()]}o(Qne,"getDefaultConfig");function jF(e){if(e==null){ar.info(Yne);return}if(Ut===void 0){ar.trace($ne);return}let t=si[e.toLowerCase()];if(t!==void 0)return Ut[t.toLowerCase()]}o(jF,"getConfigValue");function ul(e=yr.getPropsFilePath()){let t=yr.getEnvCliRootPath();if(t)return vI(Jn.join(t,Is.HDB_CONFIG_FILE));let r=KF(e);return vI(r.get(Is.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY))}o(ul,"getConfigFilePath");function lg(e=!1){if(Ut===void 0||e){let t;if(!yr.noBootFile()){t=yr.getPropsFilePath();try{an.accessSync(t,an.constants.F_OK|an.constants.R_OK)}catch(i){throw ar.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}}let r=ul(t),n;if(r.includes("config/settings.js"))try{JF(r);return}catch(i){if(i.code!==Is.NODE_ERROR_CODES.ENOENT)throw i}try{n=Ma(r)}catch(i){if(i.code===Is.NODE_ERROR_CODES.ENOENT){ar.trace(`HarperDB config file not found at ${r}.
|
|
14
14
|
This can occur during early stages of install where the config file has not yet been created`);return}else throw ar.error(i),new Error(`Error reading HarperDB config file at ${r}`)}Jne(n,r),xI(n);let s=n.toJSON();if(qne.config=s,Ut=qu(s),Ut.logging_rotation_rotate)for(let i in $F)Ut[i]&&ar.error(`Config ${$F[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);ar.trace(Vne)}}o(lg,"initConfig");function Jne(e,t){let r=e.getIn(["rootPath"]),n=!1;if(e.hasIn(["storage","path"])||(e.setIn(["storage","path"],Jn.join(r,"database")),n=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],Jn.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,replicate:!1}),n=!0),n){if(ar.trace("Updating config file with missing config params"),e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${e.errors}`);an.writeFileSync(t,String(e))}}o(Jne,"checkForUpdatedConfig");function xI(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 Gu.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 Gu.CONFIG_VALIDATION("operationsApi.network.port and operationsApi.network.securePort cannot be the same value");let n=Bne(r,t);if(n.error)throw Gu.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)}o(xI,"validateConfig");function Xne(e,t){Ut===void 0&&(Ut={});let r=si[e.toLowerCase()];if(r===void 0){ar.trace(`Unable to update config object because config param '${e}' does not exist`);return}Ut[r.toLowerCase()]=t}o(Xne,"updateConfigObject");function QF(e,t,r=void 0,n=!1,s=!1,i=!1){Ut===void 0&&lg();let a=jF(si.hdb_root),c=Jn.join(a,Is.HDB_CONFIG_FILE),l=Ma(c),u;if(r&&Ut){let m=!1;for(let h in r)if(r[h]!=Ut[h.toLowerCase()]){m=!0;break}if(!m){ar.trace("No changes detected in config parameters, skipping update");return}}if(r===void 0&&e.toLowerCase()===Qn.DATABASES)u=t;else if(r===void 0){let m;if(i)m=e;else if(m=si[e.toLowerCase()],m===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let h=m.split("_"),p=UI(m,t);l.setIn([...h],p)}else for(let m in r){let h=si[m.toLowerCase()];if(h===Qn.HTTP_SECUREPORT&&r[m]===Ut[Qn.HTTP_PORT]?.toString()&&l.setIn(["http","port"],null),h===Qn.OPERATIONSAPI_NETWORK_SECUREPORT&&r[m]===Ut[Qn.OPERATIONSAPI_NETWORK_PORT.toLowerCase()]?.toString()&&l.setIn(["operationsApi","network","port"],null),h===Qn.DATABASES){u=r[m];continue}if(h?.startsWith("threads_")){let p=l.getIn(["threads"]);p>=0&&(l.deleteIn(["threads"]),l.setIn(["threads","count"],p))}if(!h&&(m.endsWith("_package")||m.endsWith("_port"))&&(h=m),h!==void 0){let p=h.split("_"),_=Is.LEGACY_CONFIG_PARAMS[m.toUpperCase()];_&&_.startsWith("customFunctions")&&l.hasIn(_.split("_"))&&(h=_,p=_.split("_"));let g=UI(h,r[m]);h==="rootPath"&&g?.endsWith("/")&&(g=g.slice(0,-1));try{p.length>1&&typeof l.getIn(p.slice(0,-1))=="boolean"&&l.deleteIn(p.slice(0,-1)),l.setIn([...p],g)}catch(y){ar.error(y)}}}u&&zF(l,u),xI(l);let d=l.getIn(["rootPath"]),f=Jn.join(d,Is.HDB_CONFIG_FILE);if(n===!0&&Zne(c,d),l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${l.errors}`);an.writeFileSync(f,String(l)),s&&(Ut=qu(l.toJSON())),ar.trace(`Config parameter: ${e} updated with value: ${t}`)}o(QF,"updateConfigValue");function Zne(e,t){try{let r=Jn.join(t,"backup",`${new Date(Date.now()).toISOString().replaceAll(":","-")}-${Is.HDB_CONFIG_FILE}.bak`);an.copySync(e,r),ar.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){ar.error(Kne),ar.error(r)}}o(Zne,"backupConfigFile");var ese=["databases"];function qu(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}),cg=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])&&!ese.includes(i)){let a=r(n[i]);for(let c in a){if(!a.hasOwnProperty(c))continue;c!=="package"&&(i=i.toLowerCase());let l=i+"_"+c;!Qn[l.toUpperCase()]&&si[l]&&(s[si[l].toLowerCase()]=a[c]),s[l]=a[c]}}n[i]!==void 0&&(s[i.toLowerCase()]=n[i])}return s}o(r,"squashObj")}o(qu,"flattenConfig");function UI(e,t){if(e===Qn.CLUSTERING_NODENAME||e===Qn.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(Fne(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||yr.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 yr.autoCast(t)}o(UI,"castConfigValue");function tse(){let e=yr.getPropsFilePath(),t=ul(e);return Ma(t).toJSON()}o(tse,"getConfiguration");async function rse(e){let{operation:t,hdb_user:r,hdbAuthHeader:n,...s}=e;try{return QF(void 0,void 0,s,!0),zne}catch(i){throw typeof i=="string"||i instanceof String?kne(i,i,Gne.BAD_REQUEST,void 0,void 0,!0):i}}o(rse,"setConfiguration");function BI(){let e=yr.getPropsFilePath();try{an.accessSync(e,an.constants.F_OK|an.constants.R_OK)}catch(n){if(!yr.noBootFile())throw ar.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=ul(e);return Ma(t).toJSON()}o(BI,"readConfigFile");function Ma(e){return VF.parseDocument(an.readFileSync(e,"utf8"),{simpleKeys:!0})}o(Ma,"parseYamlDoc");function nse(){let e=BI(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=yr.isEmptyOrZeroLength(t)?[]:t;let r=qF(t);if(r)throw Gu.CONFIG_VALIDATION(r.message);let n=e?.clustering?.leafServer?.network?.routes;n=yr.isEmptyOrZeroLength(n)?[]:n;let s=qF(n);if(s)throw Gu.CONFIG_VALIDATION(s.message);if(!yr.isEmptyOrZeroLength(n)&&!yr.isEmptyOrZeroLength(t)){let i=t.filter(a=>n.some(c=>c.host===a.host&&c.port===a.port));if(!yr.isEmptyOrZeroLength(i)){let a=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw Gu.CONFIG_VALIDATION(a)}}return{hub_routes:t,leaf_routes:n}}o(nse,"getClusteringRoutes");function JF(e){let t=KF(e);Ut={};for(let r in si){let n=t.get(r.toUpperCase());if(yr.isEmpty(n)||typeof n=="string"&&n.trim().length===0)continue;let s=si[r].toLowerCase();s===Qn.LOGGING_ROOT?Ut[s]=Jn.dirname(n):Ut[s]=n}return Ut}o(JF,"initOldConfig");function sse(e){let t=BI();return Hne.get(t,e.replaceAll("_","."))}o(sse,"getConfigFromFile");async function ise(e,t){let r=Ma(ul());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 an.writeFile(ul(),String(r))}o(ise,"addConfig");function ose(e){let t=ul(yr.getPropsFilePath()),r=Ma(t);r.deleteIn(e);let n=r.getIn(["rootPath"]),s=Jn.join(n,Is.HDB_CONFIG_FILE);an.writeFileSync(s,String(r))}o(ose,"deleteConfigFromFile");function ase(){return cg||(lg(),cg)}o(ase,"getConfigObj");function cse(){return Ut||lg(),Ut}o(cse,"getFlatConfigObj")});var Xn=M((EPe,vr)=>{"use strict";var eH="username is required",tH="nothing to update, must supply active, role or password to update",rH="password cannot be an empty string",nH="If role is specified, it cannot be empty.",sH="active must be true or false";vr.exports.addUser=_se;vr.exports.alterUser=gse;vr.exports.dropUser=Tse;vr.exports.getSuperUser=Ise;vr.exports.userInfo=Rse;vr.exports.listUsers=dg;vr.exports.listUsersExternal=yse;vr.exports.setUsersWithRolesCache=dl;vr.exports.findAndValidateUser=YI;vr.exports.getClusterUser=Nse;vr.exports.getUsersWithRolesCache=bse;vr.exports.USERNAME_REQUIRED=eH;vr.exports.ALTERUSER_NOTHING_TO_UPDATE=tH;vr.exports.EMPTY_PASSWORD=rH;vr.exports.EMPTY_ROLE=nH;vr.exports.ACTIVE_BOOLEAN=sH;var iH=Mn(),lse=cl(),Km=(ig(),v(sg)),oH=MF(),Ym=nn(),qI=Ao(),Fi=ie(),aH=require("validate.js"),$I=z(),{promisify:use}=require("util"),VI=xi(),HI=(k(),v(K)),XF=bt(),dse=At(),fse=ce(),mse=To(),{hdbErrors:hse,ClientError:ii}=Ee(),{HTTP_STATUS_CODES:wo,AUTHENTICATION_ERROR_MSGS:FI,HDB_ERROR_MSGS:$u}=hse,{UserEventMsg:KI}=ei(),kI=require("lodash"),{server:ug}=(Pr(),v(Uf)),pse=z();ug.getUser=(e,t)=>YI(e,t,t!=null);ug.authenticateUser=(e,t)=>YI(e,t);var cH={username:!0,active:!0,role:!0,password:!0},ZF=new Map,Ese=use(lse.delete),GI=fse.get(HI.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??Km.HASH_FUNCTION.SHA256,Hi;async function _se(e){let t=aH.cleanAttributes(e,cH),r=oH.addUserValidation(t);if(r)throw new ii(r.message);let n=await Ym.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 ii($u.ROLE_NAME_NOT_FOUND(t.role),wo.NOT_FOUND);if(n.length>1)throw new ii($u.DUP_ROLES_FOUND(t.role),wo.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=VI.encrypt(t.password)),t.password=await Km.hash(t.password,GI),t.hash_function=GI,t.role=n[0].id;let s=await iH.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if($I.debug(s),await dl(),s.skipped_hashes.length===1)throw new ii($u.USER_ALREADY_EXISTS(t.username),wo.CONFLICT);return qI.signalUserChange(new KI(process.pid)),`${t.username} successfully added`}o(_se,"addUser");async function gse(e){let t=aH.cleanAttributes(e,cH);if(Fi.isEmptyOrZeroLength(t.username))throw new Error(eH);if(Fi.isEmptyOrZeroLength(t.password)&&Fi.isEmptyOrZeroLength(t.role)&&Fi.isEmptyOrZeroLength(t.active))throw new Error(tH);if(!Fi.isEmpty(t.password)&&Fi.isEmptyOrZeroLength(t.password.trim()))throw new Error(rH);if(!Fi.isEmpty(t.active)&&!Fi.isBoolean(t.active))throw new Error(sH);if(!Fi.isEmpty(t.password)&&!Fi.isEmptyOrZeroLength(t.password.trim())&&(Sse(t.username)&&(t.hash=VI.encrypt(t.password)),t.password=await Km.hash(t.password,GI)),t.role==="")throw new Error(nH);if(t.role){let n=await Ym.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new ii($u.ALTER_USER_ROLE_NOT_FOUND(t.role),wo.NOT_FOUND);if(n.length>1)throw new ii($u.DUP_ROLES_FOUND(t.role),wo.CONFLICT);t.role=n[0].id}let r=await iH.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await dl(),qI.signalUserChange(new KI(process.pid)),r}o(gse,"alterUser");function Sse(e){let t=!1,r=Hi.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}o(Sse,"isClusterUser");async function Tse(e){let t=oH.dropUserValidation(e);if(t)throw new ii(t.message);if(Hi.get(e.username)===void 0)throw new ii($u.USER_NOT_EXIST(e.username),wo.NOT_FOUND);let r=await Ese({table:"hdb_user",schema:"system",hash_values:[e.username]});return $I.debug(r),await dl(),qI.signalUserChange(new KI(process.pid)),`${e.username} successfully deleted`}o(Tse,"dropUser");async function Rse(e){let t={};if(!e||!e.hdb_user)return"There was no user info in the body";t=kI.cloneDeep(e.hdb_user);let r=await Ym.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}o(Rse,"userInfo");async function yse(){let e=await dg();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}o(yse,"listUsersExternal");async function dg(){let e=await Ym.searchByValue({schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=kI.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await Ym.searchByValue({schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=kI.cloneDeep(s),s.role=t[s.role],Ase(s.role),n.set(s.username,s);return n}o(dg,"listUsers");function Ase(e){if(!e){$I.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(mse)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}o(Ase,"appendSystemTablesToRole");async function dl(e=void 0){e?Hi=e:Hi=await dg()}o(dl,"setUsersWithRolesCache");async function bse(){return Hi||await dl(),Hi}o(bse,"getUsersWithRolesCache");async function YI(e,t,r=!0){Hi||await dl();let n=Hi.get(e);if(!n){if(!r)return{username:e};throw new ii(FI.GENERIC_AUTH_FAIL,wo.UNAUTHORIZED)}if(n&&!n.active)throw new ii(FI.USER_INACTIVE,wo.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(ZF.get(t)===n.password)return s;{let i=Km.validate(n.password,t,n.hash_function||Km.HASH_FUNCTION.MD5);if(i?.then&&(i=await i),i===!0)ZF.set(t,n.password);else throw new ii(FI.GENERIC_AUTH_FAIL,wo.UNAUTHORIZED)}}return s}o(YI,"findAndValidateUser");async function Ise(){Hi||await dl();for(let[,e]of Hi)if(e.role.role==="super_user")return e}o(Ise,"getSuperUser");async function Nse(){let e=await dg(),t=dse.getConfigFromFile(HI.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!(r==null||r?.role?.role!==HI.ROLE_TYPES_ENUM.CLUSTER_USER))return r.decrypt_hash=VI.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+XF.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+XF.SERVER_SUFFIX.ADMIN,r}o(Nse,"getClusterUser");var lH=[];ug.invalidateUser=function(e){for(let t of lH)try{t(e)}catch(r){pse.error("Error invalidating user",r)}};ug.onInvalidatedUser=function(e){lH.push(e)}});var zm=M((TPe,mH)=>{"use strict";var fl=z(),Zn=(k(),v(K)),wse=UU(),gPe=Zs(),SPe=Ca(),Ose=Xn(),{validateEvent:uH}=ei(),Wm=zn(),Cse=require("process"),{resetDatabases:Pse}=(Le(),v(ft)),Lse={[Zn.ITC_EVENT_TYPES.SCHEMA]:Dse,[Zn.ITC_EVENT_TYPES.USER]:fH};async function Dse(e){let t=uH(e);if(t){fl.error(t);return}fl.trace("ITC schemaHandler received schema event:",e),await wse(e.message),await Mse(e.message)}o(Dse,"schemaHandler");async function Mse(e){try{Wm.resetReadTxn(Zn.SYSTEM_SCHEMA_NAME,Zn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),Wm.resetReadTxn(Zn.SYSTEM_SCHEMA_NAME,Zn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),Wm.resetReadTxn(Zn.SYSTEM_SCHEMA_NAME,Zn.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=Pse();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){fl.error(t)}}o(Mse,"syncSchemaMetadata");var dH=[];async function fH(e){try{try{Wm.resetReadTxn(Zn.SYSTEM_SCHEMA_NAME,Zn.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),Wm.resetReadTxn(Zn.SYSTEM_SCHEMA_NAME,Zn.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){fl.warn(r)}let t=uH(e);if(t){fl.error(t);return}fl.trace(`ITC userHandler ${Zn.HDB_ITC_CLIENT_PREFIX}${Cse.pid} received user event:`,e),await Ose.setUsersWithRolesCache();for(let r of dH)r()}catch(t){fl.error(t)}}o(fH,"userHandler");fH.addListener=function(e){dH.push(e)};mH.exports=Lse});var ei=M((NPe,pH)=>{"use strict";var yPe=z(),WI=ie(),vse=(k(),v(K)),{ITC_ERRORS:jm}=en(),{parentPort:APe,threadId:Use,isMainThread:xse,workerData:bPe}=require("worker_threads"),{onMessageFromWorkers:Bse,broadcast:IPe,broadcastWithAcknowledgement:Fse}=st();pH.exports={sendItcEvent:Hse,validateEvent:hH,SchemaEventMsg:kse,UserEventMsg:Gse};var fg;Bse(async(e,t)=>{fg=fg||zm(),hH(e),fg[e.type]&&await fg[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function Hse(e){return!xse&&e.message&&(e.message.originator=Use),Fse(e)}o(Hse,"sendItcEvent");function hH(e){if(typeof e!="object")return jm.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||WI.isEmpty(e.type))return jm.MISSING_TYPE;if(!e.hasOwnProperty("message")||WI.isEmpty(e.message))return jm.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||WI.isEmpty(e.message.originator))return jm.MISSING_ORIGIN;if(vse.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return jm.INVALID_EVENT(e.type)}o(hH,"validateEvent");function kse(e,t,r,n=void 0,s=void 0){this.originator=e,this.operation=t,this.schema=r,this.table=n,this.attribute=s}o(kse,"SchemaEventMsg");function Gse(e){this.originator=e}o(Gse,"UserEventMsg")});var Ao=M((CPe,SH)=>{"use strict";var EH=(k(),v(K)),OPe=ie(),mg=z(),_H=_U(),Vu,{sendItcEvent:gH}=ei();function qse(e){try{mg.info("signalSchemaChange called with message:",e),Vu=Vu||zm();let t=new _H(EH.ITC_EVENT_TYPES.SCHEMA,e);return Vu.schema(t),gH(t)}catch(t){mg.error(t)}}o(qse,"signalSchemaChange");function $se(e){try{mg.trace("signalUserChange called with message:",e),Vu=Vu||zm();let t=new _H(EH.ITC_EVENT_TYPES.USER,e);return Vu.user(t),gH(t)}catch(t){mg.error(t)}}o($se,"signalUserChange");SH.exports={signalSchemaChange:qse,signalUserChange:$se}});function hg(){return zI||(zI=et({table:"hdb_analytics_hostname",database:"system",attributes:[{name:"id",isPrimaryKey:!0},{name:"hostname"}]})),zI}function Kse(e){return e=e.replace(Vse,t=>{let[r,n,s,i]=t.split(".").map(a=>parseInt(a));return(r<<8|n).toString(16)+":"+(s<<8|i).toString(16)}),e=e.replace("::",":".repeat(10-e.split(":").length)),e.toLowerCase().split(":").map(t=>t.padStart(4,"0")).join(":")}function Yse(e){if(e.length!==4)throw new Error(`nodeHash must be exactly 4 bytes (32 bits); got ${e.length} bytes`);return e[0]<<24|e[1]<<16|e[2]<<8|e[3]}function QI(e){let t=TH.default.createHash("shake128",{outputLength:4}),r;return(0,RH.isIPv6)(e)?r=Kse(e):r=e.toLowerCase(),Yse(Uint8Array.from(t.update(r).digest()))}var TH,RH,jI,zI,Vse,JI=fe(()=>{Le();TH=w(require("crypto")),RH=require("node:net"),jI=new Map;o(hg,"getAnalyticsHostnameTable");Vse=/(\d{1,3}\.){3}\d{1,3}$/;o(Kse,"normalizeIPv6");o(Yse,"nodeHashToNumber");o(QI,"stableNodeId")});var Oo,XI=fe(()=>{Oo={TABLE_SIZE:"table-size",DATABASE_SIZE:"database-size",STORAGE_VOLUME:"storage-volume",MAIN_THREAD_UTILIZATION:"main-thread-utilization",RESOURCE_USAGE:"resource-usage",UTILIZATION:"utilization"}});var Sg={};Ce(Sg,{addAnalyticsListener:()=>Xm,calculateCPUUtilization:()=>FH,diffResourceUsage:()=>HH,recordAction:()=>gt,recordActionBinary:()=>Kr,recordHostname:()=>tN,setAnalyticsEnabled:()=>Wse});function Wse(e){MH=e}function zse(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 jse(e,t,r,n,s,i){let a={};if(typeof t=="number")a.total=t,a.values=new Float32Array(4),a.values.index=1,a.values[0]=t,a.total=t;else if(typeof t=="boolean")a.total=t?1:0,a.count=1;else if(typeof t=="function")a.count=1,a.callback=t;else throw new TypeError("Invalid metric value type "+typeof t);a.description={metric:r,path:n,method:s,type:i},_g.set(e,a)}function gt(e,t,r,n,s){if(!MH)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let a=_g.get(i);a?zse(e,a):jse(i,e,t,r,n,s),Eg||Qse()}function Kr(e,t,r,n,s){gt(!!e,t,r,n,s)}function Xm(e){xH.push(e)}function Qse(){Eg=performance.now(),setTimeout(async()=>{let e=performance.now()-Eg;Eg=0;let t=[],r={time:Date.now(),period:e,threadId:ml.threadId,metrics:t};for(let[s,i]of _g){if(i.values){let a=i.values.subarray(0,i.values.index);a.sort();let c=a.length,l=0,u=[],d;for(let f of BH){let m=Math.floor(c*f),h=a[m-1];if(m>l){let p=m-l;if(h===d){let _=u[u.length-1];typeof _=="number"?u[u.length-1]={value:_,count:1+p}:_.count+=p}else u.push(p>1?{value:h,count:p}:h),d=h;l=m}}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 kH()}let n=process.memoryUsage();t.push({metric:"memory",threadId:ml.threadId,byThread:!0,...n});for(let s of xH)s(t);_g=new Map,ml.parentPort?ml.parentPort.postMessage({type:UH,report:r}):$H({report:r})},vH).unref()}async function tN(){let e=ve.hostname;Vr.trace?.("recordHostname server.hostname:",e);let t=QI(e);Vr.trace?.("recordHostname nodeId:",t);let r=hg();if(!await r.get(t)){let s={id:t,hostname:e};Vr.trace?.(`recordHostname storing hostname: ${JSON.stringify(s)}`),r.put(s.id,s)}}function Ku(e,t){let r=ve.hostname,n=jI.get(r);n?Vr.trace?.("storeMetric cached nodeId:",n):(n=QI(r),Vr.trace?.("storeMetric new nodeId:",n),jI.set(r,n));let s={id:[(0,eN.getNextMonotonicTime)(),n],...t};Vr.trace?.(`storing metric ${JSON.stringify(s)}`),e.put(s.id,s)}function FH(e,t){let r=e.userCPUTime+e.systemCPUTime;return Vr.trace?.(`calculateCPUUtilization cpuTime: ${r} period: ${t}`),Math.round(r/t*100)/100}function HH(e,t){return{userCPUTime:t.userCPUTime-(e?.userCPUTime??0),systemCPUTime:t.systemCPUTime-(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 Jse(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let a=`${t}.${s}`,c=i.getSize(),l={metric:Oo.TABLE_SIZE,database:t,table:s,size:c};Vr.trace?.(`table ${a} size metric: ${JSON.stringify(l)}`),Ku(e,l),n+=c}return n}function yH(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let a=DH.statSync(s.primaryStore.env.path).size,c=Jse(e,r,n),l=a-c,u={metric:Oo.DATABASE_SIZE,database:r,size:a,used:c,free:l,audit:i};Ku(e,u),Vr.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){Vr.warn?.("Error getting DB size metrics",s)}}function AH(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let a={metric:Oo.STORAGE_VOLUME,database:r,...i};Ku(e,a),Vr.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(a)}`)}catch(s){Vr.warn?.("Error getting DB volume metrics",s)}}async function Xse(e,t=6e4){let r=rN(),n=GH(),s=new Promise(R=>{let I=performance.now();setImmediate(()=>{let P=performance.now();P-I>5e3&&Vr.warn?.("Unusually high event queue latency on the main thread of "+Math.round(P-I)+"ms"),I=performance.now()}),n.primaryStore.prefetch([1],()=>{let P=performance.now();P-I>5e3&&Vr.warn?.("Unusually high task queue latency on the main thread of "+Math.round(P-I)+"ms"),R(P-I)})}),i;for(let R of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(R.value?.time){i=R.value.time;break}if(Date.now()-t<i)return;let a,c=new Map,l=new Map,u=[],d;for(let{key:R,value:I}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!I)continue;if(a){if(R>a+t)break}else a=R;d=R;let{metrics:P,threadId:Y}=I;for(let te of P||[]){let{path:x,method:$,type:j,metric:V,count:le,total:re,distribution:se,threads:_e,...Ne}=te;le||(le=1);let Fe=V+(x?"-"+x:"");$!==void 0&&(Fe+="-"+$),j!==void 0&&(Fe+="-"+j);let He=c.get(Fe);if(He){if(He.threads){let pt=He.threads[Y];if(pt)He=pt;else{He.threads[Y]={...Ne};continue}}He.count||(He.count=1);let _r=He.count;for(let pt in Ne){let gr=Ne[pt];typeof gr=="number"&&(He[pt]=(He[pt]*_r+gr*le)/(_r+le))}He.count+=le,re>=0&&(He.total+=re,He.ratio=He.total/He.count)}else He={period:t,...te},delete He.distribution,c.set(Fe,He),He.byThread&&(He.threads=[],He.threads[Y]={...Ne},u.push(He));if(se){se=se.map(pt=>typeof pt=="number"?{value:pt,count:1}:pt);let _r=l.get(Fe);_r?_r.push(...se):l.set(Fe,se)}}await kH()}for(let R of u){let{path:I,method:P,type:Y,metric:te,count:x,total:$,distribution:j,threads:V,...le}=R;V=V.filter(re=>re);for(let re in le){if(typeof R[re]!="number")continue;let se=0;for(let _e of V){let Ne=_e[re];typeof Ne=="number"&&(se+=Ne)}R[re]=se}R.count=V.length,delete R.threads,delete R.byThread}for(let[R,I]of l){let P=c.get(R);I.sort((pt,gr)=>pt.value>gr.value?1:-1);let Y=P.count-1,te=[],x=0,$=0,j;for(let pt of BH){let gr=Y*pt;for(;x<gr;)j=I[$++],x+=j.count,$===1&&x--;let wr=I[$>1?$-2:0];j||(j=I[0]),te.push(j.value-(j.value-wr.value)*(x-gr)/j.count)}let[V,le,re,se,_e,Ne,Fe,He,_r]=te;Object.assign(P,{p1:V,p10:le,p25:re,median:se,p75:_e,p90:Ne,p95:Fe,p99:He,p999:_r})}let f;for(let[,R]of c)R.time=d,Ku(n,R),f=!0;let m=Date.now(),{idle:h,active:p}=performance.eventLoopUtilization();if(f||p*10>h){let R={metric:Oo.MAIN_THREAD_UTILIZATION,idle:h-bH,active:p-IH,taskQueueLatency:await s,time:m,...process.memoryUsage()};Ku(n,R)}bH=h,IH=p;let _=process.resourceUsage();_.time=m,_.userCPUTime=_.userCPUTime/1e3,_.systemCPUTime=_.systemCPUTime/1e3,Vr.trace?.(`process.resourceUsage: ${JSON.stringify(_)}`);let g=HH(pg,_);Vr.trace?.(`diffed resourceUsage: ${JSON.stringify(g)}`),g.time=m,g.period=pg.time?m-pg.time:t,g.cpuUtilization=FH(g,g.period);let y={metric:Oo.RESOURCE_USAGE,...g};Ku(n,y),pg=_;let T=it();yH(n,T),yH(n,{system:T.system}),AH(n,T),AH(n,{system:T.system})}async function NH(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function rN(){return wH||(wH=et({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function GH(){return OH||(OH=et({table:"hdb_analytics",database:"system",audit:!0,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function tie(){qH=!0;let e=(0,Jm.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await Xse(vH,e),await NH(rN(),Zse),await NH(GH(),eie)},Math.min(e/2,2147483647)).unref()}function $H(e,t){let r=e.report;r.threadId=t?.threadId||ml.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(CH+=n.mean*n.count);r.totalBytesProcessed=CH,t&&(r.metrics.push({metric:Oo.UTILIZATION,...t.performance.eventLoopUtilization(PH.get(t))}),PH.set(t,t.performance.eventLoopUtilization())),r.id=(0,eN.getNextMonotonicTime)(),rN().primaryStore.put(r.id,r),qH||tie(),rie&&(VH=sie(r))}async function sie(e){if(await VH,!va){let r=(0,Qm.dirname)((0,gg.getLogFilePath)());try{va=await(0,ZI.open)((0,Qm.join)(r,"analytics.log"),"r+")}catch{va=await(0,ZI.open)((0,Qm.join)(r,"analytics.log"),"w+")}}let t=(await va.stat()).size;if(t>nie){let r=Buffer.alloc(t);await va.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await va.write(r,{position:0}),await va.truncate(r.length),t=r.length}await va.write(JSON.stringify(e)+`
|