harperdb 4.7.27 → 4.7.28

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/bin/lite.js CHANGED
@@ -7,7 +7,7 @@ var o5=Object.create;var hm=Object.defineProperty;var a5=Object.getOwnPropertyDe
7
7
 
8
8
  `:`data: ${e}
9
9
 
10
- `},"serialize"),compressible:!1,q:.8});_n.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()}});Mx={type:"application/json",serializeStream:Dm,serialize:vm,deserialize:fZ,q:.5};_n.set("*/*",Mx);_n.set("",Mx);a(fZ,"tryJSONParse");a(Um,"registerContentHandlers");mZ=(0,Dx.default)(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=K_(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&o.serializeStream){if(l.mapError){let d=l.getColumns;l=l.mapError(f=>(f.toJSON=()=>({error:f.name,message:f.message,...f.partialObject}),f)),l.getColumns=d}u=o.serializeStream}else u=o.serialize;return u(l,{headers:{set:a((d,f)=>{s.header(d,f)},"set")}})})}),r()},{name:"content-type-negotiation"});a(K_,"findBestSerializer");Cx=V_.default.get(U.HTTP_COMPRESSIONTHRESHOLD);a(xm,"serialize");a(Yo,"serializeMessage");a(HA,"asyncSerialization");a(GA,"hasAsyncSerialization");a(pZ,"streamToBuffer");hZ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(EZ,"isBufferEncoding");a(_Z,"parseContentType");a(Wo,"getDeserializer");a(gZ,"deserializerUnknownType");a(SZ,"transformIterable");a($_,"toCsvStream")});var Z_={};Re(Z_,{Blob:()=>Us,blobsWereEncoded:()=>cl,cleanupOrphans:()=>vZ,databasePaths:()=>$A,decodeBlobsWithWrites:()=>X_,decodeFromDatabase:()=>Qo,decodeWithBlobCallback:()=>Hm,deleteBlob:()=>z_,deleteBlobsInObject:()=>Za,deleteRootBlobPathsForDB:()=>YA,encodeBlobsAsBuffers:()=>PZ,encodeBlobsWithFilePath:()=>J_,findBlobsInObject:()=>al,getFileId:()=>Q_,getFilePathForBlob:()=>Kx,getRootBlobPathsForDB:()=>ju,isSaving:()=>AZ,saveBlob:()=>km,setDeletionDelay:()=>bZ,startPreCommitBlobsForRecord:()=>WA});function $x(){}function z_(e){let t=Kx(e);t&&setTimeout(()=>{(0,Ve.unlink)(t,r=>{r&&vt.default.debug?.("Error trying to remove blob file",r)})},Vx)}function bZ(e){Vx=e}function km(e,t=!1){let r=$r.get(e);if(!r)r={storageIndex:0,fileId:null,store:xn},$r.set(e,r);else{if(r.fileId)return r;r.store=xn}return r.deleteOnFailure=t,wZ(r),r.source?qA(e,r.source,r):r.contentBuffer?IZ(e,r):qA(e,Xa.Readable.from(e.stream()),r),r}function qA(e,t,r){let{filePath:n,fileId:s,store:i,compress:o,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,Ve.createWriteStream)(n,{autoClose:!1,flags:"w"}),m=!1;e.size!==void 0&&(f.write(h(e.size)),m=!0);let p;o?(m||f.write(yZ),p=(0,j_.createDeflate)(),(0,Xa.pipeline)(t,p,f,E)):(m||f.write(TZ),(0,Xa.pipeline)(t,f,E));function h(_){let R=BigInt(_),S=new Uint8Array(Or),y=new DataView(S.buffer);return R|=BigInt(o?KA:qx)<<48n,y.setBigInt64(0,R),S}a(h,"createHeader");function E(_){let R=f.fd;if(_){if(i.unlock(d,0),R&&((0,Ve.close)(R),f.fd=null),r.deleteOnFailure)(0,Ve.unlink)(n,S=>{S&&vt.default.debug?.("Error while deleting aborted blob file",S)});else try{if((0,Ve.statSync)(n).size===0){let S=Buffer.from(_.toString());(0,Ve.writeFile)(n,Buffer.concat([h(BigInt(S.length)+0xff000000000000n),S]),y=>{y&&vt.default.debug?.("Error write error message to blob file",y)})}}catch(S){vt.default.debug?.("Error checking blob file after abort",S)}u(_)}else{if(!m){m=!0;let S=p?p.bytesWritten:f.bytesWritten-Or;e.size=S,(0,Ve.write)(R,h(S),0,Or,0,E);return}i.unlock(d,0),c?(0,Ve.fdatasync)(R,S=>{S&&u(S),l(),(0,Ve.close)(R),f.fd=null}):(l(),(0,Ve.close)(R),f.fd=null)}}a(E,"finished")}),e}function Q_(e){return $r.get(e)?.fileId}function AZ(e){return $r.get(e)?.saving}function Kx(e){let t=$r.get(e);return t?.fileId&&Wu(t)}function ju(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=$A.get(e);if(!t){if(!e.databaseName)return vt.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,Fm.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,Yi.join)(n,e.databaseName)):t=[(0,Yi.join)((0,Fm.getHdbBasePath)(),"blobs",e.databaseName)],$A.set(e,t)}return t}async function YA(e){let t=ju(e);t&&await Promise.all(t.map(r=>Yx(r)))}async function Yx(e){if((0,Ve.existsSync)(e)){for(let t of await(0,Bn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await Yx((0,Yi.join)(e,t.name));else try{await(0,Bn.unlink)((0,Yi.join)(e,t.name))}catch(r){vt.default.warn?.("Error deleting file",r)}try{await(0,Bn.rmdir)(e)}catch(t){vt.default.warn?.("Error deleting directory",t)}}}function Wu({storageIndex:e,fileId:t,store:r}){let n=ju(r);return(0,Yi.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 IZ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<Gx))return e.size=n,qA(e,Xa.Readable.from([r]),t)}function wZ(e){let t=ju(e.store),r=NZ(),n=t?.length>1?CZ(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Wu(e),o=(0,Yi.dirname)(i);(0,Ve.existsSync)(o)||(0,VA.ensureDirSync)(o),e.filePath=i}function NZ(){let e=kx.get(xn);if(!e){let t=0,r=ju(xn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Ve.existsSync)(n))for(let c of(0,Ve.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>o&&(o=l)}s+=o,n=(0,Yi.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(xn.getUserSharedBuffer("blob-file-id",e.buffer)),kx.set(xn,e)}return Number(Atomics.add(e,0,1n))}function CZ(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(W_);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,OZ(e)),e.frequencyTable[t%W_]}async function OZ(e){if(!Bn.statfs)return;let t=await Promise.all(e.map(async s=>{let i;try{i=await(0,Bn.statfs)(s)}catch(c){if(c.code!=="ENOENT")throw c;(0,VA.ensureDirSync)(s),i=await(0,Bn.statfs)(s)}let o=i.bavail*i.bsize;return Math.pow(o,.8)})),r=new Array(W_),n=t.map(s=>1/s);for(let s=0;s<W_;s++){let i=1/0,o=0;for(let c=0;c<n.length;c++)n[c]<i&&(o=c,i=n[c]);n[o]+=1/t[o],r[s]=o}e.frequencyTable=r}function J_(e,t,r){Vu=t,xn=r,cl=!1;try{return e()}finally{Vu=void 0,xn=void 0}}function PZ(e){Xr=[];let t;try{t=e()}catch(n){throw Xr=void 0,n}let r=Xr.length<2?Xr[0]:Promise.all(Xr);return Xr=void 0,r?r.then(()=>e()):t}function X_(e,t,r){try{Xr=[],zo=r,xn=t,e()}catch(s){throw zo=void 0,Xr=void 0,s}zo=void 0;let n=Xr.length<2?Xr[0]:Promise.all(Xr);return Xr=void 0,n}function Hm(e,t,r){xn=r;try{return zo=t,e()}finally{zo=void 0}}function Qo(e,t){return xn=t,e()}function Za(e){al(e,t=>{z_(t)})}function al(e,t){if(e instanceof Us)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&al(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&al(e[r],t)}}function WA(e,t){let r=[];for(let n in e){let s=e[n];s instanceof Yu&&s.saveBeforeCommit&&r.push(s)}if(r.length>0)return()=>(xn=t,Promise.all(r.map(n=>km(n,!0).saving??Promise.resolve())))}function DZ(){return class{static{a(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}async function vZ(e,t){let r,n,s=0;for(let d in e){let f=e[d];if(r=f.primaryStore.rootStore,n=f.auditStore,n)break}let i=new Set,o=ju(r);if(o)for(let d of o)await c(d);return await l(),vt.default.warn?.(`Cleaned Orphan Blobs from ${t??"database"}, deleted ${s} blobs)`),s;async function c(d){try{if(!(0,Ve.existsSync)(d))return;for(let f of await(0,Bn.readdir)(d,{withFileTypes:!0})){let m=(0,Yi.join)(d,f.name);if(f.isDirectory())await c(m);else if(i.size%1e6===0&&vt.default.info?.("Finding all blobs for orphan check, paths accumulated",i.size),i.add(m),i.size%2e3===0){let p=(0,Hx.getHeapStatistics)();p.used_heap_size>p.heap_size_limit*(.8-i.size/16e6)&&await l()}}}catch(f){vt.default.error?.("Error searching path for blobs",d,f)}}a(c,"searchPath");async function l(){let d=0,f=Math.floor(((0,Fm.get)(U.STORAGE_BLOBCLEANUPSPEED)??1e4)/1e3+1);for(let m in e){vt.default.warn?.("Checking for references to potential orphaned blobs in table",m);let p=e[m];for(let h of p.primaryStore.getRange({versions:!0,snapshot:!1,lazy:!0}))try{h.metadataFlags&Zr&&h.value&&u(h.value),d++%f===0?await(0,Ku.setTimeout)(1):await(0,Ku.setImmediate)()}catch(E){vt.default.error?.("Error searching table",m," for references to potential orphaned blobs failed",E)}}vt.default.warn?.("Checking for references to potential orphaned blobs in the audit log");for(let{value:m}of n.getRange({start:1,snapshot:!1,lazy:!0}))try{let p=wt(m),h=n.tableStores[p.tableId],E=h?.getEntry(p.recordId);(!E||E.version!==p.version||!E.value)&&u(p.getValue(h)),d++%f===0?await(0,Ku.setTimeout)(1):await(0,Ku.setImmediate)()}catch(p){vt.default.error?.("Error searching audit log for references to potential orphaned blobs failed",p)}vt.default.warn?.("Deleting",i.size,"orphaned blobs"),s+=i.size;for(let m of i)try{await(0,Bn.unlink)(m)}catch(p){vt.default.warn?.("Error deleting file",p)}vt.default.warn?.("Finished deleting",i.size,"orphaned blobs"),i.clear()}a(l,"removePathsThatAreNotReferenced");function u(d){al(d,f=>{if(f instanceof Yu){let m=$r.get(f);if(m.fileId!=null){let p=Wu(m);i.has(p)&&i.delete(p)}}})}a(u,"checkObjectForReferences")}var Ki,Bn,Ve,j_,Xa,VA,Fm,Yi,vt,Hx,Ku,Gx,Or,qx,KA,xx,TZ,yZ,Bx,$r,zo,Us,Vu,Xr,xn,cl,Bm,Y_,RZ,Fx,Yu,Vx,$A,kx,W_,LZ,os=ie(()=>{Ki=require("msgpackr"),Bn=require("node:fs/promises"),Ve=require("node:fs"),j_=require("node:zlib"),Xa=require("node:stream"),VA=require("fs-extra"),Fm=b(fe());$();Yi=require("path"),vt=b(pr());jo();$i();Hx=require("node:v8"),Ku=require("node:timers/promises"),Gx=8192,Or=8,qx=0,KA=1,xx=255,TZ=new Uint8Array([0,qx,255,255,255,255,255,255]),yZ=new Uint8Array([0,KA,255,255,255,255,255,255]),Bx=0xffffffffffff,$r=new WeakMap,Us=global.Blob||DZ(),cl=!1,Bm=new Uint8Array(8),Y_=new DataView(Bm.buffer),RZ=6e4;a($x,"InstanceOfBlobWithNoConstructor");$x.prototype=Us.prototype;Fx=!1,Yu=class e extends $x{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size),t?.saveBeforeCommit!=null&&(this.saveBeforeCommit=t.saveBeforeCommit)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=$r.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):(GA()&&HA(this.bytes().then(o=>t.contentBuffer=o)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=$r.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=Wu(t),o,c=a(async()=>{let l,u=Or;try{if(l=await(0,Bn.readFile)(i),l.length>=Or){l.copy(Bm,0,0,Or);let f=Y_.getBigUint64(0);if(Number(f>>48n)===xx)throw new Error("Error in blob: "+l.subarray(Or));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<Bx&&(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,p=t.fileId+":blob";if(o)throw new Error(`Incomplete blob for ${i}`);return new Promise(h=>{if(m.attemptLock(p,0,()=>(o=!0,h(c()))))return o=!0,m.unlock(p,0),h(c())})}return(n!=null||r!=null)&&(f=f.subarray(r??0,n??f.length)),f}return a(d,"checkCompletion"),l[1]===KA?new Promise((f,m)=>{(0,j_.deflate)(l.subarray(Or),(p,h)=>{p?m(p):f(d(h))})}):d(l.subarray(Or))},"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=$r.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(E){E.enqueue(r),E.close()}});let i=Wu(t),o,c=0,l=0,u,d,f,m=!1,p=this;return new ReadableStream({start(){let E=1e3,_=a((R,S)=>{(0,Ve.open)(i,"r",(y,I)=>{if(y){if(y.code==="ENOENT"&&f!==!1&&(vt.default.debug?.("File does not exist yet, waiting for it to be created",i,E),E-- >0))return setTimeout(()=>{h(),_(R,S)},20).unref();S(y),p.#e?.forEach(w=>w(y))}else o=I,R(I)})},"openFile");return new Promise(_)},pull:a(E=>{let _=0,R=100;return new Promise(a(function S(y,I){function w(H){(0,Ve.close)(o),clearTimeout(d),u&&u.close(),I(H),p.#e?.forEach(Z=>Z(H))}a(w,"onError");let L=Buffer.allocUnsafe(262144);(0,Ve.read)(o,L,0,L.length,c,(H,Z,X)=>{if(l+=Z,H)return w(H);if(c===0){if(Z<Or){R-- >0&&f!==!1?(h(),vt.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>S(y,I),20).unref()):(vt.default.debug?.("File was empty, throwing error",i,R),w(new Error(`Blob ${t.fileId} was empty`)));return}X.copy(Bm,0,0,Or);let J=Y_.getBigUint64(0);if(Number(J>>48n)===xx)return w(new Error("Error in blob: "+X.subarray(Or,Z)));if(_=Number(J&0xffffffffffffn),_<Bx&&p.size!==_&&(p.size=_,p.#t))for(let F of p.#t)F(_);X=X.subarray(Or,Z),l-=Or}else if(Z===0){let J=Buffer.allocUnsafe(8);return(0,Ve.read)(o,J,0,Or,0,F=>{if(F)return w(F);if(Bm.set(J),_=Number(Y_.getBigUint64(0)&0xffffffffffffn),_>l){h()?(u=(0,Ve.watch)(i,{persistent:!1},()=>{u.close(),u=null,clearTimeout(d),S(y,I)}),(0,Ve.readSync)(o,J,0,J.length,c)>0?(u.close(),u=null,S(y,I)):d=setTimeout(()=>{w(new Error(`File read timed out reading from ${i}`))},RZ).unref()):m?w(new Error("Blob is incomplete")):(m=!0,S(y,I));return}(0,Ve.close)(o),E.close(),y()})}else X=X.subarray(0,Z);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=Z,S(y,I);s&&l>=s&&(l>s&&(X=X.subarray(0,s-c)),l=_=s),n&&n>c&&(X=X.subarray(n-c))}c+=Z;try{E.enqueue(X)}catch(J){return vt.default.debug?.("Error enqueuing chunk",J),y()}l===_&&((0,Ve.close)(o),E.close()),y()})},"readMore"))},"pull"),cancel(){(0,Ve.close)(o),clearTimeout(d),u&&u.close()}});function h(){if(f===void 0){let E=t.store,_=t.fileId+":blob";f=!E.attemptLock(_,0,()=>{f=!1}),f||E.unlock(_,0)}return f}}slice(t,r,n){let s=$r.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};$r.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};$r.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return Fx||(Fx=!0,vt.default.warn?.("save() method on Blob is deprecated, use the 'saveBeforeCommit' flag on the Blob constructor instead")),this.saveBeforeCommit=!0,Promise.resolve()}get written(){return $r.get(this)?.saving??Promise.resolve()}},Vx=500;a(z_,"deleteBlob");a(bZ,"setDeletionDelay");global.createBlob=function(e,t){let r=new Yu(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if($r.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof Xa.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=Xa.Readable.from(e);else throw new Error("Invalid source type");return r};a(km,"saveBlob");a(qA,"writeBlobWithStream");a(Q_,"getFileId");a(AZ,"isSaving");a(Kx,"getFilePathForBlob");$A=new Map;a(ju,"getRootBlobPathsForDB");a(YA,"deleteRootBlobPathsForDB");a(Yx,"rimrafSteadily");a(Wu,"getFilePath");a(IZ,"writeBlobWithBuffer");a(wZ,"generateFilePath");kx=new Map;a(NZ,"getNextFileId");W_=128;a(CZ,"getNextStorageIndex");a(OZ,"createFrequencyTableForStoragePaths");a(J_,"encodeBlobsWithFilePath");a(PZ,"encodeBlobsAsBuffers");a(X_,"decodeBlobsWithWrites");a(Hm,"decodeWithBlobCallback");a(Qo,"decodeFromDatabase");a(Za,"deleteBlobsInObject");a(al,"findBlobsInObject");a(WA,"startPreCommitBlobsForRecord");LZ=new Ki.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,Ki.addExtension)({Class:Us,type:11,unpack:a(function(e){let t=LZ.unpack(e),r=new Yu;if(Object.assign(r,t[0]),typeof t[1]!="object"){if($r.set(r,{storageIndex:t[1],fileId:t[2],store:xn}),zo)return zo(r)??r;if(!xn)throw new Error("No store specified, cannot load blob from storage")}else $r.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:a(function(e){let t=$r.get(e);if(Vu!==void 0&&(cl=!0,t?.recordId!==void 0&&t.recordId!==Vu))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<Gx)return r.size=t.contentBuffer.length,(0,Ki.pack)([r,t.contentBuffer])}if(Vu!==void 0){if(t=km(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=Vu,(0,Ki.pack)([r,t.storageIndex,t.fileId])}if(t){if(zo)return zo(e),(0,Ki.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Ve.readFileSync)(Wu(t));if(n.length>=Or&&(n.copy(Bm,0,0,Or),Number(Y_.getBigUint64(0)&0xffffffffffffn)===n.length-Or))return Buffer.concat([(0,Ki.pack)([r]),n]);if(Xr)Xr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Xr)return Xr.push(e.bytes()),Buffer.alloc(0);throw n}}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Ki.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(DZ,"polyfillBlob");a(vZ,"cleanupOrphans")});var Jx={};Re(Jx,{onStorageReclamation:()=>Gm,runReclamationHandlers:()=>JA,setAvailableSpaceRatioGetter:()=>UZ});function Gm(e,t,r){(r||(0,tg.getWorkerIndex)()===(0,tg.getWorkerCount)()-1)&&(eg.has(e)||eg.set(e,[]),eg.get(e).push({priority:0,handler:t}),QA||(QA=setTimeout(JA,jx).unref()))}async function JA(){for(let[e,t]of eg)try{let r=await Qx(e),n=MZ/r;for(let s of t){let{priority:i,handler:o}=s;if(s.priority=n,n>1||i>1){let c=o(n>1?n:0);c&&(zA.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){zA.default.error?.("Error running storage reclamation handlers",r)}QA=setTimeout(JA,jx).unref()}function UZ(e){Qx=e??zx}var jA,tg,zA,rg,Wx,eg,MZ,jx,QA,zx,Qx,ng=ie(()=>{jA=require("node:fs/promises"),tg=b(it()),zA=b(pr());$();rg=b(fe()),Wx=b(ue());rg.default.initSync();eg=new Map,MZ=rg.default.get(U.STORAGE_RECLAMATION_THRESHOLD)??.4,jx=(0,Wx.convertToMS)(rg.default.get(U.STORAGE_RECLAMATION_INTERVAL))||36e5;a(Gm,"onStorageReclamation");zx=a(async e=>{if(jA.statfs){let t=await(0,jA.statfs)(e);return t.bavail/t.blocks}else return new Promise(t=>{import("hdd-space").then(r=>{r.default(n=>{for(let s of n.parts)if(e.startsWith(s.place))return t(s.free/s.size);return t(1)})})})},"defaultGetAvailableSpaceRatio"),Qx=zx;a(JA,"runReclamationHandlers");a(UZ,"setAvailableSpaceRatioGetter")});var u0={};Re(u0,{ACTION_32_BIT:()=>cg,ACTION_64_BIT:()=>kZ,AUDIT_STORE_OPTIONS:()=>Vm,Decoder:()=>ul,HAS_BLOBS:()=>Zr,HAS_CURRENT_RESIDENCY_ID:()=>dl,HAS_EXPIRATION_EXTENDED_TYPE:()=>Wm,HAS_ORIGINATING_OPERATION:()=>Ym,HAS_PREVIOUS_RESIDENCY_ID:()=>fl,REMOTE_SEQUENCE_UPDATE:()=>lg,createAuditEntry:()=>ml,getLastRemoved:()=>BZ,openAuditStore:()=>og,readAuditEntry:()=>wt,removeAuditEntry:()=>ag,setAuditRetention:()=>FZ,transactionKeyEncoder:()=>o0});function og(e){let t=e.auditStore=e.openDB(XA.AUDIT_STORE_NAME,{create:!1,...Vm});t||(t=e.auditStore=e.openDB(XA.AUDIT_STORE_NAME,Vm),Zx(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,o=eI;Gm(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(o=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,p;try{for(let{key:h,value:E}of t.getRange({start:1,snapshot:!1,end:Date.now()-ZA/(1+i*i)})){try{m=ag(t,h,E)}catch(_){zu.warn("Error removing audit entry",_)}if(p=h,await new Promise(setImmediate),++f>=xZ){o=10;break}}await m}finally{f===0?o=Math.min(o<<1,ZA/10):(Zx(t,p),o>100&&(o=o>>1)),d(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,$m.getWorkerIndex)()===(0,$m.getWorkerCount)()-1&&c(),(0,$m.getWorkerIndex)()===0&&!Xx)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(Xx=!0,zu.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 ag(e,t,r){let n=HZ(r),s;if(n&Zr){s=wt(r);let i=e.tableStores[s.tableId];if(i){let o=s.type==="message"?null:i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&Qo(()=>Za(s.getValue(i)),i.rootStore)}}if((n&15)===tI){s=s||wt(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 Zx(e,t){rI[0]=t,e.put(Symbol.for("last-removed"),a0)}function BZ(e){let t=e.get(Symbol.for("last-removed"));if(t)return a0.set(t),rI[0]}function FZ(e,t=eI){ZA=e,eI=t}function ml(e,t,r,n,s,i,o,c,l,u,d,f,m){let p=c0[o];if(!p)throw new Error(`Invalid audit entry type ${o}`);let h=1;if(n&&(n>1?ec.setFloat64(0,n):xs.set(nI),h=9),l){if(l&255)throw new Error("Illegal extended type");h+=3}R(s),R(t),_(r),ec.setFloat64(h,e),h+=8,l&dl&&R(u),l&fl&&R(d),l&Wm&&(ec.setFloat64(h,f),h+=8),l&Ym&&R(l0[m]),i?_(i):xs[h++]=0,l?ec.setUint32(n?8:0,p|l|3221225472):xs[n?8:0]=p;let E=xs.subarray(0,h);if(c)return Buffer.concat([E,c]);return E;function _(S){let y=h;h+=1,h=(0,ll.writeKey)(S,xs,h);let I=h-y-1;I>127?I>16383?(zu.error("Key or username was too large for audit entry",S),h=y+1,xs[y]=0):(xs.copyWithin(y+2,y+1,h),ec.setUint16(y,I|32768),h++):xs[y]=I}function R(S){S<128?xs[h++]=S:S<16384?(ec.setUint16(h,S|32768),h+=2):S<1056964608?(ec.setUint32(h,S|3221225472),h+=4):(xs[h]=255,ec.setUint32(h+1,S),h+=5)}}function HZ(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 ul(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function wt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new ul(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),o=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,d=n.position+=l,f=n.readFloat64(),m,p,h,E;if(i&dl&&(m=n.readInt()),i&fl&&(p=n.readInt()),i&Wm&&(h=n.readFloat64()),i&Ym){let y=n.readInt();E=l0[y]}l=n.readInt();let _=n.position,R=n.position+=l,S;return{type:c0[i&7],tableId:c,nodeId:o,get recordId(){return(0,ll.readKey)(e,u,d)},getBinaryRecordId(){return e.subarray(u,d)},version:f,previousLocalTime:s,get user(){return R>_?(0,ll.readKey)(e,_,R):void 0},get encoded(){return t?e.subarray(t,r):e},get size(){return t!==void 0&&r!==void 0?r-t:e.byteLength},getValue(y,I,w){if(i&sg||i&qm&&!I)return S||(S=Qo(()=>y.decoder.decode(e.subarray(n.position,r)),y.rootStore)),S;if(i&qm&&w)return PA(y.getEntry(this.recordId),w,y)},getBinaryValue(){return i&(sg|qm)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:m,previousResidencyId:p,expiresAt:h,originatingOperation:E}}catch(n){return zu.error("Reading audit entry error",n,e),{}}}var ll,ig,XA,$m,i0,zu,xs,ec,o0,Vm,ZA,xZ,rI,a0,eI,Xx,sg,qm,e0,tI,t0,r0,n0,s0,cg,kZ,lg,dl,fl,Ym,Wm,Zr,c0,l0,ul,$i=ie(()=>{ll=require("ordered-binary"),ig=b(fe()),XA=b(Cr());$();$m=b(it()),i0=b(ue());pl();zu=b(ee());H_();os();ng();(0,ig.initSync)();xs=Buffer.alloc(2816),ec=new DataView(xs.buffer,xs.byteOffset,2816),o0={writeKey(e,t,r){return e===Km?(t.set(Km,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,ll.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,ll.readKey)(e,t,r)}},Vm={encoding:"binary",keyEncoder:o0},ZA=(0,i0.convertToMS)((0,ig.get)(U.LOGGING_AUDITRETENTION))||86400*3,xZ=1e3,rI=new Float64Array(1),a0=new Uint8Array(rI.buffer),eI=1e4,Xx=!1;a(og,"openAuditStore");a(ag,"removeAuditEntry");a(Zx,"updateLastRemoved");a(BZ,"getLastRemoved");a(FZ,"setAuditRetention");sg=16,qm=32,e0=1,tI=2,t0=3,r0=4,n0=5,s0=6,cg=14,kZ=15,lg=11,dl=512,fl=1024,Ym=2048,Wm=4096,Zr=8192,c0={put:e0|sg,[e0]:"put",delete:tI,[tI]:"delete",message:t0|sg,[t0]:"message",invalidate:r0|qm,[r0]:"invalidate",patch:n0|qm,[n0]:"patch",relocate:s0,[s0]:"relocate"},l0={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(ml,"createAuditEntry");a(HZ,"readAction");a(wt,"readAuditEntry");ul=class extends DataView{static{a(this,"Decoder")}position=0;readInt(){let t;return t=this.getUint8(this.position++),t>=128?t>=192?t===255?(t=this.getUint32(this.position),this.position+=4,t):(t=this.getUint32(this.position-1)&1073741823,this.position+=3,t):(t=this.getUint16(this.position-1)&32767,this.position++,t):t}readFloat64(){try{let t=this.getFloat64(this.position);return this.position+=8,t}catch(t){throw t.message=`Error reading float64: ${t.message} at position ${this.position}`,t}}}});function ug(){return sI||(sI=je({table:"hdb_analytics_hostname",database:"system",attributes:[{name:"id",isPrimaryKey:!0},{name:"hostname"}]})),sI}function qZ(e){return e=e.replace(GZ,t=>{let[r,n,s,i]=t.split(".").map(o=>parseInt(o));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 $Z(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 jm(e){let t=d0.default.createHash("shake128",{outputLength:4}),r;return(0,f0.isIPv6)(e)?r=qZ(e):r=e.toLowerCase(),$Z(Uint8Array.from(t.update(r).digest()))}var d0,f0,iI,sI,GZ,oI=ie(()=>{Oe();d0=b(require("crypto")),f0=require("node:net"),iI=new Map;a(ug,"getAnalyticsHostnameTable");GZ=/(\d{1,3}\.){3}\d{1,3}$/;a(qZ,"normalizeIPv6");a($Z,"nodeHashToNumber");a(jm,"stableNodeId")});var Jo,aI=ie(()=>{Jo={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 g0={};Re(g0,{captureProfile:()=>lI,userCodeFolders:()=>dg});async function lI(e){let r=_0/1e6,n=new Map,s=new Map,i=new Map,o=0,c=0;try{let u=cI.time.stop(!0),d=u.stringTable.strings;for(let f of u.function)s.set(f.id,d[f.filename]);for(let f of u.location)n.set(f.id,f.line[0]);for(let f of u.sample)l(f);qe(c*r,"cpu-usage","harper"),qe(o*r,"cpu-usage","user");for(let[f,m]of i)if(m>100){let p=n.get(f),h=s.get(p.functionId)+":"+p.line;qe(m*r,"cpu-usage",h)}}catch(u){E0.error?.("analytics profiler error:",u)}finally{e&&setTimeout(()=>{let u=((0,zm.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;lI(u)},e).unref()}function l(u){let d=!1;for(let f of u.locationId){let m=s.get(n.get(f).functionId);if(dg.some(p=>m.startsWith(p))){let p=u.value[0];o+=p,d||i.set(f,(i.get(f)??0)+p);return}if(m.startsWith(p0.PACKAGE_ROOT)){let p=u.value[0];c+=p,d||(i.set(f,(i.get(f)??0)+p),d=!0)}}}a(l,"getUserHitCount")}var zm,p0,h0,cI,E0,m0,dg,_0,S0=ie(()=>{Fn();zm=b(fe());$();p0=b(Dt()),h0=require("node:fs"),cI=require("@datadog/pprof"),E0=b(ee()),m0=(0,zm.getHdbBasePath)(),dg=m0?[m0]:[];process.env.RUN_HDB_APP&&dg.push((0,h0.realpathSync)(process.env.RUN_HDB_APP));_0=5e4;(async()=>{if(dg.length===0)return;cI.time.start({intervalMicros:_0});let e=((0,zm.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;setTimeout(()=>{lI(e)},e).unref()})();a(lI,"captureProfile")});var pg={};Re(pg,{addAnalyticsListener:()=>Zm,analyticsDelay:()=>mI,calculateCPUUtilization:()=>F0,diffResourceUsage:()=>k0,onAnalyticsAggregate:()=>EI,recordAction:()=>qe,recordActionBinary:()=>tn,recordHostname:()=>pI,setAnalyticsEnabled:()=>YZ});function YZ(e){D0=e,clearTimeout(Jm),Jm=null}function WZ(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 jZ(e,t,r,n,s,i){let o={};if(typeof t=="number")o.total=t,o.values=new Float32Array(4),o.values.index=1,o.values[0]=t,o.total=t;else if(typeof t=="boolean")o.total=t?1:0,o.count=1;else if(typeof t=="function")o.count=1,o.callback=t;else throw new TypeError("Invalid metric value type "+typeof t);o.description={metric:r,path:n,method:s,type:i},mg.set(e,o)}function qe(e,t,r,n,s){if(!D0)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=mg.get(i);o?WZ(e,o):jZ(i,e,t,r,n,s),Jm||zZ()}function tn(e,t,r,n,s){qe(!!e,t,r,n,s)}function Zm(e){M0.push(e)}function zZ(){uI||=performance.now(),Jm=setTimeout(async()=>{Jm=null;let e=performance.now()-uI;uI=0;let t=[],r={time:Date.now(),period:e,threadId:hl.threadId,metrics:t};for(let[s,i]of mg){if(i.values){let o=i.values.subarray(0,i.values.index);o.sort();let c=o.length,l=0,u=[],d;for(let f of x0){let m=Math.floor(c*f),p=o[m-1];if(m>l){let h=m-l;if(p===d){let E=u[u.length-1];typeof E=="number"?u[u.length-1]={value:E,count:1+h}:E.count+=h}else u.push(h>1?{value:p,count:h}:p),d=p;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 H0()}let n=process.memoryUsage();t.push({metric:"memory",threadId:hl.threadId,byThread:!0,...n});for(let s of M0)s(t);mg=new Map,hl.parentPort?hl.parentPort.postMessage({type:v0,report:r}):$0({report:r})},mI).unref()}async function pI(){let e=Ue.hostname;en.trace?.("recordHostname server.hostname:",e);let t=jm(e);en.trace?.("recordHostname nodeId:",t);let r=ug();if(!await r.get(t)){let s={id:t,hostname:e};en.trace?.(`recordHostname storing hostname: ${JSON.stringify(s)}`),await r.put(s.id,s)}}function B0(e){let t=iI.get(e);return t?(en.trace?.("storeMetric cached nodeId:",t),t):(t=jm(e),en.trace?.("storeMetric new nodeId:",t),iI.set(e,t),t)}function Qu(e,t){let r=B0(Ue.hostname),n={id:[(0,fI.getNextMonotonicTime)(),r],...t};en.trace?.(`storing metric ${JSON.stringify(n)}`),e.put(n.id,n)}function F0(e,t){let r=e.userCPUTime+e.systemCPUTime;return en.trace?.(`calculateCPUUtilization cpuTime: ${r} period: ${t}`),Math.round(r/t*100)/100}function k0(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 QZ(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let o=`${t}.${s}`,c=i.getSize(),l={metric:Jo.TABLE_SIZE,database:t,table:s,size:c};en.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),Qu(e,l),n+=c}return n}function T0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=L0.statSync(s.primaryStore.env.path).size,c=QZ(e,r,n),l=o-c,u={metric:Jo.DATABASE_SIZE,database:r,size:o,used:c,free:l,audit:i};Qu(e,u),en.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){en.warn?.("Error getting DB size metrics",s)}}function y0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let o={metric:Jo.STORAGE_VOLUME,database:r,...i};Qu(e,o),en.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){en.warn?.("Error getting DB volume metrics",s)}}async function JZ(e,t=6e4){let r=hI(),n=G0(),s=new Promise(I=>{let w=performance.now();setImmediate(()=>{let L=performance.now();L-w>5e3&&en.warn?.("Unusually high event queue latency on the main thread of "+Math.round(L-w)+"ms"),w=performance.now()}),n.primaryStore.prefetch([1],()=>{let L=performance.now();L-w>5e3&&en.warn?.("Unusually high task queue latency on the main thread of "+Math.round(L-w)+"ms"),I(L-w)})}),i,o=B0(Ue.hostname);for(let I of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(!(!I.value?.time||I.value?.id[1]!==o)){i=I.value.time;break}if(Date.now()-t<i)return;let c,l=new Map,u=new Map,d=[],f;for(let{key:I,value:w}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!w)continue;if(c){if(I>c+t)break}else c=I;f=I;let{metrics:L,threadId:H}=w;for(let Z of L||[]){let{path:X,method:J,type:F,metric:de,count:oe,total:ae,distribution:he,threads:Te,...De}=Z;oe||(oe=1);let Je=de+(X?"-"+X:"");J!==void 0&&(Je+="-"+J),F!==void 0&&(Je+="-"+F);let $e=l.get(Je);if($e){if($e.threads){let Pt=$e.threads[H];if(Pt)$e=Pt;else{$e.threads[H]={...De};continue}}$e.count||($e.count=1);let ns=$e.count;for(let Pt in De){let Lt=De[Pt];typeof Lt=="number"&&($e[Pt]=($e[Pt]*ns+Lt*oe)/(ns+oe))}$e.count+=oe,ae>=0&&($e.total+=ae,$e.ratio=$e.total/$e.count)}else $e={period:t,...Z},delete $e.distribution,l.set(Je,$e),$e.byThread&&($e.threads=[],$e.threads[H]={...De},d.push($e));if(he){he=he.map(Pt=>typeof Pt=="number"?{value:Pt,count:1}:Pt);let ns=u.get(Je);ns?ns.push(...he):u.set(Je,he)}}await H0()}for(let I of d){let{path:w,method:L,type:H,metric:Z,count:X,total:J,distribution:F,threads:de,...oe}=I;de=de.filter(ae=>ae);for(let ae in oe){if(typeof I[ae]!="number")continue;let he=0;for(let Te of de){let De=Te[ae];typeof De=="number"&&(he+=De)}I[ae]=he}I.count=de.length,delete I.threads,delete I.byThread}for(let[I,w]of u){let L=l.get(I);w.sort((Pt,Lt)=>Pt.value>Lt.value?1:-1);let H=L.count-1,Z=[],X=0,J=0,F;for(let Pt of x0){let Lt=H*Pt;for(;X<Lt;)F=w[J++],X+=F.count,J===1&&X--;let Ya=w[J>1?J-2:0];F||(F=w[0]),Z.push(F.value-(F.value-Ya.value)*(X-Lt)/F.count)}let[de,oe,ae,he,Te,De,Je,$e,ns]=Z;Object.assign(L,{p1:de,p10:oe,p25:ae,median:he,p75:Te,p90:De,p95:Je,p99:$e,p999:ns})}let m;for(let[,I]of l)I.time=f,Qu(n,I),m=!0;if(m)for(let I of U0)I(l.values());let p=Date.now(),{idle:h,active:E}=performance.eventLoopUtilization();if(m||E*10>h){let I={metric:Jo.MAIN_THREAD_UTILIZATION,idle:h-R0,active:E-b0,taskQueueLatency:await s,time:p,...process.memoryUsage()};Qu(n,I)}R0=h,b0=E;let _=process.resourceUsage();_.time=p,_.userCPUTime=_.userCPUTime/1e3,_.systemCPUTime=_.systemCPUTime/1e3,en.trace?.(`process.resourceUsage: ${JSON.stringify(_)}`);let R=k0(fg,_);en.trace?.(`diffed resourceUsage: ${JSON.stringify(R)}`),R.time=p,R.period=fg.time?p-fg.time:t,R.cpuUtilization=F0(R,R.period);let S={metric:Jo.RESOURCE_USAGE,...R};Qu(n,S),fg=_;let y=dt();T0(n,y),T0(n,{system:y.system}),y0(n,y),y0(n,{system:y.system})}async function A0(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function hI(){return I0||(I0=je({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function G0(){return w0||(w0=je({table:"hdb_analytics",database:"system",audit:!0,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function e9(){q0=!0;let e=(0,Xm.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await JZ(mI,e),await A0(hI(),XZ),await A0(G0(),ZZ)},Math.min(e/2,2147483647)).unref()}function $0(e,t){let r=e.report;r.threadId=t?.threadId||hl.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(N0+=n.mean*n.count);r.totalBytesProcessed=N0,t&&(r.metrics.push({metric:Jo.UTILIZATION,...t.performance.eventLoopUtilization(C0.get(t))}),C0.set(t,t.performance.eventLoopUtilization())),r.id=(0,fI.getNextMonotonicTime)(),hI().primaryStore.put(r.id,r),q0||e9(),t9&&(V0=n9(r))}async function n9(e){if(await V0,!tc){let r=(0,Qm.dirname)(VZ());try{tc=await(0,dI.open)((0,Qm.join)(r,"analytics.log"),"r+")}catch{tc=await(0,dI.open)((0,Qm.join)(r,"analytics.log"),"w+")}}let t=(await tc.stat()).size;if(t>r9){let r=Buffer.alloc(t);await tc.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await tc.write(r,{position:0}),await tc.truncate(r.length),t=r.length}await tc.write(JSON.stringify(e)+`
10
+ `},"serialize"),compressible:!1,q:.8});_n.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()}});Mx={type:"application/json",serializeStream:Dm,serialize:vm,deserialize:fZ,q:.5};_n.set("*/*",Mx);_n.set("",Mx);a(fZ,"tryJSONParse");a(Um,"registerContentHandlers");mZ=(0,Dx.default)(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=K_(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&o.serializeStream){if(l.mapError){let d=l.getColumns;l=l.mapError(f=>(f.toJSON=()=>({error:f.name,message:f.message,...f.partialObject}),f)),l.getColumns=d}u=o.serializeStream}else u=o.serialize;return u(l,{headers:{set:a((d,f)=>{s.header(d,f)},"set")}})})}),r()},{name:"content-type-negotiation"});a(K_,"findBestSerializer");Cx=V_.default.get(U.HTTP_COMPRESSIONTHRESHOLD);a(xm,"serialize");a(Yo,"serializeMessage");a(HA,"asyncSerialization");a(GA,"hasAsyncSerialization");a(pZ,"streamToBuffer");hZ=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(EZ,"isBufferEncoding");a(_Z,"parseContentType");a(Wo,"getDeserializer");a(gZ,"deserializerUnknownType");a(SZ,"transformIterable");a($_,"toCsvStream")});var Z_={};Re(Z_,{Blob:()=>Us,blobsWereEncoded:()=>cl,cleanupOrphans:()=>vZ,databasePaths:()=>$A,decodeBlobsWithWrites:()=>X_,decodeFromDatabase:()=>Qo,decodeWithBlobCallback:()=>Hm,deleteBlob:()=>z_,deleteBlobsInObject:()=>Za,deleteRootBlobPathsForDB:()=>YA,encodeBlobsAsBuffers:()=>PZ,encodeBlobsWithFilePath:()=>J_,findBlobsInObject:()=>al,getFileId:()=>Q_,getFilePathForBlob:()=>Kx,getRootBlobPathsForDB:()=>ju,isSaving:()=>AZ,saveBlob:()=>km,setDeletionDelay:()=>bZ,startPreCommitBlobsForRecord:()=>WA});function $x(){}function z_(e){let t=Kx(e);t&&setTimeout(()=>{(0,Ve.unlink)(t,r=>{r&&vt.default.debug?.("Error trying to remove blob file",r)})},Vx)}function bZ(e){Vx=e}function km(e,t=!1){let r=$r.get(e);if(!r)r={storageIndex:0,fileId:null,store:xn},$r.set(e,r);else{if(r.fileId)return r;r.store=xn}return r.deleteOnFailure=t,wZ(r),r.source?qA(e,r.source,r):r.contentBuffer?IZ(e,r):qA(e,Xa.Readable.from(e.stream()),r),r}function qA(e,t,r){let{filePath:n,fileId:s,store:i,compress:o,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,Ve.createWriteStream)(n,{autoClose:!1,flags:"w"}),m=!1;e.size!==void 0&&(f.write(h(e.size)),m=!0);let p;o?(m||f.write(yZ),p=(0,j_.createDeflate)(),(0,Xa.pipeline)(t,p,f,E)):(m||f.write(TZ),(0,Xa.pipeline)(t,f,E));function h(_){let R=BigInt(_),S=new Uint8Array(Or),y=new DataView(S.buffer);return R|=BigInt(o?KA:qx)<<48n,y.setBigInt64(0,R),S}a(h,"createHeader");function E(_){let R=f.fd;if(_){if(i.unlock(d,0),R&&((0,Ve.close)(R),f.fd=null),r.deleteOnFailure)(0,Ve.unlink)(n,S=>{S&&vt.default.debug?.("Error while deleting aborted blob file",S)});else try{if((0,Ve.statSync)(n).size===0){let S=Buffer.from(_.toString());(0,Ve.writeFile)(n,Buffer.concat([h(BigInt(S.length)+0xff000000000000n),S]),y=>{y&&vt.default.debug?.("Error write error message to blob file",y)})}}catch(S){vt.default.debug?.("Error checking blob file after abort",S)}u(_)}else{if(!m){m=!0;let S=p?p.bytesWritten:f.bytesWritten-Or;e.size=S,(0,Ve.write)(R,h(S),0,Or,0,E);return}i.unlock(d,0),c?(0,Ve.fdatasync)(R,S=>{S&&u(S),l(),(0,Ve.close)(R),f.fd=null}):(l(),(0,Ve.close)(R),f.fd=null)}}a(E,"finished")}),e}function Q_(e){return $r.get(e)?.fileId}function AZ(e){return $r.get(e)?.saving}function Kx(e){let t=$r.get(e);return t?.fileId&&Wu(t)}function ju(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=$A.get(e);if(!t){if(!e.databaseName)return vt.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,Fm.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,Yi.join)(n,e.databaseName)):t=[(0,Yi.join)((0,Fm.getHdbBasePath)(),"blobs",e.databaseName)],$A.set(e,t)}return t}async function YA(e){let t=ju(e);t&&await Promise.all(t.map(r=>Yx(r)))}async function Yx(e){if((0,Ve.existsSync)(e)){for(let t of await(0,Bn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await Yx((0,Yi.join)(e,t.name));else try{await(0,Bn.unlink)((0,Yi.join)(e,t.name))}catch(r){vt.default.warn?.("Error deleting file",r)}try{await(0,Bn.rmdir)(e)}catch(t){vt.default.warn?.("Error deleting directory",t)}}}function Wu({storageIndex:e,fileId:t,store:r}){let n=ju(r);return(0,Yi.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 IZ(e,t){let r=t.contentBuffer,n=r.length;if(!(n<Gx))return e.size=n,qA(e,Xa.Readable.from([r]),t)}function wZ(e){let t=ju(e.store),r=NZ(),n=t?.length>1?CZ(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Wu(e),o=(0,Yi.dirname)(i);(0,Ve.existsSync)(o)||(0,VA.ensureDirSync)(o),e.filePath=i}function NZ(){let e=kx.get(xn);if(!e){let t=0,r=ju(xn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Ve.existsSync)(n))for(let c of(0,Ve.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>o&&(o=l)}s+=o,n=(0,Yi.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(xn.getUserSharedBuffer("blob-file-id",e.buffer)),kx.set(xn,e)}return Number(Atomics.add(e,0,1n))}function CZ(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(W_);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,OZ(e)),e.frequencyTable[t%W_]}async function OZ(e){if(!Bn.statfs)return;let t=await Promise.all(e.map(async s=>{let i;try{i=await(0,Bn.statfs)(s)}catch(c){if(c.code!=="ENOENT")throw c;(0,VA.ensureDirSync)(s),i=await(0,Bn.statfs)(s)}let o=i.bavail*i.bsize;return Math.pow(o,.8)})),r=new Array(W_),n=t.map(s=>1/s);for(let s=0;s<W_;s++){let i=1/0,o=0;for(let c=0;c<n.length;c++)n[c]<i&&(o=c,i=n[c]);n[o]+=1/t[o],r[s]=o}e.frequencyTable=r}function J_(e,t,r){Vu=t,xn=r,cl=!1;try{return e()}finally{Vu=void 0,xn=void 0}}function PZ(e){Xr=[];let t;try{t=e()}catch(n){throw Xr=void 0,n}let r=Xr.length<2?Xr[0]:Promise.all(Xr);return Xr=void 0,r?r.then(()=>e()):t}function X_(e,t,r){try{Xr=[],zo=r,xn=t,e()}catch(s){throw zo=void 0,Xr=void 0,s}zo=void 0;let n=Xr.length<2?Xr[0]:Promise.all(Xr);return Xr=void 0,n}function Hm(e,t,r){xn=r;try{return zo=t,e()}finally{zo=void 0}}function Qo(e,t){return xn=t,e()}function Za(e){al(e,t=>{z_(t)})}function al(e,t){if(e instanceof Us)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&al(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&al(e[r],t)}}function WA(e,t){let r=[];for(let n in e){let s=e[n];s instanceof Yu&&s.saveBeforeCommit&&r.push(s)}if(r.length>0)return()=>(xn=t,Promise.all(r.map(n=>km(n,!0).saving??Promise.resolve())))}function DZ(){return class{static{a(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}async function vZ(e,t){let r,n,s=0;for(let d in e){let f=e[d];if(r=f.primaryStore.rootStore,n=f.auditStore,n)break}let i=new Set,o=ju(r);if(o)for(let d of o)await c(d);return await l(),vt.default.warn?.(`Cleaned Orphan Blobs from ${t??"database"}, deleted ${s} blobs)`),s;async function c(d){try{if(!(0,Ve.existsSync)(d))return;for(let f of await(0,Bn.readdir)(d,{withFileTypes:!0})){let m=(0,Yi.join)(d,f.name);if(f.isDirectory())await c(m);else if(i.size%1e6===0&&vt.default.info?.("Finding all blobs for orphan check, paths accumulated",i.size),i.add(m),i.size%2e3===0){let p=(0,Hx.getHeapStatistics)();p.used_heap_size>p.heap_size_limit*(.8-i.size/16e6)&&await l()}}}catch(f){vt.default.error?.("Error searching path for blobs",d,f)}}a(c,"searchPath");async function l(){let d=0,f=Math.floor(((0,Fm.get)(U.STORAGE_BLOBCLEANUPSPEED)??1e4)/1e3+1);for(let m in e){vt.default.warn?.("Checking for references to potential orphaned blobs in table",m);let p=e[m];for(let h of p.primaryStore.getRange({versions:!0,snapshot:!1,lazy:!0}))try{h.metadataFlags&Zr&&h.value&&u(h.value),d++%f===0?await(0,Ku.setTimeout)(1):await(0,Ku.setImmediate)()}catch(E){vt.default.error?.("Error searching table",m," for references to potential orphaned blobs failed",E)}}vt.default.warn?.("Checking for references to potential orphaned blobs in the audit log");for(let{value:m}of n.getRange({start:1,snapshot:!1,lazy:!0}))try{let p=wt(m),h=n.tableStores[p.tableId],E=h?.getEntry(p.recordId);(!E||E.version!==p.version||!E.value)&&u(p.getValue(h)),d++%f===0?await(0,Ku.setTimeout)(1):await(0,Ku.setImmediate)()}catch(p){vt.default.error?.("Error searching audit log for references to potential orphaned blobs failed",p)}vt.default.warn?.("Deleting",i.size,"orphaned blobs"),s+=i.size;for(let m of i)try{await(0,Bn.unlink)(m)}catch(p){vt.default.warn?.("Error deleting file",p)}vt.default.warn?.("Finished deleting",i.size,"orphaned blobs"),i.clear()}a(l,"removePathsThatAreNotReferenced");function u(d){al(d,f=>{if(f instanceof Yu){let m=$r.get(f);if(m.fileId!=null){let p=Wu(m);i.has(p)&&i.delete(p)}}})}a(u,"checkObjectForReferences")}var Ki,Bn,Ve,j_,Xa,VA,Fm,Yi,vt,Hx,Ku,Gx,Or,qx,KA,xx,TZ,yZ,Bx,$r,zo,Us,Vu,Xr,xn,cl,Bm,Y_,RZ,Fx,Yu,Vx,$A,kx,W_,LZ,os=ie(()=>{Ki=require("msgpackr"),Bn=require("node:fs/promises"),Ve=require("node:fs"),j_=require("node:zlib"),Xa=require("node:stream"),VA=require("fs-extra"),Fm=b(fe());$();Yi=require("path"),vt=b(pr());jo();$i();Hx=require("node:v8"),Ku=require("node:timers/promises"),Gx=8192,Or=8,qx=0,KA=1,xx=255,TZ=new Uint8Array([0,qx,255,255,255,255,255,255]),yZ=new Uint8Array([0,KA,255,255,255,255,255,255]),Bx=0xffffffffffff,$r=new WeakMap,Us=global.Blob||DZ(),cl=!1,Bm=new Uint8Array(8),Y_=new DataView(Bm.buffer),RZ=6e4;a($x,"InstanceOfBlobWithNoConstructor");$x.prototype=Us.prototype;Fx=!1,Yu=class e extends $x{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size),t?.saveBeforeCommit!=null&&(this.saveBeforeCommit=t.saveBeforeCommit)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=$r.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):(GA()&&HA(this.bytes().then(o=>t.contentBuffer=o)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=$r.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=Wu(t),o,c=a(async()=>{let l,u=Or;try{if(l=await(0,Bn.readFile)(i),l.length>=Or){l.copy(Bm,0,0,Or);let f=Y_.getBigUint64(0);if(Number(f>>48n)===xx)throw new Error("Error in blob: "+l.subarray(Or));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<Bx&&(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,p=t.fileId+":blob";if(o)throw new Error(`Incomplete blob for ${i}`);return new Promise(h=>{if(m.attemptLock(p,0,()=>(o=!0,h(c()))))return o=!0,m.unlock(p,0),h(c())})}return(n!=null||r!=null)&&(f=f.subarray(r??0,n??f.length)),f}return a(d,"checkCompletion"),l[1]===KA?new Promise((f,m)=>{(0,j_.deflate)(l.subarray(Or),(p,h)=>{p?m(p):f(d(h))})}):d(l.subarray(Or))},"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=$r.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(E){E.enqueue(r),E.close()}});let i=Wu(t),o,c=0,l=0,u,d,f,m=!1,p=this;return new ReadableStream({start(){let E=1e3,_=a((R,S)=>{(0,Ve.open)(i,"r",(y,I)=>{if(y){if(y.code==="ENOENT"&&f!==!1&&(vt.default.debug?.("File does not exist yet, waiting for it to be created",i,E),E-- >0))return setTimeout(()=>{h(),_(R,S)},20).unref();S(y),p.#e?.forEach(w=>w(y))}else o=I,R(I)})},"openFile");return new Promise(_)},pull:a(E=>{let _=0,R=100;return new Promise(a(function S(y,I){function w(H){(0,Ve.close)(o),clearTimeout(d),u&&u.close(),I(H),p.#e?.forEach(Z=>Z(H))}a(w,"onError");let L=Buffer.allocUnsafe(262144);(0,Ve.read)(o,L,0,L.length,c,(H,Z,X)=>{if(l+=Z,H)return w(H);if(c===0){if(Z<Or){R-- >0&&f!==!1?(h(),vt.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>S(y,I),20).unref()):(vt.default.debug?.("File was empty, throwing error",i,R),w(new Error(`Blob ${t.fileId} was empty`)));return}X.copy(Bm,0,0,Or);let J=Y_.getBigUint64(0);if(Number(J>>48n)===xx)return w(new Error("Error in blob: "+X.subarray(Or,Z)));if(_=Number(J&0xffffffffffffn),_<Bx&&p.size!==_&&(p.size=_,p.#t))for(let F of p.#t)F(_);X=X.subarray(Or,Z),l-=Or}else if(Z===0){let J=Buffer.allocUnsafe(8);return(0,Ve.read)(o,J,0,Or,0,F=>{if(F)return w(F);if(Bm.set(J),_=Number(Y_.getBigUint64(0)&0xffffffffffffn),_>l){h()?(u=(0,Ve.watch)(i,{persistent:!1},()=>{u.close(),u=null,clearTimeout(d),S(y,I)}),(0,Ve.readSync)(o,J,0,J.length,c)>0?(u.close(),u=null,S(y,I)):d=setTimeout(()=>{w(new Error(`File read timed out reading from ${i}`))},RZ).unref()):m?w(new Error("Blob is incomplete")):(m=!0,S(y,I));return}(0,Ve.close)(o),E.close(),y()})}else X=X.subarray(0,Z);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=Z,S(y,I);s&&l>=s&&(l>s&&(X=X.subarray(0,s-c)),l=_=s),n&&n>c&&(X=X.subarray(n-c))}c+=Z;try{E.enqueue(X)}catch(J){return vt.default.debug?.("Error enqueuing chunk",J),y()}l===_&&((0,Ve.close)(o),E.close()),y()})},"readMore"))},"pull"),cancel(){(0,Ve.close)(o),clearTimeout(d),u&&u.close()}});function h(){if(f===void 0){let E=t.store,_=t.fileId+":blob";f=!E.attemptLock(_,0,()=>{f=!1}),f||E.unlock(_,0)}return f}}slice(t,r,n){let s=$r.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};$r.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};$r.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return Fx||(Fx=!0,vt.default.warn?.("save() method on Blob is deprecated, use the 'saveBeforeCommit' flag on the Blob constructor instead")),this.saveBeforeCommit=!0,Promise.resolve()}get written(){return $r.get(this)?.saving??Promise.resolve()}},Vx=500;a(z_,"deleteBlob");a(bZ,"setDeletionDelay");global.createBlob=function(e,t){let r=new Yu(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if($r.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof Xa.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=Xa.Readable.from(e);else throw new Error("Invalid source type");return r};a(km,"saveBlob");a(qA,"writeBlobWithStream");a(Q_,"getFileId");a(AZ,"isSaving");a(Kx,"getFilePathForBlob");$A=new Map;a(ju,"getRootBlobPathsForDB");a(YA,"deleteRootBlobPathsForDB");a(Yx,"rimrafSteadily");a(Wu,"getFilePath");a(IZ,"writeBlobWithBuffer");a(wZ,"generateFilePath");kx=new Map;a(NZ,"getNextFileId");W_=128;a(CZ,"getNextStorageIndex");a(OZ,"createFrequencyTableForStoragePaths");a(J_,"encodeBlobsWithFilePath");a(PZ,"encodeBlobsAsBuffers");a(X_,"decodeBlobsWithWrites");a(Hm,"decodeWithBlobCallback");a(Qo,"decodeFromDatabase");a(Za,"deleteBlobsInObject");a(al,"findBlobsInObject");a(WA,"startPreCommitBlobsForRecord");LZ=new Ki.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,Ki.addExtension)({Class:Us,type:11,unpack:a(function(e){let t=LZ.unpack(e),r=new Yu;if(Object.assign(r,t[0]),typeof t[1]!="object"){if($r.set(r,{storageIndex:t[1],fileId:t[2],store:xn}),zo)return zo(r)??r;if(!xn)throw new Error("No store specified, cannot load blob from storage")}else $r.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:a(function(e){let t=$r.get(e);if(Vu!==void 0&&(cl=!0,t?.recordId!==void 0&&t.recordId!==Vu))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<Gx)return r.size=t.contentBuffer.length,(0,Ki.pack)([r,t.contentBuffer])}if(Vu!==void 0){if(t=km(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=Vu,(0,Ki.pack)([r,t.storageIndex,t.fileId])}if(t){if(zo)return zo(e),(0,Ki.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Ve.readFileSync)(Wu(t));if(n.length>=Or&&(n.copy(Bm,0,0,Or),Number(Y_.getBigUint64(0)&0xffffffffffffn)===n.length-Or))return Buffer.concat([(0,Ki.pack)([r]),n]);if(Xr)Xr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Xr)return Xr.push(e.bytes()),Buffer.alloc(0);throw n}}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Ki.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(DZ,"polyfillBlob");a(vZ,"cleanupOrphans")});var Jx={};Re(Jx,{onStorageReclamation:()=>Gm,runReclamationHandlers:()=>JA,setAvailableSpaceRatioGetter:()=>UZ});function Gm(e,t,r){(r||(0,tg.getWorkerIndex)()===(0,tg.getWorkerCount)()-1)&&(eg.has(e)||eg.set(e,[]),eg.get(e).push({priority:0,handler:t}),QA||(QA=setTimeout(JA,jx).unref()))}async function JA(){for(let[e,t]of eg)try{let r=await Qx(e),n=MZ/r;for(let s of t){let{priority:i,handler:o}=s;if(s.priority=n,n>1||i>1){let c=o(n>1?n:0);c&&(zA.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){zA.default.error?.("Error running storage reclamation handlers",r)}QA=setTimeout(JA,jx).unref()}function UZ(e){Qx=e??zx}var jA,tg,zA,rg,Wx,eg,MZ,jx,QA,zx,Qx,ng=ie(()=>{jA=require("node:fs/promises"),tg=b(it()),zA=b(pr());$();rg=b(fe()),Wx=b(ue());rg.default.initSync();eg=new Map,MZ=rg.default.get(U.STORAGE_RECLAMATION_THRESHOLD)??.4,jx=(0,Wx.convertToMS)(rg.default.get(U.STORAGE_RECLAMATION_INTERVAL))||36e5;a(Gm,"onStorageReclamation");zx=a(async e=>{if(jA.statfs){let t=await(0,jA.statfs)(e);return t.bavail/t.blocks}else return new Promise(t=>{import("hdd-space").then(r=>{r.default(n=>{for(let s of n.parts)if(e.startsWith(s.place))return t(s.free/s.size);return t(1)})})})},"defaultGetAvailableSpaceRatio"),Qx=zx;a(JA,"runReclamationHandlers");a(UZ,"setAvailableSpaceRatioGetter")});var u0={};Re(u0,{ACTION_32_BIT:()=>cg,ACTION_64_BIT:()=>kZ,AUDIT_STORE_OPTIONS:()=>Vm,Decoder:()=>ul,HAS_BLOBS:()=>Zr,HAS_CURRENT_RESIDENCY_ID:()=>dl,HAS_EXPIRATION_EXTENDED_TYPE:()=>Wm,HAS_ORIGINATING_OPERATION:()=>Ym,HAS_PREVIOUS_RESIDENCY_ID:()=>fl,REMOTE_SEQUENCE_UPDATE:()=>lg,createAuditEntry:()=>ml,getLastRemoved:()=>BZ,openAuditStore:()=>og,readAuditEntry:()=>wt,removeAuditEntry:()=>ag,setAuditRetention:()=>FZ,transactionKeyEncoder:()=>o0});function og(e){let t=e.auditStore=e.openDB(XA.AUDIT_STORE_NAME,{create:!1,...Vm});t||(t=e.auditStore=e.openDB(XA.AUDIT_STORE_NAME,Vm),Zx(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,o=eI;Gm(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(o=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,p;try{for(let{key:h,value:E}of t.getRange({start:1,snapshot:!1,end:Date.now()-ZA/(1+i*i)})){try{m=ag(t,h,E)}catch(_){zu.warn("Error removing audit entry",_)}if(p=h,await new Promise(setImmediate),++f>=xZ){o=10;break}}await m}finally{f===0?o=Math.min(o<<1,ZA/10):(Zx(t,p),o>100&&(o=o>>1)),d(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,$m.getWorkerIndex)()===(0,$m.getWorkerCount)()-1&&c(),(0,$m.getWorkerIndex)()===0&&!Xx)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(Xx=!0,zu.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 ag(e,t,r){let n=HZ(r),s;if(n&Zr){s=wt(r);let i=e.tableStores[s.tableId];if(i){let o=s.type==="message"?null:i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&Qo(()=>Za(s.getValue(i)),i.rootStore)}}if((n&15)===tI){s=s||wt(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 Zx(e,t){rI[0]=t,e.put(Symbol.for("last-removed"),a0)}function BZ(e){let t=e.get(Symbol.for("last-removed"));if(t)return a0.set(t),rI[0]}function FZ(e,t=eI){ZA=e,eI=t}function ml(e,t,r,n,s,i,o,c,l,u,d,f,m){let p=c0[o];if(!p)throw new Error(`Invalid audit entry type ${o}`);let h=1;if(n&&(n>1?ec.setFloat64(0,n):xs.set(nI),h=9),l){if(l&255)throw new Error("Illegal extended type");h+=3}R(s),R(t),_(r),ec.setFloat64(h,e),h+=8,l&dl&&R(u),l&fl&&R(d),l&Wm&&(ec.setFloat64(h,f),h+=8),l&Ym&&R(l0[m]),i?_(i):xs[h++]=0,l?ec.setUint32(n?8:0,p|l|3221225472):xs[n?8:0]=p;let E=xs.subarray(0,h);if(c)return Buffer.concat([E,c]);return E;function _(S){let y=h;h+=1,h=(0,ll.writeKey)(S,xs,h);let I=h-y-1;I>127?I>16383?(zu.error("Key or username was too large for audit entry",S),h=y+1,xs[y]=0):(xs.copyWithin(y+2,y+1,h),ec.setUint16(y,I|32768),h++):xs[y]=I}function R(S){S<128?xs[h++]=S:S<16384?(ec.setUint16(h,S|32768),h+=2):S<1056964608?(ec.setUint32(h,S|3221225472),h+=4):(xs[h]=255,ec.setUint32(h+1,S),h+=5)}}function HZ(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 ul(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function wt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new ul(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),o=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,d=n.position+=l,f=n.readFloat64(),m,p,h,E;if(i&dl&&(m=n.readInt()),i&fl&&(p=n.readInt()),i&Wm&&(h=n.readFloat64()),i&Ym){let y=n.readInt();E=l0[y]}l=n.readInt();let _=n.position,R=n.position+=l,S;return{type:c0[i&7],tableId:c,nodeId:o,get recordId(){return(0,ll.readKey)(e,u,d)},getBinaryRecordId(){return e.subarray(u,d)},version:f,previousLocalTime:s,get user(){return R>_?(0,ll.readKey)(e,_,R):void 0},get encoded(){return t?e.subarray(t,r):e},get size(){return t!==void 0&&r!==void 0?r-t:e.byteLength},getValue(y,I,w){if(i&sg||i&qm&&!I)return S||(S=Qo(()=>y.decoder.decode(e.subarray(n.position,r)),y.rootStore)),S;if(i&qm&&w)return PA(y.getEntry(this.recordId),w,y)},getBinaryValue(){return i&(sg|qm)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:m,previousResidencyId:p,expiresAt:h,originatingOperation:E}}catch(n){return zu.error("Reading audit entry error",n,e),{}}}var ll,ig,XA,$m,i0,zu,xs,ec,o0,Vm,ZA,xZ,rI,a0,eI,Xx,sg,qm,e0,tI,t0,r0,n0,s0,cg,kZ,lg,dl,fl,Ym,Wm,Zr,c0,l0,ul,$i=ie(()=>{ll=require("ordered-binary"),ig=b(fe()),XA=b(Cr());$();$m=b(it()),i0=b(ue());pl();zu=b(ee());H_();os();ng();(0,ig.initSync)();xs=Buffer.alloc(2816),ec=new DataView(xs.buffer,xs.byteOffset,2816),o0={writeKey(e,t,r){return e===Km?(t.set(Km,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,ll.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,ll.readKey)(e,t,r)}},Vm={encoding:"binary",keyEncoder:o0},ZA=(0,i0.convertToMS)((0,ig.get)(U.LOGGING_AUDITRETENTION))||86400*3,xZ=1e3,rI=new Float64Array(1),a0=new Uint8Array(rI.buffer),eI=1e4,Xx=!1;a(og,"openAuditStore");a(ag,"removeAuditEntry");a(Zx,"updateLastRemoved");a(BZ,"getLastRemoved");a(FZ,"setAuditRetention");sg=16,qm=32,e0=1,tI=2,t0=3,r0=4,n0=5,s0=6,cg=14,kZ=15,lg=11,dl=512,fl=1024,Ym=2048,Wm=4096,Zr=8192,c0={put:e0|sg,[e0]:"put",delete:tI,[tI]:"delete",message:t0|sg,[t0]:"message",invalidate:r0|qm,[r0]:"invalidate",patch:n0|qm,[n0]:"patch",relocate:s0,[s0]:"relocate"},l0={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(ml,"createAuditEntry");a(HZ,"readAction");a(wt,"readAuditEntry");ul=class extends DataView{static{a(this,"Decoder")}position=0;readInt(){let t;return t=this.getUint8(this.position++),t>=128?t>=192?t===255?(t=this.getUint32(this.position),this.position+=4,t):(t=this.getUint32(this.position-1)&1073741823,this.position+=3,t):(t=this.getUint16(this.position-1)&32767,this.position++,t):t}readFloat64(){try{let t=this.getFloat64(this.position);return this.position+=8,t}catch(t){throw t.message=`Error reading float64: ${t.message} at position ${this.position}`,t}}}});function ug(){return sI||(sI=je({table:"hdb_analytics_hostname",database:"system",attributes:[{name:"id",isPrimaryKey:!0},{name:"hostname"}]})),sI}function qZ(e){return e=e.replace(GZ,t=>{let[r,n,s,i]=t.split(".").map(o=>parseInt(o));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 $Z(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 jm(e){let t=d0.default.createHash("shake128",{outputLength:4}),r;return(0,f0.isIPv6)(e)?r=qZ(e):r=e.toLowerCase(),$Z(Uint8Array.from(t.update(r).digest()))}var d0,f0,iI,sI,GZ,oI=ie(()=>{Oe();d0=b(require("crypto")),f0=require("node:net"),iI=new Map;a(ug,"getAnalyticsHostnameTable");GZ=/(\d{1,3}\.){3}\d{1,3}$/;a(qZ,"normalizeIPv6");a($Z,"nodeHashToNumber");a(jm,"stableNodeId")});var Jo,aI=ie(()=>{Jo={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 g0={};Re(g0,{captureProfile:()=>lI,userCodeFolders:()=>dg});async function lI(e){let r=_0/1e6,n=new Map,s=new Map,i=new Map,o=0,c=0;try{let u=cI.time.stop(!0),d=u.stringTable.strings;for(let f of u.function)s.set(f.id,d[f.filename]);for(let f of u.location)n.set(f.id,f.line[0]);for(let f of u.sample)l(f);qe(c*r,"cpu-usage","harper"),qe(o*r,"cpu-usage","user");for(let[f,m]of i)if(m>100){let p=n.get(f),h=s.get(p.functionId)+":"+p.line;qe(m*r,"cpu-usage",h)}}catch(u){E0.error?.("analytics profiler error:",u)}finally{e&&setTimeout(()=>{let u=((0,zm.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;lI(u)},e).unref()}function l(u){let d=!1;for(let f of u.locationId){let m=s.get(n.get(f).functionId);if(dg.some(p=>m.startsWith(p))){let p=u.value[0];o+=p,d||i.set(f,(i.get(f)??0)+p);return}if(m.startsWith(p0.PACKAGE_ROOT)){let p=u.value[0];c+=p,d||(i.set(f,(i.get(f)??0)+p),d=!0)}}}a(l,"getUserHitCount")}var zm,p0,h0,cI,E0,m0,dg,_0,S0=ie(()=>{Fn();zm=b(fe());$();p0=b(Dt()),h0=require("node:fs"),cI=require("@datadog/pprof"),E0=b(ee()),m0=(0,zm.getHdbBasePath)(),dg=m0?[m0]:[];process.env.RUN_HDB_APP&&dg.push((0,h0.realpathSync)(process.env.RUN_HDB_APP));_0=5e4;(async()=>{if(dg.length===0)return;cI.time.start({intervalMicros:_0});let e=((0,zm.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;setTimeout(()=>{lI(e)},e).unref()})();a(lI,"captureProfile")});var pg={};Re(pg,{addAnalyticsListener:()=>Zm,analyticsDelay:()=>mI,calculateCPUUtilization:()=>F0,diffResourceUsage:()=>k0,onAnalyticsAggregate:()=>EI,recordAction:()=>qe,recordActionBinary:()=>tn,recordHostname:()=>pI,setAnalyticsEnabled:()=>YZ});function YZ(e){D0=e,clearTimeout(Jm),Jm=null}function WZ(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 jZ(e,t,r,n,s,i){let o={};if(typeof t=="number")o.total=t,o.values=new Float32Array(4),o.values.index=1,o.values[0]=t,o.total=t;else if(typeof t=="boolean")o.total=t?1:0,o.count=1;else if(typeof t=="function")o.count=1,o.callback=t;else throw new TypeError("Invalid metric value type "+typeof t);o.description={metric:r,path:n,method:s,type:i},mg.set(e,o)}function qe(e,t,r,n,s){if(!D0)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=mg.get(i);o?WZ(e,o):jZ(i,e,t,r,n,s),Jm||zZ()}function tn(e,t,r,n,s){qe(!!e,t,r,n,s)}function Zm(e){M0.push(e)}function zZ(){uI||=performance.now(),Jm=setTimeout(async()=>{Jm=null;let e=performance.now()-uI;uI=0;let t=[],r={time:Date.now(),period:e,threadId:hl.threadId,metrics:t};for(let[s,i]of mg){if(i.values){let o=i.values.subarray(0,i.values.index);o.sort();let c=o.length,l=0,u=[],d;for(let f of x0){let m=Math.floor(c*f),p=o[m-1];if(m>l){let h=m-l;if(p===d){let E=u[u.length-1];typeof E=="number"?u[u.length-1]={value:E,count:1+h}:E.count+=h}else u.push(h>1?{value:p,count:h}:p),d=p;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 H0()}let n=process.memoryUsage();t.push({metric:"memory",threadId:hl.threadId,byThread:!0,...n});for(let s of M0)s(t);mg=new Map,hl.parentPort?hl.parentPort.postMessage({type:v0,report:r}):$0({report:r})},mI).unref()}async function pI(){let e=Ue.hostname;en.trace?.("recordHostname server.hostname:",e);let t=jm(e);en.trace?.("recordHostname nodeId:",t);let r=ug(),n={id:t,hostname:e};en.trace?.(`recordHostname storing hostname: ${JSON.stringify(n)}`),await r.put(n.id,n)}function B0(e){let t=iI.get(e);return t?(en.trace?.("storeMetric cached nodeId:",t),t):(t=jm(e),en.trace?.("storeMetric new nodeId:",t),iI.set(e,t),t)}function Qu(e,t){let r=B0(Ue.hostname),n={id:[(0,fI.getNextMonotonicTime)(),r],...t};en.trace?.(`storing metric ${JSON.stringify(n)}`),e.put(n.id,n)}function F0(e,t){let r=e.userCPUTime+e.systemCPUTime;return en.trace?.(`calculateCPUUtilization cpuTime: ${r} period: ${t}`),Math.round(r/t*100)/100}function k0(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 QZ(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let o=`${t}.${s}`,c=i.getSize(),l={metric:Jo.TABLE_SIZE,database:t,table:s,size:c};en.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),Qu(e,l),n+=c}return n}function T0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=L0.statSync(s.primaryStore.env.path).size,c=QZ(e,r,n),l=o-c,u={metric:Jo.DATABASE_SIZE,database:r,size:o,used:c,free:l,audit:i};Qu(e,u),en.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){en.warn?.("Error getting DB size metrics",s)}}function y0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let o={metric:Jo.STORAGE_VOLUME,database:r,...i};Qu(e,o),en.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){en.warn?.("Error getting DB volume metrics",s)}}async function JZ(e,t=6e4){let r=hI(),n=G0(),s=new Promise(I=>{let w=performance.now();setImmediate(()=>{let L=performance.now();L-w>5e3&&en.warn?.("Unusually high event queue latency on the main thread of "+Math.round(L-w)+"ms"),w=performance.now()}),n.primaryStore.prefetch([1],()=>{let L=performance.now();L-w>5e3&&en.warn?.("Unusually high task queue latency on the main thread of "+Math.round(L-w)+"ms"),I(L-w)})}),i,o=B0(Ue.hostname);for(let I of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(!(!I.value?.time||I.value?.id[1]!==o)){i=I.value.time;break}if(Date.now()-t<i)return;let c,l=new Map,u=new Map,d=[],f;for(let{key:I,value:w}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!w)continue;if(c){if(I>c+t)break}else c=I;f=I;let{metrics:L,threadId:H}=w;for(let Z of L||[]){let{path:X,method:J,type:F,metric:de,count:oe,total:ae,distribution:he,threads:Te,...De}=Z;oe||(oe=1);let Je=de+(X?"-"+X:"");J!==void 0&&(Je+="-"+J),F!==void 0&&(Je+="-"+F);let $e=l.get(Je);if($e){if($e.threads){let Pt=$e.threads[H];if(Pt)$e=Pt;else{$e.threads[H]={...De};continue}}$e.count||($e.count=1);let ns=$e.count;for(let Pt in De){let Lt=De[Pt];typeof Lt=="number"&&($e[Pt]=($e[Pt]*ns+Lt*oe)/(ns+oe))}$e.count+=oe,ae>=0&&($e.total+=ae,$e.ratio=$e.total/$e.count)}else $e={period:t,...Z},delete $e.distribution,l.set(Je,$e),$e.byThread&&($e.threads=[],$e.threads[H]={...De},d.push($e));if(he){he=he.map(Pt=>typeof Pt=="number"?{value:Pt,count:1}:Pt);let ns=u.get(Je);ns?ns.push(...he):u.set(Je,he)}}await H0()}for(let I of d){let{path:w,method:L,type:H,metric:Z,count:X,total:J,distribution:F,threads:de,...oe}=I;de=de.filter(ae=>ae);for(let ae in oe){if(typeof I[ae]!="number")continue;let he=0;for(let Te of de){let De=Te[ae];typeof De=="number"&&(he+=De)}I[ae]=he}I.count=de.length,delete I.threads,delete I.byThread}for(let[I,w]of u){let L=l.get(I);w.sort((Pt,Lt)=>Pt.value>Lt.value?1:-1);let H=L.count-1,Z=[],X=0,J=0,F;for(let Pt of x0){let Lt=H*Pt;for(;X<Lt;)F=w[J++],X+=F.count,J===1&&X--;let Ya=w[J>1?J-2:0];F||(F=w[0]),Z.push(F.value-(F.value-Ya.value)*(X-Lt)/F.count)}let[de,oe,ae,he,Te,De,Je,$e,ns]=Z;Object.assign(L,{p1:de,p10:oe,p25:ae,median:he,p75:Te,p90:De,p95:Je,p99:$e,p999:ns})}let m;for(let[,I]of l)I.time=f,Qu(n,I),m=!0;if(m)for(let I of U0)I(l.values());let p=Date.now(),{idle:h,active:E}=performance.eventLoopUtilization();if(m||E*10>h){let I={metric:Jo.MAIN_THREAD_UTILIZATION,idle:h-R0,active:E-b0,taskQueueLatency:await s,time:p,...process.memoryUsage()};Qu(n,I)}R0=h,b0=E;let _=process.resourceUsage();_.time=p,_.userCPUTime=_.userCPUTime/1e3,_.systemCPUTime=_.systemCPUTime/1e3,en.trace?.(`process.resourceUsage: ${JSON.stringify(_)}`);let R=k0(fg,_);en.trace?.(`diffed resourceUsage: ${JSON.stringify(R)}`),R.time=p,R.period=fg.time?p-fg.time:t,R.cpuUtilization=F0(R,R.period);let S={metric:Jo.RESOURCE_USAGE,...R};Qu(n,S),fg=_;let y=dt();T0(n,y),T0(n,{system:y.system}),y0(n,y),y0(n,{system:y.system})}async function A0(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function hI(){return I0||(I0=je({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function G0(){return w0||(w0=je({table:"hdb_analytics",database:"system",audit:!0,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function e9(){q0=!0;let e=(0,Xm.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await JZ(mI,e),await A0(hI(),XZ),await A0(G0(),ZZ)},Math.min(e/2,2147483647)).unref()}function $0(e,t){let r=e.report;r.threadId=t?.threadId||hl.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(N0+=n.mean*n.count);r.totalBytesProcessed=N0,t&&(r.metrics.push({metric:Jo.UTILIZATION,...t.performance.eventLoopUtilization(C0.get(t))}),C0.set(t,t.performance.eventLoopUtilization())),r.id=(0,fI.getNextMonotonicTime)(),hI().primaryStore.put(r.id,r),q0||e9(),t9&&(V0=n9(r))}async function n9(e){if(await V0,!tc){let r=(0,Qm.dirname)(VZ());try{tc=await(0,dI.open)((0,Qm.join)(r,"analytics.log"),"r+")}catch{tc=await(0,dI.open)((0,Qm.join)(r,"analytics.log"),"w+")}}let t=(await tc.stat()).size;if(t>r9){let r=Buffer.alloc(t);await tc.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await tc.write(r,{position:0}),await tc.truncate(r.length),t=r.length}await tc.write(JSON.stringify(e)+`
11
11
  `,t)}function EI(e){e&&U0.push(e)}var hl,O0,P0,Qm,dI,fI,Xm,L0,VZ,KZ,en,mg,D0,Jm,uI,mI,v0,M0,U0,x0,R0,b0,fg,H0,XZ,ZZ,I0,w0,q0,N0,C0,t9,V0,tc,r9,Fn=ie(()=>{hl=require("worker_threads"),O0=b(it());Oe();P0=b(ee()),Qm=require("path"),dI=require("fs/promises"),fI=b(Ms()),Xm=b(fe());$();qr();L0=b(require("node:fs"));oI();aI();({getLogFilePath:VZ,forComponent:KZ}=P0.default);setTimeout(()=>{Promise.resolve().then(()=>S0())},1e3);en=KZ("analytics").conditional;(0,Xm.initSync)();mg=new Map,D0=(0,Xm.get)(U.ANALYTICS_AGGREGATEPERIOD)>-1;a(YZ,"setAnalyticsEnabled");a(WZ,"recordExistingAction");a(jZ,"recordNewAction");a(qe,"recordAction");Ue.recordAnalytics=qe;a(tn,"recordActionBinary");uI=0,mI=1e3,v0="analytics-report",M0=[],U0=[];a(Zm,"addAnalyticsListener");x0=[.01,.1,.25,.5,.75,.9,.95,.99,.999,1];a(zZ,"sendAnalytics");a(pI,"recordHostname");a(B0,"getHostNodeId");a(Qu,"storeMetric");a(F0,"calculateCPUUtilization");a(k0,"diffResourceUsage");a(QZ,"storeTableSizeMetrics");a(T0,"storeDBSizeMetrics");a(y0,"storeVolumeMetrics");a(JZ,"aggregation");R0=0,b0=0,fg={userCPUTime:0,systemCPUTime:0},H0=a(()=>new Promise(setImmediate),"rest");a(A0,"cleanup");XZ=36e5,ZZ=31536e6;a(hI,"getRawAnalyticsTable");a(G0,"getAnalyticsTable");(0,O0.setChildListenerByType)(v0,$0);a(e9,"startScheduledTasks");N0=0,C0=new Map,t9=!1;a($0,"recordAnalytics");r9=1e6;a(n9,"logAnalytics");a(EI,"onAnalyticsAggregate")});var z0={};Re(z0,{ENTRY:()=>i9,HAS_EXPIRATION:()=>gg,HAS_RESIDENCY_ID:()=>yI,HAS_STRUCTURE_UPDATE:()=>Sg,LAST_TIMESTAMP_PLACEHOLDER:()=>Km,LOCAL_TIMESTAMP:()=>s9,METADATA:()=>Xu,NEW_TIMESTAMP_PLACEHOLDER:()=>Y0,NO_TIMESTAMP:()=>Eg,PENDING_LOCAL_TIME:()=>RI,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>nI,RecordEncoder:()=>TI,TIMESTAMP_ASSIGN_LAST:()=>a9,TIMESTAMP_ASSIGN_NEW:()=>W0,TIMESTAMP_ASSIGN_PREVIOUS:()=>j0,TIMESTAMP_PLACEHOLDER:()=>hg,TIMESTAMP_RECORD_PREVIOUS:()=>_I,entryMap:()=>rc,handleLocalTimeForGets:()=>Tg,lastMetadata:()=>ct,recordUpdater:()=>bI,removeEntry:()=>gl});function l9(){return tp[0]=tp[0]^64,o9.getFloat64(0)}function Tg(e,t){let r=e.getEntry;e.readCount=0,e.cachePuts=!1,e.rootStore=t,e.encoder.rootStore=t,e.getEntry=function(o,c){e.readCount++,ct=null;let l=r.call(this,o,c);if(l){if(ct&&(l.metadataFlags=ct[Xu],l.localTime=ct.localTime,l.residencyId=ct.residencyId,l.size=ct.size,ct.expiresAt>=0&&(l.expiresAt=ct.expiresAt),ct=null),l.value){if(l.value.constructor===Object){let u=l.value;l.value=new this.encoder.structPrototype.constructor,Object.assign(l.value,u)}rc.set(l.value,l)}l.key=o}return l};let n=e.get;e.get=function(o,c){ct=null;let l=n.call(this,o,c);return ct&&l&&(rc.set(l,ct),ct=null),l};let s=e.getRange;e.getRange=function(o){let c=s.call(this,o);return o.valuesForKey?c.map(l=>l?.value):o.values===!1||o.onlyCount?c:c.map(l=>{if(ct&&(l.metadataFlags=ct[Xu],l.localTime=ct.localTime,l.residencyId=ct.residencyId,l.size=ct.size,ct.expiresAt>=0&&(l.expiresAt=ct.expiresAt),ct=null),l.value&&l.value.constructor===Object){let u=l.value;l.value=new this.encoder.structPrototype.constructor;for(let d in u)l.value[d]=u[d]}return l})};let i=e.useReadTransaction();if(i.done(),!i.done.isTracked){let o=i.constructor,c=i.use,l=i.done;o.prototype.use=function(){this.timerTracked||(this.timerTracked=!0,_l.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<_l.length;u++){let d=_l[u].deref();(!d||d.isDone||d.isCommitted)&&_l.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function bI(e,t,r){return function(n,s,i,o,c=-1,l,u,d="put",f,m){l==null?El=Eg:f?El=i?.localTime?_I|j0:Eg:El=l?i?.localTime?_I|16384:W0|16384:Eg;let p=u?.expiresAt;if(p>=0&&(c|=gg),ep=c,gI=p,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let h={version:o,instructedWrite:El>0},E,_=0;try{let R=i?.residencyId,S=u?.residencyId;S&&(SI=S,ep|=yI,_|=dl),R!==S&&(_|=fl,R||(R=0)),c&gg&&(_|=Wm),u?.originatingOperation&&(_|=Ym),f&&(h.ifVersion=E=i?.version??null),i&&i.value&&d!=="message"&&i.metadataFlags&Zr&&(!i.localTime||!r.getBinaryFast(i.localTime))&&Za(i.value);let y;if(s!==void 0&&(y=J_(()=>e.put(n,s,h),n,e.rootStore),cl&&(_|=Zr)),l){let I=u?.user?.username;if(m&&(J_(()=>e.encoder.encode(m),n,e.rootStore),cl&&(_|=Zr)),e.encoder.hasStructureUpdate&&(_|=Sg,e.encoder.hasStructureUpdate=!1),f&&i?.localTime){let w=i?.localTime,L=r.get(w);if(L){let H=wt(L).previousLocalTime;return y=r.put(w,ml(o,t,n,H,u?.nodeId??server.replication.getThisNodeId(r)??0,I,d,Ju,_,S,R,p),{ifVersion:E}),y}}y=r.put(s===void 0?Y0:Km,ml(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,I,d,Ju,_,S,R,p,u?.originatingOperation),{instructedWrite:!0,ifVersion:E})}return u?.tableToTrack&&c9.has(d)&&qe(Ju?.length??1,"db-write",u.tableToTrack,null),y}catch(R){throw R.message+=" id: "+n+" options: "+h,R}}}function gl(e,t,r){if(t)return t.value&&t.metadataFlags&Zr&&!e.auditStore?.getBinaryFast(t.localTime)&&Za(t.value),e.remove(t.key,r)}var K0,_g,hg,Km,nI,Y0,s9,Xu,i9,tp,o9,Eg,W0,a9,j0,_I,gg,yI,RI,Sg,c9,rc,Ju,El,ep,gI,SI,ct,TI,_l,pl=ie(()=>{K0=require("msgpackr");$i();_g=b(ee());os();os();Fn();hg=new Uint8Array([1,1,1,1,4,64,0,0]),Km=new Uint8Array([1,1,1,1,1,0,0,0]),nI=new Uint8Array([1,1,1,1,3,64,0,0]),Y0=new Uint8Array([1,1,1,1,0,64,0,0]),s9=Symbol("local-timestamp"),Xu=Symbol("metadata"),i9=Symbol("entry"),tp=new Uint8Array(8),o9=new DataView(tp.buffer,0,8),Eg=0,W0=0,a9=1,j0=3,_I=4,gg=16,yI=32,RI=1,Sg=256,c9=new Set(["put","patch","delete","message","publish"]),rc=new WeakMap,El=0,ep=-1,gI=-1,SI=0,ct=null,TI=class extends K0.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0;class r{static{a(this,"RecordObject")}getUpdatedTime(){return rc.get(this)?.version}getExpiresAt(){return rc.get(this)?.expiresAt}}t.structPrototype=r.prototype,super(t);let n=this.encode;this.encode=function(i,o){if(El||ep>=0){let c=0,l=El;l&&(c+=8,El=0);let u=ep,d=gI,f=SI;u>=0&&(c+=4,ep=-1,d>=0&&(c+=8,gI=-1),f&&(c+=4,SI=0));let m=n.call(this,i,o|2048|c);Ju=m.subarray((m.start||0)+c,m.end);let p=m.start||0;return l&&(hg[4]=l,hg[5]=l>>8,m.set(hg,p),p+=8),cl&&(u|=Zr),u>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(p,u|cg<<24),p+=4,d>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setFloat64(p,d),p+=8),f&&(m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(p,f)),m}else return Ju=n.call(this,i,o),Ju};let s=this.saveStructures;this.saveStructures=function(i,o){let c=s.call(this,i,o);return this.hasStructureUpdate=!0,c}}decode(t,r){ct=null;let n=r?.start||0,s=r>-1?r:r?.end||t.length,i=t[n],o=0;try{if(i<32&&s>2){let c=n,l;if(i===2){if(t.copy)t.copy(tp,0,c),c+=8;else for(let m=0;m<8;m++)tp[m]=t[c++];l=l9(),i=t[c]}let u,d;i<32&&(i===cg?(o=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4):(o=i|t[c+1]<<5,c+=2),o&gg&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&yI&&(d=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let f=Qo(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return ct={localTime:l,[Xu]:o,expiresAt:u,residencyId:d,size:s-n},f}return r?.valueAsBuffer?t:Qo(()=>super.decode(t,r),this.rootStore)}catch(c){return _g.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(l9,"getTimestamp");a(Tg,"handleLocalTimeForGets");_l=[];setInterval(()=>{for(let e=0;e<_l.length;e++){let t=_l[e].deref();!t||t.isDone||t.isCommitted?_l.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(_g.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):_g.error("Read transaction detected that has been open too long (over one minute), make sure read transactions are quickly closed",t)),t.openTimer++):t.openTimer=1)}},15e3).unref();a(bI,"recordUpdater");a(gl,"removeEntry")});function wI(e,t,r,n,s,i,o,c){let l=e[0];if(t==="or"){let f=u(l);for(let p=1;p<e.length;p++){let h=e[p],E=u(h);f=f.concat(E)}let m=new Set;return f.filter(p=>{let h=p.key??p;return m.has(h)?!1:(m.add(h),!0)})}else{let f=u(l),m=d(e.slice(1),!0,l.estimated_count);return m.length>0?o(f,m):f}function u(f){return f.conditions?wI(f.conditions,f.operator,r,n,s,i,o,c):rd(f,n,f.descending||s.reverse===!0,r,s.allowFullScan,c,i)}a(u,"executeCondition");function d(f,m,p){return f.map((h,E)=>{if(h.conditions){let S=h.operator==="or",y=d(h.conditions,!S,p);return S?(I,w)=>y.some(L=>L(I,w)):(I,w)=>y.every(L=>L(I,w))}let _=(h.attribute||h[0])===r.primaryKey,R=np(h,r,i,c,_,p);return m&&E<f.length-1&&p&&(p=g9(r.primaryStore,h.estimated_count,p)),R}).filter(Boolean)}a(d,"mapConditionsToFilters")}function rd(e,t,r,n,s,i,o){let c=e[0]??e.attribute,l=e[1]??e.value,u=e.comparator;if(l===void 0&&u!=="sort")throw new rn.ClientError(`Search condition for ${c} must have a value`);if(Array.isArray(c)){let I=c[0],w=ji(n.attributes,I);if(w.relationship){if(c.length<2)throw new rn.ClientError("Can not directly query a relational attribute, must query an attribute within the target table");let L=w.definition?.tableClass||w.elements?.definition?.tableClass,H=new Map,Z=rd({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:u},t,r,L,s,H);if(w.relationship.to){i[c[0]]=H;let X=!!ji(L.attributes,w.relationship.to)?.elements;Z=p9(Z,w,L.primaryStore,X,H)}if(w.relationship.from){let X=a(J=>(J?.key!==void 0&&(J=J.key),rd({attribute:w.relationship.from,value:J},t,r,n,s,H)),"searchEntry");w.elements?(i[c[0]]=H,Z=h9(Z,w,L.primaryStore,H,X)):Z=Z.flatMap(X)}return Z}else if(c.length===1)c=c[0];else throw new rn.ClientError("Unable to query by attribute "+JSON.stringify(c))}let d=c===n.primaryKey||c==null,f=d?n.primaryStore:n.indices[c],m,p,h,E;l instanceof Date&&(l=l.getTime());let _;switch(NI[u]||u){case"lt":m=!0,p=l;break;case"le":m=!0,p=l,h=!0;break;case"gt":m=l,E=!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,p=l.slice(0),p[p.length-1]=Wi.MAXIMUM_KEY;break;case"starts_with":m=l.toString(),p=l+"\uFFFF";break;case"between":case"gele":case"gelt":case"gtlt":case"gtle":m=l[0],m instanceof Date&&(m=m.getTime()),p=l[1],p instanceof Date&&(p=p.getTime()),h=u==="gele"||u==="gtle"||u==="between",E=u==="gtlt"||u==="gtle";break;case"equals":case void 0:m=l,p=l,h=!0;break;case"ne":if(l===null){m=l,E=!0;break}case"sort":case"contains":case"ends_with":m=!0,_=!0;break;default:throw new rn.ClientError(`Unknown query comparator "${u}"`)}let R;if(typeof m=="string"&&m.length>Bs.MAX_SEARCH_KEY_LENGTH&&(m=m.slice(0,Bs.MAX_SEARCH_KEY_LENGTH)+Bs.OVERFLOW_MARKER,E=!1,R=np(e,n,null,i,d)),typeof p=="string"&&p.length>Bs.MAX_SEARCH_KEY_LENGTH&&(p=p.slice(0,Bs.MAX_SEARCH_KEY_LENGTH)+Bs.OVERFLOW_MARKER,h=!0,R=R??np(e,n,null,i,d)),r){let I=m;m=p,p=I,I=!E,E=!h,h=I}if(!f||f.isIndexing||_||l===null&&!f.indexNulls){if(s===!1&&!f)throw new rn.ClientError(`"${c}" is not indexed, can not search for this attribute`,404);if(s===!1&&_)throw new rn.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 rn.ServerError(`"${c}" is not indexed yet, can not search for this attribute`,503);if(l===null&&f&&!f.indexNulls)throw new rn.ClientError(`"${c}" is not indexed for nulls, index needs to be rebuilt to search for nulls, can not search for this attribute`,400);if(R=R??np(e,n,null,i,d),!R)throw new rn.ClientError(`Unknown search operator ${e.comparator}`)}let S={start:m,end:p,inclusiveEnd:h,exclusiveStart:E,values:!0,versions:d,transaction:t,reverse:r};if(d){let I=f.getRange(S).map(R?function({key:w,value:L}){return this?.isSync?L&&R(L)?w:nc.SKIP:new Promise((H,Z)=>setImmediate(()=>{try{H(L&&R(L)?w:nc.SKIP)}catch(X){Z(X)}}))}:function(w){let L;return w.value==null&&!(w.metadataFlags&(kn|Sl))?L=nc.SKIP:(o?._freezeRecords&&Object.freeze(w.value),y(w),L=w),this.isSync?L:new Promise(H=>setImmediate(()=>H(L)))});return I.hasEntries=!0,I}else return f?f.customIndex?f.customIndex.search(e,o).map(I=>{if(typeof I=="object"&&I){let{key:w,...L}=I,H=n.primaryStore.getEntry(w);return y(H),o?._freezeRecords&&Object.freeze(H?.value),{...L,...H}}return I}):f.getRange(S).map(R?function({key:I,value:w}){let L;return typeof I=="string"&&I.length>Bs.MAX_SEARCH_KEY_LENGTH?L=n.primaryStore.get(w):L={[c]:I},this.isSync?R(L)?w:nc.SKIP:new Promise((H,Z)=>setImmediate(()=>{try{H(R(L)?w:nc.SKIP)}catch(X){Z(X)}}))}:({value:I})=>I):n.primaryStore.getRange(r?{end:!0,transaction:t,reverse:!0}:{start:!0,transaction:t}).map(function(I){let{key:w,value:L}=I;return this.isSync?(y(I),L&&R(L)?w:nc.SKIP):new Promise((H,Z)=>setImmediate(()=>{try{y(I),H(L&&R(L)?w:nc.SKIP)}catch(X){Z(X)}}))});function y(I){(n.databaseName!=="system"||n.name==="hdb_analytics")&&I?.value&&qe(I.size??1,"db-read",n.name,null)}a(y,"recordRead")}function ji(e,t){if(Array.isArray(t))if(t.length>1){let r=ji(e,t[0]),n=(r?.definition?.tableClass||r?.elements?.definition?.tableClass)?.attributes??r?.properties;return n?ji(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 p9(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=a((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 o=i.next();return o.done?o:{value:o.value}},return(){if(i?.return)return i.return()}}}})}function h9(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i,o,c=new Set;return{next(){let l;if(o)for(;l=o.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:(o=s(u.value)[Symbol.iterator](),this.next())}while(!0)},return(){return o?.return?.()},throw(){return o?.throw?.()}}}})}function np(e,t,r,n,s,i){let o=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=ji(t.attributes,d),m=f.definition?.tableClass||f.elements.definition?.tableClass,p=n?.[d],h=np({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:o},m,r,p?.[d]?.joined,c[1]===m.primaryKey,i);if(!h)return;if(p){p.filters||(p.filters=[]),p.filters.push(h);return}let E=t.propertyResolvers?.[d];E.to&&(h.to=E.to);let _,R=a((y,I)=>{let w,L;return E?E.returnDirect?(w=E(y,r,I),L=ct):(L=E(y,r,I,!0),Array.isArray(L)?(w=L.map(H=>H.value),L=null):w=L?.value):w=y[d],{subObject:w,subEntry:L}},"getSubObject"),S=a((y,I)=>{if(E&&h.idFilter){if(!_)if(h.idFilter.idSet?.size===1){for(let X of h.idFilter.idSet)e={attribute:E.from??t.primaryKey,value:X};_=u(E.from??t.primaryKey,h.idFilter,!0,!0)}else _=u(E.from??t.primaryKey,h.idFilter,!1,!0);let Z=_(y);return _.idFilter&&(S.idFilter=_.idFilter),Z}let{subObject:w,subEntry:L}=R(y,I);return w?Array.isArray(w)?(!n?.[d]&&n&&(n[d]={fromRecord(Z){let X=R(Z).subObject;return Array.isArray(X)?X.filter(h).map(J=>J[m.primaryKey]):X}}),w.some(h)):h(w,L):!1},"recordFilter");return S}}switch(l instanceof Date&&(l=l.getTime()),NI[o]||o){case Bs.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,Wi.compareKeys)(d,l[0])>=0&&(0,Wi.compareKeys)(d,l[1])<=0,!0);case"gt":return u(c,d=>(0,Wi.compareKeys)(d,l)>0);case"ge":return u(c,d=>(0,Wi.compareKeys)(d,l)>=0);case"lt":return u(c,d=>(0,Wi.compareKeys)(d,l)<0);case"le":return u(c,d=>(0,Wi.compareKeys)(d,l)<=0);case"ne":return u(c,d=>(0,Wi.compareKeys)(d,l)!==0,!1,!0);case"sort":return()=>!0;default:throw new rn.ClientError(`Unknown query comparator "${o}"`)}function u(d,f,m,p){let h;m=m&&!s&&t?.indices[d]&&i>3,m&&(e.estimated_count==null&&Rg(t)(e),h=e.estimated_count>>4,(isNaN(h)||h>=i)&&(m=!1));let E=0,_=3;function R(S){let y=S[d],I;if(typeof y!="object"||!y||p?I=f(y):Array.isArray(y)?I=y.some(f):y instanceof Date&&(I=f(y.getTime())),m&&(_++,!I&&!R.idFilter&&++E/_*i>h)){let w=rd(e,r.transaction.getReadTxn(),!1,t),L;R.to?L=w.flatMap(Z=>t.primaryStore.get(Z)[R.to]):L=w.map(nd);let H=new Set(L);R.idFilter=Z=>H.has(nd(Z)),R.idFilter.idSet=H}return I}return a(R,"recordFilter"),s&&(R.idFilter=f),R}a(u,"attributeComparator")}function Rg(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/Xo(e.primaryStore):i.estimated_count}return r.estimated_count=s,r.estimated_count}let n=r.comparator||r.search_type;if(n=NI[n]||n,n===Bs.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=ji(e.attributes,s[0]),o=i.definition?.tableClass||i.elements.definition?.tableClass,c=Rg(o)({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*Xo(e.indices[i.relationship.from])/(Xo(o.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=Xo(e.primaryStore)-(i?i.getValuesCount(null):0):r.estimated_count=1/0}else if(n==="starts_with"||n==="prefix")r.estimated_count=f9*Xo(e.primaryStore)+1;else if(n==="between")r.estimated_count=d9*Xo(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=Xo(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=u9*Xo(e.primaryStore)+1}typeof r.descending=="boolean"&&(r.estimated_count/=2)}return r.estimated_count}return a(t,"estimateConditionForTable"),t}function bg(e,t){if(e)if(Zo=e,Zu.lastIndex=0,E9.test(e))try{if(t&&(t.conditions=[]),mi=t??new td,rp(mi,""),Vr!==Zo.length&&rr("Unable to parse query, unexpected end of query"),mi.parseErrorMessage&&(mi.parseError=new AI(t.parseErrorMessage),!t))throw mi.parseError;return mi}catch(r){if(r.statusCode=400,r.message=`Unable to parse query, ${r.message} at position ${Vr} in '${Zo}'`,mi.parseErrorMessage&&(r.message+=", "+mi.parseErrorMessage),t)t.parseError=r;else throw r}else return t??new URLSearchParams(e)}function rr(e){let t=`${e} at position ${Vr}`;mi.parseErrorMessage=mi.parseErrorMessage?mi.parseErrorMessage+", "+t:t}function rp(e,t){let r=Zu,n,s,i,o,c,l=decodeURIComponent,u;for(;n=r.exec(Zo);){Vr=r.lastIndex;let[,d,f]=n;o?(d&&rr(`expected operator, but encountered '${d}'`),o=!1,c=!1):c=!0;let m;switch(f){case"=":s!=null?(d.length<=2?i=d:rr(`invalid FIQL operator ${d}`),l=Q0):(l=decodeURIComponent,i="equals",d||rr("attribute must be specified before equality comparator"),s=ed(d));break;case"==":case"!=":case"<":case"<=":case">":case">=":case"===":case"!==":i=m9[f],l=II[i]?Q0:decodeURIComponent,d||rr(`attribute must be specified before comparator ${f}`),s=ed(d);break;case"&=":case"|=":case"|":case"&":case"":case void 0:if(s==null)s===void 0&&(t&&rr(`expected '${t}', but encountered ${f[0]?"'"+f[0]+"'":"end of string"}}`),rr(`no comparison specified before ${f?"'"+f+"'":"end of string"}`));else{e.conditions||rr("conditions/comparisons are not allowed in a property list");let h={comparator:i,attribute:s||null,value:l(d)};if(i==="eq"&&J0(h,d),s===""){let E=e.conditions[e.conditions.length-1];E.chainedConditions=E.chainedConditions||[],E.chainedConditions.push(h),E.operator=u}else yg(e,u),e.conditions.push(h)}f==="&"?(u="and",s=void 0):f==="|"?(u="or",s=void 0):f==="&="?(u="and",s=""):f==="|="&&(u="or",s="");break;case",":e.conditions?rr("conditions/comparisons are not allowed in a property list"):e.push(ed(d)),s=void 0;break;case"(":Zu.lastIndex=Vr;let p=rp(d?[]:new td,")");switch(d){case"":yg(e,u),e.conditions.push(p);break;case"limit":switch(p.length){case 1:e.limit=+p[0];break;case 2:e.offset=+p[0],e.limit=p[1]-e.offset;break;default:rr("limit must have 1 or 2 arguments")}break;case"select":Array.isArray(p[0])&&p.length===1&&!p[0].name?(e.select=p[0],e.select.asArray=!0):p.length===1?e.select=p[0]:p.length===2&&p[1]===""?e.select=p.slice(0,1):e.select=p;break;case"group-by":rr("group by is not implemented yet");case"sort":e.sort=X0(p);break;default:rr(`unknown query function call ${d}`)}Zo[Vr]===","?r.lastIndex=++Vr:o=!0,s=null;break;case"{":e.conditions&&rr("property sets are not allowed in a queries"),d||rr("property sets must have a defined parent property name"),Zu.lastIndex=Vr,m=rp([],"}"),m.name=d,e.push(m),Zo[Vr]===","?r.lastIndex=++Vr:o=!0;break;case"[":if(Zu.lastIndex=Vr,d?(m=rp(new td,"]"),m.name=d):m=rp(e.conditions?new td:[],"]"),e.conditions)if(yg(e,u),Zo[Vr]==="="){l=decodeURIComponent,i="equals",s=ed(d),r.lastIndex=++Vr;break}else e.conditions.push(m),s=null;else e.push(m);Zo[Vr]===","?r.lastIndex=++Vr:o=!0;break;case")":case"]":case"}":if(t===f[0]){if(e.conditions)if(s){let h={comparator:i||"equals",attribute:s,value:l(d)};i==="eq"&&J0(h,d),yg(e,u),e.conditions.push(h)}else d&&rr("no attribute or comparison specified");else(d||e.length>0&&c)&&e.push(ed(d));return e}else rr(t?`expected '${t}', but encountered '${f[0]}'`:`unexpected token '${f[0]}'`);default:rr(`unexpected operator '${f}'`)}if(t!==")"&&(r=s?_9:Zu,r.lastIndex=Vr),Vr===Zo.length)return e}t&&rr(`expected '${t}', but encountered end of string`)}function yg(e,t){e.conditions.length>0&&(e.operator?e.operator!==t&&rr("Can not mix operators within a condition grouping"):e.operator=t)}function ed(e){return e.indexOf(".")>-1?e.split(".").map(ed):decodeURIComponent(e)}function Q0(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 rn.ClientError(`Unknown type ${t}`)}return decodeURIComponent(e)}function J0(e,t){if(t.indexOf("*")>-1)if(t.endsWith("*"))e.comparator="starts_with",e.value=decodeURIComponent(t.slice(0,-1));else throw new rn.ClientError("wildcard can only be used at the end of a string")}function X0(e){let t=Z0(e[0]);return e.length>1&&(t.next=X0(e.slice(1))),t}function Z0(e){if(Array.isArray(e)){let t=Z0(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}}rr(`Unknown sort type ${e}`)}function nd(e){return Array.isArray(e)?e.join("\0"):e}function Xo(e){let t=Date.now();return(e.estimatedEntryCountExpires||0)<t&&(e.estimatedEntryCount=e.getStats().entryCount,e.estimatedEntryCountExpires=t+1e4),e.estimatedEntryCount}function g9(e,t,r){return t*r/Xo(e)}var rn,Bs,Wi,nc,u9,d9,f9,m9,II,NI,AI,E9,Zu,_9,Vr,mi,Zo,td,Ag=ie(()=>{rn=b(ge()),Bs=b(Cr()),Wi=require("ordered-binary"),nc=require("lmdb");Ig();pl();Fn();u9=.3,d9=.1,f9=.05,m9={"<":"lt","<=":"le",">":"gt",">=":"ge","!=":"ne","==":"eq","===":"equals","!==":"not_equal"},II={lt:!0,le:!0,gt:!0,ge:!0,ne:!0,eq:!0};a(wI,"executeConditions");a(rd,"searchByIndex");a(ji,"findAttribute");a(p9,"joinTo");a(h9,"joinFrom");NI={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"};a(np,"filterByType");a(Rg,"estimateCondition");AI=class extends rn.Violation{static{a(this,"SyntaxViolation")}},E9=/[()[\]|!<>.]|(=\w*=)/,Zu=/([^?&|=<>!([{}\]),]*)([([{}\])|,&]|[=<>!]*)/g,_9=/([^&|=[\]{}]+)([[\]{}]|[&|=]*)/g;a(bg,"parseQuery");a(rr,"recordError");a(rp,"parseBlock");a(yg,"assignOperator");a(ed,"decodeProperty");a(Q0,"typedDecoding");a(J0,"wildcardDecoding");a(X0,"toSortObject");a(Z0,"toSortEntry");td=class{static{a(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}};a(nd,"flattenKey");a(Xo,"estimatedEntryCount");a(g9,"intersectionEstimate")});var eB,Fs,wg=ie(()=>{eB=b(di());zi();Fs=class extends URLSearchParams{static{a(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,eB._assignPackageExport)("Resource",$t)});function tB(e,t){if(Tl=!1,e==="")return null;if(e=e.slice(1),t.splitSegments){if(e.indexOf("/")===-1)return e===""?(Tl=!0,null):t.coerceId(decodeURIComponent(e));let r=e.split("/"),n=new OI;for(let s=0;s<r.length;s++){let i=r[s];if(!i&&s===r.length-1){Tl=!0;break}n[s]=t.coerceId(decodeURIComponent(i))}return n}else{if(e==="")return Tl=!0,null;e[e.length-1]==="/"&&(Tl=!0)}return t.coerceId(decodeURIComponent(e))}function Hn(e,t){n.reliesOnPrototype=!0;let r=t.hasContent;return n;function n(s,i,o){let c,l,u,d;if(r){if(o)d=i,o=o.getContext?.()||o;else if(i)typeof s=="object"&&s&&(!Array.isArray(s)||typeof s[0]=="object")?(d=s,c=d[this.primaryKey]??null,o=i.getContext?.()||i):i?.transaction instanceof $o?o=i:d=i;else if(s&&typeof s=="object")d=s,s=void 0,c=d.getId?.()??d[this.primaryKey];else throw new sd.ClientError(`Invalid argument for data, must be an object, but got ${s}`);c===null&&(u=!0)}else i?o?(d=i,o=o.getContext?.()||o):o=i.getContext?.()||i:s&&typeof s=="object"&&!Array.isArray(s)&&(o=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 E=c.indexOf("?");E>-1&&(l=this.parseQuery(c.slice(E+1),s),c=c.slice(0,E),c===""&&(u=!0));let _=this.parsePath(c,o,l);_?.id!==void 0?(_.query&&(l?l=Object.assign(_.query,l):l=_.query),u=_.isCollection,c=_.id):c=_,c&&(l.id=c)}else if(s[Symbol.iterator]){c=[],u=!0;for(let E of s){if(typeof E=="object"&&E)break;c.push(E)}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 Fs,l.id=c,u=!1)))}c===void 0&&(c=s.id??null,c==null&&(u=!0))}else c=s,l=new Fs,l.id=c,c==null&&(t.method==="get"&&iB.default.warn?.(`Using an argument with a value of ${c} for ${t.method}, is deprecated`,new Error("Invalid id")),u=!0);l||(l=new Fs,l.id=c),u&&(l.isCollection=!0);let f;o||(o=sp.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,p=h;if((m===!1?!this.explicitContext:this.explicitContext===!1)&&(p=a(E=>sp.run(o,()=>h(E)),"runAction")),o?.transaction){let E=this.getResource(c,o,f);return E.then?E.then(p):p(E)}else return It(o,()=>{o.transaction.startedFrom={resourceName:this.name,method:t.method};let E=this.getResource(c,o,f);return E.then?E.then(p):p(E)},f);function h(E){if(o.authorize&&(o.authorize=!1,m!==!1)){let _=t.type==="read"?E.allowRead(o.user,l,o):t.type==="update"?E.doesExist?.()===!1?E.allowCreate(o.user,d,o):E.allowUpdate(o.user,d,o):t.type==="create"?E.allowCreate(o.user,d,o):E.allowDelete(o.user,l,o);if(_?.then)return _.then(R=>{if(!R)throw new sd.AccessViolation(o.user);return typeof d?.then=="function"?d.then(S=>e(E,l,o,S)):e(E,l,o,d)});if(!_)throw new sd.AccessViolation(o.user)}return typeof d?.then=="function"?d.then(_=>e(E,l,o,_)):e(E,l,o,d)}a(h,"authorizeActionOnResource")}}function as(e,t){let r=new sd.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 CI(e,t,r){let n=e.getRecord?.();if(n){let s=e.getChanges?.();return i=>{let o,c;return e.hasOwnProperty(i)&&typeof(o=e[i])!="function"?o: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 ip(e,t){let r=t.propertyResolvers,n=t.getContext?.(),s;if(typeof e=="string")return a(function o(c){return c.then?c.then(o):Array.isArray(c)?c.map(o):CI(c,r,n)(e)},"transform");if(typeof e=="object"){if(e.asArray)return a(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(c);let u=[],d=i(CI(l,r,n));for(let f of e)u.push(d(f));return u},"transform");let o=e.forceNulls;return a(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(CI(l,r,n)),f;for(let m of e){let p=d(m);p===void 0&&o&&(p=null),p?.then?(f||(f=[]),f.push(p.then(h=>u[m.name||m]=h))):u[m.name||m]=p}return f?Promise.all(f).then(()=>u):u},"transform")}else throw new Error("Invalid select argument type "+typeof e);function i(o){return c=>{if(typeof c=="string")return o(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]=ip(c.select||c,d)}let u=o(c.name);return l(u)}else return o(c);else return c}}a(i,"handleProperty")}var rB,nB,sd,sB,iB,sp,S9,$t,Tl,OI,zi=ie(()=>{rB=require("crypto");Pm();$u();nB=b(di()),sd=b(ge());Ja();Ag();sB=require("async_hooks");wg();iB=b(pr()),sp=new sB.AsyncLocalStorage,S9={json:"application/json",cbor:"application/cbor",msgpack:"application/x-msgpack",csv:"text/csv"},$t=class{static{a(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=Hn(function(t,r,n,s){let i=t.get?.(r);if(t.constructor.loadAsInstance===!1)return i;if(i?.then)return i.then(o);return o(i);function o(c){let l;if((l=r?.select)&&c!=null&&!c.selectApplied){let u=ip(l,t.constructor);return typeof c?.map=="function"?c.map(u):u(c)}return c}},{type:"read",letItLinger:!0,ensureLoaded:!0,async:!0,method:"get"});static put=Hn(function(t,r,n,s){if(Array.isArray(s)&&t.#r&&t.constructor.loadAsInstance!==!1){let i=[];for(let o of s){let c=t.constructor,l=o[c.primaryKey],u=c.getResource(l,n,{async:!0});u.then?i.push(u.then(d=>d.put(o,n))):i.push(u.put(o,n))}return Promise.all(i)}return t.put?t.constructor.loadAsInstance===!1?t.put(r,s):t.put(s,r):as(t,"put")},{hasContent:!0,type:"update",method:"put"});static patch=Hn(function(t,r,n,s){return t.patch?t.constructor.loadAsInstance===!1?t.patch(r,s):t.patch(s,r):as(t,"patch")},{hasContent:!0,type:"update",method:"patch"});static delete=Hn(function(t,r,n,s){return t.delete?t.delete(r):as(t,"delete")},{hasContent:!1,type:"delete",method:"delete"});static getNewId(){return(0,rB.randomUUID)()}static create(t,r,n){let s;return this.loadAsInstance===!1?typeof t=="object"&&t&&!n?(n=r,r=t,s=new Fs,s.isCollection=!0):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),n?n.getContext&&(n=n.getContext()):n=sp.getStore()??{},It(n,async()=>{n.transaction.startedFrom??={resourceName:this.name,method:"create"};let i=new this(s,n),o=i.create?await i.create(s,r):as(i,"create");return n.newLocation=s??o?.[this.primaryKey],n.createdResource=!0,this.loadAsInstance===!1?o:i})}static invalidate=Hn(function(t,r,n,s){return t.invalidate?t.invalidate(r):as(t,"delete")},{hasContent:!1,type:"update",method:"invalidate"});static post=Hn(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",method:"post"});static update=Hn(function(t,r,n,s){return t.update(r,s)},{hasContent:!1,type:"update",method:"update"});static connect=Hn(function(t,r,n,s){return t.connect?t.constructor.loadAsInstance===!1?t.connect(r,s):t.connect(s,r):as(t,"connect")},{hasContent:!0,type:"read",method:"connect"});static subscribe=Hn(function(t,r,n,s){return t.subscribe?t.subscribe(r):as(t,"subscribe")},{type:"read",method:"subscribe"});static publish=Hn(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):as(t,"publish")},{hasContent:!0,type:"create",method:"publish"});static search=Hn(function(t,r,n){let s=t.search?t.search(r):as(t,"search"),i=n.select;if(i&&n.hasOwnProperty("select")&&s!=null&&!s.selectApplied){let o=ip(i,t.constructor);return s.map(o)}return s},{type:"read",method:"search"});static query=Hn(function(t,r,n,s){return t.search?t.constructor.loadAsInstance===!1?t.search(r,s):t.search(s,r):as(t,"search")},{hasContent:!0,type:"read",method:"query"});static copy=Hn(function(t,r,n,s){return t.copy?t.constructor.loadAsInstance===!1?t.copy(r,s):t.copy(s,r):as(t,"copy")},{hasContent:!0,type:"create",method:"copy"});static move=Hn(function(t,r,n,s){return t.move?t.constructor.loadAsInstance===!1?t.move(r,s):t.move(s,r):as(t,"move")},{hasContent:!0,type:"delete",method:"move"});async post(t,r){if(this.constructor.loadAsInstance===!1){if(t.isCollection&&this.create)return r=await this.create(t,r),r?.[this.constructor.primaryKey]}else if(this.#r)return(await this.constructor.create(this.#e,t,this.#t)).#e;as(this,"post")}static isCollection(t){return t&&t.#r}get isCollection(){return this.#r}static coerceId(t){return t}static parseQuery(t,r){return bg(t,r)}static parsePath(t,r,n){let s=t.indexOf(".");if(s>-1){let o=t.slice(s+1),c=r?.headers&&S9[o];if(c)r.requestedContentType=c,t=t.slice(0,s);else if(this.attributes?.find(l=>l.name===o))if(t=t.slice(0,s),n)n.property=o;else return{query:{property:o},id:tB(t,this),isCollection:Tl}}let i=tB(t,this);return Tl?{id:i,isCollection:!0}:i}static getResource(t,r,n){let s,i=r.getContext?.(),o;typeof r.isCollection=="boolean"&&r.hasOwnProperty("isCollection")?o=r.isCollection:o=n?.isCollection;let c=o&&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 o&&(s.#r=!0),s}subscribe(t){return new is}connect(t,r){let n=this.constructor.loadAsInstance===!1?t:r;return n?.subscribe!==!1?this.subscribe?.(n):new is}allowRead(t,r,n){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,n){return t?.role.permission.super_user}getId(){return this.#e}getContext(){return this.#t}getCurrentUser(){return this.getContext()?.user}};(0,nB._assignPackageExport)("Resource",$t);a(tB,"pathToId");OI=class extends Array{static{a(this,"MultiPartId")}toString(){return this.join("/")}};a(Hn,"transactional");a(as,"missingMethod");a(CI,"selectFromObject");a(ip,"transformForSelect")});var yl,PI=ie(()=>{yl=class{static{a(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 LI={};Re(LI,{Resources:()=>id,keyArrayToString:()=>od,resetResources:()=>T9,resources:()=>ks});function T9(){return ks=new id,Ue.resources=ks,ks}function od(e){return Array.isArray(e)?e[e.length-1]===null?e.slice(0,-1).join("/")+"/":e.join("/"):e}var oB,aB,id,ks,sc=ie(()=>{Ja();PI();oB=b(ee()),aB=b(ge());qr();id=class extends Map{static{a(this,"Resources")}isWorker=!0;loginPath;allTypes=new Map;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:""},o=super.get(t);if(o&&(o.Resource.databaseName!==r.databaseName||o.Resource.tableName!==r.tableName)&&!s){let c=new aB.ServerError(`Conflicting paths for ${t}`);oB.default.error(c),i.Resource=new yl(c)}super.set(t,i);for(let[c]of this){let l=2;for(;(l=c.indexOf("/",l))>-1;){let u=this.get(c.slice(0,l));u&&(u.hasSubPaths=!0),l+=2}}}getMatch(t,r){let n=2,s=0,i,o=t.length;for(;n<o;){s=n,n=t.indexOf("/",n),n===-1&&(n=o);let u=n===o?t:t.slice(0,n),d=this.get(u),f=-1;if(!d&&n===o&&(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 It(r,async()=>{let s=this.getMatch(t);if(s)return t=s.relativeURL,n(s.Resource,s.path,t)})}setRepresentation(t,r,n){}};a(T9,"resetResources");a(od,"keyArrayToString")});function MI(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=lB,y9(e.primaryStore,e.auditStore)):(c=cB,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{uB(cB[i])})));let l=c[i]||(c[i]=[]);if(l.auditStore=e.auditStore,l.lastTxnTime==null&&(l.lastTxnTime=Date.now()),s?.scope==="full-database")return;let u=l[o];u||(u=l[o]=new Map,u.envs=l,u.tableId=o,u.store=e.primaryStore),t=od(t);let d=new vI(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 uB(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),dB(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=wt(s),o=e[i.tableId];if(!o)continue;let c=i.recordId,l=od(c),u=0;do{let d=o.get(l);if(d){for(let m of d)if(!(u>0&&!(m.includeDescendants&&!(m.onlyChildren&&u>1)))){if(m.startTime>=n){(0,DI.info)("omitting",c,m.startTime,n);continue}try{let p;m.supportsTransactions&&m.txnInProgress!==i.version&&(p=!0,m.txnInProgress||(r?r.push(m):r=[m]),m.txnInProgress=i.version),m.listener(c,i,n,p)}catch(p){console.error(p),(0,DI.info)(p)}}}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 y9(e,t){let r=t||e,n=r.env;if(!n.hasAfterCommitListener){n.hasAfterCommitListener=!0;let s=n.path;r.on("aftercommit",()=>{let i=lB[s];if(!i)return;let o=a(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),i.txnTime=r.threadLocalWrites[0]||Date.now();try{uB(i)}finally{r.threadLocalWrites[0]=i.lastTxnTime,r.unlock("thread-local-writes",0)}},"acquiredLock");r.attemptLock("thread-local-writes",0,o)&&o()})}}function dB(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function fB(e){return e.nextTransaction||(MI({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),dB(e)),e.nextTransaction}var DI,cB,lB,vI,UI=ie(()=>{DI=b(ee());$u();sc();$i();cB=Object.create(null),lB=Object.create(null);a(MI,"addSubscription");vI=class extends is{static{a(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"}}};a(uB,"notifyFromTransactionData");a(y9,"listenToCommits");a(dB,"nextTransaction");a(fB,"whenNextTransaction")});var pB=x((NPe,mB)=>{"use strict";var xI=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};mB.exports=xI});var EB=x((OPe,hB)=>{"use strict";var BI=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};hB.exports=BI});var op=x(gB=>{"use strict";var _B=fe(),R9=($(),P(z)),{RecordEncoder:b9}=(pl(),P(z0));_B.initSync();var A9=_B.get(R9.CONFIG_PARAMS.STORAGE_CACHING)!==!1,FI=class{static{a(this,"OpenDBIObject")}constructor(t,r=!1){this.dupSort=t===!0,this.encoding=t?"ordered-binary":"msgpack",this.useVersions=r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=A9&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:b9})}};gB.OpenDBIObject=FI});var ap=x((vPe,SB)=>{"use strict";var cs=fe(),Hs=($(),P(z));cs.initSync();var Ng=class{static{a(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=cs.get(Hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||cs.get(Hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||cs.get(Hs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",cs.get(Hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=cs.get(Hs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),cs.get(Hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=cs.get(Hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),cs.get(Hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=cs.get(Hs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),cs.get(Hs.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=cs.get(Hs.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=cs.get(Hs.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};SB.exports=Ng;Ng.MAX_DBS=1e4});var Vt=x((UPe,OB)=>{"use strict";var HI=require("lmdb"),pi=require("fs-extra"),ls=require("path"),Cg=Ms(),RB=ee(),Gn=En().LMDB_ERRORS_ENUM,Og=EB(),{OpenDBIObject:GI}=op(),bB=ap(),ic=Cr(),TB=($(),P(z)),{table:I9,resetDatabases:w9}=(Oe(),P(ht)),yB=fe(),hi=ic.INTERNAL_DBIS_NAME,AB=ic.DBI_DEFINITION_NAME,N9="data.mdb",C9="lock.mdb",cp=".mdb",O9="-lock",kI=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=Gs(t,r),this.key_type=this.dbi[ic.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[ic.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new HI.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Pg(e,t){if(e===void 0)throw new Error(Gn.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(Gn.ENV_NAME_REQUIRED)}a(Pg,"pathEnvNameValidation");async function qI(e,t,r=!0){try{await pi.access(e)}catch(n){throw n.code==="ENOENT"?new Error(Gn.INVALID_BASE_PATH):n}try{let n=ls.join(e,t+cp);return await pi.access(n,pi.constants.R_OK|pi.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await pi.access(ls.join(e,t,N9),pi.constants.R_OK|pi.constants.F_OK),ls.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(Gn.INVALID_ENVIRONMENT)}else throw new Error(Gn.INVALID_ENVIRONMENT);throw n}}a(qI,"validateEnvironmentPath");function Lg(e,t){if(Cg.validateEnv(e),t===void 0)throw new Error(Gn.DBI_NAME_REQUIRED)}a(Lg,"validateEnvDBIName");async function P9(e,t,r=!1,n=!1){Pg(e,t);let s=ls.basename(e);t=t.toString();let i=yB.get(TB.CONFIG_PARAMS.DATABASES);i||yB.setProperty(TB.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await qI(e,t,n),IB(e,t,r)}catch(o){if(o.message===Gn.INVALID_ENVIRONMENT){let c=ls.join(e,t);await pi.mkdirp(n?c:e);let l=new bB(n?c:c+cp,!1),u=HI.open(l);u.dbis=Object.create(null);let d=new GI(!1);u.openDB(hi,d),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let f=$I(e,t,r);return u[ic.ENVIRONMENT_NAME_KEY]=f,global.lmdb_map[f]=u,u}throw o}}a(P9,"createEnvironment");async function L9(e,t,r,n=!0){Pg(e,t),t=t.toString();let s=ls.join(e,t);return I9({table:t,database:ls.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(L9,"copyEnvironment");async function IB(e,t,r=!1){Pg(e,t),t=t.toString();let n=$I(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 qI(e,t),i=ls.join(e,t+cp),o=s!=i,c=new bB(s,o),l=HI.open(c);l.dbis=Object.create(null);let u=NB(l);for(let d=0;d<u.length;d++)Gs(l,u[d]);return l[ic.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(IB,"openEnvironment");async function D9(e,t,r=!1){Pg(e,t),t=t.toString();let n=ls.join(e,t+cp),s=await qI(e,t);if(global.lmdb_map!==void 0){let i=$I(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await wB(o),delete global.lmdb_map[i]}}await pi.remove(s),await pi.remove(s===n?s+O9:ls.join(ls.dirname(s),C9))}a(D9,"deleteEnvironment");async function wB(e){Cg.validateEnv(e);let t=e[ic.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(wB,"closeEnvironment");function $I(e,t,r=!1){let s=`${ls.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a($I,"getCachedEnvironmentName");function v9(e){Cg.validateEnv(e);let t=Object.create(null),r=Gs(e,hi);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==hi)try{t[n]=Object.assign(new Og,s)}catch{RB.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(v9,"listDBIDefinitions");function NB(e){Cg.validateEnv(e);let t=[],r=Gs(e,hi);for(let{key:n}of r.getRange({start:!1}))n!==hi&&t.push(n);return t}a(NB,"listDBIs");function M9(e,t){let n=Gs(e,hi).getEntry(t),s=new Og;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{RB.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(M9,"getDBIDefinition");function CB(e,t,r,n=!r){if(Lg(e,t),t=t.toString(),t===hi)throw new Error(Gn.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return Gs(e,t)}catch(s){if(s.message===Gn.DBI_DOES_NOT_EXIST){let i=new GI(r,n===!0),o=e.openDB(t,i),c=new Og(r===!0,n);return o[AB]=c,Gs(e,hi).putSync(t,c),e.dbis[t]=o,o}throw s}}a(CB,"createDBI");function Gs(e,t){if(Lg(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==hi?r=M9(e,t):r=new Og,r===void 0)throw new Error(Gn.DBI_DOES_NOT_EXIST);let n;try{let s=new GI(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(Gn.DBI_DOES_NOT_EXIST):s}return n[AB]=r,e.dbis[t]=n,n}a(Gs,"openDBI");function U9(e,t){Lg(e,t),t=t.toString();let r=Gs(e,t),n=r.getStats();return r[ic.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(U9,"statDBI");async function x9(e,t){try{let r=ls.join(e,t+cp);return(await pi.stat(r)).size}catch{throw new Error(Gn.INVALID_ENVIRONMENT)}}a(x9,"environmentDataSize");function B9(e,t){if(Lg(e,t),t=t.toString(),t===hi)throw new Error(Gn.CANNOT_DROP_INTERNAL_DBIS_NAME);Gs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],Gs(e,hi).removeSync(t)}a(B9,"dropDBI");function F9(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{Gs(e,i)}catch(o){if(o.message===Gn.DBI_DOES_NOT_EXIST)CB(e,i,i!==t,i===t),n=!0;else throw o}}n&&w9()}a(F9,"initializeDBIs");OB.exports={openDBI:Gs,openEnvironment:IB,createEnvironment:P9,listDBIs:NB,listDBIDefinitions:v9,createDBI:CB,dropDBI:B9,statDBI:U9,deleteEnvironment:D9,initializeDBIs:F9,TransactionCursor:kI,environmentDataSize:x9,copyEnvironment:L9,closeEnvironment:wB}});var DB=x((BPe,LB)=>{"use strict";var VI=Vt(),k9=ee(),PB=En().LMDB_ERRORS_ENUM;LB.exports=H9;async function H9(e){try{if(global.lmdb_map!==void 0&&e.operation!==void 0){let t=Object.keys(global.lmdb_map),r;switch(e.operation){case"drop_schema":for(let i=0;i<t.length;i++){let o=t[i];if(o.startsWith(`${e.schema}.`)||o.startsWith(`txn.${e.schema}.`))try{await VI.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==PB.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await VI.closeEnvironment(global.lmdb_map[n]),await VI.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==PB.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){k9.error(t)}}a(H9,"cleanLMDBMap")});var ea=x((kPe,UB)=>{"use strict";var MB=ue(),vB=($(),P(z)),ad=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Qi=require("joi"),oc={schema_format:{pattern:ad,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},G9=Qi.alternatives(Qi.string().min(1).max(oc.schema_length.maximum).pattern(ad).messages({"string.pattern.base":"{:#label} "+oc.schema_format.message}),Qi.number(),Qi.array()).required(),q9=Qi.alternatives(Qi.string().min(1).max(oc.schema_length.maximum).pattern(ad).messages({"string.pattern.base":"{:#label} "+oc.schema_format.message}),Qi.number()),$9=Qi.alternatives(Qi.string().min(1).max(oc.schema_length.maximum).pattern(ad).messages({"string.pattern.base":"{:#label} "+oc.schema_format.message}),Qi.number()).required();function V9(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>oc.schema_length.maximum?`'${e}' maximum of 250 characters`:ad.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(V9,"checkValidTable");function K9(e,t){return MB.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(K9,"validateSchemaExists");function Y9(e,t){let r=t.state.ancestors[0].schema;return MB.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(Y9,"validateTableExists");function W9(e,t){return e.toLowerCase()===vB.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${vB.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(W9,"validateSchemaName");UB.exports={commonValidators:oc,schemaRegex:ad,hdbSchemaTable:G9,validateSchemaExists:K9,validateTableExists:Y9,validateSchemaName:W9,checkValidTable:V9,hdbDatabase:q9,hdbTable:$9}});var Et=x((GPe,xB)=>{"use strict";var qn=require("validate.js");qn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||qn.validators.type.checks[t](e)?null:` must be a '${t}' value`};qn.validators.type.checks={Object:a(function(e){return qn.isObject(e)&&!qn.isArray(e)},"Object"),Array:qn.isArray,Integer:qn.isInteger,Number:qn.isNumber,String:qn.isString,Date:qn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};qn.validators.hasValidFileExt=function(e,t){return qn.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};xB.exports={validateObject:j9,validateObjectAsync:z9,validateBySchema:Q9};function j9(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=qn(e,t,{format:"flat"});return r?new Error(r):null}a(j9,"validateObject");async function z9(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await qn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(z9,"validateObjectAsync");function Q9(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(Q9,"validateBySchema")});var kB=x(($Pe,FB)=>{var{hdbTable:J9,hdbDatabase:BB}=ea(),X9=Et(),KI=require("joi"),Z9={undefined:"undefined",null:"null"},e7=a((e,t)=>{let r=Object.keys(e),n=r.length,s;for(let i=0;i<n;i++){let o=r[i];(!o||o.length===0||Z9[o]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${o}'`:s+=`. Invalid attribute name: '${o}'`)}return s?t.message(s):e},"customRecordsVal"),t7=KI.object({database:BB,schema:BB,table:J9,records:KI.array().items(KI.object().custom(e7)).required()});FB.exports=function(e){return X9.validateBySchema(e,t7)}});var GB=x((KPe,HB)=>{"use strict";var YI=class{static{a(this,"BridgeMethods")}createSchema(){throw new Error("createSchema bridge method is not defined")}dropSchema(){throw new Error("dropSchema bridge method is not defined")}createTable(){throw new Error("createTable bridge method is not defined")}dropTable(){throw new Error("dropTable bridge method is not defined")}createRecords(){throw new Error("createRecords bridge method is not defined")}updateRecords(){throw new Error("updateRecords bridge method is not defined")}async upsertRecords(){throw new Error("upsertRecords bridge method is not defined")}deleteRecords(){throw new Error("deleteRecords bridge method is not defined")}createAttribute(){throw new Error("createAttribute bridge method is not defined")}dropAttribute(){throw new Error("dropAttribute bridge method is not defined")}searchByConditions(){throw new Error("searchByConditions bridge method is not defined")}searchByHash(){throw new Error("searchByHash bridge method is not defined")}searchByValue(){throw new Error("searchByValue bridge method is not defined")}getDataByHash(){throw new Error("getDataByHash bridge method is not defined")}getDataByValue(){throw new Error("getDataByValue bridge method is not defined")}deleteRecordsBefore(){throw new Error("deleteRecordsBefore bridge method is not defined")}deleteAuditLogsBefore(){throw new Error("deleteAuditLogsBefore bridge method is not defined")}async readAuditLog(){throw new Error("readAuditLog bridge method is not defined")}};HB.exports=YI});var $B=x((WPe,qB)=>{"use strict";var WI=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};qB.exports=WI});var KB=x((zPe,VB)=>{"use strict";var jI=class{static{a(this,"UpdateRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n,this.original_records=s}};VB.exports=jI});var WB=x((JPe,YB)=>{"use strict";var zI=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};YB.exports=zI});var bl=x((eLe,QB)=>{"use strict";var r7=Vt(),n7=$B(),s7=KB(),i7=WB(),Ji=Ms(),lp=En().LMDB_ERRORS_ENUM,ta=($(),P(z)),o7=ue(),a7=require("uuid"),ZPe=require("lmdb"),{handleHDBError:c7,hdbErrors:l7}=ge(),jB=fe();jB.initSync();var Dg=jB.get(ta.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),QI=ta.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Rl=ta.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function u7(e,t,r,n,s=Ji.getNextMonotonicTime()){ew(e,t,r,n),JI(e,t,r);let i=new n7,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];zB(u,!0,s);let d=d7(e,t,r,u),f=u[t];o.push(d),c.push(f)}return XI(o,c,n,i,s)}a(u7,"insertRecords");function d7(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let o=r[i];if(o===t||n.hasOwnProperty(o)===!1)continue;let c=n[o];if(typeof c=="function"){let d=c([[{}]]);Array.isArray(d)&&(c=d[0][ta.FUNC_VAL],n[o]=c)}let l=Ji.getIndexedValues(c),u=e.dbis[o];if(l){Dg&&u.prefetch(l.map(d=>({key:d,value:s})),vg);for(let d=0,f=l.length;d<f;d++)u.put(l[d],s)}}Dg&&e.dbis[t].prefetch([s],vg),e.dbis[t].put(s,n,n[Rl])})}a(d7,"insertRecord");function f7(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(f7,"removeSkippedRecords");function zB(e,t,r){let n=r>0;(n||!Number.isInteger(e[Rl]))&&(e[Rl]=r||(r=Ji.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[QI]))&&(e[QI]=r||Ji.getNextMonotonicTime()):delete e[QI]}a(zB,"setTimestamps");function JI(e,t,r){r.indexOf(ta.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(ta.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(ta.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(ta.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),r7.initializeDBIs(e,t,r)}a(JI,"initializeTransaction");async function m7(e,t,r,n,s=Ji.getNextMonotonicTime()){ew(e,t,r,n),JI(e,t,r);let i=new s7,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let d=n[u],f=d[t],m;try{m=ZI(e,t,d,f,i,!0,s)}catch{i.skipped_hashes.push(f),o.push(u);continue}c.push(m),l.push(f)}return XI(c,l,n,i,s,o)}a(m7,"updateRecords");async function p7(e,t,r,n,s=Ji.getNextMonotonicTime()){try{ew(e,t,r,n)}catch(l){throw c7(l,l.message,l7.HTTP_STATUS_CODES.BAD_REQUEST)}JI(e,t,r);let i=new i7,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],d;o7.isEmpty(u[t])?(d=a7.v4(),u[t]=d):d=u[t];let f=ZI(e,t,u,d,i,!1,s);o.push(f),c.push(d)}return XI(o,c,n,i,s)}a(p7,"upsertRecords");async function XI(e,t,r,n,s,i=[]){let o=await Promise.all(e);for(let c=0,l=o.length;c<l;c++)o[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Ji.getNextMonotonicTime(),f7(r,i),n}a(XI,"finalizeWrite");function ZI(e,t,r,n,s,i=!1,o){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,d=u;if(!u){if(i)return!1;u={}}if(zB(r,!d,o),Number.isInteger(r[Rl])&&u[Rl]>r[Rl])return!1;d&&s.original_records.push(u);let f,m=a(()=>{for(let h in r){if(!r.hasOwnProperty(h)||h===t)continue;let E=r[h],_=e.dbis[h];if(_===void 0)continue;let R=u[h];if(typeof E=="function"){let y=E([[u]]);Array.isArray(y)&&(E=y[0][ta.FUNC_VAL],r[h]=E)}if(E===R)continue;let S=Ji.getIndexedValues(R);if(S){Dg&&_.prefetch(S.map(y=>({key:y,value:n})),vg);for(let y=0,I=S.length;y<I;y++)_.remove(S[y],n)}if(S=Ji.getIndexedValues(E),S){Dg&&_.prefetch(S.map(y=>({key:y,value:n})),vg);for(let y=0,I=S.length;y<I;y++)_.put(S[y],n)}}let p={...u,...r};c.put(n,p,p[Rl])},"doPut");return l?f=c.ifVersion(n,l.version,m):f=c.ifNoExists(n,m),f.then(p=>p?!0:ZI(e,t,r,n,s,i,o))}a(ZI,"updateUpsertRecord");function h7(e,t,r){if(Ji.validateEnv(e),t===void 0)throw new Error(lp.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(lp.WRITE_ATTRIBUTES_REQUIRED):new Error(lp.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(h7,"validateBasic");function ew(e,t,r,n){if(h7(e,t,r),!Array.isArray(n))throw n===void 0?new Error(lp.RECORDS_REQUIRED):new Error(lp.RECORDS_MUST_BE_ARRAY)}a(ew,"validateWrite");function vg(){}a(vg,"noop");QB.exports={insertRecords:u7,updateRecords:m7,upsertRecords:p7}});var XB=x((rLe,JB)=>{"use strict";var E7=require("uuid"),tw=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||E7.v4(),this.schema_table=`${this.schema}.${this.table}`}};JB.exports=tw});var Mg=x((sLe,ZB)=>{"use strict";var _7=XB(),rw=class extends _7{static{a(this,"LMDBCreateAttributeObject")}constructor(t,r,n,s,i=!0,o=!1){super(t,r,n,s),this.dup_sort=i,this.is_hash_attribute=o}};ZB.exports=rw});var tF=x((oLe,eF)=>{"use strict";eF.exports=S7;var g7="inserted";function S7(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===g7?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(S7,"returnObject")});var Ug=x((cLe,nF)=>{"use strict";var T7=($(),P(z)),nw=Vt(),y7=bl(),{getSystemSchemaPath:R7,getSchemaPath:b7}=tr(),{validateBySchema:A7}=Et(),up=require("joi"),I7=Mg(),w7=tF(),{handleHDBError:N7,hdbErrors:C7,ClientError:O7}=ge(),rF=ue(),{HTTP_STATUS_CODES:P7}=C7,L7="inserted";nF.exports=D7;async function D7(e){let t=A7(e,up.object({database:up.string(),schema:up.string(),table:up.string().required(),attribute:up.string().required()}));if(t)throw new O7(t.message);let r=!e.skip_table_check&&rF.checkGlobalSchemaTable(e.schema,e.table);if(r)throw N7(new Error,r,P7.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=rF.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 I7(e.schema,e.table,e.attribute,e.id);try{let i=await nw.openEnvironment(b7(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${e.attribute}' already exists in ${e.schema}.${e.table}`);nw.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await nw.openEnvironment(R7(),T7.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await y7.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdbAttributeAttributes,[s]);return w7(L7,c,{records:[s]},l)}catch(i){throw i}}a(D7,"lmdbCreateAttribute")});var dp=x((uLe,iF)=>{"use strict";var ra=ue(),sF=ee(),{getDatabases:v7}=(Oe(),P(ht)),{ClientError:Al}=ge();iF.exports=M7;function M7(e){if(ra.isEmpty(e))throw new Al("invalid update parameters defined.");if(ra.isEmptyOrZeroLength(e.schema))throw new Al("invalid schema specified.");if(ra.isEmptyOrZeroLength(e.table))throw new Al("invalid table specified.");if(!Array.isArray(e.records))throw new Al("records must be an array");let t=v7()[e.schema]?.[e.table];if(ra.isEmpty(t))throw new Al(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.primaryKey,n=new Set,s={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(o=>{if(i&&ra.isEmptyOrZeroLength(o[r]))throw sF.error("a valid hash attribute must be provided with update record:",o),new Al("a valid hash attribute must be provided with update record, check log for more info");if(!ra.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw sF.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Al(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!ra.isEmpty(o[r])&&o[r]!==""&&n.has(ra.autoCast(o[r]))&&(o.skip=!0),n.add(ra.autoCast(o[r]));for(let c in o)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}a(M7,"insertUpdateValidate")});var xg=x((fLe,aF)=>{"use strict";var oF=ue(),U7=($(),P(z)),x7=ee(),B7=Ug(),F7=Mg(),k7=na(),{SchemaEventMsg:H7}=us(),G7="already exists in";aF.exports=q7;async function q7(e,t,r){if(oF.isEmptyOrZeroLength(r))return r;let n=[];oF.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 $7(e,t.schema,t.name,i)})),s}a(q7,"lmdbCheckForNewAttributes");async function $7(e,t,r,n){let s=new F7(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await V7(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(G7))x7.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a($7,"createNewAttribute");async function V7(e){let t;return t=await B7(e),k7.signalSchemaChange(new H7(process.pid,U7.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(V7,"createAttribute")});var cd=x((pLe,cF)=>{"use strict";var sw=class{static{a(this,"LMDBTransactionObject")}constructor(t,r,n,s,i=void 0){this.operation=t,this.user_name=r,this.timestamp=n,this.hash_values=s,this.origin=i}};cF.exports=sw});var uF=x((ELe,lF)=>{"use strict";var K7=cd(),Y7=($(),P(z)).OPERATIONS_ENUM,iw=class extends K7{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(Y7.INSERT,r,n,s,i),this.records=t}};lF.exports=iw});var fF=x((gLe,dF)=>{"use strict";var W7=cd(),j7=($(),P(z)).OPERATIONS_ENUM,ow=class extends W7{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(j7.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};dF.exports=ow});var pF=x((TLe,mF)=>{"use strict";var z7=cd(),Q7=($(),P(z)).OPERATIONS_ENUM,aw=class extends z7{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(Q7.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};mF.exports=aw});var EF=x((RLe,hF)=>{"use strict";var J7=cd(),X7=($(),P(z)).OPERATIONS_ENUM,cw=class extends J7{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(X7.DELETE,n,s,t,i),this.original_records=r}};hF.exports=cw});var fp=x((ALe,TF)=>{"use strict";var _F=Vt(),Z7=uF(),eee=fF(),tee=pF(),ree=EF(),ld=Cr(),gF=ue(),{CONFIG_PARAMS:nee}=($(),P(z)),SF=fe();SF.initSync();var Bg=($(),P(z)).OPERATIONS_ENUM,{getTransactionAuditStorePath:see}=tr();TF.exports=iee;async function iee(e,t){if(SF.get(nee.LOGGING_AUDITLOG)===!1)return;let r=see(e.schema,e.table),n=await _F.openEnvironment(r,e.table,!0),s=oee(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){_F.initializeDBIs(n,ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,ld.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),gF.isEmpty(s.user_name)||n.dbis[ld.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[ld.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a(iee,"writeTransaction");function oee(e,t){let r=gF.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===Bg.INSERT)return new Z7(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Bg.UPDATE)return new eee(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Bg.UPSERT)return new tee(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Bg.DELETE)return new ree(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(oee,"createTransactionObject")});var lw=x((NLe,yF)=>{"use strict";var aee=dp(),wLe=Nm(),mp=($(),P(z)),cee=Cm(),lee=bl().insertRecords,uee=Vt(),dee=ee(),fee=xg(),{getSchemaPath:mee}=tr(),pee=fp();yF.exports=hee;async function hee(e){try{let{schemaTable:t,attributes:r}=aee(e);cee(e,r,t.hash_attribute),e.schema!==mp.SYSTEM_SCHEMA_NAME&&(r.includes(mp.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(mp.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(mp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(mp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await fee(e.hdb_auth_header,t,r),s=mee(e.schema,e.table),i=await uee.openEnvironment(s,e.table),o=await lee(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await pee(e,o)}catch(c){dee.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(hee,"lmdbCreateRecords")});var AF=x((OLe,bF)=>{"use strict";var RF=($(),P(z)),Eee=lw(),_ee=Nm(),gee=require("fs-extra"),{getSchemaPath:See}=tr();bF.exports=Tee;async function Tee(e){let t=[{name:e.schema,createddate:Date.now()}],r=new _ee(RF.SYSTEM_SCHEMA_NAME,RF.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await Eee(r),await gee.mkdirp(See(e.schema))}a(Tee,"lmdbCreateSchema")});var wF=x((LLe,IF)=>{"use strict";var uw=class{static{a(this,"DeleteRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.deleted=t,this.skipped=r,this.txn_time=n,this.original_records=s}};IF.exports=uw});var PF=x((vLe,OF)=>{"use strict";var NF=Vt(),dw=Ms(),fw=En().LMDB_ERRORS_ENUM,CF=ee(),yee=require("lmdb"),Ree=wF(),bee=($(),P(z)),Aee=bee.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function Iee(e,t,r,n){if(dw.validateEnv(e),t===void 0)throw new Error(fw.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(fw.IDS_REQUIRED):new Error(fw.IDS_MUST_BE_ITERABLE);try{let s=NF.listDBIs(e);NF.initializeDBIs(e,t,s);let i=new Ree,o,c=[],l=[];for(let m=0,p=r.length;m<p;m++)try{o=r[m];let h=e.dbis[t].get(o);if(!h||n&&h[Aee]>n){i.skipped.push(o);continue}let E=e.dbis[t].ifVersion(o,yee.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let _=0;_<s.length;_++){let R=s[_];if(!h.hasOwnProperty(R)||R===t)continue;let S=e.dbis[R],y=h[R];if(y!=null)try{let I=dw.getIndexedValues(y);if(I)for(let w=0,L=I.length;w<L;w++)S.remove(I[w],o)}catch{CF.warn(`cannot delete from attribute: ${R}, ${y}:${o}`)}}});c.push(E),l.push(o),i.original_records.push(h)}catch(h){CF.warn(h),i.skipped.push(o)}let u=[],d=await Promise.all(c);for(let m=0,p=d.length;m<p;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 p=u[m];i.original_records.splice(p-f,1),f++}return i.txn_time=dw.getNextMonotonicTime(),i}catch(s){throw s}}a(Iee,"deleteRecords");OF.exports={deleteRecords:Iee}});var pp=x((ULe,DF)=>{"use strict";var ud=ue(),wee=PF(),Nee=Vt(),{getSchemaPath:Cee}=tr(),Oee=fp(),Pee=ee();DF.exports=Lee;async function Lee(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(ud.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(ud.isEmptyOrZeroLength(e.hash_values)&&!ud.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];ud.isEmpty(l)||e.hash_values.push(l)}}if(ud.isEmptyOrZeroLength(e.hash_values))return LF([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(ud.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=Cee(e.schema,e.table),i=await Nee.openEnvironment(s,e.table),o=await wee.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await Oee(e,o)}catch(c){Pee.error(`unable to write transaction due to ${c.message}`)}return LF(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(Lee,"lmdbDeleteRecords");function LF(e,t,r){let n=e.length+t.length,s=n===1?"record":"records";return{message:`${e.length} of ${n} ${s} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}a(LF,"createDeleteResponse")});var pw=x((BLe,vF)=>{"use strict";var Dee=($(),P(z));function mw(e,t){let r=Object.create(null);if(t.length===1&&Dee.SEARCH_WILDCARDS.indexOf(t[0])>=0)Object.assign(r,e);else for(let n=0;n<t.length;n++){let s=t[n],i=e[s];r[s]=i===void 0?null:i}return r}a(mw,"parseRow");function vee(e,t,r,n){let s=mw(r,e);n.push(s)}a(vee,"searchAll");function Mee(e,t,r,n){let s=mw(r,e);n[t]=s}a(Mee,"searchAllToMap");function Uee(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(Uee,"iterateDBI");function Il(e,t,r,n,s){let i=Object.create(null);i[s]=e;let o;n===s?o=e:(o=t,n!==void 0&&(i[n]=o)),r[0].push(o),r[1].push(i)}a(Il,"pushResults");function xee(e,t,r,n,s,i){t.toString().endsWith(e)&&Il(t,r,n,s,i)}a(xee,"endsWith");function Bee(e,t,r,n,s,i){t.toString().includes(e)&&Il(t,r,n,s,i)}a(Bee,"contains");function Fee(e,t,r,n,s,i){t>e&&Il(t,r,n,s,i)}a(Fee,"greaterThanCompare");function kee(e,t,r,n,s,i){t>=e&&Il(t,r,n,s,i)}a(kee,"greaterThanEqualCompare");function Hee(e,t,r,n,s,i){t<e&&Il(t,r,n,s,i)}a(Hee,"lessThanCompare");function Gee(e,t,r,n,s,i){t<=e&&Il(t,r,n,s,i)}a(Gee,"lessThanEqualCompare");vF.exports={parseRow:mw,searchAll:vee,searchAllToMap:Mee,iterateDBI:Uee,endsWith:xee,contains:Bee,greaterThanCompare:Fee,greaterThanEqualCompare:kee,lessThanCompare:Hee,lessThanEqualCompare:Gee,pushResults:Il}});var dd=x((HLe,HF)=>{"use strict";var ac=Vt(),ds=Ms(),Fg=Cr(),or=En().LMDB_ERRORS_ENUM,qee=($(),P(z)),kg=pw(),{parseRow:$ee}=kg,kLe=require("lmdb"),{OVERFLOW_MARKER:MF,MAX_SEARCH_KEY_LENGTH:Vee}=Fg;function UF(e,t,r,n=!1,s=void 0,i=void 0){return wl(e,t,r,(o,c)=>c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}))}a(UF,"iterateFullIndex");function hp(e,t,r,n,s,i=!1,o=void 0,c=void 0,l=!1,u=!1){return wl(e,t,r,(d,f,m,p)=>{let S={transaction:d,start:i===!0?s:n,end:i===!0?n:s,reverse:i,limit:o,offset:c,inclusiveEnd:i===!0?!l:!u,exclusiveStart:i===!0?u:l};return p===r?(S.values=!1,f.getRange(S).map(y=>({value:y}))):f.getRange(S)})}a(hp,"iterateRangeBetween");function wl(e,t,r,n){let s=e.database||e,i=ac.openDBI(s,r);i[Fg.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&ac.openDBI(s,t);let o;e.database?o=e:(o=e.useReadTransaction(),o.database=e);let c=n(o,i,s,t);return c.transaction=o,e.database||(c.onDone=()=>{o.done()}),c}a(wl,"setupTransaction");function xF(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(MF)){if(!s)if(r)s=ac.openDBI(e,r);else{let l=ac.listDBIs(e);for(let u=0,d=l.length;u<d&&(s=ac.openDBI(e,l[u]),!s[Fg.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(xF,"getOverflowCheck");function Kee(e,t,r,n=!1,s=void 0,i=void 0){if(ds.validateEnv(e),t===void 0)throw new Error(or.HASH_ATTRIBUTE_REQUIRED);return wl(e,t,t,(o,c,l)=>(Hg(r),r=Ep(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>$ee(u.value,r))))}a(Kee,"searchAll");function Yee(e,t,r,n=!1,s=void 0,i=void 0){if(ds.validateEnv(e),t===void 0)throw new Error(or.HASH_ATTRIBUTE_REQUIRED);Hg(r),r=Ep(e.database||e,r);let o=new Map;for(let{key:c,value:l}of UF(e,t,t,n,s,i))o.set(c,kg.parseRow(l,r));return o}a(Yee,"searchAllToMap");function Wee(e,t,r=!1,n=void 0,s=void 0){if(ds.validateEnv(e),t===void 0)throw new Error(or.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=UF(e,void 0,t,r,n,s),c=o.transaction,l=xF(c.database,c,void 0,t);for(let{key:u,value:d}of o){let f=l(u,d);i[f]===void 0&&(i[f]=[]),i[f].push(d)}return i}a(Wee,"iterateDBI");function jee(e,t){if(ds.validateEnv(e),t===void 0)throw new Error(or.HASH_ATTRIBUTE_REQUIRED);return ac.statDBI(e,t).entryCount}a(jee,"countAll");function zee(e,t,r,n,s=!1,i=void 0,o=void 0){return cc(e,r,n),wl(e,t,r,(c,l,u,d)=>(n=ds.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:o}).map(f=>({key:n,value:f}))))}a(zee,"equals");function Qee(e,t,r){return cc(e,t,r),ac.openDBI(e,t).getValuesCount(r)}a(Qee,"count");function Jee(e,t,r,n,s=!1,i=void 0,o=void 0){return cc(e,r,n),wl(e,null,r,(c,l)=>{n=ds.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(o)?o++:i++),d=l.getRange({transaction:c,start:f,end:void 0,reverse:s,limit:i,offset:o}).map(m=>{let{key:p}=m;if(p!==f){if(p.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:o}).map(f=>{if(f.key.toString().startsWith(n))return f;if(u===!0)return d.DONE}),u?d:d.filter(f=>f)})}a(Jee,"startsWith");function Xee(e,t,r,n,s=!1,i=void 0,o=void 0){return BF(e,t,r,n,s,i,o,!0)}a(Xee,"endsWith");function BF(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return cc(e,r,n),wl(e,null,r,(l,u,d,f)=>{let m=xF(d,l,f,r);return o=Number.isInteger(o)?o:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(p=>{let h=p.toString();return h.endsWith(MF)?u.getValues(p,{transaction:l}).map(E=>{let _=m(p,E);if(c?_.endsWith(n):_.includes(n))return{key:_,value:E}}).filter(E=>E):(c?h.endsWith(n):h.includes(n))?u[Fg.DBI_DEFINITION_NAME].is_hash_attribute?{key:p,value:p}:u.getValues(p,{transaction:l}).map(E=>({key:p,value:E})):[]}).slice(o,i===void 0?void 0:i+(o||0))})}a(BF,"contains");function Zee(e,t,r,n,s=!1,i=void 0,o=void 0){cc(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),hp(e,t,r,n,l,s,i,o,!0,!1)}a(Zee,"greaterThan");function ete(e,t,r,n,s=!1,i=void 0,o=void 0){cc(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),hp(e,t,r,n,l,s,i,o,!1,!1)}a(ete,"greaterThanEqual");function tte(e,t,r,n,s=!1,i=void 0,o=void 0){cc(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),hp(e,t,r,l,n,s,i,o,!1,!0)}a(tte,"lessThan");function rte(e,t,r,n,s=!1,i=void 0,o=void 0){cc(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),hp(e,t,r,l,n,s,i,o,!1,!1)}a(rte,"lessThanEqual");function nte(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(ds.validateEnv(e),r===void 0)throw new Error(or.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(or.START_VALUE_REQUIRED);if(s===void 0)throw new Error(or.END_VALUE_REQUIRED);if(n=ds.convertKeyValueToWrite(n),s=ds.convertKeyValueToWrite(s),n>s)throw new Error(or.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return hp(e,t,r,n,s,i,o,c)}a(nte,"between");function ste(e,t,r,n){ds.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(or.HASH_ATTRIBUTE_REQUIRED);if(Hg(r),r=Ep(s,r),n===void 0)throw new Error(or.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=kg.parseRow(c,r)),o}a(ste,"searchByHash");function ite(e,t,r){ds.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(or.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(or.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(ite,"checkHashExists");function ote(e,t,r,n,s=[]){return kF(e,t,r,n,s),FF(e,t,r,n,s).map(i=>i[1])}a(ote,"batchSearchByHash");function ate(e,t,r,n,s=[]){kF(e,t,r,n,s);let i=new Map;for(let[o,c]of FF(e,t,r,n,s))i.set(o,c);return i}a(ate,"batchSearchByHashToMap");function FF(e,t,r,n,s=[]){return wl(e,t,t,(i,o,c)=>{r=Ep(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,kg.parseRow(d,r)];s.push(u)}).filter(u=>u)})}a(FF,"batchHashSearch");function kF(e,t,r,n,s){if(ds.validateEnv(e),t===void 0)throw new Error(or.HASH_ATTRIBUTE_REQUIRED);if(Hg(r),n==null)throw new Error(or.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(or.IDS_MUST_BE_ITERABLE)}a(kF,"initializeBatchSearchByHash");function Hg(e){if(!Array.isArray(e))throw e===void 0?new Error(or.FETCH_ATTRIBUTES_REQUIRED):new Error(or.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Hg,"validateFetchAttributes");function cc(e,t,r){if(ds.validateEnv(e),t===void 0)throw new Error(or.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(or.SEARCH_VALUE_REQUIRED);if(r?.length>Vee)throw new Error(or.SEARCH_VALUE_TOO_LARGE)}a(cc,"validateComparisonFunctions");function Ep(e,t){return t.length===1&&qee.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=ac.listDBIs(e)),t}a(Ep,"setGetWholeRowAttributes");HF.exports={searchAll:Kee,searchAllToMap:Yee,count:Qee,countAll:jee,equals:zee,startsWith:Jee,endsWith:Xee,contains:BF,searchByHash:ste,setGetWholeRowAttributes:Ep,batchSearchByHash:ote,batchSearchByHashToMap:ate,checkHashExists:ite,iterateDBI:Wee,greaterThan:Zee,greaterThanEqual:ete,lessThan:tte,lessThanEqual:rte,between:nte}});var fd=x((qLe,KF)=>{var GF=require("lodash"),qF=Et(),ze=require("joi"),cte=ue(),{hdbSchemaTable:_p,checkValidTable:$F,hdbTable:VF,hdbDatabase:Gg}=ea(),{handleHDBError:lte,hdbErrors:ute}=ge(),{getDatabases:dte}=(Oe(),P(ht)),{HTTP_STATUS_CODES:fte}=ute,mte=ze.object({database:Gg,schema:Gg,table:VF,attribute:_p,value:ze.any().required(),get_attributes:ze.array().min(1).items(ze.alternatives(_p,ze.object())).optional(),desc:ze.bool(),limit:ze.number().integer().min(1),offset:ze.number().integer().min(0)}),pte=ze.object({database:Gg,schema:Gg,table:VF,operator:ze.string().valid("and","or").default("and").lowercase(),offset:ze.number().integer().min(0),limit:ze.number().integer().min(1),get_attributes:ze.array().min(1).items(ze.alternatives(_p,ze.object())).optional(),sort:ze.object({attribute:ze.alternatives(_p,ze.array().min(1)),descending:ze.bool().optional()}).optional(),conditions:ze.array().min(1).items(ze.alternatives(ze.object({operator:ze.string().valid("and","or").default("and").lowercase(),conditions:ze.array()}),ze.object({attribute:ze.alternatives(_p,ze.array().min(1)),comparator:ze.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),value:ze.when("comparator",{switch:[{is:"equals",then:ze.any()},{is:"between",then:ze.array().items(ze.alternatives([ze.string(),ze.number()])).length(2)}],otherwise:ze.alternatives(ze.string(),ze.number())}).required()}))).required()});KF.exports=function(e,t){let r=null;switch(t){case"value":r=qF.validateBySchema(e,mte);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i($F("database",e.schema)),i($F("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(o=>typeof o=="string"||typeof o=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(o=>typeof o=="string"||typeof o=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),s&&(r=new Error(s.trim()));break;case"conditions":r=qF.validateBySchema(e,pte);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=cte.checkGlobalSchemaTable(e.schema,e.table);if(s)return lte(new Error,s,fte.NOT_FOUND);let o=dte()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.attribute);let l=a(d=>{for(let f of d.conditions)f.conditions?l(f):c.push(f.attribute)},"addConditions");t==="conditions"&&l(e);let u=GF.filter(c,d=>d!=="*"&&!d.startsWith?.("$")&&d.attribute!=="*"&&!Array.isArray(d)&&!d.name&&!GF.some(o,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 hw=x((VLe,YF)=>{"use strict";var hte=Vt(),Ete=fd(),{getSchemaPath:_te}=tr();YF.exports=gte;function gte(e){let t=Ete(e,"hashes");if(t)throw t;let r=_te(e.schema,e.table);return hte.openEnvironment(r,e.table)}a(gte,"initialize")});var Ew=x((YLe,WF)=>{"use strict";var Ste=dd(),Tte=hw();WF.exports=yte;async function yte(e){let t=await Tte(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return Ste.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(yte,"lmdbGetDataByHash")});var zF=x((jLe,jF)=>{"use strict";var Rte=dd(),bte=hw();jF.exports=Ate;async function Ate(e){let t=await bte(e),r=global.hdb_schema[e.schema][e.table];return Rte.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(Ate,"lmdbSearchByHash")});var Nl=x((QLe,Ite)=>{Ite.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:"id",table:"hdb_license",database:"system",audit:!0,attributes:[{attribute:"id"},{name:"level"},{name:"region",indexed:!0},{name:"reads"},{name:"writes"},{name:"readBytes"},{name:"writeBytes"},{name:"realTimeMessages"},{name:"realTimeBytes"},{name:"cpuTime"},{name:"storage"},{name:"usedReads"},{name:"usedWrites"},{name:"usedReadBytes"},{name:"usedWriteBytes"},{name:"usedRealTimeMessages"},{name:"usedRealTimeBytes"},{name:"usedCpuTime"},{name:"usedStorage"},{name:"expiration"},{name:"autoRenew"},{name:"__createdtime__",indexed:!0},{name:"__updatedtime__",indexed:!0}]},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"}]},hdb_certificate_cache:{hash_attribute:"certificate_id",name:"hdb_certificate_cache",schema:"system",attributes:[{attribute:"certificate_id"}]},hdb_crl_cache:{hash_attribute:"distribution_point",name:"hdb_crl_cache",schema:"system",attributes:[{attribute:"distribution_point"}]},hdb_revoked_certificates:{hash_attribute:"composite_id",name:"hdb_revoked_certificates",schema:"system",attributes:[{attribute:"composite_id"}]}}});var qg=x((JLe,tk)=>{"use strict";var gn=dd(),wte=Vt(),Nte=ue(),Qe=Cr(),Cl=($(),P(z)),Cte=Nl(),QF=En().LMDB_ERRORS_ENUM,{getSchemaPath:Ote}=tr(),sa=Cl.SEARCH_WILDCARDS;async function Pte(e,t,r){let n;e.schema===Cl.SYSTEM_SCHEMA_NAME?n=Cte[e.table]:n=global.hdb_schema[e.schema][e.table];let s=ek(e,n.hash_attribute,r,t);return XF(e,s,n.hash_attribute,r)}a(Pte,"prepSearch");async function XF(e,t,r,n){let s=Ote(e.schema,e.table),i=await wte.openEnvironment(s,e.table),o=ZF(i,e,t,r),c=o.transaction||i;if([Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,Qe.SEARCH_TYPES.SEARCH_ALL,Qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(Lte(e,r)===!1){let d=e.attribute;if(d===r)return n?JF(o,()=>!0):o.map(m=>({[r]:m.key}));let f=a(m=>({[r]:m.value,[d]:m.key}),"toObject");return n?JF(o,f):o.map(f)}let u=e.attribute===r?o.map(d=>d.key):o.map(d=>d.value);return n===!0?gn.batchSearchByHashToMap(c,r,e.get_attributes,u):gn.batchSearchByHash(c,r,e.get_attributes,u)}a(XF,"executeSearch");function ZF(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:o,limit:c,offset:l}=t;switch(o=typeof o=="boolean"?o:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case Qe.SEARCH_TYPES.EQUALS:s=gn.equals(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.CONTAINS:s=gn.contains(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.ENDS_WITH:case Qe.SEARCH_TYPES._ENDS_WITH:s=gn.endsWith(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.STARTS_WITH:case Qe.SEARCH_TYPES._STARTS_WITH:s=gn.startsWith(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return gn.batchSearchByHash(e,t.attribute,t.get_attributes,[t.value]);case Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return gn.batchSearchByHashToMap(e,t.attribute,t.get_attributes,[t.value]);case Qe.SEARCH_TYPES.SEARCH_ALL:return gn.searchAll(e,n,t.get_attributes,o,c,l);case Qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return gn.searchAllToMap(e,n,t.get_attributes,o,c,l);case Qe.SEARCH_TYPES.BETWEEN:s=gn.between(e,i,t.attribute,t.value,t.end_value,o,c,l);break;case Qe.SEARCH_TYPES.GREATER_THAN:case Qe.SEARCH_TYPES._GREATER_THAN:s=gn.greaterThan(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.GREATER_THAN_EQUAL:case Qe.SEARCH_TYPES._GREATER_THAN_EQUAL:s=gn.greaterThanEqual(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.LESS_THAN:case Qe.SEARCH_TYPES._LESS_THAN:s=gn.lessThan(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.LESS_THAN_EQUAL:case Qe.SEARCH_TYPES._LESS_THAN_EQUAL:s=gn.lessThanEqual(e,i,t.attribute,t.value,o,c,l);break;default:return Object.create(null)}return s}a(ZF,"searchByType");function JF(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(JF,"createMapFromIterable");function Lte(e,t){if(e.get_attributes.length===1&&e.get_attributes[0]==="*")return!0;let r=[e.attribute];e.get_attributes.indexOf(t)>=0&&r.push(t);let n=!1;for(let s=0;s<e.get_attributes.length;s++)if(r.indexOf(e.get_attributes[s])<0){n=!0;break}return n}a(Lte,"checkToFetchMore");function ek(e,t,r,n){if(Nte.isEmpty(n)){let s=e.value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),o=s.charAt(s.length-1),c=!1;if(e.attribute===t&&(c=!0),sa.indexOf(s)>-1)return r===!0?Qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:Qe.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(sa[0])<0&&s.indexOf(sa[1])<0)return c===!0?r===!0?Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:Qe.SEARCH_TYPES.EQUALS;if(sa.indexOf(i)>=0&&sa.indexOf(o)>=0)return e.value=e.value.slice(1,-1),Qe.SEARCH_TYPES.CONTAINS;if(sa.indexOf(i)>=0)return e.value=e.value.substr(1),Qe.SEARCH_TYPES.ENDS_WITH;if(sa.indexOf(o)>=0)return e.value=e.value.slice(0,-1),Qe.SEARCH_TYPES.STARTS_WITH;if(s.includes(sa[0])||s.includes(sa[1]))return Qe.SEARCH_TYPES.EQUALS;throw new Error(QF.UNKNOWN_SEARCH_TYPE)}else switch(n){case Cl.VALUE_SEARCH_COMPARATORS.BETWEEN:return Qe.SEARCH_TYPES.BETWEEN;case Cl.VALUE_SEARCH_COMPARATORS.GREATER:return Qe.SEARCH_TYPES.GREATER_THAN;case Cl.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return Qe.SEARCH_TYPES.GREATER_THAN_EQUAL;case Cl.VALUE_SEARCH_COMPARATORS.LESS:return Qe.SEARCH_TYPES.LESS_THAN;case Cl.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return Qe.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(QF.UNKNOWN_SEARCH_TYPE)}}a(ek,"createSearchTypeFromSearchObject");tk.exports={executeSearch:XF,createSearchTypeFromSearchObject:ek,prepSearch:Pte,searchByType:ZF}});var nk=x((ZLe,rk)=>{"use strict";var Dte=fd(),vte=ue(),Mte=($(),P(z)),Ute=qg();rk.exports=xte;function xte(e,t){if(!vte.isEmpty(t)&&Mte.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Dte(e,"value");if(n)throw n;return Ute.prepSearch(e,t,!0)}a(xte,"lmdbGetDataByValue")});var Xi=x((tDe,sk)=>{"use strict";var _w=class{static{a(this,"SearchObject")}constructor(t,r,n,s,i,o,c,l=!1,u=void 0,d=void 0){this.schema=t,this.table=r,this.attribute=n,this.value=s,this.hash_attribute=i,this.get_attributes=o,this.end_value=c,this.reverse=l,this.limit=u,this.offset=d}};sk.exports=_w});var gp=x((sDe,ik)=>{"use strict";var nDe=Xi(),Bte=fd(),Fte=ue(),kte=($(),P(z)),Hte=qg();ik.exports=Gte;async function Gte(e,t){if(!Fte.isEmpty(t)&&kte.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Bte(e,"value");if(n)throw n;return Hte.prepSearch(e,t,!1)}a(Gte,"lmdbSearchByValue")});var ak=x((aDe,ok)=>{"use strict";var oDe=Cr(),gw=class{static{a(this,"SearchByConditionsObject")}constructor(t,r,n,s,i=void 0,o=void 0,c="and"){this.schema=t,this.table=r,this.get_attributes=n,this.limit=i,this.offset=o,this.conditions=s,this.operator=c}},Sw=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.attribute=t,this.comparator=r,this.value=n}},Tw=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};ok.exports={SearchByConditionsObject:gw,SearchCondition:Sw,SortAttribute:Tw}});var fk=x((dDe,dk)=>{"use strict";var{SearchByConditionsObject:lDe,SearchCondition:uDe}=ak(),qte=Xi(),$te=fd(),yw=dd(),$g=Cr(),uk=qg(),Vte=pw(),Kte=require("lodash"),{getSchemaPath:Yte}=tr(),ck=Vt(),{handleHDBError:Wte,hdbErrors:jte}=ge(),{HTTP_STATUS_CODES:zte}=jte,Qte=1e8;dk.exports=Jte;async function Jte(e){let t=$te(e,"conditions");if(t)throw Wte(t,t.message,zte.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=Yte(e.schema,e.table),n=await ck.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)ck.openDBI(n,u.attribute);let i=Kte.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let d=u.comparator;d===$g.SEARCH_TYPES.EQUALS?u.estimated_count=yw.count(n,u.attribute,u.value):d===$g.SEARCH_TYPES.CONTAINS||d===$g.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=Qte}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await lk(o,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(uk.filterByType),f=d.length,m=yw.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(p=>u.get(p,{transaction:o,lazy:!0})),f>0&&(l=l.filter(p=>{for(let h=0;h<f;h++)if(!d[h](p))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(p=>Vte.parseRow(p,m))}else{for(let f=1;f<i.length;f++){let m=i[f],p=await lk(o,e,m,s.hash_attribute);c=c.concat(p)}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=yw.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(Jte,"lmdbSearchByConditions");async function lk(e,t,r,n){let s=new qte(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.comparator;return s.attribute=r.attribute,i===$g.SEARCH_TYPES.BETWEEN?(s.value=r.value[0],s.end_value=r.value[1]):s.value=r.value,uk.searchByType(e,s,i,n).map(o=>o.value)}a(lk,"executeConditionSearch")});var Sp=x((mDe,mk)=>{"use strict";var Rw=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};mk.exports=Rw});var Tp=x((hDe,pk)=>{"use strict";var Xte=($(),P(z)).OPERATIONS_ENUM,bw=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=Xte.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};pk.exports=bw});var Aw=x((_De,Rk)=>{"use strict";var gk=Xi(),Sk=Tp(),Tk=gp(),yk=pp(),$n=($(),P(z)),hk=ue(),Ek=Vt(),{getTransactionAuditStorePath:Zte,getSchemaPath:ere}=tr(),_k=ee();Rk.exports=tre;async function tre(e){try{if(hk.isEmpty(global.hdb_schema[e.schema])||hk.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await rre(e),await nre(e);let t=ere(e.schema,e.table);try{await Ek.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")_k.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=Zte(e.schema,e.table);await Ek.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")_k.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(tre,"lmdbDropTable");async function rre(e){let t=new gk($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,$n.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[$n.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await Tk(t)),n=[];for(let i=0;i<r.length;i++){let o=r[i];n.push(o.id)}if(n.length===0)return;let s=new Sk($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await yk(s)}a(rre,"deleteAttributesFromSystem");async function nre(e){let t=new gk($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,$n.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[$n.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,$n.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,$n.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await Tk(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let o=r[i];o.name===e.table&&o.schema===e.schema&&(n=o)}if(!n)throw new Error(`${e.schema}.${e.table} was not found`);let s=new Sk($n.SYSTEM_SCHEMA_NAME,$n.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await yk(s)}catch(i){throw i}}a(nre,"dropTableFromSystem")});var Ak=x((SDe,bk)=>{"use strict";var sre=require("fs-extra"),ire=Xi(),ore=Sp(),are=Tp(),cre=Aw(),lre=pp(),ure=Ew(),dre=gp(),ia=($(),P(z)),{getSchemaPath:fre}=tr(),{handleHDBError:mre,hdbErrors:pre}=ge(),{HDB_ERROR_MSGS:hre,HTTP_STATUS_CODES:Ere}=pre;bk.exports=_re;async function _re(e){let t;try{t=await gre(e.schema);let r=new ire(ia.SYSTEM_SCHEMA_NAME,ia.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,ia.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[ia.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await dre(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await cre(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new are(ia.SYSTEM_SCHEMA_NAME,ia.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await lre(s);let i=fre(t);await sre.remove(i)}catch(r){throw r}}a(_re,"lmdbDropSchema");async function gre(e){let t=new ore(ia.SYSTEM_SCHEMA_NAME,ia.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[ia.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await ure(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw mre(new Error,hre.SCHEMA_NOT_FOUND(e),Ere.NOT_FOUND,void 0,void 0,!0);return n}a(gre,"validateDropSchema")});var Vg=x((yDe,Ik)=>{"use strict";var Iw=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};Ik.exports=Iw});var Nk=x((ADe,wk)=>{"use strict";var Sre=require("fs-extra"),Kg=Vt(),{getTransactionAuditStorePath:Tre}=tr(),ww=Cr(),bDe=Vg();wk.exports=yre;async function yre(e){let t;try{let r=Tre(e.schema,e.table);await Sre.mkdirp(r),t=await Kg.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{Kg.createDBI(t,ww.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),Kg.createDBI(t,ww.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),Kg.createDBI(t,ww.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}a(yre,"createTransactionsAuditEnvironment")});var Pk=x((wDe,Ok)=>{"use strict";var Nw=($(),P(z)),Ck=Vt(),Rre=bl(),{getSystemSchemaPath:bre,getSchemaPath:Are}=tr(),Ire=Ug(),Cw=Mg(),wre=ee(),Nre=Nk();Ok.exports=Cre;async function Cre(e,t){let r=Are(t.schema,t.table),n=new Cw(t.schema,t.table,Nw.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new Cw(t.schema,t.table,Nw.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new Cw(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await Ck.createEnvironment(r,t.table),e!==void 0){let o=await Ck.openEnvironment(bre(),Nw.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await Rre.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdbTableAttributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await Ow(n),await Ow(s),await Ow(i)}await Nre(t)}catch(o){throw o}}a(Cre,"lmdbCreateTable");async function Ow(e){try{await Ire(e)}catch(t){wre.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Ow,"createAttribute")});var Dk=x((CDe,Lk)=>{"use strict";var Ore=dp(),Pre=Cm(),Lre=xg(),yp=($(),P(z)),Dre=bl().updateRecords,vre=Vt(),{getSchemaPath:Mre}=tr(),Ure=fp(),xre=ee();Lk.exports=Bre;async function Bre(e){try{let{schemaTable:t,attributes:r}=Ore(e);Pre(e,r,t.hash_attribute),e.schema!==yp.SYSTEM_SCHEMA_NAME&&(r.includes(yp.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(yp.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(yp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(yp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await Lre(e.hdb_auth_header,t,r),s=Mre(e.schema,e.table),i=await vre.openEnvironment(s,e.table),o=await Dre(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await Ure(e,o)}catch(c){xre.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(Bre,"lmdbUpdateRecords")});var Mk=x((PDe,vk)=>{"use strict";var Fre=($(),P(z)).OPERATIONS_ENUM,Pw=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=Fre.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};vk.exports=Pw});var xk=x((vDe,Uk)=>{"use strict";var DDe=Mk(),kre=dp(),Hre=Cm(),Gre=xg(),Rp=($(),P(z)),qre=bl().upsertRecords,$re=Vt(),{getSchemaPath:Vre}=tr(),Kre=fp(),Yre=ee(),{handleHDBError:Wre,hdbErrors:jre}=ge();Uk.exports=zre;async function zre(e){let t;try{t=kre(e)}catch(l){throw Wre(l,l.message,jre.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schemaTable:r,attributes:n}=t;Hre(e,n,r.hash_attribute),e.schema!==Rp.SYSTEM_SCHEMA_NAME&&(n.includes(Rp.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(Rp.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(Rp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(Rp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await Gre(e.hdb_auth_header,r,n),i=Vre(e.schema,e.table),o=await $re.openEnvironment(i,e.table),c=await qre(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await Kre(e,c)}catch(l){Yre.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}}a(zre,"lmdbUpsertRecords")});var Fk=x((UDe,Bk)=>{"use strict";var Lw=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};Bk.exports=Lw});var Hk=x((BDe,kk)=>{"use strict";var Dw=class{static{a(this,"DeleteAuditLogsBeforeResults")}constructor(t=void 0,r=void 0,n=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=n}};kk.exports=Dw});var $k=x((HDe,qk)=>{"use strict";var vw=Vt(),{getTransactionAuditStorePath:Qre}=tr(),kDe=Fk(),bp=Cr(),Jre=ue(),Gk=Hk(),Xre=require("util").promisify,Zre=Xre(setTimeout),ene=1e4,tne=100;qk.exports=rne;async function rne(e){let t=Qre(e.schema,e.table),r=await vw.openEnvironment(t,e.table,!0),n=vw.listDBIs(r);vw.initializeDBIs(r,bp.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new Gk;do s=await nne(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 Zre(tne);while(s.transactions_deleted>0);return i}a(rne,"deleteAuditLogsBefore");async function nne(e,t){let r=new Gk;try{let n=e.dbis[bp.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let{key:i,value:o}of n.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),s=n.remove(i);let c=o[bp.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];Jre.isEmpty(c)||(s=e.dbis[bp.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[bp.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>ene)break}return await s,r}catch(n){throw n}}a(nne,"deleteTransactions")});var Kk=x((qDe,Vk)=>{"use strict";var Mw=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};Vk.exports=Mw});var Wk=x((KDe,Yk)=>{"use strict";var sne=Xi(),ine=Tp(),VDe=Kk(),Zi=($(),P(z)),one=ue(),Uw=Vt(),ane=Nl(),cne=gp(),lne=pp(),{getSchemaPath:une}=tr();Yk.exports=dne;async function dne(e,t=!0){let r;e.schema===Zi.SYSTEM_SCHEMA_NAME?r=ane[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await mne(e),s=une(e.schema,e.table),i=await Uw.openEnvironment(s,e.table);return t===!0&&await fne(e,i,r.hash_attribute),Uw.dropDBI(i,e.attribute),n}a(dne,"lmdbDropAttribute");async function fne(e,t,r){let n=Uw.openDBI(t,r),s,i=e.attribute;for(let{key:o,value:c,version:l}of n.getRange({start:!1,versions:!0})){let u={};for(let d in c)d!==i&&(u[d]=c[d]);s=t.dbis[r].put(o,u,l)}await s}a(fne,"removeAttributeFromAllObjects");async function mne(e){let t=new sne(Zi.SYSTEM_SCHEMA_NAME,Zi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Zi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Zi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Zi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await cne(t)).filter(o=>o[Zi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(one.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Zi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new ine(Zi.SYSTEM_SCHEMA_NAME,Zi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return lne(i)}a(mne,"dropAttributeFromSystem")});var Zk=x((WDe,Xk)=>{"use strict";var xw=Vt(),md=Cr(),Bw=($(),P(z)),jk=ue(),{getTransactionAuditStorePath:pne}=tr(),hne=dd(),Yg=cd(),Ene=ee();Xk.exports=_ne;async function _ne(e){let t=pne(e.schema,e.table),r=await xw.openEnvironment(t,e.table,!0),n=xw.listDBIs(r);xw.initializeDBIs(r,md.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Bw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return zk(r,e.search_values);case Bw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,Sne(r,e.search_values,s);case Bw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return gne(r,e.search_values);default:return zk(r)}}a(_ne,"readAuditLog");function zk(e,t=[0,Date.now()]){jk.isEmpty(t[0])&&(t[0]=0),jk.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[md.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 Yg,s))}a(zk,"searchTransactionsByTimestamp");function gne(e,t=[]){let r=new Map;for(let n=0;n<t.length;n++){let s=t[n],i=[];for(let o of e.dbis[md.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,Jk(e,i))}return Object.fromEntries(r)}a(gne,"searchTransactionsByUsername");function Sne(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],d=hne.equals(e,md.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,md.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=Jk(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,d=n.get(u);Qk(l,"records",r,d,o),Qk(l,"original_records",r,d,o)}return Object.fromEntries(o)}a(Sne,"searchTransactionsByHashValues");function Qk(e,t,r,n,s){let i=e.timestamp;if(e[t])for(let o=0;o<e[t].length;o++){let c=e[t][o],l=c[r].toString();if(n.indexOf(l)>=0)if(s.has(l)){let u=s.get(l),d=u[u.length-1];if(d.timestamp===i)d[t]=[c];else{let f=new Yg(e.operation,e.user_name,i,void 0);f[t]=[c],u.push(f)}}else{let u=new Yg(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(Qk,"loopRecords");function Jk(e,t){let r=[];try{let n=e.dbis[md.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let s=0;s<t.length;s++)try{let i=n.get(t[s]);if(i){let o=Object.assign(new Yg,i);r.push(o)}}catch(i){Ene.warn(i)}return r}catch(n){throw n}}a(Jk,"batchSearchTransactions")});var tH=x((zDe,eH)=>{"use strict";var{database:Tne}=(Oe(),P(ht));eH.exports={writeTransaction:yne};async function yne(e,t,r){return Tne({database:e,table:t}).transaction(r)}a(yne,"writeTransaction")});var iH=x((JDe,sH)=>{"use strict";var{getSchemaPath:rH}=tr(),nH=Vt();sH.exports={flush:Rne,resetReadTxn:bne};async function Rne(e,t){return(await nH.openEnvironment(rH(e,t),t.toString())).flushed}a(Rne,"flush");async function bne(e,t){try{(await nH.openEnvironment(rH(e,t),t.toString())).resetReadTxn()}catch{}}a(bne,"resetReadTxn")});var lH=x((ZDe,cH)=>{"use strict";var{Readable:Ane}=require("stream"),{getDatabases:Ine}=(Oe(),P(ht)),{readSync:wne,openSync:Nne,createReadStream:oH}=require("fs"),{open:Cne}=require("lmdb"),{OpenDBIObject:aH}=op(),One=ap(),{AUDIT_STORE_OPTIONS:Pne}=($i(),P(u0)),{INTERNAL_DBIS_NAME:Lne,AUDIT_STORE_NAME:Dne}=Cr();cH.exports=Mne;var Fw=32768,vne=100;async function Mne(e){let t=e.database||e.schema||"data",r=Ine()[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=Cne({noSync:!0,maxDbs:One.MAX_DBS}),m,p=f.openDB(Lne,new aH(!1)),h=d.useReadTransaction(),E=0,_=a(async function(S,y){y.encoding="binary",y.encoder=void 0;let I=f.openDB(S,y),w=d.openDB(S,y);for(let{key:L,version:H,value:Z}of w.getRange({start:null,transaction:h,versions:w.useVersions}))m=I.put(L,Z,H),E++%vne===0&&(await new Promise(X=>setTimeout(X,20)),h.openTimer&&(h.openTimer=0))},"copyDatabase");for(let{key:S,value:y}of d.getRange({transaction:h,start:!1}))if(s.some(I=>S.startsWith?.(I+"/"))){p.put(S,y);let[,I]=S.split("/"),w=!I,L=new aH(!w,w);await _(S,L)}e.include_audit&&await _(Dne,{...Pne}),await m;let R=oH(f.path);return R.headers=l(),R.on("close",()=>{h.done(),f.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=Nne(o.path);return o.transaction(()=>{let u=Buffer.alloc(Fw);wne(c,u,0,Fw),o.resetReadTxn();let d=o.useReadTransaction();d.renew();let f=oH(null,{fd:c,start:Fw}),m=new Ane.from(async function*(){yield u;for await(let p of f)d.openTimer&&(d.openTimer=0),yield p;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}}a(Mne,"getBackup")});var fH=x((tve,dH)=>{"use strict";var Une=ee(),{handleHDBError:xne}=ge(),Bne=GB(),Fne=Ug(),kne=lw(),Hne=AF(),Gne=pp(),qne=Ew(),$ne=zF(),Vne=nk(),Kne=gp(),Yne=fk(),Wne=Ak(),jne=Pk(),zne=Dk(),Qne=xk(),Jne=$k(),Xne=Aw(),Zne=Wk(),ese=Zk(),tse=tH(),uH=iH(),rse=lH(),kw=class extends Bne{static{a(this,"LMDBBridge")}async searchByConditions(t){return Yne(t)}async getDataByHash(t){return await qne(t)}async searchByHash(t){return await $ne(t)}async getDataByValue(t,r){return await Vne(t,r)}async searchByValue(t){return await Kne(t)}async createSchema(t){return await Hne(t)}async dropSchema(t){return await Wne(t)}async createTable(t,r){return await jne(t,r)}async dropTable(t){return await Xne(t)}async createAttribute(t){return await Fne(t)}async createRecords(t){return await kne(t)}async updateRecords(t){return await zne(t)}async upsertRecords(t){try{return await Qne(t)}catch(r){throw xne(r,null,null,Une.ERR,r)}}async deleteRecords(t){return await Gne(t)}async dropAttribute(t){return await Zne(t)}async deleteAuditLogsBefore(t){return await Jne(t)}async readAuditLog(t){return await ese(t)}writeTransaction(t,r,n){return tse.writeTransaction(t,r,n)}flush(t,r){return uH.flush(t,r)}resetReadTxn(t,r){return uH.resetReadTxn(t,r)}getBackup(t){return rse(t)}};dH.exports=kw});function Vn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function Ip(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=a(function(m){if(!(typeof m=="string"||m==null&&l.nullable!==!1))throw new fs.ClientError(`${u} must be a string, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"ID":d=a(function(m){if(!(typeof m=="string"||m?.length>0&&m.every?.(p=>typeof p=="string")||m==null&&l.nullable!==!1))throw new fs.ClientError(`${u} must be a string, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"Float":case"Number":d=a(function(m){let p=m?.__op__?m.value:m;if(!(typeof p=="number"||m==null&&l.nullable!==!1))throw new fs.ClientError(`${u} must be a number, attempt to assign ${p}`);Vn(this)[u]=m},"set");break;case"Int":d=a(function(m){let p=m?.__op__?m.value:m;if(!(p>>0===p||m==null&&l.nullable!==!1))if(typeof p=="number"&&Math.abs((p>>0)-p)<=1)p=Math.round(p),m?.__op__?m.value=p:m=p;else throw new fs.ClientError(`${u} must be an integer between -2147483648 and 2147483647, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"Long":d=a(function(m){let p=m?.__op__?m.value:m;if(!(Math.round(p)===m&&Math.abs(p)<=9007199254740992||m==null&&l.nullable!==!1))if(typeof p=="number"&&Math.abs(p)<=9007199254740992)p=Math.round(p),m?.__op__?m.value=p:m=p;else throw new fs.ClientError(`${u} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"BigInt":d=a(function(m){let p=m?.__op__?m.value:m;if(!(typeof p=="bigint"||m==null&&l.nullable!==!1))if(typeof p=="string"||typeof p=="number")p=BigInt(p),m?.__op__?m.value=p:m=p;else throw new fs.ClientError(`${u} must be a number, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"Boolean":d=a(function(m){if(!(typeof m=="boolean"||m==null&&l.nullable!==!1))throw new fs.ClientError(`${u} must be a boolean, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"Date":d=a(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 fs.ClientError(`${u} must be a Date, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"Bytes":d=a(function(m){if(!(m instanceof Uint8Array||m==null&&l.nullable!==!1))throw new fs.ClientError(`${u} must be a Buffer or Uint8Array, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"Blob":d=a(function(m){if(!(m instanceof Us||m==null&&l.nullable!==!1))throw new fs.ClientError(`${u} must be a Blob, attempt to assign ${m}`);Vn(this)[u]=m},"set");break;case"Any":case void 0:d=a(function(m){Vn(this)[u]=m},"set");break;default:d=a(function(m){if(!(typeof m=="object"||m==null&&l.nullable!==!1))throw new fs.ClientError(`${u} must be an object, attempt to assign ${m}`);Vn(this)[u]=m},"set")}f={get(){let m=this.getChanges?.();if(m&&u in m){let h=m[u];if(h?.__op__){let E=this.getRecord()?.[u];return h.update(E)}return h}let p=this.getRecord()?.[u];if(p&&typeof p=="object"){let h=Hw(p,l);if(h)return m||this._setChanges(m=Object.create(null)),m[u]=h}return p},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)}o("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]}),o("set",function(l,u){let d=s[l];if(d)return d.set.call(this,u);if(t.sealed)throw new fs.ClientError("Can not add a property to a sealed table schema");Vn(this)[l]=u}),o("deleteProperty",function(l){Vn(this)[l]=void 0}),o("toJSON",function(){let l=this.getChanges?.(),u;for(let f in l){u||(u={...this.getRecord()});let m=l[f];if(m?.__op__){let p=u[f];m=m.update(p)}u[f]=m}return Object.keys(this).length>0&&(u||(u={...this.getRecord()}),Object.assign(u,this)),u||this.getRecord()}),n.get||o("get",n.getProperty),n.delete||o("delete",n.deleteProperty),n.then||o("then",null);function o(l,u){Object.defineProperty(n,l,{value:u,configurable:!0})}a(o,"setMethod");let c=n;do{let l=Object.getPrototypeOf(c);if(l===Object.prototype){Object.setPrototypeOf(c,r?hH:pH);break}c=l}while(c&&c!==pH&&c!==hH)}function EH(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(mH[t])return mH[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=Hw(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}function nse(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 Hw(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends Pl{static{a(this,"TrackedObject")}},Ip(r,t)),new r(e)):new Pl(e);case Array:let n=new jg(e.length,e);for(let s=0,i=e.length;s<i;s++){let o=e[s];o&&typeof o=="object"&&(o=Hw(o,t?.elements)),n[s]=o}return n;default:return e}}function zg(e){let t=e.getChanges?.(),r;for(let s in t){r||(r=e.getRecord?{...e.getRecord()}:{});let i=t[s];if(i&&typeof i=="object")if(i.__op__){let o=r[s];i=i.update(o)}else i=zg(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 Ll(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 o=Ll(i);o!==i&&r===e&&(r=e.slice(0)),i=o}r[n]=i}return Object.freeze(r)}for(let n in t){r||(r={...e.getRecord?e.getRecord():e});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=LA[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=Ll(s);r[n]=s}if(!Array.isArray(e)&&e.getRecord)for(let n in e)sse.call(e,n)&&(r||(r={...e.getRecord()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?e.getRecord():e}function Wg(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[Ol]||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(Wg(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(Wg(s))return!0}else return!0}else return!0}}return!1}var fs,mH,pH,hH,Pl,sse,Ol,jg,Ap,Gw=ie(()=>{fs=b(ge());H_();os();a(Vn,"getChanges");a(Ip,"assignTrackedAccessors");mH=Object.prototype,pH=new Proxy({},{get:EH}),hH=new Proxy({},{get:EH,set:nse});a(EH,"getProxiedProperty");a(nse,"setProxiedProperty");a(Hw,"trackObject");Pl=class{static{a(this,"GenericTrackedObject")}#e;#t;constructor(t){if(t?.getRecord)throw new Error("Can not track an already tracked object, check for circular references");this.#e=t}getRecord(){return this.#e}setRecord(t){this.#e=t}getChanges(){return this.#t}_setChanges(t){this.#t=t}};Ip(Pl,{},!0);a(zg,"collapseData");sse=Object.prototype.hasOwnProperty;a(Ll,"updateAndFreeze");a(Wg,"hasChanges");Ol=Symbol.for("has-array-changes"),jg=class extends Array{static{a(this,"TrackedArray")}#e;[Ol];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[Ol]=!0,super.splice(...t)}push(...t){return this[Ol]=!0,super.push(...t)}pop(){return this[Ol]=!0,super.pop()}unshift(...t){return this[Ol]=!0,super.unshift(...t)}shift(){return this[Ol]=!0,super.shift()}};jg.prototype.constructor=Array;Ap=class{static{a(this,"Addition")}__op__="add";value;constructor(t){this.value=t}update(t){return(+t||0)+this.value}}});var AH={};Re(AH,{ResourceBridge:()=>Vw});function Kw({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 _H(e,t){let r=eo(e),n=Kw(e,r);if(!r)throw new Ei.ClientError(`Table ${e.table} not found`);let s;n&&r.attributes.length-n.length>2&&n.length<5&&(s=!0);let i={user:e.hdb_user,onlyIfCached:e.onlyIfCached,noCacheStore:e.noCacheStore,noCache:e.noCache,replicateFrom:e.replicateFrom},o;It(i,()=>new Promise(u=>o=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],d;try{d=await r.get({id:u,lazy:s,select:n},i),d=d&&zg(d)}catch(f){d={message:(0,bH.errorToString)(f)}}return t?{value:{key:u,value:d}}:{value:d}}else return o(),{done:!0}},return(u){return o(),{value:u,done:!0}},throw(u){return o(),{done:!0}}}}}}function eo(e){let t=e.database||e.schema||ose,r=dt()[t];if(!r)throw(0,Ei.handleHDBError)(new Error,ise.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function gH(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*SH(e,t,r,n){let s,i=0;for await(let o of e.getHistory(t,r)){let c=o.operation??o.type;c==="put"&&(c="upsert");let{id:l,version:u,value:d}=o;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:o.user,timestamp:u,hash_values:[l],records:[d]}}}s&&(yield s)}var TH,Qg,Ei,yH,qw,$w,RH,bH,ise,ose,ase,cse,Vw,IH=ie(()=>{TH=b(fH()),Qg=b(fd()),Ei=b(ge());Oe();yH=b(dp());$();qw=b(na()),$w=b(us()),RH=b(ue());Ja();Gw();bH=b(ee()),{HDB_ERROR_MSGS:ise}=Ei.hdbErrors,ose="data",ase=1e4,cse=10,Vw=class extends TH.default{static{a(this,"ResourceBridge")}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);let r=eo(t);if(!r)throw new Ei.ClientError(`Table ${t.table} not found`);t.conditions=t.conditions.map(n);function n(i){if("conditions"in i&&i.conditions)return i.conditions=i.conditions.map(n),i;{let o=i;return{attribute:o.attribute??o.search_attribute,comparator:o.comparator??o.search_type,value:o.value!==void 0?o.value:o.search_value}}}a(n,"mapCondition");let s=(0,Qg.default)(t,"conditions");if(s)throw(0,Ei.handleHDBError)(s,s.message,400,void 0,void 0,!0);return r.search({conditions:t.conditions,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:Kw(t,r),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let o of n)o.is_primary_key?(o.isPrimaryKey=!0,delete o.is_primary_key):o.name===i&&i&&(o.isPrimaryKey=!0);else{if(!i)throw new Ei.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}]}je({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await eo(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=eo(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=a((o,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(o,l,()=>r.primaryStore.put(o,c,l)).then(u=>{if(!u){let{value:d,version:f}=r.primaryStore.getEntry(o);return i(o,d,f)}})),"deleteRecord");for(let{key:o,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(o,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){return eo(t).dropTable()}createSchema(t){return pd({database:t.schema,table:null}),qw.signalSchemaChange(new $w.SchemaEventMsg(process.pid,Y.CREATE_SCHEMA,t.schema))}async dropSchema(t){await Yw(t.schema),qw.signalSchemaChange(new $w.SchemaEventMsg(process.pid,Y.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{attributes:r}=(0,yH.default)(t),n,s=dt()[t.schema][t.table],i={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(i.replicateTo=t.replicateTo),t.replicatedConfirmation&&(i.replicatedConfirmation=t.replicatedConfirmation),It(i,async o=>{if(!s.schemaDefined){n=[];for(let u of r)s.attributes.find(f=>f.name==u)||n.push(u);n.length>0&&await s.addAttributes(n.map(u=>({name:u,indexed:!0})))}let c=[],l=[];for(let u of t.records){let d=u[s.primaryKey],f=d!=null&&await s.get(d,i);if(t.requires_existing&&!f||t.requires_no_existing&&f){l.push(u[s.primaryKey]);continue}f&&(f=zg(f));for(let m in u)if(Object.prototype.hasOwnProperty.call(u,m)){let p=u[m];if(typeof p=="function")try{let h=p([[f]]);Array.isArray(h)&&(p=h[0].func_val,u[m]=p)}catch(h){throw h.message+="Trying to set key "+m+" on object"+JSON.stringify(u),h}}if(f)for(let m in f)Object.prototype.hasOwnProperty.call(u,m)||(u[m]=f[m]);await(d==null?s.create(u,i):s.put(u,i)),c.push(u[s.primaryKey])}return{txn_time:o.timestamp,written_hashes:c,new_attributes:n,skipped_hashes:l}})}async deleteRecords(t){let r=dt()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),It(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),o=[],c=[];for(let l of i)await r.delete(l,n)?o.push(l):c.push(l);return gH(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=dt()[t.schema][t.table];if(!r.createdTimeProperty)throw new Ei.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:A_.LESS}]}),s=!1,i=[],o=[],c=0,l=[],u=a(async()=>{let d=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...d.deleted_hashes),o.push(...d.skipped_hashes),await(0,RH.asyncSetTimeout)(cse),l=[],s=!0},"chunkDelete");for await(let d of n)l.push(d[r.primaryKey]),c++,c%ase===0&&await u();return l.length>0&&await u(),s?gH(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,Qg.default)(t,"hashes");if(r)throw r;return _H(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of _H(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&gA[r]===void 0)throw new Error(`Value search comparator - ${r} - is not valid`);t.select!==void 0&&(t.get_attributes=t.select),t.search_attribute!==void 0&&(t.attribute=t.search_attribute),t.search_value!==void 0&&(t.value=t.search_value);let n=(0,Qg.default)(t,"value");if(n)throw n;let s=eo(t);if(!s)throw new Ei.ClientError(`Table ${t.table} not found`);let i=t.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===A_.BETWEEN&&(i=[i,t.end_value]);let o=i==="*"?[]:[{attribute:t.attribute,value:i,comparator:r}];return s.search({conditions:o,allowFullScan:!0,limit:t.limit,offset:t.offset,reverse:t.reverse,sort:t.sort,select:Kw(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=eo(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){eo({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return eo(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=eo(t),n={};switch(t.search_type){case I_.HASH_VALUE:for(let s of t.search_values)n[s]=(await r.getHistoryOfRecord(s)).map(i=>{let o=i.operation??i.type;return o==="put"&&(o="upsert"),{operation:o,timestamp:i.version,user_name:i.user,hash_values:[s],records:[i.value]}});return n;case I_.USERNAME:{let s=t.search_values;for await(let i of SH(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n}default:return SH(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(Kw,"getSelect");a(_H,"getRecords");a(eo,"getTable");a(gH,"createDeleteResponse");a(SH,"groupRecordsInHistory")});var ms=x((fve,wH)=>{"use strict";var{ResourceBridge:lse}=(IH(),P(AH)),use=fe();use.initSync();var Jg;function dse(){return Jg||(Jg=new lse,Jg)}a(dse,"getBridge");wH.exports=dse()});var to=x((pve,OH)=>{var fse=Nl(),{promisify:mse}=require("util"),{getDatabases:CH}=(Oe(),P(ht));OH.exports={setSchemaDataToGlobal:NH,getTableSchema:pse,getSystemSchema:hse,setSchemaDataToGlobalAsync:mse(NH)};function NH(e){global.hdb_schema=CH(),e&&e()}a(NH,"setSchemaDataToGlobal");function pse(e,t,r){let n=CH()[e];if(!n)return r(`schema ${e} does not exist`);let s=n[t];return s?r(null,{schema:e,name:t,hash_attribute:s.primaryKey}):r(`table ${e}.${t} does not exist`)}a(pse,"getTableSchema");function hse(){return fse}a(hse,"getSystemSchema")});var ps=x((Eve,vH)=>{"use strict";var Zg=kB(),nn=ue(),Ese=require("util"),eS=ms(),_se=to(),PH=ee(),{handleHDBError:Dl,hdbErrors:gse}=ge(),{HTTP_STATUS_CODES:vl}=gse,Sse=Ese.promisify(_se.getTableSchema),Tse="updated",LH="inserted",DH="upserted";vH.exports={insert:Rse,update:bse,upsert:Ase,validation:yse,flush:Ise};async function yse(e){if(nn.isEmpty(e))throw new Error("invalid update parameters defined.");if(nn.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(nn.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await Sse(e.schema,e.table),r=Zg(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let n=t.hash_attribute,s=new Set,i={},o=!1;return e.operation==="update"&&(o=!0),e.records.forEach(c=>{if(o&&nn.isEmptyOrZeroLength(c[n]))throw PH.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(!nn.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw PH.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!nn.isEmpty(c[n])&&c[n]!==""&&s.has(nn.autoCast(c[n]))&&(c.skip=!0),s.add(nn.autoCast(c[n]));for(let l in c)i[l]=1}),i[n]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(i)}}a(yse,"validation");async function Rse(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=Zg(e);if(t)throw Dl(new Error,t.message,vl.BAD_REQUEST);nn.transformReq(e);let r=nn.checkSchemaTableExist(e.schema,e.table);if(r)throw Dl(new Error,r,vl.BAD_REQUEST);let n=await eS.createRecords(e);return Xg(LH,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(Rse,"insertData");async function bse(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=Zg(e);if(t)throw Dl(new Error,t.message,vl.BAD_REQUEST);nn.transformReq(e);let r=nn.checkSchemaTableExist(e.schema,e.table);if(r)throw Dl(new Error,r,vl.BAD_REQUEST);let n=await eS.updateRecords(e);return nn.isEmpty(n.existing_rows)?Xg(Tse,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):Xg(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(bse,"updateData");async function Ase(e){if(e.operation!=="upsert")throw Dl(new Error,"invalid operation, must be upsert",vl.INTERNAL_SERVER_ERROR);let t=Zg(e);if(t)throw Dl(new Error,t.message,vl.BAD_REQUEST);nn.transformReq(e);let r=nn.checkSchemaTableExist(e.schema,e.table);if(r)throw Dl(new Error,r,vl.BAD_REQUEST);let n=await eS.upsertRecords(e);return Xg(DH,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(Ase,"upsertData");function Xg(e,t,r,n,s,i){let o={message:`${e} ${t.length} of ${t.length+n.length} records`,new_attributes:s,txn_time:i};return e===LH?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===DH?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(Xg,"returnObject");function Ise(e){return nn.transformReq(e),eS.flush(e.schema,e.table)}a(Ise,"flush")});var jw=x((gve,xH)=>{var wse=Et(),Ww=require("joi"),{hdbTable:Nse,hdbDatabase:MH}=ea(),UH={schema:MH,database:MH,table:Nse},Cse={date:Ww.date().iso().required()},Ose={timestamp:Ww.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};xH.exports=function(e,t){let r=t==="timestamp"?{...UH,...Ose}:{...UH,...Cse},n=Ww.object(r);return wse.validateBySchema(e,n)}});var kH=x((Sve,FH)=>{var Pse=Et(),zw=require("joi"),{hdbTable:Lse,hdbDatabase:BH}=ea(),Dse=zw.object({schema:BH,database:BH,table:Lse,hash_values:zw.array().required(),ids:zw.array()});FH.exports=function(e){return Pse.validateBySchema(e,Dse)}});var Zw=x((Tve,HH)=>{"use strict";var Qw=class{static{a(this,"InsertObject")}constructor(t,r,n,s,i){this.operation=t,this.schema=r,this.table=n,this.hash_attribute=s,this.records=i}},Jw=class{static{a(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,o){this.schema=t,this.table=r,this.attribute=n,this.hash_attribute=s,this.get_attributes=i,this.value=o}},Xw=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};HH.exports={InsertObject:Qw,NoSQLSeachObject:Jw,DeleteResponseObject:Xw}});var xl=x((Rve,KH)=>{"use strict";var qH=jw(),vse=kH(),Ml=ue(),GH=require("moment"),$H=ee(),{promisify:Mse,callbackify:Use}=require("util"),Ul=($(),P(z)),xse=to(),eN=Mse(xse.getTableSchema),tN=ms(),{DeleteResponseObject:Bse}=Zw(),{handleHDBError:lc,hdbErrors:Fse}=ge(),{HDB_ERROR_MSGS:tS,HTTP_STATUS_CODES:uc}=Fse,kse="records successfully deleted",Hse=Use(VH);KH.exports={delete:Hse,deleteRecord:VH,deleteFilesBefore:Gse,deleteAuditLogsBefore:qse};async function Gse(e){let t=qH(e,"date");if(t)throw lc(t,t.message,uc.BAD_REQUEST,void 0,void 0,!0);if(Ml.transformReq(e),!GH(e.date,GH.ISO_8601).isValid())throw lc(new Error,tS.INVALID_DATE,uc.BAD_REQUEST,Ul.LOG_LEVELS.ERROR,tS.INVALID_DATE,!0);let n=Ml.checkSchemaTableExist(e.schema,e.table);if(n)throw lc(new Error,n,uc.NOT_FOUND,Ul.LOG_LEVELS.ERROR,n,!0);let s=await tN.deleteRecordsBefore(e);if(await eN(e.schema,e.table),$H.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(Gse,"deleteFilesBefore");async function qse(e){let t=qH(e,"timestamp");if(t)throw lc(t,t.message,uc.BAD_REQUEST,void 0,void 0,!0);if(Ml.transformReq(e),isNaN(e.timestamp))throw lc(new Error,tS.INVALID_VALUE("Timestamp"),uc.BAD_REQUEST,Ul.LOG_LEVELS.ERROR,tS.INVALID_VALUE("Timestamp"),!0);let r=Ml.checkSchemaTableExist(e.schema,e.table);if(r)throw lc(new Error,r,uc.NOT_FOUND,Ul.LOG_LEVELS.ERROR,r,!0);let n=await tN.deleteAuditLogsBefore(e);return await eN(e.schema,e.table),$H.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(qse,"deleteAuditLogsBefore");async function VH(e){e.ids&&(e.hash_values=e.ids);let t=vse(e);if(t)throw lc(t,t.message,uc.BAD_REQUEST,void 0,void 0,!0);Ml.transformReq(e);let r=Ml.checkSchemaTableExist(e.schema,e.table);if(r)throw lc(new Error,r,uc.NOT_FOUND,Ul.LOG_LEVELS.ERROR,r,!0);try{await eN(e.schema,e.table);let n=await tN.deleteRecords(e);return Ml.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${kse}`),n}catch(n){if(n.message===Ul.SEARCH_NOT_FOUND_MESSAGE){let s=new Bse;return s.message=Ul.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(VH,"deleteRecord")});var oN={};Re(oN,{HASH_FUNCTION:()=>Kr,hash:()=>sN,validate:()=>iN});function rN(e=Np){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(wp.randomBytes(e)).map(r=>t[r%t.length]).join("")}function sN(e,t=Kr[WH?.toUpperCase()]??Kr.SHA256){return nN[t](e)}function iN(e,t,r=Kr[WH?.toUpperCase()]??Kr.SHA256){return e?$se[r](e,t):!1}var wp,hd,YH,WH,Np,jH,Kr,nN,$se,aN=ie(()=>{wp=b(require("node:crypto")),hd=b(require("argon2")),YH=b(fe());$();WH=(0,YH.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),Np=16,jH=9,Kr={MD5:"md5",SHA256:"sha256",ARGON2ID:"argon2id"};a(rN,"generateSalt");nN={[Kr.MD5]:(e,t=void 0)=>{t=t??rN(jH);let r=wp.createHash(Kr.MD5).update(e+t).digest("hex");return t+r},[Kr.SHA256]:(e,t=void 0)=>{t=t??rN(Np);let r=wp.createHash(Kr.SHA256).update(e+t).digest("hex");return t+r},[Kr.ARGON2ID]:async e=>{let t=rN(Np),r=await hd.hash(e,{type:hd.argon2id,salt:Buffer.from(t)});return t+r}},$se={[Kr.MD5]:(e,t)=>{let r=e.slice(0,jH);return e===nN[Kr.MD5](t,r)},[Kr.SHA256]:(e,t)=>{let r=e.slice(0,Np);return e===nN[Kr.SHA256](t,r)},[Kr.ARGON2ID]:async(e,t)=>await hd.verify(e.slice(Np),t)};a(sN,"hash");a(iN,"validate")});var QH=x((wve,zH)=>{var cN=Et(),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 Vse(e){return Sn.password.presence=!0,Sn.username.presence=!0,Sn.role.presence=!0,Sn.active.presence=!0,cN.validateObject(e,Sn)}a(Vse,"addUserValidation");function Kse(e){return Sn.password.presence=!1,Sn.username.presence=!0,Sn.role.presence=!1,Sn.active.presence=!1,cN.validateObject(e,Sn)}a(Kse,"alterUserValidation");function Yse(e){return Sn.password.presence=!1,Sn.username.presence=!0,Sn.role.presence=!1,Sn.active.presence=!1,cN.validateObject(e,Sn)}a(Yse,"dropUserValidation");zH.exports={addUserValidation:Vse,alterUserValidation:Kse,dropUserValidation:Yse}});var lG=x((Cve,cG)=>{"use strict";var lN=require("recursive-iterator"),Wse=require("alasql"),uN=require("clone"),JH=ue(),{handleHDBError:XH,hdbErrors:jse}=ge(),{HDB_ERROR_MSGS:ZH,HTTP_STATUS_CODES:eG}=jse,{getDatabases:zse}=(Oe(),P(ht)),Qse=["DISTINCT_ARRAY"],tG=Symbol("validateTables"),dN=Symbol("validateTable"),rG=Symbol("validateAllColumns"),rS=Symbol("findColumn"),nG=Symbol("validateOrderBy"),Cp=Symbol("validateSegment"),fN=Symbol("validateColumn"),sG=Symbol("setColumnsForTable"),iG=Symbol("checkColumnsForAsterisk"),oG=Symbol("validateGroupBy"),aG=Symbol("hasColumns"),mN=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[tG](),this[iG](),this[rG]()}[tG](){if(this[aG]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[dN](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[dN](t.table)})}}[aG](){let t=!1,r=new lN(this.statement);for(let{node:n}of r)if(n&&n.columnid){t=!0;break}return t}[dN](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=zse();if(!r[t.databaseid])throw XH(new Error,ZH.SCHEMA_NOT_FOUND(t.databaseid),eG.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw XH(new Error,ZH.TABLE_NOT_FOUND(t.databaseid,t.tableid),eG.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=uN(s);i.table=uN(t),this.attributes.push(i)})}[rS](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)}[iG](){let t=new lN(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[sG](r.tableid)}[sG](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new Wse.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[rG](){this[Cp](this.statement.columns,!1),this[Cp](this.statement.joins,!1),this[Cp](this.statement.where,!1),this[oG](this.statement.group,!1),this[Cp](this.statement.order,!0)}[Cp](t,r){if(!t)return;let n=new lN(t),s=[];for(let{node:i}of n)!JH.isEmpty(i)&&!JH.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[nG](i):s.push(this[fN](i)));return s}[oG](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&Qse.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=uN(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[rS](n)[0];s&&r.push(s)}}}),this.statement.group.forEach(n=>{let s=null;if(!n.columnid)r.forEach((i,o)=>{if(i.toString()===n.toString()){s=i,r.splice(o,1);return}});else{let i=this[rS](n);if(!i||i.length===0)throw`unknown column '${n.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${n.toString()}' in group by`;r.forEach((o,c)=>{if(o.attribute===i[0].attribute&&o.table.tableid===i[0].table.tableid){s=o,r.splice(c,1);return}})}if(!s)throw`group by column '${n.toString()}' must be in select`}),r.length>0)throw`select column '${r[0].attribute?r[0].attribute:r[0].toString()}' must be in group by`}[nG](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[fN](t)}[fN](t){let r=this[rS](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]}};cG.exports=mN});var mG=x((Pve,fG)=>{"use strict";var uG=require("lodash"),Op=require("mathjs"),Jse=require("jsonata"),dG=ue();fG.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?uG.uniqWith(e,uG.isEqual):e,"distinct_array"),searchJSON:Xse,mad:Pp.bind(null,Op.mad),mean:Pp.bind(null,Op.mean),mode:Pp.bind(null,Op.mode),prod:Pp.bind(null,Op.prod),median:Pp.bind(null,Op.median)};function Pp(e,t,r,n){return n===1?t==null?[]:[t]:n===2?(t!=null&&r.push(t),r):r!=null&&r.length>0?e(r):null}a(Pp,"aggregateFunction");function Xse(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(dG.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),dG.isEmpty(this.__ala__.res[r])){let n=Jse(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(Xse,"searchJSON")});var hG=x((Dve,pG)=>{"use strict";var hr=require("moment"),pN="YYYY-MM-DDTHH:mm:ss.SSSZZ";hr.suppressDeprecationWarnings=!0;pG.exports={current_date:a(()=>hr().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>hr().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return hr(e).utc().format("YYYY");case"month":return hr(e).utc().format("MM");case"day":return hr(e).utc().format("DD");case"hour":return hr(e).utc().format("HH");case"minute":return hr(e).utc().format("mm");case"second":return hr(e).utc().format("ss");case"millisecond":return hr(e).utc().format("SSS");default:break}},"extract"),date:a(e=>hr(e).utc().format(pN),"date"),date_format:a((e,t)=>hr(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>hr(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>hr(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=hr(e).utc(),s=hr(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>hr().utc().valueOf(),"now"),get_server_time:a(()=>hr().format(pN),"get_server_time"),offset_utc:a((e,t)=>hr(e).utc().utcOffset(t).format(pN),"offset_utc")}});var SG=x((Mve,gG)=>{"use strict";var Zse=require("@turf/area"),eie=require("@turf/length"),tie=require("@turf/circle"),rie=require("@turf/difference"),nie=require("@turf/distance"),sie=require("@turf/boolean-contains"),iie=require("@turf/boolean-equal"),oie=require("@turf/boolean-disjoint"),aie=require("@turf/helpers"),EG=($(),P(z)),Ze=ue(),oa=ee();gG.exports={geoArea:cie,geoLength:lie,geoCircle:uie,geoDifference:die,geoDistance:_G,geoNear:fie,geoContains:mie,geoEqual:pie,geoCrosses:hie,geoConvert:Eie};function cie(e){if(Ze.isEmpty(e))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return Zse.default(e)}catch(t){return oa.trace(t,e),NaN}}a(cie,"geoArea");function lie(e,t){if(Ze.isEmpty(e))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return eie.default(e,{units:t||"kilometers"})}catch(r){return oa.trace(r,e),NaN}}a(lie,"geoLength");function uie(e,t,r){if(Ze.isEmpty(e))return NaN;if(Ze.isEmpty(t))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return tie.default(e,t,{units:r||"kilometers"})}catch(n){return oa.trace(n,e,t),NaN}}a(uie,"geoCircle");function die(e,t){if(Ze.isEmpty(e))return NaN;if(Ze.isEmpty(t))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return rie(e,t)}catch(r){return oa.trace(r,e,t),NaN}}a(die,"geoDifference");function _G(e,t,r){if(Ze.isEmpty(e))return NaN;if(Ze.isEmpty(t))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return nie.default(e,t,{units:r||"kilometers"})}catch(n){return oa.trace(n,e,t),NaN}}a(_G,"geoDistance");function fie(e,t,r,n){if(Ze.isEmpty(e)||Ze.isEmpty(t))return!1;if(Ze.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return _G(e,t,n)<=r}catch(s){return oa.trace(s,e,t),!1}}a(fie,"geoNear");function mie(e,t){if(Ze.isEmpty(e)||Ze.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return sie.default(e,t)}catch(r){return oa.trace(r,e,t),!1}}a(mie,"geoContains");function pie(e,t){if(Ze.isEmpty(e)||Ze.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return iie.default(e,t)}catch(r){return oa.trace(r,e,t),!1}}a(pie,"geoEqual");function hie(e,t){if(Ze.isEmpty(e)||Ze.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return!oie.default(e,t)}catch(r){return oa.trace(r,e,t),!1}}a(hie,"geoCrosses");function Eie(e,t,r){if(Ze.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ze.isEmpty(t))throw new Error("geo_type is required");if(Ze.isEmpty(EG.GEO_CONVERSION_ENUM[t]))throw new Error(`geoType of ${t} is invalid please use one of the following types: ${Object.keys(EG.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ze.autoCastJSON(e)),aie[t](e,r)}a(Eie,"geoConvert")});var nS=x((xve,TG)=>{var Bl=mG(),hs=hG(),ro=SG();TG.exports=e=>{e.aggr.mad=e.aggr.MAD=Bl.mad,e.aggr.mean=e.aggr.MEAN=Bl.mean,e.aggr.mode=e.aggr.MODE=Bl.mode,e.aggr.prod=e.aggr.PROD=Bl.prod,e.aggr.median=e.aggr.MEDIAN=Bl.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Bl.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Bl.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=hs.current_date,e.fn.current_time=e.fn.CURRENT_TIME=hs.current_time,e.fn.extract=e.fn.EXTRACT=hs.extract,e.fn.date=e.fn.DATE=hs.date,e.fn.date_format=e.fn.DATE_FORMAT=hs.date_format,e.fn.date_add=e.fn.DATE_ADD=hs.date_add,e.fn.date_sub=e.fn.DATE_SUB=hs.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=hs.date_diff,e.fn.now=e.fn.NOW=hs.now,e.fn.offset_utc=e.fn.OFFSET_UTC=hs.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=hs.get_server_time,e.fn.getdate=e.fn.GETDATE=hs.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=hs.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=ro.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=ro.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=ro.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=ro.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=ro.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=ro.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=ro.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=ro.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=ro.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=ro.geoNear}});var AG=x((Bve,bG)=>{"use strict";var Lp=require("lodash"),Kn=require("alasql");Kn.options.cache=!1;var _ie=nS(),yG=require("clone"),sS=require("recursive-iterator"),Ke=ee(),ot=ue(),Ed=ms(),gie=($(),P(z)),{hdbErrors:Sie}=ge(),{getDatabases:RG}=(Oe(),P(ht)),Tie="IS NULL",_i="There was a problem performing this search. Please check the logs and try again.";_ie(Kn);var hN=class{static{a(this,"SQLSearch")}constructor(t,r){if(ot.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(),ot.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!ot.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(_i)}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(_i)}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(_i)}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(_i)}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(_i)}}_getColumns(){let t=new sS(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(yG(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Lp.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=RG()[r.databaseid][r.tableid].primaryKey,this.data[n].__mergedData={},this.data[n].__mergedAttributes=[],this.data[n].__mergedAttrMap={}})}_conditionsToFetchAttributeValues(){if(ot.isEmpty(this.statement.where)){Ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new sS(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!ot.isEmpty(r)&&r.right)if(ot.isNotEmptyAndHasValue(r.right.value)){let n=ot.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new Kn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=ot.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new Kn.yy.LogicValue({value:i}):n instanceof Kn.yy.StringValue&&ot.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Kn.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 sS(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let n=new Set,s=r.left.columnid?r.left:r.right,i=this._findColumn(s);if(!i)continue;let o=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!ot.isEmpty(gie.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(ot.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(ot.isEmptyOrZeroLength(r.left.columnid)||ot.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[o].ignore=!0,this.comparator_search_values[o].comparators=[];continue}this.comparator_search_values[o].comparators.push({attribute:r.left.columnid,operation:r.op,value:r.right.value})}continue}if(ot.isEmpty(this.exact_search_values[o])&&(this.exact_search_values[o]={ignore:!1,values:new Set}),!this.exact_search_values[o].ignore){let c=!1;switch(r.op){case"=":!ot.isEmpty(r.right.value)||!ot.isEmpty(r.left.value)?n.add(ot.isEmpty(r.right.value)?r.left.value:r.right.value):c=!0;break;case"IN":let l=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<l.length;u++)if(l[u].value)n.add(l[u].value);else{c=!0;break}break;default:c=!0;break}this.exact_search_values[o].ignore=c,c?this.exact_search_values[o].values=new Set:this.exact_search_values[o].values=new Set([...this.exact_search_values[o].values,...n])}}}_setAliasesForColumns(){if(ot.isEmptyOrZeroLength(this.all_table_attributes)&&ot.isEmptyOrZeroLength(this.statement.from)&&ot.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&&Lp.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(ot.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);ot.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(ot.isEmptyOrZeroLength(this.all_table_attributes)&&!ot.isEmptyOrZeroLength(this.columns.columns))return t;if(ot.isEmptyOrZeroLength(this.all_table_attributes)&&ot.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await Kn.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(yG(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(ot.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(Tie)>-1&&this.tables.forEach(s=>{let i={columnid:RG()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=Lp.uniqBy(this.fetch_attributes,s=>[s.table.databaseid,s.table.as?s.table.as:s.table.tableid,s.attribute].join()),r)return await this._simpleSQLQuery();let n=this.fetch_attributes.reduce((s,i)=>{let o=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[o].__hashName;return s[o]||(s[o]=[],s[o].push(null),this._addColumnToMergedAttributes(o,c)),i.attribute!==c&&(s[o].push(null),this._addColumnToMergedAttributes(o,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,o=this.data[i].__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===o&&(l=!0),!ot.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!ot.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let d=await Ed.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(_i)}else try{c.attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async d=>{let f={...c};f.value=d;let m=await Ed.getDataByValue(f);for(let[p,h]of m)this.data[i].__mergedData[p]?this._updateMergedAttribute(i,p,s.attribute,h[s.attribute]):(this.data[i].__mergedData[p]=[...n[i]],this._updateMergedAttribute(i,p,s.attribute,h[s.attribute]),this._setMergedHashAttribute(i,p))}))}catch(d){throw Ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),Ke.error(d),new Error(_i)}else if(!ot.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!ot.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 p=d[f];c.attribute=p.attribute,c.value=p.value;let h=await Ed.getDataByValue(c,p.operation);if(l)for(let[E]of h)this.data[i].__mergedData[E]||(this.data[i].__mergedData[E]=[...n[i]],this._setMergedHashAttribute(i,E));else for(let[E,_]of h)this.data[i].__mergedData[E]?this._updateMergedAttribute(i,E,s.attribute,_[s.attribute]):(this.data[i].__mergedData[E]=[...n[i]],this._updateMergedAttribute(i,E,s.attribute,_[s.attribute]),this._setMergedHashAttribute(i,E))}}catch(d){throw Ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),Ke.error(d),new Error(_i)}else try{c.attribute=s.attribute,c.value="*";let d=await Ed.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(_i)}}}_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 Kn.yy.Column||(t=!1)}),t)}_updateOrderByToAliases(){this.statement.order.forEach(t=>{if(t.expression.aggregatorid){t.is_aggregator=!0;return}if(t.expression.value){t.is_ordinal=!0,this.has_ordinal=!0;return}else t.is_ordinal=!1;let r=this.statement.columns.filter(s=>{let i=s.aggregatorid?s.expression:s,o=s.aggregatorid?s.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===o});r[0]||r.push(this._findColumn(t.expression));let n=r[0];if(t.is_func=!!n.funcid,t.is_aggregator=!!n.aggregatorid,n.as)if(n.as&&!t.expression.tableid)t.expression.columnid=n.as,t.expression.columnid_orig=n.as_orig;else{let s=new Kn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Kn.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 Kn.yy.FuncValue:new Kn.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(p=>{p.joinmode&&p.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(p.table);let h=p.joinmode+" JOIN ? AS "+(p.as?p.as:p.table.tableid);p.on&&(h+=" ON "+p.on.toString()),i.push(h),t.push(Object.values(this.data[`${p.table.databaseid_orig}_${p.table.as?p.table.as_orig:p.table.tableid_orig}`].__mergedData))});let o=[],c={};s.forEach(p=>{let h=this.data[`${p.databaseid_orig}_${p.as?p.as_orig:p.tableid_orig}`].__hashName,E=p.as?p.as_orig:p.tableid_orig;o.push({key:`'${E}.${h}'`,schema:p.databaseid_orig,table:p.as?p.as_orig:p.tableid_orig,keys:new Set}),r.push(`${p.as?p.as:p.tableid}.\`${h}\` AS "${E}.${h}"`),c[p.as?p.as_orig:p.tableid_orig]=this.data[`${p.databaseid_orig}_${p.as?p.as_orig:p.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(p=>{p.is_func?r.push(p.initial_select_column.toString()):p.initial_select_column.tableid?r.push(`${p.initial_select_column.tableid}.${p.initial_select_column.columnid} AS ${p.expression.columnid}`):r.push(`${p.initial_select_column.columnid} AS ${p.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 p=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${d} ${f}`,h=this._convertColumnsToIndexes(p,s);m=await Kn.promise(h,t),t=null}catch(p){throw Ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),Ke.error(p),new Error("There was a problem processing the data.")}if(m&&m.length>0){for(let p=0,h=m.length;p<h;p++){let E=m[p];o.forEach(_=>{E[_.key]!==null&&E[_.key]!==void 0&&_.keys.add(E[_.key])})}o.forEach(p=>{let h=Object.keys(this.data[`${p.schema}_${p.table}`].__mergedData),E=Lp.difference(h,[...p.keys].map(_=>_.toString()));for(let _=0,R=E.length;_<R;_++){let S=E[_];delete this.data[`${p.schema}_${p.table}`].__mergedData[S]}})}return{existing_attributes:c,joined_length:m?m.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new sS(this.columns);for(let{node:i}of s)if(i&&i.columnid){let o=this._findColumn(i);if(o){let c=o.table.as?o.table.as:o.table.tableid;(!t[c]||t[c].indexOf(o.attribute)<0)&&n.push(o)}}n=Lp.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(_i)}}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,o=[];for(let d in i)o.push(i[d][0]);this.data[n].__mergedAttributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:o,get_attributes:s.columns},l=await Ed.getDataByHash(c),u=s.columns.length;for(let d=0,f=o.length;d<f;d++){let m=o[d],p=l.get(m);for(let h=0;h<u;h++){let E=s.columns[h],_=p[E]===void 0?null:p[E];this.data[n].__mergedData[m].push(_)}}}}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(o=>{let c=o.aggregatorid?o.expression:o,l=o.aggregatorid?o.as_orig:c.as_orig;return s.expression.tableid?c.columnid_orig===s.expression.columnid_orig&&c.tableid_orig===s.expression.tableid_orig:c.columnid_orig===s.expression.columnid_orig||s.expression.columnid_orig===l}).length===0&&(s.expression.columnid=s.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&this.statement.limit&&!this.statement.joins&&(delete this.statement.limit,delete this.statement.offset);let n;try{let s=this._buildSQL();Ke.trace(`Final SQL: ${s}`),n=await Kn.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(Sie.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((o,c)=>{let l=s[i],u=new RegExp(`${l}.\`${o}\``,"g"),d=`${l}.[${c}]`;n=n.replace(u,d)});for(let i in this.data)this.data[i].__mergedAttributes.forEach((o,c)=>{let l=new RegExp(`\`${o}\``,"g"),u=`[${c}]`;n=n.replace(l,u)});return n}async _simpleSQLQuery(){let t=this.statement.columns.reduce((n,s)=>(s.as_orig&&s.as_orig!=s.columnid_orig?n[s.columnid_orig]=s.as_orig:n[s.columnid_orig]||(n[s.columnid_orig]=s.columnid_orig),n),{}),r=this.fetch_attributes.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]||(n[i]={}),n[i][t[s.attribute]]=null,n},{});for(let n of this.fetch_attributes){let s=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,i={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]};try{i.attribute=n.attribute,i.value="*";let o=await Ed.getDataByValue(i);for(let[c,l]of o)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(o){throw Ke.error("There was an error when processing this SQL operation. Check your logs"),Ke.error(o),new Error(_i)}}return Object.values(Object.values(this.data)[0].__mergedData)}};bG.exports=hN});var Yn=x((kve,IG)=>{"use strict";IG.exports={searchByConditions:yie,searchByHash:Rie,searchByValue:bie,search:Aie};var EN=ms(),{transformReq:_N}=ue();async function yie(e){return _N(e),EN.searchByConditions(e)}a(yie,"searchByConditions");async function Rie(e){_N(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of EN.searchByHash(e))r&&t.push(r);return t}a(Rie,"searchByHash");async function bie(e){_N(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of EN.searchByValue(e))t.push(r);return t}a(bie,"searchByValue");function Aie(e,t){try{let r=lG(),n=AG(),s=new r(e);s.validate(),new n(s.statement,s.attributes).search().then(o=>{t(null,o)}).catch(o=>{t(o,null)})}catch(r){return t(r)}}a(Aie,"search")});var aa=x((Gve,OG)=>{"use strict";var Dp=require("crypto"),Iie=fe(),{CONFIG_PARAMS:wie}=($(),P(z)),NG="aes-256-cbc",Nie=32,Cie=16,gN=64,CG=32,Oie=gN+CG,wG=new Map;OG.exports={encrypt:Pie,decrypt:Lie,createNatsTableStreamName:Die};function Pie(e){let t=Dp.randomBytes(Nie),r=Dp.randomBytes(Cie),n=Dp.createCipheriv(NG,Buffer.from(t),r),s=n.update(e);s=Buffer.concat([s,n.final()]);let i=t.toString("hex"),o=r.toString("hex"),c=s.toString("hex");return i+o+c}a(Pie,"encrypt");function Lie(e){let t=e.substr(0,gN),r=e.substr(gN,CG),n=e.substr(Oie,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=Dp.createDecipheriv(NG,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(Lie,"decrypt");function Die(e,t){let r=Iie.get(wie.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=wG.get(r);return n||(n=Dp.createHash("md5").update(r).digest("hex"),wG.set(r,n)),n}a(Die,"createNatsTableStreamName")});var Er=x(($ve,LG)=>{"use strict";var vie="nats-server.zip",SN="nats-server",Mie=process.platform==="win32"?`${SN}.exe`:SN,Uie=/^[^\s.,*>]+$/,PG="__request__",xie=a(e=>`${e}.${PG}`,"REQUEST_SUBJECT"),Bie={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},Fie={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},kie={HUB:"hub.pid",LEAF:"leaf.pid"},Hie={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},Gie={SUCCESS:"success",ERROR:"error"},qie={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},$ie={TXN:"txn",MSGID:"msgid"},_d={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},Vie={[_d.ERR]:1,[_d.WRN]:2,[_d.INF]:3,[_d.DBG]:4,[_d.TRC]:5},Kie={debug:"-D",trace:"-DVV"};LG.exports={NATS_SERVER_ZIP:vie,NATS_SERVER_NAME:SN,NATS_BINARY_NAME:Mie,PID_FILES:kie,NATS_CONFIG_FILES:Fie,SERVER_SUFFIX:Hie,NATS_TERM_CONSTRAINTS_RX:Uie,REQUEST_SUFFIX:PG,UPDATE_REMOTE_RESPONSE_STATUSES:Gie,CLUSTER_STATUS_STATUSES:qie,REQUEST_SUBJECT:xie,SUBJECT_PREFIXES:$ie,MSG_HEADERS:Bie,LOG_LEVELS:_d,LOG_LEVEL_FLAGS:Kie,LOG_LEVEL_HIERARCHY:Vie}});var yN=x((Kve,BG)=>{"use strict";var UG=require("fs-extra"),be=require("joi"),Yie=require("os"),{boolean:We,string:gt,number:_r,array:dc}=be.types(),{totalmem:DG}=require("os"),Fl=require("path"),Wie=ee(),TN=ue(),vG=($(),P(z)),jie=Et(),MG="log",zie="components",Qie="Invalid logging.rotation.maxSize unit. Available units are G, M or K",Jie="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",Xie="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",Zie="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",eoe="rootPath config parameter is undefined",Wn=be.alternatives([_r.min(0),gt]).optional().empty(null),iS=be.alternatives([dc.items(gt,{host:gt.required(),port:Wn},{hostname:gt.required(),port:Wn}).empty(null),dc.items(gt)]),no,xG=!1;BG.exports={configValidator:toe,routesValidator:aoe,routeConstraints:iS};function toe(e,t=!1){if(xG=t,no=e.rootPath,TN.isEmpty(no))throw eoe;let r=We.optional(),n=_r.min(0).max(1e3).empty(null).default(ooe),s=gt.pattern(/^[\\/]$|([\\/a-zA-Z_0-9:-]+)+$/,"directory path").empty(null).default(vp),i=gt.optional().empty(null),o=gt.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),c=be.string().empty(null).default(vp),l=be.custom(noe).empty(null).default(vp),u=e.clustering?.enabled,d=be.object({certificate:i,certificateAuthority:i,privateKey:i}),f;return u===!0?f=be.object({enabled:r,hubServer:be.object({cluster:be.object({name:be.required().empty(null),network:be.object({port:Wn,routes:iS}).required()}).required(),leafNodes:be.object({network:be.object({port:Wn}).required()}).required(),network:be.object({port:Wn}).required()}).required(),leafServer:be.object({network:be.object({port:Wn,routes:iS}).required(),streams:be.object({maxAge:_r.min(120).allow(null).optional(),maxBytes:_r.min(1).allow(null).optional(),maxMsgs:_r.min(1).allow(null).optional(),path:c}).required()}).required(),logLevel:be.valid("error","warn","info","debug","trace"),nodeName:o,republishMessages:We.optional(),databaseLevel:We.optional(),tls:be.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:We.required(),verify:We.optional()}),user:gt.optional().empty(null)}).optional():f=be.object({enabled:r,tls:be.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:We.optional()})}).optional(),be.object({authentication:be.alternatives(be.object({authorizeLocal:We,cacheTTL:_r.required(),cookie:be.object({domains:dc.items(gt).optional(),expires:gt.optional()}),enableSessions:We,hashFunction:gt.valid("md5","sha256","argon2id").optional().empty(null)}),We).optional(),analytics:be.object({aggregatePeriod:_r,replicate:We.optional()}),replication:be.object({hostname:be.alternatives(gt,_r).optional().empty(null),url:gt.optional().empty(null),port:Wn,securePort:Wn,routes:dc.optional().empty(null),databases:be.alternatives(gt,dc),enableRootCAs:We.optional(),copyTablesToCatchUp:We.optional()}).optional(),componentsRoot:s.optional(),clustering:f,localStudio:be.object({enabled:r}).required(),logging:be.object({auditAuthEvents:be.object({logFailed:We,logSuccessful:We}),file:We.required(),level:be.valid("notify","fatal","error","warn","info","debug","trace"),rotation:be.object({enabled:We.optional(),compress:We.optional(),interval:gt.custom(ioe).optional().empty(null),maxSize:gt.custom(soe).optional().empty(null),path:gt.optional().empty(null).default(vp)}).required(),root:s,stdStreams:We.required(),auditLog:We.required()}).required(),operationsApi:be.object({network:be.object({cors:We.optional(),corsAccessList:dc.optional(),headersTimeout:_r.min(1).optional(),keepAliveTimeout:_r.min(1).optional(),port:Wn,domainSocket:be.optional().empty("hdb/operations-server").default(vp),securePort:Wn,timeout:_r.min(1).optional()}).optional(),tls:be.alternatives([be.array().items(d),d])}).required(),rootPath:gt.pattern(/^[\\/]$|([\\/a-zA-Z_0-9:-]+)+$/,"directory path").required(),mqtt:be.object({network:be.object({port:Wn,securePort:Wn,mtls:be.alternatives([We.optional(),be.object({user:gt.optional(),certificateAuthority:i,required:We.optional()})])}).required(),webSocket:We.optional(),requireAuthentication:We.optional()}),http:be.object({compressionThreshold:_r.optional(),cors:We.optional(),corsAccessList:dc.optional(),headersTimeout:_r.min(1).optional(),port:Wn,securePort:Wn,maxHeaderSize:_r.optional(),mtls:be.alternatives([We.optional(),be.object({user:gt.optional(),certificateAuthority:i,required:We.optional()})]),threadRange:be.alternatives([dc.optional(),gt.optional()])}).required(),threads:be.alternatives(n.optional(),be.object({count:n.optional(),debug:be.alternatives(We.optional(),be.object({startingPort:_r.min(1).optional(),host:gt.optional(),waitForDebugger:We.optional()})),maxHeapMemory:_r.min(0).optional()})),storage:be.object({writeAsync:We.required(),overlappingSync:We.optional(),caching:We.optional(),compression:be.alternatives([We.optional(),be.object({dictionary:gt.optional(),threshold:_r.optional()})]),compactOnStart:We.optional(),compactOnStartKeepBackup:We.optional(),noReadAhead:We.optional(),path:l,prefetchWrites:We.optional(),maxFreeSpaceToLoad:_r.optional(),maxFreeSpaceToRetain:_r.optional()}).required(),ignoreScripts:We.optional(),tls:be.alternatives([be.array().items(d),d])}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}a(toe,"configValidator");function roe(e){return xG||UG.existsSync(e)?null:`Specified path ${e} does not exist.`}a(roe,"doesPathExist");function noe(e,t){be.assert(e,gt.pattern(/^[\\/]$|([\\/a-zA-Z_0-9:-]+)+$/,"directory path"));let r=roe(e);if(r)return t.message(r)}a(noe,"validatePath");function soe(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(Qie);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(Xie):e}a(soe,"validateRotationMaxSize");function ioe(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(Jie);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(Zie):e}a(ioe,"validateRotationInterval");function ooe(e,t){let r=t.state.path.join("."),n=Yie.cpus().length,s=n-1;s<=2&&(s=2);let i=process.constrainedMemory?.()||DG();return i=Math.round(Math.min(i,DG())/1e6),s=Math.max(Math.min(s,Math.round((i-750)/300)),1),Wie.info(`Detected ${n} cores and ${i}MB on this machine, defaulting ${r} to ${s}`),s}a(ooe,"setDefaultThreads");function vp(e,t){let r=t.state.path.join(".");if(!TN.isEmpty(t.original)&&r!=="operationsApi.network.domainSocket")return t.original;if(TN.isEmpty(no))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"componentsRoot":return Fl.join(no,zie);case"logging.root":return Fl.join(no,MG);case"clustering.leafServer.streams.path":return Fl.join(no,"clustering","leaf");case"storage.path":let n=Fl.join(no,vG.LEGACY_DATABASES_DIR_NAME);return UG.existsSync(n)?n:Fl.join(no,vG.DATABASES_DIR_NAME);case"logging.rotation.path":return Fl.join(no,MG);case"operationsApi.network.domainSocket":return r==null?null:Fl.join(no,"operations-server");default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(vp,"setDefaultRoot");function aoe(e){let t=be.object({routes:iS});return jie.validateBySchema({routes:e},t)}a(aoe,"routesValidator")});var kG={};Re(kG,{getBackupDirPath:()=>oS});function oS(e){return FG.join(e,hA)}var FG,RN=ie(()=>{FG=b(require("node:path"));$();a(oS,"getBackupDirPath")});var lS={};Re(lS,{ConfigEnvVarError:()=>gd,applyRuntimeEnvConfig:()=>_oe,filterArgsAgainstRuntimeConfig:()=>coe});function aS(){let{loggerWithTag:e}=pr();return e("env-config")}function cS(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&Object.prototype.toString.call(e)==="[object Object]"}function coe(e){if(!process.env.HARPER_SET_CONFIG)return e;let t;try{t=JSON.parse(process.env.HARPER_SET_CONFIG)}catch(i){return aS().warn("Failed to parse HARPER_SET_CONFIG for arg filtering",i),e}if(Object.keys(t).length===0)return e;let r=a((i,o="")=>{let c=new Set;for(let l in i){let u=o?`${o}_${l}`:l;i[l]!==null&&typeof i[l]=="object"&&!Array.isArray(i[l])?r(i[l],u).forEach(d=>c.add(d)):c.add(u.toLowerCase())}return c},"flattenSetConfig"),n=r(t),s={};for(let i in e)n.has(i.toLowerCase())||(s[i]=e[i]);return s}function Mp(e,t=""){let r={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let s=e[n],i=t?`${t}.${n}`:n;cS(s)?Object.assign(r,Mp(s,i)):r[i]=s}return r}function Up(e,t){let r=t.split("."),n=e;for(let s of r){if(n==null)return;n=n[s]}return n}function xp(e,t,r){let n=t.split("."),s=e;for(let i=0;i<n.length-1;i++){let o=n[i];cS(s[o])||(s[o]={}),s=s[o]}s[n[n.length-1]]=r}function AN(e,t){let r=t.split("."),n=e;for(let s=0;s<r.length-1;s++){let i=r[s];if(!cS(n[i]))return;n=n[i]}delete n[r[r.length-1]]}function loe(e){let t=a(n=>n===null||typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(t).join(",")+"]":"{"+Object.keys(n).sort().map(o=>JSON.stringify(o)+":"+t(n[o])).join(",")+"}","sortedStringify"),r=t(e);return $G.createHash("sha256").update(r).digest("hex")}function uoe(e,t){if(!e||e.trim()==="")return null;try{let r=JSON.parse(e.trim());if(!cS(r))throw new gd(`${t} must be a JSON object, got: ${typeof r}`,t);return r}catch(r){throw r instanceof gd?r:new gd(`Invalid JSON syntax in ${t}: ${r.message}`,t,r)}}function doe(e){let t=bN.join(oS(e),VG);if(!fc.existsSync(t))return{version:"1.0",sources:{},originalValues:{},snapshots:{}};try{let r=fc.readJsonSync(t);return r.originalValues||(r.originalValues={}),r}catch(r){return aS().warn(`Failed to load config state file, starting fresh: ${r.message}`),{version:"1.0",sources:{},originalValues:{},snapshots:{}}}}function foe(e,t){let r=oS(e),n=bN.join(r,VG);fc.ensureDirSync(r),fc.writeJsonSync(n,t,{spaces:2})}function moe(e,t){let r=[];for(let[n,s]of Object.entries(t.sources)){if(s!=="HARPER_DEFAULT_CONFIG"&&s!=="HARPER_SET_CONFIG")continue;let i=t.snapshots[s];if(!i)continue;let o=Up(e,n),c=Up(i.config,n);JSON.stringify(o)!==JSON.stringify(c)&&r.push(n)}return r}function HG(e,t,r,n,s={}){let{respectSources:i=[],storeOriginals:o=!1}=s,c=Mp(r);for(let[l,u]of Object.entries(c)){let d=t.sources[l],f=Up(e,l);d&&i.includes(d)||(o&&!d&&f!==void 0&&f!==null&&(l in t.originalValues||(t.originalValues[l]=f)),xp(e,l,u),t.sources[l]=n)}}function poe(e,t,r,n,s){let i=Object.keys(Mp(r)),o=Object.keys(Mp(n)),c=i.filter(l=>!o.includes(l));for(let l of c)t.sources[l]===s&&((s==="HARPER_DEFAULT_CONFIG"||s==="HARPER_SET_CONFIG")&&l in t.originalValues?(xp(e,l,t.originalValues[l]),delete t.originalValues[l]):AN(e,l),delete t.sources[l])}function hoe(e,t,r){let n=Object.keys(t.sources).filter(s=>t.sources[s]===r);for(let s of n)AN(e,s),delete t.sources[s]}function Eoe(e,t,r){let n={};for(let s in t.sources)if(t.sources[s]===r){let i=Up(e,s);i!==void 0&&xp(n,s,i)}return n}function GG(e,t,r,n,s={}){let i=process.env[r];if(!i)return;let o=aS(),c=uoe(i,r);if(!c)return;let l=loe(c),u=t.snapshots[n];if(n==="HARPER_SET_CONFIG")HG(e,t,c,n,{respectSources:[],storeOriginals:!0});else if(n==="HARPER_DEFAULT_CONFIG")if(s.isInstall)HG(e,t,c,n,{respectSources:["HARPER_SET_CONFIG","user"],storeOriginals:!0});else{let m=Mp(c);for(let[p,h]of Object.entries(m)){let E=t.sources[p],_=Up(e,p);if(!(E&&E!=="HARPER_DEFAULT_CONFIG")){if(!E&&_!=null){p in t.originalValues||(t.originalValues[p]=_);continue}xp(e,p,h),t.sources[p]=n}}}u&&u.hash!==l&&poe(e,t,u.config,c,n);let d=Eoe(e,t,n);t.snapshots[n]={hash:l,config:d};let f=s.isInstall?"installation":"runtime";o.debug?.(`Applied ${r} at ${f}`)}function qG(e,t,r,n){if(!t.snapshots[n])return;let s=aS();if(n==="HARPER_DEFAULT_CONFIG"||n==="HARPER_SET_CONFIG"){let i=Object.keys(t.sources).filter(o=>t.sources[o]===n);for(let o of i)o in t.originalValues?(xp(e,o,t.originalValues[o]),delete t.originalValues[o]):AN(e,o),delete t.sources[o]}else hoe(e,t,n);delete t.snapshots[n],s.debug?.(`${r} removed, cleaned up values`)}function _oe(e,t,r={}){let n=process.env.HARPER_DEFAULT_CONFIG,s=process.env.HARPER_SET_CONFIG,i=doe(t);if(!n&&!s&&Object.keys(i.snapshots).length===0)return e;if(!r.isInstall){let o=moe(e,i);for(let c of o)i.sources[c]="user"}return GG(e,i,"HARPER_DEFAULT_CONFIG","HARPER_DEFAULT_CONFIG",r),n||qG(e,i,"HARPER_DEFAULT_CONFIG","HARPER_DEFAULT_CONFIG"),GG(e,i,"HARPER_SET_CONFIG","HARPER_SET_CONFIG",r),s||qG(e,i,"HARPER_SET_CONFIG","HARPER_SET_CONFIG"),foe(t,i),e}var fc,bN,$G,VG,gd,uS=ie(()=>{fc=b(require("fs-extra")),bN=b(require("node:path")),$G=b(require("node:crypto"));RN();VG=".harper-config-state.json";a(aS,"getLogger");gd=class extends Error{static{a(this,"ConfigEnvVarError")}envVarName;originalError;constructor(t,r,n){super(t),this.name="ConfigEnvVarError",this.envVarName=r,this.originalError=n}};a(cS,"isPlainObject");a(coe,"filterArgsAgainstRuntimeConfig");a(Mp,"flattenObject");a(Up,"getNestedValue");a(xp,"setNestedValue");a(AN,"deleteNestedValue");a(loe,"hashConfig");a(uoe,"parseConfigEnvVar");a(doe,"loadConfigState");a(foe,"saveConfigState");a(moe,"detectConfigDrift");a(HG,"applyConfigLayer");a(poe,"handleDeletions");a(hoe,"removeValuesWithSource");a(Eoe,"buildSnapshot");a(GG,"processEnvVar");a(qG,"cleanupRemovedEnvVar");a(_oe,"applyRuntimeEnvConfig")});var Nt=x(ar=>{"use strict";var qs=($(),P(z)),Pr=ue(),Mt=ee(),{configValidator:goe,routesValidator:KG}=yN(),sn=require("fs-extra"),mS=require("yaml"),_s=require("path"),Soe=require("is-number"),WG=require("properties-reader"),Toe=require("lodash"),{handleHDBError:yoe}=ge(),{HTTP_STATUS_CODES:Roe,HDB_ERROR_MSGS:Sd}=En(),{server:boe}=(qr(),P(Em)),{PACKAGE_ROOT:jG}=Dt(),{getBackupDirPath:Aoe}=(RN(),P(kG)),{DATABASES_PARAM_CONFIG:Bp,CONFIG_PARAMS:Es,CONFIG_PARAM_MAP:gi}=qs,Ioe="Unable to get config value because config is uninitialized",woe="Config successfully initialized",Noe="Error backing up config file",Coe="Empty parameter sent to getConfigValue",zG=_s.join(jG,"config","yaml",qs.HDB_DEFAULT_CONFIG_FILE),Ooe=_s.join(jG,"config","yaml","defaultNatsConfig.yaml"),Poe="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",YG={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"},dS,Kt,fS;ar.createConfigFile=Loe;ar.getDefaultConfig=Doe;ar.getConfigValue=JG;ar.initConfig=pS;ar.flattenConfig=Td;ar.updateConfigValue=XG;ar.updateConfigObject=Moe;ar.getConfiguration=Boe;ar.setConfiguration=Foe;ar.readConfigFile=CN;ar.getClusteringRoutes=koe;ar.initOldConfig=eq;ar.getConfigFromFile=Hoe;ar.getConfigFilePath=kl;ar.addConfig=Goe;ar.deleteConfigFromFile=qoe;ar.getConfigObj=$oe;ar.resolvePath=IN;ar.getFlatConfigObj=Voe;function IN(e){if(e?.startsWith("~/"))return _s.join(Pr.getHomeDir(),e.slice(1));let t=fe();try{return _s.resolve(t.getHdbBasePath(),e)}catch(r){return console.error("Unable to resolve path",e,r),e}}a(IN,"resolvePath");function Loe(e,t=!1){let r=mc(zG);if(e.clustering_enabled||e.CLUSTERING_ENABLED||e.clustering){let c=mS.parseDocument(sn.readFileSync(Ooe,"utf8"),{simpleKeys:!0});r.addIn(["clustering"],c.toJSON().clustering)}dS=Td(r.toJSON());let n;for(let c in e){let l=gi[c.toLowerCase()];if(l===Es.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=wN(l,e[c]);l==="rootPath"&&d?.endsWith("/")&&(d=d.slice(0,-1));try{u.length>1&&typeof r.getIn(u.slice(0,-1))=="boolean"&&r.deleteIn(u.slice(0,-1)),r.setIn([...u],d)}catch(f){Mt.error(f)}}}n&&QG(r,n),ZG(r,null,{isInstall:!0}),NN(r,t);let s=r.toJSON();Kt=Td(s);let i=r.getIn(["rootPath"]),o=_s.join(i,qs.HDB_CONFIG_FILE);if(sn.createFileSync(o),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);sn.writeFileSync(o,String(r)),Mt.trace(`Config file written to ${o}`)}a(Loe,"createConfigFile");function QG(e,t){let r;try{try{r=JSON.parse(t)}catch(n){if(!Pr.isObject(t))throw n;r=t}for(let n of r){let s=Object.keys(n)[0];if(n[s].hasOwnProperty(Bp.TABLES))for(let i in n[s][Bp.TABLES])for(let o in n[s][Bp.TABLES][i]){let c=n[s][Bp.TABLES][i][o],l=[Es.DATABASES,s,Bp.TABLES,i,o];e.hasIn(l)?e.setIn(l,c):e.addIn(l,c)}else for(let i in n[s]){let o=n[s][i],c=[Es.DATABASES,s,i];e.hasIn(c)?e.setIn(c,o):e.addIn(c,o)}}}catch(n){Mt.error("Error parsing schemas CLI/env config arguments",n)}}a(QG,"setSchemasConfig");function Doe(e){if(dS===void 0){let r=mc(zG);dS=Td(r.toJSON())}let t=gi[e.toLowerCase()];if(t!==void 0)return dS[t.toLowerCase()]}a(Doe,"getDefaultConfig");function JG(e){if(e==null){Mt.info(Coe);return}if(Kt===void 0){Mt.trace(Ioe);return}let t=gi[e.toLowerCase()];if(t!==void 0)return Kt[t.toLowerCase()]}a(JG,"getConfigValue");function kl(e=Pr.getPropsFilePath()){let t=Pr.getEnvCliRootPath();if(t)return IN(_s.join(t,qs.HDB_CONFIG_FILE));let r=WG(e);return IN(r.get(qs.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY))}a(kl,"getConfigFilePath");function pS(e=!1){if(Kt===void 0||e){let t;if(!Pr.noBootFile()){t=Pr.getPropsFilePath();try{sn.accessSync(t,sn.constants.F_OK|sn.constants.R_OK)}catch(i){throw Mt.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}}let r=kl(t),n;if(r.includes("config/settings.js"))try{eq(r);return}catch(i){if(i.code!==qs.NODE_ERROR_CODES.ENOENT)throw i}try{n=mc(r)}catch(i){if(i.code===qs.NODE_ERROR_CODES.ENOENT){Mt.trace(`HarperDB config file not found at ${r}.
12
12
  This can occur during early stages of install where the config file has not yet been created`);return}else throw Mt.error(i),new Error(`Error reading HarperDB config file at ${r}`)}voe(n,r),ZG(n,r),NN(n);let s=n.toJSON();if(boe.config=s,Kt=Td(s),Kt.logging_rotation_rotate)for(let i in YG)Kt[i]&&Mt.error(`Config ${YG[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);Mt.trace(woe)}}a(pS,"initConfig");function voe(e,t){let r=e.getIn(["rootPath"]),n=!1;if(e.hasIn(["storage","path"])||(e.setIn(["storage","path"],_s.join(r,"database")),n=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],_s.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(Mt.trace("Updating config file with missing config params"),e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${e.errors}`);sn.writeFileSync(t,String(e))}}a(voe,"checkForUpdatedConfig");function NN(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 Sd.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 Sd.CONFIG_VALIDATION("operationsApi.network.port and operationsApi.network.securePort cannot be the same value");let n=goe(r,t);if(n.error)throw Sd.CONFIG_VALIDATION(n.error.message);typeof n.value.threads=="object"?e.setIn(["threads","count"],n.value.threads.count):e.setIn(["threads"],n.value.threads),e.setIn(["componentsRoot"],n.value.componentsRoot),e.setIn(["logging","root"],n.value.logging.root),e.setIn(["storage","path"],n.value.storage.path),e.setIn(["logging","rotation","path"],n.value.logging.rotation.path),e.setIn(["operationsApi","network","domainSocket"],n.value?.operationsApi?.network?.domainSocket),r?.clustering?.enabled&&e.setIn(["clustering","leafServer","streams","path"],n.value.clustering.leafServer.streams?.path)}a(NN,"validateConfig");function Moe(e,t){Kt===void 0&&(Kt={});let r=gi[e.toLowerCase()];if(r===void 0){Mt.trace(`Unable to update config object because config param '${e}' does not exist`);return}Kt[r.toLowerCase()]=t}a(Moe,"updateConfigObject");function XG(e,t,r=void 0,n=!1,s=!1,i=!1){Kt===void 0&&pS();let o=JG(gi.hdb_root),c=_s.join(o,qs.HDB_CONFIG_FILE),l=mc(c),u;if(r&&Kt){let m=!1;for(let p in r)if(r[p]!=Kt[p.toLowerCase()]){m=!0;break}if(!m){Mt.trace("No changes detected in config parameters, skipping update");return}}if(r===void 0&&e.toLowerCase()===Es.DATABASES)u=t;else if(r===void 0){let m;if(i)m=e;else if(m=gi[e.toLowerCase()],m===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let p=m.split("_"),h=wN(m,t);l.setIn([...p],h)}else for(let m in r){let p=gi[m.toLowerCase()];if(p===Es.HTTP_SECUREPORT&&r[m]===Kt[Es.HTTP_PORT]?.toString()&&l.setIn(["http","port"],null),p===Es.OPERATIONSAPI_NETWORK_SECUREPORT&&r[m]===Kt[Es.OPERATIONSAPI_NETWORK_PORT.toLowerCase()]?.toString()&&l.setIn(["operationsApi","network","port"],null),p===Es.DATABASES){u=r[m];continue}if(p?.startsWith("threads_")){let h=l.getIn(["threads"]);h>=0&&(l.deleteIn(["threads"]),l.setIn(["threads","count"],h))}if(!p&&(m.endsWith("_package")||m.endsWith("_port"))&&(p=m),p!==void 0){let h=p.split("_"),E=qs.LEGACY_CONFIG_PARAMS[m.toUpperCase()];E&&E.startsWith("customFunctions")&&l.hasIn(E.split("_"))&&(p=E,h=E.split("_"));let _=wN(p,r[m]);p==="rootPath"&&_?.endsWith("/")&&(_=_.slice(0,-1));try{h.length>1&&typeof l.getIn(h.slice(0,-1))=="boolean"&&l.deleteIn(h.slice(0,-1)),l.setIn([...h],_)}catch(R){Mt.error(R)}}}u&&QG(l,u),NN(l);let d=l.getIn(["rootPath"]),f=_s.join(d,qs.HDB_CONFIG_FILE);if(n===!0&&Uoe(c,d),l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${l.errors}`);sn.writeFileSync(f,String(l)),s&&(Kt=Td(l.toJSON())),Mt.trace(`Config parameter: ${e} updated with value: ${t}`)}a(XG,"updateConfigValue");function Uoe(e,t){try{let r=_s.join(Aoe(t),`${new Date(Date.now()).toISOString().replaceAll(":","-")}-${qs.HDB_CONFIG_FILE}.bak`);sn.copySync(e,r),Mt.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){Mt.error(Noe),Mt.error(r)}}a(Uoe,"backupConfigFile");var xoe=["databases"];function Td(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}),fS=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])&&!xoe.includes(i)){let o=r(n[i]);for(let c in o){if(!o.hasOwnProperty(c))continue;c!=="package"&&(i=i.toLowerCase());let l=i+"_"+c;!Es[l.toUpperCase()]&&gi[l]&&(s[gi[l].toLowerCase()]=o[c]),s[l]=o[c]}}n[i]!==void 0&&(s[i.toLowerCase()]=n[i])}return s}a(r,"squashObj")}a(Td,"flattenConfig");function wN(e,t){if(e===Es.CLUSTERING_NODENAME||e===Es.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(Soe(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||Pr.isObject(t)||t===null)return t;if(typeof t=="string"&&t.toLowerCase()==="true")return!0;if(typeof t=="string"&&t.toLowerCase()==="false")return!1}if(t===void 0||t.toLowerCase()==="undefined")return null;if(typeof t=="string"&&(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")))try{return JSON.parse(t)}catch{}return Pr.autoCast(t)}a(wN,"castConfigValue");function Boe(){let e=Pr.getPropsFilePath(),t=kl(e);return mc(t).toJSON()}a(Boe,"getConfiguration");async function Foe(e){let{operation:t,hdb_user:r,hdbAuthHeader:n,...s}=e;try{return XG(void 0,void 0,s,!0),Poe}catch(i){throw typeof i=="string"||i instanceof String?yoe(i,i,Roe.BAD_REQUEST,void 0,void 0,!0):i}}a(Foe,"setConfiguration");function CN(){let e=Pr.getPropsFilePath();try{sn.accessSync(e,sn.constants.F_OK|sn.constants.R_OK)}catch(n){if(!Pr.noBootFile())throw Mt.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=kl(e);return mc(t).toJSON()}a(CN,"readConfigFile");function mc(e){return mS.parseDocument(sn.readFileSync(e,"utf8"),{simpleKeys:!0})}a(mc,"parseYamlDoc");function ZG(e,t,r={}){let n=process.env.HARPER_DEFAULT_CONFIG,s=process.env.HARPER_SET_CONFIG;if(!n&&!s)return;let{applyRuntimeEnvConfig:i}=(uS(),P(lS)),o=e.getIn(["rootPath"]);if(!o){Mt.warn("Cannot apply runtime env config: rootPath not found in config");return}let c=e.toJSON();try{i(c,o,r);let l=mS.parseDocument(mS.stringify(c),{simpleKeys:!0});if(l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml: ${l.errors}`);e.contents=l.contents}catch(l){throw Mt.error(`Failed to apply runtime env config: ${l.message}`),l}if(t)try{if(e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml: ${e.errors}`);sn.writeFileSync(t,String(e)),Mt.debug("Config file updated with runtime env var values")}catch(l){throw Mt.error(`Failed to write config file after applying runtime env vars: ${l.message}`),l}}a(ZG,"applyRuntimeEnvVarConfig");function koe(){let e=CN(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=Pr.isEmptyOrZeroLength(t)?[]:t;let r=KG(t);if(r)throw Sd.CONFIG_VALIDATION(r.message);let n=e?.clustering?.leafServer?.network?.routes;n=Pr.isEmptyOrZeroLength(n)?[]:n;let s=KG(n);if(s)throw Sd.CONFIG_VALIDATION(s.message);if(!Pr.isEmptyOrZeroLength(n)&&!Pr.isEmptyOrZeroLength(t)){let i=t.filter(o=>n.some(c=>c.host===o.host&&c.port===o.port));if(!Pr.isEmptyOrZeroLength(i)){let o=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw Sd.CONFIG_VALIDATION(o)}}return{hub_routes:t,leaf_routes:n}}a(koe,"getClusteringRoutes");function eq(e){let t=WG(e);Kt={};for(let r in gi){let n=t.get(r.toUpperCase());if(Pr.isEmpty(n)||typeof n=="string"&&n.trim().length===0)continue;let s=gi[r].toLowerCase();s===Es.LOGGING_ROOT?Kt[s]=_s.dirname(n):Kt[s]=n}return Kt}a(eq,"initOldConfig");function Hoe(e){let t=CN();return Toe.get(t,e.replaceAll("_","."))}a(Hoe,"getConfigFromFile");async function Goe(e,t){let r=mc(kl());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 sn.writeFile(kl(),String(r))}a(Goe,"addConfig");function qoe(e){let t=kl(Pr.getPropsFilePath()),r=mc(t);r.deleteIn(e);let n=r.getIn(["rootPath"]),s=_s.join(n,qs.HDB_CONFIG_FILE);sn.writeFileSync(s,String(r))}a(qoe,"deleteConfigFromFile");function $oe(){return fS||(pS(),fS)}a($oe,"getConfigObj");function Voe(){return Kt||pS(),Kt}a(Voe,"getFlatConfigObj")});var oo={};Re(oo,{ACTIVE_BOOLEAN:()=>aq,ALTERUSER_NOTHING_TO_UPDATE:()=>sq,EMPTY_PASSWORD:()=>iq,EMPTY_ROLE:()=>oq,USERNAME_REQUIRED:()=>nq,addUser:()=>xN,alterUser:()=>BN,dropUser:()=>FN,findAndValidateUser:()=>Rd,getClusterUser:()=>rae,getSuperUser:()=>Hp,getUsersWithRolesCache:()=>tae,listUsers:()=>_S,listUsersExternal:()=>HN,setUsersWithRolesCache:()=>Ti,userInfo:()=>kN});async function xN(e){let t=uq.cleanAttributes(e,dq),r=lq.addUserValidation(t);if(r)throw new Si(r.message);let n=await kp.searchByValue({schema:"system",table:"hdb_role",attribute:"role",value:t.role,get_attributes:["id","permission","role"]});if(!n||n.length<1)throw new Si(yd.ROLE_NAME_NOT_FOUND(t.role),ca.NOT_FOUND);if(n.length>1)throw new Si(yd.DUP_ROLES_FOUND(t.role),ca.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=MN.encrypt(t.password)),t.password=await Fp.hash(t.password,hS),t.hash_function=hS,t.role=n[0].id;let s=await cq.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(vN.debug(s),await Ti(),s.skipped_hashes.length===1)throw new Si(yd.USER_ALREADY_EXISTS(t.username),ca.CONFLICT);return await DN.signalUserChange(new UN(process.pid)),`${t.username} successfully added`}async function BN(e){let t=uq.cleanAttributes(e,dq);if(so.isEmptyOrZeroLength(t.username))throw new Error(nq);if(so.isEmptyOrZeroLength(t.password)&&so.isEmptyOrZeroLength(t.role)&&so.isEmptyOrZeroLength(t.active))throw new Error(sq);if(!so.isEmpty(t.password)&&so.isEmptyOrZeroLength(t.password.trim()))throw new Error(iq);if(!so.isEmpty(t.active)&&!so.isBoolean(t.active))throw new Error(aq);if(!so.isEmpty(t.password)&&!so.isEmptyOrZeroLength(t.password.trim())&&(Zoe(t.username)&&(t.hash=MN.encrypt(t.password)),t.password=await Fp.hash(t.password,hS),t.hash_function=hS),t.role==="")throw new Error(oq);if(t.role){let n=await kp.searchByValue({schema:"system",table:"hdb_role",attribute:"role",value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new Si(yd.ALTER_USER_ROLE_NOT_FOUND(t.role),ca.NOT_FOUND);if(n.length>1)throw new Si(yd.DUP_ROLES_FOUND(t.role),ca.CONFLICT);t.role=n[0].id}let r=await cq.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await Ti(),await DN.signalUserChange(new UN(process.pid)),r}function Zoe(e){let t=!1,r=io.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}async function FN(e){let t=lq.dropUserValidation(e);if(t)throw new Si(t.message);if(io.get(e.username)===void 0)throw new Si(yd.USER_NOT_EXIST(e.username),ca.NOT_FOUND);let r=await Xoe({table:"hdb_user",schema:"system",hash_values:[e.username]});return vN.debug(r),await Ti(),await DN.signalUserChange(new UN(process.pid)),`${e.username} successfully deleted`}async function kN(e){if(!e||!e.hdb_user)return"There was no user info in the body";let t=LN.cloneDeep(e.hdb_user),r=await kp.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}async function HN(){let e=await _S();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}async function _S(){let e=await kp.searchByValue({schema:"system",table:"hdb_role",value:"*",attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=LN.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await kp.searchByValue({schema:"system",table:"hdb_user",value:"*",attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=LN.cloneDeep(s),s.role=t[s.role],eae(s.role),n.set(s.username,s);return n}function eae(e){if(!e){vN.error("invalid user role found.");return}e.permission.system||(e.permission.system={tables:{}}),e.permission.system.tables||(e.permission.system.tables={});for(let t of Object.keys(zoe)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}async function Ti(e=void 0){e?io=e:io=await _S()}async function tae(){return io||await Ti(),io}async function Rd(e,t,r=!0){io||await Ti();let n=io.get(e);if(!n){if(!r)return{username:e};throw new Si(ON.GENERIC_AUTH_FAIL,ca.UNAUTHORIZED)}if(n&&!n.active)throw new Si(ON.USER_INACTIVE,ca.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(rq.get(t)===n.password)return s;{let i=Fp.validate(n.password,t,n.hash_function||Fp.HASH_FUNCTION.MD5);if(i?.then&&(i=await i),i===!0)rq.set(t,n.password);else throw new Si(ON.GENERIC_AUTH_FAIL,ca.UNAUTHORIZED)}}return s}async function Hp(){io||await Ti();for(let[,e]of io)if(e.role.role==="super_user")return e}async function rae(){let e=await _S(),t=Woe.getConfigFromFile(PN.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(r==null||r?.role?.role!==PN.ROLE_TYPES_ENUM.CLUSTER_USER)return;let n=MN.decrypt(r.hash);return r.decrypt_hash=n,r.uri_encoded_d_hash=encodeURIComponent(n),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+tq.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+tq.SERVER_SUFFIX.ADMIN,r}var nq,sq,iq,oq,aq,cq,Koe,Fp,lq,kp,DN,so,uq,vN,Yoe,MN,PN,tq,Woe,joe,zoe,Qoe,Si,ca,ON,yd,UN,LN,ES,Joe,dq,rq,Xoe,hS,io,fq,gs=ie(()=>{"use strict";nq="username is required",sq="nothing to update, must supply active, role or password to update",iq="password cannot be an empty string",oq="If role is specified, it cannot be empty.",aq="active must be true or false",cq=ps(),Koe=xl(),Fp=(aN(),P(oN)),lq=QH(),kp=Yn(),DN=na(),so=ue(),uq=require("validate.js"),vN=ee(),{promisify:Yoe}=require("util"),MN=aa(),PN=($(),P(z)),tq=Er(),Woe=Nt(),joe=fe(),zoe=Nl(),{hdbErrors:Qoe,ClientError:Si}=ge(),{HTTP_STATUS_CODES:ca,AUTHENTICATION_ERROR_MSGS:ON,HDB_ERROR_MSGS:yd}=Qoe,{UserEventMsg:UN}=us(),LN=require("lodash"),{server:ES}=(qr(),P(Em)),Joe=ee();ES.getUser=(e,t)=>Rd(e,t,t!=null);ES.authenticateUser=(e,t)=>Rd(e,t);dq={username:!0,active:!0,role:!0,password:!0},rq=new Map,Xoe=Yoe(Koe.delete),hS=joe.get(PN.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??Fp.HASH_FUNCTION.SHA256;a(xN,"addUser");a(BN,"alterUser");a(Zoe,"isClusterUser");a(FN,"dropUser");a(kN,"userInfo");a(HN,"listUsersExternal");a(_S,"listUsers");a(eae,"appendSystemTablesToRole");a(Ti,"setUsersWithRolesCache");a(tae,"getUsersWithRolesCache");a(Rd,"findAndValidateUser");a(Hp,"getSuperUser");a(rae,"getClusterUser");fq=[];ES.invalidateUser=function(e){for(let t of fq)try{t(e)}catch(r){Joe.error("Error invalidating user",r)}};ES.onInvalidatedUser=function(e){fq.push(e)}});var Le,bd=ie(()=>{Le={HEALTHY:"healthy",WARNING:"warning",ERROR:"error",UNKNOWN:"unknown",LOADING:"loading"}});var Ad,GN=ie(()=>{bd();Ad=class{static{a(this,"ComponentStatus")}lastChecked;status;message;error;constructor(t,r,n){this.lastChecked=new Date,this.status=t,this.message=r,this.error=n}updateStatus(t,r){this.status=t,this.message=r,this.lastChecked=new Date,t!==Le.ERROR&&(this.error=void 0)}markHealthy(t){this.updateStatus(Le.HEALTHY,t||"Component is healthy")}markError(t,r){this.status=Le.ERROR,this.error=t,this.message=r||(typeof t=="string"?t:t.message),this.lastChecked=new Date}markWarning(t){this.updateStatus(Le.WARNING,t)}markLoading(t){this.updateStatus(Le.LOADING,t||"Component is loading")}isHealthy(){return this.status===Le.HEALTHY}hasError(){return this.status===Le.ERROR}isLoading(){return this.status===Le.LOADING}hasWarning(){return this.status===Le.WARNING}getSummary(){let t=this.status.toUpperCase(),r=this.message?`: ${this.message}`:"";return`${t}${r}`}}});var Hl,pc,qN,Id,$N,wd,VN,gS=ie(()=>{Hl=b(En()),pc=class extends Error{static{a(this,"ComponentStatusError")}statusCode;timestamp;constructor(t,r=Hl.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR){super(t),this.name="ComponentStatusError",this.statusCode=r,this.timestamp=new Date,Error.captureStackTrace(this,this.constructor)}},qN=class extends pc{static{a(this,"CrossThreadTimeoutError")}requestId;timeoutMs;collectedCount;constructor(t,r,n){super(`Component status collection timeout after ${r}ms. Collected ${n} responses for request ${t}.`,Hl.HTTP_STATUS_CODES.GATEWAY_TIMEOUT),this.name="CrossThreadTimeoutError",this.requestId=t,this.timeoutMs=r,this.collectedCount=n}},Id=class extends pc{static{a(this,"ITCError")}operation;cause;constructor(t,r){super(`Inter-thread communication failed during ${t}: ${r?.message||"Unknown error"}`,Hl.HTTP_STATUS_CODES.SERVICE_UNAVAILABLE),this.name="ITCError",this.operation=t,this.cause=r}},$N=class extends pc{static{a(this,"AggregationError")}componentCount;cause;constructor(t,r){super(`Failed to aggregate status for ${t} components: ${r?.message||"Unknown error"}`,Hl.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR),this.name="AggregationError",this.componentCount=t,this.cause=r}},wd=class extends pc{static{a(this,"ComponentStatusOperationError")}componentName;operation;constructor(t,r,n){super(`Component '${t}' ${r} failed: ${n}`,Hl.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR),this.name="ComponentStatusOperationError",this.componentName=t,this.operation=r}},VN=class extends pc{static{a(this,"CrossThreadCollectionError")}result;constructor(t){let r=t.success?`Partial collection success: ${t.collectedFromThreads} threads responded`+(t.timedOutThreads.length>0?`, ${t.timedOutThreads.length} timed out`:""):`Collection failed: ${t.errors.map(n=>n.message).join(", ")}`;super(r,Hl.HTTP_STATUS_CODES.OK),this.name="CrossThreadCollectionError",this.result=t}getDiagnostics(){let t=[`Cross-thread collection ${this.result.success?"partially succeeded":"failed"}`,`Threads responded: ${this.result.collectedFromThreads}`];return this.result.expectedThreads&&t.push(`Expected threads: ${this.result.expectedThreads}`),this.result.timedOutThreads.length>0&&t.push(`Timed out threads: ${this.result.timedOutThreads.join(", ")}`),this.result.errors.length>0&&(t.push("Errors:"),this.result.errors.forEach((r,n)=>{t.push(` ${n+1}. ${r.name}: ${r.message}`)})),t.join(`
13
13
  `)}}});var mq,Gl,pq,hc,Gp,Nd,nae,SS,KN=ie(()=>{mq=b(us()),Gl=b(it());$();pq=b(pr());bd();gS();hc=(0,pq.loggerWithTag)("componentStatus.crossThread"),Gp=class{static{a(this,"CrossThreadStatusCollector")}awaitingResponses=new Map;responseCheckers=new Map;nextRequestId=1;listenerAttached=!1;timeout;cleanupTimer=null;constructor(t=5e3){this.timeout=t}attachListener(){this.listenerAttached||((0,Gl.onMessageByType)(ku.COMPONENT_STATUS_RESPONSE,({message:t})=>{let r=t.isMainThread?"main":`worker-${t.workerIndex}`;hc.trace?.("Received component status response from %s, with requestId: %d",r,t.requestId);let n=this.awaitingResponses.get(t.requestId);if(n){n.push({workerIndex:t.workerIndex,isMainThread:t.isMainThread||!1,statuses:t.statuses||[]});let s=this.responseCheckers.get(t.requestId);s&&s()}}),this.listenerAttached=!0)}scheduleCleanup(){this.cleanupTimer&&clearTimeout(this.cleanupTimer),this.awaitingResponses.size>0&&(this.cleanupTimer=setTimeout(()=>{this.awaitingResponses.size>0&&(hc.debug?.(`Cleaning up ${this.awaitingResponses.size} stale pending requests`),this.awaitingResponses.clear()),this.cleanupTimer=null},3e4))}async collect(t){try{this.attachListener(),this.scheduleCleanup();let r=this.nextRequestId++,n=[];this.awaitingResponses.set(r,n);let o=((0,Gl.getWorkerCount)()||1)+1-1,l=await new Promise((p,h)=>{let E=!1,_=a(()=>{let y=this.awaitingResponses.get(r);y&&y.length>=o&&!E&&(E=!0,S(),hc.trace?.(`Collected all ${y.length} expected responses for request ${r}`),p(y))},"checkComplete"),R=setTimeout(()=>{if(!E){E=!0;let y=this.awaitingResponses.get(r)||[];this.awaitingResponses.delete(r),hc.debug?.(`Collection timeout for request ${r}: collected ${y.length}/${o} responses`),p(y)}},this.timeout),S=a(()=>{this.awaitingResponses.delete(r),clearTimeout(R)},"cleanup");this.responseCheckers.set(r,_),(0,mq.sendItcEvent)({type:ku.COMPONENT_STATUS_REQUEST,message:{requestId:r}}).then(()=>{_()}).catch(y=>{E=!0,S(),this.responseCheckers.delete(r),h(new Id("sendItcEvent",y))})});this.responseCheckers.delete(r);let u=new Map,d=t.getAllStatuses(),f=(0,Gl.getWorkerIndex)(),m=f===void 0?"main":`worker-${f}`;for(let[p,h]of d)u.set(`${p}@${m}`,{...h,workerIndex:f});for(let p of l)for(let[h,E]of p.statuses){let _=p.isMainThread?"main":`worker-${p.workerIndex}`;u.set(`${h}@${_}`,{...E,workerIndex:p.workerIndex})}return hc.debug?.(`Collected component status from ${l.length+1} threads (including local)`),u}catch(r){return r instanceof Id?hc.error?.(`ITC failure during component status collection: ${r.message}`):hc.warn?.("Failed to collect component status from all threads:",r),hc.debug?.(`Collection failed for request. Error: ${r instanceof Error?r.message:"Unknown error"}`),this.getLocalStatusOnly(t)}}getLocalStatusOnly(t){let r=t.getAllStatuses(),n=new Map,s=(0,Gl.getWorkerIndex)(),i=s===void 0?"main":`worker-${s}`;for(let[o,c]of r)n.set(`${o}@${i}`,{...c,workerIndex:s});return n}cleanup(){this.awaitingResponses.clear(),this.responseCheckers.clear(),this.cleanupTimer&&(clearTimeout(this.cleanupTimer),this.cleanupTimer=null)}},Nd=class{static{a(this,"StatusAggregator")}static aggregate(t){let r=new Map,n=new Map;for(let[s,i]of t){let o=s.indexOf("@"),c=o!==-1?s.substring(0,o):s,l=n.get(c);l||(l=[],n.set(c,l)),l.push([s,i])}for(let[s,i]of n){let o=this.aggregateComponentGroup(s,i);r.set(s,o)}return r}static aggregateComponentGroup(t,r){let n={workers:{}},s=0,i,o,c=new Map,l=new Map;for(let[m,p]of r){let h=m.lastIndexOf("@"),E=h!==-1?m.substring(h+1):"",_=p.lastChecked instanceof Date?p.lastChecked.getTime():new Date(p.lastChecked).getTime();if(E==="main")n.main=_;else if(E&&E.startsWith("worker-")){let R=parseInt(E.substring(7));isNaN(R)||(n.workers[R]=_)}c.set(p.status,(c.get(p.status)||0)+1),p.status!==Le.HEALTHY&&p.message&&(!i||_>s)&&(s=_,i=p.message),p.error&&!o&&(o=p.error)}let u=this.determineOverallStatus(c);if(Array.from(c.keys()).length>1)for(let[m,p]of r)p.status!==u&&l.set(m,{workerIndex:p.workerIndex!==void 0?p.workerIndex:-1,status:p.status,message:p.message,error:p.error});let f={componentName:t,status:u,lastChecked:n,latestMessage:i,error:o};return l.size>0&&(f.abnormalities=l),f}static determineOverallStatus(t){let r=[Le.ERROR,Le.WARNING,Le.LOADING,Le.UNKNOWN,Le.HEALTHY];for(let n of r)if(t.has(n)&&t.get(n)>0)return n;return Le.UNKNOWN}},nae=parseInt(process.env.COMPONENT_STATUS_TIMEOUT||"5000"),SS=new Gp(nae)});var Ec,TS=ie(()=>{GN();bd();KN();gS();Ec=class e{static{a(this,"ComponentStatusRegistry")}statusMap=new Map;reset(){this.statusMap=new Map}setStatus(t,r,n,s){if(!t||typeof t!="string")throw new wd(String(t),"setStatus","Component name must be a non-empty string");if(!Object.values(Le).includes(r))throw new wd(t,"setStatus",`Invalid status level: ${r}. Must be one of: ${Object.values(Le).join(", ")}`);this.statusMap.set(t,new Ad(r,n,s))}getStatus(t){return this.statusMap.get(t)}getAllStatuses(){return this.statusMap}reportHealthy(t,r){this.setStatus(t,Le.HEALTHY,r)}reportError(t,r,n){this.setStatus(t,Le.ERROR,n,r)}reportWarning(t,r){this.setStatus(t,Le.WARNING,r)}initializeLoading(t,r){this.setStatus(t,Le.LOADING,r||"Component is loading")}markLoaded(t,r){this.setStatus(t,Le.HEALTHY,r||"Component loaded successfully")}markFailed(t,r,n){this.setStatus(t,Le.ERROR,n,r)}getComponentsByStatus(t){let r=[];for(let[n,s]of this.statusMap)s.status===t&&r.push({name:n,status:s});return r}getStatusSummary(){let t={[Le.HEALTHY]:0,[Le.ERROR]:0,[Le.WARNING]:0,[Le.LOADING]:0,[Le.UNKNOWN]:0};for(let r of this.statusMap.values())t[r.status]++;return t}static async getAggregatedFromAllThreads(t){let r=await SS.collect(t);return Nd.aggregate(r)}async getAggregatedStatusFor(t,r){r||(r=await e.getAggregatedFromAllThreads(this));let n=[],s=t+".",i=r.get(t);i&&n.push({key:t,...i});for(let[f,m]of r)f.startsWith(s)&&n.push({key:f,...m});if(n.length===0)return{status:Le.UNKNOWN,message:"The component has not been loaded yet (may need a restart)",lastChecked:{workers:{}}};let o=n.some(f=>f.status===Le.ERROR),c=n.some(f=>f.status===Le.LOADING),l=o?Le.ERROR:c?Le.LOADING:Le.HEALTHY,u="All components loaded successfully",d={};if(o||c){u=n.filter(m=>m.status===Le.ERROR||m.status===Le.LOADING).map(m=>`${m.key}: ${m.latestMessage||m.status}`).join("; ");for(let m of n)m.status!==Le.HEALTHY&&(d[m.key]={status:m.status,message:m.latestMessage})}return{status:l,message:u,...Object.keys(d).length>0&&{details:d},lastChecked:n[0]?.lastChecked||{workers:{}}}}}});var gr,yS=ie(()=>{TS();gr=new Ec});function Eq(e){let t=hq.get(e);return t||(t=new YN(e),hq.set(e,t)),t}function _q(){gr.reset()}var YN,hq,ao,gq,Sq=ie(()=>{yS();bd();YN=class{static{a(this,"ComponentStatusBuilder")}componentName;constructor(t){this.componentName=t}healthy(t){return gr.setStatus(this.componentName,Le.HEALTHY,t),this}warning(t){return gr.setStatus(this.componentName,Le.WARNING,t),this}error(t,r){return gr.setStatus(this.componentName,Le.ERROR,t,r),this}loading(t){return gr.setStatus(this.componentName,Le.LOADING,t||"Loading..."),this}unknown(t){return gr.setStatus(this.componentName,Le.UNKNOWN,t),this}get(){return gr.getStatus(this.componentName)}},hq=new Map;a(Eq,"statusForComponent");ao={loading(e,t){gr.initializeLoading(e,t)},loaded(e,t){gr.markLoaded(e,t)},failed(e,t,r){gr.markFailed(e,t,r)}};a(_q,"reset");gq=Le});var qp={};Re(qp,{AggregationError:()=>$N,COMPONENT_STATUS_LEVELS:()=>Le,ComponentStatus:()=>Ad,ComponentStatusError:()=>pc,ComponentStatusOperationError:()=>wd,ComponentStatusRegistry:()=>Ec,CrossThreadCollectionError:()=>VN,CrossThreadStatusCollector:()=>Gp,CrossThreadTimeoutError:()=>qN,ITCError:()=>Id,StatusAggregator:()=>Nd,componentStatusRegistry:()=>gr,crossThreadCollector:()=>SS,query:()=>sae});var sae,Tq=ie(()=>{yS();TS();GN();TS();KN();yS();gS();bd();sae={get(e){return gr.getStatus(e)},all(){return gr.getAllStatuses()},byStatus(e){return gr.getComponentsByStatus(e)},summary(){return gr.getStatusSummary()},async allThreads(){return Ec.getAggregatedFromAllThreads(gr)}}});var WN={};Re(WN,{STATUS:()=>gq,internal:()=>qp,lifecycle:()=>ao,reset:()=>_q,statusForComponent:()=>Eq});var $p=ie(()=>{Sq();Tq()});var Kp=x((LMe,bq)=>{"use strict";var Ss=ee(),Tn=($(),P(z)),iae=DB(),oae=(gs(),P(oo)),{validateEvent:jN}=us(),Vp=ms(),aae=require("process"),{resetDatabases:cae}=(Oe(),P(ht)),lae={[Tn.ITC_EVENT_TYPES.SCHEMA]:uae,[Tn.ITC_EVENT_TYPES.USER]:Rq,[Tn.ITC_EVENT_TYPES.COMPONENT_STATUS_REQUEST]:fae};async function uae(e){let t=jN(e);if(t){Ss.error(t);return}Ss.trace("ITC schemaHandler received schema event:",e),await iae(e.message),await dae(e.message)}a(uae,"schemaHandler");async function dae(e){try{Vp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),Vp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),Vp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=cae();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){Ss.error(t)}}a(dae,"syncSchemaMetadata");var yq=[];async function Rq(e){try{try{Vp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),Vp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){Ss.warn(r)}let t=jN(e);if(t){Ss.error(t);return}Ss.trace(`ITC userHandler ${Tn.HDB_ITC_CLIENT_PREFIX}${aae.pid} received user event:`,e),await oae.setUsersWithRolesCache();for(let r of yq)r()}catch(t){Ss.error(t)}}a(Rq,"userHandler");Rq.addListener=function(e){yq.push(e)};async function fae(e){try{let t=jN(e);if(t){Ss.error(t);return}Ss.trace("ITC componentStatusRequestHandler received request:",e);let{internal:r}=($p(),P(WN)),{getWorkerIndex:n}=it(),{sendItcEvent:s}=us(),i=r.componentStatusRegistry.getAllStatuses(),o=Array.from(i.entries()),c=n(),l=c===void 0,u=e.message.originator,d={type:Tn.ITC_EVENT_TYPES.COMPONENT_STATUS_RESPONSE,message:{requestId:e.message.requestId,statuses:o,workerIndex:c,isMainThread:l}};u!==void 0&&threads.sendToThread(u,d)?Ss.trace(`Sent component status response directly to thread ${u}`):(u===void 0?Ss.debug("No originator threadId, falling back to broadcast"):Ss.debug(`Failed to send direct response to thread ${u}, falling back to broadcast`),await s(d))}catch(t){Ss.error("Error handling component status request:",t)}}a(fae,"componentStatusRequestHandler");bq.exports=lae});var us=x((vMe,Iq)=>{"use strict";var zN=ue(),mae=($(),P(z)),{ITC_ERRORS:Yp}=En(),{threadId:pae,isMainThread:hae}=require("worker_threads"),{onMessageFromWorkers:Eae,broadcastWithAcknowledgement:_ae}=it();Iq.exports={sendItcEvent:gae,validateEvent:Aq,SchemaEventMsg:Sae,UserEventMsg:Tae};var RS;Eae(async(e,t)=>{RS=RS||Kp(),Aq(e),RS[e.type]&&await RS[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function gae(e){return!hae&&e.message&&(e.message.originator=pae),_ae(e)}a(gae,"sendItcEvent");function Aq(e){if(typeof e!="object")return Yp.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||zN.isEmpty(e.type))return Yp.MISSING_TYPE;if(!e.hasOwnProperty("message")||zN.isEmpty(e.message))return Yp.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||zN.isEmpty(e.message.originator))return Yp.MISSING_ORIGIN;if(mae.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return Yp.INVALID_EVENT(e.type)}a(Aq,"validateEvent");function Sae(e,t,r,n=void 0,s=void 0){this.originator=e,this.operation=t,this.schema=r,this.table=n,this.attribute=s}a(Sae,"SchemaEventMsg");function Tae(e){this.originator=e}a(Tae,"UserEventMsg")});var na=x((UMe,Oq)=>{"use strict";var wq=($(),P(z)),bS=ee(),Nq=pB(),Cd,{sendItcEvent:Cq}=us();function yae(e){try{bS.debug("signalSchemaChange called with message:",e),Cd=Cd||Kp();let t=new Nq(wq.ITC_EVENT_TYPES.SCHEMA,e);return Cd.schema(t),Cq(t)}catch(t){bS.error(t)}}a(yae,"signalSchemaChange");function Rae(e){try{bS.trace("signalUserChange called with message:",e),Cd=Cd||Kp();let t=new Nq(wq.ITC_EVENT_TYPES.USER,e);return Cd.user(t),Cq(t)}catch(t){bS.error(t)}}a(Rae,"signalUserChange");Oq.exports={signalSchemaChange:yae,signalUserChange:Rae}});function Wp(e,t,r,n){if(e.append)e.append(t,r,n);else if(e.set){let s=e.get(t);if(s)if(n)r=(typeof s=="string"?s:s.join(", "))+", "+r;else if(typeof s=="string")r=[s,r];else{s.push(r);return}return e.set(t,r)}else e[t]=(e[t]?e[t]+", ":"")+r}function Pq(e,t){(typeof e.set!="function"||typeof e.has!="function")&&(e=new $s(e));for(let[r,n]of t)if(!e.has(r))e.set(r,n);else if(r.toLowerCase()==="set-cookie"){let s=Array.isArray(n)?n:[n];if(e.append)for(let i of s)e.append(r,i);else{let i=e.get(r),o=Array.isArray(i)?[...i,...s]:[i,...s];e.set(r,o)}}return e}var $s,jp=ie(()=>{$s=class extends Map{static{a(this,"Headers")}constructor(t){if(t)if(t[Symbol.iterator])super(t);else{super();for(let r in t)this.set(r,t[r])}else super()}set(t,r){return typeof t!="string"&&(t=""+t),Array.isArray(r)?r=r.map(n=>typeof n=="string"?n:""+n):typeof r!="string"&&(r=""+r),super.set(t.toLowerCase(),[t,r])}get(t){return typeof t!="string"&&(t=""+t),super.get(t.toLowerCase())?.[1]}has(t){return typeof t!="string"&&(t=""+t),super.has(t.toLowerCase())}setIfNone(t,r){typeof t!="string"&&(t=""+t),typeof r!="string"&&(r=""+r);let n=t.toLowerCase();if(!super.has(n))return super.set(n,[t,r])}append(t,r,n){typeof t!="string"&&(t=""+t),typeof r!="string"&&(r=""+r);let s=t.toLowerCase(),i=super.get(s);if(i){let o=i[1];if(n)r=(typeof o=="string"?o:o.join(", "))+", "+r;else if(typeof o=="string")r=[o,r];else{o.push(r);return}}return super.set(s,[t,r])}[Symbol.iterator](){return super.values()[Symbol.iterator]()}};a(Wp,"appendHeader");a(Pq,"mergeHeaders")});function AS(e,t,r=Aae){let n;return function(...i){return n?n.length*QN>r?t(...i):new Promise((o,c)=>{n.push({args:i,fn(){try{let l=e(...i);o(l)}catch(l){c(l)}}})}):(n=[],s(performance.now()),e(...i))};function s(i){setImmediate(()=>{let o=performance.now();QN=(QN*4+o-i)/5;let c=n.shift();if(c){let{fn:l}=c;l(),s(o)}else n=null})}}var vq,bae,Aae,Lq,Iae,JN,Dq,QN,XN=ie(()=>{vq=b(pr()),bae=3e3,Aae=2e4,Lq=0,Iae=3e4,JN=3e3,Dq=performance.now()+JN,QN=0;a(AS,"throttle");setInterval(()=>{let e=performance.now();e-Dq-JN>bae&&Lq+Iae<e&&(vq.default.warn?.("JavaScript execution has taken too long and is not allowing proper event queue cycling, consider using 'await new Promise(setImmediate)' in code that will execute for a long duration"),Lq=e),Dq=e},JN).unref()});var Vq={};Re(Vq,{EVICTED:()=>Sl,INVALIDATED:()=>kn,coerceType:()=>wS,makeTable:()=>CS});function CS(e){let{primaryKey:t,indices:r,tableId:n,tableName:s,primaryStore:i,databasePath:o,databaseName:c,auditStore:l,schemaDefined:u,dbisDB:d,sealed:f,splitSegments:m,replicate:p}=e,{expirationMS:h,evictionMS:E,audit:_,trackDeletes:R}=e;E??=0;let{attributes:S}=e;S||(S=[]);let y=bI(i,n,l),I,w,L={},H=Promise.resolve(),Z,X,J;for(let W of S)(W.assignCreatedTime||W.name==="__createdtime__")&&(Z=W),(W.assignUpdatedTime||W.name==="__updatedtime__")&&(X=W),W.expiresAt&&(J=W),W.isPrimaryKey&&(L=W);let F,de=[],oe=[],ae=1,he=2,Te={},De={},Je=864e5,$e=0,ns,Pt,Lt,Ya=!1,Qc,qt,vs,Wa=Od.get(U.REPLICATION_DATABASES);if(Array.isArray(Wa)){for(let W of Wa)if(W.name===c&&W.replicateTo>=0){vs=W.replicateTo;break}}let f_=i.getRange({start:!1,end:!1}).constructor,cm=10,m_=6;_&&xu(),Gm(i.env.path,W=>{if(w)return Nr(W)});class lm extends Pl{static{a(this,"Updatable")}getUpdatedTime(){return rc.get(this.getRecord())?.version}getExpiresAt(){return rc.get(this.getRecord())?.expiresAt}addTo(g,T){if(typeof T=="number"||typeof T=="bigint")this.set(g,new Ap(T));else throw new Error("Can not add or subtract a non-numeric value")}subtractFrom(g,T){return this.addTo(g,-T)}}class Be extends $t{#e;#t;#r;#n;#s;#i;static name=s;static primaryStore=i;static auditStore=l;static primaryKey=t;static tableName=s;static tableId=n;static indices=r;static audit=_;static databasePath=o;static databaseName=c;static attributes=S;static replicate=p;static sealed=f;static splitSegments=m??!0;static createdTimeProperty=Z;static updatedTimeProperty=X;static propertyResolvers;static userResolvers={};static sources=[];static getResidencyById;static get expirationMS(){return h}static dbisDB=d;static schemaDefined=u;static sourcedFrom(g,T){if(T&&(this.sourceOptions=T,(T.expiration||T.eviction||T.scanInterval)&&this.setTTLExpiration(T)),T?.intermediateSource)g.intermediateSource=!0,this.sources.unshift(g);else{if(this.sources.some(v=>!v.intermediateSource)){if(this.sources.some(v=>v.name===g.name))return;throw new Error("Can not have multiple canonical (non-intermediate) sources")}this.sources.push(g)}w=w||g.get&&(!g.get.reliesOnPrototype||g.prototype.get),I=I||g.load;let A=a(v=>{let k=this.sources;if(k=k.filter(K=>K.intermediateSource&&K[v]&&(!K[v].reliesOnPrototype||K.prototype[v])),k.length>0)if(k.length===1){let K=k[0];return(M,q,O)=>{if(M?.source!==K)return K[v](q,O,M)}}else return(K,M,q)=>{let O=[];for(let G of k){if(K?.source===G)break;O.push(G[v](M,q,K))}return Promise.all(O)}},"getApplyToIntermediateSource"),N=this.sources[this.sources.length-1];N.intermediateSource&&(N={});let C=a(v=>{if(N[v]&&(!N[v].reliesOnPrototype||N.prototype[v]))return(k,K,M)=>{if(!k?.source)return N[v](K,M,k)}},"getApplyToCanonicalSource");Te={put:C("put"),patch:C("patch"),delete:C("delete"),publish:C("publish")},De={put:A("put"),patch:A("patch"),delete:A("delete"),publish:A("publish"),invalidate:A("invalidate")};let B=N.shouldRevalidateEvents;return(async()=>{let v=!1,k,K=a(async(M,q)=>{let O=M.value,G=M.table?xe[c][M.table]:Be;if(c===gm&&(M.table===Fu.ROLE_TABLE_NAME||M.table===Fu.USER_TABLE_NAME)&&(v=!0),M.id===void 0&&(M.id=O[G.primaryKey],M.id===void 0))throw new Error("Replication message without an id "+JSON.stringify(M));M.source=g;let V={residencyId:el(M.residencyList),isNotification:!0,ensureLoaded:!1,nodeId:M.nodeId,async:!0},D=M.id,me=await G.getResource(D,q,V);switch(M.finished&&await M.finished,M.type){case"put":return B?me._writeInvalidate(D,O,V):me._writeUpdate(D,O,!0,V);case"patch":return B?me._writeInvalidate(D,O,V):me._writeUpdate(D,O,!1,V);case"delete":return me._writeDelete(D,V);case"publish":case"message":return me._writePublish(D,O,V);case"invalidate":return me._writeInvalidate(D,O,V);case"relocate":return me._writeRelocate(D,V);default:Fe.default.error?.("Unknown operation",M.type,M.id)}},"writeUpdate");try{let M=g.subscribe;M&&R==null&&(R=!0);let q={crossThreads:!1,inTransactionUpdates:!0,supportsTransactions:!0,omitCurrent:!0},O=g.subscribeOnThisThread?g.subscribeOnThisThread((0,ql.getWorkerIndex)(),q):(0,ql.getWorkerIndex)()===0,G=M&&O&&await g.subscribe?.(q);if(G){let V;for await(let D of G)try{if(!(D.type==="transaction"?D.writes[0]:D)){Fe.default.error?.("Bad subscription event",D);continue}if(D.source=g,D.type==="end_txn"){V?.resolve();let Ee;if(D.localTime&&k!==D.localTime&&D.remoteNodeIds?.length>0&&(Ee=a(()=>{let j=[Symbol.for("seq"),D.remoteNodeIds[0]],Q=d.get(j),le=Q?.nodes;le||(le=[]);for(let Pe of D.remoteNodeIds.slice(1)){let Xe=le.find(mt=>mt.id===Pe);le=le.filter(mt=>mt.id!==Pe||mt===Xe),Xe||(Xe={id:Pe,seqId:0},le.push(Xe)),Xe.seqId=Math.max(Q?.seqId??1,D.localTime),Pe===V?.nodeId&&(Xe.lastTxnTime=D.timestamp)}let pe=Math.max(Q?.seqId??1,D.localTime);Fe.default.trace?.("Received txn",c,pe,new Date(pe),D.localTime,new Date(D.localTime),D.remoteNodeIds),d.put(j,{seqId:pe,nodes:le})},"updateRecordedSequenceId"),k=D.localTime),D.onCommit){let j=V?V.committed.then(D.onCommit):D.onCommit();Ee&&(j?.then?j.then(Ee):Ee())}else Ee&&Ee();continue}if(V)if(D.beginTxn)V.resolve();else{V.writePromises.push(K(D,V));continue}!D.timestamp&&D.version&&(D.timestamp=D.version);let ne=It(D,()=>{if(D.type==="transaction"){let Ee=[];for(let j of D.writes)try{Ee.push(K(j,D))}catch(Q){throw Q.message+=" writing "+JSON.stringify(j)+" of event "+JSON.stringify(D),Q}return Promise.all(Ee)}else if(D.type==="define_schema"){let Ee=this.attributes.slice(0),j=!1;for(let Q of D.attributes)Ee.find(le=>le.name===Q.name)||(Ee.push(Q),j=!0);j&&(je({table:s,database:c,attributes:Ee,origin:"cluster"}),Qp.signalSchemaChange(new Jp.SchemaEventMsg(process.pid,Y.CREATE_TABLE,c,s)))}else return D.beginTxn?(V=D,V.writePromises=[K(D,D)],new Promise(Ee=>{V.resolve=()=>Ee(Promise.all(V.writePromises))})):K(D,D)});V&&(V.committed=ne),v&&ne&&!ne?.waitingForUserChange&&(ne.then(()=>Qp.signalUserChange(new Jp.UserEventMsg(process.pid))),ne.waitingForUserChange=!0),D.onCommit&&(ne?ne.then(D.onCommit):D.onCommit())}catch(me){Fe.default.error?.("error in subscription handler",me)}}}catch(M){Fe.default.error?.(M)}})(),this}static get isCaching(){return w}static get shouldRevalidateEvents(){return this.prototype.get!==Be.prototype.get}static getResource(g,T,A){let N=super.getResource(g,T,A);if(this.loadAsInstance===!1&&(T._freezeRecords=!0),g!=null&&this.loadAsInstance!==!1){Fo(g);try{if(N.getRecord?.())return N;if(typeof g=="object"&&g&&!Array.isArray(g))throw new Error(`Invalid id ${JSON.stringify(g)}`);let C=!A?.async||i.cache?.get?.(g),B=Rt(T),v=B.getReadTxn();if(v?.isDone)throw new Error("You can not read from a transaction that has already been committed/aborted");return Xc(g,T,{transaction:v,ensureLoaded:A?.ensureLoaded,type:A?.type},C,k=>{if(k?Be._updateResource(N,k):N.#e=null,T.onlyIfCached){if(!N.doesExist())throw new ft.ServerError("Entry is not cached",504)}else if(A?.ensureLoaded){let K=Ho(g,k,T,N);if(K)return B?.disregardReadTxn(),N.#i=!0,T.loadedFromSource=!0,Vs(K,M=>(Be._updateResource(N,M),N))}return N})}catch(C){throw C.message.includes("Unable to serialize object")&&(C.message+=": "+JSON.stringify(g)),C}}return N}static _updateResource(g,T){g.#n=T,g.#e=T?.value??null,g.#r=T?.version}ensureLoaded(){let g=Ho(this.getId(),this.#n,this.getContext());if(g)return this.#i=!0,this.getContext().loadedFromSource=!0,Vs(g,T=>{this.#n=T,this.#e=T.value,this.#r=T.version})}static getNewId(){let g=L?.type;if(g==="String"||g==="ID")return super.getNewId();if(!qt){let C=i.getEntry(Symbol.for("id_allocation")),B=C?.value,v;if(B&&B.nodeName===server.hostname&&(!Bae(i)||B.pid===process.pid)){let k=B.start,K=B.end;v=k;for(let M of i.getKeys({start:K,end:k,limit:1,reverse:!0}))v=M}else B=N(C?.version??null),v=B.start;qt=new BigInt64Array([BigInt(v)+1n]),qt=new BigInt64Array(i.getUserSharedBuffer("id",qt.buffer)),qt.maxSafeId=B.end}let T=Number(Atomics.add(qt,0,1n)),A=g==="Int"?512:1048576;if(T+A>=qt.maxSafeId){let C=a(B=>{qt.maxSafeId=T+(g==="Int"?1023:4194303);let v=(g==="Int"?Math.pow(2,31):Math.pow(2,49))-1,k=B?void 0:i.useReadTransaction(),K=Number(qt[0]);for(let O of i.getKeys({start:K+1,end:v,limit:1,transaction:k}))v=O;k?.done();let{value:M,version:q}=i.getEntry(Symbol.for("id_allocation"));if(qt.maxSafeId<v){if(M.end>qt.maxSafeId-100)return;Fe.default.info?.("New id allocation",T,qt.maxSafeId,q),i.put(Symbol.for("id_allocation"),{start:M.start,end:qt.maxSafeId,nodeName:server.hostname,pid:process.pid},Date.now(),q)}else{Fe.default.warn?.(`Id conflict detected, starting new id allocation range, attempting to allocate to ${qt.maxSafeId}, but id of ${v} detected`);let O=N(q);O.alreadyUpdated||Atomics.store(qt,0,BigInt(O.start+1)),qt.maxSafeId=O.end}},"updateEnd");T+A===qt.maxSafeId?setImmediate(C):T+100>=qt.maxSafeId&&(Fe.default.warn?.(`Synchronous id allocation required on table ${s}${g=="Int"?", it is highly recommended that you use Long or Float as the type for auto-incremented primary keys":""}`),i.transactionSync(()=>C(!0)))}return T;function N(C){let B=(g==="Int"?Math.pow(2,31):Math.pow(2,49))-1,v=B/4,k,K,M=!1,q,O;do{q=Math.floor(Math.random()*B),O={start:q,end:q+(g==="Int"?1024:4194304),nodeName:server.hostname,pid:process.pid},k=0;for(let G of i.getKeys({start:q,limit:1,reverse:!0}))k=G;K=B;for(let G of i.getKeys({start:q+1,end:B,limit:1}))K=G;v*=.875,v<1e3&&!M&&(M=!0,Fe.default.error?.(`Id allocation in table ${s} is very dense, limited safe range of numbers to allocate ids in${g==="Int"?", it is highly recommended that you use Long or Float as the type for auto-incremented primary keys":""}`,q,k,K,v))}while(!(v<K-q&&(v<q-k||k===0)));return i.transactionSync(()=>{let G=i.getEntry(Symbol.for("id_allocation"));return(G?.version??null)==C?(Fe.default.info?.("Allocated new id range",O),i.put(Symbol.for("id_allocation"),O,Date.now()),O):(Fe.default.debug?.("Looks like ids were already allocated"),{alreadyUpdated:!0,...G.value})})}}static setTTLExpiration(g){if(typeof g=="number")h=g*1e3,E||(E=0);else if(g&&typeof g=="object")h=g.expiration*1e3,E=(g.eviction||0)*1e3,Je=g.scanInterval*1e3;else throw new Error("Invalid expiration value type");if(h<0)throw new Error("Expiration can not be negative");Je=Je||(h+E)/4,Nr()}static getResidencyRecord(g){return d.get([Symbol.for("residency_by_id"),g])}static setResidency(g){Be.getResidency=g&&((T,A)=>{try{return g(T,A)}catch(N){throw N.message+=` in residency function for table ${s}`,N}})}static setResidencyById(g){Be.getResidencyById=g&&(T=>{try{return g(T)}catch(A){throw A.message+=` in residency function for table ${s}`,A}})}static getResidency(g,T){if(Be.getResidencyById)return Be.getResidencyById(g[t]);let A=vs;if(T.replicateTo!=null){if(Array.isArray(T.replicateTo))return T.replicateTo.includes(server.hostname)?T.replicateTo:[server.hostname,...T.replicateTo];T.replicateTo>=0&&(A=T.replicateTo)}if(A>=0&&server.nodes){let N=[server.hostname];if(T.previousResidency)N.push(...T.previousResidency.slice(0,A));else{let C=server.nodes.map(k=>k.name),B=Math.floor(C.length*Math.random());N.push(...C.slice(B,B+A));let v=B+A-C.length;v>0&&N.push(...C.slice(0,v))}return N}}static enableAuditing(){_||(_=!0,xu(),Be.audit=!0)}static coerceId(g){return g===""?null:wS(g,L)}static async dropTable(){delete xe[c][s];for(let g of i.getRange({versions:!0,snapshot:!1,lazy:!0}))g.metadataFlags&Zr&&g.value&&Za(g.value);if(c===o){for(let g of S)d.remove(Be.tableName+"/"+g.name),r[g.name]?.drop();d.remove(Be.tableName+"/"),i.drop(),await d.committed}else console.log("legacy dropTable"),await i.close(),eC.default.unlinkSync(i.env.path);Qp.signalSchemaChange(new Jp.SchemaEventMsg(process.pid,Y.DROP_TABLE,c,s))}get(g){let T=this.constructor;if(typeof g=="string"&&T.loadAsInstance!==!1)return this.getProperty(g);if(Uu(g))return this.search(g);if(g&&g.id===void 0&&!g.toString()){let A={records:"./",name:s,database:c,auditSize:l?.getStats().entryCount,attributes:S,recordCount:void 0,estimatedRecordRange:void 0};return this.getContext()?.includeExpensiveRecordCountEstimates?Be.getRecordCount().then(N=>(A.recordCount=N.recordCount,A.estimatedRecordRange=N.estimatedRange,A)):A}if(g!==void 0&&T.loadAsInstance===!1){let A=this.getContext(),N=Rt(A),C=N.getReadTxn();if(C?.isDone)throw new Error("You can not read from a transaction that has already been committed/aborted");let B=ci(g);Fo(B);let v=!0;return g.checkPermission&&(v=this.allowRead(A.user,g,A)),Vs(Vs(v,k=>{if(!k)throw new ft.AccessViolation(A.user);let K=!0;return Xc(B,A,{transaction:C,ensureLoaded:K},!1,M=>{if(A.onlyIfCached){if(!M?.value)throw new ft.ServerError("Entry is not cached",504)}else if(K){let q=Ho(B,M,A);if(q)return N?.disregardReadTxn(),A.loadedFromSource=!0,q.then(O=>O?.value)}return M?.value})}),k=>{let K=g?.select;return K&&k!=null?ip(K,this.constructor)(k):k})}if(g?.property)return this.getProperty(g.property);if(this.doesExist()||g?.ensureLoaded===!1||this.getContext()?.returnNonexistent)return this}allowRead(g,T,A){let N=ko(g,T);if(N?.read){if(N.isSuperUser)return!0;let C=N.attribute_permissions,B=T?.select;if(C?.length>0||Ya&&B){if(T||(T={}),B){let v=Array.isArray(B)?B:[B],k=C?.length>0&&ZN(C,"read");T.select=v.map(K=>{let M=K.name||K;if(!k||k[M]){let q=Lt[M]?.definition?.tableClass;if(q){if(K.name||(K={name:K}),!K.checkPermission&&T.checkPermission&&(K.checkPermission=T.checkPermission),!q.prototype.allowRead.call(null,g,K,A))return!1;if(!K.select)return K.name}return K}}).filter(Boolean)}else T.select=C.filter(v=>v.read&&!Lt[v.attribute_name]).map(v=>v.attribute_name);return!0}else return!0}}allowUpdate(g,T,A){let N=ko(g);if(N?.update){let C=N.attribute_permissions;if(C?.length>0){let B=ZN(C,"update");for(let v in T)if(!B[v])return!1;for(let v of C){let k=v.attribute_name;!v.update&&!(k in T)&&(T[k]=this.getProperty(k))}}return ja(this.getContext())}}allowCreate(g,T,A){if(this.isCollection){let N=ko(g);if(N?.insert){let C=N.attribute_permissions;if(C?.length>0){let B=ZN(C,"insert");for(let v in T)if(!B[v])return!1;return ja(this.getContext())}else return ja(this.getContext())}}else return this.allowUpdate(g,T,A)}allowDelete(g,T,A){return!!ko(g,T)?.delete&&ja(A)}update(g,T){let A,N=typeof T=="boolean"||T===void 0&&(g==null||typeof g=="object"&&!(g instanceof URLSearchParams)),C=!1;N?(C=T,T=g,A=this.getId()):A=ci(g);let B=this.getContext();if(!Rt(B))throw new Error("Can not update a table resource outside of a transaction");if(T===!1)return this;if(typeof T=="object"&&T)if(C)Object.isFrozen(T)&&(T={...T}),this.#e={},this.#t=T;else if(N){let k=this.#t;k&&(T=Object.assign(k,T)),this.#t=T}else{let k=!0;if(g==null)throw new TypeError("Can not put a record without a target");return g.checkPermission&&(k=this.allowUpdate(B.user,T,B)),Vs(k,K=>{if(!K)throw new ft.AccessViolation(B.user);return Vs(i.get(ci(g)),M=>{let q=new lm(M);return q._setChanges(T),this._writeUpdate(A,q.getChanges(),!1),q})})}return this._writeUpdate(A,this.#t,C),this}addTo(g,T){if(typeof T=="number"||typeof T=="bigint")this.#s===Uq?this.set(g,(+this.getProperty(g)||0)+T):(this.#s||this.update(),this.set(g,new Ap(T)));else throw new Error("Can not add a non-numeric value")}subtractFrom(g,T){if(typeof T=="number")return this.addTo(g,-T);throw new Error("Can not subtract a non-numeric value")}getMetadata(){return this.#n}getRecord(){return this.#e}getChanges(){return this.#t}_setChanges(g){this.#t=g}setRecord(g){this.#e=g}invalidate(g){let T=!0,A=this.getContext();return g?.checkPermission&&(T=this.allowDelete(A.user,g,A)),Vs(T,N=>{if(!N)throw new ft.AccessViolation(A.user);this._writeInvalidate(g?ci(g):this.getId())})}_writeInvalidate(g,T,A){let N=this.getContext();Fo(g),Rt(this.getContext()).addWrite({key:g,store:i,invalidated:!0,entry:this.#n,before:Te.invalidate?.bind(this,N,g),beforeIntermediate:tl(T,De.invalidate?.bind(this,N,g)),commit:a((B,v)=>{if(!(Go(B,v,A?.nodeId)<=0)){T??=null;for(let k in r)T||(T={}),T[k]===void 0&&(T[k]=this.getProperty(k));Fe.default.trace?.(`Invalidating entry in ${s} id: ${g}, timestamp: ${new Date(B).toISOString()}`),y(g,T,v,B,kn,_,{user:N?.user,residencyId:A?.residencyId,nodeId:A?.nodeId,tableToTrack:s},"invalidate")}},"commit")})}_writeRelocate(g,T){let A=this.getContext();Fo(g),Rt(this.getContext()).addWrite({key:g,store:i,invalidated:!0,entry:this.#n,before:Te.relocate?.bind(this,A,g),beforeIntermediate:De.relocate?.bind(this,A,g),commit:a((C,B)=>{if(Go(C,B,T?.nodeId)<=0)return;let v=Be.getResidencyRecord(T.residencyId),k=0,K=null,M=B?.value;if(v&&!v.includes(server.hostname)){for(let q in r)K||(K={}),K[q]=M[q];k=kn}else K=M;Fe.default.trace?.(`Relocating entry id: ${g}, timestamp: ${new Date(C).toISOString()}`),y(g,K,B,C,k,_,{user:A.user,residencyId:T.residencyId,nodeId:T.nodeId,expiresAt:T.expiresAt},"relocate",!1,null)},"commit")})}static _recordRelocate(g,T){if(this.getResidencyById)return!1;let A={previousResidency:this.getResidencyRecord(g.residencyId),isRelocation:!0},N=Zc(this.getResidency(T.value,A)),C;if(N){if(!N.includes(server.hostname))return!1;C=el(N)}let B=0;return Fe.default.debug?.("Performing a relocate of an entry",g.key,T.value,N),y(g.key,T.value,g,g.version,B,!0,{residencyId:C,expiresAt:T.expiresAt},"relocate",!1,null),!0}static evict(g,T,A){let N;if(!((w||_)&&(!T||(N=i.getEntry(g),!N||!T)||N.version!==A))){if(w){if(i.hasLock(g,N.version))return;let C;for(let B in r)C||(C={}),C[B]=T[B];if(C)return y(g,C,N,A,Sl,null,null,null,!0)}return i.ifVersion(g,A,()=>{Jc(g,T,null)}),gl(i,N??i.getEntry(g),A)}}lock(){throw new Error("Not yet implemented")}static operation(g,T){return g.table||=s,g.schema||=c,global.operation(g,T)}put(g,T){if(T===void 0||T instanceof URLSearchParams)this.update(g,!0);else{let A=!0;if(g==null)throw new TypeError("Can not put a record without a target");let N=this.getContext();return g.checkPermission&&(A=this.allowUpdate(N.user,T,N)),Vs(A,C=>{if(!C)throw new ft.AccessViolation(N.user);if(Array.isArray(T))for(let B of T){let v=B[t];this._writeUpdate(v,B,!0)}else{let B=ci(g);this._writeUpdate(B,T,!0)}})}}create(g,T){let A=!0,N=this.getContext();if(!T&&!(g instanceof URLSearchParams)&&(T=g,g=void 0),!T||typeof T!="object"||Array.isArray(T))throw new TypeError("Can not create a record without an object");return g?.checkPermission&&(A=this.allowCreate(N.user,T,N)),Vs(A,C=>{if(!C)throw new ft.AccessViolation(N.user);let B=ci(g)??T[t];if(B===void 0)B=this.constructor.getNewId(),T[t]=B;else if(i.get(B))throw new ft.ClientError("Record already exists",409);return this._writeUpdate(B,T,!0),T})}patch(g,T){if(T===void 0||T instanceof URLSearchParams)this.update(g,!1);else{let A=this.update(g,T);if(A?.then)return A.then(()=>{})}}_writeUpdate(g,T,A,N){let C=this.getContext(),B=Rt(C);Fo(g);let v=this.#n??i.getEntry(g);this.#s=A?Uq:vae;let k=a(M=>A?M.put?()=>M.put(C,g,T):null:M.patch?()=>M.patch(C,g,T):M.put?()=>M.put(C,g,Ll(this)):null,"writeToSources"),K={key:g,store:i,entry:v,nodeName:C?.nodeName,validate:a(M=>{T||(T=this.#t),A||T&&Wg(this.#t===T?this:T)?C?.source||(B.checkOverloaded(),this.validate(T,!A),X&&(T[X.name]=X.type==="Date"?new Date(M):X.type==="String"?new Date(M).toISOString():M),A&&(t&&T[t]!==g&&(T[t]=g),Z&&(v?.value?T[Z.name]=v?.value[Z.name]:T[Z.name]=Z.type==="Date"?new Date(M):Z.type==="String"?new Date(M).toISOString():M),T=Ll(T))):B.removeWrite(K)},"validate"),before:k(Te),beforeIntermediate:tl(T,k(De)),commit:a((M,q,O)=>{if(O){if(C&&q?.version>(C.lastModified||0)&&(C.lastModified=q.version),this.#n=q,q?.value&&q.value.getRecord)throw new Error("Can not assign a record to a record, check for circular references");A||(this.#e=q?.value??null)}this.#t=void 0,this.#r=M;let G=q?.value,V;this.#s=0;let D=!1,me=Go(M,q,N?.nodeId),ne,Ee=A?"put":"patch",j;N?.residencyId!=null&&(j=N.residencyId);let Q=C?.expiresAt??(h?h+Date.now():-1);if(me<=0){if(_){let Pe=q.localTime,Xe=q.version;Fe.default.trace?.("Applying CRDT update to record with id: ",g,"txn time",new Date(M),"applying later update from:",new Date(Xe),"local recorded time",new Date(Pe));let mt=[];for(;Pe>M||Xe>=M&&Pe>0;){let ye=l.get(Pe);if(!ye)break;let Se=wt(ye);if(Xe=Se.version,Xe>=M){if(Xe===M){if(me=Go(M,{version:Xe,localTime:Pe},N?.nodeId),me===0)return pe(!1);if(me>0){Pe=Se.previousLocalTime;continue}}if(Se.type==="patch")mt.push(Se),ne=T;else if(Se.type==="put"||Se.type==="delete")return pe(!1)}Pe=Se.previousLocalTime}Pe||Fe.default.debug?.("No further audit history, applying incremental updates based on available history",g,"existing version preserved",q),mt.sort((ye,Se)=>ye.version-Se.version);for(let ye of mt){let Se=ye.getValue(i);if(Fe.default.debug?.("Rebuilding update with future patch:",new Date(ye.version),Se,ye),V=k_(V??T,Se,A),!V)return pe(!1)}}else{if(A)return pe(!1);V=k_(V??T,G,A),Fe.default.debug?.("Rebuilding update without audit:",V)}Fe.default.trace?.("Rebuilt record to save:",V," is full update:",A)}let le;if(A&&!V?le=T:this.constructor.loadAsInstance===!1?le=Ll(G,V??T):(this.#e=G,le=Ll(this,V??T)),this.#e=le,le&&le.getRecord)throw new Error("Can not assign a record to a record, check for circular references");if(j==null){v?.residencyId&&(C.previousResidency=Be.getResidencyRecord(v.residencyId));let Pe=Zc(Be.getResidency(le,C));if(Pe&&!Pe.includes(server.hostname))if(ne??=le,D=!0,Be.getResidencyById)le=void 0;else{le=null;for(let Xe in r)le||(le={}),le[Xe]=ne[Xe]}j=el(Pe)}A||(ne=T),Fe.default.trace?.(`Saving record with id: ${g}, timestamp: ${new Date(M).toISOString()}${Q?", expires at: "+new Date(Q).toISOString():""}${q?", replaces entry from: "+new Date(q.version).toISOString():", new entry"}`,(()=>{try{return JSON.stringify(le).slice(0,100)}catch{return""}})()),Jc(g,G,le),pe(!0),C.expiresAt&&Nr();function pe(Pe){y(g,Pe?le:void 0,Pe?q:{...q,value:void 0},M,D?kn:0,_,{omitLocalRecord:D,user:C?.user,residencyId:j,expiresAt:Q,nodeId:N?.nodeId,originatingOperation:C?.originatingOperation,tableToTrack:c==="system"?null:s},Ee,!1,Pe?ne:ne??T)}a(pe,"writeCommit")},"commit")};B.addWrite(K)}async delete(g){if(Uu(g)){g.select=["$id"];for await(let T of this.search(g))this._writeDelete(T.$id);return!0}if(g){let T=!0,A=this.getContext();return g.checkPermission&&(T=this.allowDelete(A.user,g,A)),Vs(T,N=>{if(!N)throw new ft.AccessViolation(A.user);let C=ci(g);return this._writeDelete(C),!0})}return this._writeDelete(this.getId()),!!this.#e}_writeDelete(g,T){let A=Rt(this.getContext());Fo(g);let N=this.getContext();return A.addWrite({key:g,store:i,entry:this.#n,nodeName:N?.nodeName,before:Te.delete?.bind(this,N,g),beforeIntermediate:De.delete?.bind(this,N,g),commit:a((C,B,v)=>{let k=B?.value;v&&(N&&B?.version>(N.lastModified||0)&&(N.lastModified=B.version),Be._updateResource(this,B)),!(Go(C,B,T?.nodeId)<=0)&&(Jc(g,k),Fe.default.trace?.(`Deleting record with id: ${g}, txn timestamp: ${new Date(C).toISOString()}`),_||R?(y(g,null,B,C,0,_,{user:N?.user,nodeId:T?.nodeId,tableToTrack:s},"delete"),_||Nr()):gl(i,B))},"commit")}),!0}search(g){let T=this.getContext(),A=Rt(T);if(!g)throw new Error("No query provided");if(g.parseError)throw g.parseError;if(g.checkPermission&&!this.allowRead(T.user,g,T))throw new ft.AccessViolation(T.user);T&&(T.lastModified=Oae);let N=g.conditions;N?N.length===void 0&&(N=N[Symbol.iterator]?Array.from(N):[N]):N=Array.isArray(g)?g:g[Symbol.iterator]?Array.from(g):[];let C=g.id??this.getId();C&&(N=[{attribute:null,comparator:Array.isArray(C)?"prefix":"starts_with",value:C}].concat(N));let B,v={};function k(Q,le){switch(le){case"and":case void 0:if(Q.length<1)throw new Error('An "and" operator requires at least one condition');break;case"or":if(Q.length<2)throw new Error('An "or" operator requires at least two conditions');break;default:throw new Error("Invalid operator "+le)}for(let pe of Q){if(pe.conditions){pe.conditions=k(pe.conditions,pe.operator);continue}let Pe=pe[0]??pe.attribute,Xe=Pe==null?L:ji(S,Pe);if(Xe)(Xe.type||II[pe.comparator])&&(pe[1]===void 0?pe.value=M(pe.value,Xe):pe[1]=M(pe[1],Xe));else if(Pe!=null&&!g.allowConditionsOnDynamicAttributes)throw(0,ft.handleHDBError)(new Error,`${Pe} is not a defined attribute`,404);if(pe.chainedConditions)if(pe.chainedConditions.length===1&&(!pe.operator||pe.operator=="and")){let mt=pe.chainedConditions[0],ye,Se;if(mt.comparator==="gt"||mt.comparator==="greater_than"||mt.comparator==="ge"||mt.comparator==="greater_than_equal"?(ye=pe,Se=mt):(ye=mt,Se=pe),ye.comparator!=="lt"&&ye.comparator!=="less_than"&&ye.comparator!=="le"&&ye.comparator!=="less_than_equal")throw new Error("Invalid chained condition, only less than and greater than conditions can be chained together");let bt=Se.comparator==="ge"||Se.comparator==="greater_than_equal",_t=ye.comparator==="le"||ye.comparator==="less_than_equal";pe.comparator=(bt?"ge":"gt")+(_t?"le":"lt"),pe.value=[Se.value,ye.value]}else throw new Error("Multiple chained conditions are not currently supported")}return Q}a(k,"prepareConditions");function K(Q,le){if(g.enforceExecutionOrder)return Q;for(let pe of Q)pe.conditions&&(pe.conditions=K(pe.conditions,pe.operator));return Q.length>1&&le!=="or"?wae(Q,Rg(Be)):Q}a(K,"orderConditions");function M(Q,le){return Array.isArray(Q)?Q.map(pe=>wS(pe,le)):wS(Q,le)}a(M,"coerceTypedValues");let q=g.operator;(N.length>0||q)&&(N=k(N,q));let O=typeof g.sort=="object"&&g.sort,G;if(O&&q!=="or"){let Q=O.attribute;if(Q==null)throw new ft.ClientError("Sort requires an attribute");if(B=N.find(le=>nd(le.attribute)===nd(Q)),!B){let le=ji(S,Q);if(!le)throw(0,ft.handleHDBError)(new Error,`${Array.isArray(Q)?Q.join("."):Q} is not a defined attribute`,404);if(le.indexed)B={...O,comparator:"sort"},N.push(B);else if(N.length===0&&!g.allowFullScan)throw(0,ft.handleHDBError)(new Error,`${Array.isArray(Q)?Q.join("."):Q} is not indexed and not combined with any other conditions`,404)}B&&(B.descending=!!O.descending)}N=K(N,q),O&&(B&&N[0]===B?O.next&&(G={dbOrderedAttribute:O.attribute,attribute:O.next.attribute,descending:O.next.descending,next:O.next.next}):(B&&N.splice(N.indexOf(B),1),G=O));let V=g.select;if(N.length===0&&(N=[{attribute:t,comparator:"greater_than",value:!0}]),g.explain)return{conditions:N,operator:q,postOrdering:G,selectApplied:!!V};let D=A.useReadTxn(),me=wI(N,q,Be,D,g,T,(Q,le)=>um(Q,V,T,D,le),v),ne=g.ensureLoaded!==!1,Ee=Be.transformEntryForSelect(V,T,D,v,ne,!0),j=Be.transformToOrderedSelect(me,V,G,T,D,Ee);return(g.offset||g.limit!==void 0)&&(j=j.slice(g.offset,g.limit!==void 0?(g.offset||0)+g.limit:void 0)),j.onDone=()=>{j.onDone=null,A.doneReadTxn()},j.selectApplied=!0,j.getColumns=()=>{if(V){let Q=[];for(let le of V)le==="*"?Q.push(...S.map(pe=>pe.name)):Q.push(le.name||le);return Q}return S.filter(Q=>!Q.computed&&!Q.relationship).map(Q=>Q.name)},j}static transformToOrderedSelect(g,T,A,N,C,B){let v=new f_;if(A){g=um(g,T,N,C,null);let k;v.iterate=function(M){let q,O=M?.async&&g[Symbol.asyncIterator]?g[Symbol.asyncIterator]():g[Symbol.iterator](),G,V=A.dbOrderedAttribute,D,me,ne=!0;function Ee(Q){let le=Q.next&&Ee(Q.next),pe=Q.descending;return N.sort=Q,(Pe,Xe)=>{let mt=Mn(Pe,Q.attribute,N),ye=Mn(Xe,Q.attribute,N),Se=pe?(0,$l.compareKeys)(ye,mt):(0,$l.compareKeys)(mt,ye);return Se===0?le?.(Pe,Xe)||0:Se}}a(Ee,"createComparator");let j=Ee(A);return{async next(){let Q;if(q)if(Q=q.next(),Q.done){if(G)return v.onDone&&v.onDone(),Q}else return{value:await B.call(this,Q.value)};k=[],D&&k.push(D);do if(Q=await O.next(),Q.done){if(G=!0,k.length)break;return v.onDone&&v.onDone(),Q}else{let le=Q.value;if(le?.then&&(le=await le),V){let pe=Mn(le,V,N);if(ne)ne=!1,me=pe;else if(pe!==me){me=pe,D=le;break}}k.push(le)}while(!0);return A.isGrouped,k.sort(j),q=k[Symbol.iterator](),Q=q.next(),Q.done?(v.onDone&&v.onDone(),Q):{value:await B.call(this,Q.value)}},return(){return v.onDone&&v.onDone(),O.return()},throw(){return v.onDone&&v.onDone(),O.throw()}}};let K=a(M=>{if(typeof T=="object"&&Array.isArray(M.attribute))for(let q=0;q<T.length;q++){let O=T[q],G;if(O.name===M.attribute[0]){for(G=O.sort||(O.sort={});G.next;)G=G.next;G.attribute=M.attribute.slice(1),G.descending=M.descending}else O===M.attribute[0]&&(T[q]=G={name:O,sort:{attribute:M.attribute.slice(1),descending:M.descending}})}M.next&&K(M.next)},"applySortingOnSelect");K(A)}else v.iterate=k=>k?.async&&g[Symbol.asyncIterator]?g[Symbol.asyncIterator]():g[Symbol.iterator](),v=v.map(function(k){try{let K=B.call(this,k);return typeof K?.catch=="function"?K.catch(M=>{throw M.partialObject={[t]:k.key},M}):K}catch(K){throw K.partialObject={[t]:k.key},K}});return v}static transformEntryForSelect(g,T,A,N,C,B){let v;C&&w&&!(typeof g=="string"?[g]:g)?.every(M=>{let q;return typeof M=="object"?q=M.name:q=M,r[q]||q===t})&&(v=!0);let k,K=a(function(M){let q;if(T?.transaction?.stale&&(T.transaction.stale=!1),M!=null){if(q=M.deref?M.deref():M.value,!q&&(M.key===void 0||M.deref)||M.metadataFlags&kn){if(M.metadataFlags&kn&&T.replicateFrom===!1&&B&&M.residencyId)return gc.SKIP;if(M=Xc(M.key??M,T,{transaction:A,lazy:g?.length<4,ensureLoaded:C},this?.isSync,O=>O),M?.then)return M.then(K.bind(this));q=M?.value}if(v&&M?.metadataFlags&(kn|Sl)||M?.expiresAt!=null&&M?.expiresAt<Date.now()){if(T.onlyIfCached)return{[t]:M.key,message:"This entry has expired"};let O=Ho(M.key??M,M,T);if(O?.then)return O.then(K)}}if(q==null)return B?gc.SKIP:q;if(g&&!(g[0]==="*"&&g.length===1)){let O,G=a((D,me)=>{let ne;typeof D=="object"?ne=D.name:ne=D;let Ee=Lt?.[ne],j;if(Ee){let Q=N?.[ne];if(Q)if(Q.hasMappings){let pe=Ee.from?q[Ee.from]:nd(M.key);j=Q.get(pe),j||(j=[])}else j=Q.fromRecord?.(q);else j=Ee(q,T,M,!0);let le=a(pe=>{if(Ee.directReturn)return me(pe,ne);if(pe&&typeof pe=="object"){let Pe=Ee.definition?.tableClass||Be;k||(k={});let Xe=k[ne]||(k[ne]=Pe.transformEntryForSelect(ne===D?null:D.select||(Array.isArray(D)?D:null),T,A,Q,C));if(Array.isArray(pe)){let mt=[],ye=Pe.transformToOrderedSelect(pe,D.select,typeof D.sort=="object"&&D.sort,T,A,Xe)[this.isSync?Symbol.iterator:Symbol.asyncIterator](),Se=a(_t=>{for(;!_t.done;){if(_t?.then)return _t.then(Se);mt.push(_t.value),_t=ye.next()}me(mt,ne)},"nextValue"),bt=Se(ye.next());bt&&(O||(O=[]),O.push(bt));return}else if(pe=Xe.call(this,pe),pe?.then){O||(O=[]),O.push(pe.then(mt=>me(mt,ne)));return}}me(pe,ne)},"handleResolvedValue");j?.then?(O||(O=[]),O.push(j.then(le))):le(j);return}else j=q[ne],j&&typeof j=="object"&&ne!==D&&(j=Be.transformEntryForSelect(D.select||D,T,A,null)({value:j}));me(j,ne)},"selectAttribute"),V;if(typeof g=="string")G(g,D=>{V=D});else if(Array.isArray(g))if(g.asArray)V=[],g.forEach((D,me)=>{D==="*"?g[me]=q:G(D,ne=>V[me]=ne)});else{V={};let D=g.forceNulls;for(let me of g)if(me==="*")for(let ne in q)V[ne]=q[ne];else G(me,(ne,Ee)=>{ne===void 0&&D&&(ne=null),V[Ee]=ne})}else throw new ft.ClientError("Invalid select"+g);return O?Promise.all(O).then(()=>V):V}return q},"transform");return K}async subscribe(g){if(!l)throw new Error("Can not subscribe to a table without an audit log");_||je({table:s,database:c,schemaDefined:u,attributes:S,audit:!0}),g||(g={});let T=!g.rawEvents,A=[],N=MI(Be,this.getId()??null,function(v,k,K,M){try{let q=k.getValue?.(i,T),O=k.type;if(!q&&O==="patch"&&T){let V=i.getEntry(v);V?.version===k.version?q=V.value:q=k.getValue?.(i,!0,K),O="put"}let G={id:v,localTime:K,value:q,version:k.version,type:O,beginTxn:M};A?A.push(G):(c!=="system"&&qe(k.size??1,"db-message",s,null),this.send(G))}catch(q){Fe.default.error?.(q)}},g.startTime||0,g),C=(async()=>{this.isCollection&&(N.includeDescendants=!0,g.onlyChildren&&(N.onlyChildren=!0)),g.supportsTransactions&&(N.supportsTransactions=!0);let v=this.getId(),k=g.previousCount;k>1e3&&(k=1e3);let K=g.startTime;if(this.isCollection){if(K){if(k)throw new ft.ClientError("startTime and previousCount can not be combined for a table level subscription");for(let{key:M,value:q}of l.getRange({start:K,exclusiveStart:!0,snapshot:!1})){let O=wt(q);if(O.tableId!==n)continue;let G=O.recordId;if(v==null||kq(v,G)){let V=O.getValue(i,T,M);if(B({id:G,localTime:M,value:V,version:O.version,type:O.type,size:O.size}),N.queue?.length>Bq&&await N.waitForDrain()===!1)return}N.startTime=M}}else if(k){let M=[];for(let{key:q,value:O}of l.getRange({start:"z",end:!1,reverse:!0}))try{let G=wt(O);if(G.tableId!==n)continue;let V=G.recordId;if(v==null||kq(v,V)){let D=G.getValue(i,T,q);if(M.push({id:V,localTime:q,value:D,version:G.version,type:G.type}),--k<=0)break}}catch(G){Fe.default.error("Error getting history entry",q,G)}for(let q=M.length;q>0;)B(M[--q]);M[0]&&(N.startTime=M[0].localTime)}else if(!g.omitCurrent){for(let{key:M,value:q,version:O,localTime:G,size:V}of i.getRange({start:v??!1,end:v==null?void 0:[v,$l.MAXIMUM_KEY],versions:!0,snapshot:!1}))if(q&&(B({id:M,localTime:G,value:q,version:O,type:"put",size:V}),N.queue?.length>Bq&&await N.waitForDrain()===!1))return}}else{k&&!K&&(K=0);let M=this.#n?.localTime;if(M===RI&&(i.cache?.delete(v),this.#n=i.getEntry(v),Fe.default.trace?.("re-retrieved record",M,this.#n?.localTime),M=this.#n?.localTime),Fe.default.trace?.("Subscription from",K,"from",v,M),K<M){let q=[],O=M;do{let G=l.get(O);if(G){g.omitCurrent=!0;let V=wt(G),D=V.getValue(i,T,O);T&&(V.type="put"),q.push({id:v,value:D,localTime:O,...V}),O=V.previousLocalTime}else break;k&&k--}while(O>K&&k!==0);for(let G=q.length;G>0;)B(q[--G]);N.startTime=M}!g.omitCurrent&&this.doesExist()&&B({id:v,localTime:M,value:this.#e,version:this.#r,type:"put"})}for(let M of A)B(M);A=null})();function B(v){c!=="system"&&qe(v.size??1,"db-message",s,null),N.send(v)}return a(B,"send"),g.listener&&N.on("data",g.listener),N}static subscribeOnThisThread(g,T){return g===0||T?.crossThreads===!1}doesExist(){return!!(this.#e||this.#s)}publish(g,T,A){if(T===void 0||T instanceof URLSearchParams)this._writePublish(this.getId(),g,T);else{let N=!0,C=this.getContext();return g.checkPermission&&(N=this.allowCreate(C.user,T,C)),Vs(N,B=>{if(!B)throw new ft.AccessViolation(C.user);let v=ci(g);this._writePublish(v,T,A)})}}_writePublish(g,T,A){let N=Rt(this.getContext());g??=null,g!==null&&Fo(g);let C=this.getContext();N.addWrite({key:g,store:i,entry:this.#n,nodeName:C?.nodeName,validate:a(()=>{C?.source||(N.checkOverloaded(),this.validate(T))},"validate"),before:Te.publish?.bind(this,C,g,T),beforeIntermediate:tl(T,De.publish?.bind(this,C,g,T)),commit:a((B,v,k)=>{v===void 0&&R&&!_&&Nr(),Fe.default.trace?.(`Publishing message to id: ${g}, timestamp: ${new Date(B).toISOString()}`),y(g,v?.value??null,v,v?.version||B,0,!0,{user:C?.user,residencyId:A?.residencyId,expiresAt:C?.expiresAt,nodeId:A?.nodeId,tableToTrack:s},"message",!1,T)},"commit")})}validate(g,T){let A,N=a((C,B,v)=>{if(B.type&&C!=null)if(T&&C.__op__&&(C=C.value),B.properties){typeof C!="object"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an object${B.type?" ("+B.type+")":""}`);let k=B.properties;for(let K=0,M=k.length;K<M;K++){let q=k[K];if(q.relationship||q.computed){g.hasOwnProperty(q.name)&&(A||(A=[])).push(`Computed property ${v}.${q.name} may not be directly assigned a value`);continue}let O=N(C[q.name],q,v+"."+q.name);O&&(C[q.name]=O)}if(B.sealed&&C!=null&&typeof C=="object")for(let K in C)k.find(M=>M.name===K)||(A||(A=[])).push(`Property ${K} is not allowed within object in property ${v}`)}else switch(B.type){case"Int":(typeof C!="number"||C>>0!==C)&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an integer (from -2147483648 to 2147483647)`);break;case"Long":(typeof C!="number"||!(Math.floor(C)===C&&Math.abs(C)<=9007199254740992))&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an integer (from -9007199254740992 to 9007199254740992)`);break;case"Float":typeof C!="number"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a number`);break;case"ID":typeof C=="string"||C?.length>0&&C.every?.(k=>typeof k=="string")||(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a string, or an array of strings`);break;case"String":typeof C!="string"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a string`);break;case"Boolean":typeof C!="boolean"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a boolean`);break;case"Date":if(!(C instanceof Date)){if(typeof C=="string"||typeof C=="number")return new Date(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a Date`)}break;case"BigInt":if(typeof C!="bigint"){if(typeof C=="string"||typeof C=="number")return BigInt(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a bigint`)}break;case"Bytes":if(!(C instanceof Uint8Array)){if(typeof C=="string")return Buffer.from(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a Buffer or Uint8Array`)}break;case"Blob":if(!(C instanceof Us)){if(typeof C=="string"&&(C=Buffer.from(C)),C instanceof Buffer)return createBlob(C,{type:"text/plain"});(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a Blob`)}break;case"array":if(Array.isArray(C)){if(B.elements)for(let k=0,K=C.length;k<K;k++){let M=C[k],q=N(M,B.elements,v+"[*]");q&&(C[k]=q)}}else(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an Array`);break}B.nullable===!1&&C==null&&(A||(A=[])).push(`Property ${v} is required (and not does not allow null values)`)},"validateValue");for(let C=0,B=S.length;C<B;C++){let v=S[C];if(v.relationship||v.computed){Object.hasOwn(g,v.name)&&(A||(A=[])).push(`Computed property ${v.name} may not be directly assigned a value`);continue}if(!T||v.name in g){let k=N(g[v.name],v,v.name);k!==void 0&&(g[v.name]=k)}}if(f)for(let C in g)S.find(B=>B.name===C)||(A||(A=[])).push(`Property ${C} is not allowed`);if(A)throw new ft.ClientError(A.join(". "))}getUpdatedTime(){return this.#r}wasLoadedFromSource(){return w?!!this.#i:void 0}static async addAttributes(g){let T=S.slice(0);for(let A of g){if(!A.name)throw new ft.ClientError("Attribute name is required");if(A.name.match(/[`/]/))throw new ft.ClientError("Attribute names cannot include backticks or forward slashes");Nae(A.name),T.push(A)}return je({table:s,database:c,schemaDefined:u,attributes:T}),Be.indexingOperation}static async removeAttributes(g){let T=S.filter(A=>!g.includes(A.name));return je({table:s,database:c,schemaDefined:u,attributes:T}),Be.indexingOperation}static getSize(){let g=i.getStats();return(g.treeBranchPageCount+g.treeLeafPageCount+g.overflowPages)*g.pageSize}static getAuditSize(){let g=l?.getStats();return g&&(g.treeBranchPageCount+g.treeLeafPageCount+g.overflowPages)*g.pageSize}static getStorageStats(){let g=i.env.path,T=eC.default.statfsSync?.(g)??{};return{available:T.bavail*T.bsize,free:T.bfree*T.bsize,size:T.blocks*T.bsize}}static async getRecordCount(g){let T=i.getStats().entryCount,A=1e3/2,N=performance.now(),C=Math.floor(T/2),B=g?.exactCount,v=0,k=0,K;for(let{value:M}of i.getRange({start:!0,lazy:!0,snapshot:!1}))if(M!=null&&v++,k++,await _c(),!B&&k<C&&performance.now()-N>A){K=k;break}if(K){let M=v;v=0;for(let{value:j}of i.getRange({start:"\uFFFF",reverse:!0,lazy:!0,limit:K,snapshot:!1}))j!=null&&v++,await _c();let q=K*2,O=(v+M)/q,G=Math.pow((v-M+1)/K/2,2)+O*(1-O)/q,V=Math.max(Math.sqrt(G)*T,1),D=Math.round(O*T),me=Math.max(D-1.96*V,v+M),ne=Math.min(D+1.96*V,T),Ee=Math.pow(10,Math.round(Math.log10(V)));return Ee>D&&(Ee=Ee/10),v=Math.round(D/Ee)*Ee,{recordCount:v,estimatedRange:[Math.round(me),Math.round(ne)]}}return{recordCount:v}}static updatedAttributes(){Lt=this.propertyResolvers={$id:a((g,T,A)=>({value:A.key}),"$id"),$updatedtime:a((g,T,A)=>A.version,"$updatedtime"),$updatedTime:a((g,T,A)=>A.version,"$updatedTime"),$expiresAt:a((g,T,A)=>A.expiresAt,"$expiresAt"),$record:a((g,T,A)=>A?{value:g}:g,"$record"),$distance:a((g,T,A)=>A&&(A.distance??T?.vectorDistances?.get(A)),"$distance")};for(let g of this.attributes){g.isPrimaryKey&&(L=g),g.resolve=null;let T=g.relationship,A=g.computed;if(T)if(g.indexed&&console.error("A relationship property can not be directly indexed, (but you may want to index the foreign key attribute)"),A&&console.error("A relationship property is already computed and can not be combined with a computed function (the relationship will be given precedence)"),Ya=!0,T.to)g.elements?.definition?(Lt[g.name]=g.resolve=(N,C,B,v)=>{let k=N[T.from?T.from:t],K=g.elements.definition.tableClass;return v?rd({attribute:T.to,value:k},Rt(C).getReadTxn(),!1,K,!1).map(M=>M&&M.key!==void 0?M:K.primaryStore.getEntry(M,{transaction:Rt(C).getReadTxn()})).asArray:K.search([{attribute:T.to,value:k}],C).asArray},g.set=()=>{},g.resolve.definition=g.elements.definition,g.resolve.to=T.to,T.from&&(g.resolve.from=T.from)):console.error(`The one-to-many/many-to-many relationship property "${g.name}" in table "${s}" must have an array type referencing a table as the elements`);else if(T.from){let N=g.definition||g.elements?.definition;N?(Lt[g.name]=g.resolve=(C,B,v,k)=>{let K=C[T.from];if(K===void 0)return;if(g.elements){let q,O=K?.map(G=>{let V=N.tableClass.primaryStore[k?"getEntry":"get"](G,{transaction:Rt(B).getReadTxn()});return V?.then&&(q=!0),Be.loadAsInstance===!1&&Object.freeze(k?V?.value:V),V});return T.filterMissing?q?Promise.all(O).then(G=>G.filter(Hq)):O.filter(Hq):q?Promise.all(O):O}let M=N.tableClass.primaryStore[k?"getEntry":"get"](K,{transaction:Rt(B).getReadTxn()});return Be.loadAsInstance===!1&&Object.freeze(k?M?.value:M),M},g.set=(C,B)=>{if(Array.isArray(B)){let v=B.map(k=>k.getId?.()||k[N.tableClass.primaryKey]);C[T.from]=v}else{let v=B.getId?.()||B[N.tableClass.primaryKey];C[T.from]=v}},g.resolve.definition=g.definition||g.elements?.definition,g.resolve.from=T.from):console.error(`The relationship property "${g.name}" in table "${s}" must be a type that references a table`)}else console.error(`The relationship directive on "${g.name}" in table "${s}" must use either "from" or "to" arguments`);else if(A)typeof A.from=="function"&&this.setComputedAttribute(g.name,A.from),Lt[g.name]=g.resolve=(N,C,B)=>{let v=typeof A.from=="string"?N[A.from]:N,k=this.userResolvers[g.name];if(k)return k(v,C,B);Fe.default.warn(`Computed attribute "${g.name}" does not have a function assigned to it. Please use setComputedAttribute('${g.name}', resolver) to assign a resolver function.`),this.userResolvers[g.name]=()=>{}},g.resolve.directReturn=!0;else if(r[g.name]?.customIndex?.propertyResolver){let N=r[g.name].customIndex;Lt[g.name]=(C,B,v)=>{let k=C[g.name];return N.propertyResolver(k,B,v)},Lt[g.name].directReturn=!0}}Ip(this,this),Ip(lm,this,!0);for(let g of S){let T=g.name;g.resolve&&(Object.defineProperty(i.encoder.structPrototype,T,{get(){return g.resolve(this,sp.getStore())},set(A){return g.set(this,A)},configurable:!0,enumerable:g.enumerable}),g.enumerable&&!i.encoder.structPrototype.toJSON&&Object.defineProperty(i.encoder.structPrototype,"toJSON",{configurable:!0,value(){let A={};for(let N in this)A[N]=this[N];return A}}))}}static setComputedAttribute(g,T){let A=ji(S,g);if(!A){console.error(`The attribute "${g}" does not exist in the table "${s}"`);return}if(!A.computed){console.error(`The attribute "${g}" is not defined as computed in the table "${s}"`);return}this.userResolvers[g]=T}static async deleteHistory(g=0,T=!1){let A;for(let{key:N,value:C}of l.getRange({start:0,end:g}))await _c(),wt(C).tableId===n&&(A=ag(l,N,C));if(T)for(let N of i.getRange({start:0,versions:!0})){let{value:C,localTime:B}=N;await _c(),C===null&&B<g&&(A=gl(i,N))}await A}static async*getHistory(g=0,T=1/0){for(let{key:A,value:N}of l.getRange({start:g||1,end:T})){await _c();let C=wt(N);C.tableId===n&&(yield{id:C.recordId,localTime:A,version:C.version,type:C.type,value:C.getValue(i,!0,A),user:C.user,operation:C.originatingOperation})}}static async getHistoryOfRecord(g){let T=[];if(g==null)throw new Error("An id is required");let A=i.getEntry(g);if(!A)return T;let N=A.localTime;if(!N)throw new Error("The entry does not have a local audit time");let C=0;do{await _c();let B=l.get(N);if(B){let v=wt(B);T.push({id:v.recordId,localTime:N,version:v.version,type:v.type,value:v.getValue(i,!0,N),user:v.user}),N=v.previousLocalTime}else break}while(C<1e3&&N);return T.reverse()}static cleanup(){F?.remove()}}let p_=AS(async(W,g,T)=>{for(let A of Be.sources)if(A.get&&(!A.get.reliesOnPrototype||A.prototype.get)){if(A.available?.(T)===!1)continue;g.source=A;let N=await A.get(W,g);if(N)return N}},()=>{throw new ft.ServerError("Service unavailable, exceeded request queue limit for resolving cache record",503)});return Be.updatedAttributes(),h&&Be.setTTLExpiration(h/1e3),J&&fm(),Be;function Jc(W,g,T){let A;for(let N in r){let C=r[N],B=C.isIndexing,v=Lt[N],k=T&&(v?v(T):T[N]),K=g&&(v?v(g):g[N]);if(k===K&&!B)continue;if(C.customIndex){C.customIndex.index(W,k,K);continue}A=!0;let M=C.indexNulls,q=(0,zp.getIndexedValues)(k,M),O=(0,zp.getIndexedValues)(K,M);if(O?.length>0){let G=new Set(O);if(q=q?q.filter(V=>{if(G.has(V))G.delete(V);else return!0}):[],O=Array.from(G),(O.length>0||q.length>0)&&Mq){let V=O.concat(q).map(D=>({key:D,value:W}));C.prefetch(V,Fq)}for(let V=0,D=O.length;V<D;V++)C.remove(O[V],W)}else q?.length>0&&Mq&&C.prefetch(q.map(G=>({key:G,value:W})),Fq);if(q)for(let G=0,V=q.length;G<V;G++)C.put(q[G],W)}return A}a(Jc,"updateIndices");function Fo(W){switch(typeof W){case"number":return!0;case"string":if(W.length<659)return!0;if(W.length>xq)throw new Error("Primary key size is too large: "+W.length);break;case"object":if(W===null)throw new Error("Invalid primary key of null");break;case"bigint":if(W<2n**64n&&W>-(2n**64n))return!0;break;default:throw new Error("Invalid primary key type: "+typeof W)}if((0,$l.writeKey)(W,Mae,0)>xq)throw new Error("Primary key size is too large: "+W.length);return!0}a(Fo,"checkValidId");function ci(W){return typeof W=="object"&&W?W.id:W}a(ci,"requestTargetToId");function Uu(W){return typeof W=="object"&&W&&W.isCollection}a(Uu,"isSearchTarget");function Xc(W,g,T,A,N){if(Be.getResidencyById&&T.ensureLoaded&&g?.replicateFrom!==!1){let B=Zc(Be.getResidencyById(W));if(B&&!B.includes(server.hostname)&&I)return I({key:W,residency:B}).then(N)}let C=a(()=>{if(g?.transaction?.stale&&(g.transaction.stale=!1),T.transaction?.isDone)return N(null,W);let B=i.getEntry(W,T);return c!=="system"&&(T.type==="read"||!T.type)&&($q.default.trace?.("Recording db-read action for",`${c}.${s}`),qe(B?.size??1,"db-read",s,null)),g?._freezeRecords&&Object.freeze(B?.value),B?.residencyId&&B.metadataFlags&kn&&I&&T.ensureLoaded&&g?.replicateFrom!==!1?I(B).then(v=>N(v,W),v=>(Fe.default.error?.("Error loading remote record",W,B,T,v),N(null,W))):(B&&g&&(B?.version>(g.lastModified||0)&&(g.lastModified=B.version),B?.localTime&&!g.lastRefreshed&&(g.lastRefreshed=B.localTime)),N(B,W))},"whenPrefetched");return A?C():ae>0?(ae--,C()):new Promise((B,v)=>{ae===0?(ae--,i.prefetch([W],()=>{k(),K()})):(de.push(W),oe.push(K),de.length>m_&&(ae--,k()));function k(){if(de.length>0){let M=oe;i.prefetch(de,()=>{ae===-1?k():ae++;for(let q of M)q()}),de=[],oe=[],he>2&&he--}else ae=he,he<cm&&he++}a(k,"prefetch");function K(){try{B(C())}catch(M){v(M)}}a(K,"load")})}a(Xc,"loadLocalRecord");function ko(W,g){let T=g?.checkPermission;if(typeof T!="object"){if(!W?.role)return;T=W.role.permission}if(T.super_user)return Uae;let A=T[c],N,C=A?.tables;if(C)return C[s];if(c==="data"&&(N=T[s])&&!N.tables)return N}a(ko,"getTablePermissions");function Ho(W,g,T,A){if(w){let N=!1;if(T.noCache?N=!0:(g?(!g.value||g.metadataFlags&(kn|Sl)||g.expiresAt!=null&&g.expiresAt<Date.now())&&(N=!0):N=!0,tn(!N,"cache-hit",s)),N){let C=dm(W,g,T).then(B=>(B?.value&&B?.value.getRecord?.()&&Fe.default.error?.("Can not assign a record that is already a resource"),T&&(B?.version>(T.lastModified||0)&&(T.lastModified=B.version),T.lastRefreshed=Date.now()),B));if(T?.onlyIfCached||g?.value&&A?.allowStaleWhileRevalidate?.(g,W)){if(C.catch(B=>Fe.default.warn?.(B)),T?.onlyIfCached&&!A.doesExist())throw new ft.ServerError("Entry is not cached",504);return}else return C}}else if(g?.value&&g.expiresAt!=null&&g.expiresAt<Date.now())return Be.evict(g.key,g.value,g.version),g.value=null,{then(N){return N(g)}}}a(Ho,"ensureLoadedFromSource");function Rt(W){let g=W?.transaction;if(g){if(!g.lmdbDb)return g.lmdbDb=i,g;do{if(g.lmdbDb?.path===i.path)return g;let T=g.next;if(!T)return g=g.next=new $o,g.lmdbDb=i,g;g=T}while(!0)}else return new x_}a(Rt,"txnForContext");function Mn(W,g,T){if(!W)return;let A=(W.deref?W.deref():W.value)??i.getEntry(W.key)?.value;if(typeof g=="object"){let C=Lt,B=A;for(let v=0,k=g.length;v<k;v++){let K=g[v],M=C?.[K];B=M&&B?M(B,T,W):B?.[K],W=null,C=M?.definition?.tableClass?.propertyResolvers}return B}let N=Lt[g];return N?N(A,T,W):A[g]}a(Mn,"getAttributeValue");function um(W,g,T,A,N){let C=N?.length,B={transaction:A,lazy:C>0||typeof g=="string"||g?.length<4,alwaysPrefetch:!0},v;function k(K,M){let q=K?.value;if(!q)return gc.SKIP;for(let O=0;O<C;O++)if(!v?.includes(O)&&!N[O](q,K))return gc.SKIP;return M!==void 0&&(K.key=M),K}if(a(k,"processEntry"),C>0||!W.hasEntries){let K=W.map(M=>{if(v=null,typeof M=="object"&&M?.key!==void 0)return C>0?k(M):M;if(M==null)return gc.SKIP;for(let q=0;q<C;q++){let G=N[q].idFilter;if(G){if(!G(M))return gc.SKIP;v||(v=[]),v.push(q)}}return Xc(M,T,B,!1,k)});return Array.isArray(W)&&(K=K.filter(M=>M!==gc.SKIP)),K.hasEntries=!0,K}return W}a(um,"transformToEntries");function Go(W,g,T=server.replication?.getThisNodeId(l)){if(W<=g?.version){if(g?.version===W&&T!==void 0){let A=server.replication?.exportIdMapping(l),N=g.localTime,C=N&&l.get(N);if(C){let B,v,k=wt(C);for(let K in A)A[K]===T&&(B=K),A[K]===k.nodeId&&(v=K);if(B>v)return 1;if(B===v)return 0}}return-1}return 1}a(Go,"precedesExistingVersion");async function dm(W,g,T){let A=g?.metadataFlags,N=g?.version,C,B;if(!i.attemptLock(W,N,()=>{clearTimeout(B);let M=i.getEntry(W);!M||!M.value||M.metadataFlags&(kn|Sl)||M.expiresAt!=null&&M.expiresAt<Date.now()?C(dm(W,i.getEntry(W),T)):C(M)}))return new Promise(M=>{C=M,B=setTimeout(()=>{i.unlock(W,N)},Dae)});let v=g?.value,k={requestContext:T,replacingRecord:v,replacingEntry:g,replacingVersion:N,noCacheStore:!1,source:null,resourceCache:T?.resourceCache,transaction:void 0,expiresAt:void 0,lastModified:void 0},K=T?.responseHeaders;return new Promise((M,q)=>{let O;Vs(It(k,async G=>{let V=performance.now(),D,me,ne;try{D=await p_(W,k,g),ne=A&kn;let j=k.lastModified||ne&&N;j||(j=(0,zp.getNextMonotonicTime)()),me=ne||j>N||!v;let Q=performance.now()-V;if(qe(Q,"cache-resolution",s,null,"success"),K&&Wp(K,"Server-Timing",`cache-resolve;dur=${Q.toFixed(2)}`,!0),G.timestamp=j,h&&k.expiresAt==null&&(k.expiresAt=Date.now()+h),D){if(typeof D!="object")throw new Error("Only objects can be cached and stored in tables");if(D.status>0&&D.headers)if(D.status>=300)if(D.status===304)D=v,j=N;else throw new ft.ServerError(D.body||"Error from source",D.status);else D=D.body;typeof D.toJSON=="function"&&(D=D.toJSON()),t&&D[t]!==W&&(D[t]=W)}O=!0,M({key:W,version:j,value:D})}catch(j){j.message+=` while resolving record ${W} for ${s}`,v&&((j.code==="ECONNRESET"||j.code==="ECONNREFUSED"||j.code==="EAI_AGAIN")&&!T?.mustRevalidate||T?.staleIfError&&(j.statusCode===500||j.statusCode===502||j.statusCode===503||j.statusCode===504))?(M({key:W,version:N,value:v}),Fe.default.trace?.(j.message,"(returned stale record)")):q(j);let Q=performance.now()-V;qe(Q,"cache-resolution",s,null,"fail"),K&&Wp(K,"Server-Timing",`cache-resolve;dur=${Q.toFixed(2)}`,!0),k.transaction.abort();return}if(T?.noCacheStore||k.noCacheStore){k.transaction.abort();return}Rt(k).addWrite({key:W,store:i,entry:g,nodeName:"source",before:tl(D),commit:a((j,Q)=>{if(Q?.version===N)if(Jc(W,v,D),D){De.put?.(k,W,D),Q&&(T.previousResidency=Be.getResidencyRecord(Q.residencyId));let le,pe=!1,Pe,Xe=Zc(Be.getResidency(D,T));if(Xe){if(!Xe.includes(server.hostname))if(le=D,pe=!0,Be.getResidencyById)D=void 0;else{D=null;for(let mt in r)D||(D={}),D[mt]=le[mt]}Pe=el(Xe)}Fe.default.trace?.(`Writing resolved record from source with id: ${W}, timestamp: ${new Date(j).toISOString()}`),y(W,D,Q,j,pe?kn:0,_&&(me||pe)||null,{user:k?.user,expiresAt:k.expiresAt,residencyId:Pe,tableToTrack:s},"put",!!ne,le)}else Q&&(De.delete?.(k,W),Fe.default.trace?.(`Deleting resolved record from source with id: ${W}, timestamp: ${new Date(j).toISOString()}`),_||R?y(W,null,Q,j,0,_&&me||null,{user:k?.user,tableToTrack:s},"delete",!!ne):gl(i,Q,N))},"commit")})}),()=>{i.unlock(W,N)},G=>{i.unlock(W,N),O&&Fe.default.error?.("Error committing cache update",G)})})}a(dm,"getFromSource");function ja(W){if(!W||W.user?.role?.permission?.super_user)return!0;if(W.replicateTo)throw new ft.ClientError("Can not specify replication parameters without super user permissions",403);if(W.replicatedConfirmation)throw new ft.ClientError("Can not specify replication confirmation without super user permissions",403);return!0}a(ja,"checkContextPermissions");function Nr(W){let g=!1;if(W&&(W-$e>1&&(g=!0),$e=W),!(Je===ns&&!g)&&(ns=Je,(0,ql.getWorkerIndex)()===(0,ql.getWorkerCount)()-1))return Pt&&clearTimeout(Pt),Je?new Promise(T=>{let A=new Date;A.setMonth(0),A.setDate(1),A.setHours(0),A.setMinutes(0),A.setSeconds(0);let N=Je/(1+$e),C=g?Date.now():Math.ceil((Date.now()-A.getTime())/N)*N+A.getTime(),B=a(v=>{Fe.default.trace?.(`Scheduled next cleanup scan at ${new Date(v)}`),Pt=setTimeout(()=>H=H.then(async()=>{if(B(Math.max(v+Je,Date.now())),i.rootStore.status!=="open"){clearTimeout(Pt);return}let k=50,K=new Array(k),M=0,q=Math.pow($e,8)*(Od.get(U.STORAGE_RECLAMATION_EVICTIONFACTOR)??1e5),O=E/Math.pow(Math.max($e,1),4);Fe.default.debug?.(`Starting cleanup scan for ${s}, evict threshold ${q}, adjusted eviction ${O}ms`);function G(V,D,me,ne){let Ee=V+O-Date.now();if(Ee<0)return!0;if($e){let j=i.lastSize;return me&Zr&&al(ne,Q=>{Q.size&&(j+=Q.size)}),Fe.default.trace?.(`shouldEvict adjusted ${Ee} ${j}, ${Ee*(V-D)/j} < ${q}`),Ee*(V-D)/j<q}return!1}a(G,"shouldEvict");try{let V=0;for(let D of i.getRange({start:!1,snapshot:!1,versions:!0,lazy:!0})){let{key:me,value:ne,version:Ee,expiresAt:j,metadataFlags:Q}=D,le;ne===null&&!_&&Ee+Lae<Date.now()?le=gl(i,D,Ee):j!=null&&G(j,Ee,Q,ne)&&(le=Be.evict(me,ne,Ee),V++),le&&(await K[M],K[M]=le.catch(pe=>{Fe.default.error?.("Cleanup error",pe)}),++M>=k&&(M=0)),await _c()}Fe.default.debug?.(`Finished cleanup scan for ${s}, evicted ${V} entries`)}catch(V){Fe.default.warn?.(`Error in cleanup scan for ${s}:`,V)}T(void 0),$e=0}),Math.min(v-Date.now(),2147483647)).unref()},"startNextTimer");B(C)}):void 0}a(Nr,"scheduleCleanup");function xu(){F=l?.addDeleteRemovalCallback(n,i,(W,g)=>{i.remove(W,g)})}a(xu,"addDeleteRemoval");function fm(){(0,ql.getWorkerIndex)()===0&&setInterval(async()=>{if(!Qc){Qc=!0;try{let W=J.name,g=r[W];if(!g)throw new Error(`expiresAt attribute ${J} must be indexed`);for(let T of g.getRange({start:!0,values:!1,end:Date.now(),snapshot:!1})){for(let A of g.getValues(T)){let N=i.getEntry(A);N?.value?N.value[W]<Date.now()&&Be.evict(A,N.value,N.version):i.ifVersion(A,N?.version,()=>g.remove(T,A))}await _c()}}catch(W){Fe.default.error?.("Error in evicting old records",W)}finally{Qc=!1}}},Pae).unref()}a(fm,"runRecordExpirationEviction");function Zc(W){if(W!=null){if(Array.isArray(W))return W;if(typeof W=="number"){if(W>=65536)throw new Error(`Shard id ${W} must be below 65536`);let g=server.shards?.get?.(W);if(g)return Fe.default.trace?.(`Shard ${W} mapped to ${g.map(T=>T.name).join(", ")}`),g.map(T=>T.name);throw new Error(`Shard ${W} is not defined`)}throw new Error(`Shard or residency list ${W} is not a valid type, must be a shard number or residency list of node hostnames`)}}a(Zc,"residencyFromFunction");function el(W){if(W){let g=W.join(","),T=d.get([Symbol.for("residency_by_set"),g]);return T||(d.put([Symbol.for("residency_by_set"),g],T=Math.floor(Math.random()*2147418112)+65535),d.put([Symbol.for("residency_by_id"),T],W),T)}}a(el,"getResidencyId");function tl(W,g){let T=WA(W,i.rootStore);if(T){let A=g;return A?async()=>{await A(),await T()}:()=>T()}return g}a(tl,"preCommitBlobsForRecordBefore")}function ZN(e,t){let r=e.attr_object||(e.attr_object={}),n=r[t];if(n)return n;n=r[t]=Object.create(null);for(let s of e)n[s.attribute_name]=s[t];return n}function Fq(){}function wS(e,t){let r=t?.type;if(e===null)return e;if(e===""&&r&&r!=="String"&&r!=="Any")return null;try{switch(r){case"Int":case"Long":if(e[0]==="$")return IS(parseInt(e.slice(1),36));if(e==="null")return null;if(!/^-?[0-9]+$/.test(e)&&!(e instanceof Date))throw new SyntaxError;return IS(+e);case"Float":return e==="null"?null:IS(+e);case"BigInt":return e==="null"?null:BigInt(e);case"Boolean":return(0,NS.autoCastBooleanStrict)(e);case"Date":if(isNaN(e)){if(e==="null")return null;xae.test(e)||(e+="Z");let n=new Date(e);return IS(n.getTime()),n}return new Date(+e);case void 0:case"Any":return(0,NS.autoCast)(e);default:return e}}catch(n){throw n.message=`Invalid value for attribute ${t.name}: "${e}", expecting ${r}`,n.statusCode=400,n}}function IS(e){if(isNaN(e))throw new SyntaxError;return e}function kq(e,t){if(e==null)return!0;if(!Array.isArray(t))return e===t||t.startsWith?.(e);if(Array.isArray(e)){let r=e.length;if(e[r-1]===null&&r--,t.length>=r){for(let n=0;n<r;n++)if(t[n]!==e[n])return!1;return!0}return!1}else if(t[0]===e)return!0}function Vs(e,t,r){return e?.then?e.then(t,r):t(e)}function Hq(e){return e!=null}function Ks(e){try{return JSON.stringify(e)}catch{return e}}function Bae(e){let t=process.pid;return e.env.readerList().slice(1).some(r=>+r.match(/\d+/)?.[0]!=t)}var gc,zp,Gq,qq,Od,ft,Qp,Jp,Fe,$l,ql,NS,eC,$q,wae,Nae,Cae,Oae,Pae,Lae,Mq,Dae,Uq,vae,kn,Sl,Mae,xq,Bq,Uae,xae,_c,Ig=ie(()=>{$();gc=require("lmdb"),zp=b(Ms()),Gq=b(require("lodash")),qq=b(Cm());zi();Pm();Od=b(fe());UI();ft=b(ge()),Qp=b(na()),Jp=b(us());Oe();Ag();Fe=b(pr());Gw();Ja();$l=require("ordered-binary"),ql=b(it());$i();NS=b(ue());pl();Fn();H_();jp();eC=b(require("node:fs"));os();ng();$q=b(ee());XN();({sortBy:wae}=Gq.default),{validateAttribute:Nae}=qq.default,Cae=new Uint8Array(9);Cae[8]=192;Oae=1/0,Pae=6e4,Lae=864e5;Od.initSync();Mq=Od.get(U.STORAGE_PREFETCHWRITES),Dae=1e4,Uq=1,vae=2,kn=1,Sl=8,Mae=Buffer.allocUnsafeSlow(8192),xq=1978,Bq=100,Uae={read:!0,insert:!0,update:!0,delete:!0,isSuperUser:!0};a(CS,"makeTable");a(ZN,"attributesAsObject");a(Fq,"noop");xae=/[+-][0-9]{2}:[0-9]{2}|[a-zA-Z]$/;a(wS,"coerceType");a(IS,"rejectNaN");a(kq,"isDescendantId");_c=a(()=>new Promise(setImmediate),"rest");a(Vs,"when");a(Hq,"exists");a(Ks,"stringify");a(Bae,"hasOtherProcesses")});function OS(e,t){if(!Array.isArray(e)||!Array.isArray(t))throw new Error("Euclidean distance comparison requires an array");let r=0,n=Math.max(e.length,t.length);for(let s=0;s<n;s++){let i=e[s]||0,o=t[s]||0,c=i-o;r+=c*c}return r}function PS(e,t){if(!Array.isArray(e)||!Array.isArray(t))throw new Error("Cosine distance comparison requires an array");let r=0,n=0,s=0,i=Math.max(e.length,t.length);for(let o=0;o<i;o++){let c=e[o]||0,l=t[o]||0;r+=c*l,n+=c*c,s+=l*l}return n=Math.sqrt(n),s=Math.sqrt(s),1-r/(n*s||1)}var Kq=ie(()=>{a(OS,"euclideanDistance");a(PS,"cosineDistance")});var Yq,Wq,Ld,co,Pd,Fae,kae,LS,jq=ie(()=>{Kq();Yq=require("msgpackr"),Wq=b(pr()),Ld=b(ge()),co=(0,Wq.loggerWithTag)("HNSW"),Pd=Symbol.for("entryPoint"),Fae=Symbol.for("key"),kae=10,LS=class{static{a(this,"HierarchicalNavigableSmallWorld")}static useObjectStore=!0;indexStore;M=16;efConstruction=100;efConstructionSearch=50;mL=1/Math.log(this.M);optimizeRouting=.5;nodesVisitedCount=0;idIncrementer;distance;constructor(t,r){this.indexStore=t,t&&(this.indexStore.encoder.useFloat32=Yq.FLOAT32_OPTIONS.ALWAYS),this.distance=r?.distance==="euclidean"?OS:PS,r&&(r.M!==void 0&&(this.M=r.M,this.mL=1/Math.log(this.M)),r.efConstruction!==void 0&&(this.efConstruction=this.efConstructionSearch=r.efConstruction),r.efConstructionSearch!==void 0&&(this.efConstructionSearch=r.efConstructionSearch),r.mL!==void 0&&(this.mL=r.mL),r.optimizeRouting!==void 0&&(this.optimizeRouting=r.optimizeRouting))}index(t,r,n){let s=typeof t=="number"?[Fae,t]:t,i=this.indexStore.get(s);if(!i){if(!r)return;if(!this.idIncrementer){let f=0;for(let m of this.indexStore.getKeys({reverse:!0,limit:1,start:1/0,end:0}))typeof m=="number"&&(f=m);this.idIncrementer=new BigInt64Array([BigInt(f)+1n]),this.idIncrementer=new BigInt64Array(this.indexStore.getUserSharedBuffer("next-id",this.idIncrementer.buffer))}i=Number(Atomics.add(this.idIncrementer,0,1n)),this.indexStore.put(s,i)}let o=new Map,c,l=this.indexStore.get(Pd);if(n?c={...this.indexStore.get(i)}:c={},r){let f=l&&this.indexStore.get(l);if(f==null){let E=Math.floor(-Math.log(Math.random())*this.mL),_={vector:r,level:E,primaryKey:t};for(let R=0;R<=E;R++)_[R]=[];if(this.indexStore.put(i,_),typeof i!="number")throw new Error("Invalid nodeId: "+i);co.debug?.("setting entry point to",i),this.indexStore.put(Pd,i);return}let m=c.level??Math.min(Math.floor(-Math.log(Math.random())*this.mL),kae),p=f.level;if(m>=p){if(typeof i!="number")throw new Error("Invalid nodeId: "+i);co.debug?.("setting entry point to",i),this.indexStore.put(Pd,i)}for(;p>m;){let E=this.searchLayer(r,l,f,this.efConstruction,p);E.length>0&&(l=E[0].id,f=E[0].node),p--}let h=new Array(m+1);for(let E=0;E<=m;E++)h[E]=[];for(let E=Math.min(m,p);E>=0;E--){let _=this.searchLayer(r,l,f,this.efConstruction,E);_=_.slice(0,this.M<<1),_.length===0&&E===0&&co.info?.("should not have zero connections for",l);let R=h[E];for(let S=0;S<_.length;S++){let{id:y,distance:I,node:w}=_[S];if(y===i)continue;let L=[];if(this.optimizeRouting){let X=!1,J=w[E],F=1+this.optimizeRouting*(1+.5*S/this.M);for(let de=0;de<J?.length;de++){let{id:oe,distance:ae}=J[de],he=1+this.optimizeRouting*(1+.5*de/this.M);for(let Te=0;Te<R.length;Te++){let{id:De,distance:Je}=R[Te];if(De===oe){I*F>Je+ae?X=!0:ae*he>I+Je&&(L.push({fromId:De,toId:y}),L.push({fromId:y,toId:De}));break}}if(X)break}if(X)continue}else if(S>=(E>0?this.M:this.M<<1))continue;R.push({id:y,distance:I});for(let{fromId:X,toId:J}of L){let F=d(X);F||(F=d(X,this.indexStore.get(X)));for(let de=0;de<F[E].length;de++)if(F[E][de].id===J){Object.isFrozen(F[E])&&(F[E]=F[E].slice()),F[E].splice(de,1);break}}let H=c[E],Z=H?.find(({id:X})=>X===y);if(Z){let X=H?.indexOf(Z);H.copied||(H=[...H],H.copied=!0,c[E]=H),H.splice(X,1)}else this.addConnection(y,d(y,w),i,E,I,d)}}this.indexStore.put(i,{vector:r,level:m,primaryKey:t,...h})}else{if(l===i){let f=c.level??0;for(let m=f;m>=0&&(l=c[m]?.[0]?.id,l===void 0);m--);if(l===void 0){let m=-1;for(let{key:p,value:h}of this.indexStore.getRange({start:0,end:1/0}))if(h.level>m){if(l=p,h.level===f)break;m=h.level}}if(l===void 0)this.indexStore.remove(Pd);else{if(typeof l!="number")throw new Error("Invalid nodeId: "+l);co.debug?.("setting entry point to",l),this.indexStore.put(Pd,l)}}this.indexStore.remove(i)}let u=new Map;if(c.level!==void 0)for(let f=0;f<=c.level;f++){let m=c[f];for(let{id:p}of m){let h=d(p,this.indexStore.get(p));if(h)for(let E=0;E<=f;E++)h[E]=h[E]?.filter(({id:_})=>_!==i),h[E]?.length===0&&(co.info?.("node was left orphaned, will reindex",p),u.set(h.primaryKey,h.vector))}}function d(f,m){let p=o.get(f);return!p&&m&&(p={...m},o.set(f,p)),p}a(d,"updateNode");for(let[f,m]of o)this.indexStore.put(f,m);for(let[f,m]of u)this.index(f,m,m);this.checkSymmetry(i,this.indexStore.get(i))}getEntryPoint(){let t=this.indexStore.get(Pd);if(t===void 0)return;let r=this.indexStore.get(t);return{id:t,...r}}searchLayer(t,r,n,s,i,o=this.distance){let c=new Set([r]),l=[{id:r,distance:this.distance(t,n.vector),node:n}],u=[...l];for(;l.length>0;){l.sort((p,h)=>p.distance-h.distance);let d=l.shift(),f=u[u.length-1].distance;if(d.distance>f)break;let m=d.node;for(let{id:p}of m[i]||[]){if(c.has(p)||p===void 0)continue;c.add(p);let h=this.indexStore.get(p);if(!h)continue;this.nodesVisitedCount++;let E=o(t,h.vector);if(E<f||u.length<s){let _={id:p,distance:E,node:h};l.push(_),u.push(_)}}u.sort((p,h)=>p.distance-h.distance),u.length>s&&u.splice(s,u.length-s)}return u.visited=c.size,u}search({target:t,value:r,descending:n,distance:s,comparator:i}){let o=0;switch(i){case"lt":case"le":o=r;case"sort":break;default:throw new Ld.ClientError(`Can not use "${i}" comparator with HNSW`)}if(n)throw new Ld.ClientError("Can not use descending sort order with HNSW");let c;if(s==="cosine")c=PS;else if(s==="euclidean")c=OS;else{if(s)throw new Ld.ClientError("Unknown distance function");c=this.distance}if(!t)throw new Ld.ClientError("A target vector must be provided for an HNSW query");if(!Array.isArray(t))throw new Ld.ClientError("The target vector must be an array");let l=this.getEntryPoint();if(!l)return[];let u=l.id,d=[];for(let f=l.level;f>=0;f--)if(d=this.searchLayer(t,u,l,this.efConstructionSearch,f,c),d.length>0){let m=d[0];l=m.node,u=m.id}return o&&(d=d.filter(f=>f.distance<o)),d.map(f=>({key:f.node.primaryKey,distance:f.distance}))}checkSymmetry(t,r){if(!r)return;let n=0,s;for(;(s=r[n])&&s.length!==0;){for(let{id:i}of s){let o=this.indexStore.get(i);if(!o){co.info?.("could not find neighbor node",o);continue}o[n]?.find(({id:l})=>l==t)||co.info?.("asymmetry detected",o[n])}n++}}addConnection(t,r,n,s,i,o){r[s]||(r[s]=[]);let c=s===0?this.M<<1:this.M;if(this.optimizeRouting&&(c<<=2),r[s].length>=c+(c>>2)){co.debug?.("maxConnections reached, removing some connections",c);let l=[...r[s]];l.sort((f,m)=>f.distance-m.distance);let u=l.slice(0,c),d=l.slice(c);r[s]=u;for(let f of d){let m=o(f.id)??this.indexStore.get(f.id);m&&m[s]&&(m=o(f.id,m),m[s]=m[s].filter(({id:p})=>p!==t),s===0&&m[s].length===0&&co.info?.("should not remove last connection",t,n))}}r[s].find(({id:l})=>l===n)?co.debug?.("already connected",t,n):r[s]=[...r[s],{id:n,distance:i}]}validateConnectivity(t=0){let r=this.getEntryPoint(),n=new Set,s=[r.id];n.add(r.id);let i=0;for(;s.length>0;){let o=s.shift(),c=this.indexStore.get(o);for(let l=t;l<=c.level;l++)for(let{id:u}of c[l]||[])i++,n.has(u)||(n.add(u),s.push(u))}return n.size!==this.totalNodes&&console.log("visited",n.size,"total",this.totalNodes),{isFullyConnected:n.size===this.totalNodes,averageConnections:i/n.size}}get totalNodes(){return Array.from(this.indexStore.getKeys({start:0,end:1/0})).length}estimateCountAsSort(){return Math.sqrt(this.indexStore.getStats().entryCount*this.efConstructionSearch)}propertyResolver(t,r,n){let s=r?.sort;if(s){let i=s.vectorDistances;if(i){let l=i.get(n);if(l)return l}else i=r.vectorDistances=s.vectorDistances=new Map;let o=this.distance;s.type&&(o=s.distance==="euclidean"?OS:PS);let c=o(s.target,t);return i.set(n,c),c}return t}}});var tC,zq=ie(()=>{jq();tC={HNSW:LS}});var ht={};Re(ht,{NON_REPLICATING_SYSTEM_TABLES:()=>DS,database:()=>pd,databaseEnvs:()=>la,databaseEventsEmitter:()=>Rn,databases:()=>xe,dropDatabase:()=>Yw,dropTableMeta:()=>Kae,getDatabases:()=>dt,getDefaultCompression:()=>kS,getTables:()=>Gae,onRemovedDB:()=>rh,onRemovedTable:()=>Yae,onUpdatedTable:()=>Vl,readMetaDb:()=>Xp,resetDatabases:()=>xd,table:()=>je,tables:()=>yn});function th(e,t){let r=BS.OpenDBIObject??BS.default.OpenDBIObject;return new r(e,t)}function Gae(){return xS||dt(),yn||{}}function dt(){if(xS)return xe;xS=!0,Md=new Map;let e=(0,nr.getHdbBasePath)()&&(0,Yt.join)((0,nr.getHdbBasePath)(),nl),t=(0,nr.get)(U.DATABASES)||{};if(process.env.SCHEMAS_DATA_PATH&&(t.data={path:process.env.SCHEMAS_DATA_PATH}),e=process.env.STORAGE_PATH||(0,nr.get)(U.STORAGE_PATH)||e&&((0,Ts.existsSync)(e)?e:(0,Yt.join)((0,nr.getHdbBasePath)(),b_)),!!e){if((0,Ts.existsSync)(e))for(let r of(0,Ts.readdirSync)(e,{withFileTypes:!0})){let n=(0,Yt.basename)(r.name,".mdb");r.isFile()&&(0,Yt.extname)(r.name).toLowerCase()===".mdb"&&!t[n]?.path&&Xp((0,Yt.join)(e,r.name),null,n)}if((0,Ts.existsSync)((0,vd.getBaseSchemaPath)())){for(let r of(0,Ts.readdirSync)((0,vd.getBaseSchemaPath)(),{withFileTypes:!0}))if(!r.isFile()){let n=(0,Yt.join)((0,vd.getBaseSchemaPath)(),r.name),s=(0,Yt.join)((0,vd.getTransactionAuditStoreBasePath)(),r.name);for(let i of(0,Ts.readdirSync)(n,{withFileTypes:!0}))if(i.isFile()&&(0,Yt.extname)(i.name).toLowerCase()===".mdb"){let o=(0,Yt.join)(s,i.name);Xp((0,Yt.join)(n,i.name),(0,Yt.basename)(i.name,".mdb"),r.name,o,!0)}}}if(t)for(let r in t){let n=t[r],s=n.path;if((0,Ts.existsSync)(s))for(let o of(0,Ts.readdirSync)(s,{withFileTypes:!0}))o.isFile()&&(0,Yt.extname)(o.name).toLowerCase()===".mdb"&&Xp((0,Yt.join)(s,o.name),(0,Yt.basename)(o.name,".mdb"),r);let i=n.tables;if(i)for(let o in i){let c=i[o],l=(0,Yt.join)(c.path,(0,Yt.basename)(o+".mdb"));(0,Ts.existsSync)(l)&&Xp(l,o,r,null,!0)}}for(let r in xe){let n=Md.get(r);if(n){let s=xe[r];r.includes("delete")&&Lr.trace(`defined tables ${Array.from(n.keys())}`);for(let i in s)n.has(i)||(Lr.trace(`delete table class ${i}`),delete s[i])}else if(delete xe[r],r==="data"){for(let s in yn)delete yn[s];delete yn[FS]}}if((0,nr.get)(U.ANALYTICS_REPLICATE)===!1?DS.includes("hdb_analytics")||DS.push("hdb_analytics"):(xe.system?.hdb_analytics?.enableAuditing(),xe.system?.hdb_analytics_hostname?.enableAuditing()),xe.system)for(let r of DS)xe.system[r]&&(xe.system[r].replicate=!1);return Md=null,xe}}function xd(){xS=!1;for(let[,e]of la)e.needsDeletion=!0;dt();for(let[e,t]of la)if(t.needsDeletion&&!e.endsWith("system.mdb")){t.close(),la.delete(e);let r=xe[t.databaseName];for(let n in r)if(r[n].primaryStore.path===e){delete xe[t.databaseName],Rn.emit("dropDatabase",t.databaseName);break}}return xe}function Xp(e,t,r=sC,n,s){let i=new rC.default(e,!1);try{let o=la.get(e);o?o.needsDeletion=!1:(o=(0,Ud.open)(i),la.set(e,o));let c=new th(!1),l=o.dbisDb||(o.dbisDb=o.openDB(vS.INTERNAL_DBIS_NAME,c)),u=o.auditStore;u||(n?(0,Ts.existsSync)(n)&&(i.path=n,u=(0,Ud.open)(i),u.isLegacy=!0):u=og(o));let d=t$(r),f=d[FS],m=new Map;for(let{key:p,value:h}of l.getRange({start:!1})){let[E,_]=p.toString().split("/");_===""?_=h.name:_||(_=E,E=t,h.name||(h.name=_,h.indexed=!h.is_hash_attribute)),f?.add(E);let R=m.get(E);R||m.set(E,R={attributes:[]}),(_==null||h.is_hash_attribute)&&(R.primary=h),_!=null&&R.attributes.push(h),Object.defineProperty(h,"key",{value:p,configurable:!0})}for(let[p,h]of m){let{attributes:E,primary:_}=h;if(!_){for(let ae of E)if(ae.is_hash_attribute||ae.isPrimaryKey){_=ae;break}if(!_){Lr.warn(`Unable to find a primary key attribute on table ${p}, with attributes: ${JSON.stringify(E)}`);continue}}let R=d[p],S={},y=[],I,w,L=typeof _.audit=="boolean"?_.audit:(0,nr.get)(U.LOGGING_AUDITLOG),H=_.trackDeletes,Z=_.expiration,X=_.eviction,J=_.sealed,F=_.splitSegments,de=_.replicate;if(R)S=R.indices,y=R.attributes,R.schemaVersion++;else{I=_.tableId,I?I>=(l.get(Dd)||0)&&(l.putSync(Dd,I+1),Lr.info(`Updating next table id (it was out of sync) to ${I+1} for ${p}`)):(_.tableId=I=l.get(Dd),I||(I=1),Lr.debug("Table {tableName} missing an id, assigning {tableId}"),l.putSync(Dd,I+1),l.putSync(_.key,_));let ae=new th(!_.is_hash_attribute,_.is_hash_attribute);if(ae.compression=_.compression,ae.compression){let he=(0,nr.get)(U.STORAGE_COMPRESSION_THRESHOLD)||e$;ae.compression.threshold=he}w=Tg(o.openDB(_.key,ae),o),o.databaseName=r,w.tableId=I}let oe;for(let ae of E){ae.attribute=ae.name;try{if(!ae.is_hash_attribute&&(ae.indexed||ae.attribute&&!ae.name)){if(!S[ae.name]){let Te=n$(ae.key,o,ae);S[ae.name]=Te,S[ae.name].indexNulls=ae.indexNulls}let he=y.find(Te=>Te.name===ae.name);he?y.splice(y.indexOf(he),1,ae):y.push(ae),oe=!0}}catch(he){Lr.error("Error trying to update attribute",ae,y,S,he)}}for(let ae of y)if(!E.find(Te=>Te.name===ae.name)){if(ae.is_hash_attribute){Lr.error("Unable to remove existing primary key attribute",ae);continue}ae.indexed&&(y.splice(y.indexOf(ae),1),oe=!0)}R?oe&&(R.schemaVersion++,R.updatedAttributes()):(R=r$(d,p,CS({primaryStore:w,auditStore:u,audit:L,sealed:J,splitSegments:F,replicate:de,expirationMS:Z&&Z*1e3,evictionMS:X&&X*1e3,trackDeletes:H,tableName:p,tableId:I,primaryKey:_.name,databasePath:s?r+"/"+p:r,databaseName:r,indices:S,attributes:E,schemaDefined:_.schemaDefined,dbisDB:l})),R.schemaVersion=1,Rn.emit("updateTable",R))}return o}catch(o){throw o.message+=` opening database ${e}`,o}}function t$(e){let t=xe[e];if(t||(e==="data"?t=xe[e]=yn:e==="system"?Object.defineProperty(xe,"system",{value:t=Object.create(null),configurable:!0}):t=xe[e]=Object.create(null)),Md&&!Md.has(e)){let r=new Set;t[FS]=r,Md.set(e,r)}return t}function r$(e,t,r){return e[t]=r,r}function pd({database:e,table:t}){e||(e=sC),dt(),t$(e);let r=(0,Yt.join)((0,nr.getHdbBasePath)(),nl),n=(0,nr.get)(U.DATABASES)||{};process.env.SCHEMAS_DATA_PATH&&(n.data={path:process.env.SCHEMAS_DATA_PATH});let s=t&&n[e]?.tables?.[t]?.path;r=s||n[e]?.path||process.env.STORAGE_PATH||(0,nr.get)(U.STORAGE_PATH)||((0,Ts.existsSync)(r)?r:(0,Yt.join)((0,nr.getHdbBasePath)(),b_));let i=(0,Yt.join)(r,(s?t:e)+".mdb"),o=la.get(i);if(!o||o.status==="closed"){let c=new rC.default(i,!1);o=(0,Ud.open)(c),la.set(i,o)}return o.auditStore||(o.auditStore=og(o)),o}async function Yw(e){if(!xe[e])throw new Error("Schema does not exist");let t=xe[e],r;for(let n in t)r=t[n].primaryStore.rootStore,la.delete(r.path),r.status==="open"&&(await r.close(),await Zp.remove(r.path)),Rn.emit("dropTable",n,e);if(r||(r=pd({database:e,table:null}),r.status==="open"&&(await r.close(),await Zp.remove(r.path))),e==="data"){for(let n in yn)delete yn[n];delete yn[FS]}delete xe[e],Rn.emit("dropDatabase",e),await YA(r)}function n$(e,t,r){let n=r.is_hash_attribute||r.indexed.type&&tC[r.indexed.type]?.useObjectStore,s=new th(!n,n),i=t.openDB(e,s);if(r.indexed.type){let o=tC[r.indexed.type];o?i.customIndex=new o(i,r.indexed):Lr.error(`The indexing type '${r.indexed.type}' is unknown`)}return i}function je(e){let{table:t,database:r,expiration:n,eviction:s,scanInterval:i,attributes:o,audit:c,sealed:l,splitSegments:u,replicate:d,trackDeletes:f,schemaDefined:m,origin:p}=e;r||(r=sC);let h=pd({database:r,table:t}),E=xe[r];Lr.trace(`Defining ${t} in ${r}`);let _=E?.[t];if(h.status==="closed")throw new Error(`Can not use a closed data store for ${t}`);let R,S,y;m==null&&(m=!0);let I=new th(!1);for(let F of o)F.attribute&&!F.name?(F.name=F.attribute,F.indexed=!0):F.attribute=F.name,F.expiresAt&&(F.indexed=!0);let w,L;if(_){if(R=_.primaryKey,_.primaryStore.rootStore.status==="closed")throw new Error(`Can not use a closed data store from ${t} class`);u==null&&(u=_.splitSegments),_.attributes.splice(0,_.attributes.length,...o)}else{let F=h.auditStore;S=o.find(he=>he.isPrimaryKey)||{},R=S.name,S.is_hash_attribute=S.isPrimaryKey=!0,S.schemaDefined=m,S.compression=kS(),f&&(S.trackDeletes=!0),c=S.audit=typeof c=="boolean"?c:(0,nr.get)(U.LOGGING_AUDITLOG),n&&(S.expiration=n),s&&(S.eviction=s),u??=!1,S.splitSegments=u,typeof l=="boolean"&&(S.sealed=l),typeof d=="boolean"&&(S.replicate=d),p&&(S.origins?S.origins.includes(p)||S.origins.push(p):S.origins=[p]),Lr.trace(`${t} table loading, opening primary store`);let de=new th(!1,!0);de.compression=S.compression;let oe=t+"/";if(y=h.dbisDb=h.openDB(vS.INTERNAL_DBIS_NAME,I),J(),y.get(oe))return L&&L(),xd(),je(e);let ae=Tg(h.openDB(oe,de),h);h.databaseName=r,ae.tableId=y.get(Dd),Lr.trace(`Assigning new table id ${ae.tableId} for ${t}`),ae.tableId||(ae.tableId=1),y.put(Dd,ae.tableId+1),S.tableId=ae.tableId,_=r$(E,t,CS({primaryStore:ae,auditStore:F,audit:c,sealed:l,splitSegments:u,replicate:d,trackDeletes:f,expirationMS:n&&n*1e3,evictionMS:s&&s*1e3,primaryKey:R,tableName:t,tableId:ae.tableId,databasePath:r,databaseName:r,indices:{},attributes:o,schemaDefined:m,dbisDB:y})),_.schemaVersion=1,w=!0,y.put(oe,S)}let H=_.indices;y=y||(h.dbisDb=h.openDB(vS.INTERNAL_DBIS_NAME,I)),_.dbisDB=y;let Z=[];for(let{key:F,value:de}of y.getRange({start:!0})){let[oe,ae]=F.toString().split("/");if(ae===""&&(ae=de.name),ae){if(oe!==t)continue}else continue;let he=o.find(De=>De.name===ae),Te=!he?.indexed&&de.indexed&&!de.isPrimaryKey;if((!he||Te)&&(J(),w=!0,he||y.remove(F),Te)){let De=_.indices[oe];De&&Z.push(De)}}let X=[];try{for(let F of o||[]){if((F.relationship||F.computed)&&(w=!0,F.relationship))continue;let de=t+"/"+(F.name||"");Object.defineProperty(F,"key",{value:de,configurable:!0});let oe=y.get(de);if(F.isPrimaryKey){if(oe=oe||y.get(de=t+"/")||{},c!==void 0&&c!==_.audit||l!==void 0&&l!==_.sealed||d!==void 0&&d!==_.replicate||(+n||void 0)!==(+oe.expiration||void 0)||(+s||void 0)!==(+oe.eviction||void 0)||F.type!==oe.type){let he={...oe};typeof c=="boolean"&&(c&&_.enableAuditing(c),he.audit=c),n&&(he.expiration=+n),s&&(he.eviction=+s),l!==void 0&&(he.sealed=l),d!==void 0&&(he.replicate=d),F.type&&(he.type=F.type),w=!0,J(),y.put(de,he)}continue}oe?.attribute&&!oe.name&&(oe.indexed=!0);let ae=!oe||oe.type!==F.type||JSON.stringify(oe.indexed)!==JSON.stringify(F.indexed)||oe.nullable!==F.nullable||oe.version!==F.version||oe.enumerable!==F.enumerable||JSON.stringify(oe.properties)!==JSON.stringify(F.properties)||JSON.stringify(oe.elements)!==JSON.stringify(F.elements);if(F.indexed){let he=n$(de,h,F);(ae||oe.indexingPID&&oe.indexingPID!==process.pid||oe.restartNumber<eh.workerData?.restartNumber)&&(w=!0,J(),oe=y.get(de),(ae||oe.indexingPID&&oe.indexingPID!==process.pid||oe.restartNumber<eh.workerData?.restartNumber)&&(w=!0,F.indexNulls===void 0&&(F.indexNulls=!0),_.primaryStore.getStats().entryCount>0&&(F.lastIndexedKey=oe?.lastIndexedKey??void 0,F.indexingPID=process.pid,he.isIndexing=!0,Object.defineProperty(F,"dbi",{value:he}),X.push(F))),y.put(de,F)),oe?.indexNulls&&F.indexNulls===void 0&&(F.indexNulls=!0),he.indexNulls=F.indexNulls,H[F.name]=he}else ae&&(w=!0,J(),y.put(de,F))}}finally{L&&L()}return w&&(_.schemaVersion++,_.updatedAttributes()),Lr.trace(`${t} table loading, running index`),X.length>0||Z.length>0?_.indexingOperation=Vae(_,X,Z):w&&MS.signalSchemaChange(new US.SchemaEventMsg(process.pid,"schema-change",_.databaseName,_.tableName)),_.origin=p,w&&Rn.emit("updateTable",_,p!=="cluster"),(n||s||i)&&_.setTTLExpiration({expiration:n,eviction:s,scanInterval:i}),Lr.trace(`${t} table loaded`),_;function J(){L||h.transactionSync(()=>({then(F){L=F}}))}a(J,"startTxn")}async function Vae(e,t,r){try{Lr.info(`Indexing ${e.tableName} attributes`,t),await MS.signalSchemaChange(new US.SchemaEventMsg(process.pid,"schema-change",e.databaseName,e.tableName));let n;for(let l of r)n=l.drop();let s,i={},o=0,c=t.length;if(await new Promise(l=>setImmediate(l)),c>0){let l;for(let d of t)(0,Ud.compareKeys)(d.lastIndexedKey,l)<0&&(l=d.lastIndexedKey),d.lastIndexedKey==null&&d.dbi.clearAsync();let u=0;for(let{key:d,value:f,version:m}of e.primaryStore.getRange({start:l,lazy:c<4,versions:!0,snapshot:!1}))if(f){if(u++,n=e.primaryStore.ifVersion(d,m,()=>{for(let p=0;p<c;p++){let h=t[p],E=h.name,_=h.dbi;try{let R=h.resolve,S=f&&(R?R(f):f[E]);if(_.customIndex){_.customIndex.index(d,S);continue}let y=(0,Jq.getIndexedValues)(S,_.indexNulls);if(y)for(let I=0,w=y.length;I<w;I++)_.put(y[I],d)}catch(R){i[E]||(i[E]=!0,Lr.error(`Error indexing attribute ${E}`,R))}}}),n.then(()=>u--,p=>{u--,Lr.error(p)}),eh.workerData&&eh.workerData.restartNumber!==Zq.restartNumber&&(s=!0),++o%100===0||s){for(let p of t)p.lastIndexedKey=d,e.dbisDB.put(p.key,p);if(s)return}u>qae?await n:u>$ae&&await new Promise(p=>setImmediate(p))}for(let d of t)delete d.lastIndexedKey,delete d.indexingPID,d.dbi.isIndexing=!1,n=e.dbisDB.put(d.key,d)}await n,await MS.signalSchemaChange(new US.SchemaEventMsg(process.pid,"indexing-finished",e.databaseName,e.tableName)),Lr.info(`Finished indexing ${e.tableName} attributes`,t)}catch(n){Lr.error("Error in indexing",n)}}function Kae({table:e,database:t}){let r=pd({database:t,table:e}),n=[],s=r.dbisDb;for(let i of s.getKeys({start:e+"/",end:e+"0"}))n.push(s.remove(i));return Rn.emit("dropTable",e,t),Promise.all(n)}function Vl(e){return Rn.on("updateTable",e),{remove(){Rn.off("updateTable",e)}}}function Yae(e){return Rn.on("dropTable",e),{remove(){Rn.off("dropTable",e)}}}function rh(e){return Rn.on("dropDatabase",e),{remove(){Rn.off("dropDatabase",e)}}}function kS(){let e=(0,nr.get)(U.STORAGE_COMPRESSION),t=(0,nr.get)(U.STORAGE_COMPRESSION_DICTIONARY),r=(0,nr.get)(U.STORAGE_COMPRESSION_THRESHOLD)||e$,n={startingOffset:32};return t&&(n.dictionary=Zp.readFileSync(t)),r&&(n.threshold=r),e&&n}var Qq,nr,vS,Ud,Yt,Ts,vd,rC,Zp,nC,Jq,MS,US,eh,Xq,Zq,BS,Hae,Lr,sC,FS,e$,DS,Rn,yn,xe,Dd,xS,la,Md,qae,$ae,Oe=ie(()=>{Qq=require("node:events"),nr=b(fe()),vS=b(Cr()),Ud=require("lmdb"),Yt=require("path"),Ts=require("fs"),vd=b(tr());Ig();rC=b(ap());$();Zp=b(require("fs-extra")),nC=b(di()),Jq=b(Ms()),MS=b(na()),US=b(us()),eh=require("worker_threads"),Xq=b(ee()),Zq=b(it());$i();pl();os();zq();BS=b(op()),{forComponent:Hae}=Xq.default;a(th,"OpenDBIObject");Lr=Hae("storage"),sC="data",FS=Symbol("defined-tables"),e$=((0,nr.get)(U.STORAGE_PAGESIZE)||4096)-60;(0,nr.initSync)();DS=["hdb_temp","hdb_certificate","hdb_raw_analytics","hdb_session_will","hdb_job","hdb_info"],Rn=new Qq.EventEmitter,yn=Object.create(null),xe=Object.create(null);(0,nC._assignPackageExport)("databases",xe);(0,nC._assignPackageExport)("tables",yn);Dd=Symbol.for("next-table-id"),la=new Map;a(Gae,"getTables");a(dt,"getDatabases");a(xd,"resetDatabases");a(Xp,"readMetaDb");a(t$,"ensureDB");a(r$,"setTable");a(pd,"database");a(Yw,"dropDatabase");a(n$,"openIndex");a(je,"table");qae=1e3,$ae=10;a(Vae,"runIndexing");a(Kae,"dropTableMeta");a(Vl,"onUpdatedTable");a(Yae,"onRemovedTable");a(rh,"onRemovedDB");a(kS,"getDefaultCompression")});var ue=x(Ne=>{"use strict";var Sc=require("path"),c$=require("fs-extra"),jn=ee(),s$=require("fs-extra"),HS=require("os"),Wae=require("net"),jae=require("recursive-iterator"),Dr=($(),P(z)),{PACKAGE_ROOT:zae}=Dt(),i$=require("papaparse"),GS=require("moment"),{inspect:Qae}=require("util"),o$=require("is-number"),Jae=require("minimist"),Xae=require("https"),Zae=require("http"),ece=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,tce=require("util").promisify(setTimeout),rce="",nce=4,a$={true:!0,TRUE:!0,FALSE:!1,false:!1,undefined:null,null:null,NULL:null,NaN:NaN};Ne.isEmpty=ys;Ne.isEmptyOrZeroLength=lo;Ne.arrayHasEmptyValues=oce;Ne.arrayHasEmptyOrZeroLengthValues=ace;Ne.buildFolderPath=cce;Ne.isBoolean=l$;Ne.errorizeMessage=sce;Ne.stripFileExtension=uce;Ne.autoCast=dce;Ne.autoCastJSON=u$;Ne.autoCastJSONDeep=oC;Ne.removeDir=fce;Ne.compareVersions=mce;Ne.isCompatibleDataVersion=pce;Ne.escapeRawValue=hce;Ne.unescapeValue=Ece;Ne.stringifyProps=_ce;Ne.timeoutPromise=Sce;Ne.isClusterOperation=yce;Ne.getClusterUser=bce;Ne.checkGlobalSchemaTable=Rce;Ne.getHomeDir=f$;Ne.getPropsFilePath=gce;Ne.promisifyPapaParse=Ace;Ne.removeBOM=m$;Ne.createEventPromise=Ice;Ne.checkSchemaTableExist=wce;Ne.checkSchemaExists=p$;Ne.checkTableExists=h$;Ne.getStartOfTomorrowInSeconds=Nce;Ne.getLimitKey=Cce;Ne.isObject=lce;Ne.isNotEmptyAndHasValue=ice;Ne.autoCasterIsNumberCheck=d$;Ne.backtickASTSchemaItems=Oce;Ne.isPortTaken=Tce;Ne.createForkArgs=Pce;Ne.autoCastBoolean=Lce;Ne.autoCastBooleanStrict=Dce;Ne.asyncSetTimeout=tce;Ne.getTableHashAttribute=vce;Ne.doesSchemaExist=Mce;Ne.doesTableExist=Uce;Ne.stringifyObj=xce;Ne.ms_to_time=Bce;Ne.changeExtension=Fce;Ne.getEnvCliRootPath=aC;Ne.noBootFile=kce;Ne.httpRequest=Hce;Ne.transformReq=Gce;Ne.convertToMS=qce;Ne.PACKAGE_ROOT=zae;function sce(e){return e instanceof Error?e:new Error(e)}a(sce,"errorizeMessage");function ys(e){return e==null}a(ys,"isEmpty");function ice(e){return!ys(e)&&(e||e===0||e===""||l$(e))}a(ice,"isNotEmptyAndHasValue");function lo(e){return ys(e)||e.length===0||e.size===0}a(lo,"isEmptyOrZeroLength");function oce(e){if(ys(e))return!0;for(let t=0;t<e.length;t++)if(ys(e[t]))return!0;return!1}a(oce,"arrayHasEmptyValues");function ace(e){if(lo(e))return!0;for(let t=0;t<e.length;t++)if(lo(e[t]))return!0;return!1}a(ace,"arrayHasEmptyOrZeroLengthValues");function cce(...e){try{return e.join(Sc.sep)}catch{console.error(e)}}a(cce,"buildFolderPath");function l$(e){return ys(e)?!1:e===!0||e===!1}a(l$,"isBoolean");function lce(e){return ys(e)?!1:typeof e=="object"}a(lce,"isObject");function uce(e){return lo(e)?rce:e.slice(0,-nce)}a(uce,"stripFileExtension");function dce(e){return ys(e)||e===""||typeof e!="string"?e:a$[e]!==void 0?a$[e]:d$(e)===!0?Number(e):ece.test(e)?new Date(e):e}a(dce,"autoCast");function u$(e){if(typeof e=="string"&&(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")))try{return JSON.parse(e)}catch{}return e}a(u$,"autoCastJSON");function oC(e){if(e&&typeof e=="object"){if(Array.isArray(e))for(let t=0,r=e.length;t<r;t++){let n=e[t],s=oC(n);s!==n&&(e[t]=s)}else for(let t in e){let r=e[t],n=oC(r);n!==r&&(e[t]=n)}return e}else return u$(e)}a(oC,"autoCastJSONDeep");function d$(e){if(e.startsWith("0.")&&o$(e))return!0;let t=e.toUpperCase().includes("E");return!!((e!=="0"&&e.startsWith("0"))===!1&&t===!1&&o$(e))}a(d$,"autoCasterIsNumberCheck");async function fce(e){if(lo(e))throw new Error(`Directory path: ${e} does not exist`);try{await s$.emptyDir(e),await s$.remove(e)}catch(t){throw jn.error(`Error removing files in ${e} -- ${t}`),t}}a(fce,"removeDir");function mce(e,t){if(lo(e)){jn.info("Invalid current version sent as parameter.");return}if(lo(t)){jn.info("Invalid upgrade version sent as parameter.");return}let r,n=/(\.0+)+$/,s=e.version?e.version:e,i=t.version?t.version:t,o=s.replace(n,"").split("."),c=i.replace(n,"").split("."),l=Math.min(o.length,c.length);for(let u=0;u<l;u++)if(r=parseInt(o[u],10)-parseInt(c[u],10),r)return r;return o.length-c.length}a(mce,"compareVersions");function pce(e,t,r=!1){let n=e.toString().split("."),s=t.toString().split(".");return n[0]===s[0]&&(!r||n[1]===s[1])}a(pce,"isCompatibleDataVersion");function hce(e){if(ys(e))return e;let t=String(e);return t==="."?Dr.UNICODE_PERIOD:t===".."?Dr.UNICODE_PERIOD+Dr.UNICODE_PERIOD:t.replace(Dr.FORWARD_SLASH_REGEX,Dr.UNICODE_FORWARD_SLASH)}a(hce,"escapeRawValue");function Ece(e){if(ys(e))return e;let t=String(e);return t===Dr.UNICODE_PERIOD?".":t===Dr.UNICODE_PERIOD+Dr.UNICODE_PERIOD?"..":String(e).replace(Dr.ESCAPED_FORWARD_SLASH_REGEX,"/")}a(Ece,"unescapeValue");function _ce(e,t){if(ys(e))return jn.info("Properties object is null"),"";let r="";return e.each(function(n,s){try{if(t&&t[n]){let i=t[n];for(let o of i)r+=";"+o+HS.EOL}!lo(n)&&n[0]===";"?r+=" "+n+s+HS.EOL:lo(n)||(r+=n+"="+s+HS.EOL)}catch{jn.error(`Found bad property during upgrade with key ${n} and value: ${s}`)}}),r}a(_ce,"stringifyProps");function f$(){let e;try{e=HS.homedir()}catch{e=process.env.HOME}return e}a(f$,"getHomeDir");function gce(){let e=Sc.join(f$(),Dr.HDB_HOME_DIR_NAME,Dr.BOOT_PROPS_FILE_NAME);return c$.existsSync(e)||(e=Sc.join(__dirname,"../","hdb_boot_properties.file")),e}a(gce,"getPropsFilePath");function Sce(e,t){let r,n;return n=new Promise(function(s){r=setTimeout(function(){s(t)},e)}),{promise:n,cancel:a(function(){clearTimeout(r)},"cancel")}}a(Sce,"timeoutPromise");async function Tce(e){if(!e)throw new Error("Invalid port passed as parameter");return new Promise((t,r)=>{let n=Wae.createServer().once("error",s=>{s.code==="EADDRINUSE"?t(!0):r(s)}).once("listening",()=>n.once("close",()=>t(!1)).close()).listen(e)})}a(Tce,"isPortTaken");function yce(e){try{return Dr.CLUSTER_OPERATIONS[e.toLowerCase()]!==void 0}catch(t){jn.error(`Error checking operation against cluster ops ${t}`)}return!1}a(yce,"isClusterOperation");function Rce(e,t){let r=(Oe(),P(ht)).getDatabases();if(!r[e])return qS.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e);if(!r[e][t])return qS.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}a(Rce,"checkGlobalSchemaTable");function bce(e,t){if(ys(t)){jn.warn("No CLUSTERING_USER defined, clustering disabled");return}if(ys(e)||lo(e)){jn.warn("No users to search.");return}let r;try{let n=e.get(t);n&&n.role.permission.cluster_user===!0&&n.active===!0&&(r=n)}catch(n){jn.error(`unable to find cluster_user due to: ${n.message}`);return}if(r===void 0){jn.warn(`CLUSTERING_USER: ${t} not found or is not active.`);return}return r}a(bce,"getClusterUser");function Ace(){i$.parsePromise=function(e,t,r){return new Promise(function(n,s){i$.parse(e,{header:!0,transformHeader:m$,chunk:t.bind(null,s),skipEmptyLines:!0,transform:r,dynamicTyping:!1,error:s,complete:n})})}}a(Ace,"promisifyPapaParse");function m$(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.charCodeAt(0)===65279?e.slice(1):e}a(m$,"removeBOM");function Ice(e,t,r){return new Promise(n=>{t.once(e,s=>{let i=r;jn.info(`Got cluster status event response: ${Qae(s)}`);try{i.cancel()}catch{jn.error("Error trying to cancel timeout.")}n(s)})})}a(Ice,"createEventPromise");function wce(e,t){let r=p$(e);if(r)return r;let n=h$(e,t);if(n)return n}a(wce,"checkSchemaTableExist");function p$(e){let{getDatabases:t}=(Oe(),P(ht));if(!t()[e])return qS.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}a(p$,"checkSchemaExists");function h$(e,t){let{getDatabases:r}=(Oe(),P(ht));if(!r()[e][t])return qS.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}a(h$,"checkTableExists");function Nce(){let e=GS().utc().add(1,"d").startOf("d").unix(),t=GS().utc().unix();return e-t}a(Nce,"getStartOfTomorrowInSeconds");function Cce(){return GS().utc().format("DD-MM-YYYY")}a(Cce,"getLimitKey");function Oce(e){try{let t=new jae(e);for(let{node:r}of t)r&&(r.columnid&&typeof r.columnid!="string"&&(r.columnid=r.columnid.toString()),r.columnid&&!r.columnid.startsWith("`")&&(r.columnid_orig=r.columnid,r.columnid=`\`${r.columnid}\``),r.tableid&&!r.tableid.startsWith("`")&&(r.tableid_orig=r.tableid,r.tableid=`\`${r.tableid}\``),r.databaseid&&!r.databaseid.startsWith("`")&&(r.databaseid_orig=r.databaseid,r.databaseid=`\`${r.databaseid}\``),r.as&&typeof r.as=="string"&&!r.as.startsWith("[")&&(r.as_orig=r.as,r.as=`\`${r.as}\``))}catch(t){jn.error("Got an error back ticking items."),jn.error(t)}}a(Oce,"backtickASTSchemaItems");function Pce(e){return[e]}a(Pce,"createForkArgs");function Lce(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}a(Lce,"autoCastBoolean");function Dce(e){if(typeof e=="string"){let t=e.toLowerCase();if(t==="true")return!0;if(t==="false")return!1}return e}a(Dce,"autoCastBooleanStrict");function vce(e,t){let{getDatabases:r}=(Oe(),P(ht)),n=r()[e]?.[t];return n?.primaryKey||n?.hash_attribute}a(vce,"getTableHashAttribute");function Mce(e){let{getDatabases:t}=(Oe(),P(ht));return t()[e]!==void 0}a(Mce,"doesSchemaExist");function Uce(e,t){let{getDatabases:r}=(Oe(),P(ht));return r()[e]?.[t]!==void 0}a(Uce,"doesTableExist");function xce(e){try{return JSON.stringify(e)}catch{return e}}a(xce,"stringifyObj");function Bce(e){let t=GS.duration(e),r=t.seconds()>0?t.seconds()+"s":"",n=t.minutes()>0?t.minutes()+"m ":"",s=t.hours()>0?t.hours()+"h ":"",i=t.days()>0?t.days()+"d ":"";return(t.years()>0?t.years()+"y ":"")+i+s+n+r}a(Bce,"ms_to_time");function Fce(e,t){let r=Sc.basename(e,Sc.extname(e));return Sc.join(Sc.dirname(e),r+t)}a(Fce,"changeExtension");function aC(){if(process.env[Dr.CONFIG_PARAMS.ROOTPATH.toUpperCase()])return process.env[Dr.CONFIG_PARAMS.ROOTPATH.toUpperCase()];let e=Jae(process.argv);if(e[Dr.CONFIG_PARAMS.ROOTPATH.toUpperCase()])return e[Dr.CONFIG_PARAMS.ROOTPATH.toUpperCase()]}a(aC,"getEnvCliRootPath");var iC;function kce(){if(iC)return iC;let e=aC();if(aC()&&c$.pathExistsSync(Sc.join(e,Dr.HDB_CONFIG_FILE)))return iC=!0,!0}a(kce,"noBootFile");function Hce(e,t){let r;return e.protocol==="http:"?r=Zae:r=Xae,new Promise((n,s)=>{let i=r.request(e,o=>{o.setEncoding("utf8"),o.body="",o.on("data",c=>{o.body+=c}),o.on("end",()=>{n(o)})});i.on("error",o=>{s(o)}),i.write(t instanceof Buffer?t:JSON.stringify(t)),i.end()})}a(Hce,"httpRequest");function Gce(e){if(!e.schema&&!e.database){e.schema=Dr.DEFAULT_DATABASE_NAME;return}e.database&&(e.schema=e.database)}a(Gce,"transformReq");function qce(e){let t=0;if(typeof e=="number"&&(t=e),typeof e=="string")switch(t=parseFloat(e),e.slice(-1)){case"M":t*=86400*30;break;case"D":case"d":t*=86400;break;case"H":case"h":t*=3600;break;case"m":t*=60;break}return t*1e3}a(qce,"convertToMS");var qS=En()});var y$=x((TUe,T$)=>{"use strict";var{promises:Bd,createReadStream:$ce,createWriteStream:Vce}=require("fs"),{createGzip:Kce}=require("zlib"),{promisify:Yce}=require("util"),{pipeline:Wce}=require("stream"),jce=Yce(Wce),lC=require("path"),S$=fe();S$.initSync();var $S=ee(),{CONFIG_PARAMS:zce}=($(),P(z)),{convertToMS:E$}=ue(),{onStorageReclamation:Qce}=(ng(),P(Jx)),Jce=6e4,Xce="'interval' and 'maxSize' are both undefined, to enable logging rotation at least one of these values must be defined in harperdb-config.yaml",Zce="'logging.rotation.path' is undefined, to enable logging rotation set this value in harperdb-config.yaml",cC,_$;T$.exports=ele;function ele({logger:e,maxSize:t,interval:r,retention:n,enabled:s,path:i,auditInterval:o}){if(s===!1)return;let c=0;if(Qce(e.path,f=>{c=f},!0),!t&&!r)throw new Error(Xce);if(!i)throw new Error(Zce);let l;if(t){let f=t.slice(-1),m=t.slice(0,-1);f==="G"?l=m*1e9:f==="M"?l=m*1e6:l=m*1e3}let u;r&&(u=E$(r));let d;return cC=Date.now(),$S.trace("Log rotate enabled, maxSize:",t,"interval:",r),_$=setInterval(async()=>{if(l){let f;f=await Bd.stat(e.path),f.size>=l&&(d=await g$(e.path,i))}if(u&&Date.now()-cC>=u&&(d=await g$(e.path,i),cC=Date.now()),n||c){let f=E$(n??"1M")/(1+c);c=0;let m=await Bd.readdir(i);for(let p of m)try{let h=await Bd.stat(lC.join(i,p));Date.now()-h.mtimeMs>f&&await Bd.unlink(lC.join(i,p))}catch(h){$S.error("Error trying to remove log",p,h)}}},o??Jce).unref(),{end(){clearInterval(_$)},getLastRotatedLogPath(){return d}}}a(ele,"logRotator");async function g$(e,t){let r=S$.get(zce.LOGGING_ROTATION_COMPRESS),n=lC.join(t,`HDB-${new Date(Date.now()).toISOString().replaceAll(":","-")}.log`);return await Bd.rename(e,n),r&&(e=n,n+=".gz",await jce($ce(e),Kce(),Vce(n)),await Bd.unlink(e)),$S.closeLogFile(),$S.notify(`hdb.log rotated, old log moved to ${n}`),n}a(g$,"moveLogFile")});var w$={};Re(w$,{RootConfigWatcher:()=>uC});var R$,b$,A$,VS,I$,uC,N$=ie(()=>{R$=b(require("chokidar")),b$=require("node:fs/promises"),A$=b(Nt()),VS=require("node:stream"),I$=require("yaml"),uC=class extends VS.EventEmitter{static{a(this,"RootConfigWatcher")}#e;#t;#r;ready;constructor(){super(),this.#e=(0,A$.getConfigFilePath)(),this.ready=(0,VS.once)(this,"ready"),this.#t=R$.default.watch(this.#e,{persistent:!1}).on("add",this.handleChange.bind(this)).on("change",this.handleChange.bind(this)).on("error",this.handleError.bind(this))}handleError(t){this.emit("error",t)}handleChange(){(0,b$.readFile)(this.#e,"utf-8").then(t=>{if(!t)return;let r=(0,I$.parse)(t);if(!this.#r){this.#r=r,this.emit("ready",this.#r);return}this.emit("change",this.#r=r)}).catch(t=>{})}close(){return this.#t.close(),this.#r=void 0,this.emit("close"),this.removeAllListeners(),this}get config(){return this.#r}}});var ee=x((AUe,XS)=>{"use strict";var ua=require("fs-extra"),{workerData:tle,threadId:rle,isMainThread:v$}=require("worker_threads"),ih=require("path"),M$=require("yaml"),U$=require("properties-reader"),Yr=($(),P(z)),C$=Hu(),nle=require("os"),{PACKAGE_ROOT:x$}=Dt(),{_assignPackageExport:sle}=di(),{Console:ile}=require("console"),fC=process.env.IS_SCRIPTED_SERVICE?function(){}:process.stdout.nativeWrite||(process.stdout.nativeWrite=process.stdout.write),O$=new Map,{join:Tc}=ih,P$=1e4,cr={notify:7,fatal:6,error:5,warn:4,info:3,debug:2,trace:1},ole={STDOUT:"stdOut",STDERR:"stdErr"},ale=Tc(x$,"config/yaml/",Yr.HDB_DEFAULT_CONFIG_FILE),cle=1e4,oh,ah,KS,B$,uo,mC,dC,WS,Ut,zn,jS,zS,Fd,sh,nh;function YS(e,t,r){e.rotation=t.rotation;let n=t.path;n?t.root||(t.root=ih.dirname(n)):t.root?n=Tc(t.root,mC):(n=Ut.path,t.root||(t.root=ih.dirname(n))),n?e.path=n:console.error("No path for logger",t),e.level=cr[t.level]??Ut?.level??cr.info,F$(e),e.logToStdstreams=t.stdStreams??!1,e.tag=t.tag??(Ut.path===e.path&&r)}a(YS,"updateLogger");function F$(e){let t=e.conditional??(e.conditional={});t.notify=cr.notify>=e.level?e.notify.bind(e):void 0,t.fatal=cr.fatal>=e.level?e.fatal.bind(e):void 0,t.error=cr.error>=e.level?e.error.bind(e):void 0,t.warn=cr.warn>=e.level?e.warn.bind(e):void 0,t.info=cr.info>=e.level?e.info.bind(e):void 0,t.debug=cr.debug>=e.level?e.debug.bind(e):void 0,t.trace=cr.trace>=e.level?e.trace.bind(e):void 0}a(F$,"updateConditional");async function pC(){nh||(nh=new Cle,await nh.ready,nh.on("change",pC));let e=nh.config,t=e.logging??{};YS(Ut,t),WS=Ut.path,oh=t.console??!1,t.external&&YS(zn,t.external);for(let r in e){let n=e[r];n.logging?YS(Ut.forComponent(r),n.logging,r):Ut.hasComponent(r)&&YS(Ut.forComponent(r),t,r)}}a(pC,"updateLogSettings");var hC=class extends ile{static{a(this,"HarperLogger")}constructor(t,r){t.stdout.removeListener=()=>{},t.stderr.removeListener=()=>{},t.stdout.listenerCount=()=>{},t.stderr.listenerCount=()=>{},super(t),this.level=r}trace(...t){bn="trace",this.level<=cr.trace&&super.info(...t),bn="info"}debug(...t){bn="debug",this.level<=cr.debug&&super.info(...t),bn="info"}info(...t){bn="info",this.level<=cr.info&&super.info(...t),bn="info"}warn(...t){bn="warn",this.level<=cr.warn&&super.warn(...t),bn="info"}error(...t){bn="error",this.level<=cr.error&&super.error(...t),bn="info"}fatal(...t){Fd=!0;try{bn="fatal",this.level<=cr.fatal&&super.error(...t),bn="info"}finally{Fd=!1}}notify(...t){Fd=!0;try{bn="notify",this.level<=cr.notify&&super.info(...t),bn="info"}finally{Fd=!1}}withTag(t){return H$(t,!0,this)}forComponent(t){return this}hasComponent(t){return!1}};sh===void 0&&k$();XS.exports={notify:_le,fatal:gle,error:_C,warn:Sle,info:ple,debug:Ele,trace:hle,logLevel:uo,loggerWithTag:H$,suppressLogging:fle,initLogSettings:k$,logCustomLevel:Tle,closeLogFile:G$,createLogger:JS,logsAtLevel:ule,getLogFilePath:a(()=>WS,"getLogFilePath"),forComponent:a(e=>Ut.forComponent(e),"forComponent"),setMainLogger:wle,setLogLevel:Rle,OUTPUTS:ole,AuthAuditLog:Nle,start:pC,startOnMainThread:pC,errorToString:Ile,disableStdio:lle};function lle(){fC=a(function(){},"nativeStdWrite")}a(lle,"disableStdio");XS.exports.externalLogger={notify(...e){zn.notify(...e)},fatal(...e){zn.fatal(...e)},error(...e){zn.error(...e)},warn(...e){zn.warn(...e)},info(...e){zn.info(...e)},debug(...e){zn.debug(...e)},trace(...e){zn.trace(...e)},withTag(e){return zn.withTag(e)},loggerWithTag(e){return zn.withTag(e)}};sle("logger",XS.exports.externalLogger);function ule(e){return cr[uo]<=cr[e]}a(ule,"logsAtLevel");function k$(e=!1){try{if(sh===void 0||e){G$();let t=yle(),r=C$(["ROOTPATH"]);try{sh=U$(t)}catch(s){if(!r.ROOTPATH||r.ROOTPATH&&!ua.pathExistsSync(Tc(r.ROOTPATH,Yr.HDB_CONFIG_FILE)))throw s}let n;if({level:uo,configLogPath:dC,toFile:ah,logConsole:oh,colorMode:B$,rotation:n,toStream:KS}=ble(r.ROOTPATH?Tc(r.ROOTPATH,Yr.HDB_CONFIG_FILE):sh.get("settings_path")),mC=Yr.LOG_NAMES.HDB,WS=Tc(dC,mC),Ut=JS({path:WS,level:uo,stdStreams:KS,rotation:n}),zn=Ut.forComponent("external"),zn.tag=null,v$)try{require("segfault-handler").registerHandler(Tc(dC,"crash.log"))}catch{}}}catch(t){if(sh=void 0,t.code===Yr.NODE_ERROR_CODES.ENOENT||t.code===Yr.NODE_ERROR_CODES.ERR_INVALID_ARG_TYPE){let r=C$(Object.keys(Yr.CONFIG_PARAM_MAP),!0);for(let s in r){let i=Yr.CONFIG_PARAM_MAP[s];i&&i.toLowerCase();let o=r[s];if(i===Yr.CONFIG_PARAMS.LOGGING_LEVEL){uo=o;continue}i===Yr.CONFIG_PARAMS.LOGGING_CONSOLE&&(oh=i)}let{defaultLevel:n}=Ale();ah=!1,KS=!0,uo=uo===void 0?n:uo,Ut=JS({level:uo}),zn=Ut.forComponent("external"),zn.tag=null;return}throw _C("Error initializing log settings"),_C(t),t}process.env.DEV_MODE&&(KS=!0),dle()}a(k$,"initLogSettings");var yc=!0;function dle(){ah&&(process.stdout.write=function(e){return typeof e=="string"&&yc&&oh&&(e=e.toString(),e[e.length-1]===`