harperdb 4.6.1 → 4.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/harperdb.js CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  `:`data: ${e}
11
11
 
12
- `},"serialize"),compressible:!1,q:.8});sn.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()}});CU={type:"application/json",serializeStream:Im,serialize:wm,deserialize:v8,q:.5};sn.set("*/*",CU);sn.set("",CU);o(v8,"tryJSONParse");o(Cm,"registerContentHandlers");U8=(0,wU.default)(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:a,type:c}=OE(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&a.serializeStream){if(l.mapError){let d=l.getColumns;l=l.mapError(f=>(f.toJSON=()=>({error:f.name,message:f.message,...f.partialObject}),f)),l.getColumns=d}u=a.serializeStream}else u=a.serialize;return u(l,{headers:{set:o((d,f)=>{s.header(d,f)},"set")}})})}),r()},{name:"content-type-negotiation"});o(OE,"findBestSerializer");yU=nb.default.get(U.HTTP_COMPRESSIONTHRESHOLD);o(Pm,"serialize");o(Ba,"serializeMessage");o(ab,"asyncSerialization");o(cb,"hasAsyncSerialization");o(x8,"streamToBuffer");B8=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];o(F8,"isBufferEncoding");o(H8,"parseContentType");o(Co,"getDeserializer");o(k8,"deserializerUnknownType");o(q8,"transformIterable");o(wE,"toCsvStream")});var mb={};Ce(mb,{Blob:()=>Os,blobsWereEncoded:()=>ol,databasePaths:()=>ub,decodeBlobsWithWrites:()=>BE,decodeFromDatabase:()=>al,decodeWithBlobCallback:()=>FE,deleteBlob:()=>vE,deleteBlobsInObject:()=>Fa,deleteRootBlobPathsForDB:()=>fb,encodeBlobsAsBuffers:()=>Q8,encodeBlobsWithFilePath:()=>xE,findBlobsInObject:()=>Gu,getFileId:()=>UE,getFilePathForBlob:()=>kU,getRootBlobPathsForDB:()=>vm,setDeletionDelay:()=>K8});function BU(){}function vE(e){let t=kU(e);t&&setTimeout(()=>{(0,Ze.unlink)(t,r=>{r&&Do.default.debug?.("Error trying to remove blob file",r)})},FU)}function K8(e){FU=e}function HU(e){let t=Pn.get(e);if(!t)t={storageIndex:0,fileId:null,store:Dn},Pn.set(e,t);else{if(t.saving)return t;t.store=Dn}return W8(t),t.source?lb(e,t.source,t):t.contentBuffer?Y8(e,t):lb(e,Lm.Readable.from(e.stream()),t),t}function lb(e,t,r){let{filePath:n,fileId:s,store:i,compress:a,flush:c}=r;return r.saving=new Promise((l,u)=>{let d=s+":blob";if(!i.attemptLock(d,0))throw new Error(`Unable to get lock for blob file ${s}`);let f=(0,Ze.createWriteStream)(n,{autoClose:!1,flags:"w"});if(t.errored){let g=Buffer.from(t.errored.toString());f.end(Buffer.concat([p(BigInt(g.length)+0xff000000000000n),g]));return}let m=!1;e.size!==void 0&&(f.write(p(e.size)),m=!0);let h;a?(m||f.write($8),h=(0,LE.createDeflate)(),t.pipe(h).pipe(f)):(m||f.write(G8),t.pipe(f)),t.on("error",E);function p(g){let y=BigInt(g),T=new Uint8Array(Ar),R=new DataView(T.buffer);return y|=BigInt(a?db:xU)<<48n,R.setBigInt64(0,y),T}o(p,"createHeader");function E(g){i.unlock(d,0);let y=f.fd;g?(y&&(0,Ze.close)(y),u(g)):c?(0,Ze.fdatasync)(y,T=>{T&&u(T),l(),(0,Ze.close)(y)}):(l(),(0,Ze.close)(y))}o(E,"finished"),f.on("error",E).on("finish",()=>{if(m)E();else{let g=h?h.bytesWritten:f.bytesWritten-Ar;e.size=g,(0,Ze.write)(f.fd,p(g),0,Ar,0,E)}})}),e}function UE(e){return Pn.get(e)?.fileId}function kU(e){let t=Pn.get(e);return t?.fileId&&Mm(t)}function vm(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=ub.get(e);if(!t){if(!e.databaseName)return Do.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,ME.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,Mo.join)(n,e.databaseName)):t=[(0,Mo.join)((0,ME.getHdbBasePath)(),"blobs",e.databaseName)],ub.set(e,t)}return t}async function fb(e){let t=vm(e);t&&await Promise.all(t.map(r=>qU(r)))}async function qU(e){if((0,Ze.existsSync)(e)){for(let t of await(0,li.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await qU((0,Mo.join)(e,t.name));else try{await(0,li.unlink)((0,Mo.join)(e,t.name))}catch(r){Do.default.warn?.("Error deleting file",r)}try{await(0,li.rmdir)(e)}catch(t){Do.default.warn?.("Error deleting directory",t)}}}function Mm({storageIndex:e,fileId:t,store:r}){let n=vm(r);return(0,Mo.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 Y8(e,t){let r=t.contentBuffer,n=r.length;if(!(n<UU))return e.size=n,lb(e,Lm.Readable.from([r]),t)}function W8(e){let t=vm(e.store),r=z8(),n=t?.length>1?j8(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Mm(e),a=(0,Mo.dirname)(i);(0,Ze.existsSync)(a)||(0,vU.ensureDirSync)(a),e.filePath=i}function z8(){let e=MU.get(Dn);if(!e){let t=0,r=vm(Dn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let a=0;if((0,Ze.existsSync)(n))for(let c of(0,Ze.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>a&&(a=l)}s+=a,n=(0,Mo.join)(n,a.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(Dn.getUserSharedBuffer("blob-file-id",e.buffer)),MU.set(Dn,e)}return Number(Atomics.add(e,0,1n))}function j8(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(DE);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,J8(e)),e.frequencyTable[t%DE]}async function J8(e){if(!li.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let a=await(0,li.statfs)(s),c=a.bavail*a.bsize;return Math.pow(c,.8)})),r=new Array(DE),n=t.map(s=>1/s);for(let s=0;s<DE;s++){let i=1/0,a=0;for(let c=0;c<n.length;c++)n[c]<i&&(a=c,i=n[c]);n[a]+=1/t[a],r[s]=a}e.frequencyTable=r}function xE(e,t,r){qu=t,Dn=r,ol=!1;try{return e()}finally{qu=void 0,Dn=void 0}}function Q8(e){Vr=[];let t;try{t=e()}catch(n){throw Vr=void 0,n}let r=Vr.length<2?Vr[0]:Promise.all(Vr);return Vr=void 0,r?r.then(()=>e()):t}function BE(e,t){try{Vr=[],il=t,e()}catch(n){throw il=void 0,Vr=void 0,n}il=void 0;let r=Vr.length<2?Vr[0]:Promise.all(Vr);return Vr=void 0,r}function FE(e,t,r){Dn=r;try{return il=t,e()}finally{il=void 0}}function al(e,t){return Dn=t,e()}function Fa(e){Gu(e,t=>{vE(t)})}function Gu(e,t){if(e instanceof Os)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&Gu(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&Gu(e[r],t)}}function X8(){return class{static{o(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}var Lo,li,Ze,LE,Lm,vU,ME,Mo,Do,UU,Ar,xU,db,DU,G8,$8,LU,Pn,il,Os,qu,Vr,Dn,ol,Dm,CE,V8,PE,FU,ub,MU,DE,Cs=fe(()=>{Lo=require("msgpackr"),li=require("node:fs/promises"),Ze=require("node:fs"),LE=require("node:zlib"),Lm=require("node:stream"),vU=require("fs-extra"),ME=w(ae());H();Mo=require("path"),Do=w(ki());Po();UU=8192,Ar=8,xU=0,db=1,DU=255,G8=new Uint8Array([0,xU,255,255,255,255,255,255]),$8=new Uint8Array([0,db,255,255,255,255,255,255]),LU=0xffffffffffff,Pn=new WeakMap,Os=global.Blob||X8(),ol=!1,Dm=new Uint8Array(8),CE=new DataView(Dm.buffer),V8=6e4;o(BU,"InstanceOfBlobWithNoConstructor");BU.prototype=Os.prototype;PE=class e extends BU{static{o(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=Pn.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):(cb()&&ab(this.bytes().then(a=>t.contentBuffer=a)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=Pn.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=Mm(t),a,c=o(async()=>{let l,u=Ar;try{if(l=await(0,li.readFile)(i),l.length>=Ar){l.copy(Dm,0,0,Ar);let f=CE.getBigUint64(0);if(Number(f>>48n)===DU)throw new Error("Error in blob: "+buffer.subarray(Ar));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<LU&&(this.size=u,this.#t))for(let m of this.#t)m(u)}}catch(f){if(f.code!=="ENOENT")throw f;l=Buffer.alloc(0)}function d(f){if(u>f.length){let m=t.store,h=t.fileId+":blob";if(a)throw new Error("Incomplete blob");return new Promise((p,E)=>{if(m.attemptLock(h,0,()=>(a=!0,m.unlock(h,0),p(c()))))return a=!0,m.unlock(h,0),p(c())})}return(n!=null||r!=null)&&(f=f.subarray(r??0,n??f.length)),f}return o(d,"checkCompletion"),l[1]===db?new Promise((f,m)=>{(0,LE.deflate)(l.subarray(Ar),(h,p)=>{h?m(h):f(d(p))})}):d(l.subarray(Ar))},"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=Pn.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=Mm(t),a,c=0,l=0,u,d,f,m=!1,h=this;return new ReadableStream({start(){let E=1e3,g=o((y,T)=>{(0,Ze.open)(i,"r",(R,N)=>{if(R){if(R.code==="ENOENT"&&f!==!1&&(Do.default.debug?.("File does not exist yet, waiting for it to be created",i,E),E-- >0))return setTimeout(()=>{p(),g(y,T)},20).unref();T(R),h.#e?.forEach(P=>P(R))}else a=N,y(N)})},"openFile");return new Promise(g)},pull:o(E=>{let g=0,y=100;return new Promise(o(function T(R,N){function P(te){(0,Ze.close)(a),clearTimeout(d),u&&u.close(),N(te),h.#e?.forEach(x=>x(te))}o(P,"onError");let Y=Buffer.allocUnsafe(262144);(0,Ze.read)(a,Y,0,Y.length,c,(te,x,V)=>{if(l+=x,te)return P(te);if(c===0){if(x<Ar){y-- >0&&f!==!1?(p(),Do.default.debug?.("File was empty, waiting for data to be written",i,y),setTimeout(()=>T(R,N),20).unref()):(Do.default.debug?.("File was empty, throwing error",i,y),N(new Error(`Blob ${t.fileId} was empty`)));return}V.copy(Dm,0,0,Ar);let j=CE.getBigUint64(0);if(Number(j>>48n)===DU)return P(new Error("Error in blob: "+V.subarray(Ar)));if(g=Number(j&0xffffffffffffn),g<LU&&h.size!==g&&(h.size=g,h.#t))for(let K of h.#t)K(g);V=V.subarray(Ar,x),l-=Ar}else if(x===0){let j=Buffer.allocUnsafe(8);return(0,Ze.read)(a,j,0,Ar,0,K=>{if(K)return P(K);if(Dm.set(j),g=Number(CE.getBigUint64(0)&0xffffffffffffn),g>l){p()?u?d=setTimeout(()=>{P(new Error("File read timed out"))},V8).unref():(u=(0,Ze.watch)(i,{persistent:!1},()=>{u.close(),u=null,d&&(clearTimeout(d),d=null,T(R,N))}),T(R,N)):m?P(new Error("Blob is incomplete")):(m=!0,T(R,N));return}(0,Ze.close)(a),E.close(),R()})}else V=V.subarray(0,x);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=x,T(R,N);s&&l>=s&&(l>s&&(V=V.subarray(0,s-c)),l=g=s),n&&n>c&&(V=V.subarray(n-c))}c+=x;try{E.enqueue(V)}catch(j){return Do.default.debug?.("Error enqueuing chunk",j),R()}l===g&&((0,Ze.close)(a),E.close()),R()})},"readMore"))},"pull"),cancel(){(0,Ze.close)(a),clearTimeout(d),u&&u.close()}});function p(){if(f===void 0){let E=t.store,g=t.fileId+":blob";f=!E.attemptLock(g,0,()=>{f=!1,E.unlock(g,0)}),f||E.unlock(g,0)}return f}}slice(t,r,n){let s=Pn.get(this),i=new e(n&&{type:n});if(s?.fileId){let a={...s,start:t,end:r};Pn.set(i,a),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let a={...s,contentBuffer:s.contentBuffer.subarray(t,r)};Pn.set(i,a),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(t){if(Dn=t?.primaryStore?.rootStore,!Dn)throw new Error("No target table specified");return HU(this).saving??Promise.resolve()}},FU=500;o(vE,"deleteBlob");o(K8,"setDeletionDelay");global.createBlob=function(e,t){let r=new PE(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(Pn.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof Lm.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=Lm.Readable.from(e);else throw new Error("Invalid source type");return r};o(HU,"saveBlob");o(lb,"writeBlobWithStream");o(UE,"getFileId");o(kU,"getFilePathForBlob");ub=new Map;o(vm,"getRootBlobPathsForDB");o(fb,"deleteRootBlobPathsForDB");o(qU,"rimrafSteadily");o(Mm,"getFilePath");o(Y8,"writeBlobWithBuffer");o(W8,"generateFilePath");MU=new Map;o(z8,"getNextFileId");DE=128;o(j8,"getNextStorageIndex");o(J8,"createFrequencyTableForStoragePaths");o(xE,"encodeBlobsWithFilePath");o(Q8,"encodeBlobsAsBuffers");o(BE,"decodeBlobsWithWrites");o(FE,"decodeWithBlobCallback");o(al,"decodeFromDatabase");o(Fa,"deleteBlobsInObject");o(Gu,"findBlobsInObject");(0,Lo.addExtension)({Class:Os,type:11,unpack:o(function(e){let t=(0,Lo.unpack)(e),r=new PE;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(Pn.set(r,{storageIndex:t[1],fileId:t[2],store:Dn}),il)return il(r)??r;if(!Dn)throw new Error("No store specified, cannot load blob from storage")}else Pn.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:o(function(e){let t=Pn.get(e);if(qu!==void 0&&(ol=!0,t?.recordId!==void 0&&t.recordId!==qu))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<UU)return r.size=t.contentBuffer.length,(0,Lo.pack)([r,t.contentBuffer])}if(qu!==void 0){if(t=HU(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=qu,(0,Lo.pack)([r,t.storageIndex,t.fileId])}if(t)try{let n=(0,Ze.readFileSync)(Mm(t));if(n.length>=Ar&&(n.copy(Dm,0,0,Ar),Number(CE.getBigUint64(0)&0xffffffffffffn)===n.length-Ar))return Buffer.concat([(0,Lo.pack)([r]),n]);if(Vr)Vr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Vr)return Vr.push(e.bytes()),Buffer.alloc(0);throw n}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Lo.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});o(X8,"polyfillBlob")});var YU={};Ce(YU,{onStorageReclamation:()=>Um,runReclamationHandlers:()=>Eb,setAvailableSpaceRatioGetter:()=>e5});function Um(e,t,r){(r||(0,kE.getWorkerIndex)()===(0,kE.getWorkerCount)()-1)&&(HE.has(e)||HE.set(e,[]),HE.get(e).push({priority:0,handler:t}),_b||(_b=setTimeout(Eb,$U).unref()))}async function Eb(){for(let[e,t]of HE)try{let r=await KU(e),n=Z8/r;for(let s of t){let{priority:i,handler:a}=s;if(s.priority=n,n>1||i>1){let c=a(n>1?n:0);c&&(pb.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){pb.default.error?.("Error running storage reclamation handlers",r)}_b=setTimeout(Eb,$U).unref()}function e5(e){KU=e??VU}var hb,kE,pb,qE,GU,HE,Z8,$U,_b,VU,KU,GE=fe(()=>{hb=require("node:fs/promises"),kE=w(st()),pb=w(ki());H();qE=w(ae()),GU=w(se());qE.default.initSync();HE=new Map,Z8=qE.default.get(U.STORAGE_RECLAMATION_THRESHOLD)??.4,$U=(0,GU.convertToMS)(qE.default.get(U.STORAGE_RECLAMATION_INTERVAL))||36e5;o(Um,"onStorageReclamation");VU=o(async e=>{if(hb.statfs){let t=await(0,hb.statfs)(e);return t.bavail/t.blocks}else return new Promise((t,r)=>{import("hdd-space").then(n=>{n.default(s=>{for(let i of s.parts)if(e.startsWith(i.place))return t(i.free/i.size);return t(1)})})})},"defaultGetAvailableSpaceRatio"),KU=VU;o(Eb,"runReclamationHandlers");o(e5,"setAvailableSpaceRatioGetter")});var ix={};Ce(ix,{ACTION_32_BIT:()=>WE,ACTION_64_BIT:()=>n5,AUDIT_STORE_OPTIONS:()=>Fm,Decoder:()=>ll,HAS_BLOBS:()=>Ln,HAS_CURRENT_RESIDENCY_ID:()=>ul,HAS_EXPIRATION_EXTENDED_TYPE:()=>qm,HAS_ORIGINATING_OPERATION:()=>km,HAS_PREVIOUS_RESIDENCY_ID:()=>dl,REMOTE_SEQUENCE_UPDATE:()=>zE,createAuditEntry:()=>Vu,getLastRemoved:()=>Ab,openAuditStore:()=>KE,readAuditEntry:()=>vt,removeAuditEntry:()=>YE,setAuditRetention:()=>r5,transactionKeyEncoder:()=>tx});function KE(e){let t=e.auditStore=e.openDB(gb.AUDIT_STORE_NAME,{create:!1,...Fm});t||(t=e.auditStore=e.openDB(gb.AUDIT_STORE_NAME,Fm),zU(t,1)),t.rootStore=e,t.tableStores=[];let r=[];t.addDeleteRemovalCallback=function(l,u,d){return r[l]=d,t.tableStores[l]=u,t.deleteCallbacks=r,{remove(){delete r[l]}}};let n=null,s,i=0,a=Tb;Um(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(a=l),clearTimeout(n);let u=new Promise(d=>{n=setTimeout(async()=>{if(await s,s=u,t.rootStore.status==="closed"||t.rootStore.status==="closing")return;let f=0,m,h;try{for(let{key:p,value:E}of t.getRange({start:1,snapshot:!1,end:Date.now()-Sb/(1+i*i)})){try{m=YE(t,p,E)}catch(g){$u.warn("Error removing audit entry",g)}if(h=p,await new Promise(setImmediate),++f>=t5){a=10;break}}await m}finally{f===0?a=Math.min(a<<1,Sb/10):(zU(t,h),a>100&&(a=a>>1)),d(void 0),c()}},a).unref()});return u}if(o(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Bm.getWorkerIndex)()===(0,Bm.getWorkerCount)()-1&&c(),(0,Bm.getWorkerIndex)()===0&&!WU)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(WU=!0,$u.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 YE(e,t,r){let n=s5(r),s;if(n&Ln){s=vt(r);let i=e.tableStores[s.tableId],a=i?.getEntry(s.recordId);(!a||a.version!==s.version||!a.value)&&al(()=>Fa(s.getValue(i)),i.rootStore)}if((n&15)===Rb){s=s||vt(r);let i=s.tableId;e.tableStores[s.tableId]?.getEntry(s.recordId).version===s.version&&e.deleteCallbacks?.[i]?.(s.recordId,s.version)}return e.remove(t)}function zU(e,t){yb[0]=t,e.put(Symbol.for("last-removed"),rx)}function Ab(e){let t=e.get(Symbol.for("last-removed"));if(t)return rx.set(t),yb[0]}function r5(e,t=Tb){Sb=e,Tb=t}function Vu(e,t,r,n,s,i,a,c,l,u,d,f,m){let h=nx[a];if(!h)throw new Error(`Invalid audit entry type ${a}`);let p=1;if(n&&(n>1?Ha.setFloat64(0,n):Ps.set(bb),p=9),l){if(l&255)throw new Error("Illegal extended type");p+=3}y(s),y(t),g(r),Ha.setFloat64(p,e),p+=8,l&ul&&y(u),l&dl&&y(d),l&qm&&(Ha.setFloat64(p,f),p+=8),l&km&&y(sx[m]),i?g(i):Ps[p++]=0,l?Ha.setUint32(n?8:0,h|l|3221225472):Ps[n?8:0]=h;let E=Ps.subarray(0,p);if(c)return Buffer.concat([E,c]);return E;function g(T){let R=p;p+=1,p=(0,cl.writeKey)(T,Ps,p);let N=p-R-1;N>127?N>16383?($u.error("Key or username was too large for audit entry",T),p=R+1,Ps[R]=0):(Ps.copyWithin(R+2,R+1,p),Ha.setUint16(R,N|32768),p++):Ps[R]=N}function y(T){T<128?Ps[p++]=T:T<16384?(Ha.setUint16(p,T|32768),p+=2):T<1056964608?(Ha.setUint32(p,T|3221225472),p+=4):(Ps[p]=255,Ha.setUint32(p+1,T),p+=5)}}function s5(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 ll(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function vt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new ll(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),a=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,d=n.position+=l,f=n.readFloat64(),m,h,p,E;if(i&ul&&(m=n.readInt()),i&dl&&(h=n.readInt()),i&qm&&(p=n.readFloat64()),i&km){let R=n.readInt();E=sx[R]}l=n.readInt();let g=n.position,y=n.position+=l,T;return{type:nx[i&7],tableId:c,nodeId:a,get recordId(){return(0,cl.readKey)(e,u,d)},getBinaryRecordId(){return e.subarray(u,d)},version:f,previousLocalTime:s,get user(){return y>g?(0,cl.readKey)(e,g,y):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(R,N,P){if(i&$E||i&xm&&!N)return T||(T=al(()=>R.decoder.decode(e.subarray(n.position,r)),R.rootStore)),T;if(i&xm&&P)return QA(R.getEntry(this.recordId),P,R)},getBinaryValue(){return i&($E|xm)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:m,previousResidencyId:h,expiresAt:p,originatingOperation:E}}catch(n){return $u.error("Reading audit entry error",n,e),{}}}var cl,VE,gb,Bm,ex,$u,Ps,Ha,tx,Fm,Sb,t5,yb,rx,Tb,WU,$E,xm,jU,Rb,JU,QU,XU,ZU,WE,n5,zE,ul,dl,km,qm,Ln,nx,sx,ll,Io=fe(()=>{cl=require("ordered-binary"),VE=w(ae()),gb=w(qt());H();Bm=w(st()),ex=w(se());fl();$u=w(z());bE();Cs();GE();(0,VE.initSync)();Ps=Buffer.alloc(2816),Ha=new DataView(Ps.buffer,Ps.byteOffset,2816),tx={writeKey(e,t,r){return e===Hm?(t.set(Hm,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,cl.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,cl.readKey)(e,t,r)}},Fm={encoding:"binary",keyEncoder:tx},Sb=(0,ex.convertToMS)((0,VE.get)(U.LOGGING_AUDITRETENTION))||86400*3,t5=1e3,yb=new Float64Array(1),rx=new Uint8Array(yb.buffer),Tb=1e4,WU=!1;o(KE,"openAuditStore");o(YE,"removeAuditEntry");o(zU,"updateLastRemoved");o(Ab,"getLastRemoved");o(r5,"setAuditRetention");$E=16,xm=32,jU=1,Rb=2,JU=3,QU=4,XU=5,ZU=6,WE=14,n5=15,zE=11,ul=512,dl=1024,km=2048,qm=4096,Ln=8192,nx={put:jU|$E,[jU]:"put",delete:Rb,[Rb]:"delete",message:JU|$E,[JU]:"message",invalidate:QU|xm,[QU]:"invalidate",patch:XU|xm,[XU]:"patch",relocate:ZU,[ZU]:"relocate"},sx={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};o(Vu,"createAuditEntry");o(s5,"readAction");o(vt,"readAuditEntry");ll=class extends DataView{static{o(this,"Decoder")}position=0;readInt(){let t;return t=this.getUint8(this.position++),t>=128?t>=192?t===255?(t=this.getUint32(this.position),this.position+=4,t):(t=this.getUint32(this.position-1)&1073741823,this.position+=3,t):(t=this.getUint16(this.position-1)&32767,this.position++,t):t}readFloat64(){try{let t=this.getFloat64(this.position);return this.position+=8,t}catch(t){throw t.message=`Error reading float64: ${t.message} at position ${this.position}`,t}}}});var ux={};Ce(ux,{ENTRY:()=>o5,HAS_EXPIRATION:()=>QE,HAS_RESIDENCY_ID:()=>Pb,HAS_STRUCTURE_UPDATE:()=>XE,LAST_TIMESTAMP_PLACEHOLDER:()=>Hm,LOCAL_TIMESTAMP:()=>i5,METADATA:()=>Yu,NEW_TIMESTAMP_PLACEHOLDER:()=>ax,NO_TIMESTAMP:()=>Nb,PENDING_LOCAL_TIME:()=>Db,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>bb,RecordEncoder:()=>Cb,TIMESTAMP_ASSIGN_LAST:()=>c5,TIMESTAMP_ASSIGN_NEW:()=>cx,TIMESTAMP_ASSIGN_PREVIOUS:()=>lx,TIMESTAMP_PLACEHOLDER:()=>jE,TIMESTAMP_RECORD_PREVIOUS:()=>Ib,entryMap:()=>ka,handleLocalTimeForGets:()=>ZE,lastMetadata:()=>ct,recordUpdater:()=>Lb,removeEntry:()=>hl});function u5(){return Vm[0]=Vm[0]^64,a5.getFloat64(0)}function ZE(e,t){let r=e.getEntry;e.readCount=0,e.cachePuts=!1,e.rootStore=t,e.encoder.rootStore=t,e.getEntry=function(a,c){e.readCount++,ct=null;let l=r.call(this,a,c);return l&&(ct&&(l.metadataFlags=ct[Yu],l.localTime=ct.localTime,l.residencyId=ct.residencyId,ct.expiresAt>=0&&(l.expiresAt=ct.expiresAt),ct=null),l.value&&ka.set(l.value,l),l.key=a),l};let n=e.get;e.get=function(a,c){ct=null;let l=n.call(this,a,c);return ct&&l&&(ka.set(l,ct),ct=null),l};let s=e.getRange;e.getRange=function(a){let c=s.call(this,a);return a.valuesForKey?c.map(l=>l?.value):a.values===!1||a.onlyCount?c:c.map(l=>(ct&&(l.metadataFlags=ct[Yu],l.localTime=ct.localTime,l.residencyId=ct.residencyId,ct.expiresAt>=0&&(l.expiresAt=ct.expiresAt),ct=null),l))};let i=e.useReadTransaction();if(i.done(),!i.done.isTracked){let a=i.constructor,c=i.use,l=i.done;a.prototype.use=function(){this.timerTracked||(this.timerTracked=!0,ml.push(new WeakRef(this))),c.call(this)},a.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<ml.length;u++){let d=ml[u].deref();(!d||d.isDone||d.isCommitted)&&ml.splice(u--,1)}},a.prototype.done.isTracked=!0}return e}function Lb(e,t,r){return function(n,s,i,a,c=-1,l,u,d="put",f,m){f||l==null?Ku=i?.localTime?Ib|lx:Nb:Ku=l?i?.localTime?Ib|16384:cx|16384:Nb;let h=u?.expiresAt;if(h>=0&&(c|=QE),$m=c,wb=h,i?.version===a&&l===!1)throw new Error("Must retain local time if version is not changed");let p={version:a,instructedWrite:Ku>0},E,g=0;try{let y=i?.residencyId,T=u?.residencyId;T&&(Ob=T,$m|=Pb,g|=ul),y!==T&&(g|=dl,y||(y=0)),c&QE&&(g|=qm),u?.originatingOperation&&(g|=km),f&&(p.ifVersion=E=i?.version??null),i&&i.value&&i.metadataFlags&Ln&&(r.getBinaryFast(i.localTime)||Fa(i.value));let R;if(s!==void 0&&(R=xE(()=>e.put(n,s,p),n,e.rootStore),ol&&(g|=Ln)),l){let N=u?.user?.username;if(m&&(xE(()=>e.encoder.encode(m),n,e.rootStore),ol&&(g|=Ln)),e.encoder.hasStructureUpdate&&(g|=XE,e.encoder.hasStructureUpdate=!1),f&&i?.localTime){let P=i?.localTime,Y=r.get(P);if(Y){let te=vt(Y).previousLocalTime;return R=r.put(P,Vu(a,t,n,te,u?.nodeId??server.replication.getThisNodeId(r)??0,N,d,Gm,g,T,y,h),{ifVersion:E}),R}}R=r.put(s===void 0?ax:Hm,Vu(a,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,d,Gm,g,T,y,h,u?.originatingOperation),{append:d!=="invalidate",instructedWrite:!0,ifVersion:E})}return R}catch(y){throw y.message+=" id: "+n+" options: "+p,y}}}function hl(e,t,r){if(t)return t.value&&t.metadataFlags&Ln&&!e.auditStore.getBinaryFast(t.localTime)&&Fa(t.value),e.remove(t.key,r)}var ox,JE,jE,Hm,bb,ax,i5,Yu,o5,Vm,a5,Nb,cx,c5,lx,Ib,QE,Pb,Db,XE,ka,l5,Gm,Ku,$m,wb,Ob,ct,Cb,ml,fl=fe(()=>{ox=require("msgpackr");Io();JE=w(z());Cs();Cs();jE=new Uint8Array([1,1,1,1,4,64,0,0]),Hm=new Uint8Array([1,1,1,1,1,0,0,0]),bb=new Uint8Array([1,1,1,1,3,64,0,0]),ax=new Uint8Array([1,1,1,1,0,64,0,0]),i5=Symbol("local-timestamp"),Yu=Symbol("metadata"),o5=Symbol("entry"),Vm=new Uint8Array(8),a5=new DataView(Vm.buffer,0,8),Nb=0,cx=0,c5=1,lx=3,Ib=4,QE=16,Pb=32,Db=1,XE=256,ka=new WeakMap,Ku=0,$m=-1,wb=-1,Ob=0,ct=null,Cb=class extends ox.Encoder{static{o(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0;class r{static{o(this,"RecordObject")}getUpdatedTime(){return ka.get(this)?.version}getExpiresAt(){return ka.get(this)?.expiresAt}}t.structPrototype=r.prototype,super(t);let n=this.encode;this.encode=function(i,a){if(Ku||$m>=0){let c=0,l=Ku;l&&(c+=8,Ku=0);let u=$m,d=wb,f=Ob;u>=0&&(c+=4,$m=-1,d>=0&&(c+=8,wb=-1),f&&(c+=4,Ob=0));let m=l5=n.call(this,i,a|2048|c);Gm=m.subarray((m.start||0)+c,m.end);let h=m.start||0;return l&&(jE[4]=l,jE[5]=l>>8,m.set(jE,h),h+=8),ol&&(u|=Ln),u>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(h,u|WE<<24),h+=4,d>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setFloat64(h,d),h+=8),f&&(m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(h,f)),m}else return Gm=n.call(this,i,a),Gm};let s=this.saveStructures;this.saveStructures=function(i,a){let c=s.call(this,i,a);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],a=0;try{if(i<32&&s>2){let c=n,l;if(i===2){if(t.copy)t.copy(Vm,0,c),c+=8;else for(let m=0;m<8;m++)Vm[m]=t[c++];l=u5(),i=t[c]}let u,d;i<32&&(i===WE?(a=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4):(a=i|t[c+1]<<5,c+=2),a&QE&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),a&Pb&&(d=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let f=al(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return ct={localTime:l,[Yu]:a,expiresAt:u,residencyId:d},f}return r?.valueAsBuffer?t:al(()=>super.decode(t,r),this.rootStore)}catch(c){return JE.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};o(u5,"getTimestamp");o(ZE,"handleLocalTimeForGets");ml=[];setInterval(()=>{for(let e=0;e<ml.length;e++){let t=ml[e].deref();!t||t.isDone||t.isCommitted?ml.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(JE.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):JE.error("Read transaction detected that has been open too long (over one minute), make sure read transactions are quickly closed",t)),t.openTimer++):t.openTimer=1)}},15e3).unref();o(Lb,"recordUpdater");o(hl,"removeEntry")});function Ub(e,t,r,n,s,i,a,c){let l=e[0];if(t==="or"){let f=u(l);for(let h=1;h<e.length;h++){let p=e[h],E=u(p);f=f.concat(E)}let m=new Set;return f.filter(h=>{let p=h.key??h;return m.has(p)?!1:(m.add(p),!0)})}else{let f=u(l),m=d(e.slice(1),!0,l.estimated_count);return m.length>0?a(f,m):f}function u(f){return f.conditions?Ub(f.conditions,f.operator,r,n,s,i,a,c):Ju(f,n,f.descending||s.reverse===!0,r,s.allowFullScan,c,i)}o(u,"executeCondition");function d(f,m,h){return f.map((p,E)=>{if(p.conditions){let T=p.operator==="or",R=d(p.conditions,!T,h);return T?(N,P)=>R.some(Y=>Y(N,P)):(N,P)=>R.every(Y=>Y(N,P))}let g=(p.attribute||p[0])===r.primaryKey,y=Ym(p,r,i,c,g,h);return m&&E<f.length-1&&h&&(h=S5(r.primaryStore,p.estimated_count,h)),y}).filter(Boolean)}o(d,"mapConditionsToFilters")}function Ju(e,t,r,n,s,i,a){let c=e[0]??e.attribute,l=e[1]??e.value,u=e.comparator;if(l===void 0&&u!=="sort")throw new Kr.ClientError(`Search condition for ${c} must have a value`);if(Array.isArray(c)){let R=c[0],N=$i(n.attributes,R);if(N.relationship){if(c.length<2)throw new Kr.ClientError("Can not directly query a relational attribute, must query an attribute within the target table");let P=N.definition?.tableClass||N.elements?.definition?.tableClass,Y=new Map,te=Ju({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:u},t,r,P,s,Y);if(N.relationship.to){i[c[0]]=Y;let x=!!$i(P.attributes,N.relationship.to)?.elements;te=p5(te,N,P.primaryStore,x,Y)}if(N.relationship.from){let x=o(V=>(V?.key!==void 0&&(V=V.key),Ju({attribute:N.relationship.from,value:V},t,r,n,s,Y)),"searchEntry");N.elements?(i[c[0]]=Y,te=_5(te,N,P.primaryStore,Y,x)):te=te.flatMap(x)}return te}else if(c.length===1)c=c[0];else throw new Kr.ClientError("Unable to query by attribute "+JSON.stringify(c))}let d=c===n.primaryKey||c==null,f=d?n.primaryStore:n.indices[c],m,h,p,E;l instanceof Date&&(l=l.getTime());let g;switch(xb[u]||u){case"lt":m=!0,h=l;break;case"le":m=!0,h=l,p=!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,h=l.slice(0),h[h.length-1]=Gi.MAXIMUM_KEY;break;case"starts_with":m=l.toString(),h=l+"\uFFFF";break;case"between":case"gele":case"gelt":case"gtlt":case"gtle":m=l[0],m instanceof Date&&(m=m.getTime()),h=l[1],h instanceof Date&&(h=h.getTime()),p=u==="gele"||u==="gtle"||u==="between",E=u==="gtlt"||u==="gtle";break;case"equals":case void 0:m=l,h=l,p=!0;break;case"ne":if(l===null){m=l,E=!0;break}case"sort":case"contains":case"ends_with":m=!0,g=!0;break;default:throw new Kr.ClientError(`Unknown query comparator "${u}"`)}let y;if(typeof m=="string"&&m.length>Ds.MAX_SEARCH_KEY_LENGTH&&(m=m.slice(0,Ds.MAX_SEARCH_KEY_LENGTH)+Ds.OVERFLOW_MARKER,E=!1,y=Ym(e,n,null,i,d)),typeof h=="string"&&h.length>Ds.MAX_SEARCH_KEY_LENGTH&&(h=h.slice(0,Ds.MAX_SEARCH_KEY_LENGTH)+Ds.OVERFLOW_MARKER,p=!0,y=y??Ym(e,n,null,i,d)),r){let R=m;m=h,h=R,R=!E,E=!p,p=R}if(!f||f.isIndexing||g||l===null&&!f.indexNulls){if(s===!1&&!f)throw new Kr.ClientError(`"${c}" is not indexed, can not search for this attribute`,404);if(s===!1&&g)throw new Kr.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 Kr.ServerError(`"${c}" is not indexed yet, can not search for this attribute`,503);if(l===null&&f&&!f.indexNulls)throw new Kr.ClientError(`"${c}" is not indexed for nulls, index needs to be rebuilt to search for nulls, can not search for this attribute`,400);if(y=y??Ym(e,n,null,i,d),!y)throw new Kr.ClientError(`Unknown search operator ${e.comparator}`)}let T={start:m,end:h,inclusiveEnd:p,exclusiveStart:E,values:!0,versions:d,transaction:t,reverse:r};if(d){let R=f.getRange(T).map(y?function({key:N,value:P}){return this?.isSync?P&&y(P)?N:qa.SKIP:new Promise((Y,te)=>setImmediate(()=>{try{Y(P&&y(P)?N:qa.SKIP)}catch(x){te(x)}}))}:N=>N.value==null&&!(N.metadataFlags&(Mn|Ga))?qa.SKIP:N);return R.hasEntries=!0,R}else return f?f.customIndex?f.customIndex.search(e,a).map(R=>{if(typeof R=="object"&&R){let{key:N,...P}=R,Y=n.primaryStore.getEntry(N);return{...P,...Y}}return R}):f.getRange(T).map(y?function({key:R,value:N}){let P;return typeof R=="string"&&R.length>Ds.MAX_SEARCH_KEY_LENGTH?P=n.primaryStore.get(N):P={[c]:R},this.isSync?y(P)?N:qa.SKIP:new Promise((Y,te)=>setImmediate(()=>{try{Y(y(P)?N:qa.SKIP)}catch(x){te(x)}}))}:({value:R})=>R):n.primaryStore.getRange(r?{end:!0,transaction:t,reverse:!0}:{start:!0,transaction:t}).map(function({key:R,value:N}){return this.isSync?N&&y(N)?R:qa.SKIP:new Promise((P,Y)=>setImmediate(()=>{try{P(N&&y(N)?R:qa.SKIP)}catch(te){Y(te)}}))})}function $i(e,t){if(Array.isArray(t))if(t.length>1){let r=$i(e,t[0]),n=(r?.definition?.tableClass||r?.elements?.definition?.tableClass)?.attributes??r?.properties;return n?$i(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 p5(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i;return s.hasMappings=!0,{next(){if(!i){let c=t.relationship.to,l=o((u,d)=>{let f=s.get(u);f?f.push(d):s.set(u,f=[d])},"addEntry");for(let u of e){let d=u.value??r.get(u.key??u),f=d?.[c];if(f!=null&&!s.filters?.some(m=>!m(d)))if(n)for(let m=0;m<f.length;m++)l(f[m],u);else l(f,u)}return i=s.keys()[Symbol.iterator](),this.next()}let a=i.next();return a.done?a:{value:a.value}},return(){if(i?.return)return i.return()}}}})}function _5(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i,a,c=new Set;return{next(){let l;if(a)for(;l=a.next(),!l.done;){let u=l.value;if(!c.has(u))return c.add(u),l}if(!i){let u=new Set;n.fromRecord=d=>d[t.relationship.from]?.filter?.(f=>u.has(f));for(let d of e){if(n.filters){let f=r.get(d);if(n.filters.some(m=>!m(f)))continue}u.add(d)}return i=u[Symbol.iterator](),this.next()}do{let u=i.next();return u.done?u:(a=s(u.value)[Symbol.iterator](),this.next())}while(!0)},return(){return a?.return?.()},throw(){return a?.throw?.()}}}})}function Ym(e,t,r,n,s,i){let a=e.comparator,c=e[0]??e.attribute,l=e[1]??e.value;if(Array.isArray(c)){if(c.length===0)return()=>!0;if(c.length===1)c=c[0];else if(c.length>1){let d=c[0],f=$i(t.attributes,d),m=f.definition?.tableClass||f.elements.definition?.tableClass,h=n?.[d],p=Ym({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:a},m,r,h?.[d]?.joined,c[1]===m.primaryKey,i);if(!p)return;if(h){h.filters||(h.filters=[]),h.filters.push(p);return}let E=t.propertyResolvers?.[d];E.to&&(p.to=E.to);let g,y=o((R,N)=>{let P,Y;return E?E.returnDirect?(P=E(R,r,N),Y=ct):(Y=E(R,r,N,!0),Array.isArray(Y)?(P=Y.map(te=>te.value),Y=null):P=Y?.value):P=R[d],{subObject:P,subEntry:Y}},"getSubObject"),T=o((R,N)=>{if(E&&p.idFilter){if(!g)if(p.idFilter.idSet?.size===1){for(let V of p.idFilter.idSet)e={attribute:E.from??t.primaryKey,value:V};g=u(E.from??t.primaryKey,p.idFilter,!0,!0)}else g=u(E.from??t.primaryKey,p.idFilter,!1,!0);let x=g(R);return g.idFilter&&(T.idFilter=g.idFilter),x}let{subObject:P,subEntry:Y}=y(R,N);return P?Array.isArray(P)?(!n?.[d]&&n&&(n[d]={fromRecord(x){let V=y(x).subObject;return Array.isArray(V)?V.filter(p).map(j=>j[m.primaryKey]):V}}),P.some(p)):p(P,Y):!1},"recordFilter");return T}}switch(l instanceof Date&&(l=l.getTime()),xb[a]||a){case Ds.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,Gi.compareKeys)(d,l[0])>=0&&(0,Gi.compareKeys)(d,l[1])<=0,!0);case"gt":return u(c,d=>(0,Gi.compareKeys)(d,l)>0);case"ge":return u(c,d=>(0,Gi.compareKeys)(d,l)>=0);case"lt":return u(c,d=>(0,Gi.compareKeys)(d,l)<0);case"le":return u(c,d=>(0,Gi.compareKeys)(d,l)<=0);case"ne":return u(c,d=>(0,Gi.compareKeys)(d,l)!==0,!1,!0);case"sort":return()=>!0;default:throw new Kr.ClientError(`Unknown query comparator "${a}"`)}function u(d,f,m,h){let p;m=m&&!s&&t?.indices[d]&&i>3,m&&(e.estimated_count==null&&tg(t)(e),p=e.estimated_count>>4,(isNaN(p)||p>=i)&&(m=!1));let E=0,g=3;function y(T){let R=T[d],N;if(typeof R!="object"||!R||h?N=f(R):Array.isArray(R)?N=R.some(f):R instanceof Date&&(N=f(R.getTime())),m&&(g++,!N&&!y.idFilter&&++E/g*i>p)){let P=Ju(e,r.transaction.getReadTxn(),!1,t),Y;y.to?Y=P.flatMap(x=>t.primaryStore.get(x)[y.to]):Y=P.map(Qu);let te=new Set(Y);y.idFilter=x=>te.has(Qu(x)),y.idFilter.idSet=te}return N}return o(y,"recordFilter"),s&&(y.idFilter=f),y}o(u,"attributeComparator")}function tg(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/vo(e.primaryStore):i.estimated_count}return r.estimated_count=s,r.estimated_count}let n=r.comparator||r.search_type;if(n=xb[n]||n,n===Ds.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=$i(e.attributes,s[0]),a=i.definition?.tableClass||i.elements.definition?.tableClass,c=tg(a)({value:r.value,attribute:s.length>2?s.slice(1):s[1],comparator:"equals"}),l=e.indices[i.relationship.from];r.estimated_count=c+(l?c*vo(e.indices[i.relationship.from])/(vo(a.primaryStore)||1):c)}else{let i=e.indices[s];r.estimated_count=i?i.getValuesCount(r[1]??r.value):1/0}}else if(n==="contains"||n==="ends_with"||n==="ne"){let s=r[0]??r.attribute,i=e.indices[s];r.value===null&&n==="ne"?r.estimated_count=vo(e.primaryStore)-(i?i.getValuesCount(null):0):r.estimated_count=1/0}else if(n==="starts_with"||n==="prefix")r.estimated_count=m5*vo(e.primaryStore)+1;else if(n==="between")r.estimated_count=f5*vo(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=vo(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=d5*vo(e.primaryStore)+1}typeof r.descending=="boolean"&&(r.estimated_count/=2)}return r.estimated_count}return o(t,"estimateConditionForTable"),t}function rg(e,t){if(e)if(Uo=e,Wu.lastIndex=0,E5.test(e))try{if(t&&(t.conditions=[]),ui=t??new ju,Km(ui,""),Mr!==Uo.length&&Gt("Unable to parse query, unexpected end of query"),ui.parseErrorMessage&&(ui.parseError=new Mb(t.parseErrorMessage),!t))throw ui.parseError;return ui}catch(r){if(r.statusCode=400,r.message=`Unable to parse query, ${r.message} at position ${Mr} in '${Uo}'`,ui.parseErrorMessage&&(r.message+=", "+ui.parseErrorMessage),t)t.parseError=r;else throw r}else return t??new URLSearchParams(e)}function Gt(e){let t=`${e} at position ${Mr}`;ui.parseErrorMessage=ui.parseErrorMessage?ui.parseErrorMessage+", "+t:t}function Km(e,t){let r=Wu,n,s,i,a,c,l=decodeURIComponent,u;for(;n=r.exec(Uo);){Mr=r.lastIndex;let[,d,f]=n;a?(d&&Gt(`expected operator, but encountered '${d}'`),a=!1,c=!1):c=!0;let m;switch(f){case"=":s!=null?(d.length<=2?i=d:Gt(`invalid FIQL operator ${d}`),l=dx):(l=decodeURIComponent,i="equals",d||Gt("attribute must be specified before equality comparator"),s=zu(d));break;case"==":case"!=":case"<":case"<=":case">":case">=":case"===":case"!==":i=h5[f],l=vb[i]?dx:decodeURIComponent,d||Gt(`attribute must be specified before comparator ${f}`),s=zu(d);break;case"&=":case"|=":case"|":case"&":case"":case void 0:if(s==null)s===void 0&&(t&&Gt(`expected '${t}', but encountered ${f[0]?"'"+f[0]+"'":"end of string"}}`),Gt(`no comparison specified before ${f?"'"+f+"'":"end of string"}`));else{e.conditions||Gt("conditions/comparisons are not allowed in a property list");let p={comparator:i,attribute:s||null,value:l(d)};if(i==="eq"&&fx(p,d),s===""){let E=e.conditions[e.conditions.length-1];E.chainedConditions=E.chainedConditions||[],E.chainedConditions.push(p),E.operator=u}else eg(e,u),e.conditions.push(p)}f==="&"?(u="and",s=void 0):f==="|"?(u="or",s=void 0):f==="&="?(u="and",s=""):f==="|="&&(u="or",s="");break;case",":e.conditions?Gt("conditions/comparisons are not allowed in a property list"):e.push(zu(d)),s=void 0;break;case"(":Wu.lastIndex=Mr;let h=Km(d?[]:new ju,")");switch(d){case"":eg(e,u),e.conditions.push(h);break;case"limit":switch(h.length){case 1:e.limit=+h[0];break;case 2:e.offset=+h[0],e.limit=h[1]-e.offset;break;default:Gt("limit must have 1 or 2 arguments")}break;case"select":Array.isArray(h[0])&&h.length===1&&!h[0].name?(e.select=h[0],e.select.asArray=!0):h.length===1?e.select=h[0]:h.length===2&&h[1]===""?e.select=h.slice(0,1):e.select=h;break;case"group-by":Gt("group by is not implemented yet");case"sort":e.sort=mx(h);break;default:Gt(`unknown query function call ${d}`)}Uo[Mr]===","?r.lastIndex=++Mr:a=!0,s=null;break;case"{":e.conditions&&Gt("property sets are not allowed in a queries"),d||Gt("property sets must have a defined parent property name"),Wu.lastIndex=Mr,m=Km([],"}"),m.name=d,e.push(m),Uo[Mr]===","?r.lastIndex=++Mr:a=!0;break;case"[":if(Wu.lastIndex=Mr,d?(m=Km(new ju,"]"),m.name=d):m=Km(e.conditions?new ju:[],"]"),e.conditions)if(eg(e,u),Uo[Mr]==="="){l=decodeURIComponent,i="equals",s=zu(d),r.lastIndex=++Mr;break}else e.conditions.push(m),s=null;else e.push(m);Uo[Mr]===","?r.lastIndex=++Mr:a=!0;break;case")":case"]":case"}":if(t===f[0]){if(e.conditions)if(s){let p={comparator:i||"equals",attribute:s,value:l(d)};i==="eq"&&fx(p,d),eg(e,u),e.conditions.push(p)}else d&&Gt("no attribute or comparison specified");else(d||e.length>0&&c)&&e.push(zu(d));return e}else Gt(t?`expected '${t}', but encountered '${f[0]}'`:`unexpected token '${f[0]}'`);default:Gt(`unexpected operator '${f}'`)}if(t!==")"&&(r=s?g5:Wu,r.lastIndex=Mr),Mr===Uo.length)return e}t&&Gt(`expected '${t}', but encountered end of string`)}function eg(e,t){e.conditions.length>0&&(e.operator?e.operator!==t&&Gt("Can not mix operators within a condition grouping"):e.operator=t)}function zu(e){return e.indexOf(".")>-1?e.split(".").map(zu):decodeURIComponent(e)}function dx(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 Kr.ClientError(`Unknown type ${t}`)}return decodeURIComponent(e)}function fx(e,t){if(t.indexOf("*")>-1)if(t.endsWith("*"))e.comparator="starts_with",e.value=decodeURIComponent(t.slice(0,-1));else throw new Kr.ClientError("wildcard can only be used at the end of a string")}function mx(e){let t=hx(e[0]);return e.length>1&&(t.next=mx(e.slice(1))),t}function hx(e){if(Array.isArray(e)){let t=hx(e[0]);return e[0]=t.attribute,t.attribute=e,t}if(typeof e=="string")switch(e[0]){case"-":return{attribute:e.slice(1),descending:!0};case"+":return{attribute:e.slice(1),descending:!1};default:return{attribute:e,descending:!1}}Gt(`Unknown sort type ${e}`)}function Qu(e){return Array.isArray(e)?e.join("\0"):e}function vo(e){let t=Date.now();return(e.estimatedEntryCountExpires||0)<t&&(e.estimatedEntryCount=e.getStats().entryCount,e.estimatedEntryCountExpires=t+1e4),e.estimatedEntryCount}function S5(e,t,r){return t*r/vo(e)}var Kr,Ds,Gi,qa,d5,f5,m5,h5,vb,xb,Mb,E5,Wu,g5,Mr,ui,Uo,ju,ng=fe(()=>{Kr=w(_e()),Ds=w(qt()),Gi=require("ordered-binary"),qa=require("lmdb");Wm();fl();d5=.3,f5=.1,m5=.05,h5={"<":"lt","<=":"le",">":"gt",">=":"ge","!=":"ne","==":"eq","===":"equals","!==":"not_equal"},vb={lt:!0,le:!0,gt:!0,ge:!0,ne:!0,eq:!0};o(Ub,"executeConditions");o(Ju,"searchByIndex");o($i,"findAttribute");o(p5,"joinTo");o(_5,"joinFrom");xb={eq:"equals",greater_than:"gt",greaterThan:"gt",greater_than_equal:"ge",greaterThanEqual:"ge",less_than:"lt",lessThan:"lt",less_than_equal:"le",lessThanEqual:"le",not_equal:"ne",notEqual:"ne",equal:"equals",sw:"starts_with",startsWith:"starts_with",ew:"ends_with",endsWith:"ends_with",ct:"contains",">":"gt",">=":"ge","<":"lt","<=":"le","...":"between"};o(Ym,"filterByType");o(tg,"estimateCondition");Mb=class extends Kr.Violation{static{o(this,"SyntaxViolation")}},E5=/[()[\]|!<>.]|(=\w*=)/,Wu=/([^?&|=<>!([{}\]),]*)([([{}\])|,&]|[=<>!]*)/g,g5=/([^&|=[\]{}]+)([[\]{}]|[&|=]*)/g;o(rg,"parseQuery");o(Gt,"recordError");o(Km,"parseBlock");o(eg,"assignOperator");o(zu,"decodeProperty");o(dx,"typedDecoding");o(fx,"wildcardDecoding");o(mx,"toSortObject");o(hx,"toSortEntry");ju=class{static{o(this,"Query")}constructor(){this.conditions=[]}[Symbol.iterator](){return this.conditions[Symbol.iterator]()}get(t){for(let r=0;r<this.conditions.length;r++){let n=this.conditions[r];if(n.attribute===t)return n.value}}getAll(){let t=[];for(let r=0,n=this.conditions.length;r<n;r++){let s=this.conditions[r];s.attribute&&t.push(s.value)}return t}};o(Qu,"flattenKey");o(vo,"estimatedEntryCount");o(S5,"intersectionEstimate")});var px,di,sg=fe(()=>{px=w(ci());$a();di=class extends URLSearchParams{static{o(this,"RequestTarget")}#e;pathname;search;id;isCollection;constructor(t){let r,n;if(t&&(r=t.indexOf("?"))>-1){n=t.slice(0,r);let s=t.slice(r+1);super(s),this.search=s}else super(),n=t;this.pathname=n??"",this.#e=t}toString(){return this.#e?this.#e:this.size>0?this.pathname+"?"+super.toString():this.pathname}get url(){return this.toString()}delete(t){super.delete(t),this.conditions&&(this.conditions=this.conditions.filter(r=>r.attribute!==t)),this.#e=void 0}set(t,r){this.delete(t),super.set(t,r),this.conditions?.push({attribute:t,value:r})}append(t,r){super.append(t,r),this.#e=void 0,this.conditions?.push({attribute:t,value:r})}};(0,px._assignPackageExport)("Resource",vr)});var Tx={};Ce(Tx,{MultiPartId:()=>ig,Resource:()=>vr,contextStorage:()=>Zu,snakeCase:()=>R5,transformForSelect:()=>og});function R5(e){return e[0].toLowerCase()+e.slice(1).replace(/[a-z][A-Z][a-z]/g,t=>t[0]+"_"+t.slice(1))}function _x(e,t){if(pl=!1,e==="")return null;if(e=e.slice(1),t.splitSegments){if(e.indexOf("/")===-1)return e===""?(pl=!0,null):t.coerceId(decodeURIComponent(e));let r=e.split("/"),n=new ig;for(let s=0;s<r.length;s++){let i=r[s];if(!i&&s===r.length-1){pl=!0;break}n[s]=t.coerceId(decodeURIComponent(i))}return n}else{if(e==="")return pl=!0,null;e[e.length-1]==="/"&&(pl=!0)}return t.coerceId(decodeURIComponent(e))}function vn(e,t){n.reliesOnPrototype=!0;let r=t.hasContent;return n;function n(s,i,a){let c,l,u,d;if(r){if(a)d=i,a=a.getContext?.()||a;else if(i)typeof s=="object"&&s&&(!Array.isArray(s)||typeof s[0]=="object")?(d=s,c=d[this.primaryKey]??null,a=i.getContext?.()||i):i?.transaction instanceof No?a=i:d=i;else if(s&&typeof s=="object")d=s,s=void 0,c=d.getId?.()??d[this.primaryKey];else throw new Xu.ClientError(`Invalid argument for data, must be an object, but got ${s}`);c===null&&(u=!0)}else i?a=i.getContext?.()||i:s&&typeof s=="object"&&!Array.isArray(s)&&(a=s);if(c===void 0)if(typeof s=="object"&&s){if(l=s,c=s instanceof URLSearchParams?s.toString():s.url,s.conditions)c=s.id;else if(typeof c=="string")if(this.directURLMapping)c=c.slice(1),l.id=c;else{let E=c.indexOf("?");E>-1&&(l=this.parseQuery(c.slice(E+1),s),c=c.slice(0,E),c===""&&(u=!0));let g=this.parsePath(c,a,l);g?.id!==void 0?(g.query&&(l?l=Object.assign(g.query,l):l=g.query),u=g.isCollection,c=g.id):c=g,c&&(l.id=c)}else if(s[Symbol.iterator]){c=[],u=!0;for(let 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 di,l.id=c,u=!1)))}c===void 0&&(c=s.id??null,c==null&&(u=!0))}else c=s,l=new di,l.id=c,c==null&&(u=!0);l||(l=new di,l.id=c),u&&(l.isCollection=!0);let f;a||(a=Zu.getStore()??{}),l.ensureLoaded!=null||l.async||u?(f={...t},l.ensureLoaded!=null&&(f.ensureLoaded=l.ensureLoaded),l.async&&(f.async=l.async),u&&(f.isCollection=!0)):f=t;let m=this.loadAsInstance,h=p;if((m===!1?!this.explicitContext:this.explicitContext===!1)&&(h=o(E=>Zu.run(a,()=>p(E)),"runAction")),a?.transaction){let E=this.getResource(c,a,f);return E.then?E.then(h):h(E)}else return Mt(a,()=>{let E=this.getResource(c,a,f);return E.then?E.then(h):h(E)},f);function p(E){if(m!==!1&&a.authorize){a.authorize=!1;let g=t.type==="read"?E.allowRead(a.user,l,a):t.type==="update"?E.doesExist?.()===!1?E.allowCreate(a.user,d,a):E.allowUpdate(a.user,d,a):t.type==="create"?E.allowCreate(a.user,d,a):E.allowDelete(a.user,l,a);if(g?.then)return g.then(y=>{if(!y)throw new Xu.AccessViolation(a.user);return typeof d?.then=="function"?d.then(T=>e(E,l,a,T)):e(E,l,a,d)});if(!g)throw new Xu.AccessViolation(a.user)}return typeof d?.then=="function"?d.then(g=>e(E,l,a,g)):e(E,l,a,d)}o(p,"authorizeActionOnResource")}}function Zn(e,t){let r=new Xu.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 Bb(e,t,r){let n=e.getRecord?.();if(n){let s=e.getChanges?.();return i=>{let a,c;return e.hasOwnProperty(i)&&typeof(a=e[i])!="function"?a:s&&i in s?s[i]:(c=t?.[i])?c(e,r):n[i]}}else return t?s=>{let i=t[s];return i?i(e,r):e[s]}:s=>e[s]}function og(e,t){let r=t.propertyResolvers,n=t.getContext?.(),s;if(typeof e=="string")return o(function a(c){return c.then?c.then(a):Array.isArray(c)?c.map(a):Bb(c,r,n)(e)},"transform");if(typeof e=="object"){if(e.asArray)return o(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(c);let u=[],d=i(Bb(l,r,n));for(let f of e)u.push(d(f));return u},"transform");let a=e.forceNulls;return o(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(m=>m&&typeof m=="object"?c(m):m);let u={},d=i(Bb(l,r,n)),f;for(let m of e){let h=d(m);h===void 0&&a&&(h=null),h?.then?(f||(f=[]),f.push(h.then(p=>u[m.name||m]=p))):u[m.name||m]=h}return f?Promise.all(f).then(()=>u):u},"transform")}else throw new Error("Invalid select argument type "+typeof e);function i(a){return c=>{if(typeof c=="string")return a(c);if(typeof c=="object")if(c.name){s||(s={});let l=s[c.name];if(!l){let d=r[c.name]?.definition?.tableClass;l=s[c.name]=og(c.select||c,d)}let u=a(c.name);return l(u)}else return a(c);else return c}}o(i,"handleProperty")}var Ex,gx,Xu,Sx,Zu,T5,vr,pl,ig,$a=fe(()=>{Ex=require("crypto");bm();ku();gx=w(ci()),Xu=w(_e());tl();ng();Sx=require("async_hooks");sg();Zu=new Sx.AsyncLocalStorage,T5={json:"application/json",cbor:"application/cbor",msgpack:"application/x-msgpack",csv:"text/csv"},vr=class{static{o(this,"Resource")}#e;#t;#r;static transactions;static directURLMapping=!1;static loadAsInstance;constructor(t,r){this.#e=t;let n=r?.getContext?r.getContext()??null:void 0;this.#t=n!==void 0?n:r||null}static get=vn(function(t,r,n,s){let i=t.get?.(r);if(i?.then)return i.then(a);return a(i);function a(c){let l;if((l=r?.select)&&c!=null&&!c.selectApplied){let u=og(l,t.constructor);return typeof c?.map=="function"?c.map(u):u(c)}return c}},{type:"read",letItLinger:!0,ensureLoaded:!0,async:!0});static put=vn(function(t,r,n,s){if(Array.isArray(s)&&t.#r&&t.constructor.loadAsInstance!==!1){let i=[];for(let a of s){let c=t.constructor,l=a[c.primaryKey],u=c.getResource(l,n,{async:!0});u.then?i.push(u.then(d=>d.put(a,n))):i.push(u.put(a,n))}return Promise.all(i)}return t.put?t.constructor.loadAsInstance===!1?t.put(r,s):t.put(s,r):Zn(t,"put")},{hasContent:!0,type:"update"});static patch=vn(function(t,r,n,s){return t.patch?t.constructor.loadAsInstance===!1?t.patch(r,s):t.patch(s,r):Zn(t,"patch")},{hasContent:!0,type:"update"});static delete=vn(function(t,r,n,s){return t.delete?t.delete(r):Zn(t,"delete")},{hasContent:!1,type:"delete"});static getNewId(){return(0,Ex.randomUUID)()}static create(t,r,n){n?n.getContext&&(n=n.getContext()):n=Zu.getStore()??{};let s;return this.loadAsInstance===!1?s=t:t==null?s=r?.[this.primaryKey]??this.getNewId():Array.isArray(t)&&typeof t[0]!="object"?s=r?.[this.primaryKey]??[...t,this.getNewId()]:typeof t!="object"?s=r?.[this.primaryKey]??[t,this.getNewId()]:(s=t?.[this.primaryKey]??this.getNewId(),n=r||{},r=t),Mt(n,async()=>{let i=new this(s,n),a=await i.create?i.create(s,r):Zn(i,"create");return n.newLocation=s??a?.[this.primaryKey],n.createdResource=!0,this.loadAsInstance===!1?a:i})}static invalidate=vn(function(t,r,n,s){return t.invalidate?t.invalidate(r):Zn(t,"delete")},{hasContent:!1,type:"update"});static post=vn(function(t,r,n,s){return t.#e!=null&&t.update?.(),t.constructor.loadAsInstance===!1?t.post(r,s):t.post(s,r)},{hasContent:!0,type:"create"});static update=vn(function(t,r,n,s){return t.update(r,s)},{hasContent:!0,type:"create"});static connect=vn(function(t,r,n,s){return t.connect?t.constructor.loadAsInstance===!1?t.connect(r,s):t.connect(s,r):Zn(t,"connect")},{hasContent:!0,type:"read"});static subscribe=vn(function(t,r,n,s){return t.subscribe?t.subscribe(r):Zn(t,"subscribe")},{type:"read"});static publish=vn(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):Zn(t,"publish")},{hasContent:!0,type:"create"});static search=vn(function(t,r,n){let s=t.search?t.search(r):Zn(t,"search"),i=n.select;if(i&&n.hasOwnProperty("select")&&s!=null&&!s.selectApplied){let a=og(i,t.constructor);return s.map(a)}return s},{type:"read"});static query=vn(function(t,r,n,s){return t.search?t.constructor.loadAsInstance===!1?t.search(r,s):t.search(s,r):Zn(t,"search")},{hasContent:!0,type:"read"});static copy=vn(function(t,r,n,s){return t.copy?t.constructor.loadAsInstance===!1?t.copy(r,s):t.copy(s,r):Zn(t,"copy")},{hasContent:!0,type:"create"});static move=vn(function(t,r,n,s){return t.move?t.constructor.loadAsInstance===!1?t.move(r,s):t.move(s,r):Zn(t,"move")},{hasContent:!0,type:"delete"});async post(t){if(this.#r)return(await this.constructor.create(this.#e,t,this.#t)).#e;Zn(this,"post")}static isCollection(t){return t&&t.#r}get isCollection(){return this.#r}static coerceId(t){return t}static parseQuery(t,r){return rg(t,r)}static parsePath(t,r,n){let s=t.indexOf(".");if(s>-1){let a=t.slice(s+1),c=r?.headers&&T5[a];if(c)r.requestedContentType=c,t=t.slice(0,s);else if(this.attributes?.find(l=>l.name===a))if(t=t.slice(0,s),n)n.property=a;else return{query:{property:a},id:_x(t,this),isCollection:pl}}let i=_x(t,this);return pl?{id:i,isCollection:!0}:i}static getResource(t,r,n){let s,i=r.getContext?.(),a;typeof r.isCollection=="boolean"&&r.hasOwnProperty("isCollection")?a=r.isCollection:a=n?.isCollection;let c=a&&this.Collection||this;if(i||(i=i===void 0?r:{}),i.transaction){let l;if(i.resourceCache?l=i.resourceCache:l=i.resourceCache=[],l.asMap){let u=l.asMap.get(t);if(s=u?.find(d=>d.constructor===c),s)return s;u||l.asMap.set(t,u=[]),u.push(s=new c(t,i))}else{if(s=l.find(u=>u.#e===t&&u.constructor===c),s)return s;if(l.push(s=new c(t,i)),l.length>10){let u=new Map;for(let d of l){let f=d.#e,m=u.get(f);m?m.push(d):u.set(f,[d])}i.resourceCache.length=0,i.resourceCache.asMap=u}}}else s=new c(t,i);return a&&(s.#r=!0),s}subscribe(t){return new Xn}connect(t,r){return r?.subscribe!==!1?this.subscribe?.(r):new Xn}allowRead(t,r){return t?.role.permission.super_user}allowUpdate(t,r,n){return t?.role.permission.super_user}allowCreate(t,r,n){return t?.role.permission.super_user}allowDelete(t,r){return t?.role.permission.super_user}getId(){return this.#e}getContext(){return this.#t}};(0,gx._assignPackageExport)("Resource",vr);o(R5,"snakeCase");o(_x,"pathToId");ig=class extends Array{static{o(this,"MultiPartId")}toString(){return this.join("/")}};o(vn,"transactional");o(Zn,"missingMethod");o(Bb,"selectFromObject");o(og,"transformForSelect")});var _l,Fb=fe(()=>{_l=class{static{o(this,"ErrorResource")}error;constructor(t){this.error=t}isError=!0;allowRead(){throw this.error}allowUpdate(){throw this.error}allowCreate(){throw this.error}allowDelete(){throw this.error}getId(){throw this.error}getContext(){throw this.error}get(){throw this.error}post(){throw this.error}put(){throw this.error}delete(){throw this.error}connect(){throw this.error}getResource(){return this}publish(){throw this.error}subscribe(){throw this.error}}});var Ax={};Ce(Ax,{Resources:()=>ag,keyArrayToString:()=>ed,resetResources:()=>y5,resources:()=>Ls});function y5(){return Ls=new ag,ve.resources=Ls,Ls}function ed(e){return Array.isArray(e)?e[e.length-1]===null?e.slice(0,-1).join("/")+"/":e.join("/"):e}var Rx,yx,ag,Ls,td=fe(()=>{tl();Fb();Rx=w(z()),yx=w(_e());Lr();ag=class extends Map{static{o(this,"Resources")}isWorker=!0;loginPath;set(t,r,n,s){if(!r)throw new Error("Must provide a resource");t.startsWith("/")&&(t=t.replace(/^\/+/,""));let i={Resource:r,path:t,exportTypes:n,hasSubPaths:!1,relativeURL:""},a=super.get(t);if(a&&(a.Resource.databaseName!==r.databaseName||a.Resource.tableName!==r.tableName)&&!s){let c=new yx.ServerError(`Conflicting paths for ${t}`);Rx.default.error(c),i.Resource=new _l(c)}super.set(t,i);for(let[c,l]of this){let u=2;for(;(u=c.indexOf("/",u))>-1;){let d=this.get(c.slice(0,u));d&&(d.hasSubPaths=!0),u+=2}}}getMatch(t,r){let n=2,s=0,i,a=t.length;for(;n<a;){s=n,n=t.indexOf("/",n),n===-1&&(n=a);let u=n===a?t:t.slice(0,n),d=this.get(u),f=-1;if(!d&&n===a&&(f=u.indexOf("?",s),f!==-1)){let m=u.slice(0,f);d=this.get(m)}if(d&&(!r||d.exportTypes?.[r]!==!1)){if(d.relativeURL=t.slice(f!==-1?f:n),!d.hasSubPaths)return d;i=d}n+=2}if(i)return i;let c=t.indexOf("?"),l=c>-1?t.slice(0,c):t;return i=this.get(l),!i&&l.indexOf(".")>-1&&(i=this.get(l.split(".")[0])),i&&(!r||i.exportTypes?.[r]!==!1)?i.relativeURL=c>-1?t.slice(c):"":i||(i=this.get(""),i&&(!r||i.exportTypes?.[r]!==!1)&&(t.charAt(0)!=="/"&&(t="/"+t),i.relativeURL=t)),i}getResource(t,r){let n=this.getMatch(t);if(n)return t=n.relativeURL,n.Resource.getResource(this.pathToId(t,n.Resource),r)}call(t,r,n){return Mt(r,async()=>{let s=this.getMatch(t);if(s)return t=s.relativeURL,n(s.Resource,s.path,t)})}setRepresentation(t,r,n){}};o(y5,"resetResources");o(ed,"keyArrayToString")});function qb(e,t,r,n,s){let i=e.primaryStore.env.path,a=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=Nx,A5(e.primaryStore,e.auditStore)):(c=bx,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{Ix(bx[i])})));let l=c[i]||(c[i]=[]);if(l.auditStore=e.auditStore,l.lastTxnTime==null&&(l.lastTxnTime=Date.now()),s?.scope==="full-database")return;let u=l[a];u||(u=l[a]=new Map,u.envs=l,u.tableId=a,u.store=e.primaryStore),t=ed(t);let d=new kb(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 Ix(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),wx(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=vt(s),a=e[i.tableId];if(!a)continue;let c=i.recordId,l=ed(c),u=0;do{let d=a.get(l);if(d){for(let m of d)if(!(u>0&&!(m.includeDescendants&&!(m.onlyChildren&&u>1)))){if(m.startTime>=n){(0,Hb.info)("omitting",c,m.startTime,n);continue}try{let h;m.supportsTransactions&&m.txnInProgress!==i.version&&(h=!0,m.txnInProgress||(r?r.push(m):r=[m]),m.txnInProgress=i.version),m.listener(c,i,n,h)}catch(h){console.error(h),(0,Hb.info)(h)}}}if(l==null)break;let f=l.lastIndexOf?.("/",l.length-2);f!==l.length-1&&u++,f>-1?l=l.slice(0,f+1):l=null}while(!0)}if(r)for(let n of r)n.txnInProgress=null,n.listener(null,{type:"end_txn"},e.lastTxnTime,!0)}function A5(e,t){let r=t||e,n=r.env;if(!n.hasAfterCommitListener){n.hasAfterCommitListener=!0;let s=n.path;r.on("aftercommit",({next:i,last:a,txnId:c})=>{let l=Nx[s];if(!l)return;let u=o(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),l.txnTime=r.threadLocalWrites[0]||Date.now();try{Ix(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function wx(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function Ox(e){return e.nextTransaction||(qb({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),wx(e)),e.nextTransaction}var Hb,bx,Nx,kb,Gb=fe(()=>{Hb=w(z());ku();td();Io();bx=Object.create(null),Nx=Object.create(null);o(qb,"addSubscription");kb=class extends Xn{static{o(this,"Subscription")}listener;subscriptions;startTime;includeDescendants;supportsTransactions;onlyChildren;constructor(t){super(),this.listener=t,this.on("close",()=>this.end())}end(){if(this.subscriptions){if(this.subscriptions.splice(this.subscriptions.indexOf(this),1),this.subscriptions.length===0){let t=this.subscriptions.tables;if(t){let r=this.subscriptions.key;if(t.delete(r),t.size===0){let n=t.envs,s=t.dbi;delete n[s]}}}this.subscriptions=null}}toJSON(){return{name:"subscription"}}};o(Ix,"notifyFromTransactionData");o(A5,"listenToCommits");o(wx,"nextTransaction");o(Ox,"whenNextTransaction")});var Px=M((UCe,Cx)=>{"use strict";var $b=class{static{o(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};Cx.exports=$b});var Lx=M((BCe,Dx)=>{"use strict";var Vb=class{static{o(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};Dx.exports=Vb});var zm=M((HCe,vx)=>{"use strict";var Mx=ae(),b5=(H(),v($)),{RecordEncoder:N5}=(fl(),v(ux));Mx.initSync();var I5=Mx.get(b5.CONFIG_PARAMS.STORAGE_CACHING)!==!1,Kb=class{static{o(this,"OpenDBIObject")}constructor(t,r=!1){this.dupSort=t===!0,this.encoding=t?"ordered-binary":"msgpack",this.useVersions=r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=I5&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:N5})}};vx.exports=Kb});var jm=M((qCe,Ux)=>{"use strict";var es=ae(),Ms=(H(),v($));es.initSync();var cg=class{static{o(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=es.get(Ms.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||es.get(Ms.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||es.get(Ms.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",es.get(Ms.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=es.get(Ms.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),es.get(Ms.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=es.get(Ms.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),es.get(Ms.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=es.get(Ms.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),es.get(Ms.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=es.get(Ms.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=es.get(Ms.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};Ux.exports=cg;cg.MAX_DBS=1e4});var gt=M(($Ce,Kx)=>{"use strict";var Wb=require("lmdb"),fi=require("fs-extra"),ts=require("path"),lg=Cn(),Fx=z(),Un=$r().LMDB_ERRORS_ENUM,ug=Lx(),zb=zm(),Hx=jm(),Va=qt(),xx=(H(),v($)),{table:w5,resetDatabases:O5}=(De(),v(at)),Bx=ae(),mi=Va.INTERNAL_DBIS_NAME,kx=Va.DBI_DEFINITION_NAME,C5="data.mdb",P5="lock.mdb",Jm=".mdb",D5="-lock",Yb=class{static{o(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=vs(t,r),this.key_type=this.dbi[Va.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[Va.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new Wb.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function dg(e,t){if(e===void 0)throw new Error(Un.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(Un.ENV_NAME_REQUIRED)}o(dg,"pathEnvNameValidation");async function jb(e,t,r=!0){try{await fi.access(e)}catch(n){throw n.code==="ENOENT"?new Error(Un.INVALID_BASE_PATH):n}try{let n=ts.join(e,t+Jm);return await fi.access(n,fi.constants.R_OK|fi.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await fi.access(ts.join(e,t,C5),fi.constants.R_OK|fi.constants.F_OK),ts.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(Un.INVALID_ENVIRONMENT)}else throw new Error(Un.INVALID_ENVIRONMENT);throw n}}o(jb,"validateEnvironmentPath");function fg(e,t){if(lg.validateEnv(e),t===void 0)throw new Error(Un.DBI_NAME_REQUIRED)}o(fg,"validateEnvDBIName");async function L5(e,t,r=!1,n=!1){dg(e,t);let s=ts.basename(e);t=t.toString();let i=Bx.get(xx.CONFIG_PARAMS.DATABASES);i||Bx.setProperty(xx.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await jb(e,t,n),qx(e,t,r)}catch(a){if(a.message===Un.INVALID_ENVIRONMENT){let c=ts.join(e,t);await fi.mkdirp(n?c:e);let l=new Hx(n?c:c+Jm,!1),u=Wb.open(l);u.dbis=Object.create(null);let d=new zb(!1);u.openDB(mi,d),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let f=Jb(e,t,r);return u[Va.ENVIRONMENT_NAME_KEY]=f,global.lmdb_map[f]=u,u}throw a}}o(L5,"createEnvironment");async function M5(e,t,r,n=!0){dg(e,t),t=t.toString();let s=ts.join(e,t);return w5({table:t,database:ts.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}o(M5,"copyEnvironment");async function qx(e,t,r=!1){dg(e,t),t=t.toString();let n=Jb(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 jb(e,t),i=ts.join(e,t+Jm),a=s!=i,c=new Hx(s,a),l=Wb.open(c);l.dbis=Object.create(null);let u=$x(l);for(let d=0;d<u.length;d++)vs(l,u[d]);return l[Va.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}o(qx,"openEnvironment");async function v5(e,t,r=!1){dg(e,t),t=t.toString();let n=ts.join(e,t+Jm),s=await jb(e,t);if(global.lmdb_map!==void 0){let i=Jb(e,t,r);if(global.lmdb_map[i]){let a=global.lmdb_map[i];await Gx(a),delete global.lmdb_map[i]}}await fi.remove(s),await fi.remove(s===n?s+D5:ts.join(ts.dirname(s),P5))}o(v5,"deleteEnvironment");async function Gx(e){lg.validateEnv(e);let t=e[Va.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}o(Gx,"closeEnvironment");function Jb(e,t,r=!1){let s=`${ts.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}o(Jb,"getCachedEnvironmentName");function U5(e){lg.validateEnv(e);let t=Object.create(null),r=vs(e,mi);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==mi)try{t[n]=Object.assign(new ug,s)}catch{Fx.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}o(U5,"listDBIDefinitions");function $x(e){lg.validateEnv(e);let t=[],r=vs(e,mi);for(let{key:n}of r.getRange({start:!1}))n!==mi&&t.push(n);return t}o($x,"listDBIs");function x5(e,t){let n=vs(e,mi).getEntry(t),s=new ug;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{Fx.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}o(x5,"getDBIDefinition");function Vx(e,t,r,n=!r){if(fg(e,t),t=t.toString(),t===mi)throw new Error(Un.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return vs(e,t)}catch(s){if(s.message===Un.DBI_DOES_NOT_EXIST){let i=new zb(r,n===!0),a=e.openDB(t,i),c=new ug(r===!0,n);return a[kx]=c,vs(e,mi).putSync(t,c),e.dbis[t]=a,a}throw s}}o(Vx,"createDBI");function vs(e,t){if(fg(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==mi?r=x5(e,t):r=new ug,r===void 0)throw new Error(Un.DBI_DOES_NOT_EXIST);let n;try{let s=new zb(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(Un.DBI_DOES_NOT_EXIST):s}return n[kx]=r,e.dbis[t]=n,n}o(vs,"openDBI");function B5(e,t){fg(e,t),t=t.toString();let r=vs(e,t),n=r.getStats();return r[Va.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}o(B5,"statDBI");async function F5(e,t){try{let r=ts.join(e,t+Jm);return(await fi.stat(r)).size}catch{throw new Error(Un.INVALID_ENVIRONMENT)}}o(F5,"environmentDataSize");function H5(e,t){if(fg(e,t),t=t.toString(),t===mi)throw new Error(Un.CANNOT_DROP_INTERNAL_DBIS_NAME);vs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],vs(e,mi).removeSync(t)}o(H5,"dropDBI");function k5(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{vs(e,i)}catch(a){if(a.message===Un.DBI_DOES_NOT_EXIST)Vx(e,i,i!==t,i===t),n=!0;else throw a}}n&&O5()}o(k5,"initializeDBIs");Kx.exports={openDBI:vs,openEnvironment:qx,createEnvironment:L5,listDBIs:$x,listDBIDefinitions:U5,createDBI:Vx,dropDBI:H5,statDBI:B5,deleteEnvironment:v5,initializeDBIs:k5,TransactionCursor:Yb,environmentDataSize:F5,copyEnvironment:M5,closeEnvironment:Gx}});var zx=M((KCe,Wx)=>{"use strict";var Qb=gt(),q5=z(),Yx=$r().LMDB_ERRORS_ENUM;Wx.exports=G5;async function G5(e){try{if(global.lmdb_map!==void 0&&e.operation!==void 0){let t=Object.keys(global.lmdb_map),r;switch(e.operation){case"drop_schema":for(let i=0;i<t.length;i++){let a=t[i];if(a.startsWith(`${e.schema}.`)||a.startsWith(`txn.${e.schema}.`))try{await Qb.closeEnvironment(global.lmdb_map[a])}catch(c){if(c.message!==Yx.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await Qb.closeEnvironment(global.lmdb_map[n]),await Qb.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==Yx.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){q5.error(t)}}o(G5,"cleanLMDBMap")});var xo=M((WCe,$5)=>{$5.exports={hdb_user:{hash_attribute:"username",name:"hdb_user",schema:"system",residence:["*"],attributes:[{attribute:"username"},{attribute:"password"},{attribute:"role"},{attribute:"active"},{attribute:"hash"},{attribute:"refresh_token"},{attribute:"hash_function"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_role:{hash_attribute:"id",name:"hdb_role",schema:"system",attributes:[{attribute:"id"},{attribute:"role"},{attribute:"permission"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}],residence:["*"]},hdb_job:{hash_attribute:"id",name:"hdb_job",schema:"system",attributes:[{attribute:"id"},{attribute:"user"},{attribute:"type"},{attribute:"status"},{attribute:"start_datetime"},{attribute:"end_datetime"},{attribute:"message"},{attribute:"created_datetime"},{attribute:"request"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_license:{hash_attribute:"license_key",name:"hdb_license",schema:"system",attributes:[{attribute:"license_key"},{attribute:"company"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_info:{hash_attribute:"info_id",name:"hdb_info",schema:"system",attributes:[{attribute:"info_id"},{attribute:"data_version_num"},{attribute:"hdb_version_num"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_nodes:{hash_attribute:"name",name:"hdb_nodes",schema:"system",attributes:[{attribute:"name"},{attribute:"subscriptions"},{attribute:"system_info"},{attribute:"url"},{attribute:"routes"},{attribute:"revoked_certificates"},{attribute:"shard"}]},hdb_certificate:{hash_attribute:"name",name:"hdb_certificate",schema:"system",attributes:[{attribute:"name"},{attribute:"uses"},{attribute:"certificate"},{attribute:"is_authority"},{attribute:"private_key_name"},{attribute:"details"},{attribute:"is_self_signed"},{attribute:"__updatedtime__"}]},hdb_analytics_hostname:{hash_attribute:"id",name:"hdb_analytics_hostname",schema:"system",attributes:[{attribute:"id"},{attribute:"hostname"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",attributes:[{attribute:"id"},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]},hdb_raw_analytics:{hash_attribute:"id",name:"hdb_raw_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{attribute:"time"},{attribute:"metrics"}]},hdb_temp:{hash_attribute:"id",name:"hdb_temp",schema:"system",attributes:[{attribute:"id"}]},hdb_durable_session:{hash_attribute:"id",name:"hdb_durable_session",schema:"system",attributes:[{attribute:"id"}]},hdb_session_will:{hash_attribute:"id",name:"hdb_session_will",schema:"system",attributes:[{attribute:"id"}]}}});var Us=M((zCe,Qx)=>{var V5=xo(),{promisify:K5}=require("util"),{getDatabases:Jx}=(De(),v(at));Qx.exports={setSchemaDataToGlobal:jx,getTableSchema:Y5,getSystemSchema:W5,setSchemaDataToGlobalAsync:K5(jx)};function jx(e){global.hdb_schema=Jx(),e&&e()}o(jx,"setSchemaDataToGlobal");function Y5(e,t,r){let n=Jx()[e];if(!n)return r(`schema ${e} does not exist`);let s=n[t];return s?r(null,{schema:e,name:t,hash_attribute:s.primaryKey}):r(`table ${e}.${t} does not exist`)}o(Y5,"getTableSchema");function W5(){return V5}o(W5,"getSystemSchema")});var u0=M((QCe,l0)=>{"use strict";var Xb=require("recursive-iterator"),z5=require("alasql"),Zb=require("clone"),Xx=se(),{handleHDBError:Zx,hdbErrors:j5}=_e(),{HDB_ERROR_MSGS:e0,HTTP_STATUS_CODES:t0}=j5,{getDatabases:J5}=(De(),v(at)),Q5=["DISTINCT_ARRAY"],r0=Symbol("validateTables"),eN=Symbol("validateTable"),JCe=Symbol("getAllColumns"),n0=Symbol("validateAllColumns"),mg=Symbol("findColumn"),s0=Symbol("validateOrderBy"),Qm=Symbol("validateSegment"),tN=Symbol("validateColumn"),i0=Symbol("setColumnsForTable"),o0=Symbol("checkColumnsForAsterisk"),a0=Symbol("validateGroupBy"),c0=Symbol("hasColumns"),rN=class{static{o(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[r0](),this[o0](),this[n0]()}[r0](){if(this[c0]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[eN](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[eN](t.table)})}}[c0](){let t=!1,r=new Xb(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[eN](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=J5();if(!r[t.databaseid])throw Zx(new Error,e0.SCHEMA_NOT_FOUND(t.databaseid),t0.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw Zx(new Error,e0.TABLE_NOT_FOUND(t.databaseid,t.tableid),t0.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=Zb(s);i.table=Zb(t),this.attributes.push(i)})}[mg](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)}[o0](){let t=new Xb(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[i0](r.tableid)}[i0](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new z5.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[n0](){this[Qm](this.statement.columns,!1),this[Qm](this.statement.joins,!1),this[Qm](this.statement.where,!1),this[a0](this.statement.group,!1),this[Qm](this.statement.order,!0)}[Qm](t,r){if(!t)return;let n=new Xb(t),s=[];for(let{node:i,path:a}of n)!Xx.isEmpty(i)&&!Xx.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[s0](i):s.push(this[tN](i)));return s}[a0](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&Q5.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=Zb(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[mg](n)[0];s&&r.push(s)}}}),this.statement.group.forEach(n=>{let s=null;if(!n.columnid)r.forEach((i,a)=>{if(i.toString()===n.toString()){s=i,r.splice(a,1);return}});else{let i=this[mg](n);if(!i||i.length===0)throw`unknown column '${group_column.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${group_column.toString()}' in group by`;r.forEach((a,c)=>{if(a.attribute===i[0].attribute&&a.table.tableid===i[0].table.tableid){s=a,r.splice(c,1);return}})}if(!s)throw`group by column '${group_column.toString()}' must be in select`}),r.length>0)throw`select column '${r[0].attribute?r[0].attribute:r[0].toString()}' must be in group by`}[s0](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[tN](t)}[tN](t){let r=this[mg](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]}};l0.exports=rN});var f0=M((ZCe,d0)=>{"use strict";var nN=class{static{o(this,"BridgeMethods")}createSchema(){throw new Error("createSchema bridge method is not defined")}dropSchema(){throw new Error("dropSchema bridge method is not defined")}createTable(){throw new Error("createTable bridge method is not defined")}dropTable(){throw new Error("dropTable bridge method is not defined")}createRecords(){throw new Error("createRecords bridge method is not defined")}updateRecords(){throw new Error("updateRecords bridge method is not defined")}async upsertRecords(){throw new Error("upsertRecords bridge method is not defined")}deleteRecords(){throw new Error("deleteRecords bridge method is not defined")}createAttribute(){throw new Error("createAttribute bridge method is not defined")}dropAttribute(){throw new Error("dropAttribute bridge method is not defined")}searchByConditions(){throw new Error("searchByConditions bridge method is not defined")}searchByHash(){throw new Error("searchByHash bridge method is not defined")}searchByValue(){throw new Error("searchByValue bridge method is not defined")}getDataByHash(){throw new Error("getDataByHash bridge method is not defined")}getDataByValue(){throw new Error("getDataByValue bridge method is not defined")}deleteRecordsBefore(){throw new Error("deleteRecordsBefore bridge method is not defined")}deleteAuditLogsBefore(){throw new Error("deleteAuditLogsBefore bridge method is not defined")}async readAuditLog(){throw new Error("readAuditLog bridge method is not defined")}};d0.exports=nN});var h0=M((tPe,m0)=>{"use strict";var sN=class{static{o(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};m0.exports=sN});var _0=M((nPe,p0)=>{"use strict";var iN=class{static{o(this,"UpdateRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n,this.original_records=s}};p0.exports=iN});var g0=M((iPe,E0)=>{"use strict";var oN=class{static{o(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};E0.exports=oN});var gl=M((uPe,R0)=>{"use strict";var X5=gt(),Z5=h0(),e9=_0(),t9=g0(),Vi=Cn(),Xm=$r().LMDB_ERRORS_ENUM,r9=qt(),Bo=(H(),v($)),n9=se(),s9=require("uuid"),aPe=require("lmdb"),{handleHDBError:i9,hdbErrors:o9}=_e(),{OVERFLOW_MARKER:cPe,MAX_SEARCH_KEY_LENGTH:lPe}=r9,S0=ae();S0.initSync();var hg=S0.get(Bo.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),aN=Bo.TIME_STAMP_NAMES_ENUM.CREATED_TIME,El=Bo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function a9(e,t,r,n,s=Vi.getNextMonotonicTime()){dN(e,t,r,n),cN(e,t,r);let i=new Z5,a=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];T0(u,!0,s);let d=c9(e,t,r,u),f=u[t];a.push(d),c.push(f)}return lN(a,c,n,i,s)}o(a9,"insertRecords");function c9(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let a=r[i];if(a===t||n.hasOwnProperty(a)===!1)continue;let c=n[a];if(typeof c=="function"){let d=c([[{}]]);Array.isArray(d)&&(c=d[0][Bo.FUNC_VAL],n[a]=c)}let l=Vi.getIndexedValues(c),u=e.dbis[a];if(l){hg&&u.prefetch(l.map(d=>({key:d,value:s})),pg);for(let d=0,f=l.length;d<f;d++)u.put(l[d],s)}}hg&&e.dbis[t].prefetch([s],pg),e.dbis[t].put(s,n,n[El])})}o(c9,"insertRecord");function l9(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}o(l9,"removeSkippedRecords");function T0(e,t,r){let n=r>0;(n||!Number.isInteger(e[El]))&&(e[El]=r||(r=Vi.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[aN]))&&(e[aN]=r||Vi.getNextMonotonicTime()):delete e[aN]}o(T0,"setTimestamps");function cN(e,t,r){r.indexOf(Bo.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(Bo.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(Bo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(Bo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),X5.initializeDBIs(e,t,r)}o(cN,"initializeTransaction");async function u9(e,t,r,n,s=Vi.getNextMonotonicTime()){dN(e,t,r,n),cN(e,t,r);let i=new e9,a=[],c=[],l=[];for(let u=0;u<n.length;u++){let d=n[u],f=d[t],m;try{m=uN(e,t,d,f,i,!0,s)}catch{i.skipped_hashes.push(f),a.push(u);continue}c.push(m),l.push(f)}return lN(c,l,n,i,s,a)}o(u9,"updateRecords");async function d9(e,t,r,n,s=Vi.getNextMonotonicTime()){try{dN(e,t,r,n)}catch(l){throw i9(l,l.message,o9.HTTP_STATUS_CODES.BAD_REQUEST)}cN(e,t,r);let i=new t9,a=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],d;n9.isEmpty(u[t])?(d=s9.v4(),u[t]=d):d=u[t];let f=uN(e,t,u,d,i,!1,s);a.push(f),c.push(d)}return lN(a,c,n,i,s)}o(d9,"upsertRecords");async function lN(e,t,r,n,s,i=[]){let a=await Promise.all(e);for(let c=0,l=a.length;c<l;c++)a[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Vi.getNextMonotonicTime(),l9(r,i),n}o(lN,"finalizeWrite");function uN(e,t,r,n,s,i=!1,a){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,d=u;if(!u){if(i)return!1;u={}}if(T0(r,!d,a),Number.isInteger(r[El])&&u[El]>r[El])return!1;d&&s.original_records.push(u);let f,m=o(()=>{for(let p in r){if(!r.hasOwnProperty(p)||p===t)continue;let E=r[p],g=e.dbis[p];if(g===void 0)continue;let y=u[p];if(typeof E=="function"){let R=E([[u]]);Array.isArray(R)&&(E=R[0][Bo.FUNC_VAL],r[p]=E)}if(E===y)continue;let T=Vi.getIndexedValues(y);if(T){hg&&g.prefetch(T.map(R=>({key:R,value:n})),pg);for(let R=0,N=T.length;R<N;R++)g.remove(T[R],n)}if(T=Vi.getIndexedValues(E),T){hg&&g.prefetch(T.map(R=>({key:R,value:n})),pg);for(let R=0,N=T.length;R<N;R++)g.put(T[R],n)}}let h={...u,...r};c.put(n,h,h[El])},"doPut");return l?f=c.ifVersion(n,l.version,m):f=c.ifNoExists(n,m),f.then(h=>h?!0:uN(e,t,r,n,s,i,a))}o(uN,"updateUpsertRecord");function f9(e,t,r){if(Vi.validateEnv(e),t===void 0)throw new Error(Xm.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Xm.WRITE_ATTRIBUTES_REQUIRED):new Error(Xm.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}o(f9,"validateBasic");function dN(e,t,r,n){if(f9(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Xm.RECORDS_REQUIRED):new Error(Xm.RECORDS_MUST_BE_ARRAY)}o(dN,"validateWrite");function pg(){}o(pg,"noop");R0.exports={insertRecords:a9,updateRecords:u9,upsertRecords:d9}});var lt=M((fPe,y0)=>{"use strict";var xn=require("validate.js");xn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||xn.validators.type.checks[t](e)?null:` must be a '${t}' value`};xn.validators.type.checks={Object:o(function(e){return xn.isObject(e)&&!xn.isArray(e)},"Object"),Array:xn.isArray,Integer:xn.isInteger,Number:xn.isNumber,String:xn.isString,Date:xn.isDate,Boolean:o(function(e){return typeof e=="boolean"},"Boolean")};xn.validators.hasValidFileExt=function(e,t){return xn.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};y0.exports={validateObject:m9,validateObjectAsync:h9,validateBySchema:p9};function m9(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=xn(e,t,{format:"flat"});return r?new Error(r):null}o(m9,"validateObject");async function h9(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await xn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}o(h9,"validateObjectAsync");function p9(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}o(p9,"validateBySchema")});var b0=M((hPe,A0)=>{"use strict";var _9=require("uuid"),fN=class{static{o(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||_9.v4(),this.schema_table=`${this.schema}.${this.table}`}};A0.exports=fN});var _g=M((_Pe,N0)=>{"use strict";var E9=b0(),mN=class extends E9{static{o(this,"LMDBCreateAttributeObject")}constructor(t,r,n,s,i=!0,a=!1){super(t,r,n,s),this.dup_sort=i,this.is_hash_attribute=a}};N0.exports=mN});var w0=M((gPe,I0)=>{"use strict";I0.exports=S9;var g9="inserted";function S9(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===g9?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}o(S9,"returnObject")});var Eg=M((RPe,C0)=>{"use strict";var T9=(H(),v($)),hN=gt(),R9=gl(),{getSystemSchemaPath:y9,getSchemaPath:A9}=At(),TPe=xo(),{validateBySchema:b9}=lt(),Zm=require("joi"),N9=_g(),I9=w0(),{handleHDBError:w9,hdbErrors:O9,ClientError:C9}=_e(),O0=se(),{HTTP_STATUS_CODES:P9}=O9,D9="inserted";C0.exports=L9;async function L9(e){let t=b9(e,Zm.object({database:Zm.string(),schema:Zm.string(),table:Zm.string().required(),attribute:Zm.string().required()}));if(t)throw new C9(t.message);let r=!e.skip_table_check&&O0.checkGlobalSchemaTable(e.schema,e.table);if(r)throw w9(new Error,r,P9.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=O0.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 N9(e.schema,e.table,e.attribute,e.id);try{let i=await hN.openEnvironment(A9(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${create_attribute_obj.attribute}' already exists in ${e.schema}.${e.table}`);hN.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let a=await hN.openEnvironment(y9(),T9.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await R9.insertRecords(a,HDB_TABLE_INFO.hash_attribute,hdbAttributeAttributes,[s]);return I9(D9,c,{records:[s]},l)}catch(i){throw i}}o(L9,"lmdbCreateAttribute")});var Yi=M((APe,D0)=>{"use strict";var P0=se(),M9=(H(),v($)),rd=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Ki=require("joi"),Ka={schema_format:{pattern:rd,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},v9=Ki.alternatives(Ki.string().min(1).max(Ka.schema_length.maximum).pattern(rd).messages({"string.pattern.base":"{:#label} "+Ka.schema_format.message}),Ki.number(),Ki.array()).required(),U9=Ki.alternatives(Ki.string().min(1).max(Ka.schema_length.maximum).pattern(rd).messages({"string.pattern.base":"{:#label} "+Ka.schema_format.message}),Ki.number()),x9=Ki.alternatives(Ki.string().min(1).max(Ka.schema_length.maximum).pattern(rd).messages({"string.pattern.base":"{:#label} "+Ka.schema_format.message}),Ki.number()).required();function B9(e,t){return t?typeof t!="string"?`'${property_name}' must be a string`:t.length?t.length>Ka.schema_length.maximum?`'${property_name}' maximum of 250 characters`:rd.test(t)?"":`'${property_name}' has illegal characters`:`'${property_name}' must be at least one character`:`'${property_name}' is required`}o(B9,"checkValidTable");function F9(e,t){return P0.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}o(F9,"validateSchemaExists");function H9(e,t){let r=t.state.ancestors[0].schema;return P0.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}o(H9,"validateTableExists");function k9(e,t){return e.toLowerCase()===M9.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${hdb_terms.SYSTEM_SCHEMA_NAME}' name is reserved`):e}o(k9,"validateSchemaName");D0.exports={commonValidators:Ka,schemaRegex:rd,hdbSchemaTable:v9,validateSchemaExists:F9,validateTableExists:H9,validateSchemaName:k9,checkValidTable:B9,hdbDatabase:U9,hdbTable:x9}});var _N=M((NPe,M0)=>{var{hdbTable:q9,hdbDatabase:L0}=Yi(),G9=lt(),pN=require("joi"),$9={undefined:"undefined",null:"null"},V9=o((e,t)=>{let r=Object.keys(e),n=r.length,s;for(let i=0;i<n;i++){let a=r[i];(!a||a.length===0||$9[a]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${a}'`:s+=`. Invalid attribute name: '${a}'`)}return s?t.message(s):e},"customRecordsVal"),K9=pN.object({database:L0,schema:L0,table:q9,records:pN.array().items(pN.object().custom(V9)).required()});M0.exports=function(e){return G9.validateBySchema(e,K9)}});var eh=M((OPe,U0)=>{"use strict";var Fo=se(),v0=z(),wPe=_N(),{getDatabases:Y9}=(De(),v(at)),{ClientError:Sl}=_e();U0.exports=W9;function W9(e){if(Fo.isEmpty(e))throw new Sl("invalid update parameters defined.");if(Fo.isEmptyOrZeroLength(e.schema))throw new Sl("invalid schema specified.");if(Fo.isEmptyOrZeroLength(e.table))throw new Sl("invalid table specified.");if(!Array.isArray(e.records))throw new Sl("records must be an array");let t=Y9()[e.schema]?.[e.table];if(Fo.isEmpty(t))throw new Sl(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.primaryKey,n=new Set,s={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(a=>{if(i&&Fo.isEmptyOrZeroLength(a[r]))throw v0.error("a valid hash attribute must be provided with update record:",a),new Sl("a valid hash attribute must be provided with update record, check log for more info");if(!Fo.isEmptyOrZeroLength(a[r])&&(a[r]==="null"||a[r]==="undefined"))throw v0.error(`a valid hash value must be provided with ${e.operation} record:`,a),new Sl(`Invalid hash value: '${a[r]}' is not a valid hash attribute value, check log for more info`);!Fo.isEmpty(a[r])&&a[r]!==""&&n.has(Fo.autoCast(a[r]))&&(a.skip=!0),n.add(Fo.autoCast(a[r]));for(let c in a)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}o(W9,"insertUpdateValidate")});var gg=M((PPe,B0)=>{"use strict";var x0=se(),z9=(H(),v($)),j9=z(),J9=Eg(),Q9=_g(),X9=Ho(),{SchemaEventMsg:Z9}=hi(),e7="already exists in";B0.exports=t7;async function t7(e,t,r){if(x0.isEmptyOrZeroLength(r))return r;let n=[];x0.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 r7(e,t.schema,t.name,i)})),s}o(t7,"lmdbCheckForNewAttributes");async function r7(e,t,r,n){let s=new Q9(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await n7(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(e7))j9.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}o(r7,"createNewAttribute");async function n7(e){let t;return t=await J9(e),X9.signalSchemaChange(new Z9(process.pid,z9.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}o(n7,"createAttribute")});var nd=M((LPe,F0)=>{"use strict";var EN=class{static{o(this,"LMDBTransactionObject")}constructor(t,r,n,s,i=void 0){this.operation=t,this.user_name=r,this.timestamp=n,this.hash_values=s,this.origin=i}};F0.exports=EN});var k0=M((vPe,H0)=>{"use strict";var s7=nd(),i7=(H(),v($)).OPERATIONS_ENUM,gN=class extends s7{static{o(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(i7.INSERT,r,n,s,i),this.records=t}};H0.exports=gN});var G0=M((xPe,q0)=>{"use strict";var o7=nd(),a7=(H(),v($)).OPERATIONS_ENUM,SN=class extends o7{static{o(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,a=void 0){super(a7.UPDATE,n,s,i,a),this.records=t,this.original_records=r}};q0.exports=SN});var V0=M((FPe,$0)=>{"use strict";var c7=nd(),l7=(H(),v($)).OPERATIONS_ENUM,TN=class extends c7{static{o(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,a=void 0){super(l7.UPSERT,n,s,i,a),this.records=t,this.original_records=r}};$0.exports=TN});var Y0=M((kPe,K0)=>{"use strict";var u7=nd(),d7=(H(),v($)).OPERATIONS_ENUM,RN=class extends u7{static{o(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(d7.DELETE,n,s,t,i),this.original_records=r}};K0.exports=RN});var th=M(($Pe,J0)=>{"use strict";var GPe=require("path"),W0=gt(),f7=k0(),m7=G0(),h7=V0(),p7=Y0(),sd=qt(),z0=se(),{CONFIG_PARAMS:_7}=(H(),v($)),j0=ae();j0.initSync();var Sg=(H(),v($)).OPERATIONS_ENUM,{getTransactionAuditStorePath:E7}=At();J0.exports=g7;async function g7(e,t){if(j0.get(_7.LOGGING_AUDITLOG)===!1)return;let r=E7(e.schema,e.table),n=await W0.openEnvironment(r,e.table,!0),s=S7(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){W0.initializeDBIs(n,sd.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,sd.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[sd.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[sd.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),z0.isEmpty(s.user_name)||n.dbis[sd.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let a=0;a<s.hash_values.length;a++)n.dbis[sd.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[a],i)})}}o(g7,"writeTransaction");function S7(e,t){let r=z0.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===Sg.INSERT)return new f7(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Sg.UPDATE)return new m7(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Sg.UPSERT)return new h7(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Sg.DELETE)return new p7(t.deleted,t.original_records,r,t.txn_time,e.__origin)}o(S7,"createTransactionObject")});var yN=M((YPe,Q0)=>{"use strict";var T7=eh(),KPe=Rm(),rh=(H(),v($)),R7=ym(),y7=gl().insertRecords,A7=gt(),b7=z(),N7=gg(),{getSchemaPath:I7}=At(),w7=th();Q0.exports=O7;async function O7(e){try{let{schemaTable:t,attributes:r}=T7(e);R7(e,r,t.hash_attribute),e.schema!==rh.SYSTEM_SCHEMA_NAME&&(r.includes(rh.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(rh.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(rh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(rh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await N7(e.hdb_auth_header,t,r),s=I7(e.schema,e.table),i=await A7.openEnvironment(s,e.table),a=await y7(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await w7(e,a)}catch(c){b7.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:a.txn_time}}catch(t){throw t}}o(O7,"lmdbCreateRecords")});var eB=M((zPe,Z0)=>{"use strict";var X0=(H(),v($)),C7=yN(),P7=Rm(),D7=require("fs-extra"),{getSchemaPath:L7}=At();Z0.exports=M7;async function M7(e){let t=[{name:e.schema,createddate:Date.now()}],r=new P7(X0.SYSTEM_SCHEMA_NAME,X0.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await C7(r),await D7.mkdirp(L7(e.schema))}o(M7,"lmdbCreateSchema")});var rB=M((JPe,tB)=>{"use strict";var AN=class{static{o(this,"DeleteRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.deleted=t,this.skipped=r,this.txn_time=n,this.original_records=s}};tB.exports=AN});var oB=M((tDe,iB)=>{"use strict";var nB=gt(),bN=Cn(),NN=$r().LMDB_ERRORS_ENUM,v7=qt(),sB=z(),XPe=se(),U7=require("lmdb"),x7=rB(),B7=(H(),v($)),{OVERFLOW_MARKER:ZPe,MAX_SEARCH_KEY_LENGTH:eDe}=v7,F7=B7.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function H7(e,t,r,n){if(bN.validateEnv(e),t===void 0)throw new Error(NN.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(NN.IDS_REQUIRED):new Error(NN.IDS_MUST_BE_ITERABLE);try{let s=nB.listDBIs(e);nB.initializeDBIs(e,t,s);let i=new x7,a,c=[],l=[];for(let m=0,h=r.length;m<h;m++)try{a=r[m];let p=e.dbis[t].get(a);if(!p||n&&p[F7]>n){i.skipped.push(a);continue}let E=e.dbis[t].ifVersion(a,U7.IF_EXISTS,()=>{e.dbis[t].remove(a);for(let g=0;g<s.length;g++){let y=s[g];if(!p.hasOwnProperty(y)||y===t)continue;let T=e.dbis[y],R=p[y];if(R!=null)try{let N=bN.getIndexedValues(R);if(N)for(let P=0,Y=N.length;P<Y;P++)T.remove(N[P],a)}catch{sB.warn(`cannot delete from attribute: ${y}, ${R}:${a}`)}}});c.push(E),l.push(a),i.original_records.push(p)}catch(p){sB.warn(p),i.skipped.push(a)}let u=[],d=await Promise.all(c);for(let m=0,h=d.length;m<h;m++)d[m]===!0?i.deleted.push(l[m]):(i.skipped.push(l[m]),u.push(m));let f=0;for(let m=0;m<u.length;m++){let h=u[m];i.original_records.splice(h-f,1),f++}return i.txn_time=bN.getNextMonotonicTime(),i}catch(s){throw s}}o(H7,"deleteRecords");iB.exports={deleteRecords:H7}});var nh=M((nDe,cB)=>{"use strict";var id=se(),k7=oB(),q7=gt(),{getSchemaPath:G7}=At(),$7=th(),V7=z();cB.exports=K7;async function K7(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(id.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(id.isEmptyOrZeroLength(e.hash_values)&&!id.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];id.isEmpty(l)||e.hash_values.push(l)}}if(id.isEmptyOrZeroLength(e.hash_values))return aB([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(id.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=G7(e.schema,e.table),i=await q7.openEnvironment(s,e.table),a=await k7.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await $7(e,a)}catch(c){V7.error(`unable to write transaction due to ${c.message}`)}return aB(a.deleted,a.skipped,a.txn_time)}catch(s){throw s}}o(K7,"lmdbDeleteRecords");function aB(e,t,r){let n=e.length+t.length,s=n===1?"record":"records";return{message:`${e.length} of ${n} ${s} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}o(aB,"createDeleteResponse")});var wN=M((oDe,lB)=>{"use strict";var Y7=(H(),v($)),iDe=Cn();function IN(e,t){let r=Object.create(null);if(t.length===1&&Y7.SEARCH_WILDCARDS.indexOf(t[0])>=0)Object.assign(r,e);else for(let n=0;n<t.length;n++){let s=t[n],i=e[s];r[s]=i===void 0?null:i}return r}o(IN,"parseRow");function W7(e,t,r,n){let s=IN(r,e);n.push(s)}o(W7,"searchAll");function z7(e,t,r,n){let s=IN(r,e);n[t]=s}o(z7,"searchAllToMap");function j7(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}o(j7,"iterateDBI");function Tl(e,t,r,n,s){let i=Object.create(null);i[s]=e;let a;n===s?a=e:(a=t,n!==void 0&&(i[n]=a)),r[0].push(a),r[1].push(i)}o(Tl,"pushResults");function J7(e,t,r,n,s,i){t.toString().endsWith(e)&&Tl(t,r,n,s,i)}o(J7,"endsWith");function Q7(e,t,r,n,s,i){t.toString().includes(e)&&Tl(t,r,n,s,i)}o(Q7,"contains");function X7(e,t,r,n,s,i){t>e&&Tl(t,r,n,s,i)}o(X7,"greaterThanCompare");function Z7(e,t,r,n,s,i){t>=e&&Tl(t,r,n,s,i)}o(Z7,"greaterThanEqualCompare");function eee(e,t,r,n,s,i){t<e&&Tl(t,r,n,s,i)}o(eee,"lessThanCompare");function tee(e,t,r,n,s,i){t<=e&&Tl(t,r,n,s,i)}o(tee,"lessThanEqualCompare");lB.exports={parseRow:IN,searchAll:W7,searchAllToMap:z7,iterateDBI:j7,endsWith:J7,contains:Q7,greaterThanCompare:X7,greaterThanEqualCompare:Z7,lessThanCompare:eee,lessThanEqualCompare:tee,pushResults:Tl}});var od=M((dDe,_B)=>{"use strict";var Ya=gt(),cDe=z(),rs=Cn(),Tg=qt(),Xt=$r().LMDB_ERRORS_ENUM,lDe=se(),ree=(H(),v($)),Rg=wN(),{parseRow:nee}=Rg,uDe=require("lmdb"),{OVERFLOW_MARKER:uB,MAX_SEARCH_KEY_LENGTH:see}=Tg;function dB(e,t,r,n=!1,s=void 0,i=void 0){return Rl(e,t,r,(a,c)=>c.getRange({transaction:a,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}))}o(dB,"iterateFullIndex");function sh(e,t,r,n,s,i=!1,a=void 0,c=void 0,l=!1,u=!1){return Rl(e,t,r,(d,f,m,h)=>{let T={transaction:d,start:i===!0?s:n,end:i===!0?n:s,reverse:i,limit:a,offset:c,inclusiveEnd:i===!0?!l:!u,exclusiveStart:i===!0?u:l};return h===r?(T.values=!1,f.getRange(T).map(R=>({value:R}))):f.getRange(T)})}o(sh,"iterateRangeBetween");function Rl(e,t,r,n){let s=e.database||e,i=Ya.openDBI(s,r);i[Tg.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&Ya.openDBI(s,t);let a;e.database?a=e:(a=e.useReadTransaction(),a.database=e);let c=n(a,i,s,t);return c.transaction=a,e.database||(c.onDone=()=>{a.done()}),c}o(Rl,"setupTransaction");function fB(e,t,r,n){let s;return function(i,a){if(typeof i=="string"&&i.endsWith(uB)){if(!s)if(r)s=Ya.openDBI(e,r);else{let l=Ya.listDBIs(e);for(let u=0,d=l.length;u<d&&(s=Ya.openDBI(e,l[u]),!s[Tg.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(a,{transaction:t,lazy:!0})[n]}return i}}o(fB,"getOverflowCheck");function iee(e,t,r,n=!1,s=void 0,i=void 0){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);return Rl(e,t,t,(a,c,l)=>(yg(r),r=ih(l,r),c.getRange({transaction:a,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>nee(u.value,r))))}o(iee,"searchAll");function oee(e,t,r,n=!1,s=void 0,i=void 0){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);yg(r),r=ih(e.database||e,r);let a=new Map;for(let{key:c,value:l}of dB(e,t,t,n,s,i))a.set(c,Rg.parseRow(l,r));return a}o(oee,"searchAllToMap");function aee(e,t,r=!1,n=void 0,s=void 0){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.ATTRIBUTE_REQUIRED);let i=Object.create(null),a=dB(e,void 0,t,r,n,s),c=a.transaction,l=fB(c.database,c,void 0,t);for(let{key:u,value:d}of a){let f=l(u,d);i[f]===void 0&&(i[f]=[]),i[f].push(d)}return i}o(aee,"iterateDBI");function cee(e,t){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);return Ya.statDBI(e,t).entryCount}o(cee,"countAll");function lee(e,t,r,n,s=!1,i=void 0,a=void 0){return Wa(e,r,n),Rl(e,t,r,(c,l,u,d)=>(n=rs.convertKeyValueToWrite(n),d===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:a}).map(f=>({key:n,value:f}))))}o(lee,"equals");function uee(e,t,r){return Wa(e,t,r),Ya.openDBI(e,t).getValuesCount(r)}o(uee,"count");function dee(e,t,r,n,s=!1,i=void 0,a=void 0){return Wa(e,r,n),Rl(e,null,r,(c,l)=>{n=rs.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let d;if(s===!0){let f;for(let m of l.getKeys({transaction:c,start:n}))if(!m.startsWith(n)){f=m;break}return f!==void 0&&(Number.isInteger(a)?a++:i++),d=l.getRange({transaction:c,start:f,end:void 0,reverse:s,limit:i,offset:a}).map(m=>{let{key:h}=m;if(h!==f){if(h.toString().startsWith(n))return m;if(u===!0)return d.DONE}}),d.filter(m=>m)}else return d=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:a}).map(f=>{if(f.key.toString().startsWith(n))return f;if(u===!0)return d.DONE}),u?d:d.filter(f=>f)})}o(dee,"startsWith");function fee(e,t,r,n,s=!1,i=void 0,a=void 0){return mB(e,t,r,n,s,i,a,!0)}o(fee,"endsWith");function mB(e,t,r,n,s=!1,i=void 0,a=void 0,c=!1){return Wa(e,r,n),Rl(e,null,r,(l,u,d,f)=>{let m=fB(d,l,f,r);return a=Number.isInteger(a)?a:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(h=>{let p=h.toString();return p.endsWith(uB)?u.getValues(h,{transaction:l}).map(E=>{let g=m(h,E);if(c?g.endsWith(n):g.includes(n))return{key:g,value:E}}).filter(E=>E):(c?p.endsWith(n):p.includes(n))?u[Tg.DBI_DEFINITION_NAME].is_hash_attribute?{key:h,value:h}:u.getValues(h,{transaction:l}).map(E=>({key:h,value:E})):[]}).slice(a,i===void 0?void 0:i+(a||0))})}o(mB,"contains");function mee(e,t,r,n,s=!1,i=void 0,a=void 0){Wa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),sh(e,t,r,n,l,s,i,a,!0,!1)}o(mee,"greaterThan");function hee(e,t,r,n,s=!1,i=void 0,a=void 0){Wa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),sh(e,t,r,n,l,s,i,a,!1,!1)}o(hee,"greaterThanEqual");function pee(e,t,r,n,s=!1,i=void 0,a=void 0){Wa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),sh(e,t,r,l,n,s,i,a,!1,!0)}o(pee,"lessThan");function _ee(e,t,r,n,s=!1,i=void 0,a=void 0){Wa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),sh(e,t,r,l,n,s,i,a,!1,!1)}o(_ee,"lessThanEqual");function Eee(e,t,r,n,s,i=!1,a=void 0,c=void 0){if(rs.validateEnv(e),r===void 0)throw new Error(Xt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(Xt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(Xt.END_VALUE_REQUIRED);if(n=rs.convertKeyValueToWrite(n),s=rs.convertKeyValueToWrite(s),n>s)throw new Error(Xt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return sh(e,t,r,n,s,i,a,c)}o(Eee,"between");function gee(e,t,r,n){rs.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);if(yg(r),r=ih(s,r),n===void 0)throw new Error(Xt.ID_REQUIRED);let a=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(a=Rg.parseRow(c,r)),a}o(gee,"searchByHash");function See(e,t,r){rs.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Xt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}o(See,"checkHashExists");function Tee(e,t,r,n,s=[]){return pB(e,t,r,n,s),hB(e,t,r,n,s).map(i=>i[1])}o(Tee,"batchSearchByHash");function Ree(e,t,r,n,s=[]){pB(e,t,r,n,s);let i=new Map;for(let[a,c]of hB(e,t,r,n,s))i.set(a,c);return i}o(Ree,"batchSearchByHashToMap");function hB(e,t,r,n,s=[]){return Rl(e,t,t,(i,a,c)=>{r=ih(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,Rg.parseRow(d,r)];s.push(u)}).filter(u=>u)})}o(hB,"batchHashSearch");function pB(e,t,r,n,s){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);if(yg(r),n==null)throw new Error(Xt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(Xt.IDS_MUST_BE_ITERABLE)}o(pB,"initializeBatchSearchByHash");function yg(e){if(!Array.isArray(e))throw e===void 0?new Error(Xt.FETCH_ATTRIBUTES_REQUIRED):new Error(Xt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}o(yg,"validateFetchAttributes");function Wa(e,t,r){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Xt.SEARCH_VALUE_REQUIRED);if(r?.length>see)throw new Error(Xt.SEARCH_VALUE_TOO_LARGE)}o(Wa,"validateComparisonFunctions");function ih(e,t){return t.length===1&&ree.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=Ya.listDBIs(e)),t}o(ih,"setGetWholeRowAttributes");_B.exports={searchAll:iee,searchAllToMap:oee,count:uee,countAll:cee,equals:lee,startsWith:dee,endsWith:fee,contains:mB,searchByHash:gee,setGetWholeRowAttributes:ih,batchSearchByHash:Tee,batchSearchByHashToMap:Ree,checkHashExists:See,iterateDBI:aee,greaterThan:mee,greaterThanEqual:hee,lessThan:pee,lessThanEqual:_ee,between:Eee}});var ad=M((mDe,RB)=>{var EB=require("lodash"),gB=lt(),$e=require("joi"),yee=se(),{hdbSchemaTable:oh,checkValidTable:SB,hdbTable:TB,hdbDatabase:Ag}=Yi(),{handleHDBError:Aee,hdbErrors:bee}=_e(),{getDatabases:Nee}=(De(),v(at)),{HTTP_STATUS_CODES:Iee}=bee,wee=$e.object({database:Ag,schema:Ag,table:TB,search_attribute:oh,search_value:$e.any().required(),get_attributes:$e.array().min(1).items($e.alternatives(oh,$e.object())).optional(),desc:$e.bool(),limit:$e.number().integer().min(1),offset:$e.number().integer().min(0)}),Oee=$e.object({database:Ag,schema:Ag,table:TB,operator:$e.string().valid("and","or").default("and").lowercase(),offset:$e.number().integer().min(0),limit:$e.number().integer().min(1),get_attributes:$e.array().min(1).items($e.alternatives(oh,$e.object())).optional(),sort:$e.object({attribute:$e.alternatives(oh,$e.array().min(1)),descending:$e.bool().optional()}).optional(),conditions:$e.array().min(1).items($e.alternatives($e.object({operator:$e.string().valid("and","or").default("and").lowercase(),conditions:$e.array()}),$e.object({search_attribute:$e.alternatives(oh,$e.array().min(1)),search_type:$e.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:$e.when("search_type",{switch:[{is:"equals",then:$e.any()},{is:"between",then:$e.array().items($e.alternatives([$e.string(),$e.number()])).length(2)}],otherwise:$e.alternatives($e.string(),$e.number())}).required()}))).required()});RB.exports=function(e,t){let r=null;switch(t){case"value":r=gB.validateBySchema(e,wee);break;case"hashes":let i=function(a){s?s+=". "+a:s=a};var n=i;o(i,"addError");let s;i(SB("database",e.schema)),i(SB("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(a=>typeof a=="string"||typeof a=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(a=>typeof a=="string"||typeof a=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),s&&(r=new Error(s.trim()));break;case"conditions":r=gB.validateBySchema(e,Oee);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=yee.checkGlobalSchemaTable(e.schema,e.table);if(s)return Aee(new Error,s,Iee.NOT_FOUND);let a=Nee()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.search_attribute);let l=o(d=>{for(let f=0,m=d.conditions.length;f<m;f++){let h=d.conditions[f];h.conditions?l(h):c.push(h.search_attribute)}},"addConditions");t==="conditions"&&l(e);let u=EB.filter(c,d=>d!=="*"&&!d.startsWith?.("$")&&d.attribute!=="*"&&!Array.isArray(d)&&!d.name&&!EB.some(a,f=>f===d||f.attribute===d||f.attribute===d.attribute));if(u&&u.length>0){let d=u.join(", ");return d=d.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${d}'`)}}return r}});var ON=M((pDe,yB)=>{"use strict";var Cee=gt(),Pee=ad(),{getSchemaPath:Dee}=At();yB.exports=Lee;function Lee(e){let t=Pee(e,"hashes");if(t)throw t;let r=Dee(e.schema,e.table);return Cee.openEnvironment(r,e.table)}o(Lee,"initialize")});var CN=M((EDe,AB)=>{"use strict";var Mee=od(),vee=ON();AB.exports=Uee;async function Uee(e){let t=await vee(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return Mee.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}o(Uee,"lmdbGetDataByHash")});var cd=M((SDe,bB)=>{"use strict";var PN=class{static{o(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};bB.exports=PN});var IB=M((yDe,NB)=>{"use strict";var RDe=cd(),xee=od(),Bee=ON();NB.exports=Fee;async function Fee(e){let t=await Bee(e),r=global.hdb_schema[e.schema][e.table];return xee.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}o(Fee,"lmdbSearchByHash")});var pi=M((bDe,wB)=>{"use strict";var DN=class{static{o(this,"SearchObject")}constructor(t,r,n,s,i,a,c,l=!1,u=void 0,d=void 0){this.schema=t,this.table=r,this.search_attribute=n,this.search_value=s,this.hash_attribute=i,this.get_attributes=a,this.end_value=c,this.reverse=l,this.limit=u,this.offset=d}};wB.exports=DN});var bg=M((IDe,MB)=>{"use strict";var on=od(),Hee=gt(),kee=se(),Ve=qt(),yl=(H(),v($)),qee=xo(),OB=$r().LMDB_ERRORS_ENUM,{getSchemaPath:Gee}=At(),ko=yl.SEARCH_WILDCARDS;async function $ee(e,t,r){let n;e.schema===yl.SYSTEM_SCHEMA_NAME?n=qee[e.table]:n=global.hdb_schema[e.schema][e.table];let s=LB(e,n.hash_attribute,r,t);return PB(e,s,n.hash_attribute,r)}o($ee,"prepSearch");async function PB(e,t,r,n){let s=Gee(e.schema,e.table),i=await Hee.openEnvironment(s,e.table),a=DB(i,e,t,r),c=a.transaction||i;if([Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,Ve.SEARCH_TYPES.SEARCH_ALL,Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return a;if(Vee(e,r)===!1){let d=e.search_attribute;if(d===r)return n?CB(a,()=>!0):a.map(m=>({[r]:m.key}));let f=o(m=>({[r]:m.value,[d]:m.key}),"toObject");return n?CB(a,f):a.map(f)}let u=e.search_attribute===r?a.map(d=>d.key):a.map(d=>d.value);return n===!0?on.batchSearchByHashToMap(c,r,e.get_attributes,u):on.batchSearchByHash(c,r,e.get_attributes,u)}o(PB,"executeSearch");function DB(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:a,limit:c,offset:l}=t;switch(a=typeof a=="boolean"?a:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case Ve.SEARCH_TYPES.EQUALS:s=on.equals(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.CONTAINS:s=on.contains(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.ENDS_WITH:case Ve.SEARCH_TYPES._ENDS_WITH:s=on.endsWith(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.STARTS_WITH:case Ve.SEARCH_TYPES._STARTS_WITH:s=on.startsWith(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return on.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return on.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case Ve.SEARCH_TYPES.SEARCH_ALL:return on.searchAll(e,n,t.get_attributes,a,c,l);case Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return on.searchAllToMap(e,n,t.get_attributes,a,c,l);case Ve.SEARCH_TYPES.BETWEEN:s=on.between(e,i,t.search_attribute,t.search_value,t.end_value,a,c,l);break;case Ve.SEARCH_TYPES.GREATER_THAN:case Ve.SEARCH_TYPES._GREATER_THAN:s=on.greaterThan(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.GREATER_THAN_EQUAL:case Ve.SEARCH_TYPES._GREATER_THAN_EQUAL:s=on.greaterThanEqual(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.LESS_THAN:case Ve.SEARCH_TYPES._LESS_THAN:s=on.lessThan(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.LESS_THAN_EQUAL:case Ve.SEARCH_TYPES._LESS_THAN_EQUAL:s=on.lessThanEqual(e,i,t.search_attribute,t.search_value,a,c,l);break;default:return Object.create(null)}return s}o(DB,"searchByType");function CB(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}o(CB,"createMapFromIterable");function Vee(e,t){if(e.get_attributes.length===1&&e.get_attributes[0]==="*")return!0;let r=[e.search_attribute];e.get_attributes.indexOf(t)>=0&&r.push(t);let n=!1;for(let s=0;s<e.get_attributes.length;s++)if(r.indexOf(e.get_attributes[s])<0){n=!0;break}return n}o(Vee,"checkToFetchMore");function LB(e,t,r,n){if(kee.isEmpty(n)){let s=e.search_value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),a=s.charAt(s.length-1),c=!1;if(e.search_attribute===t&&(c=!0),ko.indexOf(s)>-1)return r===!0?Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP:Ve.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(ko[0])<0&&s.indexOf(ko[1])<0)return c===!0?r===!0?Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:Ve.SEARCH_TYPES.EQUALS;if(ko.indexOf(i)>=0&&ko.indexOf(a)>=0)return e.search_value=e.search_value.slice(1,-1),Ve.SEARCH_TYPES.CONTAINS;if(ko.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),Ve.SEARCH_TYPES.ENDS_WITH;if(ko.indexOf(a)>=0)return e.search_value=e.search_value.slice(0,-1),Ve.SEARCH_TYPES.STARTS_WITH;if(s.includes(ko[0])||s.includes(ko[1]))return Ve.SEARCH_TYPES.EQUALS;throw new Error(OB.UNKNOWN_SEARCH_TYPE)}else switch(n){case yl.VALUE_SEARCH_COMPARATORS.BETWEEN:return Ve.SEARCH_TYPES.BETWEEN;case yl.VALUE_SEARCH_COMPARATORS.GREATER:return Ve.SEARCH_TYPES.GREATER_THAN;case yl.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return Ve.SEARCH_TYPES.GREATER_THAN_EQUAL;case yl.VALUE_SEARCH_COMPARATORS.LESS:return Ve.SEARCH_TYPES.LESS_THAN;case yl.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return Ve.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(OB.UNKNOWN_SEARCH_TYPE)}}o(LB,"createSearchTypeFromSearchObject");MB.exports={executeSearch:PB,createSearchTypeFromSearchObject:LB,prepSearch:$ee,searchByType:DB}});var UB=M((CDe,vB)=>{"use strict";var ODe=pi(),Kee=ad(),Yee=se(),Wee=(H(),v($)),zee=bg();vB.exports=jee;function jee(e,t){if(!Yee.isEmpty(t)&&Wee.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Kee(e,"value");if(n)throw n;return zee.prepSearch(e,t,!0)}o(jee,"lmdbGetDataByValue")});var ah=M((LDe,xB)=>{"use strict";var DDe=pi(),Jee=ad(),Qee=se(),Xee=(H(),v($)),Zee=bg();xB.exports=ete;async function ete(e,t){if(!Qee.isEmpty(t)&&Xee.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Jee(e,"value");if(n)throw n;return Zee.prepSearch(e,t,!1)}o(ete,"lmdbSearchByValue")});var FB=M((UDe,BB)=>{"use strict";var vDe=qt(),LN=class{static{o(this,"SearchByConditionsObject")}constructor(t,r,n,s,i=void 0,a=void 0,c="and"){this.schema=t,this.table=r,this.get_attributes=n,this.limit=i,this.offset=a,this.conditions=s,this.operator=c}},MN=class{static{o(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},vN=class{static{o(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};BB.exports={SearchByConditionsObject:LN,SearchCondition:MN,SortAttribute:vN}});var $B=M((HDe,GB)=>{"use strict";var BDe=FB().SearchByConditionsObject,tte=pi(),rte=ad(),UN=od(),Ng=qt(),{Resource:FDe}=($a(),v(Tx)),qB=bg(),nte=wN(),ste=require("lodash"),{getSchemaPath:ite}=At(),HB=gt(),{handleHDBError:ote,hdbErrors:ate}=_e(),{HTTP_STATUS_CODES:cte}=ate,lte=1e8;GB.exports=ute;async function ute(e){let t=rte(e,"conditions");if(t)throw ote(t,t.message,cte.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=ite(e.schema,e.table),n=await HB.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)HB.openDBI(n,u.search_attribute);let i=ste.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let d=u.search_type;d===Ng.SEARCH_TYPES.EQUALS?u.estimated_count=UN.count(n,u.search_attribute,u.search_value):d===Ng.SEARCH_TYPES.CONTAINS||d===Ng.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=lte}return u.estimated_count}),a=n.useReadTransaction();a.database=n;let c=await kB(a,e,i[0],s.hash_attribute),l;if(!e.operator||e.operator.toLowerCase()==="and"){let u=n.dbis[s.hash_attribute],d=i.slice(1).map(qB.filterByType),f=d.length,m=UN.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(h=>u.get(h,{transaction:a,lazy:!0})),f>0&&(l=l.filter(h=>{for(let p=0;p<f;p++)if(!d[p](h))return!1;return!0})),(e.offset||e.limit!==void 0)&&(l=l.slice(e.offset,e.limit!==void 0?(e.offset||0)+e.limit:void 0)),l=l.map(h=>nte.parseRow(h,m))}else{for(let f=1;f<i.length;f++){let m=i[f],h=await kB(a,e,m,s.hash_attribute);c=c.concat(h)}let u=new Set,d=e.offset||0;c=c.filter(f=>u.has(f)?!1:(u.add(f),!0)).slice(d,e.limit&&e.limit+d),l=UN.batchSearchByHash(a,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{a.done()},l}o(ute,"lmdbSearchByConditions");async function kB(e,t,r,n){let s=new tte(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===Ng.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,qB.searchByType(e,s,i,n).map(a=>a.value)}o(kB,"executeConditionSearch")});var ch=M((qDe,VB)=>{"use strict";var dte=(H(),v($)).OPERATIONS_ENUM,xN=class{static{o(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=dte.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};VB.exports=xN});var BN=M(($De,XB)=>{"use strict";var zB=pi(),jB=ch(),JB=ah(),QB=nh(),Bn=(H(),v($)),KB=se(),YB=gt(),{getTransactionAuditStorePath:fte,getSchemaPath:mte}=At(),WB=z();XB.exports=hte;async function hte(e){try{if(KB.isEmpty(global.hdb_schema[e.schema])||KB.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await pte(e),await _te(e);let t=mte(e.schema,e.table);try{await YB.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")WB.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=fte(e.schema,e.table);await YB.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")WB.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}o(hte,"lmdbDropTable");async function pte(e){let t=new zB(Bn.SYSTEM_SCHEMA_NAME,Bn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await JB(t)),n=[];for(let i=0;i<r.length;i++){let a=r[i];n.push(a.id)}if(n.length===0)return;let s=new jB(Bn.SYSTEM_SCHEMA_NAME,Bn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await QB(s)}o(pte,"deleteAttributesFromSystem");async function _te(e){let t=new zB(Bn.SYSTEM_SCHEMA_NAME,Bn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await JB(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let a=r[i];a.name===e.table&&a.schema===e.schema&&(n=a)}if(!n)throw new Error(`${e.schema}.${e.table} was not found`);let s=new jB(Bn.SYSTEM_SCHEMA_NAME,Bn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await QB(s)}catch(i){throw i}}o(_te,"dropTableFromSystem")});var eF=M((KDe,ZB)=>{"use strict";var Ete=require("fs-extra"),gte=pi(),Ste=cd(),Tte=ch(),Rte=BN(),yte=nh(),Ate=CN(),bte=ah(),qo=(H(),v($)),{getSchemaPath:Nte}=At(),{handleHDBError:Ite,hdbErrors:wte}=_e(),{HDB_ERROR_MSGS:Ote,HTTP_STATUS_CODES:Cte}=wte;ZB.exports=Pte;async function Pte(e){let t;try{t=await Dte(e.schema);let r=new gte(qo.SYSTEM_SCHEMA_NAME,qo.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,qo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[qo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await bte(r));for(let a=0;a<n.length;a++){let c={schema:t,table:n[a].name};try{await Rte(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new Tte(qo.SYSTEM_SCHEMA_NAME,qo.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await yte(s);let i=Nte(t);await Ete.remove(i)}catch(r){throw r}}o(Pte,"lmdbDropSchema");async function Dte(e){let t=new Ste(qo.SYSTEM_SCHEMA_NAME,qo.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[qo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await Ate(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw Ite(new Error,Ote.SCHEMA_NOT_FOUND(e),Cte.NOT_FOUND,void 0,void 0,!0);return n}o(Dte,"validateDropSchema")});var lh=M((WDe,tF)=>{"use strict";var FN=class{static{o(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};tF.exports=FN});var kN=M((JDe,rF)=>{"use strict";var Lte=require("fs-extra"),Ig=gt(),{getTransactionAuditStorePath:Mte}=At(),HN=qt(),jDe=lh();rF.exports=vte;async function vte(e){let t;try{let r=Mte(e.schema,e.table);await Lte.mkdirp(r),t=await Ig.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{Ig.createDBI(t,HN.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),Ig.createDBI(t,HN.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),Ig.createDBI(t,HN.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}o(vte,"createTransactionsAuditEnvironment")});var iF=M((ZDe,sF)=>{"use strict";var qN=(H(),v($)),nF=gt(),Ute=gl(),{getSystemSchemaPath:xte,getSchemaPath:Bte}=At(),XDe=xo(),Fte=Eg(),GN=_g(),Hte=z(),kte=kN();sF.exports=qte;async function qte(e,t){let r=Bte(t.schema,t.table),n=new GN(t.schema,t.table,qN.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new GN(t.schema,t.table,qN.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new GN(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await nF.createEnvironment(r,t.table),e!==void 0){let a=await nF.openEnvironment(xte(),qN.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await Ute.insertRecords(a,HDB_TABLE_INFO.hash_attribute,hdbTableAttributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await $N(n),await $N(s),await $N(i)}await kte(t)}catch(a){throw a}}o(qte,"lmdbCreateTable");async function $N(e){try{await Fte(e)}catch(t){Hte.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}o($N,"createAttribute")});var aF=M((tLe,oF)=>{"use strict";var Gte=eh(),$te=ym(),Vte=gg(),uh=(H(),v($)),Kte=gl().updateRecords,Yte=gt(),{getSchemaPath:Wte}=At(),zte=th(),jte=z();oF.exports=Jte;async function Jte(e){try{let{schemaTable:t,attributes:r}=Gte(e);$te(e,r,t.hash_attribute),e.schema!==uh.SYSTEM_SCHEMA_NAME&&(r.includes(uh.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(uh.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(uh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(uh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await Vte(e.hdb_auth_header,t,r),s=Wte(e.schema,e.table),i=await Yte.openEnvironment(s,e.table),a=await Kte(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await zte(e,a)}catch(c){jte.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:a.txn_time}}catch(t){throw t}}o(Jte,"lmdbUpdateRecords")});var lF=M((nLe,cF)=>{"use strict";var Qte=(H(),v($)).OPERATIONS_ENUM,VN=class{static{o(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=Qte.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};cF.exports=VN});var dF=M((oLe,uF)=>{"use strict";var iLe=lF(),Xte=eh(),Zte=ym(),ere=gg(),dh=(H(),v($)),tre=gl().upsertRecords,rre=gt(),{getSchemaPath:nre}=At(),sre=th(),ire=z(),{handleHDBError:ore,hdbErrors:are}=_e();uF.exports=cre;async function cre(e){let t;try{t=Xte(e)}catch(l){throw ore(l,l.message,are.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schemaTable:r,attributes:n}=t;Zte(e,n,r.hash_attribute),e.schema!==dh.SYSTEM_SCHEMA_NAME&&(n.includes(dh.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(dh.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(dh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(dh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await ere(e.hdb_auth_header,r,n),i=nre(e.schema,e.table),a=await rre.openEnvironment(i,e.table),c=await tre(a,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await sre(e,c)}catch(l){ire.error(`unable to write transaction due to ${l.message}`)}return{written_hashes:c.written_hashes,schemaTable:r,new_attributes:s,txn_time:c.txn_time}}o(cre,"lmdbUpsertRecords")});var mF=M((cLe,fF)=>{"use strict";var KN=class{static{o(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};fF.exports=KN});var pF=M((uLe,hF)=>{"use strict";var YN=class{static{o(this,"DeleteAuditLogsBeforeResults")}constructor(t=void 0,r=void 0,n=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=n}};hF.exports=YN});var gF=M((mLe,EF)=>{"use strict";var WN=gt(),{getTransactionAuditStorePath:lre}=At(),fLe=mF(),fh=qt(),ure=se(),_F=pF(),dre=require("util").promisify,fre=dre(setTimeout),mre=1e4,hre=100;EF.exports=pre;async function pre(e){let t=lre(e.schema,e.table),r=await WN.openEnvironment(t,e.table,!0),n=WN.listDBIs(r);WN.initializeDBIs(r,fh.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new _F;do s=await _re(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 fre(hre);while(s.transactions_deleted>0);return i}o(pre,"deleteAuditLogsBefore");async function _re(e,t){let r=new _F;try{let n=e.dbis[fh.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let{key:i,value:a}of n.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),s=n.remove(i);let c=a[fh.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];ure.isEmpty(c)||(s=e.dbis[fh.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<a.hash_values.length;l++)s=e.dbis[fh.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(a.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>mre)break}return await s,r}catch(n){throw n}}o(_re,"deleteTransactions")});var TF=M((pLe,SF)=>{"use strict";var zN=class{static{o(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};SF.exports=zN});var yF=M((gLe,RF)=>{"use strict";var Ere=pi(),gre=ch(),ELe=TF(),Wi=(H(),v($)),Sre=se(),jN=gt(),Tre=xo(),Rre=ah(),yre=nh(),{getSchemaPath:Are}=At();RF.exports=bre;async function bre(e,t=!0){let r;e.schema===Wi.SYSTEM_SCHEMA_NAME?r=Tre[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await Ire(e),s=Are(e.schema,e.table),i=await jN.openEnvironment(s,e.table);return t===!0&&await Nre(e,i,r.hash_attribute),jN.dropDBI(i,e.attribute),n}o(bre,"lmdbDropAttribute");async function Nre(e,t,r){let n=jN.openDBI(t,r),s,i=e.attribute;for(let{key:a,value:c,version:l}of n.getRange({start:!1,versions:!0})){let u={};for(let d in c)d!==i&&(u[d]=c[d]);s=t.dbis[r].put(a,u,l)}await s}o(Nre,"removeAttributeFromAllObjects");async function Ire(e){let t=new Ere(Wi.SYSTEM_SCHEMA_NAME,Wi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await Rre(t)).filter(a=>a[Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(Sre.isEmptyOrZeroLength(n))throw new Error(`Attribute '${drop_attribute_obj.attribute}' was not found in '${drop_attribute_obj.schema}.${drop_attribute_obj.table}'`);let s=n.map(a=>a[Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new gre(Wi.SYSTEM_SCHEMA_NAME,Wi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return yre(i)}o(Ire,"dropAttributeFromSystem")});var OF=M((RLe,wF)=>{"use strict";var JN=gt(),ld=qt(),TLe=Cn(),QN=(H(),v($)),AF=se(),{getTransactionAuditStorePath:wre}=At(),Ore=od(),wg=nd(),Cre=z();wF.exports=Pre;async function Pre(e){let t=wre(e.schema,e.table),r=await JN.openEnvironment(t,e.table,!0),n=JN.listDBIs(r);JN.initializeDBIs(r,ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case QN.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return bF(r,e.search_values);case QN.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,Lre(r,e.search_values,s);case QN.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return Dre(r,e.search_values);default:return bF(r)}}o(Pre,"readAuditLog");function bF(e,t=[0,Date.now()]){AF.isEmpty(t[0])&&(t[0]=0),AF.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[ld.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 wg,s))}o(bF,"searchTransactionsByTimestamp");function Dre(e,t=[]){let r=new Map;for(let n=0;n<t.length;n++){let s=t[n],i=[];for(let a of e.dbis[ld.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(a);r.set(s,IF(e,i))}return Object.fromEntries(r)}o(Dre,"searchTransactionsByUsername");function Lre(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],d=Ore.equals(e,ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,ld.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=IF(e,s),a=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,d=n.get(u);NF(l,"records",r,d,a),NF(l,"original_records",r,d,a)}return Object.fromEntries(a)}o(Lre,"searchTransactionsByHashValues");function NF(e,t,r,n,s){let i=e.timestamp;if(e[t])for(let a=0;a<e[t].length;a++){let c=e[t][a],l=c[r].toString();if(n.indexOf(l)>=0)if(s.has(l)){let u=s.get(l),d=u[u.length-1];if(d.timestamp===i)d[t]=[c];else{let f=new wg(e.operation,e.user_name,i,void 0);f[t]=[c],u.push(f)}}else{let u=new wg(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}o(NF,"loopRecords");function IF(e,t){let r=[];try{let n=e.dbis[ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let s=0;s<t.length;s++)try{let i=n.get(t[s]);if(i){let a=Object.assign(new wg,i);r.push(a)}}catch(i){Cre.warn(i)}return r}catch(n){throw n}}o(IF,"batchSearchTransactions")});var PF=M((NLe,CF)=>{"use strict";var{getSchemaPath:ALe}=At(),bLe=gt(),{database:Mre}=(De(),v(at));CF.exports={writeTransaction:vre};async function vre(e,t,r){return Mre({database:e,table:t}).transaction(r)}o(vre,"writeTransaction")});var vF=M((wLe,MF)=>{"use strict";var{getSchemaPath:DF}=At(),LF=gt();MF.exports={flush:Ure,resetReadTxn:xre};async function Ure(e,t){return(await LF.openEnvironment(DF(e,t),t.toString())).flushed}o(Ure,"flush");async function xre(e,t){try{(await LF.openEnvironment(DF(e,t),t.toString())).resetReadTxn()}catch{}}o(xre,"resetReadTxn")});var FF=M((CLe,BF)=>{"use strict";var{Readable:Bre}=require("stream"),{getDatabases:Fre}=(De(),v(at)),{readSync:Hre,openSync:kre,createReadStream:UF}=require("fs"),{open:qre}=require("lmdb"),xF=zm(),Gre=jm(),{AUDIT_STORE_OPTIONS:$re}=(Io(),v(ix)),{INTERNAL_DBIS_NAME:Vre,AUDIT_STORE_NAME:Kre}=qt();BF.exports=Wre;var XN=32768,Yre=100;async function Wre(e){let t=e.database||e.schema||"data",r=Fre()[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=qre({noSync:!0,maxDbs:Gre.MAX_DBS}),m,h=f.openDB(Vre,new xF(!1)),p=d.useReadTransaction(),E=0,g=o(async function(T,R){R.encoding="binary",R.encoder=void 0;let N=f.openDB(T,R),P=d.openDB(T,R);for(let{key:Y,version:te,value:x}of P.getRange({start:null,transaction:p,versions:P.useVersions}))m=N.put(Y,x,te),E++%Yre===0&&(await new Promise(V=>setTimeout(V,20)),p.openTimer&&(p.openTimer=0))},"copyDatabase");for(let{key:T,value:R}of d.getRange({transaction:p,start:!1}))if(s.some(N=>T.startsWith?.(N+"/"))){h.put(T,R);let[,N]=T.split("/"),P=!N,Y=new xF(!P,P);await g(T,Y)}e.include_audit&&await g(Kre,{...$re}),await m;let y=UF(f.path);return y.headers=l(),y.on("close",()=>{p.done(),f.close()}),y}let a=r[Object.keys(r)[0]].primaryStore,c=kre(a.path);return a.transaction(()=>{let u=Buffer.alloc(XN);Hre(c,u,0,XN),a.resetReadTxn();let d=a.useReadTransaction();d.renew();let f=UF(null,{fd:c,start:XN}),m=new Bre.from(async function*(){yield u;for await(let h of f)d.openTimer&&(d.openTimer=0),yield h;d.done()}());return m.headers=l(),m});function l(){let u=new Map;return u.set("content-type","application/octet-stream"),u.set("content-disposition",`attachment; filename="${t}"`),u.set("date",n),u}}o(Wre,"getBackup")});var qF=M((DLe,kF)=>{"use strict";var zre=z(),{handleHDBError:jre}=_e(),Jre=f0(),Qre=Eg(),Xre=yN(),Zre=eB(),ene=nh(),tne=CN(),rne=IB(),nne=UB(),sne=ah(),ine=$B(),one=eF(),ane=iF(),cne=aF(),lne=dF(),une=gF(),dne=BN(),fne=yF(),mne=OF(),hne=PF(),HF=vF(),pne=FF(),ZN=class extends Jre{static{o(this,"LMDBBridge")}async searchByConditions(t){return ine(t)}async getDataByHash(t){return await tne(t)}async searchByHash(t){return await rne(t)}async getDataByValue(t,r){return await nne(t,r)}async searchByValue(t){return await sne(t)}async createSchema(t){return await Zre(t)}async dropSchema(t){return await one(t)}async createTable(t,r){return await ane(t,r)}async dropTable(t){return await dne(t)}async createAttribute(t){return await Qre(t)}async createRecords(t){return await Xre(t)}async updateRecords(t){return await cne(t)}async upsertRecords(t){try{return await lne(t)}catch(r){throw jre(r,null,null,zre.ERR,r)}}async deleteRecords(t){return await ene(t)}async dropAttribute(t){return await fne(t)}async deleteAuditLogsBefore(t){return await une(t)}async readAuditLog(t){return await mne(t)}writeTransaction(t,r,n){return hne.writeTransaction(t,r,n)}flush(t,r){return HF.flush(t,r)}resetReadTxn(t,r){return HF.resetReadTxn(t,r)}getBackup(t){return pne(t)}};kF.exports=ZN});function Fn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function hh(e,t,r=!1){let n=e.prototype,s={},i=t.attributes||t.properties||[];for(let l of i){let u=l.name,d,f;if(l.resolve)f={get(){return l.resolve(this,this.getContext?.())},set(m){return l.set(this,m)},configurable:!0};else{switch(l.type){case"String":d=o(function(m){if(!(typeof m=="string"||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a string, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"ID":d=o(function(m){if(!(typeof m=="string"||m?.length>0&&m.every?.(h=>typeof h=="string")||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a string, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Float":case"Number":d=o(function(m){let h=m?.__op__?m.value:m;if(!(typeof h=="number"||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a number, attempt to assign ${h}`);Fn(this)[u]=m},"set");break;case"Int":d=o(function(m){let h=m?.__op__?m.value:m;if(!(h>>0===h||m==null&&l.nullable!==!1))if(typeof h=="number"&&Math.abs((h>>0)-h)<=1)h=Math.round(h),m?.__op__?m.value=h:m=h;else throw new ns.ClientError(`${u} must be an integer between -2147483648 and 2147483647, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Long":d=o(function(m){let h=m?.__op__?m.value:m;if(!(Math.round(h)===m&&Math.abs(h)<=9007199254740992||m==null&&l.nullable!==!1))if(typeof h=="number"&&Math.abs(h)<=9007199254740992)h=Math.round(h),m?.__op__?m.value=h:m=h;else throw new ns.ClientError(`${u} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"BigInt":d=o(function(m){let h=m?.__op__?m.value:m;if(!(typeof h=="bigint"||m==null&&l.nullable!==!1))if(typeof h=="string"||typeof h=="number")h=BigInt(h),m?.__op__?m.value=h:m=h;else throw new ns.ClientError(`${u} must be a number, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Boolean":d=o(function(m){if(!(typeof m=="boolean"||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a boolean, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Date":d=o(function(m){if(!(m instanceof Date||m==null&&l.nullable!==!1))if(typeof m=="string"||typeof m=="number")m=new Date(m);else throw new ns.ClientError(`${u} must be a Date, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Bytes":d=o(function(m){if(!(m instanceof Uint8Array||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a Buffer or Uint8Array, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Blob":d=o(function(m){if(!(m instanceof Os||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a Blob, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Any":case void 0:d=o(function(m){Fn(this)[u]=m},"set");break;default:d=o(function(m){if(!(typeof m=="object"||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be an object, attempt to assign ${m}`);Fn(this)[u]=m},"set")}f={get(){let m=this.getChanges?.();if(m&&u in m){let p=m[u];if(p?.__op__){let E=this.getRecord()?.[u];return p.update(E)}return p}let h=this.getRecord()?.[u];if(h&&typeof h=="object"){let p=eI(h,l);if(p)return m||this._setChanges(m=Object.create(null)),m[u]=p}return h},set:d,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,s[u]=f,(!(u in n)||Object.getOwnPropertyDescriptor(n,u)?.get?.isAttribute)&&Object.defineProperty(n,u,f)}a("getProperty",function(l){let u=s[l];if(u)return u.get.call(this);let d=this.getChanges();return d?.[l]!==void 0?d[l]:this.getRecord()?.[l]}),a("set",function(l,u){let d=s[l];if(d)return d.set.call(this,u);if(t.sealed)throw new ns.ClientError("Can not add a property to a sealed table schema");Fn(this)[l]=u}),a("deleteProperty",function(l){Fn(this)[l]=void 0}),a("toJSON",function(){let l=this.getChanges?.(),u;for(let f in l){u||(u={...this.getRecord()});let m=l[f];if(m?.__op__){let h=u[f];m=m.update(h)}u[f]=m}return Object.keys(this).length>0&&(u||(u={...this.getRecord()}),Object.assign(u,this)),u||this.getRecord()}),n.get||a("get",n.getProperty),n.delete||a("delete",n.deleteProperty),n.then||a("then",null);function a(l,u){Object.defineProperty(n,l,{value:u,configurable:!0})}o(a,"setMethod");let c=n;do{let l=Object.getPrototypeOf(c);if(l===Object.prototype){Object.setPrototypeOf(c,r?VF:$F);break}c=l}while(c&&c!==$F&&c!==VF)}function KF(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(GF[t])return GF[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=eI(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}function _ne(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 eI(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends bl{static{o(this,"TrackedObject")}},hh(r,t)),new r(e)):new bl(e);case Array:let n=new Cg(e.length,e);for(let s=0,i=e.length;s<i;s++){let a=e[s];a&&typeof a=="object"&&(a=eI(a,t?.elements)),n[s]=a}return n;default:return e}}function Pg(e){let t=e.getChanges?.(),r;for(let s in t){r||(r=e.getRecord?{...e.getRecord()}:{});let i=t[s];if(i&&typeof i=="object")if(i.__op__){let a=r[s];i=i.update(a)}else i=Pg(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 za(e,t=e.getChanges?.()){let r;if(!e)return t;if(e.getRecord&&e.constructor===Array&&!Object.isFrozen(e)){r=e;for(let n=0,s=e.length;n<s;n++){let i=e[n];if(i&&typeof i=="object"){let a=za(i);a!==i&&r===e&&(r=e.slice(0)),i=a}r[n]=i}return Object.freeze(r)}for(let n in t){r||(r={...e.getRecord?e.getRecord():e});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=XA[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=za(s);r[n]=s}if(!Array.isArray(e)&&e.getRecord)for(let n in e)Ene.call(e,n)&&(r||(r={...e.getRecord()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?e.getRecord():e}function Og(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[Al]||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(Og(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(Og(s))return!0}else return!0}else return!0}}return!1}var ns,GF,$F,VF,bl,Ene,Al,Cg,mh,tI=fe(()=>{ns=w(_e());bE();Cs();o(Fn,"getChanges");o(hh,"assignTrackedAccessors");GF=Object.prototype,$F=new Proxy({},{get:KF}),VF=new Proxy({},{get:KF,set:_ne});o(KF,"getProxiedProperty");o(_ne,"setProxiedProperty");o(eI,"trackObject");bl=class{static{o(this,"GenericTrackedObject")}#e;#t;constructor(t){if(t?.getRecord)throw new Error("Can not track an already tracked object, check for circular references");this.#e=t}getRecord(){return this.#e}setRecord(t){this.#e=t}getChanges(){return this.#t}_setChanges(t){this.#t=t}};hh(bl,{},!0);o(Pg,"collapseData");Ene=Object.prototype.hasOwnProperty;o(za,"updateAndFreeze");o(Og,"hasChanges");Al=Symbol.for("has-array-changes"),Cg=class extends Array{static{o(this,"TrackedArray")}#e;[Al];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[Al]=!0,super.splice(...t)}push(...t){return this[Al]=!0,super.push(...t)}pop(){return this[Al]=!0,super.pop()}unshift(...t){return this[Al]=!0,super.unshift(...t)}shift(){return this[Al]=!0,super.shift()}};Cg.prototype.constructor=Array;mh=class{static{o(this,"Addition")}__op__="add";value;constructor(t){this.value=t}update(t){return(+t||0)+this.value}}});var ZF={};Ce(ZF,{ResourceBridge:()=>sI});function iI({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 YF(e,t){let r=zi(e),n=iI(e,r);if(!r)throw new _i.ClientError(`Table ${e.table} not found`);let s;n&&r.attributes.length-n.length>2&&n.length<5&&(s=!0);let i={user:e.hdb_user,onlyIfCached:e.onlyIfCached,noCacheStore:e.noCacheStore,noCache:e.noCache,replicateFrom:e.replicateFrom},a;Mt(i,()=>new Promise(u=>a=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],d;try{d=await r.get({id:u,lazy:s,select:n},i),d=d&&Pg(d)}catch(f){d={message:(0,XF.errorToString)(f)}}return t?{value:{key:u,value:d}}:{value:d}}else return a(),{done:!0}},return(u){return a(),{value:u,done:!0}},throw(u){return a(),{done:!0}}}}}}function zi(e){let t=e.database||e.schema||Sne,r=it()[t];if(!r)throw(0,_i.handleHDBError)(new Error,gne.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function WF(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*zF(e,t,r,n){let s,i=0;for await(let a of e.getHistory(t,r)){let c=a.operation??a.type;c==="put"&&(c="upsert");let{id:l,version:u,value:d}=a;if(s?.timestamp===u)s.hash_values.push(l),s.records.push(d);else{if(s&&(yield s,i++,n&&n<=i)){s=void 0;break}s={operation:c,user_name:a.user,timestamp:u,hash_values:[l],records:[d]}}}s&&(yield s)}var jF,Dg,_i,JF,rI,nI,QF,XF,gne,Sne,Tne,Rne,sI,eH=fe(()=>{jF=w(qF()),Dg=w(ad()),_i=w(_e());De();JF=w(eh());H();rI=w(Ho()),nI=w(hi()),QF=w(se());tl();tI();XF=w(z()),{HDB_ERROR_MSGS:gne}=_i.hdbErrors,Sne="data",Tne=1e4,Rne=10,sI=class extends jF.default{static{o(this,"ResourceBridge")}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);for(let a of t.conditions||[])a?.attribute!==void 0&&(a.search_attribute=a.attribute),a?.comparator!==void 0&&(a.search_type=a.comparator),a?.value!==void 0&&(a.search_value=a.value);let r=(0,Dg.default)(t,"conditions");if(r)throw(0,_i.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=zi(t);if(!n)throw new _i.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(a){if("conditions"in a&&a.conditions)return a.conditions=a.conditions.map(i),a;{let c=a;return{attribute:c.search_attribute??c.attribute,comparator:c.search_type??c.comparator,value:c.search_value!==void 0?c.search_value:c.value}}}return o(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:iI(t,n),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let a of n)a.is_primary_key?(a.isPrimaryKey=!0,delete a.is_primary_key):a.name===i&&i&&(a.isPrimaryKey=!0);else{if(!i)throw new _i.ClientError("A primary key must be specified with a `primary_key` property or with `attributes`");n=[{name:i,isPrimaryKey:!0},{name:"__createdtime__",indexed:!0},{name:"__updatedtime__",indexed:!0}]}et({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await zi(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=zi(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=o((a,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(a,l,()=>r.primaryStore.put(a,c,l)).then(u=>{if(!u){let{value:d,version:f}=r.primaryStore.getEntry(a);return i(a,d,f)}})),"deleteRecord");for(let{key:a,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(a,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){return zi(t).dropTable()}createSchema(t){return ud({database:t.schema,table:null}),rI.signalSchemaChange(new nI.SchemaEventMsg(process.pid,q.CREATE_SCHEMA,t.schema))}async dropSchema(t){await oI(t.schema),rI.signalSchemaChange(new nI.SchemaEventMsg(process.pid,q.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,this.upsertRecords(t)}async upsertRecords(t){let{schemaTable:r,attributes:n}=(0,JF.default)(t),s,i=it()[t.schema][t.table],a={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(a.replicateTo=t.replicateTo),t.replicatedConfirmation&&(a.replicatedConfirmation=t.replicatedConfirmation),Mt(a,async c=>{if(!i.schemaDefined){s=[];for(let d of n)i.attributes.find(m=>m.name==d)||s.push(d);s.length>0&&await i.addAttributes(s.map(d=>({name:d,indexed:!0})))}let l=[],u=[];for(let d of t.records){let f=d[i.primaryKey],m=f!=null&&await i.get(f,a);if(t.requires_existing&&!m||t.requires_no_existing&&m){u.push(d[i.primaryKey]);continue}m&&(m=Pg(m));for(let h in d)if(Object.prototype.hasOwnProperty.call(d,h)){let p=d[h];if(typeof p=="function")try{let E=p([[m]]);Array.isArray(E)&&(p=E[0].func_val,d[h]=p)}catch(E){throw E.message+="Trying to set key "+h+" on object"+JSON.stringify(d),E}}if(m)for(let h in m)Object.prototype.hasOwnProperty.call(d,h)||(d[h]=m[h]);await(f==null?i.create(d,a):i.put(d,a)),l.push(d[i.primaryKey])}return{txn_time:c.timestamp,written_hashes:l,new_attributes:s,skipped_hashes:u}})}async deleteRecords(t){let r=it()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),Mt(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),a=[],c=[];for(let l of i)await r.delete(l,n)?a.push(l):c.push(l);return WF(a,c,s.timestamp)})}async deleteRecordsBefore(t){let r=it()[t.schema][t.table];if(!r.createdTimeProperty)throw new _i.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:cE.LESS}]}),s=!1,i=[],a=[],c=0,l=[],u=o(async()=>{let d=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...d.deleted_hashes),a.push(...d.skipped_hashes),await(0,QF.asyncSetTimeout)(Rne),l=[],s=!0},"chunkDelete");for await(let d of n)l.push(d[r.primaryKey]),c++,c%Tne===0&&await u();return l.length>0&&await u(),s?WF(i,a,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,Dg.default)(t,"hashes");if(r)throw r;return YF(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of YF(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&UA[r]===void 0)throw new Error(`Value search comparator - ${r} - is not valid`);t.select!==void 0&&(t.get_attributes=t.select),t.attribute!==void 0&&(t.search_attribute=t.attribute),t.value!==void 0&&(t.search_value=t.value);let n=(0,Dg.default)(t,"value");if(n)throw n;let s=zi(t);if(!s)throw new _i.ClientError(`Table ${t.table} not found`);let i=t.search_value;i.includes?.("*")&&(i.startsWith("*")?i.endsWith("*")?i!=="*"&&(r="contains",i=i.slice(1,-1)):(r="ends_with",i=i.slice(1)):i.endsWith("*")&&(r="starts_with",i=i.slice(0,-1))),r===cE.BETWEEN&&(i=[i,t.end_value]);let a=i==="*"?[]:[{attribute:t.search_attribute,value:i,comparator:r}];return s.search({conditions:a,allowFullScan:!0,limit:t.limit,offset:t.offset,reverse:t.reverse,sort:t.sort,select:iI(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=zi(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){zi({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return zi(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=zi(t),n={};switch(t.search_type){case lE.HASH_VALUE:for(let s of t.search_values)n[s]=(await r.getHistoryOfRecord(s)).map(i=>{let a=i.operation??i.type;return a==="put"&&(a="upsert"),{operation:a,timestamp:i.version,user_name:i.user,hash_values:[s],records:[i.value]}});return n;case lE.USERNAME:{let s=t.search_values;for await(let i of zF(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n}default:return zF(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};o(iI,"getSelect");o(YF,"getRecords");o(zi,"getTable");o(WF,"createDeleteResponse");o(zF,"groupRecordsInHistory")});var ss=M((GLe,tH)=>{"use strict";var{ResourceBridge:yne}=(eH(),v(ZF)),Ane=ae();Ane.initSync();var Lg;function bne(){return Lg||(Lg=new yne,Lg)}o(bne,"getBridge");tH.exports=bne()});var iH=M((VLe,sH)=>{"use strict";var rH=require("lodash"),ph=require("mathjs"),Nne=require("jsonata"),nH=se();sH.exports={distinct_array:o(e=>Array.isArray(e)&&e.length>1?rH.uniqWith(e,rH.isEqual):e,"distinct_array"),searchJSON:Ine,mad:_h.bind(null,ph.mad),mean:_h.bind(null,ph.mean),mode:_h.bind(null,ph.mode),prod:_h.bind(null,ph.prod),median:_h.bind(null,ph.median)};function _h(e,t,r,n){return n===1?t==null?[]:[t]:n===2?(t!=null&&r.push(t),r):r!=null&&r.length>0?e(r):null}o(_h,"aggregateFunction");function Ine(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(nH.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),nH.isEmpty(this.__ala__.res[r])){let n=Nne(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}o(Ine,"searchJSON")});var aH=M((YLe,oH)=>{"use strict";var cr=require("moment"),aI="YYYY-MM-DDTHH:mm:ss.SSSZZ";cr.suppressDeprecationWarnings=!0;oH.exports={current_date:o(()=>cr().utc().format("YYYY-MM-DD"),"current_date"),current_time:o(()=>cr().utc().format("HH:mm:ss.SSS"),"current_time"),extract:o((e,t)=>{switch(t.toLowerCase()){case"year":return cr(e).utc().format("YYYY");case"month":return cr(e).utc().format("MM");case"day":return cr(e).utc().format("DD");case"hour":return cr(e).utc().format("HH");case"minute":return cr(e).utc().format("mm");case"second":return cr(e).utc().format("ss");case"millisecond":return cr(e).utc().format("SSS");default:break}},"extract"),date:o(e=>cr(e).utc().format(aI),"date"),date_format:o((e,t)=>cr(e).utc().format(t),"date_format"),date_add:o((e,t,r)=>cr(e).utc().add(t,r).valueOf(),"date_add"),date_sub:o((e,t,r)=>cr(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:o((e,t,r)=>{let n=cr(e).utc(),s=cr(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:o(()=>cr().utc().valueOf(),"now"),get_server_time:o(()=>cr().format(aI),"get_server_time"),offset_utc:o((e,t)=>cr(e).utc().utcOffset(t).format(aI),"offset_utc")}});var dH=M((zLe,uH)=>{"use strict";var wne=require("@turf/area"),One=require("@turf/length"),Cne=require("@turf/circle"),Pne=require("@turf/difference"),Dne=require("@turf/distance"),Lne=require("@turf/boolean-contains"),Mne=require("@turf/boolean-equal"),vne=require("@turf/boolean-disjoint"),Une=require("@turf/helpers"),cH=(H(),v($)),Ye=se(),Go=z();uH.exports={geoArea:xne,geoLength:Bne,geoCircle:Fne,geoDifference:Hne,geoDistance:lH,geoNear:kne,geoContains:qne,geoEqual:Gne,geoCrosses:$ne,geoConvert:Vne};function xne(e){if(Ye.isEmpty(e))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return wne.default(e)}catch(t){return Go.trace(t,e),NaN}}o(xne,"geoArea");function Bne(e,t){if(Ye.isEmpty(e))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return One.default(e,{units:t||"kilometers"})}catch(r){return Go.trace(r,e),NaN}}o(Bne,"geoLength");function Fne(e,t,r){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return Cne.default(e,t,{units:r||"kilometers"})}catch(n){return Go.trace(n,e,t),NaN}}o(Fne,"geoCircle");function Hne(e,t){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Pne(e,t)}catch(r){return Go.trace(r,e,t),NaN}}o(Hne,"geoDifference");function lH(e,t,r){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Dne.default(e,t,{units:r||"kilometers"})}catch(n){return Go.trace(n,e,t),NaN}}o(lH,"geoDistance");function kne(e,t,r,n){if(Ye.isEmpty(e)||Ye.isEmpty(t))return!1;if(Ye.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return lH(e,t,n)<=r}catch(s){return Go.trace(s,e,t),!1}}o(kne,"geoNear");function qne(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Lne.default(e,t)}catch(r){return Go.trace(r,e,t),!1}}o(qne,"geoContains");function Gne(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Mne.default(e,t)}catch(r){return Go.trace(r,e,t),!1}}o(Gne,"geoEqual");function $ne(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return!vne.default(e,t)}catch(r){return Go.trace(r,e,t),!1}}o($ne,"geoCrosses");function Vne(e,t,r){if(Ye.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ye.isEmpty(t))throw new Error("geo_type is required");if(Ye.isEmpty(cH.GEO_CONVERSION_ENUM[t]))throw new Error(`geoType of ${t} is invalid please use one of the following types: ${Object.keys(cH.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ye.autoCastJSON(e)),Une[t](e,r)}o(Vne,"geoConvert")});var Mg=M((JLe,fH)=>{var Nl=iH(),is=aH(),ji=dH();fH.exports=e=>{e.aggr.mad=e.aggr.MAD=Nl.mad,e.aggr.mean=e.aggr.MEAN=Nl.mean,e.aggr.mode=e.aggr.MODE=Nl.mode,e.aggr.prod=e.aggr.PROD=Nl.prod,e.aggr.median=e.aggr.MEDIAN=Nl.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Nl.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Nl.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=is.current_date,e.fn.current_time=e.fn.CURRENT_TIME=is.current_time,e.fn.extract=e.fn.EXTRACT=is.extract,e.fn.date=e.fn.DATE=is.date,e.fn.date_format=e.fn.DATE_FORMAT=is.date_format,e.fn.date_add=e.fn.DATE_ADD=is.date_add,e.fn.date_sub=e.fn.DATE_SUB=is.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=is.date_diff,e.fn.now=e.fn.NOW=is.now,e.fn.offset_utc=e.fn.OFFSET_UTC=is.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=is.get_server_time,e.fn.getdate=e.fn.GETDATE=is.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=is.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=ji.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=ji.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=ji.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=ji.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=ji.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=ji.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=ji.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=ji.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=ji.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=ji.geoNear}});var _H=M((QLe,pH)=>{"use strict";var Eh=require("lodash"),Hn=require("alasql");Hn.options.cache=!1;var Kne=Mg(),mH=require("clone"),vg=require("recursive-iterator"),ke=z(),tt=se(),dd=ss(),Yne=(H(),v($)),{hdbErrors:Wne}=_e(),{getDatabases:hH}=(De(),v(at)),zne="IS NULL",Ei="There was a problem performing this search. Please check the logs and try again.";Kne(Hn);var cI=class{static{o(this,"SQLSearch")}constructor(t,r){if(tt.isEmpty(t))throw ke.error("AST statement for SQL select process cannot be empty"),"statement cannot be null";this.statement=t,this.columns={},this.all_table_attributes=r,this.fetch_attributes=[],this.exact_search_values={},this.comparator_search_values={},this.tables=[],this.data={},this.has_aggregator=!1,this.has_ordinal=!1,this.has_outer_join=!1,this._getColumns(),this._getTables(),this._conditionsToFetchAttributeValues(),this._setAliasesForColumns(),tt.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!tt.isEmptyOrZeroLength(n))return ke.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw ke.error("Error thrown from checkEmptySQL in SQLSearch class method search."),ke.error(n),new Error(Ei)}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(Ei)}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(Ei)}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(Ei)}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(Ei)}}_getColumns(){let t=new vg(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(mH(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Eh.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=hH()[r.databaseid][r.tableid].primaryKey,this.data[n].__mergedData={},this.data[n].__mergedAttributes=[],this.data[n].__mergedAttrMap={}})}_conditionsToFetchAttributeValues(){if(tt.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new vg(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!tt.isEmpty(r)&&r.right)if(tt.isNotEmptyAndHasValue(r.right.value)){let n=tt.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new Hn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=tt.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new Hn.yy.LogicValue({value:i}):n instanceof Hn.yy.StringValue&&tt.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Hn.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 vg(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let n=new Set,s=r.left.columnid?r.left:r.right,i=this._findColumn(s);if(!i)continue;let a=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!tt.isEmpty(Yne.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(tt.isEmpty(this.comparator_search_values[a])&&(this.comparator_search_values[a]={ignore:!1,comparators:[]}),!this.comparator_search_values[a].ignore){if(tt.isEmptyOrZeroLength(r.left.columnid)||tt.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[a].ignore=!0,this.comparator_search_values[a].comparators=[];continue}this.comparator_search_values[a].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(tt.isEmpty(this.exact_search_values[a])&&(this.exact_search_values[a]={ignore:!1,values:new Set}),!this.exact_search_values[a].ignore){let c=!1;switch(r.op){case"=":!tt.isEmpty(r.right.value)||!tt.isEmpty(r.left.value)?n.add(tt.isEmpty(r.right.value)?r.left.value:r.right.value):c=!0;break;case"IN":let l=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<l.length;u++)if(l[u].value)n.add(l[u].value);else{c=!0;break}break;default:c=!0;break}this.exact_search_values[a].ignore=c,c?this.exact_search_values[a].values=new Set:this.exact_search_values[a].values=new Set([...this.exact_search_values[a].values,...n])}}}_setAliasesForColumns(){if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&tt.isEmptyOrZeroLength(this.statement.from)&&tt.isEmptyOrZeroLength(this.columns.columns))return;let t=[],r={};this.statement.columns.forEach((n,s)=>{if(n.columnid==="*"){t.push(s);return}if(n.aggregatorid&&(this.has_aggregator=!0),!n.aggregatorid&&!n.funcid)if(n.as_orig=n.as?n.as:n.columnid,this.statement.joins)if(r[n.as_orig]>=0){let i=r[n.as_orig]+1;n.as=`[${n.as_orig+i}]`,r[n.as_orig]=i}else n.as=`[${n.as_orig}]`,r[n.as_orig]=0;else n.as=`[${n.as_orig}]`;!n.aggregatorid&&n.funcid&&n.args&&(n.as_orig=n.as?n.as:n.toString().replace(/'/g,'"'),n.as=`[${n.as_orig}]`),n.aggregatorid&&n.expression.columnid!=="*"&&(n.as_orig=n.as?n.as:n.expression.tableid?`${n.aggregatorid}(${n.expression.tableid}.${n.expression.columnid})`:`${n.aggregatorid}(${n.expression.columnid})`,n.as=`[${n.as_orig}]`)}),this.statement.columns.length>1&&t.length>0&&Eh.pullAt(this.statement.columns,t)}_findColumn(t){let r=this.all_table_attributes.filter(n=>{if(t.columnid_orig&&t.tableid_orig)return(n.table.as===t.tableid_orig||n.table.tableid===t.tableid_orig)&&n.attribute===t.columnid_orig;if(t.tableid)return(n.table.as===t.tableid||n.table.tableid===t.tableid)&&n.attribute===t.columnid;let s=t.columnid_orig?t.columnid_orig:t.columnid;return n.attribute===s});if(tt.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);tt.isEmptyOrZeroLength(n)||(r=this.all_table_attributes.filter(s=>s.attribute===n[0].columnid&&n[0].tableid&&n[0].tableid===(s.table.as?s.table.as:s.table.tableid)))}return r[0]}async _checkEmptySQL(){let t=[];if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&!tt.isEmptyOrZeroLength(this.columns.columns))return t;if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&tt.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await Hn.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(mH(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__mergedAttributes.push(r),this.data[t].__mergedAttrMap[r]=this.data[t].__mergedAttributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__mergedData[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__mergedAttrMap[n];this.data[t].__mergedData[r].splice(i,1,s)}async _getFetchAttributeValues(){if(tt.isEmptyOrZeroLength(Object.keys(this.columns)))return[];this._addFetchColumns(this.columns.joins);let t=null;try{t=this.statement.where?this.statement.where.toString():""}catch{throw new Error("Could not generate proper where clause")}this.columns.where&&this._addFetchColumns(this.columns.where);let r=this._isSimpleSelect();if(r?this._addFetchColumns(this.columns.columns):(!this.columns.where&&this.fetch_attributes.length===0)|t.indexOf(zne)>-1&&this.tables.forEach(s=>{let i={columnid:hH()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=Eh.uniqBy(this.fetch_attributes,s=>[s.table.databaseid,s.table.as?s.table.as:s.table.tableid,s.attribute].join()),r)return await this._simpleSQLQuery();let n=this.fetch_attributes.reduce((s,i)=>{let a=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[a].__hashName;return s[a]||(s[a]=[],s[a].push(null),this._addColumnToMergedAttributes(a,c)),i.attribute!==c&&(s[a].push(null),this._addColumnToMergedAttributes(a,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,a=this.data[i].__hashName,c={schema:s.table.databaseid,table:s.table.tableid,get_attributes:[s.attribute]},l=!1,u=[s.table.databaseid,s.table.tableid,s.attribute].join("/");if(s.attribute===a&&(l=!0),!tt.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!tt.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let d=await dd.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(Ei)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async d=>{let f={...c};f.search_value=d;let m=await dd.getDataByValue(f);for(let[h,p]of m)this.data[i].__mergedData[h]?this._updateMergedAttribute(i,h,s.attribute,p[s.attribute]):(this.data[i].__mergedData[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,p[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(d){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(d),new Error(Ei)}else if(!tt.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!tt.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let d=this.comparator_search_values[u].comparators;for(let f=0,m=d.length;f<m;f++){let h=d[f];c.search_attribute=h.attribute,c.search_value=h.search_value;let p=await dd.getDataByValue(c,h.operation);if(l)for(let[E]of p)this.data[i].__mergedData[E]||(this.data[i].__mergedData[E]=[...n[i]],this._setMergedHashAttribute(i,E));else for(let[E,g]of p)this.data[i].__mergedData[E]?this._updateMergedAttribute(i,E,s.attribute,g[s.attribute]):(this.data[i].__mergedData[E]=[...n[i]],this._updateMergedAttribute(i,E,s.attribute,g[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(Ei)}else try{c.search_attribute=s.attribute,c.search_value="*";let d=await dd.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(Ei)}}}_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 Hn.yy.Column||(t=!1)}),t)}_updateOrderByToAliases(){this.statement.order.forEach(t=>{if(t.expression.aggregatorid){t.is_aggregator=!0;return}if(t.expression.value){t.is_ordinal=!0,this.has_ordinal=!0;return}else t.is_ordinal=!1;let r=this.statement.columns.filter(s=>{let i=s.aggregatorid?s.expression:s,a=s.aggregatorid?s.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===a});r[0]||r.push(this._findColumn(t.expression));let n=r[0];if(t.is_func=!!n.funcid,t.is_aggregator=!!n.aggregatorid,n.as)if(n.as&&!t.expression.tableid)t.expression.columnid=n.as,t.expression.columnid_orig=n.as_orig;else{let s=new Hn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Hn.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 Hn.yy.FuncValue:new Hn.yy.Column;t.initial_select_column=Object.assign(s,n)}})}_addNonAggregatorsToFetchColumns(){let r=this.statement.order.filter(n=>!n.is_aggregator&&!n.is_ordinal).map(n=>n.is_func?{columnid:n.initial_select_column.args.filter(i=>!!i.columnid_orig)[0].columnid_orig}:{columnid:n.expression.columnid_orig});this._addFetchColumns(r)}async _processJoins(){let t=[],r=[],n=this.statement.from[0],s=[n],i=["? "+(n.as?" AS "+n.as:n.tableid)];t.push(Object.values(this.data[`${n.databaseid_orig}_${n.as?n.as_orig:n.tableid_orig}`].__mergedData)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let p=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(p+=" ON "+h.on.toString()),i.push(p),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__mergedData))});let a=[],c={};s.forEach(h=>{let p=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hashName,E=h.as?h.as_orig:h.tableid_orig;a.push({key:`'${E}.${p}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${p}\` AS "${E}.${p}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__mergedAttributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(h=>{h.is_func?r.push(h.initial_select_column.toString()):h.initial_select_column.tableid?r.push(`${h.initial_select_column.tableid}.${h.initial_select_column.columnid} AS ${h.expression.columnid}`):r.push(`${h.initial_select_column.columnid} AS ${h.expression.columnid}`)}));let d="",f="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(d=this.statement.limit?"LIMIT "+this.statement.limit:"",f=this.statement.offset?"OFFSET "+this.statement.offset:"");let m=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${d} ${f}`,p=this._convertColumnsToIndexes(h,s);m=await Hn.promise(p,t),t=null}catch(h){throw ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),ke.error(h),new Error("There was a problem processing the data.")}if(m&&m.length>0){for(let h=0,p=m.length;h<p;h++){let E=m[h];a.forEach(g=>{E[g.key]!==null&&E[g.key]!==void 0&&g.keys.add(E[g.key])})}a.forEach(h=>{let p=Object.keys(this.data[`${h.schema}_${h.table}`].__mergedData),E=Eh.difference(p,[...h.keys].map(g=>g.toString()));for(let g=0,y=E.length;g<y;g++){let T=E[g];delete this.data[`${h.schema}_${h.table}`].__mergedData[T]}})}return{existing_attributes:c,joined_length:m?m.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new vg(this.columns);for(let{node:i}of s)if(i&&i.columnid){let a=this._findColumn(i);if(a){let c=a.table.as?a.table.as:a.table.tableid;(!t[c]||t[c].indexOf(a.attribute)<0)&&n.push(a)}}n=Eh.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(Ei)}}async _getData(t){try{let r=t.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]?n[i].columns.push(s.attribute):n[i]={schema:s.table.databaseid,table:s.table.tableid,columns:[s.attribute]},n},{});for(let n in r){let s=r[n],i=this.data[n].__mergedData,a=[];for(let d in i)a.push(i[d][0]);this.data[n].__mergedAttributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:a,get_attributes:s.columns},l=await dd.getDataByHash(c),u=s.columns.length;for(let d=0,f=a.length;d<f;d++){let m=a[d],h=l.get(m);for(let p=0;p<u;p++){let E=s.columns[p],g=h[E]===void 0?null:h[E];this.data[n].__mergedData[m].push(g)}}}}catch(r){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__mergedData)),r.as=r.as?r.as:r.tableid,r.databaseid="",r.tableid="?",this.statement.joins&&this.statement.joins.forEach(s=>{s.as=s.as?s.as:s.table.tableid,t.push(Object.values(this.data[`${s.table.databaseid_orig}_${s.table.as?s.table.as_orig:s.table.tableid_orig}`].__mergedData)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(a=>{let c=a.aggregatorid?a.expression:a,l=a.aggregatorid?a.as_orig:c.as_orig;return s.expression.tableid?c.columnid_orig===s.expression.columnid_orig&&c.tableid_orig===s.expression.tableid_orig:c.columnid_orig===s.expression.columnid_orig||s.expression.columnid_orig===l}).length===0&&(s.expression.columnid=s.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&this.statement.limit&&!this.statement.joins&&(delete this.statement.limit,delete this.statement.offset);let n;try{let s=this._buildSQL();ke.trace(`Final SQL: ${s}`),n=await Hn.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(Wne.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),ke.trace(r.stack),t}}_buildSQL(t=!0){let r=this.statement.toString();return r=r.replace(/NOT\(NULL\)/g,"NOT NULL"),this.statement.columns.forEach(n=>{if(n.funcid&&n.as){let s=n.toString().replace(" AS "+n.as,"");r=r.replace(n.toString(),s)}}),t===!0?this._convertColumnsToIndexes(r,this.tables):r}_convertColumnsToIndexes(t,r){let n=t,s={};r.forEach(i=>{i.databaseid_orig?s[`${i.databaseid_orig}_${i.as?i.as_orig:i.tableid_orig}`]=i.as?i.as:i.tableid:s[`${i.databaseid}_${i.as?i.as:i.tableid}`]=`\`${i.as?i.as:i.tableid}\``});for(let i in this.data)this.data[i].__mergedAttributes.forEach((a,c)=>{let l=s[i],u=new RegExp(`${l}.\`${a}\``,"g"),d=`${l}.[${c}]`;n=n.replace(u,d)});for(let i in this.data)this.data[i].__mergedAttributes.forEach((a,c)=>{let l=new RegExp(`\`${a}\``,"g"),u=`[${c}]`;n=n.replace(l,u)});return n}async _simpleSQLQuery(){let t=this.statement.columns.reduce((n,s)=>(s.as_orig&&s.as_orig!=s.columnid_orig?n[s.columnid_orig]=s.as_orig:n[s.columnid_orig]||(n[s.columnid_orig]=s.columnid_orig),n),{}),r=this.fetch_attributes.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]||(n[i]={}),n[i][t[s.attribute]]=null,n},{});for(let n of this.fetch_attributes){let s=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,i={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]};try{i.search_attribute=n.attribute,i.search_value="*";let a=await dd.getDataByValue(i);for(let[c,l]of a)this.data[s].__mergedData[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__mergedData[c]={...r[s]}),this.data[s].__mergedData[c][t[n.attribute]]=l[n.attribute]??null}catch(a){throw ke.error("There was an error when processing this SQL operation. Check your logs"),ke.error(a),new Error(Ei)}}return Object.values(Object.values(this.data)[0].__mergedData)}};pH.exports=cI});var an=M((ZLe,EH)=>{"use strict";var jne=u0();EH.exports={searchByConditions:Qne,searchByHash:Xne,searchByValue:Zne,search:ese};var lI=ss(),{transformReq:uI}=se(),Jne=_H();async function Qne(e){return uI(e),lI.searchByConditions(e)}o(Qne,"searchByConditions");async function Xne(e){uI(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of lI.searchByHash(e))r&&t.push(r);return t}o(Xne,"searchByHash");async function Zne(e){uI(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of lI.searchByValue(e))t.push(r);return t}o(Zne,"searchByValue");function ese(e,t){try{let r=new jne(e);r.validate(),new Jne(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}o(ese,"search")});var Ji=M((tMe,RH)=>{"use strict";var gh=require("crypto"),tse=ae(),{CONFIG_PARAMS:rse}=(H(),v($)),SH="aes-256-cbc",nse=32,sse=16,dI=64,TH=32,ise=dI+TH,gH=new Map;RH.exports={encrypt:ose,decrypt:ase,createNatsTableStreamName:cse};function ose(e){let t=gh.randomBytes(nse),r=gh.randomBytes(sse),n=gh.createCipheriv(SH,Buffer.from(t),r),s=n.update(e);s=Buffer.concat([s,n.final()]);let i=t.toString("hex"),a=r.toString("hex"),c=s.toString("hex");return i+a+c}o(ose,"encrypt");function ase(e){let t=e.substr(0,dI),r=e.substr(dI,TH),n=e.substr(ise,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),a=gh.createDecipheriv(SH,Buffer.from(t,"hex"),s),c=a.update(i);return c=Buffer.concat([c,a.final()]),c.toString()}o(ase,"decrypt");function cse(e,t){let r=tse.get(rse.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=gH.get(r);return n||(n=gh.createHash("md5").update(r).digest("hex"),gH.set(r,n)),n}o(cse,"createNatsTableStreamName")});var ja=M((sMe,NH)=>{"use strict";var nMe=an(),Sh=z(),{validateBySchema:yH}=lt(),Il=require("joi"),lse=Ji(),Ug=se(),{handleHDBError:xg,hdbErrors:use,ClientError:AH}=_e(),{HDB_ERROR_MSGS:Bg,HTTP_STATUS_CODES:fI}=use,bH=ae();bH.initSync();var{getDatabases:mI}=(De(),v(at)),dse=require("fs-extra"),fse=(H(),v($));NH.exports={describeAll:mse,describeTable:Fg,describeSchema:hse};async function mse(e={}){try{let t=Ug.isEmptyOrZeroLength(e),r=!!e.bypass_auth,n,s;!t&&!r&&(n=e.hdb_user?.role?.permission,s=n?.super_user||n?.cluster_user);let i=mI(),a={},c={},l=[],u=e?.exact_count;for(let f in i){a[f]=!0,!t&&!s&&!r&&(c[f]=e.hdb_user?.role?.permission[f]?.describe);let m=i[f];for(let h in m)try{let p;if(t||s||r)p=await Fg({schema:f,table:h,exactCount:u});else if(n&&n[f].describe&&n[f].tables[h].describe){let E=n[f].tables[h].attribute_permissions;p=await Fg({schema:f,table:h,exactCount:u},E)}p&&l.push(p)}catch(p){Sh.error(p)}}let d={};for(let f in l)t||s||r?(d[l[f].schema]==null&&(d[l[f].schema]={}),d[l[f].schema][l[f].name]=l[f],a[l[f].schema]&&delete a[l[f].schema]):c[l[f].schema]&&(d[l[f].schema]==null&&(d[l[f].schema]={}),d[l[f].schema][l[f].name]=l[f],a[l[f].schema]&&delete a[l[f].schema]);for(let f in a)t||s||r?d[f]={}:c[f]&&(d[f]={});return d}catch(t){return Sh.error("Got an error in describeAll"),Sh.error(t),xg(new Error,Bg.DESCRIBE_ALL_ERR)}}o(mse,"describeAll");async function Fg(e,t){Ug.transformReq(e);let{schema:r,table:n}=e;r=r?.toString(),n=n?.toString();let s=t;e.hdb_user&&!e.hdb_user?.role?.permission?.super_user&&(s=e.hdb_user?.role?.permission[r]?.tables[n]?.attribute_permissions);let i=yH(e,Il.object({database:Il.string(),table:Il.string().required(),exact_count:Il.boolean().strict()}));if(i)throw new AH(i.message);let c=mI()[r];if(!c)throw xg(new Error,Bg.SCHEMA_NOT_FOUND(e.schema),fI.NOT_FOUND);let l=c[n];if(!l)throw xg(new Error,Bg.TABLE_NOT_FOUND(e.schema,e.table),fI.NOT_FOUND);function u(h){d.push({attribute:h.attribute,type:h.type,elements:h.elements?.type,indexed:h.indexed,is_primary_key:h.isPrimaryKey,assigned_created_time:h.assignCreatedTime,assigned_updated_time:h.assignUpdatedTime,nullable:h.nullable,properties:h.properties?h.properties.map(p=>({type:p.type,name:p.name})):void 0})}o(u,"pushAtt");let d=[];if(s){let h={};s.forEach(p=>{p.describe&&(h[p.attribute_name]=!0)}),l.attributes.forEach(p=>{h[p.name]&&u(p)})}else l.attributes?.forEach(h=>u(h));let f;try{f=(await dse.stat(l.primaryStore.env.path)).size}catch(h){Sh.warn("unable to get database size",h)}let m={schema:r,name:l.tableName,hash_attribute:l.attributes.find(h=>h.isPrimaryKey||h.is_hash_attribute)?.name,audit:l.audit,schema_defined:l.schemaDefined,attributes:d,db_size:f};l.replicate!==void 0&&(m.replicate=l.replicate),l.expirationMS!==void 0&&(m.expiration=l.expirationMS/1e3+"s"),l.sealed!==void 0&&(m.sealed=l.sealed),l.sources?.length>0&&(m.sources=l.sources.map(h=>h.name).filter(h=>h&&h!=="NATSReplicator"&&h!=="Replicator")),bH.get(fse.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(m.clustering_stream_name=lse.createNatsTableStreamName(m.schema,m.name));try{let h=await l.getRecordCount({exactCount:!!e.exact_count});m.record_count=h.recordCount,m.table_size=l.getSize(),m.db_audit_size=l.getAuditSize(),m.estimated_record_range=h.estimatedRange;let p=l.auditStore;if(p)for(let E of p.getKeys({reverse:!0,limit:1}))m.last_updated_record=E[0];if(!m.last_updated_record&&l.indices.__updatedtime__)for(let E of l.indices.__updatedtime__.getKeys({reverse:!0,limit:1}))m.last_updated_record=E}catch(h){Sh.warn(`unable to stat table dbi due to ${h}`)}return m}o(Fg,"descTable");async function hse(e){Ug.transformReq(e);let t=yH(e,Il.object({database:Il.string(),exact_count:Il.boolean().strict()}));if(t)throw new AH(t.message);let r;e.hdb_user&&!e.hdb_user?.role?.permission?.super_user&&(r=e.hdb_user?.role?.permission[e.schema]);let n=e.schema.toString(),i=mI()[n];if(!i)throw xg(new Error,Bg.SCHEMA_NOT_FOUND(e.schema),fI.NOT_FOUND);let a={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),Ug.isEmpty(l)||l.describe){let u=await Fg({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(a[u.name]=u)}}return a}o(hse,"describeSchema")});var kn=M((oMe,CH)=>{"use strict";var kg=_N(),Yr=se(),pse=require("util"),qg=ss(),_se=Us(),IH=z(),{handleHDBError:wl,hdbErrors:Ese}=_e(),{HTTP_STATUS_CODES:Ol}=Ese,gse=pse.promisify(_se.getTableSchema),Sse="updated",wH="inserted",OH="upserted";CH.exports={insert:Rse,update:yse,upsert:Ase,validation:Tse,flush:bse};async function Tse(e){if(Yr.isEmpty(e))throw new Error("invalid update parameters defined.");if(Yr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(Yr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await gse(e.schema,e.table),r=kg(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let n=t.hash_attribute,s=new Set,i={},a=!1;return e.operation==="update"&&(a=!0),e.records.forEach(c=>{if(a&&Yr.isEmptyOrZeroLength(c[n]))throw IH.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(!Yr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw IH.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!Yr.isEmpty(c[n])&&c[n]!==""&&s.has(Yr.autoCast(c[n]))&&(c.skip=!0),s.add(Yr.autoCast(c[n]));for(let l in c)i[l]=1}),i[n]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(i)}}o(Tse,"validation");async function Rse(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=kg(e);if(t)throw wl(new Error,t.message,Ol.BAD_REQUEST);Yr.transformReq(e);let r=Yr.checkSchemaTableExist(e.schema,e.table);if(r)throw wl(new Error,r,Ol.BAD_REQUEST);let n=await qg.createRecords(e);return Hg(wH,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}o(Rse,"insertData");async function yse(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=kg(e);if(t)throw wl(new Error,t.message,Ol.BAD_REQUEST);Yr.transformReq(e);let r=Yr.checkSchemaTableExist(e.schema,e.table);if(r)throw wl(new Error,r,Ol.BAD_REQUEST);let n=await qg.updateRecords(e);return Yr.isEmpty(n.existing_rows)?Hg(Sse,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):Hg(n.update_action,[],e,n.hashes,void 0,n.txn_time)}o(yse,"updateData");async function Ase(e){if(e.operation!=="upsert")throw wl(new Error,"invalid operation, must be upsert",Ol.INTERNAL_SERVER_ERROR);let t=kg(e);if(t)throw wl(new Error,t.message,Ol.BAD_REQUEST);Yr.transformReq(e);let r=Yr.checkSchemaTableExist(e.schema,e.table);if(r)throw wl(new Error,r,Ol.BAD_REQUEST);let n=await qg.upsertRecords(e);return Hg(OH,n.written_hashes,e,[],n.new_attributes,n.txn_time)}o(Ase,"upsertData");function Hg(e,t,r,n,s,i){let a={message:`${e} ${t.length} of ${t.length+n.length} records`,new_attributes:s,txn_time:i};return e===wH?(a.inserted_hashes=t,a.skipped_hashes=n,a):e===OH?(a.upserted_hashes=t,a):(a.update_hashes=t,a.skipped_hashes=n,a)}o(Hg,"returnObject");function bse(e){return Yr.transformReq(e),qg.flush(e.schema,e.table)}o(bse,"flush")});var pI=M((cMe,LH)=>{var Nse=lt(),hI=require("joi"),{hdbTable:Ise,hdbDatabase:PH}=Yi(),DH={schema:PH,database:PH,table:Ise},wse={date:hI.date().iso().required()},Ose={timestamp:hI.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};LH.exports=function(e,t){let r=t==="timestamp"?{...DH,...Ose}:{...DH,...wse},n=hI.object(r);return Nse.validateBySchema(e,n)}});var UH=M((lMe,vH)=>{var Cse=lt(),_I=require("joi"),{hdbTable:Pse,hdbDatabase:MH}=Yi(),Dse=_I.object({schema:MH,database:MH,table:Pse,hash_values:_I.array().required(),ids:_I.array()});vH.exports=function(e){return Cse.validateBySchema(e,Dse)}});var TI=M((uMe,xH)=>{"use strict";var EI=class{static{o(this,"InsertObject")}constructor(t,r,n,s,i){this.operation=t,this.schema=r,this.table=n,this.hash_attribute=s,this.records=i}},gI=class{static{o(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,a){this.schema=t,this.table=r,this.search_attribute=n,this.hash_attribute=s,this.get_attributes=i,this.search_value=a}},SI=class{static{o(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};xH.exports={InsertObject:EI,NoSQLSeachObject:gI,DeleteResponseObject:SI}});var Dl=M((fMe,qH)=>{"use strict";var FH=pI(),Lse=UH(),Cl=se(),BH=require("moment"),HH=z(),{promisify:Mse,callbackify:vse}=require("util"),Pl=(H(),v($)),Use=Us(),RI=Mse(Use.getTableSchema),yI=ss(),{DeleteResponseObject:xse}=TI(),{handleHDBError:Ja,hdbErrors:Bse}=_e(),{HDB_ERROR_MSGS:Gg,HTTP_STATUS_CODES:Qa}=Bse,Fse="records successfully deleted",Hse=vse(kH);qH.exports={delete:Hse,deleteRecord:kH,deleteFilesBefore:kse,deleteAuditLogsBefore:qse};async function kse(e){let t=FH(e,"date");if(t)throw Ja(t,t.message,Qa.BAD_REQUEST,void 0,void 0,!0);if(Cl.transformReq(e),!BH(e.date,BH.ISO_8601).isValid())throw Ja(new Error,Gg.INVALID_DATE,Qa.BAD_REQUEST,Pl.LOG_LEVELS.ERROR,Gg.INVALID_DATE,!0);let n=Cl.checkSchemaTableExist(e.schema,e.table);if(n)throw Ja(new Error,n,Qa.NOT_FOUND,Pl.LOG_LEVELS.ERROR,n,!0);let s=await yI.deleteRecordsBefore(e);if(await RI(e.schema,e.table),HH.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}o(kse,"deleteFilesBefore");async function qse(e){let t=FH(e,"timestamp");if(t)throw Ja(t,t.message,Qa.BAD_REQUEST,void 0,void 0,!0);if(Cl.transformReq(e),isNaN(e.timestamp))throw Ja(new Error,Gg.INVALID_VALUE("Timestamp"),Qa.BAD_REQUEST,Pl.LOG_LEVELS.ERROR,Gg.INVALID_VALUE("Timestamp"),!0);let r=Cl.checkSchemaTableExist(e.schema,e.table);if(r)throw Ja(new Error,r,Qa.NOT_FOUND,Pl.LOG_LEVELS.ERROR,r,!0);let n=await yI.deleteAuditLogsBefore(e);return await RI(e.schema,e.table),HH.info(`Finished deleting audit logs before ${e.timestamp}`),n}o(qse,"deleteAuditLogsBefore");async function kH(e){e.ids&&(e.hash_values=e.ids);let t=Lse(e);if(t)throw Ja(t,t.message,Qa.BAD_REQUEST,void 0,void 0,!0);Cl.transformReq(e);let r=Cl.checkSchemaTableExist(e.schema,e.table);if(r)throw Ja(new Error,r,Qa.NOT_FOUND,Pl.LOG_LEVELS.ERROR,r,!0);try{await RI(e.schema,e.table);let n=await yI.deleteRecords(e);return Cl.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${Fse}`),n}catch(n){if(n.message===Pl.SEARCH_NOT_FOUND_MESSAGE){let s=new xse;return s.message=Pl.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}o(kH,"deleteRecord")});var $g={};Ce($g,{HASH_FUNCTION:()=>Ur,hash:()=>NI,validate:()=>II});function AI(e=Rh){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(Th.randomBytes(e)).map(r=>t[r%t.length]).join("")}function NI(e,t=Ur[$H?.toUpperCase()]??Ur.SHA256){return bI[t](e)}function II(e,t,r=Ur[$H?.toUpperCase()]??Ur.SHA256){return e?Gse[r](e,t):!1}var Th,fd,GH,$H,Rh,VH,Ur,bI,Gse,Vg=fe(()=>{Th=w(require("node:crypto")),fd=w(require("argon2")),GH=w(ae());H();$H=(0,GH.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),Rh=16,VH=9,Ur={MD5:"md5",SHA256:"sha256",ARGON2ID:"argon2id"};o(AI,"generateSalt");bI={[Ur.MD5]:(e,t=void 0)=>{t=t??AI(VH);let r=Th.createHash(Ur.MD5).update(e+t).digest("hex");return t+r},[Ur.SHA256]:(e,t=void 0)=>{t=t??AI(Rh);let r=Th.createHash(Ur.SHA256).update(e+t).digest("hex");return t+r},[Ur.ARGON2ID]:async e=>{let t=AI(Rh),r=await fd.hash(e,{type:fd.argon2id,salt:Buffer.from(t)});return t+r}},Gse={[Ur.MD5]:(e,t)=>{let r=e.slice(0,VH);return e===bI[Ur.MD5](t,r)},[Ur.SHA256]:(e,t)=>{let r=e.slice(0,Rh);return e===bI[Ur.SHA256](t,r)},[Ur.ARGON2ID]:async(e,t)=>await fd.verify(e.slice(Rh),t)};o(NI,"hash");o(II,"validate")});var YH=M((_Me,KH)=>{var wI=lt(),cn={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 $se(e){return cn.password.presence=!0,cn.username.presence=!0,cn.role.presence=!0,cn.active.presence=!0,wI.validateObject(e,cn)}o($se,"addUserValidation");function Vse(e){return cn.password.presence=!1,cn.username.presence=!0,cn.role.presence=!1,cn.active.presence=!1,wI.validateObject(e,cn)}o(Vse,"alterUserValidation");function Kse(e){return cn.password.presence=!1,cn.username.presence=!0,cn.role.presence=!1,cn.active.presence=!1,wI.validateObject(e,cn)}o(Kse,"dropUserValidation");KH.exports={addUserValidation:$se,alterUserValidation:Vse,dropUserValidation:Kse}});var bt=M((SMe,zH)=>{"use strict";var{platform:gMe}=require("os"),Yse="nats-server.zip",OI="nats-server",Wse=process.platform==="win32"?`${OI}.exe`:OI,zse=/^[^\s.,*>]+$/,WH="__request__",jse=o(e=>`${e}.${WH}`,"REQUEST_SUBJECT"),Jse={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},Qse={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Xse={HUB:"hub.pid",LEAF:"leaf.pid"},Zse={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},eie={SUCCESS:"success",ERROR:"error"},tie={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},rie={TXN:"txn",MSGID:"msgid"},md={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},nie={[md.ERR]:1,[md.WRN]:2,[md.INF]:3,[md.DBG]:4,[md.TRC]:5},sie={debug:"-D",trace:"-DVV"};zH.exports={NATS_SERVER_ZIP:Yse,NATS_SERVER_NAME:OI,NATS_BINARY_NAME:Wse,PID_FILES:Xse,NATS_CONFIG_FILES:Qse,SERVER_SUFFIX:Zse,NATS_TERM_CONSTRAINTS_RX:zse,REQUEST_SUFFIX:WH,UPDATE_REMOTE_RESPONSE_STATUSES:eie,CLUSTER_STATUS_STATUSES:tie,REQUEST_SUBJECT:jse,SUBJECT_PREFIXES:rie,MSG_HEADERS:Jse,LOG_LEVELS:md,LOG_LEVEL_FLAGS:sie,LOG_LEVEL_HIERARCHY:nie}});var CI=M(ln=>{"use strict";var iie={cert:"-----BEGIN CERTIFICATE-----\rMIIDXDCCAkSgAwIBAgIFNTE4MzQwDQYJKoZIhvcNAQELBQAwXTEXMBUGA1UEAxMO\rSGFycGVyREIsIEluYy4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UE\rBxMGRGVudmVyMRcwFQYDVQQKEw5IYXJwZXJEQiwgSW5jLjAeFw0yMjAzMTEyMzAz\rNDlaFw0yNzAzMTAyMzAzNDlaMF0xFzAVBgNVBAMTDkhhcnBlckRCLCBJbmMuMQsw\rCQYDVQQGEwJVUzELMAkGA1UECBMCQ08xDzANBgNVBAcTBkRlbnZlcjEXMBUGA1UE\rChMOSGFycGVyREIsIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\rAQCsEUlBF8WImS78rCFXVKyntxfrW++4qZ3hGnoD2MHZAuDHyeP/5eGnaE9GQhKc\r4DwG4DGvh0wP2zIYnBfiQ3L2ZtnlDR9ZkKIQYGlVxTUn6T43krhK5nZKqDF43Yg3\rZEvO3cbJBjiKZx0eA2/toehdSsTAHHQx5gTDcggNe2tgoJHYPwi9YF/AxSBZrbgb\ryWlYgtYDmF32ytHP03GUCIdKOFuBPsHTGu4SkdEIdLIqO9oglW1YFH5qZ6NiwApW\rsP+GCuqOwDXXbdjr75iq9Tq/CDrjGFLaTPmvd2Q0qG/BtaCll0ghpG+yIHvt/iQs\rajS+LxEWAnVlGMaDdFErbDUtAgMBAAGjIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYD\rVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4IBAQASR4YW/rPK7PNArHVe9zzM\rb0rKNX/2T9/0nybRhmE/+hdlSgliTAeebmwkUS2APckmekYt/q2ZY2NS65Fo/jjp\rG8TJrtcF4h+ylVqUp0ZXQLFtIsr7r2JZA7hJ6njW6G4DHSZ0gxtECLi4CBlTjzm5\rNmnmIDObvGRTuqmcdAZmXeObbta/He2XIzietukPAYX062pNM+G5XT5UM1eG/Vlp\rN86vjhpyI+ffKy+C60SJqxmKM3ydgN7oLscE7+2wLPN25XqN4W99OwGsp5dTdu/f\r5lPtFayXdJ55e/sNQKmGN+UGLrL05c2MWgjb8U/LFilnupUianceoeSERZmVjzKX\r-----END CERTIFICATE-----\r".replace(/\r/g,`\r
12
+ `},"serialize"),compressible:!1,q:.8});sn.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()}});CU={type:"application/json",serializeStream:Im,serialize:wm,deserialize:v8,q:.5};sn.set("*/*",CU);sn.set("",CU);o(v8,"tryJSONParse");o(Cm,"registerContentHandlers");U8=(0,wU.default)(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:a,type:c}=OE(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&a.serializeStream){if(l.mapError){let d=l.getColumns;l=l.mapError(f=>(f.toJSON=()=>({error:f.name,message:f.message,...f.partialObject}),f)),l.getColumns=d}u=a.serializeStream}else u=a.serialize;return u(l,{headers:{set:o((d,f)=>{s.header(d,f)},"set")}})})}),r()},{name:"content-type-negotiation"});o(OE,"findBestSerializer");yU=nb.default.get(U.HTTP_COMPRESSIONTHRESHOLD);o(Pm,"serialize");o(Ba,"serializeMessage");o(ab,"asyncSerialization");o(cb,"hasAsyncSerialization");o(x8,"streamToBuffer");B8=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];o(F8,"isBufferEncoding");o(H8,"parseContentType");o(Co,"getDeserializer");o(k8,"deserializerUnknownType");o(q8,"transformIterable");o(wE,"toCsvStream")});var mb={};Ce(mb,{Blob:()=>Os,blobsWereEncoded:()=>ol,databasePaths:()=>ub,decodeBlobsWithWrites:()=>BE,decodeFromDatabase:()=>al,decodeWithBlobCallback:()=>FE,deleteBlob:()=>vE,deleteBlobsInObject:()=>Fa,deleteRootBlobPathsForDB:()=>fb,encodeBlobsAsBuffers:()=>Q8,encodeBlobsWithFilePath:()=>xE,findBlobsInObject:()=>Gu,getFileId:()=>UE,getFilePathForBlob:()=>kU,getRootBlobPathsForDB:()=>vm,setDeletionDelay:()=>K8});function BU(){}function vE(e){let t=kU(e);t&&setTimeout(()=>{(0,Ze.unlink)(t,r=>{r&&Do.default.debug?.("Error trying to remove blob file",r)})},FU)}function K8(e){FU=e}function HU(e){let t=Pn.get(e);if(!t)t={storageIndex:0,fileId:null,store:Dn},Pn.set(e,t);else{if(t.saving)return t;t.store=Dn}return W8(t),t.source?lb(e,t.source,t):t.contentBuffer?Y8(e,t):lb(e,Lm.Readable.from(e.stream()),t),t}function lb(e,t,r){let{filePath:n,fileId:s,store:i,compress:a,flush:c}=r;return r.saving=new Promise((l,u)=>{let d=s+":blob";if(!i.attemptLock(d,0))throw new Error(`Unable to get lock for blob file ${s}`);let f=(0,Ze.createWriteStream)(n,{autoClose:!1,flags:"w"});if(t.errored){let g=Buffer.from(t.errored.toString());f.end(Buffer.concat([p(BigInt(g.length)+0xff000000000000n),g]));return}let m=!1;e.size!==void 0&&(f.write(p(e.size)),m=!0);let h;a?(m||f.write($8),h=(0,LE.createDeflate)(),t.pipe(h).pipe(f)):(m||f.write(G8),t.pipe(f)),t.on("error",E);function p(g){let y=BigInt(g),T=new Uint8Array(Ar),R=new DataView(T.buffer);return y|=BigInt(a?db:xU)<<48n,R.setBigInt64(0,y),T}o(p,"createHeader");function E(g){i.unlock(d,0);let y=f.fd;g?(y&&(0,Ze.close)(y),u(g)):c?(0,Ze.fdatasync)(y,T=>{T&&u(T),l(),(0,Ze.close)(y)}):(l(),(0,Ze.close)(y))}o(E,"finished"),f.on("error",E).on("finish",()=>{if(m)E();else{let g=h?h.bytesWritten:f.bytesWritten-Ar;e.size=g,(0,Ze.write)(f.fd,p(g),0,Ar,0,E)}})}),e}function UE(e){return Pn.get(e)?.fileId}function kU(e){let t=Pn.get(e);return t?.fileId&&Mm(t)}function vm(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=ub.get(e);if(!t){if(!e.databaseName)return Do.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,ME.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,Mo.join)(n,e.databaseName)):t=[(0,Mo.join)((0,ME.getHdbBasePath)(),"blobs",e.databaseName)],ub.set(e,t)}return t}async function fb(e){let t=vm(e);t&&await Promise.all(t.map(r=>qU(r)))}async function qU(e){if((0,Ze.existsSync)(e)){for(let t of await(0,li.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await qU((0,Mo.join)(e,t.name));else try{await(0,li.unlink)((0,Mo.join)(e,t.name))}catch(r){Do.default.warn?.("Error deleting file",r)}try{await(0,li.rmdir)(e)}catch(t){Do.default.warn?.("Error deleting directory",t)}}}function Mm({storageIndex:e,fileId:t,store:r}){let n=vm(r);return(0,Mo.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 Y8(e,t){let r=t.contentBuffer,n=r.length;if(!(n<UU))return e.size=n,lb(e,Lm.Readable.from([r]),t)}function W8(e){let t=vm(e.store),r=z8(),n=t?.length>1?j8(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Mm(e),a=(0,Mo.dirname)(i);(0,Ze.existsSync)(a)||(0,vU.ensureDirSync)(a),e.filePath=i}function z8(){let e=MU.get(Dn);if(!e){let t=0,r=vm(Dn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let a=0;if((0,Ze.existsSync)(n))for(let c of(0,Ze.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>a&&(a=l)}s+=a,n=(0,Mo.join)(n,a.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(Dn.getUserSharedBuffer("blob-file-id",e.buffer)),MU.set(Dn,e)}return Number(Atomics.add(e,0,1n))}function j8(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(DE);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,J8(e)),e.frequencyTable[t%DE]}async function J8(e){if(!li.statfs)return;let t=await Promise.all(e.map(async(s,i)=>{let a=await(0,li.statfs)(s),c=a.bavail*a.bsize;return Math.pow(c,.8)})),r=new Array(DE),n=t.map(s=>1/s);for(let s=0;s<DE;s++){let i=1/0,a=0;for(let c=0;c<n.length;c++)n[c]<i&&(a=c,i=n[c]);n[a]+=1/t[a],r[s]=a}e.frequencyTable=r}function xE(e,t,r){qu=t,Dn=r,ol=!1;try{return e()}finally{qu=void 0,Dn=void 0}}function Q8(e){Vr=[];let t;try{t=e()}catch(n){throw Vr=void 0,n}let r=Vr.length<2?Vr[0]:Promise.all(Vr);return Vr=void 0,r?r.then(()=>e()):t}function BE(e,t){try{Vr=[],il=t,e()}catch(n){throw il=void 0,Vr=void 0,n}il=void 0;let r=Vr.length<2?Vr[0]:Promise.all(Vr);return Vr=void 0,r}function FE(e,t,r){Dn=r;try{return il=t,e()}finally{il=void 0}}function al(e,t){return Dn=t,e()}function Fa(e){Gu(e,t=>{vE(t)})}function Gu(e,t){if(e instanceof Os)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&Gu(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&Gu(e[r],t)}}function X8(){return class{static{o(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}var Lo,li,Ze,LE,Lm,vU,ME,Mo,Do,UU,Ar,xU,db,DU,G8,$8,LU,Pn,il,Os,qu,Vr,Dn,ol,Dm,CE,V8,PE,FU,ub,MU,DE,Cs=fe(()=>{Lo=require("msgpackr"),li=require("node:fs/promises"),Ze=require("node:fs"),LE=require("node:zlib"),Lm=require("node:stream"),vU=require("fs-extra"),ME=w(ae());H();Mo=require("path"),Do=w(ki());Po();UU=8192,Ar=8,xU=0,db=1,DU=255,G8=new Uint8Array([0,xU,255,255,255,255,255,255]),$8=new Uint8Array([0,db,255,255,255,255,255,255]),LU=0xffffffffffff,Pn=new WeakMap,Os=global.Blob||X8(),ol=!1,Dm=new Uint8Array(8),CE=new DataView(Dm.buffer),V8=6e4;o(BU,"InstanceOfBlobWithNoConstructor");BU.prototype=Os.prototype;PE=class e extends BU{static{o(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=Pn.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):(cb()&&ab(this.bytes().then(a=>t.contentBuffer=a)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=Pn.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=Mm(t),a,c=o(async()=>{let l,u=Ar;try{if(l=await(0,li.readFile)(i),l.length>=Ar){l.copy(Dm,0,0,Ar);let f=CE.getBigUint64(0);if(Number(f>>48n)===DU)throw new Error("Error in blob: "+buffer.subarray(Ar));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<LU&&(this.size=u,this.#t))for(let m of this.#t)m(u)}}catch(f){if(f.code!=="ENOENT")throw f;l=Buffer.alloc(0)}function d(f){if(u>f.length){let m=t.store,h=t.fileId+":blob";if(a)throw new Error("Incomplete blob");return new Promise((p,E)=>{if(m.attemptLock(h,0,()=>(a=!0,m.unlock(h,0),p(c()))))return a=!0,m.unlock(h,0),p(c())})}return(n!=null||r!=null)&&(f=f.subarray(r??0,n??f.length)),f}return o(d,"checkCompletion"),l[1]===db?new Promise((f,m)=>{(0,LE.deflate)(l.subarray(Ar),(h,p)=>{h?m(h):f(d(p))})}):d(l.subarray(Ar))},"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=Pn.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=Mm(t),a,c=0,l=0,u,d,f,m=!1,h=this;return new ReadableStream({start(){let E=1e3,g=o((y,T)=>{(0,Ze.open)(i,"r",(R,N)=>{if(R){if(R.code==="ENOENT"&&f!==!1&&(Do.default.debug?.("File does not exist yet, waiting for it to be created",i,E),E-- >0))return setTimeout(()=>{p(),g(y,T)},20).unref();T(R),h.#e?.forEach(P=>P(R))}else a=N,y(N)})},"openFile");return new Promise(g)},pull:o(E=>{let g=0,y=100;return new Promise(o(function T(R,N){function P(te){(0,Ze.close)(a),clearTimeout(d),u&&u.close(),N(te),h.#e?.forEach(x=>x(te))}o(P,"onError");let Y=Buffer.allocUnsafe(262144);(0,Ze.read)(a,Y,0,Y.length,c,(te,x,V)=>{if(l+=x,te)return P(te);if(c===0){if(x<Ar){y-- >0&&f!==!1?(p(),Do.default.debug?.("File was empty, waiting for data to be written",i,y),setTimeout(()=>T(R,N),20).unref()):(Do.default.debug?.("File was empty, throwing error",i,y),N(new Error(`Blob ${t.fileId} was empty`)));return}V.copy(Dm,0,0,Ar);let j=CE.getBigUint64(0);if(Number(j>>48n)===DU)return P(new Error("Error in blob: "+V.subarray(Ar)));if(g=Number(j&0xffffffffffffn),g<LU&&h.size!==g&&(h.size=g,h.#t))for(let K of h.#t)K(g);V=V.subarray(Ar,x),l-=Ar}else if(x===0){let j=Buffer.allocUnsafe(8);return(0,Ze.read)(a,j,0,Ar,0,K=>{if(K)return P(K);if(Dm.set(j),g=Number(CE.getBigUint64(0)&0xffffffffffffn),g>l){p()?u?d=setTimeout(()=>{P(new Error("File read timed out"))},V8).unref():(u=(0,Ze.watch)(i,{persistent:!1},()=>{u.close(),u=null,d&&(clearTimeout(d),d=null,T(R,N))}),T(R,N)):m?P(new Error("Blob is incomplete")):(m=!0,T(R,N));return}(0,Ze.close)(a),E.close(),R()})}else V=V.subarray(0,x);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=x,T(R,N);s&&l>=s&&(l>s&&(V=V.subarray(0,s-c)),l=g=s),n&&n>c&&(V=V.subarray(n-c))}c+=x;try{E.enqueue(V)}catch(j){return Do.default.debug?.("Error enqueuing chunk",j),R()}l===g&&((0,Ze.close)(a),E.close()),R()})},"readMore"))},"pull"),cancel(){(0,Ze.close)(a),clearTimeout(d),u&&u.close()}});function p(){if(f===void 0){let E=t.store,g=t.fileId+":blob";f=!E.attemptLock(g,0,()=>{f=!1,E.unlock(g,0)}),f||E.unlock(g,0)}return f}}slice(t,r,n){let s=Pn.get(this),i=new e(n&&{type:n});if(s?.fileId){let a={...s,start:t,end:r};Pn.set(i,a),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let a={...s,contentBuffer:s.contentBuffer.subarray(t,r)};Pn.set(i,a),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(t){if(Dn=t?.primaryStore?.rootStore,!Dn)throw new Error("No target table specified");return HU(this).saving??Promise.resolve()}},FU=500;o(vE,"deleteBlob");o(K8,"setDeletionDelay");global.createBlob=function(e,t){let r=new PE(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if(Pn.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof Lm.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=Lm.Readable.from(e);else throw new Error("Invalid source type");return r};o(HU,"saveBlob");o(lb,"writeBlobWithStream");o(UE,"getFileId");o(kU,"getFilePathForBlob");ub=new Map;o(vm,"getRootBlobPathsForDB");o(fb,"deleteRootBlobPathsForDB");o(qU,"rimrafSteadily");o(Mm,"getFilePath");o(Y8,"writeBlobWithBuffer");o(W8,"generateFilePath");MU=new Map;o(z8,"getNextFileId");DE=128;o(j8,"getNextStorageIndex");o(J8,"createFrequencyTableForStoragePaths");o(xE,"encodeBlobsWithFilePath");o(Q8,"encodeBlobsAsBuffers");o(BE,"decodeBlobsWithWrites");o(FE,"decodeWithBlobCallback");o(al,"decodeFromDatabase");o(Fa,"deleteBlobsInObject");o(Gu,"findBlobsInObject");(0,Lo.addExtension)({Class:Os,type:11,unpack:o(function(e){let t=(0,Lo.unpack)(e),r=new PE;if(Object.assign(r,t[0]),typeof t[1]!="object"){if(Pn.set(r,{storageIndex:t[1],fileId:t[2],store:Dn}),il)return il(r)??r;if(!Dn)throw new Error("No store specified, cannot load blob from storage")}else Pn.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:o(function(e){let t=Pn.get(e);if(qu!==void 0&&(ol=!0,t?.recordId!==void 0&&t.recordId!==qu))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<UU)return r.size=t.contentBuffer.length,(0,Lo.pack)([r,t.contentBuffer])}if(qu!==void 0){if(t=HU(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=qu,(0,Lo.pack)([r,t.storageIndex,t.fileId])}if(t)try{let n=(0,Ze.readFileSync)(Mm(t));if(n.length>=Ar&&(n.copy(Dm,0,0,Ar),Number(CE.getBigUint64(0)&0xffffffffffffn)===n.length-Ar))return Buffer.concat([(0,Lo.pack)([r]),n]);if(Vr)Vr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Vr)return Vr.push(e.bytes()),Buffer.alloc(0);throw n}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,Lo.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});o(X8,"polyfillBlob")});var YU={};Ce(YU,{onStorageReclamation:()=>Um,runReclamationHandlers:()=>Eb,setAvailableSpaceRatioGetter:()=>e5});function Um(e,t,r){(r||(0,kE.getWorkerIndex)()===(0,kE.getWorkerCount)()-1)&&(HE.has(e)||HE.set(e,[]),HE.get(e).push({priority:0,handler:t}),_b||(_b=setTimeout(Eb,$U).unref()))}async function Eb(){for(let[e,t]of HE)try{let r=await KU(e),n=Z8/r;for(let s of t){let{priority:i,handler:a}=s;if(s.priority=n,n>1||i>1){let c=a(n>1?n:0);c&&(pb.default.info?.(`Running storage reclamation handler for ${e} with priority ${n}`),await c)}}}catch(r){pb.default.error?.("Error running storage reclamation handlers",r)}_b=setTimeout(Eb,$U).unref()}function e5(e){KU=e??VU}var hb,kE,pb,qE,GU,HE,Z8,$U,_b,VU,KU,GE=fe(()=>{hb=require("node:fs/promises"),kE=w(st()),pb=w(ki());H();qE=w(ae()),GU=w(se());qE.default.initSync();HE=new Map,Z8=qE.default.get(U.STORAGE_RECLAMATION_THRESHOLD)??.4,$U=(0,GU.convertToMS)(qE.default.get(U.STORAGE_RECLAMATION_INTERVAL))||36e5;o(Um,"onStorageReclamation");VU=o(async e=>{if(hb.statfs){let t=await(0,hb.statfs)(e);return t.bavail/t.blocks}else return new Promise((t,r)=>{import("hdd-space").then(n=>{n.default(s=>{for(let i of s.parts)if(e.startsWith(i.place))return t(i.free/i.size);return t(1)})})})},"defaultGetAvailableSpaceRatio"),KU=VU;o(Eb,"runReclamationHandlers");o(e5,"setAvailableSpaceRatioGetter")});var ix={};Ce(ix,{ACTION_32_BIT:()=>WE,ACTION_64_BIT:()=>n5,AUDIT_STORE_OPTIONS:()=>Fm,Decoder:()=>ll,HAS_BLOBS:()=>Ln,HAS_CURRENT_RESIDENCY_ID:()=>ul,HAS_EXPIRATION_EXTENDED_TYPE:()=>qm,HAS_ORIGINATING_OPERATION:()=>km,HAS_PREVIOUS_RESIDENCY_ID:()=>dl,REMOTE_SEQUENCE_UPDATE:()=>zE,createAuditEntry:()=>Vu,getLastRemoved:()=>Ab,openAuditStore:()=>KE,readAuditEntry:()=>vt,removeAuditEntry:()=>YE,setAuditRetention:()=>r5,transactionKeyEncoder:()=>tx});function KE(e){let t=e.auditStore=e.openDB(gb.AUDIT_STORE_NAME,{create:!1,...Fm});t||(t=e.auditStore=e.openDB(gb.AUDIT_STORE_NAME,Fm),zU(t,1)),t.rootStore=e,t.tableStores=[];let r=[];t.addDeleteRemovalCallback=function(l,u,d){return r[l]=d,t.tableStores[l]=u,t.deleteCallbacks=r,{remove(){delete r[l]}}};let n=null,s,i=0,a=Tb;Um(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(a=l),clearTimeout(n);let u=new Promise(d=>{n=setTimeout(async()=>{if(await s,s=u,t.rootStore.status==="closed"||t.rootStore.status==="closing")return;let f=0,m,h;try{for(let{key:p,value:E}of t.getRange({start:1,snapshot:!1,end:Date.now()-Sb/(1+i*i)})){try{m=YE(t,p,E)}catch(g){$u.warn("Error removing audit entry",g)}if(h=p,await new Promise(setImmediate),++f>=t5){a=10;break}}await m}finally{f===0?a=Math.min(a<<1,Sb/10):(zU(t,h),a>100&&(a=a>>1)),d(void 0),c()}},a).unref()});return u}if(o(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Bm.getWorkerIndex)()===(0,Bm.getWorkerCount)()-1&&c(),(0,Bm.getWorkerIndex)()===0&&!WU)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(WU=!0,$u.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 YE(e,t,r){let n=s5(r),s;if(n&Ln){s=vt(r);let i=e.tableStores[s.tableId],a=i?.getEntry(s.recordId);(!a||a.version!==s.version||!a.value)&&al(()=>Fa(s.getValue(i)),i.rootStore)}if((n&15)===Rb){s=s||vt(r);let i=s.tableId;e.tableStores[s.tableId]?.getEntry(s.recordId)?.version===s.version&&e.deleteCallbacks?.[i]?.(s.recordId,s.version)}return e.remove(t)}function zU(e,t){yb[0]=t,e.put(Symbol.for("last-removed"),rx)}function Ab(e){let t=e.get(Symbol.for("last-removed"));if(t)return rx.set(t),yb[0]}function r5(e,t=Tb){Sb=e,Tb=t}function Vu(e,t,r,n,s,i,a,c,l,u,d,f,m){let h=nx[a];if(!h)throw new Error(`Invalid audit entry type ${a}`);let p=1;if(n&&(n>1?Ha.setFloat64(0,n):Ps.set(bb),p=9),l){if(l&255)throw new Error("Illegal extended type");p+=3}y(s),y(t),g(r),Ha.setFloat64(p,e),p+=8,l&ul&&y(u),l&dl&&y(d),l&qm&&(Ha.setFloat64(p,f),p+=8),l&km&&y(sx[m]),i?g(i):Ps[p++]=0,l?Ha.setUint32(n?8:0,h|l|3221225472):Ps[n?8:0]=h;let E=Ps.subarray(0,p);if(c)return Buffer.concat([E,c]);return E;function g(T){let R=p;p+=1,p=(0,cl.writeKey)(T,Ps,p);let N=p-R-1;N>127?N>16383?($u.error("Key or username was too large for audit entry",T),p=R+1,Ps[R]=0):(Ps.copyWithin(R+2,R+1,p),Ha.setUint16(R,N|32768),p++):Ps[R]=N}function y(T){T<128?Ps[p++]=T:T<16384?(Ha.setUint16(p,T|32768),p+=2):T<1056964608?(Ha.setUint32(p,T|3221225472),p+=4):(Ps[p]=255,Ha.setUint32(p+1,T),p+=5)}}function s5(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 ll(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function vt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new ll(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),a=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,d=n.position+=l,f=n.readFloat64(),m,h,p,E;if(i&ul&&(m=n.readInt()),i&dl&&(h=n.readInt()),i&qm&&(p=n.readFloat64()),i&km){let R=n.readInt();E=sx[R]}l=n.readInt();let g=n.position,y=n.position+=l,T;return{type:nx[i&7],tableId:c,nodeId:a,get recordId(){return(0,cl.readKey)(e,u,d)},getBinaryRecordId(){return e.subarray(u,d)},version:f,previousLocalTime:s,get user(){return y>g?(0,cl.readKey)(e,g,y):void 0},get encoded(){return t?e.subarray(t,r):e},getValue(R,N,P){if(i&$E||i&xm&&!N)return T||(T=al(()=>R.decoder.decode(e.subarray(n.position,r)),R.rootStore)),T;if(i&xm&&P)return QA(R.getEntry(this.recordId),P,R)},getBinaryValue(){return i&($E|xm)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:m,previousResidencyId:h,expiresAt:p,originatingOperation:E}}catch(n){return $u.error("Reading audit entry error",n,e),{}}}var cl,VE,gb,Bm,ex,$u,Ps,Ha,tx,Fm,Sb,t5,yb,rx,Tb,WU,$E,xm,jU,Rb,JU,QU,XU,ZU,WE,n5,zE,ul,dl,km,qm,Ln,nx,sx,ll,Io=fe(()=>{cl=require("ordered-binary"),VE=w(ae()),gb=w(qt());H();Bm=w(st()),ex=w(se());fl();$u=w(z());bE();Cs();GE();(0,VE.initSync)();Ps=Buffer.alloc(2816),Ha=new DataView(Ps.buffer,Ps.byteOffset,2816),tx={writeKey(e,t,r){return e===Hm?(t.set(Hm,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,cl.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,cl.readKey)(e,t,r)}},Fm={encoding:"binary",keyEncoder:tx},Sb=(0,ex.convertToMS)((0,VE.get)(U.LOGGING_AUDITRETENTION))||86400*3,t5=1e3,yb=new Float64Array(1),rx=new Uint8Array(yb.buffer),Tb=1e4,WU=!1;o(KE,"openAuditStore");o(YE,"removeAuditEntry");o(zU,"updateLastRemoved");o(Ab,"getLastRemoved");o(r5,"setAuditRetention");$E=16,xm=32,jU=1,Rb=2,JU=3,QU=4,XU=5,ZU=6,WE=14,n5=15,zE=11,ul=512,dl=1024,km=2048,qm=4096,Ln=8192,nx={put:jU|$E,[jU]:"put",delete:Rb,[Rb]:"delete",message:JU|$E,[JU]:"message",invalidate:QU|xm,[QU]:"invalidate",patch:XU|xm,[XU]:"patch",relocate:ZU,[ZU]:"relocate"},sx={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};o(Vu,"createAuditEntry");o(s5,"readAction");o(vt,"readAuditEntry");ll=class extends DataView{static{o(this,"Decoder")}position=0;readInt(){let t;return t=this.getUint8(this.position++),t>=128?t>=192?t===255?(t=this.getUint32(this.position),this.position+=4,t):(t=this.getUint32(this.position-1)&1073741823,this.position+=3,t):(t=this.getUint16(this.position-1)&32767,this.position++,t):t}readFloat64(){try{let t=this.getFloat64(this.position);return this.position+=8,t}catch(t){throw t.message=`Error reading float64: ${t.message} at position ${this.position}`,t}}}});var ux={};Ce(ux,{ENTRY:()=>o5,HAS_EXPIRATION:()=>QE,HAS_RESIDENCY_ID:()=>Pb,HAS_STRUCTURE_UPDATE:()=>XE,LAST_TIMESTAMP_PLACEHOLDER:()=>Hm,LOCAL_TIMESTAMP:()=>i5,METADATA:()=>Yu,NEW_TIMESTAMP_PLACEHOLDER:()=>ax,NO_TIMESTAMP:()=>Nb,PENDING_LOCAL_TIME:()=>Db,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>bb,RecordEncoder:()=>Cb,TIMESTAMP_ASSIGN_LAST:()=>c5,TIMESTAMP_ASSIGN_NEW:()=>cx,TIMESTAMP_ASSIGN_PREVIOUS:()=>lx,TIMESTAMP_PLACEHOLDER:()=>jE,TIMESTAMP_RECORD_PREVIOUS:()=>Ib,entryMap:()=>ka,handleLocalTimeForGets:()=>ZE,lastMetadata:()=>ct,recordUpdater:()=>Lb,removeEntry:()=>hl});function u5(){return Vm[0]=Vm[0]^64,a5.getFloat64(0)}function ZE(e,t){let r=e.getEntry;e.readCount=0,e.cachePuts=!1,e.rootStore=t,e.encoder.rootStore=t,e.getEntry=function(a,c){e.readCount++,ct=null;let l=r.call(this,a,c);return l&&(ct&&(l.metadataFlags=ct[Yu],l.localTime=ct.localTime,l.residencyId=ct.residencyId,ct.expiresAt>=0&&(l.expiresAt=ct.expiresAt),ct=null),l.value&&ka.set(l.value,l),l.key=a),l};let n=e.get;e.get=function(a,c){ct=null;let l=n.call(this,a,c);return ct&&l&&(ka.set(l,ct),ct=null),l};let s=e.getRange;e.getRange=function(a){let c=s.call(this,a);return a.valuesForKey?c.map(l=>l?.value):a.values===!1||a.onlyCount?c:c.map(l=>(ct&&(l.metadataFlags=ct[Yu],l.localTime=ct.localTime,l.residencyId=ct.residencyId,ct.expiresAt>=0&&(l.expiresAt=ct.expiresAt),ct=null),l))};let i=e.useReadTransaction();if(i.done(),!i.done.isTracked){let a=i.constructor,c=i.use,l=i.done;a.prototype.use=function(){this.timerTracked||(this.timerTracked=!0,ml.push(new WeakRef(this))),c.call(this)},a.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<ml.length;u++){let d=ml[u].deref();(!d||d.isDone||d.isCommitted)&&ml.splice(u--,1)}},a.prototype.done.isTracked=!0}return e}function Lb(e,t,r){return function(n,s,i,a,c=-1,l,u,d="put",f,m){f||l==null?Ku=i?.localTime?Ib|lx:Nb:Ku=l?i?.localTime?Ib|16384:cx|16384:Nb;let h=u?.expiresAt;if(h>=0&&(c|=QE),$m=c,wb=h,i?.version===a&&l===!1)throw new Error("Must retain local time if version is not changed");let p={version:a,instructedWrite:Ku>0},E,g=0;try{let y=i?.residencyId,T=u?.residencyId;T&&(Ob=T,$m|=Pb,g|=ul),y!==T&&(g|=dl,y||(y=0)),c&QE&&(g|=qm),u?.originatingOperation&&(g|=km),f&&(p.ifVersion=E=i?.version??null),i&&i.value&&i.metadataFlags&Ln&&(r.getBinaryFast(i.localTime)||Fa(i.value));let R;if(s!==void 0&&(R=xE(()=>e.put(n,s,p),n,e.rootStore),ol&&(g|=Ln)),l){let N=u?.user?.username;if(m&&(xE(()=>e.encoder.encode(m),n,e.rootStore),ol&&(g|=Ln)),e.encoder.hasStructureUpdate&&(g|=XE,e.encoder.hasStructureUpdate=!1),f&&i?.localTime){let P=i?.localTime,Y=r.get(P);if(Y){let te=vt(Y).previousLocalTime;return R=r.put(P,Vu(a,t,n,te,u?.nodeId??server.replication.getThisNodeId(r)??0,N,d,Gm,g,T,y,h),{ifVersion:E}),R}}R=r.put(s===void 0?ax:Hm,Vu(a,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,d,Gm,g,T,y,h,u?.originatingOperation),{append:d!=="invalidate",instructedWrite:!0,ifVersion:E})}return R}catch(y){throw y.message+=" id: "+n+" options: "+p,y}}}function hl(e,t,r){if(t)return t.value&&t.metadataFlags&Ln&&!e.auditStore.getBinaryFast(t.localTime)&&Fa(t.value),e.remove(t.key,r)}var ox,JE,jE,Hm,bb,ax,i5,Yu,o5,Vm,a5,Nb,cx,c5,lx,Ib,QE,Pb,Db,XE,ka,l5,Gm,Ku,$m,wb,Ob,ct,Cb,ml,fl=fe(()=>{ox=require("msgpackr");Io();JE=w(z());Cs();Cs();jE=new Uint8Array([1,1,1,1,4,64,0,0]),Hm=new Uint8Array([1,1,1,1,1,0,0,0]),bb=new Uint8Array([1,1,1,1,3,64,0,0]),ax=new Uint8Array([1,1,1,1,0,64,0,0]),i5=Symbol("local-timestamp"),Yu=Symbol("metadata"),o5=Symbol("entry"),Vm=new Uint8Array(8),a5=new DataView(Vm.buffer,0,8),Nb=0,cx=0,c5=1,lx=3,Ib=4,QE=16,Pb=32,Db=1,XE=256,ka=new WeakMap,Ku=0,$m=-1,wb=-1,Ob=0,ct=null,Cb=class extends ox.Encoder{static{o(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0;class r{static{o(this,"RecordObject")}getUpdatedTime(){return ka.get(this)?.version}getExpiresAt(){return ka.get(this)?.expiresAt}}t.structPrototype=r.prototype,super(t);let n=this.encode;this.encode=function(i,a){if(Ku||$m>=0){let c=0,l=Ku;l&&(c+=8,Ku=0);let u=$m,d=wb,f=Ob;u>=0&&(c+=4,$m=-1,d>=0&&(c+=8,wb=-1),f&&(c+=4,Ob=0));let m=l5=n.call(this,i,a|2048|c);Gm=m.subarray((m.start||0)+c,m.end);let h=m.start||0;return l&&(jE[4]=l,jE[5]=l>>8,m.set(jE,h),h+=8),ol&&(u|=Ln),u>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(h,u|WE<<24),h+=4,d>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setFloat64(h,d),h+=8),f&&(m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(h,f)),m}else return Gm=n.call(this,i,a),Gm};let s=this.saveStructures;this.saveStructures=function(i,a){let c=s.call(this,i,a);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],a=0;try{if(i<32&&s>2){let c=n,l;if(i===2){if(t.copy)t.copy(Vm,0,c),c+=8;else for(let m=0;m<8;m++)Vm[m]=t[c++];l=u5(),i=t[c]}let u,d;i<32&&(i===WE?(a=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4):(a=i|t[c+1]<<5,c+=2),a&QE&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),a&Pb&&(d=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let f=al(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return ct={localTime:l,[Yu]:a,expiresAt:u,residencyId:d},f}return r?.valueAsBuffer?t:al(()=>super.decode(t,r),this.rootStore)}catch(c){return JE.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};o(u5,"getTimestamp");o(ZE,"handleLocalTimeForGets");ml=[];setInterval(()=>{for(let e=0;e<ml.length;e++){let t=ml[e].deref();!t||t.isDone||t.isCommitted?ml.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(JE.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):JE.error("Read transaction detected that has been open too long (over one minute), make sure read transactions are quickly closed",t)),t.openTimer++):t.openTimer=1)}},15e3).unref();o(Lb,"recordUpdater");o(hl,"removeEntry")});function Ub(e,t,r,n,s,i,a,c){let l=e[0];if(t==="or"){let f=u(l);for(let h=1;h<e.length;h++){let p=e[h],E=u(p);f=f.concat(E)}let m=new Set;return f.filter(h=>{let p=h.key??h;return m.has(p)?!1:(m.add(p),!0)})}else{let f=u(l),m=d(e.slice(1),!0,l.estimated_count);return m.length>0?a(f,m):f}function u(f){return f.conditions?Ub(f.conditions,f.operator,r,n,s,i,a,c):Ju(f,n,f.descending||s.reverse===!0,r,s.allowFullScan,c,i)}o(u,"executeCondition");function d(f,m,h){return f.map((p,E)=>{if(p.conditions){let T=p.operator==="or",R=d(p.conditions,!T,h);return T?(N,P)=>R.some(Y=>Y(N,P)):(N,P)=>R.every(Y=>Y(N,P))}let g=(p.attribute||p[0])===r.primaryKey,y=Ym(p,r,i,c,g,h);return m&&E<f.length-1&&h&&(h=S5(r.primaryStore,p.estimated_count,h)),y}).filter(Boolean)}o(d,"mapConditionsToFilters")}function Ju(e,t,r,n,s,i,a){let c=e[0]??e.attribute,l=e[1]??e.value,u=e.comparator;if(l===void 0&&u!=="sort")throw new Kr.ClientError(`Search condition for ${c} must have a value`);if(Array.isArray(c)){let R=c[0],N=$i(n.attributes,R);if(N.relationship){if(c.length<2)throw new Kr.ClientError("Can not directly query a relational attribute, must query an attribute within the target table");let P=N.definition?.tableClass||N.elements?.definition?.tableClass,Y=new Map,te=Ju({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:u},t,r,P,s,Y);if(N.relationship.to){i[c[0]]=Y;let x=!!$i(P.attributes,N.relationship.to)?.elements;te=p5(te,N,P.primaryStore,x,Y)}if(N.relationship.from){let x=o(V=>(V?.key!==void 0&&(V=V.key),Ju({attribute:N.relationship.from,value:V},t,r,n,s,Y)),"searchEntry");N.elements?(i[c[0]]=Y,te=_5(te,N,P.primaryStore,Y,x)):te=te.flatMap(x)}return te}else if(c.length===1)c=c[0];else throw new Kr.ClientError("Unable to query by attribute "+JSON.stringify(c))}let d=c===n.primaryKey||c==null,f=d?n.primaryStore:n.indices[c],m,h,p,E;l instanceof Date&&(l=l.getTime());let g;switch(xb[u]||u){case"lt":m=!0,h=l;break;case"le":m=!0,h=l,p=!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,h=l.slice(0),h[h.length-1]=Gi.MAXIMUM_KEY;break;case"starts_with":m=l.toString(),h=l+"\uFFFF";break;case"between":case"gele":case"gelt":case"gtlt":case"gtle":m=l[0],m instanceof Date&&(m=m.getTime()),h=l[1],h instanceof Date&&(h=h.getTime()),p=u==="gele"||u==="gtle"||u==="between",E=u==="gtlt"||u==="gtle";break;case"equals":case void 0:m=l,h=l,p=!0;break;case"ne":if(l===null){m=l,E=!0;break}case"sort":case"contains":case"ends_with":m=!0,g=!0;break;default:throw new Kr.ClientError(`Unknown query comparator "${u}"`)}let y;if(typeof m=="string"&&m.length>Ds.MAX_SEARCH_KEY_LENGTH&&(m=m.slice(0,Ds.MAX_SEARCH_KEY_LENGTH)+Ds.OVERFLOW_MARKER,E=!1,y=Ym(e,n,null,i,d)),typeof h=="string"&&h.length>Ds.MAX_SEARCH_KEY_LENGTH&&(h=h.slice(0,Ds.MAX_SEARCH_KEY_LENGTH)+Ds.OVERFLOW_MARKER,p=!0,y=y??Ym(e,n,null,i,d)),r){let R=m;m=h,h=R,R=!E,E=!p,p=R}if(!f||f.isIndexing||g||l===null&&!f.indexNulls){if(s===!1&&!f)throw new Kr.ClientError(`"${c}" is not indexed, can not search for this attribute`,404);if(s===!1&&g)throw new Kr.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 Kr.ServerError(`"${c}" is not indexed yet, can not search for this attribute`,503);if(l===null&&f&&!f.indexNulls)throw new Kr.ClientError(`"${c}" is not indexed for nulls, index needs to be rebuilt to search for nulls, can not search for this attribute`,400);if(y=y??Ym(e,n,null,i,d),!y)throw new Kr.ClientError(`Unknown search operator ${e.comparator}`)}let T={start:m,end:h,inclusiveEnd:p,exclusiveStart:E,values:!0,versions:d,transaction:t,reverse:r};if(d){let R=f.getRange(T).map(y?function({key:N,value:P}){return this?.isSync?P&&y(P)?N:qa.SKIP:new Promise((Y,te)=>setImmediate(()=>{try{Y(P&&y(P)?N:qa.SKIP)}catch(x){te(x)}}))}:N=>N.value==null&&!(N.metadataFlags&(Mn|Ga))?qa.SKIP:N);return R.hasEntries=!0,R}else return f?f.customIndex?f.customIndex.search(e,a).map(R=>{if(typeof R=="object"&&R){let{key:N,...P}=R,Y=n.primaryStore.getEntry(N);return{...P,...Y}}return R}):f.getRange(T).map(y?function({key:R,value:N}){let P;return typeof R=="string"&&R.length>Ds.MAX_SEARCH_KEY_LENGTH?P=n.primaryStore.get(N):P={[c]:R},this.isSync?y(P)?N:qa.SKIP:new Promise((Y,te)=>setImmediate(()=>{try{Y(y(P)?N:qa.SKIP)}catch(x){te(x)}}))}:({value:R})=>R):n.primaryStore.getRange(r?{end:!0,transaction:t,reverse:!0}:{start:!0,transaction:t}).map(function({key:R,value:N}){return this.isSync?N&&y(N)?R:qa.SKIP:new Promise((P,Y)=>setImmediate(()=>{try{P(N&&y(N)?R:qa.SKIP)}catch(te){Y(te)}}))})}function $i(e,t){if(Array.isArray(t))if(t.length>1){let r=$i(e,t[0]),n=(r?.definition?.tableClass||r?.elements?.definition?.tableClass)?.attributes??r?.properties;return n?$i(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 p5(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i;return s.hasMappings=!0,{next(){if(!i){let c=t.relationship.to,l=o((u,d)=>{let f=s.get(u);f?f.push(d):s.set(u,f=[d])},"addEntry");for(let u of e){let d=u.value??r.get(u.key??u),f=d?.[c];if(f!=null&&!s.filters?.some(m=>!m(d)))if(n)for(let m=0;m<f.length;m++)l(f[m],u);else l(f,u)}return i=s.keys()[Symbol.iterator](),this.next()}let a=i.next();return a.done?a:{value:a.value}},return(){if(i?.return)return i.return()}}}})}function _5(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i,a,c=new Set;return{next(){let l;if(a)for(;l=a.next(),!l.done;){let u=l.value;if(!c.has(u))return c.add(u),l}if(!i){let u=new Set;n.fromRecord=d=>d[t.relationship.from]?.filter?.(f=>u.has(f));for(let d of e){if(n.filters){let f=r.get(d);if(n.filters.some(m=>!m(f)))continue}u.add(d)}return i=u[Symbol.iterator](),this.next()}do{let u=i.next();return u.done?u:(a=s(u.value)[Symbol.iterator](),this.next())}while(!0)},return(){return a?.return?.()},throw(){return a?.throw?.()}}}})}function Ym(e,t,r,n,s,i){let a=e.comparator,c=e[0]??e.attribute,l=e[1]??e.value;if(Array.isArray(c)){if(c.length===0)return()=>!0;if(c.length===1)c=c[0];else if(c.length>1){let d=c[0],f=$i(t.attributes,d),m=f.definition?.tableClass||f.elements.definition?.tableClass,h=n?.[d],p=Ym({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:a},m,r,h?.[d]?.joined,c[1]===m.primaryKey,i);if(!p)return;if(h){h.filters||(h.filters=[]),h.filters.push(p);return}let E=t.propertyResolvers?.[d];E.to&&(p.to=E.to);let g,y=o((R,N)=>{let P,Y;return E?E.returnDirect?(P=E(R,r,N),Y=ct):(Y=E(R,r,N,!0),Array.isArray(Y)?(P=Y.map(te=>te.value),Y=null):P=Y?.value):P=R[d],{subObject:P,subEntry:Y}},"getSubObject"),T=o((R,N)=>{if(E&&p.idFilter){if(!g)if(p.idFilter.idSet?.size===1){for(let V of p.idFilter.idSet)e={attribute:E.from??t.primaryKey,value:V};g=u(E.from??t.primaryKey,p.idFilter,!0,!0)}else g=u(E.from??t.primaryKey,p.idFilter,!1,!0);let x=g(R);return g.idFilter&&(T.idFilter=g.idFilter),x}let{subObject:P,subEntry:Y}=y(R,N);return P?Array.isArray(P)?(!n?.[d]&&n&&(n[d]={fromRecord(x){let V=y(x).subObject;return Array.isArray(V)?V.filter(p).map(j=>j[m.primaryKey]):V}}),P.some(p)):p(P,Y):!1},"recordFilter");return T}}switch(l instanceof Date&&(l=l.getTime()),xb[a]||a){case Ds.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,Gi.compareKeys)(d,l[0])>=0&&(0,Gi.compareKeys)(d,l[1])<=0,!0);case"gt":return u(c,d=>(0,Gi.compareKeys)(d,l)>0);case"ge":return u(c,d=>(0,Gi.compareKeys)(d,l)>=0);case"lt":return u(c,d=>(0,Gi.compareKeys)(d,l)<0);case"le":return u(c,d=>(0,Gi.compareKeys)(d,l)<=0);case"ne":return u(c,d=>(0,Gi.compareKeys)(d,l)!==0,!1,!0);case"sort":return()=>!0;default:throw new Kr.ClientError(`Unknown query comparator "${a}"`)}function u(d,f,m,h){let p;m=m&&!s&&t?.indices[d]&&i>3,m&&(e.estimated_count==null&&tg(t)(e),p=e.estimated_count>>4,(isNaN(p)||p>=i)&&(m=!1));let E=0,g=3;function y(T){let R=T[d],N;if(typeof R!="object"||!R||h?N=f(R):Array.isArray(R)?N=R.some(f):R instanceof Date&&(N=f(R.getTime())),m&&(g++,!N&&!y.idFilter&&++E/g*i>p)){let P=Ju(e,r.transaction.getReadTxn(),!1,t),Y;y.to?Y=P.flatMap(x=>t.primaryStore.get(x)[y.to]):Y=P.map(Qu);let te=new Set(Y);y.idFilter=x=>te.has(Qu(x)),y.idFilter.idSet=te}return N}return o(y,"recordFilter"),s&&(y.idFilter=f),y}o(u,"attributeComparator")}function tg(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/vo(e.primaryStore):i.estimated_count}return r.estimated_count=s,r.estimated_count}let n=r.comparator||r.search_type;if(n=xb[n]||n,n===Ds.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=$i(e.attributes,s[0]),a=i.definition?.tableClass||i.elements.definition?.tableClass,c=tg(a)({value:r.value,attribute:s.length>2?s.slice(1):s[1],comparator:"equals"}),l=e.indices[i.relationship.from];r.estimated_count=c+(l?c*vo(e.indices[i.relationship.from])/(vo(a.primaryStore)||1):c)}else{let i=e.indices[s];r.estimated_count=i?i.getValuesCount(r[1]??r.value):1/0}}else if(n==="contains"||n==="ends_with"||n==="ne"){let s=r[0]??r.attribute,i=e.indices[s];r.value===null&&n==="ne"?r.estimated_count=vo(e.primaryStore)-(i?i.getValuesCount(null):0):r.estimated_count=1/0}else if(n==="starts_with"||n==="prefix")r.estimated_count=m5*vo(e.primaryStore)+1;else if(n==="between")r.estimated_count=f5*vo(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=vo(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=d5*vo(e.primaryStore)+1}typeof r.descending=="boolean"&&(r.estimated_count/=2)}return r.estimated_count}return o(t,"estimateConditionForTable"),t}function rg(e,t){if(e)if(Uo=e,Wu.lastIndex=0,E5.test(e))try{if(t&&(t.conditions=[]),ui=t??new ju,Km(ui,""),Mr!==Uo.length&&Gt("Unable to parse query, unexpected end of query"),ui.parseErrorMessage&&(ui.parseError=new Mb(t.parseErrorMessage),!t))throw ui.parseError;return ui}catch(r){if(r.statusCode=400,r.message=`Unable to parse query, ${r.message} at position ${Mr} in '${Uo}'`,ui.parseErrorMessage&&(r.message+=", "+ui.parseErrorMessage),t)t.parseError=r;else throw r}else return t??new URLSearchParams(e)}function Gt(e){let t=`${e} at position ${Mr}`;ui.parseErrorMessage=ui.parseErrorMessage?ui.parseErrorMessage+", "+t:t}function Km(e,t){let r=Wu,n,s,i,a,c,l=decodeURIComponent,u;for(;n=r.exec(Uo);){Mr=r.lastIndex;let[,d,f]=n;a?(d&&Gt(`expected operator, but encountered '${d}'`),a=!1,c=!1):c=!0;let m;switch(f){case"=":s!=null?(d.length<=2?i=d:Gt(`invalid FIQL operator ${d}`),l=dx):(l=decodeURIComponent,i="equals",d||Gt("attribute must be specified before equality comparator"),s=zu(d));break;case"==":case"!=":case"<":case"<=":case">":case">=":case"===":case"!==":i=h5[f],l=vb[i]?dx:decodeURIComponent,d||Gt(`attribute must be specified before comparator ${f}`),s=zu(d);break;case"&=":case"|=":case"|":case"&":case"":case void 0:if(s==null)s===void 0&&(t&&Gt(`expected '${t}', but encountered ${f[0]?"'"+f[0]+"'":"end of string"}}`),Gt(`no comparison specified before ${f?"'"+f+"'":"end of string"}`));else{e.conditions||Gt("conditions/comparisons are not allowed in a property list");let p={comparator:i,attribute:s||null,value:l(d)};if(i==="eq"&&fx(p,d),s===""){let E=e.conditions[e.conditions.length-1];E.chainedConditions=E.chainedConditions||[],E.chainedConditions.push(p),E.operator=u}else eg(e,u),e.conditions.push(p)}f==="&"?(u="and",s=void 0):f==="|"?(u="or",s=void 0):f==="&="?(u="and",s=""):f==="|="&&(u="or",s="");break;case",":e.conditions?Gt("conditions/comparisons are not allowed in a property list"):e.push(zu(d)),s=void 0;break;case"(":Wu.lastIndex=Mr;let h=Km(d?[]:new ju,")");switch(d){case"":eg(e,u),e.conditions.push(h);break;case"limit":switch(h.length){case 1:e.limit=+h[0];break;case 2:e.offset=+h[0],e.limit=h[1]-e.offset;break;default:Gt("limit must have 1 or 2 arguments")}break;case"select":Array.isArray(h[0])&&h.length===1&&!h[0].name?(e.select=h[0],e.select.asArray=!0):h.length===1?e.select=h[0]:h.length===2&&h[1]===""?e.select=h.slice(0,1):e.select=h;break;case"group-by":Gt("group by is not implemented yet");case"sort":e.sort=mx(h);break;default:Gt(`unknown query function call ${d}`)}Uo[Mr]===","?r.lastIndex=++Mr:a=!0,s=null;break;case"{":e.conditions&&Gt("property sets are not allowed in a queries"),d||Gt("property sets must have a defined parent property name"),Wu.lastIndex=Mr,m=Km([],"}"),m.name=d,e.push(m),Uo[Mr]===","?r.lastIndex=++Mr:a=!0;break;case"[":if(Wu.lastIndex=Mr,d?(m=Km(new ju,"]"),m.name=d):m=Km(e.conditions?new ju:[],"]"),e.conditions)if(eg(e,u),Uo[Mr]==="="){l=decodeURIComponent,i="equals",s=zu(d),r.lastIndex=++Mr;break}else e.conditions.push(m),s=null;else e.push(m);Uo[Mr]===","?r.lastIndex=++Mr:a=!0;break;case")":case"]":case"}":if(t===f[0]){if(e.conditions)if(s){let p={comparator:i||"equals",attribute:s,value:l(d)};i==="eq"&&fx(p,d),eg(e,u),e.conditions.push(p)}else d&&Gt("no attribute or comparison specified");else(d||e.length>0&&c)&&e.push(zu(d));return e}else Gt(t?`expected '${t}', but encountered '${f[0]}'`:`unexpected token '${f[0]}'`);default:Gt(`unexpected operator '${f}'`)}if(t!==")"&&(r=s?g5:Wu,r.lastIndex=Mr),Mr===Uo.length)return e}t&&Gt(`expected '${t}', but encountered end of string`)}function eg(e,t){e.conditions.length>0&&(e.operator?e.operator!==t&&Gt("Can not mix operators within a condition grouping"):e.operator=t)}function zu(e){return e.indexOf(".")>-1?e.split(".").map(zu):decodeURIComponent(e)}function dx(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 Kr.ClientError(`Unknown type ${t}`)}return decodeURIComponent(e)}function fx(e,t){if(t.indexOf("*")>-1)if(t.endsWith("*"))e.comparator="starts_with",e.value=decodeURIComponent(t.slice(0,-1));else throw new Kr.ClientError("wildcard can only be used at the end of a string")}function mx(e){let t=hx(e[0]);return e.length>1&&(t.next=mx(e.slice(1))),t}function hx(e){if(Array.isArray(e)){let t=hx(e[0]);return e[0]=t.attribute,t.attribute=e,t}if(typeof e=="string")switch(e[0]){case"-":return{attribute:e.slice(1),descending:!0};case"+":return{attribute:e.slice(1),descending:!1};default:return{attribute:e,descending:!1}}Gt(`Unknown sort type ${e}`)}function Qu(e){return Array.isArray(e)?e.join("\0"):e}function vo(e){let t=Date.now();return(e.estimatedEntryCountExpires||0)<t&&(e.estimatedEntryCount=e.getStats().entryCount,e.estimatedEntryCountExpires=t+1e4),e.estimatedEntryCount}function S5(e,t,r){return t*r/vo(e)}var Kr,Ds,Gi,qa,d5,f5,m5,h5,vb,xb,Mb,E5,Wu,g5,Mr,ui,Uo,ju,ng=fe(()=>{Kr=w(_e()),Ds=w(qt()),Gi=require("ordered-binary"),qa=require("lmdb");Wm();fl();d5=.3,f5=.1,m5=.05,h5={"<":"lt","<=":"le",">":"gt",">=":"ge","!=":"ne","==":"eq","===":"equals","!==":"not_equal"},vb={lt:!0,le:!0,gt:!0,ge:!0,ne:!0,eq:!0};o(Ub,"executeConditions");o(Ju,"searchByIndex");o($i,"findAttribute");o(p5,"joinTo");o(_5,"joinFrom");xb={eq:"equals",greater_than:"gt",greaterThan:"gt",greater_than_equal:"ge",greaterThanEqual:"ge",less_than:"lt",lessThan:"lt",less_than_equal:"le",lessThanEqual:"le",not_equal:"ne",notEqual:"ne",equal:"equals",sw:"starts_with",startsWith:"starts_with",ew:"ends_with",endsWith:"ends_with",ct:"contains",">":"gt",">=":"ge","<":"lt","<=":"le","...":"between"};o(Ym,"filterByType");o(tg,"estimateCondition");Mb=class extends Kr.Violation{static{o(this,"SyntaxViolation")}},E5=/[()[\]|!<>.]|(=\w*=)/,Wu=/([^?&|=<>!([{}\]),]*)([([{}\])|,&]|[=<>!]*)/g,g5=/([^&|=[\]{}]+)([[\]{}]|[&|=]*)/g;o(rg,"parseQuery");o(Gt,"recordError");o(Km,"parseBlock");o(eg,"assignOperator");o(zu,"decodeProperty");o(dx,"typedDecoding");o(fx,"wildcardDecoding");o(mx,"toSortObject");o(hx,"toSortEntry");ju=class{static{o(this,"Query")}constructor(){this.conditions=[]}[Symbol.iterator](){return this.conditions[Symbol.iterator]()}get(t){for(let r=0;r<this.conditions.length;r++){let n=this.conditions[r];if(n.attribute===t)return n.value}}getAll(){let t=[];for(let r=0,n=this.conditions.length;r<n;r++){let s=this.conditions[r];s.attribute&&t.push(s.value)}return t}};o(Qu,"flattenKey");o(vo,"estimatedEntryCount");o(S5,"intersectionEstimate")});var px,di,sg=fe(()=>{px=w(ci());$a();di=class extends URLSearchParams{static{o(this,"RequestTarget")}#e;pathname;search;id;isCollection;constructor(t){let r,n;if(t&&(r=t.indexOf("?"))>-1){n=t.slice(0,r);let s=t.slice(r+1);super(s),this.search=s}else super(),n=t;this.pathname=n??"",this.#e=t}toString(){return this.#e?this.#e:this.size>0?this.pathname+"?"+super.toString():this.pathname}get url(){return this.toString()}delete(t){super.delete(t),this.conditions&&(this.conditions=this.conditions.filter(r=>r.attribute!==t)),this.#e=void 0}set(t,r){this.delete(t),super.set(t,r),this.conditions?.push({attribute:t,value:r})}append(t,r){super.append(t,r),this.#e=void 0,this.conditions?.push({attribute:t,value:r})}};(0,px._assignPackageExport)("Resource",vr)});var Tx={};Ce(Tx,{MultiPartId:()=>ig,Resource:()=>vr,contextStorage:()=>Zu,snakeCase:()=>R5,transformForSelect:()=>og});function R5(e){return e[0].toLowerCase()+e.slice(1).replace(/[a-z][A-Z][a-z]/g,t=>t[0]+"_"+t.slice(1))}function _x(e,t){if(pl=!1,e==="")return null;if(e=e.slice(1),t.splitSegments){if(e.indexOf("/")===-1)return e===""?(pl=!0,null):t.coerceId(decodeURIComponent(e));let r=e.split("/"),n=new ig;for(let s=0;s<r.length;s++){let i=r[s];if(!i&&s===r.length-1){pl=!0;break}n[s]=t.coerceId(decodeURIComponent(i))}return n}else{if(e==="")return pl=!0,null;e[e.length-1]==="/"&&(pl=!0)}return t.coerceId(decodeURIComponent(e))}function vn(e,t){n.reliesOnPrototype=!0;let r=t.hasContent;return n;function n(s,i,a){let c,l,u,d;if(r){if(a)d=i,a=a.getContext?.()||a;else if(i)typeof s=="object"&&s&&(!Array.isArray(s)||typeof s[0]=="object")?(d=s,c=d[this.primaryKey]??null,a=i.getContext?.()||i):i?.transaction instanceof No?a=i:d=i;else if(s&&typeof s=="object")d=s,s=void 0,c=d.getId?.()??d[this.primaryKey];else throw new Xu.ClientError(`Invalid argument for data, must be an object, but got ${s}`);c===null&&(u=!0)}else i?a=i.getContext?.()||i:s&&typeof s=="object"&&!Array.isArray(s)&&(a=s);if(c===void 0)if(typeof s=="object"&&s){if(l=s,c=s instanceof URLSearchParams?s.toString():s.url,s.conditions)c=s.id;else if(typeof c=="string")if(this.directURLMapping)c=c.slice(1),l.id=c;else{let E=c.indexOf("?");E>-1&&(l=this.parseQuery(c.slice(E+1),s),c=c.slice(0,E),c===""&&(u=!0));let g=this.parsePath(c,a,l);g?.id!==void 0?(g.query&&(l?l=Object.assign(g.query,l):l=g.query),u=g.isCollection,c=g.id):c=g,c&&(l.id=c)}else if(s[Symbol.iterator]){c=[],u=!0;for(let 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 di,l.id=c,u=!1)))}c===void 0&&(c=s.id??null,c==null&&(u=!0))}else c=s,l=new di,l.id=c,c==null&&(u=!0);l||(l=new di,l.id=c),u&&(l.isCollection=!0);let f;a||(a=Zu.getStore()??{}),l.ensureLoaded!=null||l.async||u?(f={...t},l.ensureLoaded!=null&&(f.ensureLoaded=l.ensureLoaded),l.async&&(f.async=l.async),u&&(f.isCollection=!0)):f=t;let m=this.loadAsInstance,h=p;if((m===!1?!this.explicitContext:this.explicitContext===!1)&&(h=o(E=>Zu.run(a,()=>p(E)),"runAction")),a?.transaction){let E=this.getResource(c,a,f);return E.then?E.then(h):h(E)}else return Mt(a,()=>{let E=this.getResource(c,a,f);return E.then?E.then(h):h(E)},f);function p(E){if(m!==!1&&a.authorize){a.authorize=!1;let g=t.type==="read"?E.allowRead(a.user,l,a):t.type==="update"?E.doesExist?.()===!1?E.allowCreate(a.user,d,a):E.allowUpdate(a.user,d,a):t.type==="create"?E.allowCreate(a.user,d,a):E.allowDelete(a.user,l,a);if(g?.then)return g.then(y=>{if(!y)throw new Xu.AccessViolation(a.user);return typeof d?.then=="function"?d.then(T=>e(E,l,a,T)):e(E,l,a,d)});if(!g)throw new Xu.AccessViolation(a.user)}return typeof d?.then=="function"?d.then(g=>e(E,l,a,g)):e(E,l,a,d)}o(p,"authorizeActionOnResource")}}function Zn(e,t){let r=new Xu.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 Bb(e,t,r){let n=e.getRecord?.();if(n){let s=e.getChanges?.();return i=>{let a,c;return e.hasOwnProperty(i)&&typeof(a=e[i])!="function"?a:s&&i in s?s[i]:(c=t?.[i])?c(e,r):n[i]}}else return t?s=>{let i=t[s];return i?i(e,r):e[s]}:s=>e[s]}function og(e,t){let r=t.propertyResolvers,n=t.getContext?.(),s;if(typeof e=="string")return o(function a(c){return c.then?c.then(a):Array.isArray(c)?c.map(a):Bb(c,r,n)(e)},"transform");if(typeof e=="object"){if(e.asArray)return o(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(c);let u=[],d=i(Bb(l,r,n));for(let f of e)u.push(d(f));return u},"transform");let a=e.forceNulls;return o(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(m=>m&&typeof m=="object"?c(m):m);let u={},d=i(Bb(l,r,n)),f;for(let m of e){let h=d(m);h===void 0&&a&&(h=null),h?.then?(f||(f=[]),f.push(h.then(p=>u[m.name||m]=p))):u[m.name||m]=h}return f?Promise.all(f).then(()=>u):u},"transform")}else throw new Error("Invalid select argument type "+typeof e);function i(a){return c=>{if(typeof c=="string")return a(c);if(typeof c=="object")if(c.name){s||(s={});let l=s[c.name];if(!l){let d=r[c.name]?.definition?.tableClass;l=s[c.name]=og(c.select||c,d)}let u=a(c.name);return l(u)}else return a(c);else return c}}o(i,"handleProperty")}var Ex,gx,Xu,Sx,Zu,T5,vr,pl,ig,$a=fe(()=>{Ex=require("crypto");bm();ku();gx=w(ci()),Xu=w(_e());tl();ng();Sx=require("async_hooks");sg();Zu=new Sx.AsyncLocalStorage,T5={json:"application/json",cbor:"application/cbor",msgpack:"application/x-msgpack",csv:"text/csv"},vr=class{static{o(this,"Resource")}#e;#t;#r;static transactions;static directURLMapping=!1;static loadAsInstance;constructor(t,r){this.#e=t;let n=r?.getContext?r.getContext()??null:void 0;this.#t=n!==void 0?n:r||null}static get=vn(function(t,r,n,s){let i=t.get?.(r);if(i?.then)return i.then(a);return a(i);function a(c){let l;if((l=r?.select)&&c!=null&&!c.selectApplied){let u=og(l,t.constructor);return typeof c?.map=="function"?c.map(u):u(c)}return c}},{type:"read",letItLinger:!0,ensureLoaded:!0,async:!0});static put=vn(function(t,r,n,s){if(Array.isArray(s)&&t.#r&&t.constructor.loadAsInstance!==!1){let i=[];for(let a of s){let c=t.constructor,l=a[c.primaryKey],u=c.getResource(l,n,{async:!0});u.then?i.push(u.then(d=>d.put(a,n))):i.push(u.put(a,n))}return Promise.all(i)}return t.put?t.constructor.loadAsInstance===!1?t.put(r,s):t.put(s,r):Zn(t,"put")},{hasContent:!0,type:"update"});static patch=vn(function(t,r,n,s){return t.patch?t.constructor.loadAsInstance===!1?t.patch(r,s):t.patch(s,r):Zn(t,"patch")},{hasContent:!0,type:"update"});static delete=vn(function(t,r,n,s){return t.delete?t.delete(r):Zn(t,"delete")},{hasContent:!1,type:"delete"});static getNewId(){return(0,Ex.randomUUID)()}static create(t,r,n){n?n.getContext&&(n=n.getContext()):n=Zu.getStore()??{};let s;return this.loadAsInstance===!1?s=t:t==null?s=r?.[this.primaryKey]??this.getNewId():Array.isArray(t)&&typeof t[0]!="object"?s=r?.[this.primaryKey]??[...t,this.getNewId()]:typeof t!="object"?s=r?.[this.primaryKey]??[t,this.getNewId()]:(s=t?.[this.primaryKey]??this.getNewId(),n=r||{},r=t),Mt(n,async()=>{let i=new this(s,n),a=await i.create?i.create(s,r):Zn(i,"create");return n.newLocation=s??a?.[this.primaryKey],n.createdResource=!0,this.loadAsInstance===!1?a:i})}static invalidate=vn(function(t,r,n,s){return t.invalidate?t.invalidate(r):Zn(t,"delete")},{hasContent:!1,type:"update"});static post=vn(function(t,r,n,s){return t.#e!=null&&t.update?.(),t.constructor.loadAsInstance===!1?t.post(r,s):t.post(s,r)},{hasContent:!0,type:"create"});static update=vn(function(t,r,n,s){return t.update(r,s)},{hasContent:!0,type:"create"});static connect=vn(function(t,r,n,s){return t.connect?t.constructor.loadAsInstance===!1?t.connect(r,s):t.connect(s,r):Zn(t,"connect")},{hasContent:!0,type:"read"});static subscribe=vn(function(t,r,n,s){return t.subscribe?t.subscribe(r):Zn(t,"subscribe")},{type:"read"});static publish=vn(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):Zn(t,"publish")},{hasContent:!0,type:"create"});static search=vn(function(t,r,n){let s=t.search?t.search(r):Zn(t,"search"),i=n.select;if(i&&n.hasOwnProperty("select")&&s!=null&&!s.selectApplied){let a=og(i,t.constructor);return s.map(a)}return s},{type:"read"});static query=vn(function(t,r,n,s){return t.search?t.constructor.loadAsInstance===!1?t.search(r,s):t.search(s,r):Zn(t,"search")},{hasContent:!0,type:"read"});static copy=vn(function(t,r,n,s){return t.copy?t.constructor.loadAsInstance===!1?t.copy(r,s):t.copy(s,r):Zn(t,"copy")},{hasContent:!0,type:"create"});static move=vn(function(t,r,n,s){return t.move?t.constructor.loadAsInstance===!1?t.move(r,s):t.move(s,r):Zn(t,"move")},{hasContent:!0,type:"delete"});async post(t){if(this.#r)return(await this.constructor.create(this.#e,t,this.#t)).#e;Zn(this,"post")}static isCollection(t){return t&&t.#r}get isCollection(){return this.#r}static coerceId(t){return t}static parseQuery(t,r){return rg(t,r)}static parsePath(t,r,n){let s=t.indexOf(".");if(s>-1){let a=t.slice(s+1),c=r?.headers&&T5[a];if(c)r.requestedContentType=c,t=t.slice(0,s);else if(this.attributes?.find(l=>l.name===a))if(t=t.slice(0,s),n)n.property=a;else return{query:{property:a},id:_x(t,this),isCollection:pl}}let i=_x(t,this);return pl?{id:i,isCollection:!0}:i}static getResource(t,r,n){let s,i=r.getContext?.(),a;typeof r.isCollection=="boolean"&&r.hasOwnProperty("isCollection")?a=r.isCollection:a=n?.isCollection;let c=a&&this.Collection||this;if(i||(i=i===void 0?r:{}),i.transaction){let l;if(i.resourceCache?l=i.resourceCache:l=i.resourceCache=[],l.asMap){let u=l.asMap.get(t);if(s=u?.find(d=>d.constructor===c),s)return s;u||l.asMap.set(t,u=[]),u.push(s=new c(t,i))}else{if(s=l.find(u=>u.#e===t&&u.constructor===c),s)return s;if(l.push(s=new c(t,i)),l.length>10){let u=new Map;for(let d of l){let f=d.#e,m=u.get(f);m?m.push(d):u.set(f,[d])}i.resourceCache.length=0,i.resourceCache.asMap=u}}}else s=new c(t,i);return a&&(s.#r=!0),s}subscribe(t){return new Xn}connect(t,r){return r?.subscribe!==!1?this.subscribe?.(r):new Xn}allowRead(t,r){return t?.role.permission.super_user}allowUpdate(t,r,n){return t?.role.permission.super_user}allowCreate(t,r,n){return t?.role.permission.super_user}allowDelete(t,r){return t?.role.permission.super_user}getId(){return this.#e}getContext(){return this.#t}};(0,gx._assignPackageExport)("Resource",vr);o(R5,"snakeCase");o(_x,"pathToId");ig=class extends Array{static{o(this,"MultiPartId")}toString(){return this.join("/")}};o(vn,"transactional");o(Zn,"missingMethod");o(Bb,"selectFromObject");o(og,"transformForSelect")});var _l,Fb=fe(()=>{_l=class{static{o(this,"ErrorResource")}error;constructor(t){this.error=t}isError=!0;allowRead(){throw this.error}allowUpdate(){throw this.error}allowCreate(){throw this.error}allowDelete(){throw this.error}getId(){throw this.error}getContext(){throw this.error}get(){throw this.error}post(){throw this.error}put(){throw this.error}delete(){throw this.error}connect(){throw this.error}getResource(){return this}publish(){throw this.error}subscribe(){throw this.error}}});var Ax={};Ce(Ax,{Resources:()=>ag,keyArrayToString:()=>ed,resetResources:()=>y5,resources:()=>Ls});function y5(){return Ls=new ag,ve.resources=Ls,Ls}function ed(e){return Array.isArray(e)?e[e.length-1]===null?e.slice(0,-1).join("/")+"/":e.join("/"):e}var Rx,yx,ag,Ls,td=fe(()=>{tl();Fb();Rx=w(z()),yx=w(_e());Lr();ag=class extends Map{static{o(this,"Resources")}isWorker=!0;loginPath;set(t,r,n,s){if(!r)throw new Error("Must provide a resource");t.startsWith("/")&&(t=t.replace(/^\/+/,""));let i={Resource:r,path:t,exportTypes:n,hasSubPaths:!1,relativeURL:""},a=super.get(t);if(a&&(a.Resource.databaseName!==r.databaseName||a.Resource.tableName!==r.tableName)&&!s){let c=new yx.ServerError(`Conflicting paths for ${t}`);Rx.default.error(c),i.Resource=new _l(c)}super.set(t,i);for(let[c,l]of this){let u=2;for(;(u=c.indexOf("/",u))>-1;){let d=this.get(c.slice(0,u));d&&(d.hasSubPaths=!0),u+=2}}}getMatch(t,r){let n=2,s=0,i,a=t.length;for(;n<a;){s=n,n=t.indexOf("/",n),n===-1&&(n=a);let u=n===a?t:t.slice(0,n),d=this.get(u),f=-1;if(!d&&n===a&&(f=u.indexOf("?",s),f!==-1)){let m=u.slice(0,f);d=this.get(m)}if(d&&(!r||d.exportTypes?.[r]!==!1)){if(d.relativeURL=t.slice(f!==-1?f:n),!d.hasSubPaths)return d;i=d}n+=2}if(i)return i;let c=t.indexOf("?"),l=c>-1?t.slice(0,c):t;return i=this.get(l),!i&&l.indexOf(".")>-1&&(i=this.get(l.split(".")[0])),i&&(!r||i.exportTypes?.[r]!==!1)?i.relativeURL=c>-1?t.slice(c):"":i||(i=this.get(""),i&&(!r||i.exportTypes?.[r]!==!1)&&(t.charAt(0)!=="/"&&(t="/"+t),i.relativeURL=t)),i}getResource(t,r){let n=this.getMatch(t);if(n)return t=n.relativeURL,n.Resource.getResource(this.pathToId(t,n.Resource),r)}call(t,r,n){return Mt(r,async()=>{let s=this.getMatch(t);if(s)return t=s.relativeURL,n(s.Resource,s.path,t)})}setRepresentation(t,r,n){}};o(y5,"resetResources");o(ed,"keyArrayToString")});function qb(e,t,r,n,s){let i=e.primaryStore.env.path,a=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=Nx,A5(e.primaryStore,e.auditStore)):(c=bx,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{Ix(bx[i])})));let l=c[i]||(c[i]=[]);if(l.auditStore=e.auditStore,l.lastTxnTime==null&&(l.lastTxnTime=Date.now()),s?.scope==="full-database")return;let u=l[a];u||(u=l[a]=new Map,u.envs=l,u.tableId=a,u.store=e.primaryStore),t=ed(t);let d=new kb(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 Ix(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),wx(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=vt(s),a=e[i.tableId];if(!a)continue;let c=i.recordId,l=ed(c),u=0;do{let d=a.get(l);if(d){for(let m of d)if(!(u>0&&!(m.includeDescendants&&!(m.onlyChildren&&u>1)))){if(m.startTime>=n){(0,Hb.info)("omitting",c,m.startTime,n);continue}try{let h;m.supportsTransactions&&m.txnInProgress!==i.version&&(h=!0,m.txnInProgress||(r?r.push(m):r=[m]),m.txnInProgress=i.version),m.listener(c,i,n,h)}catch(h){console.error(h),(0,Hb.info)(h)}}}if(l==null)break;let f=l.lastIndexOf?.("/",l.length-2);f!==l.length-1&&u++,f>-1?l=l.slice(0,f+1):l=null}while(!0)}if(r)for(let n of r)n.txnInProgress=null,n.listener(null,{type:"end_txn"},e.lastTxnTime,!0)}function A5(e,t){let r=t||e,n=r.env;if(!n.hasAfterCommitListener){n.hasAfterCommitListener=!0;let s=n.path;r.on("aftercommit",({next:i,last:a,txnId:c})=>{let l=Nx[s];if(!l)return;let u=o(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),l.txnTime=r.threadLocalWrites[0]||Date.now();try{Ix(l)}finally{r.threadLocalWrites[0]=l.lastTxnTime,r.unlock("thread-local-writes")}},"acquiredLock");r.attemptLock("thread-local-writes",u)&&u()})}}function wx(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function Ox(e){return e.nextTransaction||(qb({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),wx(e)),e.nextTransaction}var Hb,bx,Nx,kb,Gb=fe(()=>{Hb=w(z());ku();td();Io();bx=Object.create(null),Nx=Object.create(null);o(qb,"addSubscription");kb=class extends Xn{static{o(this,"Subscription")}listener;subscriptions;startTime;includeDescendants;supportsTransactions;onlyChildren;constructor(t){super(),this.listener=t,this.on("close",()=>this.end())}end(){if(this.subscriptions){if(this.subscriptions.splice(this.subscriptions.indexOf(this),1),this.subscriptions.length===0){let t=this.subscriptions.tables;if(t){let r=this.subscriptions.key;if(t.delete(r),t.size===0){let n=t.envs,s=t.dbi;delete n[s]}}}this.subscriptions=null}}toJSON(){return{name:"subscription"}}};o(Ix,"notifyFromTransactionData");o(A5,"listenToCommits");o(wx,"nextTransaction");o(Ox,"whenNextTransaction")});var Px=M((UCe,Cx)=>{"use strict";var $b=class{static{o(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};Cx.exports=$b});var Lx=M((BCe,Dx)=>{"use strict";var Vb=class{static{o(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};Dx.exports=Vb});var zm=M((HCe,vx)=>{"use strict";var Mx=ae(),b5=(H(),v($)),{RecordEncoder:N5}=(fl(),v(ux));Mx.initSync();var I5=Mx.get(b5.CONFIG_PARAMS.STORAGE_CACHING)!==!1,Kb=class{static{o(this,"OpenDBIObject")}constructor(t,r=!1){this.dupSort=t===!0,this.encoding=t?"ordered-binary":"msgpack",this.useVersions=r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=I5&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:N5})}};vx.exports=Kb});var jm=M((qCe,Ux)=>{"use strict";var es=ae(),Ms=(H(),v($));es.initSync();var cg=class{static{o(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=es.get(Ms.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||es.get(Ms.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||es.get(Ms.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",es.get(Ms.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=es.get(Ms.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),es.get(Ms.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=es.get(Ms.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),es.get(Ms.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=es.get(Ms.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),es.get(Ms.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=es.get(Ms.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=es.get(Ms.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};Ux.exports=cg;cg.MAX_DBS=1e4});var gt=M(($Ce,Kx)=>{"use strict";var Wb=require("lmdb"),fi=require("fs-extra"),ts=require("path"),lg=Cn(),Fx=z(),Un=$r().LMDB_ERRORS_ENUM,ug=Lx(),zb=zm(),Hx=jm(),Va=qt(),xx=(H(),v($)),{table:w5,resetDatabases:O5}=(De(),v(at)),Bx=ae(),mi=Va.INTERNAL_DBIS_NAME,kx=Va.DBI_DEFINITION_NAME,C5="data.mdb",P5="lock.mdb",Jm=".mdb",D5="-lock",Yb=class{static{o(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=vs(t,r),this.key_type=this.dbi[Va.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[Va.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new Wb.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function dg(e,t){if(e===void 0)throw new Error(Un.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(Un.ENV_NAME_REQUIRED)}o(dg,"pathEnvNameValidation");async function jb(e,t,r=!0){try{await fi.access(e)}catch(n){throw n.code==="ENOENT"?new Error(Un.INVALID_BASE_PATH):n}try{let n=ts.join(e,t+Jm);return await fi.access(n,fi.constants.R_OK|fi.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await fi.access(ts.join(e,t,C5),fi.constants.R_OK|fi.constants.F_OK),ts.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(Un.INVALID_ENVIRONMENT)}else throw new Error(Un.INVALID_ENVIRONMENT);throw n}}o(jb,"validateEnvironmentPath");function fg(e,t){if(lg.validateEnv(e),t===void 0)throw new Error(Un.DBI_NAME_REQUIRED)}o(fg,"validateEnvDBIName");async function L5(e,t,r=!1,n=!1){dg(e,t);let s=ts.basename(e);t=t.toString();let i=Bx.get(xx.CONFIG_PARAMS.DATABASES);i||Bx.setProperty(xx.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await jb(e,t,n),qx(e,t,r)}catch(a){if(a.message===Un.INVALID_ENVIRONMENT){let c=ts.join(e,t);await fi.mkdirp(n?c:e);let l=new Hx(n?c:c+Jm,!1),u=Wb.open(l);u.dbis=Object.create(null);let d=new zb(!1);u.openDB(mi,d),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let f=Jb(e,t,r);return u[Va.ENVIRONMENT_NAME_KEY]=f,global.lmdb_map[f]=u,u}throw a}}o(L5,"createEnvironment");async function M5(e,t,r,n=!0){dg(e,t),t=t.toString();let s=ts.join(e,t);return w5({table:t,database:ts.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}o(M5,"copyEnvironment");async function qx(e,t,r=!1){dg(e,t),t=t.toString();let n=Jb(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 jb(e,t),i=ts.join(e,t+Jm),a=s!=i,c=new Hx(s,a),l=Wb.open(c);l.dbis=Object.create(null);let u=$x(l);for(let d=0;d<u.length;d++)vs(l,u[d]);return l[Va.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}o(qx,"openEnvironment");async function v5(e,t,r=!1){dg(e,t),t=t.toString();let n=ts.join(e,t+Jm),s=await jb(e,t);if(global.lmdb_map!==void 0){let i=Jb(e,t,r);if(global.lmdb_map[i]){let a=global.lmdb_map[i];await Gx(a),delete global.lmdb_map[i]}}await fi.remove(s),await fi.remove(s===n?s+D5:ts.join(ts.dirname(s),P5))}o(v5,"deleteEnvironment");async function Gx(e){lg.validateEnv(e);let t=e[Va.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}o(Gx,"closeEnvironment");function Jb(e,t,r=!1){let s=`${ts.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}o(Jb,"getCachedEnvironmentName");function U5(e){lg.validateEnv(e);let t=Object.create(null),r=vs(e,mi);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==mi)try{t[n]=Object.assign(new ug,s)}catch{Fx.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}o(U5,"listDBIDefinitions");function $x(e){lg.validateEnv(e);let t=[],r=vs(e,mi);for(let{key:n}of r.getRange({start:!1}))n!==mi&&t.push(n);return t}o($x,"listDBIs");function x5(e,t){let n=vs(e,mi).getEntry(t),s=new ug;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{Fx.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}o(x5,"getDBIDefinition");function Vx(e,t,r,n=!r){if(fg(e,t),t=t.toString(),t===mi)throw new Error(Un.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return vs(e,t)}catch(s){if(s.message===Un.DBI_DOES_NOT_EXIST){let i=new zb(r,n===!0),a=e.openDB(t,i),c=new ug(r===!0,n);return a[kx]=c,vs(e,mi).putSync(t,c),e.dbis[t]=a,a}throw s}}o(Vx,"createDBI");function vs(e,t){if(fg(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==mi?r=x5(e,t):r=new ug,r===void 0)throw new Error(Un.DBI_DOES_NOT_EXIST);let n;try{let s=new zb(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(Un.DBI_DOES_NOT_EXIST):s}return n[kx]=r,e.dbis[t]=n,n}o(vs,"openDBI");function B5(e,t){fg(e,t),t=t.toString();let r=vs(e,t),n=r.getStats();return r[Va.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}o(B5,"statDBI");async function F5(e,t){try{let r=ts.join(e,t+Jm);return(await fi.stat(r)).size}catch{throw new Error(Un.INVALID_ENVIRONMENT)}}o(F5,"environmentDataSize");function H5(e,t){if(fg(e,t),t=t.toString(),t===mi)throw new Error(Un.CANNOT_DROP_INTERNAL_DBIS_NAME);vs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],vs(e,mi).removeSync(t)}o(H5,"dropDBI");function k5(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{vs(e,i)}catch(a){if(a.message===Un.DBI_DOES_NOT_EXIST)Vx(e,i,i!==t,i===t),n=!0;else throw a}}n&&O5()}o(k5,"initializeDBIs");Kx.exports={openDBI:vs,openEnvironment:qx,createEnvironment:L5,listDBIs:$x,listDBIDefinitions:U5,createDBI:Vx,dropDBI:H5,statDBI:B5,deleteEnvironment:v5,initializeDBIs:k5,TransactionCursor:Yb,environmentDataSize:F5,copyEnvironment:M5,closeEnvironment:Gx}});var zx=M((KCe,Wx)=>{"use strict";var Qb=gt(),q5=z(),Yx=$r().LMDB_ERRORS_ENUM;Wx.exports=G5;async function G5(e){try{if(global.lmdb_map!==void 0&&e.operation!==void 0){let t=Object.keys(global.lmdb_map),r;switch(e.operation){case"drop_schema":for(let i=0;i<t.length;i++){let a=t[i];if(a.startsWith(`${e.schema}.`)||a.startsWith(`txn.${e.schema}.`))try{await Qb.closeEnvironment(global.lmdb_map[a])}catch(c){if(c.message!==Yx.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await Qb.closeEnvironment(global.lmdb_map[n]),await Qb.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==Yx.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){q5.error(t)}}o(G5,"cleanLMDBMap")});var xo=M((WCe,$5)=>{$5.exports={hdb_user:{hash_attribute:"username",name:"hdb_user",schema:"system",residence:["*"],attributes:[{attribute:"username"},{attribute:"password"},{attribute:"role"},{attribute:"active"},{attribute:"hash"},{attribute:"refresh_token"},{attribute:"hash_function"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_role:{hash_attribute:"id",name:"hdb_role",schema:"system",attributes:[{attribute:"id"},{attribute:"role"},{attribute:"permission"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}],residence:["*"]},hdb_job:{hash_attribute:"id",name:"hdb_job",schema:"system",attributes:[{attribute:"id"},{attribute:"user"},{attribute:"type"},{attribute:"status"},{attribute:"start_datetime"},{attribute:"end_datetime"},{attribute:"message"},{attribute:"created_datetime"},{attribute:"request"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_license:{hash_attribute:"license_key",name:"hdb_license",schema:"system",attributes:[{attribute:"license_key"},{attribute:"company"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_info:{hash_attribute:"info_id",name:"hdb_info",schema:"system",attributes:[{attribute:"info_id"},{attribute:"data_version_num"},{attribute:"hdb_version_num"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_nodes:{hash_attribute:"name",name:"hdb_nodes",schema:"system",attributes:[{attribute:"name"},{attribute:"subscriptions"},{attribute:"system_info"},{attribute:"url"},{attribute:"routes"},{attribute:"revoked_certificates"},{attribute:"shard"}]},hdb_certificate:{hash_attribute:"name",name:"hdb_certificate",schema:"system",attributes:[{attribute:"name"},{attribute:"uses"},{attribute:"certificate"},{attribute:"is_authority"},{attribute:"private_key_name"},{attribute:"details"},{attribute:"is_self_signed"},{attribute:"__updatedtime__"}]},hdb_analytics_hostname:{hash_attribute:"id",name:"hdb_analytics_hostname",schema:"system",attributes:[{attribute:"id"},{attribute:"hostname"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",attributes:[{attribute:"id"},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]},hdb_raw_analytics:{hash_attribute:"id",name:"hdb_raw_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{attribute:"time"},{attribute:"metrics"}]},hdb_temp:{hash_attribute:"id",name:"hdb_temp",schema:"system",attributes:[{attribute:"id"}]},hdb_durable_session:{hash_attribute:"id",name:"hdb_durable_session",schema:"system",attributes:[{attribute:"id"}]},hdb_session_will:{hash_attribute:"id",name:"hdb_session_will",schema:"system",attributes:[{attribute:"id"}]}}});var Us=M((zCe,Qx)=>{var V5=xo(),{promisify:K5}=require("util"),{getDatabases:Jx}=(De(),v(at));Qx.exports={setSchemaDataToGlobal:jx,getTableSchema:Y5,getSystemSchema:W5,setSchemaDataToGlobalAsync:K5(jx)};function jx(e){global.hdb_schema=Jx(),e&&e()}o(jx,"setSchemaDataToGlobal");function Y5(e,t,r){let n=Jx()[e];if(!n)return r(`schema ${e} does not exist`);let s=n[t];return s?r(null,{schema:e,name:t,hash_attribute:s.primaryKey}):r(`table ${e}.${t} does not exist`)}o(Y5,"getTableSchema");function W5(){return V5}o(W5,"getSystemSchema")});var u0=M((QCe,l0)=>{"use strict";var Xb=require("recursive-iterator"),z5=require("alasql"),Zb=require("clone"),Xx=se(),{handleHDBError:Zx,hdbErrors:j5}=_e(),{HDB_ERROR_MSGS:e0,HTTP_STATUS_CODES:t0}=j5,{getDatabases:J5}=(De(),v(at)),Q5=["DISTINCT_ARRAY"],r0=Symbol("validateTables"),eN=Symbol("validateTable"),JCe=Symbol("getAllColumns"),n0=Symbol("validateAllColumns"),mg=Symbol("findColumn"),s0=Symbol("validateOrderBy"),Qm=Symbol("validateSegment"),tN=Symbol("validateColumn"),i0=Symbol("setColumnsForTable"),o0=Symbol("checkColumnsForAsterisk"),a0=Symbol("validateGroupBy"),c0=Symbol("hasColumns"),rN=class{static{o(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[r0](),this[o0](),this[n0]()}[r0](){if(this[c0]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[eN](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[eN](t.table)})}}[c0](){let t=!1,r=new Xb(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[eN](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=J5();if(!r[t.databaseid])throw Zx(new Error,e0.SCHEMA_NOT_FOUND(t.databaseid),t0.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw Zx(new Error,e0.TABLE_NOT_FOUND(t.databaseid,t.tableid),t0.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=Zb(s);i.table=Zb(t),this.attributes.push(i)})}[mg](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)}[o0](){let t=new Xb(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[i0](r.tableid)}[i0](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new z5.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[n0](){this[Qm](this.statement.columns,!1),this[Qm](this.statement.joins,!1),this[Qm](this.statement.where,!1),this[a0](this.statement.group,!1),this[Qm](this.statement.order,!0)}[Qm](t,r){if(!t)return;let n=new Xb(t),s=[];for(let{node:i,path:a}of n)!Xx.isEmpty(i)&&!Xx.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[s0](i):s.push(this[tN](i)));return s}[a0](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&Q5.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=Zb(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[mg](n)[0];s&&r.push(s)}}}),this.statement.group.forEach(n=>{let s=null;if(!n.columnid)r.forEach((i,a)=>{if(i.toString()===n.toString()){s=i,r.splice(a,1);return}});else{let i=this[mg](n);if(!i||i.length===0)throw`unknown column '${group_column.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${group_column.toString()}' in group by`;r.forEach((a,c)=>{if(a.attribute===i[0].attribute&&a.table.tableid===i[0].table.tableid){s=a,r.splice(c,1);return}})}if(!s)throw`group by column '${group_column.toString()}' must be in select`}),r.length>0)throw`select column '${r[0].attribute?r[0].attribute:r[0].toString()}' must be in group by`}[s0](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[tN](t)}[tN](t){let r=this[mg](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]}};l0.exports=rN});var f0=M((ZCe,d0)=>{"use strict";var nN=class{static{o(this,"BridgeMethods")}createSchema(){throw new Error("createSchema bridge method is not defined")}dropSchema(){throw new Error("dropSchema bridge method is not defined")}createTable(){throw new Error("createTable bridge method is not defined")}dropTable(){throw new Error("dropTable bridge method is not defined")}createRecords(){throw new Error("createRecords bridge method is not defined")}updateRecords(){throw new Error("updateRecords bridge method is not defined")}async upsertRecords(){throw new Error("upsertRecords bridge method is not defined")}deleteRecords(){throw new Error("deleteRecords bridge method is not defined")}createAttribute(){throw new Error("createAttribute bridge method is not defined")}dropAttribute(){throw new Error("dropAttribute bridge method is not defined")}searchByConditions(){throw new Error("searchByConditions bridge method is not defined")}searchByHash(){throw new Error("searchByHash bridge method is not defined")}searchByValue(){throw new Error("searchByValue bridge method is not defined")}getDataByHash(){throw new Error("getDataByHash bridge method is not defined")}getDataByValue(){throw new Error("getDataByValue bridge method is not defined")}deleteRecordsBefore(){throw new Error("deleteRecordsBefore bridge method is not defined")}deleteAuditLogsBefore(){throw new Error("deleteAuditLogsBefore bridge method is not defined")}async readAuditLog(){throw new Error("readAuditLog bridge method is not defined")}};d0.exports=nN});var h0=M((tPe,m0)=>{"use strict";var sN=class{static{o(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};m0.exports=sN});var _0=M((nPe,p0)=>{"use strict";var iN=class{static{o(this,"UpdateRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n,this.original_records=s}};p0.exports=iN});var g0=M((iPe,E0)=>{"use strict";var oN=class{static{o(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};E0.exports=oN});var gl=M((uPe,R0)=>{"use strict";var X5=gt(),Z5=h0(),e9=_0(),t9=g0(),Vi=Cn(),Xm=$r().LMDB_ERRORS_ENUM,r9=qt(),Bo=(H(),v($)),n9=se(),s9=require("uuid"),aPe=require("lmdb"),{handleHDBError:i9,hdbErrors:o9}=_e(),{OVERFLOW_MARKER:cPe,MAX_SEARCH_KEY_LENGTH:lPe}=r9,S0=ae();S0.initSync();var hg=S0.get(Bo.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),aN=Bo.TIME_STAMP_NAMES_ENUM.CREATED_TIME,El=Bo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function a9(e,t,r,n,s=Vi.getNextMonotonicTime()){dN(e,t,r,n),cN(e,t,r);let i=new Z5,a=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];T0(u,!0,s);let d=c9(e,t,r,u),f=u[t];a.push(d),c.push(f)}return lN(a,c,n,i,s)}o(a9,"insertRecords");function c9(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let a=r[i];if(a===t||n.hasOwnProperty(a)===!1)continue;let c=n[a];if(typeof c=="function"){let d=c([[{}]]);Array.isArray(d)&&(c=d[0][Bo.FUNC_VAL],n[a]=c)}let l=Vi.getIndexedValues(c),u=e.dbis[a];if(l){hg&&u.prefetch(l.map(d=>({key:d,value:s})),pg);for(let d=0,f=l.length;d<f;d++)u.put(l[d],s)}}hg&&e.dbis[t].prefetch([s],pg),e.dbis[t].put(s,n,n[El])})}o(c9,"insertRecord");function l9(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}o(l9,"removeSkippedRecords");function T0(e,t,r){let n=r>0;(n||!Number.isInteger(e[El]))&&(e[El]=r||(r=Vi.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[aN]))&&(e[aN]=r||Vi.getNextMonotonicTime()):delete e[aN]}o(T0,"setTimestamps");function cN(e,t,r){r.indexOf(Bo.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(Bo.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(Bo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(Bo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),X5.initializeDBIs(e,t,r)}o(cN,"initializeTransaction");async function u9(e,t,r,n,s=Vi.getNextMonotonicTime()){dN(e,t,r,n),cN(e,t,r);let i=new e9,a=[],c=[],l=[];for(let u=0;u<n.length;u++){let d=n[u],f=d[t],m;try{m=uN(e,t,d,f,i,!0,s)}catch{i.skipped_hashes.push(f),a.push(u);continue}c.push(m),l.push(f)}return lN(c,l,n,i,s,a)}o(u9,"updateRecords");async function d9(e,t,r,n,s=Vi.getNextMonotonicTime()){try{dN(e,t,r,n)}catch(l){throw i9(l,l.message,o9.HTTP_STATUS_CODES.BAD_REQUEST)}cN(e,t,r);let i=new t9,a=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],d;n9.isEmpty(u[t])?(d=s9.v4(),u[t]=d):d=u[t];let f=uN(e,t,u,d,i,!1,s);a.push(f),c.push(d)}return lN(a,c,n,i,s)}o(d9,"upsertRecords");async function lN(e,t,r,n,s,i=[]){let a=await Promise.all(e);for(let c=0,l=a.length;c<l;c++)a[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||Vi.getNextMonotonicTime(),l9(r,i),n}o(lN,"finalizeWrite");function uN(e,t,r,n,s,i=!1,a){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,d=u;if(!u){if(i)return!1;u={}}if(T0(r,!d,a),Number.isInteger(r[El])&&u[El]>r[El])return!1;d&&s.original_records.push(u);let f,m=o(()=>{for(let p in r){if(!r.hasOwnProperty(p)||p===t)continue;let E=r[p],g=e.dbis[p];if(g===void 0)continue;let y=u[p];if(typeof E=="function"){let R=E([[u]]);Array.isArray(R)&&(E=R[0][Bo.FUNC_VAL],r[p]=E)}if(E===y)continue;let T=Vi.getIndexedValues(y);if(T){hg&&g.prefetch(T.map(R=>({key:R,value:n})),pg);for(let R=0,N=T.length;R<N;R++)g.remove(T[R],n)}if(T=Vi.getIndexedValues(E),T){hg&&g.prefetch(T.map(R=>({key:R,value:n})),pg);for(let R=0,N=T.length;R<N;R++)g.put(T[R],n)}}let h={...u,...r};c.put(n,h,h[El])},"doPut");return l?f=c.ifVersion(n,l.version,m):f=c.ifNoExists(n,m),f.then(h=>h?!0:uN(e,t,r,n,s,i,a))}o(uN,"updateUpsertRecord");function f9(e,t,r){if(Vi.validateEnv(e),t===void 0)throw new Error(Xm.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Xm.WRITE_ATTRIBUTES_REQUIRED):new Error(Xm.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}o(f9,"validateBasic");function dN(e,t,r,n){if(f9(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Xm.RECORDS_REQUIRED):new Error(Xm.RECORDS_MUST_BE_ARRAY)}o(dN,"validateWrite");function pg(){}o(pg,"noop");R0.exports={insertRecords:a9,updateRecords:u9,upsertRecords:d9}});var lt=M((fPe,y0)=>{"use strict";var xn=require("validate.js");xn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||xn.validators.type.checks[t](e)?null:` must be a '${t}' value`};xn.validators.type.checks={Object:o(function(e){return xn.isObject(e)&&!xn.isArray(e)},"Object"),Array:xn.isArray,Integer:xn.isInteger,Number:xn.isNumber,String:xn.isString,Date:xn.isDate,Boolean:o(function(e){return typeof e=="boolean"},"Boolean")};xn.validators.hasValidFileExt=function(e,t){return xn.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};y0.exports={validateObject:m9,validateObjectAsync:h9,validateBySchema:p9};function m9(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=xn(e,t,{format:"flat"});return r?new Error(r):null}o(m9,"validateObject");async function h9(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await xn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}o(h9,"validateObjectAsync");function p9(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}o(p9,"validateBySchema")});var b0=M((hPe,A0)=>{"use strict";var _9=require("uuid"),fN=class{static{o(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||_9.v4(),this.schema_table=`${this.schema}.${this.table}`}};A0.exports=fN});var _g=M((_Pe,N0)=>{"use strict";var E9=b0(),mN=class extends E9{static{o(this,"LMDBCreateAttributeObject")}constructor(t,r,n,s,i=!0,a=!1){super(t,r,n,s),this.dup_sort=i,this.is_hash_attribute=a}};N0.exports=mN});var w0=M((gPe,I0)=>{"use strict";I0.exports=S9;var g9="inserted";function S9(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===g9?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}o(S9,"returnObject")});var Eg=M((RPe,C0)=>{"use strict";var T9=(H(),v($)),hN=gt(),R9=gl(),{getSystemSchemaPath:y9,getSchemaPath:A9}=At(),TPe=xo(),{validateBySchema:b9}=lt(),Zm=require("joi"),N9=_g(),I9=w0(),{handleHDBError:w9,hdbErrors:O9,ClientError:C9}=_e(),O0=se(),{HTTP_STATUS_CODES:P9}=O9,D9="inserted";C0.exports=L9;async function L9(e){let t=b9(e,Zm.object({database:Zm.string(),schema:Zm.string(),table:Zm.string().required(),attribute:Zm.string().required()}));if(t)throw new C9(t.message);let r=!e.skip_table_check&&O0.checkGlobalSchemaTable(e.schema,e.table);if(r)throw w9(new Error,r,P9.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=O0.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 N9(e.schema,e.table,e.attribute,e.id);try{let i=await hN.openEnvironment(A9(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${create_attribute_obj.attribute}' already exists in ${e.schema}.${e.table}`);hN.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let a=await hN.openEnvironment(y9(),T9.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await R9.insertRecords(a,HDB_TABLE_INFO.hash_attribute,hdbAttributeAttributes,[s]);return I9(D9,c,{records:[s]},l)}catch(i){throw i}}o(L9,"lmdbCreateAttribute")});var Yi=M((APe,D0)=>{"use strict";var P0=se(),M9=(H(),v($)),rd=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Ki=require("joi"),Ka={schema_format:{pattern:rd,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},v9=Ki.alternatives(Ki.string().min(1).max(Ka.schema_length.maximum).pattern(rd).messages({"string.pattern.base":"{:#label} "+Ka.schema_format.message}),Ki.number(),Ki.array()).required(),U9=Ki.alternatives(Ki.string().min(1).max(Ka.schema_length.maximum).pattern(rd).messages({"string.pattern.base":"{:#label} "+Ka.schema_format.message}),Ki.number()),x9=Ki.alternatives(Ki.string().min(1).max(Ka.schema_length.maximum).pattern(rd).messages({"string.pattern.base":"{:#label} "+Ka.schema_format.message}),Ki.number()).required();function B9(e,t){return t?typeof t!="string"?`'${property_name}' must be a string`:t.length?t.length>Ka.schema_length.maximum?`'${property_name}' maximum of 250 characters`:rd.test(t)?"":`'${property_name}' has illegal characters`:`'${property_name}' must be at least one character`:`'${property_name}' is required`}o(B9,"checkValidTable");function F9(e,t){return P0.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}o(F9,"validateSchemaExists");function H9(e,t){let r=t.state.ancestors[0].schema;return P0.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}o(H9,"validateTableExists");function k9(e,t){return e.toLowerCase()===M9.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${hdb_terms.SYSTEM_SCHEMA_NAME}' name is reserved`):e}o(k9,"validateSchemaName");D0.exports={commonValidators:Ka,schemaRegex:rd,hdbSchemaTable:v9,validateSchemaExists:F9,validateTableExists:H9,validateSchemaName:k9,checkValidTable:B9,hdbDatabase:U9,hdbTable:x9}});var _N=M((NPe,M0)=>{var{hdbTable:q9,hdbDatabase:L0}=Yi(),G9=lt(),pN=require("joi"),$9={undefined:"undefined",null:"null"},V9=o((e,t)=>{let r=Object.keys(e),n=r.length,s;for(let i=0;i<n;i++){let a=r[i];(!a||a.length===0||$9[a]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${a}'`:s+=`. Invalid attribute name: '${a}'`)}return s?t.message(s):e},"customRecordsVal"),K9=pN.object({database:L0,schema:L0,table:q9,records:pN.array().items(pN.object().custom(V9)).required()});M0.exports=function(e){return G9.validateBySchema(e,K9)}});var eh=M((OPe,U0)=>{"use strict";var Fo=se(),v0=z(),wPe=_N(),{getDatabases:Y9}=(De(),v(at)),{ClientError:Sl}=_e();U0.exports=W9;function W9(e){if(Fo.isEmpty(e))throw new Sl("invalid update parameters defined.");if(Fo.isEmptyOrZeroLength(e.schema))throw new Sl("invalid schema specified.");if(Fo.isEmptyOrZeroLength(e.table))throw new Sl("invalid table specified.");if(!Array.isArray(e.records))throw new Sl("records must be an array");let t=Y9()[e.schema]?.[e.table];if(Fo.isEmpty(t))throw new Sl(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.primaryKey,n=new Set,s={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(a=>{if(i&&Fo.isEmptyOrZeroLength(a[r]))throw v0.error("a valid hash attribute must be provided with update record:",a),new Sl("a valid hash attribute must be provided with update record, check log for more info");if(!Fo.isEmptyOrZeroLength(a[r])&&(a[r]==="null"||a[r]==="undefined"))throw v0.error(`a valid hash value must be provided with ${e.operation} record:`,a),new Sl(`Invalid hash value: '${a[r]}' is not a valid hash attribute value, check log for more info`);!Fo.isEmpty(a[r])&&a[r]!==""&&n.has(Fo.autoCast(a[r]))&&(a.skip=!0),n.add(Fo.autoCast(a[r]));for(let c in a)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}o(W9,"insertUpdateValidate")});var gg=M((PPe,B0)=>{"use strict";var x0=se(),z9=(H(),v($)),j9=z(),J9=Eg(),Q9=_g(),X9=Ho(),{SchemaEventMsg:Z9}=hi(),e7="already exists in";B0.exports=t7;async function t7(e,t,r){if(x0.isEmptyOrZeroLength(r))return r;let n=[];x0.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 r7(e,t.schema,t.name,i)})),s}o(t7,"lmdbCheckForNewAttributes");async function r7(e,t,r,n){let s=new Q9(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await n7(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(e7))j9.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}o(r7,"createNewAttribute");async function n7(e){let t;return t=await J9(e),X9.signalSchemaChange(new Z9(process.pid,z9.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}o(n7,"createAttribute")});var nd=M((LPe,F0)=>{"use strict";var EN=class{static{o(this,"LMDBTransactionObject")}constructor(t,r,n,s,i=void 0){this.operation=t,this.user_name=r,this.timestamp=n,this.hash_values=s,this.origin=i}};F0.exports=EN});var k0=M((vPe,H0)=>{"use strict";var s7=nd(),i7=(H(),v($)).OPERATIONS_ENUM,gN=class extends s7{static{o(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(i7.INSERT,r,n,s,i),this.records=t}};H0.exports=gN});var G0=M((xPe,q0)=>{"use strict";var o7=nd(),a7=(H(),v($)).OPERATIONS_ENUM,SN=class extends o7{static{o(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,a=void 0){super(a7.UPDATE,n,s,i,a),this.records=t,this.original_records=r}};q0.exports=SN});var V0=M((FPe,$0)=>{"use strict";var c7=nd(),l7=(H(),v($)).OPERATIONS_ENUM,TN=class extends c7{static{o(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,a=void 0){super(l7.UPSERT,n,s,i,a),this.records=t,this.original_records=r}};$0.exports=TN});var Y0=M((kPe,K0)=>{"use strict";var u7=nd(),d7=(H(),v($)).OPERATIONS_ENUM,RN=class extends u7{static{o(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(d7.DELETE,n,s,t,i),this.original_records=r}};K0.exports=RN});var th=M(($Pe,J0)=>{"use strict";var GPe=require("path"),W0=gt(),f7=k0(),m7=G0(),h7=V0(),p7=Y0(),sd=qt(),z0=se(),{CONFIG_PARAMS:_7}=(H(),v($)),j0=ae();j0.initSync();var Sg=(H(),v($)).OPERATIONS_ENUM,{getTransactionAuditStorePath:E7}=At();J0.exports=g7;async function g7(e,t){if(j0.get(_7.LOGGING_AUDITLOG)===!1)return;let r=E7(e.schema,e.table),n=await W0.openEnvironment(r,e.table,!0),s=S7(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){W0.initializeDBIs(n,sd.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,sd.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[sd.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[sd.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),z0.isEmpty(s.user_name)||n.dbis[sd.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let a=0;a<s.hash_values.length;a++)n.dbis[sd.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[a],i)})}}o(g7,"writeTransaction");function S7(e,t){let r=z0.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===Sg.INSERT)return new f7(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Sg.UPDATE)return new m7(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Sg.UPSERT)return new h7(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Sg.DELETE)return new p7(t.deleted,t.original_records,r,t.txn_time,e.__origin)}o(S7,"createTransactionObject")});var yN=M((YPe,Q0)=>{"use strict";var T7=eh(),KPe=Rm(),rh=(H(),v($)),R7=ym(),y7=gl().insertRecords,A7=gt(),b7=z(),N7=gg(),{getSchemaPath:I7}=At(),w7=th();Q0.exports=O7;async function O7(e){try{let{schemaTable:t,attributes:r}=T7(e);R7(e,r,t.hash_attribute),e.schema!==rh.SYSTEM_SCHEMA_NAME&&(r.includes(rh.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(rh.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(rh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(rh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await N7(e.hdb_auth_header,t,r),s=I7(e.schema,e.table),i=await A7.openEnvironment(s,e.table),a=await y7(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await w7(e,a)}catch(c){b7.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:a.txn_time}}catch(t){throw t}}o(O7,"lmdbCreateRecords")});var eB=M((zPe,Z0)=>{"use strict";var X0=(H(),v($)),C7=yN(),P7=Rm(),D7=require("fs-extra"),{getSchemaPath:L7}=At();Z0.exports=M7;async function M7(e){let t=[{name:e.schema,createddate:Date.now()}],r=new P7(X0.SYSTEM_SCHEMA_NAME,X0.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await C7(r),await D7.mkdirp(L7(e.schema))}o(M7,"lmdbCreateSchema")});var rB=M((JPe,tB)=>{"use strict";var AN=class{static{o(this,"DeleteRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.deleted=t,this.skipped=r,this.txn_time=n,this.original_records=s}};tB.exports=AN});var oB=M((tDe,iB)=>{"use strict";var nB=gt(),bN=Cn(),NN=$r().LMDB_ERRORS_ENUM,v7=qt(),sB=z(),XPe=se(),U7=require("lmdb"),x7=rB(),B7=(H(),v($)),{OVERFLOW_MARKER:ZPe,MAX_SEARCH_KEY_LENGTH:eDe}=v7,F7=B7.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function H7(e,t,r,n){if(bN.validateEnv(e),t===void 0)throw new Error(NN.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(NN.IDS_REQUIRED):new Error(NN.IDS_MUST_BE_ITERABLE);try{let s=nB.listDBIs(e);nB.initializeDBIs(e,t,s);let i=new x7,a,c=[],l=[];for(let m=0,h=r.length;m<h;m++)try{a=r[m];let p=e.dbis[t].get(a);if(!p||n&&p[F7]>n){i.skipped.push(a);continue}let E=e.dbis[t].ifVersion(a,U7.IF_EXISTS,()=>{e.dbis[t].remove(a);for(let g=0;g<s.length;g++){let y=s[g];if(!p.hasOwnProperty(y)||y===t)continue;let T=e.dbis[y],R=p[y];if(R!=null)try{let N=bN.getIndexedValues(R);if(N)for(let P=0,Y=N.length;P<Y;P++)T.remove(N[P],a)}catch{sB.warn(`cannot delete from attribute: ${y}, ${R}:${a}`)}}});c.push(E),l.push(a),i.original_records.push(p)}catch(p){sB.warn(p),i.skipped.push(a)}let u=[],d=await Promise.all(c);for(let m=0,h=d.length;m<h;m++)d[m]===!0?i.deleted.push(l[m]):(i.skipped.push(l[m]),u.push(m));let f=0;for(let m=0;m<u.length;m++){let h=u[m];i.original_records.splice(h-f,1),f++}return i.txn_time=bN.getNextMonotonicTime(),i}catch(s){throw s}}o(H7,"deleteRecords");iB.exports={deleteRecords:H7}});var nh=M((nDe,cB)=>{"use strict";var id=se(),k7=oB(),q7=gt(),{getSchemaPath:G7}=At(),$7=th(),V7=z();cB.exports=K7;async function K7(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(id.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(id.isEmptyOrZeroLength(e.hash_values)&&!id.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];id.isEmpty(l)||e.hash_values.push(l)}}if(id.isEmptyOrZeroLength(e.hash_values))return aB([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(id.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=G7(e.schema,e.table),i=await q7.openEnvironment(s,e.table),a=await k7.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await $7(e,a)}catch(c){V7.error(`unable to write transaction due to ${c.message}`)}return aB(a.deleted,a.skipped,a.txn_time)}catch(s){throw s}}o(K7,"lmdbDeleteRecords");function aB(e,t,r){let n=e.length+t.length,s=n===1?"record":"records";return{message:`${e.length} of ${n} ${s} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}o(aB,"createDeleteResponse")});var wN=M((oDe,lB)=>{"use strict";var Y7=(H(),v($)),iDe=Cn();function IN(e,t){let r=Object.create(null);if(t.length===1&&Y7.SEARCH_WILDCARDS.indexOf(t[0])>=0)Object.assign(r,e);else for(let n=0;n<t.length;n++){let s=t[n],i=e[s];r[s]=i===void 0?null:i}return r}o(IN,"parseRow");function W7(e,t,r,n){let s=IN(r,e);n.push(s)}o(W7,"searchAll");function z7(e,t,r,n){let s=IN(r,e);n[t]=s}o(z7,"searchAllToMap");function j7(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}o(j7,"iterateDBI");function Tl(e,t,r,n,s){let i=Object.create(null);i[s]=e;let a;n===s?a=e:(a=t,n!==void 0&&(i[n]=a)),r[0].push(a),r[1].push(i)}o(Tl,"pushResults");function J7(e,t,r,n,s,i){t.toString().endsWith(e)&&Tl(t,r,n,s,i)}o(J7,"endsWith");function Q7(e,t,r,n,s,i){t.toString().includes(e)&&Tl(t,r,n,s,i)}o(Q7,"contains");function X7(e,t,r,n,s,i){t>e&&Tl(t,r,n,s,i)}o(X7,"greaterThanCompare");function Z7(e,t,r,n,s,i){t>=e&&Tl(t,r,n,s,i)}o(Z7,"greaterThanEqualCompare");function eee(e,t,r,n,s,i){t<e&&Tl(t,r,n,s,i)}o(eee,"lessThanCompare");function tee(e,t,r,n,s,i){t<=e&&Tl(t,r,n,s,i)}o(tee,"lessThanEqualCompare");lB.exports={parseRow:IN,searchAll:W7,searchAllToMap:z7,iterateDBI:j7,endsWith:J7,contains:Q7,greaterThanCompare:X7,greaterThanEqualCompare:Z7,lessThanCompare:eee,lessThanEqualCompare:tee,pushResults:Tl}});var od=M((dDe,_B)=>{"use strict";var Ya=gt(),cDe=z(),rs=Cn(),Tg=qt(),Xt=$r().LMDB_ERRORS_ENUM,lDe=se(),ree=(H(),v($)),Rg=wN(),{parseRow:nee}=Rg,uDe=require("lmdb"),{OVERFLOW_MARKER:uB,MAX_SEARCH_KEY_LENGTH:see}=Tg;function dB(e,t,r,n=!1,s=void 0,i=void 0){return Rl(e,t,r,(a,c)=>c.getRange({transaction:a,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}))}o(dB,"iterateFullIndex");function sh(e,t,r,n,s,i=!1,a=void 0,c=void 0,l=!1,u=!1){return Rl(e,t,r,(d,f,m,h)=>{let T={transaction:d,start:i===!0?s:n,end:i===!0?n:s,reverse:i,limit:a,offset:c,inclusiveEnd:i===!0?!l:!u,exclusiveStart:i===!0?u:l};return h===r?(T.values=!1,f.getRange(T).map(R=>({value:R}))):f.getRange(T)})}o(sh,"iterateRangeBetween");function Rl(e,t,r,n){let s=e.database||e,i=Ya.openDBI(s,r);i[Tg.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&Ya.openDBI(s,t);let a;e.database?a=e:(a=e.useReadTransaction(),a.database=e);let c=n(a,i,s,t);return c.transaction=a,e.database||(c.onDone=()=>{a.done()}),c}o(Rl,"setupTransaction");function fB(e,t,r,n){let s;return function(i,a){if(typeof i=="string"&&i.endsWith(uB)){if(!s)if(r)s=Ya.openDBI(e,r);else{let l=Ya.listDBIs(e);for(let u=0,d=l.length;u<d&&(s=Ya.openDBI(e,l[u]),!s[Tg.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(a,{transaction:t,lazy:!0})[n]}return i}}o(fB,"getOverflowCheck");function iee(e,t,r,n=!1,s=void 0,i=void 0){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);return Rl(e,t,t,(a,c,l)=>(yg(r),r=ih(l,r),c.getRange({transaction:a,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>nee(u.value,r))))}o(iee,"searchAll");function oee(e,t,r,n=!1,s=void 0,i=void 0){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);yg(r),r=ih(e.database||e,r);let a=new Map;for(let{key:c,value:l}of dB(e,t,t,n,s,i))a.set(c,Rg.parseRow(l,r));return a}o(oee,"searchAllToMap");function aee(e,t,r=!1,n=void 0,s=void 0){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.ATTRIBUTE_REQUIRED);let i=Object.create(null),a=dB(e,void 0,t,r,n,s),c=a.transaction,l=fB(c.database,c,void 0,t);for(let{key:u,value:d}of a){let f=l(u,d);i[f]===void 0&&(i[f]=[]),i[f].push(d)}return i}o(aee,"iterateDBI");function cee(e,t){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);return Ya.statDBI(e,t).entryCount}o(cee,"countAll");function lee(e,t,r,n,s=!1,i=void 0,a=void 0){return Wa(e,r,n),Rl(e,t,r,(c,l,u,d)=>(n=rs.convertKeyValueToWrite(n),d===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:a}).map(f=>({key:n,value:f}))))}o(lee,"equals");function uee(e,t,r){return Wa(e,t,r),Ya.openDBI(e,t).getValuesCount(r)}o(uee,"count");function dee(e,t,r,n,s=!1,i=void 0,a=void 0){return Wa(e,r,n),Rl(e,null,r,(c,l)=>{n=rs.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let d;if(s===!0){let f;for(let m of l.getKeys({transaction:c,start:n}))if(!m.startsWith(n)){f=m;break}return f!==void 0&&(Number.isInteger(a)?a++:i++),d=l.getRange({transaction:c,start:f,end:void 0,reverse:s,limit:i,offset:a}).map(m=>{let{key:h}=m;if(h!==f){if(h.toString().startsWith(n))return m;if(u===!0)return d.DONE}}),d.filter(m=>m)}else return d=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:a}).map(f=>{if(f.key.toString().startsWith(n))return f;if(u===!0)return d.DONE}),u?d:d.filter(f=>f)})}o(dee,"startsWith");function fee(e,t,r,n,s=!1,i=void 0,a=void 0){return mB(e,t,r,n,s,i,a,!0)}o(fee,"endsWith");function mB(e,t,r,n,s=!1,i=void 0,a=void 0,c=!1){return Wa(e,r,n),Rl(e,null,r,(l,u,d,f)=>{let m=fB(d,l,f,r);return a=Number.isInteger(a)?a:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(h=>{let p=h.toString();return p.endsWith(uB)?u.getValues(h,{transaction:l}).map(E=>{let g=m(h,E);if(c?g.endsWith(n):g.includes(n))return{key:g,value:E}}).filter(E=>E):(c?p.endsWith(n):p.includes(n))?u[Tg.DBI_DEFINITION_NAME].is_hash_attribute?{key:h,value:h}:u.getValues(h,{transaction:l}).map(E=>({key:h,value:E})):[]}).slice(a,i===void 0?void 0:i+(a||0))})}o(mB,"contains");function mee(e,t,r,n,s=!1,i=void 0,a=void 0){Wa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),sh(e,t,r,n,l,s,i,a,!0,!1)}o(mee,"greaterThan");function hee(e,t,r,n,s=!1,i=void 0,a=void 0){Wa(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),sh(e,t,r,n,l,s,i,a,!1,!1)}o(hee,"greaterThanEqual");function pee(e,t,r,n,s=!1,i=void 0,a=void 0){Wa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),sh(e,t,r,l,n,s,i,a,!1,!0)}o(pee,"lessThan");function _ee(e,t,r,n,s=!1,i=void 0,a=void 0){Wa(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),sh(e,t,r,l,n,s,i,a,!1,!1)}o(_ee,"lessThanEqual");function Eee(e,t,r,n,s,i=!1,a=void 0,c=void 0){if(rs.validateEnv(e),r===void 0)throw new Error(Xt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(Xt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(Xt.END_VALUE_REQUIRED);if(n=rs.convertKeyValueToWrite(n),s=rs.convertKeyValueToWrite(s),n>s)throw new Error(Xt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return sh(e,t,r,n,s,i,a,c)}o(Eee,"between");function gee(e,t,r,n){rs.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);if(yg(r),r=ih(s,r),n===void 0)throw new Error(Xt.ID_REQUIRED);let a=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(a=Rg.parseRow(c,r)),a}o(gee,"searchByHash");function See(e,t,r){rs.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Xt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}o(See,"checkHashExists");function Tee(e,t,r,n,s=[]){return pB(e,t,r,n,s),hB(e,t,r,n,s).map(i=>i[1])}o(Tee,"batchSearchByHash");function Ree(e,t,r,n,s=[]){pB(e,t,r,n,s);let i=new Map;for(let[a,c]of hB(e,t,r,n,s))i.set(a,c);return i}o(Ree,"batchSearchByHashToMap");function hB(e,t,r,n,s=[]){return Rl(e,t,t,(i,a,c)=>{r=ih(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,Rg.parseRow(d,r)];s.push(u)}).filter(u=>u)})}o(hB,"batchHashSearch");function pB(e,t,r,n,s){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.HASH_ATTRIBUTE_REQUIRED);if(yg(r),n==null)throw new Error(Xt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(Xt.IDS_MUST_BE_ITERABLE)}o(pB,"initializeBatchSearchByHash");function yg(e){if(!Array.isArray(e))throw e===void 0?new Error(Xt.FETCH_ATTRIBUTES_REQUIRED):new Error(Xt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}o(yg,"validateFetchAttributes");function Wa(e,t,r){if(rs.validateEnv(e),t===void 0)throw new Error(Xt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Xt.SEARCH_VALUE_REQUIRED);if(r?.length>see)throw new Error(Xt.SEARCH_VALUE_TOO_LARGE)}o(Wa,"validateComparisonFunctions");function ih(e,t){return t.length===1&&ree.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=Ya.listDBIs(e)),t}o(ih,"setGetWholeRowAttributes");_B.exports={searchAll:iee,searchAllToMap:oee,count:uee,countAll:cee,equals:lee,startsWith:dee,endsWith:fee,contains:mB,searchByHash:gee,setGetWholeRowAttributes:ih,batchSearchByHash:Tee,batchSearchByHashToMap:Ree,checkHashExists:See,iterateDBI:aee,greaterThan:mee,greaterThanEqual:hee,lessThan:pee,lessThanEqual:_ee,between:Eee}});var ad=M((mDe,RB)=>{var EB=require("lodash"),gB=lt(),$e=require("joi"),yee=se(),{hdbSchemaTable:oh,checkValidTable:SB,hdbTable:TB,hdbDatabase:Ag}=Yi(),{handleHDBError:Aee,hdbErrors:bee}=_e(),{getDatabases:Nee}=(De(),v(at)),{HTTP_STATUS_CODES:Iee}=bee,wee=$e.object({database:Ag,schema:Ag,table:TB,search_attribute:oh,search_value:$e.any().required(),get_attributes:$e.array().min(1).items($e.alternatives(oh,$e.object())).optional(),desc:$e.bool(),limit:$e.number().integer().min(1),offset:$e.number().integer().min(0)}),Oee=$e.object({database:Ag,schema:Ag,table:TB,operator:$e.string().valid("and","or").default("and").lowercase(),offset:$e.number().integer().min(0),limit:$e.number().integer().min(1),get_attributes:$e.array().min(1).items($e.alternatives(oh,$e.object())).optional(),sort:$e.object({attribute:$e.alternatives(oh,$e.array().min(1)),descending:$e.bool().optional()}).optional(),conditions:$e.array().min(1).items($e.alternatives($e.object({operator:$e.string().valid("and","or").default("and").lowercase(),conditions:$e.array()}),$e.object({search_attribute:$e.alternatives(oh,$e.array().min(1)),search_type:$e.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:$e.when("search_type",{switch:[{is:"equals",then:$e.any()},{is:"between",then:$e.array().items($e.alternatives([$e.string(),$e.number()])).length(2)}],otherwise:$e.alternatives($e.string(),$e.number())}).required()}))).required()});RB.exports=function(e,t){let r=null;switch(t){case"value":r=gB.validateBySchema(e,wee);break;case"hashes":let i=function(a){s?s+=". "+a:s=a};var n=i;o(i,"addError");let s;i(SB("database",e.schema)),i(SB("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(a=>typeof a=="string"||typeof a=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(a=>typeof a=="string"||typeof a=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),s&&(r=new Error(s.trim()));break;case"conditions":r=gB.validateBySchema(e,Oee);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=yee.checkGlobalSchemaTable(e.schema,e.table);if(s)return Aee(new Error,s,Iee.NOT_FOUND);let a=Nee()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.search_attribute);let l=o(d=>{for(let f=0,m=d.conditions.length;f<m;f++){let h=d.conditions[f];h.conditions?l(h):c.push(h.search_attribute)}},"addConditions");t==="conditions"&&l(e);let u=EB.filter(c,d=>d!=="*"&&!d.startsWith?.("$")&&d.attribute!=="*"&&!Array.isArray(d)&&!d.name&&!EB.some(a,f=>f===d||f.attribute===d||f.attribute===d.attribute));if(u&&u.length>0){let d=u.join(", ");return d=d.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${d}'`)}}return r}});var ON=M((pDe,yB)=>{"use strict";var Cee=gt(),Pee=ad(),{getSchemaPath:Dee}=At();yB.exports=Lee;function Lee(e){let t=Pee(e,"hashes");if(t)throw t;let r=Dee(e.schema,e.table);return Cee.openEnvironment(r,e.table)}o(Lee,"initialize")});var CN=M((EDe,AB)=>{"use strict";var Mee=od(),vee=ON();AB.exports=Uee;async function Uee(e){let t=await vee(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return Mee.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}o(Uee,"lmdbGetDataByHash")});var cd=M((SDe,bB)=>{"use strict";var PN=class{static{o(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};bB.exports=PN});var IB=M((yDe,NB)=>{"use strict";var RDe=cd(),xee=od(),Bee=ON();NB.exports=Fee;async function Fee(e){let t=await Bee(e),r=global.hdb_schema[e.schema][e.table];return xee.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}o(Fee,"lmdbSearchByHash")});var pi=M((bDe,wB)=>{"use strict";var DN=class{static{o(this,"SearchObject")}constructor(t,r,n,s,i,a,c,l=!1,u=void 0,d=void 0){this.schema=t,this.table=r,this.search_attribute=n,this.search_value=s,this.hash_attribute=i,this.get_attributes=a,this.end_value=c,this.reverse=l,this.limit=u,this.offset=d}};wB.exports=DN});var bg=M((IDe,MB)=>{"use strict";var on=od(),Hee=gt(),kee=se(),Ve=qt(),yl=(H(),v($)),qee=xo(),OB=$r().LMDB_ERRORS_ENUM,{getSchemaPath:Gee}=At(),ko=yl.SEARCH_WILDCARDS;async function $ee(e,t,r){let n;e.schema===yl.SYSTEM_SCHEMA_NAME?n=qee[e.table]:n=global.hdb_schema[e.schema][e.table];let s=LB(e,n.hash_attribute,r,t);return PB(e,s,n.hash_attribute,r)}o($ee,"prepSearch");async function PB(e,t,r,n){let s=Gee(e.schema,e.table),i=await Hee.openEnvironment(s,e.table),a=DB(i,e,t,r),c=a.transaction||i;if([Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,Ve.SEARCH_TYPES.SEARCH_ALL,Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return a;if(Vee(e,r)===!1){let d=e.search_attribute;if(d===r)return n?CB(a,()=>!0):a.map(m=>({[r]:m.key}));let f=o(m=>({[r]:m.value,[d]:m.key}),"toObject");return n?CB(a,f):a.map(f)}let u=e.search_attribute===r?a.map(d=>d.key):a.map(d=>d.value);return n===!0?on.batchSearchByHashToMap(c,r,e.get_attributes,u):on.batchSearchByHash(c,r,e.get_attributes,u)}o(PB,"executeSearch");function DB(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:a,limit:c,offset:l}=t;switch(a=typeof a=="boolean"?a:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case Ve.SEARCH_TYPES.EQUALS:s=on.equals(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.CONTAINS:s=on.contains(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.ENDS_WITH:case Ve.SEARCH_TYPES._ENDS_WITH:s=on.endsWith(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.STARTS_WITH:case Ve.SEARCH_TYPES._STARTS_WITH:s=on.startsWith(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return on.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return on.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case Ve.SEARCH_TYPES.SEARCH_ALL:return on.searchAll(e,n,t.get_attributes,a,c,l);case Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return on.searchAllToMap(e,n,t.get_attributes,a,c,l);case Ve.SEARCH_TYPES.BETWEEN:s=on.between(e,i,t.search_attribute,t.search_value,t.end_value,a,c,l);break;case Ve.SEARCH_TYPES.GREATER_THAN:case Ve.SEARCH_TYPES._GREATER_THAN:s=on.greaterThan(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.GREATER_THAN_EQUAL:case Ve.SEARCH_TYPES._GREATER_THAN_EQUAL:s=on.greaterThanEqual(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.LESS_THAN:case Ve.SEARCH_TYPES._LESS_THAN:s=on.lessThan(e,i,t.search_attribute,t.search_value,a,c,l);break;case Ve.SEARCH_TYPES.LESS_THAN_EQUAL:case Ve.SEARCH_TYPES._LESS_THAN_EQUAL:s=on.lessThanEqual(e,i,t.search_attribute,t.search_value,a,c,l);break;default:return Object.create(null)}return s}o(DB,"searchByType");function CB(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}o(CB,"createMapFromIterable");function Vee(e,t){if(e.get_attributes.length===1&&e.get_attributes[0]==="*")return!0;let r=[e.search_attribute];e.get_attributes.indexOf(t)>=0&&r.push(t);let n=!1;for(let s=0;s<e.get_attributes.length;s++)if(r.indexOf(e.get_attributes[s])<0){n=!0;break}return n}o(Vee,"checkToFetchMore");function LB(e,t,r,n){if(kee.isEmpty(n)){let s=e.search_value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),a=s.charAt(s.length-1),c=!1;if(e.search_attribute===t&&(c=!0),ko.indexOf(s)>-1)return r===!0?Ve.SEARCH_TYPES.SEARCH_ALL_TO_MAP:Ve.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(ko[0])<0&&s.indexOf(ko[1])<0)return c===!0?r===!0?Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:Ve.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:Ve.SEARCH_TYPES.EQUALS;if(ko.indexOf(i)>=0&&ko.indexOf(a)>=0)return e.search_value=e.search_value.slice(1,-1),Ve.SEARCH_TYPES.CONTAINS;if(ko.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),Ve.SEARCH_TYPES.ENDS_WITH;if(ko.indexOf(a)>=0)return e.search_value=e.search_value.slice(0,-1),Ve.SEARCH_TYPES.STARTS_WITH;if(s.includes(ko[0])||s.includes(ko[1]))return Ve.SEARCH_TYPES.EQUALS;throw new Error(OB.UNKNOWN_SEARCH_TYPE)}else switch(n){case yl.VALUE_SEARCH_COMPARATORS.BETWEEN:return Ve.SEARCH_TYPES.BETWEEN;case yl.VALUE_SEARCH_COMPARATORS.GREATER:return Ve.SEARCH_TYPES.GREATER_THAN;case yl.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return Ve.SEARCH_TYPES.GREATER_THAN_EQUAL;case yl.VALUE_SEARCH_COMPARATORS.LESS:return Ve.SEARCH_TYPES.LESS_THAN;case yl.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return Ve.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(OB.UNKNOWN_SEARCH_TYPE)}}o(LB,"createSearchTypeFromSearchObject");MB.exports={executeSearch:PB,createSearchTypeFromSearchObject:LB,prepSearch:$ee,searchByType:DB}});var UB=M((CDe,vB)=>{"use strict";var ODe=pi(),Kee=ad(),Yee=se(),Wee=(H(),v($)),zee=bg();vB.exports=jee;function jee(e,t){if(!Yee.isEmpty(t)&&Wee.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Kee(e,"value");if(n)throw n;return zee.prepSearch(e,t,!0)}o(jee,"lmdbGetDataByValue")});var ah=M((LDe,xB)=>{"use strict";var DDe=pi(),Jee=ad(),Qee=se(),Xee=(H(),v($)),Zee=bg();xB.exports=ete;async function ete(e,t){if(!Qee.isEmpty(t)&&Xee.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Jee(e,"value");if(n)throw n;return Zee.prepSearch(e,t,!1)}o(ete,"lmdbSearchByValue")});var FB=M((UDe,BB)=>{"use strict";var vDe=qt(),LN=class{static{o(this,"SearchByConditionsObject")}constructor(t,r,n,s,i=void 0,a=void 0,c="and"){this.schema=t,this.table=r,this.get_attributes=n,this.limit=i,this.offset=a,this.conditions=s,this.operator=c}},MN=class{static{o(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},vN=class{static{o(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};BB.exports={SearchByConditionsObject:LN,SearchCondition:MN,SortAttribute:vN}});var $B=M((HDe,GB)=>{"use strict";var BDe=FB().SearchByConditionsObject,tte=pi(),rte=ad(),UN=od(),Ng=qt(),{Resource:FDe}=($a(),v(Tx)),qB=bg(),nte=wN(),ste=require("lodash"),{getSchemaPath:ite}=At(),HB=gt(),{handleHDBError:ote,hdbErrors:ate}=_e(),{HTTP_STATUS_CODES:cte}=ate,lte=1e8;GB.exports=ute;async function ute(e){let t=rte(e,"conditions");if(t)throw ote(t,t.message,cte.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=ite(e.schema,e.table),n=await HB.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)HB.openDBI(n,u.search_attribute);let i=ste.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let d=u.search_type;d===Ng.SEARCH_TYPES.EQUALS?u.estimated_count=UN.count(n,u.search_attribute,u.search_value):d===Ng.SEARCH_TYPES.CONTAINS||d===Ng.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=lte}return u.estimated_count}),a=n.useReadTransaction();a.database=n;let c=await kB(a,e,i[0],s.hash_attribute),l;if(!e.operator||e.operator.toLowerCase()==="and"){let u=n.dbis[s.hash_attribute],d=i.slice(1).map(qB.filterByType),f=d.length,m=UN.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(h=>u.get(h,{transaction:a,lazy:!0})),f>0&&(l=l.filter(h=>{for(let p=0;p<f;p++)if(!d[p](h))return!1;return!0})),(e.offset||e.limit!==void 0)&&(l=l.slice(e.offset,e.limit!==void 0?(e.offset||0)+e.limit:void 0)),l=l.map(h=>nte.parseRow(h,m))}else{for(let f=1;f<i.length;f++){let m=i[f],h=await kB(a,e,m,s.hash_attribute);c=c.concat(h)}let u=new Set,d=e.offset||0;c=c.filter(f=>u.has(f)?!1:(u.add(f),!0)).slice(d,e.limit&&e.limit+d),l=UN.batchSearchByHash(a,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{a.done()},l}o(ute,"lmdbSearchByConditions");async function kB(e,t,r,n){let s=new tte(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===Ng.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,qB.searchByType(e,s,i,n).map(a=>a.value)}o(kB,"executeConditionSearch")});var ch=M((qDe,VB)=>{"use strict";var dte=(H(),v($)).OPERATIONS_ENUM,xN=class{static{o(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=dte.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};VB.exports=xN});var BN=M(($De,XB)=>{"use strict";var zB=pi(),jB=ch(),JB=ah(),QB=nh(),Bn=(H(),v($)),KB=se(),YB=gt(),{getTransactionAuditStorePath:fte,getSchemaPath:mte}=At(),WB=z();XB.exports=hte;async function hte(e){try{if(KB.isEmpty(global.hdb_schema[e.schema])||KB.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await pte(e),await _te(e);let t=mte(e.schema,e.table);try{await YB.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")WB.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=fte(e.schema,e.table);await YB.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")WB.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}o(hte,"lmdbDropTable");async function pte(e){let t=new zB(Bn.SYSTEM_SCHEMA_NAME,Bn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await JB(t)),n=[];for(let i=0;i<r.length;i++){let a=r[i];n.push(a.id)}if(n.length===0)return;let s=new jB(Bn.SYSTEM_SCHEMA_NAME,Bn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await QB(s)}o(pte,"deleteAttributesFromSystem");async function _te(e){let t=new zB(Bn.SYSTEM_SCHEMA_NAME,Bn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Bn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await JB(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let a=r[i];a.name===e.table&&a.schema===e.schema&&(n=a)}if(!n)throw new Error(`${e.schema}.${e.table} was not found`);let s=new jB(Bn.SYSTEM_SCHEMA_NAME,Bn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await QB(s)}catch(i){throw i}}o(_te,"dropTableFromSystem")});var eF=M((KDe,ZB)=>{"use strict";var Ete=require("fs-extra"),gte=pi(),Ste=cd(),Tte=ch(),Rte=BN(),yte=nh(),Ate=CN(),bte=ah(),qo=(H(),v($)),{getSchemaPath:Nte}=At(),{handleHDBError:Ite,hdbErrors:wte}=_e(),{HDB_ERROR_MSGS:Ote,HTTP_STATUS_CODES:Cte}=wte;ZB.exports=Pte;async function Pte(e){let t;try{t=await Dte(e.schema);let r=new gte(qo.SYSTEM_SCHEMA_NAME,qo.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,qo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[qo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await bte(r));for(let a=0;a<n.length;a++){let c={schema:t,table:n[a].name};try{await Rte(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new Tte(qo.SYSTEM_SCHEMA_NAME,qo.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await yte(s);let i=Nte(t);await Ete.remove(i)}catch(r){throw r}}o(Pte,"lmdbDropSchema");async function Dte(e){let t=new Ste(qo.SYSTEM_SCHEMA_NAME,qo.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[qo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await Ate(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw Ite(new Error,Ote.SCHEMA_NOT_FOUND(e),Cte.NOT_FOUND,void 0,void 0,!0);return n}o(Dte,"validateDropSchema")});var lh=M((WDe,tF)=>{"use strict";var FN=class{static{o(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};tF.exports=FN});var kN=M((JDe,rF)=>{"use strict";var Lte=require("fs-extra"),Ig=gt(),{getTransactionAuditStorePath:Mte}=At(),HN=qt(),jDe=lh();rF.exports=vte;async function vte(e){let t;try{let r=Mte(e.schema,e.table);await Lte.mkdirp(r),t=await Ig.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{Ig.createDBI(t,HN.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),Ig.createDBI(t,HN.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),Ig.createDBI(t,HN.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}o(vte,"createTransactionsAuditEnvironment")});var iF=M((ZDe,sF)=>{"use strict";var qN=(H(),v($)),nF=gt(),Ute=gl(),{getSystemSchemaPath:xte,getSchemaPath:Bte}=At(),XDe=xo(),Fte=Eg(),GN=_g(),Hte=z(),kte=kN();sF.exports=qte;async function qte(e,t){let r=Bte(t.schema,t.table),n=new GN(t.schema,t.table,qN.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new GN(t.schema,t.table,qN.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new GN(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await nF.createEnvironment(r,t.table),e!==void 0){let a=await nF.openEnvironment(xte(),qN.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await Ute.insertRecords(a,HDB_TABLE_INFO.hash_attribute,hdbTableAttributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await $N(n),await $N(s),await $N(i)}await kte(t)}catch(a){throw a}}o(qte,"lmdbCreateTable");async function $N(e){try{await Fte(e)}catch(t){Hte.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}o($N,"createAttribute")});var aF=M((tLe,oF)=>{"use strict";var Gte=eh(),$te=ym(),Vte=gg(),uh=(H(),v($)),Kte=gl().updateRecords,Yte=gt(),{getSchemaPath:Wte}=At(),zte=th(),jte=z();oF.exports=Jte;async function Jte(e){try{let{schemaTable:t,attributes:r}=Gte(e);$te(e,r,t.hash_attribute),e.schema!==uh.SYSTEM_SCHEMA_NAME&&(r.includes(uh.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(uh.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(uh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(uh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await Vte(e.hdb_auth_header,t,r),s=Wte(e.schema,e.table),i=await Yte.openEnvironment(s,e.table),a=await Kte(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await zte(e,a)}catch(c){jte.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:a.txn_time}}catch(t){throw t}}o(Jte,"lmdbUpdateRecords")});var lF=M((nLe,cF)=>{"use strict";var Qte=(H(),v($)).OPERATIONS_ENUM,VN=class{static{o(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=Qte.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};cF.exports=VN});var dF=M((oLe,uF)=>{"use strict";var iLe=lF(),Xte=eh(),Zte=ym(),ere=gg(),dh=(H(),v($)),tre=gl().upsertRecords,rre=gt(),{getSchemaPath:nre}=At(),sre=th(),ire=z(),{handleHDBError:ore,hdbErrors:are}=_e();uF.exports=cre;async function cre(e){let t;try{t=Xte(e)}catch(l){throw ore(l,l.message,are.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schemaTable:r,attributes:n}=t;Zte(e,n,r.hash_attribute),e.schema!==dh.SYSTEM_SCHEMA_NAME&&(n.includes(dh.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(dh.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(dh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(dh.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await ere(e.hdb_auth_header,r,n),i=nre(e.schema,e.table),a=await rre.openEnvironment(i,e.table),c=await tre(a,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await sre(e,c)}catch(l){ire.error(`unable to write transaction due to ${l.message}`)}return{written_hashes:c.written_hashes,schemaTable:r,new_attributes:s,txn_time:c.txn_time}}o(cre,"lmdbUpsertRecords")});var mF=M((cLe,fF)=>{"use strict";var KN=class{static{o(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};fF.exports=KN});var pF=M((uLe,hF)=>{"use strict";var YN=class{static{o(this,"DeleteAuditLogsBeforeResults")}constructor(t=void 0,r=void 0,n=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=n}};hF.exports=YN});var gF=M((mLe,EF)=>{"use strict";var WN=gt(),{getTransactionAuditStorePath:lre}=At(),fLe=mF(),fh=qt(),ure=se(),_F=pF(),dre=require("util").promisify,fre=dre(setTimeout),mre=1e4,hre=100;EF.exports=pre;async function pre(e){let t=lre(e.schema,e.table),r=await WN.openEnvironment(t,e.table,!0),n=WN.listDBIs(r);WN.initializeDBIs(r,fh.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new _F;do s=await _re(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 fre(hre);while(s.transactions_deleted>0);return i}o(pre,"deleteAuditLogsBefore");async function _re(e,t){let r=new _F;try{let n=e.dbis[fh.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let{key:i,value:a}of n.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),s=n.remove(i);let c=a[fh.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];ure.isEmpty(c)||(s=e.dbis[fh.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<a.hash_values.length;l++)s=e.dbis[fh.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(a.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>mre)break}return await s,r}catch(n){throw n}}o(_re,"deleteTransactions")});var TF=M((pLe,SF)=>{"use strict";var zN=class{static{o(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};SF.exports=zN});var yF=M((gLe,RF)=>{"use strict";var Ere=pi(),gre=ch(),ELe=TF(),Wi=(H(),v($)),Sre=se(),jN=gt(),Tre=xo(),Rre=ah(),yre=nh(),{getSchemaPath:Are}=At();RF.exports=bre;async function bre(e,t=!0){let r;e.schema===Wi.SYSTEM_SCHEMA_NAME?r=Tre[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await Ire(e),s=Are(e.schema,e.table),i=await jN.openEnvironment(s,e.table);return t===!0&&await Nre(e,i,r.hash_attribute),jN.dropDBI(i,e.attribute),n}o(bre,"lmdbDropAttribute");async function Nre(e,t,r){let n=jN.openDBI(t,r),s,i=e.attribute;for(let{key:a,value:c,version:l}of n.getRange({start:!1,versions:!0})){let u={};for(let d in c)d!==i&&(u[d]=c[d]);s=t.dbis[r].put(a,u,l)}await s}o(Nre,"removeAttributeFromAllObjects");async function Ire(e){let t=new Ere(Wi.SYSTEM_SCHEMA_NAME,Wi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await Rre(t)).filter(a=>a[Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(Sre.isEmptyOrZeroLength(n))throw new Error(`Attribute '${drop_attribute_obj.attribute}' was not found in '${drop_attribute_obj.schema}.${drop_attribute_obj.table}'`);let s=n.map(a=>a[Wi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new gre(Wi.SYSTEM_SCHEMA_NAME,Wi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return yre(i)}o(Ire,"dropAttributeFromSystem")});var OF=M((RLe,wF)=>{"use strict";var JN=gt(),ld=qt(),TLe=Cn(),QN=(H(),v($)),AF=se(),{getTransactionAuditStorePath:wre}=At(),Ore=od(),wg=nd(),Cre=z();wF.exports=Pre;async function Pre(e){let t=wre(e.schema,e.table),r=await JN.openEnvironment(t,e.table,!0),n=JN.listDBIs(r);JN.initializeDBIs(r,ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case QN.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return bF(r,e.search_values);case QN.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,Lre(r,e.search_values,s);case QN.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return Dre(r,e.search_values);default:return bF(r)}}o(Pre,"readAuditLog");function bF(e,t=[0,Date.now()]){AF.isEmpty(t[0])&&(t[0]=0),AF.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[ld.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 wg,s))}o(bF,"searchTransactionsByTimestamp");function Dre(e,t=[]){let r=new Map;for(let n=0;n<t.length;n++){let s=t[n],i=[];for(let a of e.dbis[ld.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(a);r.set(s,IF(e,i))}return Object.fromEntries(r)}o(Dre,"searchTransactionsByUsername");function Lre(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],d=Ore.equals(e,ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,ld.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=IF(e,s),a=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,d=n.get(u);NF(l,"records",r,d,a),NF(l,"original_records",r,d,a)}return Object.fromEntries(a)}o(Lre,"searchTransactionsByHashValues");function NF(e,t,r,n,s){let i=e.timestamp;if(e[t])for(let a=0;a<e[t].length;a++){let c=e[t][a],l=c[r].toString();if(n.indexOf(l)>=0)if(s.has(l)){let u=s.get(l),d=u[u.length-1];if(d.timestamp===i)d[t]=[c];else{let f=new wg(e.operation,e.user_name,i,void 0);f[t]=[c],u.push(f)}}else{let u=new wg(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}o(NF,"loopRecords");function IF(e,t){let r=[];try{let n=e.dbis[ld.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let s=0;s<t.length;s++)try{let i=n.get(t[s]);if(i){let a=Object.assign(new wg,i);r.push(a)}}catch(i){Cre.warn(i)}return r}catch(n){throw n}}o(IF,"batchSearchTransactions")});var PF=M((NLe,CF)=>{"use strict";var{getSchemaPath:ALe}=At(),bLe=gt(),{database:Mre}=(De(),v(at));CF.exports={writeTransaction:vre};async function vre(e,t,r){return Mre({database:e,table:t}).transaction(r)}o(vre,"writeTransaction")});var vF=M((wLe,MF)=>{"use strict";var{getSchemaPath:DF}=At(),LF=gt();MF.exports={flush:Ure,resetReadTxn:xre};async function Ure(e,t){return(await LF.openEnvironment(DF(e,t),t.toString())).flushed}o(Ure,"flush");async function xre(e,t){try{(await LF.openEnvironment(DF(e,t),t.toString())).resetReadTxn()}catch{}}o(xre,"resetReadTxn")});var FF=M((CLe,BF)=>{"use strict";var{Readable:Bre}=require("stream"),{getDatabases:Fre}=(De(),v(at)),{readSync:Hre,openSync:kre,createReadStream:UF}=require("fs"),{open:qre}=require("lmdb"),xF=zm(),Gre=jm(),{AUDIT_STORE_OPTIONS:$re}=(Io(),v(ix)),{INTERNAL_DBIS_NAME:Vre,AUDIT_STORE_NAME:Kre}=qt();BF.exports=Wre;var XN=32768,Yre=100;async function Wre(e){let t=e.database||e.schema||"data",r=Fre()[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=qre({noSync:!0,maxDbs:Gre.MAX_DBS}),m,h=f.openDB(Vre,new xF(!1)),p=d.useReadTransaction(),E=0,g=o(async function(T,R){R.encoding="binary",R.encoder=void 0;let N=f.openDB(T,R),P=d.openDB(T,R);for(let{key:Y,version:te,value:x}of P.getRange({start:null,transaction:p,versions:P.useVersions}))m=N.put(Y,x,te),E++%Yre===0&&(await new Promise(V=>setTimeout(V,20)),p.openTimer&&(p.openTimer=0))},"copyDatabase");for(let{key:T,value:R}of d.getRange({transaction:p,start:!1}))if(s.some(N=>T.startsWith?.(N+"/"))){h.put(T,R);let[,N]=T.split("/"),P=!N,Y=new xF(!P,P);await g(T,Y)}e.include_audit&&await g(Kre,{...$re}),await m;let y=UF(f.path);return y.headers=l(),y.on("close",()=>{p.done(),f.close()}),y}let a=r[Object.keys(r)[0]].primaryStore,c=kre(a.path);return a.transaction(()=>{let u=Buffer.alloc(XN);Hre(c,u,0,XN),a.resetReadTxn();let d=a.useReadTransaction();d.renew();let f=UF(null,{fd:c,start:XN}),m=new Bre.from(async function*(){yield u;for await(let h of f)d.openTimer&&(d.openTimer=0),yield h;d.done()}());return m.headers=l(),m});function l(){let u=new Map;return u.set("content-type","application/octet-stream"),u.set("content-disposition",`attachment; filename="${t}"`),u.set("date",n),u}}o(Wre,"getBackup")});var qF=M((DLe,kF)=>{"use strict";var zre=z(),{handleHDBError:jre}=_e(),Jre=f0(),Qre=Eg(),Xre=yN(),Zre=eB(),ene=nh(),tne=CN(),rne=IB(),nne=UB(),sne=ah(),ine=$B(),one=eF(),ane=iF(),cne=aF(),lne=dF(),une=gF(),dne=BN(),fne=yF(),mne=OF(),hne=PF(),HF=vF(),pne=FF(),ZN=class extends Jre{static{o(this,"LMDBBridge")}async searchByConditions(t){return ine(t)}async getDataByHash(t){return await tne(t)}async searchByHash(t){return await rne(t)}async getDataByValue(t,r){return await nne(t,r)}async searchByValue(t){return await sne(t)}async createSchema(t){return await Zre(t)}async dropSchema(t){return await one(t)}async createTable(t,r){return await ane(t,r)}async dropTable(t){return await dne(t)}async createAttribute(t){return await Qre(t)}async createRecords(t){return await Xre(t)}async updateRecords(t){return await cne(t)}async upsertRecords(t){try{return await lne(t)}catch(r){throw jre(r,null,null,zre.ERR,r)}}async deleteRecords(t){return await ene(t)}async dropAttribute(t){return await fne(t)}async deleteAuditLogsBefore(t){return await une(t)}async readAuditLog(t){return await mne(t)}writeTransaction(t,r,n){return hne.writeTransaction(t,r,n)}flush(t,r){return HF.flush(t,r)}resetReadTxn(t,r){return HF.resetReadTxn(t,r)}getBackup(t){return pne(t)}};kF.exports=ZN});function Fn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function hh(e,t,r=!1){let n=e.prototype,s={},i=t.attributes||t.properties||[];for(let l of i){let u=l.name,d,f;if(l.resolve)f={get(){return l.resolve(this,this.getContext?.())},set(m){return l.set(this,m)},configurable:!0};else{switch(l.type){case"String":d=o(function(m){if(!(typeof m=="string"||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a string, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"ID":d=o(function(m){if(!(typeof m=="string"||m?.length>0&&m.every?.(h=>typeof h=="string")||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a string, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Float":case"Number":d=o(function(m){let h=m?.__op__?m.value:m;if(!(typeof h=="number"||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a number, attempt to assign ${h}`);Fn(this)[u]=m},"set");break;case"Int":d=o(function(m){let h=m?.__op__?m.value:m;if(!(h>>0===h||m==null&&l.nullable!==!1))if(typeof h=="number"&&Math.abs((h>>0)-h)<=1)h=Math.round(h),m?.__op__?m.value=h:m=h;else throw new ns.ClientError(`${u} must be an integer between -2147483648 and 2147483647, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Long":d=o(function(m){let h=m?.__op__?m.value:m;if(!(Math.round(h)===m&&Math.abs(h)<=9007199254740992||m==null&&l.nullable!==!1))if(typeof h=="number"&&Math.abs(h)<=9007199254740992)h=Math.round(h),m?.__op__?m.value=h:m=h;else throw new ns.ClientError(`${u} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"BigInt":d=o(function(m){let h=m?.__op__?m.value:m;if(!(typeof h=="bigint"||m==null&&l.nullable!==!1))if(typeof h=="string"||typeof h=="number")h=BigInt(h),m?.__op__?m.value=h:m=h;else throw new ns.ClientError(`${u} must be a number, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Boolean":d=o(function(m){if(!(typeof m=="boolean"||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a boolean, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Date":d=o(function(m){if(!(m instanceof Date||m==null&&l.nullable!==!1))if(typeof m=="string"||typeof m=="number")m=new Date(m);else throw new ns.ClientError(`${u} must be a Date, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Bytes":d=o(function(m){if(!(m instanceof Uint8Array||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a Buffer or Uint8Array, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Blob":d=o(function(m){if(!(m instanceof Os||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be a Blob, attempt to assign ${m}`);Fn(this)[u]=m},"set");break;case"Any":case void 0:d=o(function(m){Fn(this)[u]=m},"set");break;default:d=o(function(m){if(!(typeof m=="object"||m==null&&l.nullable!==!1))throw new ns.ClientError(`${u} must be an object, attempt to assign ${m}`);Fn(this)[u]=m},"set")}f={get(){let m=this.getChanges?.();if(m&&u in m){let p=m[u];if(p?.__op__){let E=this.getRecord()?.[u];return p.update(E)}return p}let h=this.getRecord()?.[u];if(h&&typeof h=="object"){let p=eI(h,l);if(p)return m||this._setChanges(m=Object.create(null)),m[u]=p}return h},set:d,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,s[u]=f,(!(u in n)||Object.getOwnPropertyDescriptor(n,u)?.get?.isAttribute)&&Object.defineProperty(n,u,f)}a("getProperty",function(l){let u=s[l];if(u)return u.get.call(this);let d=this.getChanges();return d?.[l]!==void 0?d[l]:this.getRecord()?.[l]}),a("set",function(l,u){let d=s[l];if(d)return d.set.call(this,u);if(t.sealed)throw new ns.ClientError("Can not add a property to a sealed table schema");Fn(this)[l]=u}),a("deleteProperty",function(l){Fn(this)[l]=void 0}),a("toJSON",function(){let l=this.getChanges?.(),u;for(let f in l){u||(u={...this.getRecord()});let m=l[f];if(m?.__op__){let h=u[f];m=m.update(h)}u[f]=m}return Object.keys(this).length>0&&(u||(u={...this.getRecord()}),Object.assign(u,this)),u||this.getRecord()}),n.get||a("get",n.getProperty),n.delete||a("delete",n.deleteProperty),n.then||a("then",null);function a(l,u){Object.defineProperty(n,l,{value:u,configurable:!0})}o(a,"setMethod");let c=n;do{let l=Object.getPrototypeOf(c);if(l===Object.prototype){Object.setPrototypeOf(c,r?VF:$F);break}c=l}while(c&&c!==$F&&c!==VF)}function KF(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(GF[t])return GF[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=eI(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}function _ne(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 eI(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends bl{static{o(this,"TrackedObject")}},hh(r,t)),new r(e)):new bl(e);case Array:let n=new Cg(e.length,e);for(let s=0,i=e.length;s<i;s++){let a=e[s];a&&typeof a=="object"&&(a=eI(a,t?.elements)),n[s]=a}return n;default:return e}}function Pg(e){let t=e.getChanges?.(),r;for(let s in t){r||(r=e.getRecord?{...e.getRecord()}:{});let i=t[s];if(i&&typeof i=="object")if(i.__op__){let a=r[s];i=i.update(a)}else i=Pg(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 za(e,t=e.getChanges?.()){let r;if(!e)return t;if(e.getRecord&&e.constructor===Array&&!Object.isFrozen(e)){r=e;for(let n=0,s=e.length;n<s;n++){let i=e[n];if(i&&typeof i=="object"){let a=za(i);a!==i&&r===e&&(r=e.slice(0)),i=a}r[n]=i}return Object.freeze(r)}for(let n in t){r||(r={...e.getRecord?e.getRecord():e});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=XA[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=za(s);r[n]=s}if(!Array.isArray(e)&&e.getRecord)for(let n in e)Ene.call(e,n)&&(r||(r={...e.getRecord()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?e.getRecord():e}function Og(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[Al]||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(Og(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(Og(s))return!0}else return!0}else return!0}}return!1}var ns,GF,$F,VF,bl,Ene,Al,Cg,mh,tI=fe(()=>{ns=w(_e());bE();Cs();o(Fn,"getChanges");o(hh,"assignTrackedAccessors");GF=Object.prototype,$F=new Proxy({},{get:KF}),VF=new Proxy({},{get:KF,set:_ne});o(KF,"getProxiedProperty");o(_ne,"setProxiedProperty");o(eI,"trackObject");bl=class{static{o(this,"GenericTrackedObject")}#e;#t;constructor(t){if(t?.getRecord)throw new Error("Can not track an already tracked object, check for circular references");this.#e=t}getRecord(){return this.#e}setRecord(t){this.#e=t}getChanges(){return this.#t}_setChanges(t){this.#t=t}};hh(bl,{},!0);o(Pg,"collapseData");Ene=Object.prototype.hasOwnProperty;o(za,"updateAndFreeze");o(Og,"hasChanges");Al=Symbol.for("has-array-changes"),Cg=class extends Array{static{o(this,"TrackedArray")}#e;[Al];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[Al]=!0,super.splice(...t)}push(...t){return this[Al]=!0,super.push(...t)}pop(){return this[Al]=!0,super.pop()}unshift(...t){return this[Al]=!0,super.unshift(...t)}shift(){return this[Al]=!0,super.shift()}};Cg.prototype.constructor=Array;mh=class{static{o(this,"Addition")}__op__="add";value;constructor(t){this.value=t}update(t){return(+t||0)+this.value}}});var ZF={};Ce(ZF,{ResourceBridge:()=>sI});function iI({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 YF(e,t){let r=zi(e),n=iI(e,r);if(!r)throw new _i.ClientError(`Table ${e.table} not found`);let s;n&&r.attributes.length-n.length>2&&n.length<5&&(s=!0);let i={user:e.hdb_user,onlyIfCached:e.onlyIfCached,noCacheStore:e.noCacheStore,noCache:e.noCache,replicateFrom:e.replicateFrom},a;Mt(i,()=>new Promise(u=>a=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],d;try{d=await r.get({id:u,lazy:s,select:n},i),d=d&&Pg(d)}catch(f){d={message:(0,XF.errorToString)(f)}}return t?{value:{key:u,value:d}}:{value:d}}else return a(),{done:!0}},return(u){return a(),{value:u,done:!0}},throw(u){return a(),{done:!0}}}}}}function zi(e){let t=e.database||e.schema||Sne,r=it()[t];if(!r)throw(0,_i.handleHDBError)(new Error,gne.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function WF(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*zF(e,t,r,n){let s,i=0;for await(let a of e.getHistory(t,r)){let c=a.operation??a.type;c==="put"&&(c="upsert");let{id:l,version:u,value:d}=a;if(s?.timestamp===u)s.hash_values.push(l),s.records.push(d);else{if(s&&(yield s,i++,n&&n<=i)){s=void 0;break}s={operation:c,user_name:a.user,timestamp:u,hash_values:[l],records:[d]}}}s&&(yield s)}var jF,Dg,_i,JF,rI,nI,QF,XF,gne,Sne,Tne,Rne,sI,eH=fe(()=>{jF=w(qF()),Dg=w(ad()),_i=w(_e());De();JF=w(eh());H();rI=w(Ho()),nI=w(hi()),QF=w(se());tl();tI();XF=w(z()),{HDB_ERROR_MSGS:gne}=_i.hdbErrors,Sne="data",Tne=1e4,Rne=10,sI=class extends jF.default{static{o(this,"ResourceBridge")}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);for(let a of t.conditions||[])a?.attribute!==void 0&&(a.search_attribute=a.attribute),a?.comparator!==void 0&&(a.search_type=a.comparator),a?.value!==void 0&&(a.search_value=a.value);let r=(0,Dg.default)(t,"conditions");if(r)throw(0,_i.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=zi(t);if(!n)throw new _i.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(a){if("conditions"in a&&a.conditions)return a.conditions=a.conditions.map(i),a;{let c=a;return{attribute:c.search_attribute??c.attribute,comparator:c.search_type??c.comparator,value:c.search_value!==void 0?c.search_value:c.value}}}return o(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:iI(t,n),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let a of n)a.is_primary_key?(a.isPrimaryKey=!0,delete a.is_primary_key):a.name===i&&i&&(a.isPrimaryKey=!0);else{if(!i)throw new _i.ClientError("A primary key must be specified with a `primary_key` property or with `attributes`");n=[{name:i,isPrimaryKey:!0},{name:"__createdtime__",indexed:!0},{name:"__updatedtime__",indexed:!0}]}et({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await zi(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=zi(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=o((a,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(a,l,()=>r.primaryStore.put(a,c,l)).then(u=>{if(!u){let{value:d,version:f}=r.primaryStore.getEntry(a);return i(a,d,f)}})),"deleteRecord");for(let{key:a,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(a,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){return zi(t).dropTable()}createSchema(t){return ud({database:t.schema,table:null}),rI.signalSchemaChange(new nI.SchemaEventMsg(process.pid,q.CREATE_SCHEMA,t.schema))}async dropSchema(t){await oI(t.schema),rI.signalSchemaChange(new nI.SchemaEventMsg(process.pid,q.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,this.upsertRecords(t)}async upsertRecords(t){let{schemaTable:r,attributes:n}=(0,JF.default)(t),s,i=it()[t.schema][t.table],a={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(a.replicateTo=t.replicateTo),t.replicatedConfirmation&&(a.replicatedConfirmation=t.replicatedConfirmation),Mt(a,async c=>{if(!i.schemaDefined){s=[];for(let d of n)i.attributes.find(m=>m.name==d)||s.push(d);s.length>0&&await i.addAttributes(s.map(d=>({name:d,indexed:!0})))}let l=[],u=[];for(let d of t.records){let f=d[i.primaryKey],m=f!=null&&await i.get(f,a);if(t.requires_existing&&!m||t.requires_no_existing&&m){u.push(d[i.primaryKey]);continue}m&&(m=Pg(m));for(let h in d)if(Object.prototype.hasOwnProperty.call(d,h)){let p=d[h];if(typeof p=="function")try{let E=p([[m]]);Array.isArray(E)&&(p=E[0].func_val,d[h]=p)}catch(E){throw E.message+="Trying to set key "+h+" on object"+JSON.stringify(d),E}}if(m)for(let h in m)Object.prototype.hasOwnProperty.call(d,h)||(d[h]=m[h]);await(f==null?i.create(d,a):i.put(d,a)),l.push(d[i.primaryKey])}return{txn_time:c.timestamp,written_hashes:l,new_attributes:s,skipped_hashes:u}})}async deleteRecords(t){let r=it()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),Mt(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),a=[],c=[];for(let l of i)await r.delete(l,n)?a.push(l):c.push(l);return WF(a,c,s.timestamp)})}async deleteRecordsBefore(t){let r=it()[t.schema][t.table];if(!r.createdTimeProperty)throw new _i.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:cE.LESS}]}),s=!1,i=[],a=[],c=0,l=[],u=o(async()=>{let d=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...d.deleted_hashes),a.push(...d.skipped_hashes),await(0,QF.asyncSetTimeout)(Rne),l=[],s=!0},"chunkDelete");for await(let d of n)l.push(d[r.primaryKey]),c++,c%Tne===0&&await u();return l.length>0&&await u(),s?WF(i,a,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,Dg.default)(t,"hashes");if(r)throw r;return YF(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of YF(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&UA[r]===void 0)throw new Error(`Value search comparator - ${r} - is not valid`);t.select!==void 0&&(t.get_attributes=t.select),t.attribute!==void 0&&(t.search_attribute=t.attribute),t.value!==void 0&&(t.search_value=t.value);let n=(0,Dg.default)(t,"value");if(n)throw n;let s=zi(t);if(!s)throw new _i.ClientError(`Table ${t.table} not found`);let i=t.search_value;i.includes?.("*")&&(i.startsWith("*")?i.endsWith("*")?i!=="*"&&(r="contains",i=i.slice(1,-1)):(r="ends_with",i=i.slice(1)):i.endsWith("*")&&(r="starts_with",i=i.slice(0,-1))),r===cE.BETWEEN&&(i=[i,t.end_value]);let a=i==="*"?[]:[{attribute:t.search_attribute,value:i,comparator:r}];return s.search({conditions:a,allowFullScan:!0,limit:t.limit,offset:t.offset,reverse:t.reverse,sort:t.sort,select:iI(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=zi(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){zi({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return zi(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=zi(t),n={};switch(t.search_type){case lE.HASH_VALUE:for(let s of t.search_values)n[s]=(await r.getHistoryOfRecord(s)).map(i=>{let a=i.operation??i.type;return a==="put"&&(a="upsert"),{operation:a,timestamp:i.version,user_name:i.user,hash_values:[s],records:[i.value]}});return n;case lE.USERNAME:{let s=t.search_values;for await(let i of zF(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n}default:return zF(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};o(iI,"getSelect");o(YF,"getRecords");o(zi,"getTable");o(WF,"createDeleteResponse");o(zF,"groupRecordsInHistory")});var ss=M((GLe,tH)=>{"use strict";var{ResourceBridge:yne}=(eH(),v(ZF)),Ane=ae();Ane.initSync();var Lg;function bne(){return Lg||(Lg=new yne,Lg)}o(bne,"getBridge");tH.exports=bne()});var iH=M((VLe,sH)=>{"use strict";var rH=require("lodash"),ph=require("mathjs"),Nne=require("jsonata"),nH=se();sH.exports={distinct_array:o(e=>Array.isArray(e)&&e.length>1?rH.uniqWith(e,rH.isEqual):e,"distinct_array"),searchJSON:Ine,mad:_h.bind(null,ph.mad),mean:_h.bind(null,ph.mean),mode:_h.bind(null,ph.mode),prod:_h.bind(null,ph.prod),median:_h.bind(null,ph.median)};function _h(e,t,r,n){return n===1?t==null?[]:[t]:n===2?(t!=null&&r.push(t),r):r!=null&&r.length>0?e(r):null}o(_h,"aggregateFunction");function Ine(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(nH.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),nH.isEmpty(this.__ala__.res[r])){let n=Nne(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}o(Ine,"searchJSON")});var aH=M((YLe,oH)=>{"use strict";var cr=require("moment"),aI="YYYY-MM-DDTHH:mm:ss.SSSZZ";cr.suppressDeprecationWarnings=!0;oH.exports={current_date:o(()=>cr().utc().format("YYYY-MM-DD"),"current_date"),current_time:o(()=>cr().utc().format("HH:mm:ss.SSS"),"current_time"),extract:o((e,t)=>{switch(t.toLowerCase()){case"year":return cr(e).utc().format("YYYY");case"month":return cr(e).utc().format("MM");case"day":return cr(e).utc().format("DD");case"hour":return cr(e).utc().format("HH");case"minute":return cr(e).utc().format("mm");case"second":return cr(e).utc().format("ss");case"millisecond":return cr(e).utc().format("SSS");default:break}},"extract"),date:o(e=>cr(e).utc().format(aI),"date"),date_format:o((e,t)=>cr(e).utc().format(t),"date_format"),date_add:o((e,t,r)=>cr(e).utc().add(t,r).valueOf(),"date_add"),date_sub:o((e,t,r)=>cr(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:o((e,t,r)=>{let n=cr(e).utc(),s=cr(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:o(()=>cr().utc().valueOf(),"now"),get_server_time:o(()=>cr().format(aI),"get_server_time"),offset_utc:o((e,t)=>cr(e).utc().utcOffset(t).format(aI),"offset_utc")}});var dH=M((zLe,uH)=>{"use strict";var wne=require("@turf/area"),One=require("@turf/length"),Cne=require("@turf/circle"),Pne=require("@turf/difference"),Dne=require("@turf/distance"),Lne=require("@turf/boolean-contains"),Mne=require("@turf/boolean-equal"),vne=require("@turf/boolean-disjoint"),Une=require("@turf/helpers"),cH=(H(),v($)),Ye=se(),Go=z();uH.exports={geoArea:xne,geoLength:Bne,geoCircle:Fne,geoDifference:Hne,geoDistance:lH,geoNear:kne,geoContains:qne,geoEqual:Gne,geoCrosses:$ne,geoConvert:Vne};function xne(e){if(Ye.isEmpty(e))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return wne.default(e)}catch(t){return Go.trace(t,e),NaN}}o(xne,"geoArea");function Bne(e,t){if(Ye.isEmpty(e))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return One.default(e,{units:t||"kilometers"})}catch(r){return Go.trace(r,e),NaN}}o(Bne,"geoLength");function Fne(e,t,r){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e));try{return Cne.default(e,t,{units:r||"kilometers"})}catch(n){return Go.trace(n,e,t),NaN}}o(Fne,"geoCircle");function Hne(e,t){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Pne(e,t)}catch(r){return Go.trace(r,e,t),NaN}}o(Hne,"geoDifference");function lH(e,t,r){if(Ye.isEmpty(e))return NaN;if(Ye.isEmpty(t))return NaN;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Dne.default(e,t,{units:r||"kilometers"})}catch(n){return Go.trace(n,e,t),NaN}}o(lH,"geoDistance");function kne(e,t,r,n){if(Ye.isEmpty(e)||Ye.isEmpty(t))return!1;if(Ye.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return lH(e,t,n)<=r}catch(s){return Go.trace(s,e,t),!1}}o(kne,"geoNear");function qne(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Lne.default(e,t)}catch(r){return Go.trace(r,e,t),!1}}o(qne,"geoContains");function Gne(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return Mne.default(e,t)}catch(r){return Go.trace(r,e,t),!1}}o(Gne,"geoEqual");function $ne(e,t){if(Ye.isEmpty(e)||Ye.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ye.autoCastJSON(e)),typeof t=="string"&&(t=Ye.autoCastJSON(t));try{return!vne.default(e,t)}catch(r){return Go.trace(r,e,t),!1}}o($ne,"geoCrosses");function Vne(e,t,r){if(Ye.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ye.isEmpty(t))throw new Error("geo_type is required");if(Ye.isEmpty(cH.GEO_CONVERSION_ENUM[t]))throw new Error(`geoType of ${t} is invalid please use one of the following types: ${Object.keys(cH.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ye.autoCastJSON(e)),Une[t](e,r)}o(Vne,"geoConvert")});var Mg=M((JLe,fH)=>{var Nl=iH(),is=aH(),ji=dH();fH.exports=e=>{e.aggr.mad=e.aggr.MAD=Nl.mad,e.aggr.mean=e.aggr.MEAN=Nl.mean,e.aggr.mode=e.aggr.MODE=Nl.mode,e.aggr.prod=e.aggr.PROD=Nl.prod,e.aggr.median=e.aggr.MEDIAN=Nl.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Nl.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Nl.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=is.current_date,e.fn.current_time=e.fn.CURRENT_TIME=is.current_time,e.fn.extract=e.fn.EXTRACT=is.extract,e.fn.date=e.fn.DATE=is.date,e.fn.date_format=e.fn.DATE_FORMAT=is.date_format,e.fn.date_add=e.fn.DATE_ADD=is.date_add,e.fn.date_sub=e.fn.DATE_SUB=is.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=is.date_diff,e.fn.now=e.fn.NOW=is.now,e.fn.offset_utc=e.fn.OFFSET_UTC=is.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=is.get_server_time,e.fn.getdate=e.fn.GETDATE=is.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=is.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=ji.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=ji.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=ji.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=ji.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=ji.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=ji.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=ji.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=ji.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=ji.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=ji.geoNear}});var _H=M((QLe,pH)=>{"use strict";var Eh=require("lodash"),Hn=require("alasql");Hn.options.cache=!1;var Kne=Mg(),mH=require("clone"),vg=require("recursive-iterator"),ke=z(),tt=se(),dd=ss(),Yne=(H(),v($)),{hdbErrors:Wne}=_e(),{getDatabases:hH}=(De(),v(at)),zne="IS NULL",Ei="There was a problem performing this search. Please check the logs and try again.";Kne(Hn);var cI=class{static{o(this,"SQLSearch")}constructor(t,r){if(tt.isEmpty(t))throw ke.error("AST statement for SQL select process cannot be empty"),"statement cannot be null";this.statement=t,this.columns={},this.all_table_attributes=r,this.fetch_attributes=[],this.exact_search_values={},this.comparator_search_values={},this.tables=[],this.data={},this.has_aggregator=!1,this.has_ordinal=!1,this.has_outer_join=!1,this._getColumns(),this._getTables(),this._conditionsToFetchAttributeValues(),this._setAliasesForColumns(),tt.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!tt.isEmptyOrZeroLength(n))return ke.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw ke.error("Error thrown from checkEmptySQL in SQLSearch class method search."),ke.error(n),new Error(Ei)}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(Ei)}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(Ei)}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(Ei)}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(Ei)}}_getColumns(){let t=new vg(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(mH(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Eh.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=hH()[r.databaseid][r.tableid].primaryKey,this.data[n].__mergedData={},this.data[n].__mergedAttributes=[],this.data[n].__mergedAttrMap={}})}_conditionsToFetchAttributeValues(){if(tt.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new vg(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!tt.isEmpty(r)&&r.right)if(tt.isNotEmptyAndHasValue(r.right.value)){let n=tt.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new Hn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=tt.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new Hn.yy.LogicValue({value:i}):n instanceof Hn.yy.StringValue&&tt.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Hn.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 vg(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let n=new Set,s=r.left.columnid?r.left:r.right,i=this._findColumn(s);if(!i)continue;let a=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!tt.isEmpty(Yne.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(tt.isEmpty(this.comparator_search_values[a])&&(this.comparator_search_values[a]={ignore:!1,comparators:[]}),!this.comparator_search_values[a].ignore){if(tt.isEmptyOrZeroLength(r.left.columnid)||tt.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[a].ignore=!0,this.comparator_search_values[a].comparators=[];continue}this.comparator_search_values[a].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(tt.isEmpty(this.exact_search_values[a])&&(this.exact_search_values[a]={ignore:!1,values:new Set}),!this.exact_search_values[a].ignore){let c=!1;switch(r.op){case"=":!tt.isEmpty(r.right.value)||!tt.isEmpty(r.left.value)?n.add(tt.isEmpty(r.right.value)?r.left.value:r.right.value):c=!0;break;case"IN":let l=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<l.length;u++)if(l[u].value)n.add(l[u].value);else{c=!0;break}break;default:c=!0;break}this.exact_search_values[a].ignore=c,c?this.exact_search_values[a].values=new Set:this.exact_search_values[a].values=new Set([...this.exact_search_values[a].values,...n])}}}_setAliasesForColumns(){if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&tt.isEmptyOrZeroLength(this.statement.from)&&tt.isEmptyOrZeroLength(this.columns.columns))return;let t=[],r={};this.statement.columns.forEach((n,s)=>{if(n.columnid==="*"){t.push(s);return}if(n.aggregatorid&&(this.has_aggregator=!0),!n.aggregatorid&&!n.funcid)if(n.as_orig=n.as?n.as:n.columnid,this.statement.joins)if(r[n.as_orig]>=0){let i=r[n.as_orig]+1;n.as=`[${n.as_orig+i}]`,r[n.as_orig]=i}else n.as=`[${n.as_orig}]`,r[n.as_orig]=0;else n.as=`[${n.as_orig}]`;!n.aggregatorid&&n.funcid&&n.args&&(n.as_orig=n.as?n.as:n.toString().replace(/'/g,'"'),n.as=`[${n.as_orig}]`),n.aggregatorid&&n.expression.columnid!=="*"&&(n.as_orig=n.as?n.as:n.expression.tableid?`${n.aggregatorid}(${n.expression.tableid}.${n.expression.columnid})`:`${n.aggregatorid}(${n.expression.columnid})`,n.as=`[${n.as_orig}]`)}),this.statement.columns.length>1&&t.length>0&&Eh.pullAt(this.statement.columns,t)}_findColumn(t){let r=this.all_table_attributes.filter(n=>{if(t.columnid_orig&&t.tableid_orig)return(n.table.as===t.tableid_orig||n.table.tableid===t.tableid_orig)&&n.attribute===t.columnid_orig;if(t.tableid)return(n.table.as===t.tableid||n.table.tableid===t.tableid)&&n.attribute===t.columnid;let s=t.columnid_orig?t.columnid_orig:t.columnid;return n.attribute===s});if(tt.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);tt.isEmptyOrZeroLength(n)||(r=this.all_table_attributes.filter(s=>s.attribute===n[0].columnid&&n[0].tableid&&n[0].tableid===(s.table.as?s.table.as:s.table.tableid)))}return r[0]}async _checkEmptySQL(){let t=[];if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&!tt.isEmptyOrZeroLength(this.columns.columns))return t;if(tt.isEmptyOrZeroLength(this.all_table_attributes)&&tt.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await Hn.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(mH(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__mergedAttributes.push(r),this.data[t].__mergedAttrMap[r]=this.data[t].__mergedAttributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__mergedData[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__mergedAttrMap[n];this.data[t].__mergedData[r].splice(i,1,s)}async _getFetchAttributeValues(){if(tt.isEmptyOrZeroLength(Object.keys(this.columns)))return[];this._addFetchColumns(this.columns.joins);let t=null;try{t=this.statement.where?this.statement.where.toString():""}catch{throw new Error("Could not generate proper where clause")}this.columns.where&&this._addFetchColumns(this.columns.where);let r=this._isSimpleSelect();if(r?this._addFetchColumns(this.columns.columns):(!this.columns.where&&this.fetch_attributes.length===0)|t.indexOf(zne)>-1&&this.tables.forEach(s=>{let i={columnid:hH()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=Eh.uniqBy(this.fetch_attributes,s=>[s.table.databaseid,s.table.as?s.table.as:s.table.tableid,s.attribute].join()),r)return await this._simpleSQLQuery();let n=this.fetch_attributes.reduce((s,i)=>{let a=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[a].__hashName;return s[a]||(s[a]=[],s[a].push(null),this._addColumnToMergedAttributes(a,c)),i.attribute!==c&&(s[a].push(null),this._addColumnToMergedAttributes(a,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,a=this.data[i].__hashName,c={schema:s.table.databaseid,table:s.table.tableid,get_attributes:[s.attribute]},l=!1,u=[s.table.databaseid,s.table.tableid,s.attribute].join("/");if(s.attribute===a&&(l=!0),!tt.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!tt.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let d=await dd.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(Ei)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async d=>{let f={...c};f.search_value=d;let m=await dd.getDataByValue(f);for(let[h,p]of m)this.data[i].__mergedData[h]?this._updateMergedAttribute(i,h,s.attribute,p[s.attribute]):(this.data[i].__mergedData[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,p[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(d){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(d),new Error(Ei)}else if(!tt.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!tt.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let d=this.comparator_search_values[u].comparators;for(let f=0,m=d.length;f<m;f++){let h=d[f];c.search_attribute=h.attribute,c.search_value=h.search_value;let p=await dd.getDataByValue(c,h.operation);if(l)for(let[E]of p)this.data[i].__mergedData[E]||(this.data[i].__mergedData[E]=[...n[i]],this._setMergedHashAttribute(i,E));else for(let[E,g]of p)this.data[i].__mergedData[E]?this._updateMergedAttribute(i,E,s.attribute,g[s.attribute]):(this.data[i].__mergedData[E]=[...n[i]],this._updateMergedAttribute(i,E,s.attribute,g[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(Ei)}else try{c.search_attribute=s.attribute,c.search_value="*";let d=await dd.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(Ei)}}}_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 Hn.yy.Column||(t=!1)}),t)}_updateOrderByToAliases(){this.statement.order.forEach(t=>{if(t.expression.aggregatorid){t.is_aggregator=!0;return}if(t.expression.value){t.is_ordinal=!0,this.has_ordinal=!0;return}else t.is_ordinal=!1;let r=this.statement.columns.filter(s=>{let i=s.aggregatorid?s.expression:s,a=s.aggregatorid?s.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===a});r[0]||r.push(this._findColumn(t.expression));let n=r[0];if(t.is_func=!!n.funcid,t.is_aggregator=!!n.aggregatorid,n.as)if(n.as&&!t.expression.tableid)t.expression.columnid=n.as,t.expression.columnid_orig=n.as_orig;else{let s=new Hn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Hn.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 Hn.yy.FuncValue:new Hn.yy.Column;t.initial_select_column=Object.assign(s,n)}})}_addNonAggregatorsToFetchColumns(){let r=this.statement.order.filter(n=>!n.is_aggregator&&!n.is_ordinal).map(n=>n.is_func?{columnid:n.initial_select_column.args.filter(i=>!!i.columnid_orig)[0].columnid_orig}:{columnid:n.expression.columnid_orig});this._addFetchColumns(r)}async _processJoins(){let t=[],r=[],n=this.statement.from[0],s=[n],i=["? "+(n.as?" AS "+n.as:n.tableid)];t.push(Object.values(this.data[`${n.databaseid_orig}_${n.as?n.as_orig:n.tableid_orig}`].__mergedData)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let p=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(p+=" ON "+h.on.toString()),i.push(p),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__mergedData))});let a=[],c={};s.forEach(h=>{let p=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hashName,E=h.as?h.as_orig:h.tableid_orig;a.push({key:`'${E}.${p}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${p}\` AS "${E}.${p}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__mergedAttributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(h=>{h.is_func?r.push(h.initial_select_column.toString()):h.initial_select_column.tableid?r.push(`${h.initial_select_column.tableid}.${h.initial_select_column.columnid} AS ${h.expression.columnid}`):r.push(`${h.initial_select_column.columnid} AS ${h.expression.columnid}`)}));let d="",f="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(d=this.statement.limit?"LIMIT "+this.statement.limit:"",f=this.statement.offset?"OFFSET "+this.statement.offset:"");let m=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${d} ${f}`,p=this._convertColumnsToIndexes(h,s);m=await Hn.promise(p,t),t=null}catch(h){throw ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),ke.error(h),new Error("There was a problem processing the data.")}if(m&&m.length>0){for(let h=0,p=m.length;h<p;h++){let E=m[h];a.forEach(g=>{E[g.key]!==null&&E[g.key]!==void 0&&g.keys.add(E[g.key])})}a.forEach(h=>{let p=Object.keys(this.data[`${h.schema}_${h.table}`].__mergedData),E=Eh.difference(p,[...h.keys].map(g=>g.toString()));for(let g=0,y=E.length;g<y;g++){let T=E[g];delete this.data[`${h.schema}_${h.table}`].__mergedData[T]}})}return{existing_attributes:c,joined_length:m?m.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new vg(this.columns);for(let{node:i}of s)if(i&&i.columnid){let a=this._findColumn(i);if(a){let c=a.table.as?a.table.as:a.table.tableid;(!t[c]||t[c].indexOf(a.attribute)<0)&&n.push(a)}}n=Eh.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(Ei)}}async _getData(t){try{let r=t.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]?n[i].columns.push(s.attribute):n[i]={schema:s.table.databaseid,table:s.table.tableid,columns:[s.attribute]},n},{});for(let n in r){let s=r[n],i=this.data[n].__mergedData,a=[];for(let d in i)a.push(i[d][0]);this.data[n].__mergedAttributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:a,get_attributes:s.columns},l=await dd.getDataByHash(c),u=s.columns.length;for(let d=0,f=a.length;d<f;d++){let m=a[d],h=l.get(m);for(let p=0;p<u;p++){let E=s.columns[p],g=h[E]===void 0?null:h[E];this.data[n].__mergedData[m].push(g)}}}}catch(r){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__mergedData)),r.as=r.as?r.as:r.tableid,r.databaseid="",r.tableid="?",this.statement.joins&&this.statement.joins.forEach(s=>{s.as=s.as?s.as:s.table.tableid,t.push(Object.values(this.data[`${s.table.databaseid_orig}_${s.table.as?s.table.as_orig:s.table.tableid_orig}`].__mergedData)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(a=>{let c=a.aggregatorid?a.expression:a,l=a.aggregatorid?a.as_orig:c.as_orig;return s.expression.tableid?c.columnid_orig===s.expression.columnid_orig&&c.tableid_orig===s.expression.tableid_orig:c.columnid_orig===s.expression.columnid_orig||s.expression.columnid_orig===l}).length===0&&(s.expression.columnid=s.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&this.statement.limit&&!this.statement.joins&&(delete this.statement.limit,delete this.statement.offset);let n;try{let s=this._buildSQL();ke.trace(`Final SQL: ${s}`),n=await Hn.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(Wne.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),ke.trace(r.stack),t}}_buildSQL(t=!0){let r=this.statement.toString();return r=r.replace(/NOT\(NULL\)/g,"NOT NULL"),this.statement.columns.forEach(n=>{if(n.funcid&&n.as){let s=n.toString().replace(" AS "+n.as,"");r=r.replace(n.toString(),s)}}),t===!0?this._convertColumnsToIndexes(r,this.tables):r}_convertColumnsToIndexes(t,r){let n=t,s={};r.forEach(i=>{i.databaseid_orig?s[`${i.databaseid_orig}_${i.as?i.as_orig:i.tableid_orig}`]=i.as?i.as:i.tableid:s[`${i.databaseid}_${i.as?i.as:i.tableid}`]=`\`${i.as?i.as:i.tableid}\``});for(let i in this.data)this.data[i].__mergedAttributes.forEach((a,c)=>{let l=s[i],u=new RegExp(`${l}.\`${a}\``,"g"),d=`${l}.[${c}]`;n=n.replace(u,d)});for(let i in this.data)this.data[i].__mergedAttributes.forEach((a,c)=>{let l=new RegExp(`\`${a}\``,"g"),u=`[${c}]`;n=n.replace(l,u)});return n}async _simpleSQLQuery(){let t=this.statement.columns.reduce((n,s)=>(s.as_orig&&s.as_orig!=s.columnid_orig?n[s.columnid_orig]=s.as_orig:n[s.columnid_orig]||(n[s.columnid_orig]=s.columnid_orig),n),{}),r=this.fetch_attributes.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]||(n[i]={}),n[i][t[s.attribute]]=null,n},{});for(let n of this.fetch_attributes){let s=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,i={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]};try{i.search_attribute=n.attribute,i.search_value="*";let a=await dd.getDataByValue(i);for(let[c,l]of a)this.data[s].__mergedData[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__mergedData[c]={...r[s]}),this.data[s].__mergedData[c][t[n.attribute]]=l[n.attribute]??null}catch(a){throw ke.error("There was an error when processing this SQL operation. Check your logs"),ke.error(a),new Error(Ei)}}return Object.values(Object.values(this.data)[0].__mergedData)}};pH.exports=cI});var an=M((ZLe,EH)=>{"use strict";var jne=u0();EH.exports={searchByConditions:Qne,searchByHash:Xne,searchByValue:Zne,search:ese};var lI=ss(),{transformReq:uI}=se(),Jne=_H();async function Qne(e){return uI(e),lI.searchByConditions(e)}o(Qne,"searchByConditions");async function Xne(e){uI(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of lI.searchByHash(e))r&&t.push(r);return t}o(Xne,"searchByHash");async function Zne(e){uI(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of lI.searchByValue(e))t.push(r);return t}o(Zne,"searchByValue");function ese(e,t){try{let r=new jne(e);r.validate(),new Jne(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}o(ese,"search")});var Ji=M((tMe,RH)=>{"use strict";var gh=require("crypto"),tse=ae(),{CONFIG_PARAMS:rse}=(H(),v($)),SH="aes-256-cbc",nse=32,sse=16,dI=64,TH=32,ise=dI+TH,gH=new Map;RH.exports={encrypt:ose,decrypt:ase,createNatsTableStreamName:cse};function ose(e){let t=gh.randomBytes(nse),r=gh.randomBytes(sse),n=gh.createCipheriv(SH,Buffer.from(t),r),s=n.update(e);s=Buffer.concat([s,n.final()]);let i=t.toString("hex"),a=r.toString("hex"),c=s.toString("hex");return i+a+c}o(ose,"encrypt");function ase(e){let t=e.substr(0,dI),r=e.substr(dI,TH),n=e.substr(ise,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),a=gh.createDecipheriv(SH,Buffer.from(t,"hex"),s),c=a.update(i);return c=Buffer.concat([c,a.final()]),c.toString()}o(ase,"decrypt");function cse(e,t){let r=tse.get(rse.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=gH.get(r);return n||(n=gh.createHash("md5").update(r).digest("hex"),gH.set(r,n)),n}o(cse,"createNatsTableStreamName")});var ja=M((sMe,NH)=>{"use strict";var nMe=an(),Sh=z(),{validateBySchema:yH}=lt(),Il=require("joi"),lse=Ji(),Ug=se(),{handleHDBError:xg,hdbErrors:use,ClientError:AH}=_e(),{HDB_ERROR_MSGS:Bg,HTTP_STATUS_CODES:fI}=use,bH=ae();bH.initSync();var{getDatabases:mI}=(De(),v(at)),dse=require("fs-extra"),fse=(H(),v($));NH.exports={describeAll:mse,describeTable:Fg,describeSchema:hse};async function mse(e={}){try{let t=Ug.isEmptyOrZeroLength(e),r=!!e.bypass_auth,n,s;!t&&!r&&(n=e.hdb_user?.role?.permission,s=n?.super_user||n?.cluster_user);let i=mI(),a={},c={},l=[],u=e?.exact_count;for(let f in i){a[f]=!0,!t&&!s&&!r&&(c[f]=e.hdb_user?.role?.permission[f]?.describe);let m=i[f];for(let h in m)try{let p;if(t||s||r)p=await Fg({schema:f,table:h,exactCount:u});else if(n&&n[f].describe&&n[f].tables[h].describe){let E=n[f].tables[h].attribute_permissions;p=await Fg({schema:f,table:h,exactCount:u},E)}p&&l.push(p)}catch(p){Sh.error(p)}}let d={};for(let f in l)t||s||r?(d[l[f].schema]==null&&(d[l[f].schema]={}),d[l[f].schema][l[f].name]=l[f],a[l[f].schema]&&delete a[l[f].schema]):c[l[f].schema]&&(d[l[f].schema]==null&&(d[l[f].schema]={}),d[l[f].schema][l[f].name]=l[f],a[l[f].schema]&&delete a[l[f].schema]);for(let f in a)t||s||r?d[f]={}:c[f]&&(d[f]={});return d}catch(t){return Sh.error("Got an error in describeAll"),Sh.error(t),xg(new Error,Bg.DESCRIBE_ALL_ERR)}}o(mse,"describeAll");async function Fg(e,t){Ug.transformReq(e);let{schema:r,table:n}=e;r=r?.toString(),n=n?.toString();let s=t;e.hdb_user&&!e.hdb_user?.role?.permission?.super_user&&(s=e.hdb_user?.role?.permission[r]?.tables[n]?.attribute_permissions);let i=yH(e,Il.object({database:Il.string(),table:Il.string().required(),exact_count:Il.boolean().strict()}));if(i)throw new AH(i.message);let c=mI()[r];if(!c)throw xg(new Error,Bg.SCHEMA_NOT_FOUND(e.schema),fI.NOT_FOUND);let l=c[n];if(!l)throw xg(new Error,Bg.TABLE_NOT_FOUND(e.schema,e.table),fI.NOT_FOUND);function u(h){d.push({attribute:h.attribute,type:h.type,elements:h.elements?.type,indexed:h.indexed,is_primary_key:h.isPrimaryKey,assigned_created_time:h.assignCreatedTime,assigned_updated_time:h.assignUpdatedTime,nullable:h.nullable,properties:h.properties?h.properties.map(p=>({type:p.type,name:p.name})):void 0})}o(u,"pushAtt");let d=[];if(s){let h={};s.forEach(p=>{p.describe&&(h[p.attribute_name]=!0)}),l.attributes.forEach(p=>{h[p.name]&&u(p)})}else l.attributes?.forEach(h=>u(h));let f;try{f=(await dse.stat(l.primaryStore.env.path)).size}catch(h){Sh.warn("unable to get database size",h)}let m={schema:r,name:l.tableName,hash_attribute:l.attributes.find(h=>h.isPrimaryKey||h.is_hash_attribute)?.name,audit:l.audit,schema_defined:l.schemaDefined,attributes:d,db_size:f};l.replicate!==void 0&&(m.replicate=l.replicate),l.expirationMS!==void 0&&(m.expiration=l.expirationMS/1e3+"s"),l.sealed!==void 0&&(m.sealed=l.sealed),l.sources?.length>0&&(m.sources=l.sources.map(h=>h.name).filter(h=>h&&h!=="NATSReplicator"&&h!=="Replicator")),bH.get(fse.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(m.clustering_stream_name=lse.createNatsTableStreamName(m.schema,m.name));try{let h=await l.getRecordCount({exactCount:!!e.exact_count});m.record_count=h.recordCount,m.table_size=l.getSize(),m.db_audit_size=l.getAuditSize(),m.estimated_record_range=h.estimatedRange;let p=l.auditStore;if(p)for(let E of p.getKeys({reverse:!0,limit:1}))m.last_updated_record=E[0];if(!m.last_updated_record&&l.indices.__updatedtime__)for(let E of l.indices.__updatedtime__.getKeys({reverse:!0,limit:1}))m.last_updated_record=E}catch(h){Sh.warn(`unable to stat table dbi due to ${h}`)}return m}o(Fg,"descTable");async function hse(e){Ug.transformReq(e);let t=yH(e,Il.object({database:Il.string(),exact_count:Il.boolean().strict()}));if(t)throw new AH(t.message);let r;e.hdb_user&&!e.hdb_user?.role?.permission?.super_user&&(r=e.hdb_user?.role?.permission[e.schema]);let n=e.schema.toString(),i=mI()[n];if(!i)throw xg(new Error,Bg.SCHEMA_NOT_FOUND(e.schema),fI.NOT_FOUND);let a={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),Ug.isEmpty(l)||l.describe){let u=await Fg({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(a[u.name]=u)}}return a}o(hse,"describeSchema")});var kn=M((oMe,CH)=>{"use strict";var kg=_N(),Yr=se(),pse=require("util"),qg=ss(),_se=Us(),IH=z(),{handleHDBError:wl,hdbErrors:Ese}=_e(),{HTTP_STATUS_CODES:Ol}=Ese,gse=pse.promisify(_se.getTableSchema),Sse="updated",wH="inserted",OH="upserted";CH.exports={insert:Rse,update:yse,upsert:Ase,validation:Tse,flush:bse};async function Tse(e){if(Yr.isEmpty(e))throw new Error("invalid update parameters defined.");if(Yr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(Yr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await gse(e.schema,e.table),r=kg(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let n=t.hash_attribute,s=new Set,i={},a=!1;return e.operation==="update"&&(a=!0),e.records.forEach(c=>{if(a&&Yr.isEmptyOrZeroLength(c[n]))throw IH.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(!Yr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw IH.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!Yr.isEmpty(c[n])&&c[n]!==""&&s.has(Yr.autoCast(c[n]))&&(c.skip=!0),s.add(Yr.autoCast(c[n]));for(let l in c)i[l]=1}),i[n]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(i)}}o(Tse,"validation");async function Rse(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=kg(e);if(t)throw wl(new Error,t.message,Ol.BAD_REQUEST);Yr.transformReq(e);let r=Yr.checkSchemaTableExist(e.schema,e.table);if(r)throw wl(new Error,r,Ol.BAD_REQUEST);let n=await qg.createRecords(e);return Hg(wH,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}o(Rse,"insertData");async function yse(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=kg(e);if(t)throw wl(new Error,t.message,Ol.BAD_REQUEST);Yr.transformReq(e);let r=Yr.checkSchemaTableExist(e.schema,e.table);if(r)throw wl(new Error,r,Ol.BAD_REQUEST);let n=await qg.updateRecords(e);return Yr.isEmpty(n.existing_rows)?Hg(Sse,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):Hg(n.update_action,[],e,n.hashes,void 0,n.txn_time)}o(yse,"updateData");async function Ase(e){if(e.operation!=="upsert")throw wl(new Error,"invalid operation, must be upsert",Ol.INTERNAL_SERVER_ERROR);let t=kg(e);if(t)throw wl(new Error,t.message,Ol.BAD_REQUEST);Yr.transformReq(e);let r=Yr.checkSchemaTableExist(e.schema,e.table);if(r)throw wl(new Error,r,Ol.BAD_REQUEST);let n=await qg.upsertRecords(e);return Hg(OH,n.written_hashes,e,[],n.new_attributes,n.txn_time)}o(Ase,"upsertData");function Hg(e,t,r,n,s,i){let a={message:`${e} ${t.length} of ${t.length+n.length} records`,new_attributes:s,txn_time:i};return e===wH?(a.inserted_hashes=t,a.skipped_hashes=n,a):e===OH?(a.upserted_hashes=t,a):(a.update_hashes=t,a.skipped_hashes=n,a)}o(Hg,"returnObject");function bse(e){return Yr.transformReq(e),qg.flush(e.schema,e.table)}o(bse,"flush")});var pI=M((cMe,LH)=>{var Nse=lt(),hI=require("joi"),{hdbTable:Ise,hdbDatabase:PH}=Yi(),DH={schema:PH,database:PH,table:Ise},wse={date:hI.date().iso().required()},Ose={timestamp:hI.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};LH.exports=function(e,t){let r=t==="timestamp"?{...DH,...Ose}:{...DH,...wse},n=hI.object(r);return Nse.validateBySchema(e,n)}});var UH=M((lMe,vH)=>{var Cse=lt(),_I=require("joi"),{hdbTable:Pse,hdbDatabase:MH}=Yi(),Dse=_I.object({schema:MH,database:MH,table:Pse,hash_values:_I.array().required(),ids:_I.array()});vH.exports=function(e){return Cse.validateBySchema(e,Dse)}});var TI=M((uMe,xH)=>{"use strict";var EI=class{static{o(this,"InsertObject")}constructor(t,r,n,s,i){this.operation=t,this.schema=r,this.table=n,this.hash_attribute=s,this.records=i}},gI=class{static{o(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,a){this.schema=t,this.table=r,this.search_attribute=n,this.hash_attribute=s,this.get_attributes=i,this.search_value=a}},SI=class{static{o(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};xH.exports={InsertObject:EI,NoSQLSeachObject:gI,DeleteResponseObject:SI}});var Dl=M((fMe,qH)=>{"use strict";var FH=pI(),Lse=UH(),Cl=se(),BH=require("moment"),HH=z(),{promisify:Mse,callbackify:vse}=require("util"),Pl=(H(),v($)),Use=Us(),RI=Mse(Use.getTableSchema),yI=ss(),{DeleteResponseObject:xse}=TI(),{handleHDBError:Ja,hdbErrors:Bse}=_e(),{HDB_ERROR_MSGS:Gg,HTTP_STATUS_CODES:Qa}=Bse,Fse="records successfully deleted",Hse=vse(kH);qH.exports={delete:Hse,deleteRecord:kH,deleteFilesBefore:kse,deleteAuditLogsBefore:qse};async function kse(e){let t=FH(e,"date");if(t)throw Ja(t,t.message,Qa.BAD_REQUEST,void 0,void 0,!0);if(Cl.transformReq(e),!BH(e.date,BH.ISO_8601).isValid())throw Ja(new Error,Gg.INVALID_DATE,Qa.BAD_REQUEST,Pl.LOG_LEVELS.ERROR,Gg.INVALID_DATE,!0);let n=Cl.checkSchemaTableExist(e.schema,e.table);if(n)throw Ja(new Error,n,Qa.NOT_FOUND,Pl.LOG_LEVELS.ERROR,n,!0);let s=await yI.deleteRecordsBefore(e);if(await RI(e.schema,e.table),HH.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}o(kse,"deleteFilesBefore");async function qse(e){let t=FH(e,"timestamp");if(t)throw Ja(t,t.message,Qa.BAD_REQUEST,void 0,void 0,!0);if(Cl.transformReq(e),isNaN(e.timestamp))throw Ja(new Error,Gg.INVALID_VALUE("Timestamp"),Qa.BAD_REQUEST,Pl.LOG_LEVELS.ERROR,Gg.INVALID_VALUE("Timestamp"),!0);let r=Cl.checkSchemaTableExist(e.schema,e.table);if(r)throw Ja(new Error,r,Qa.NOT_FOUND,Pl.LOG_LEVELS.ERROR,r,!0);let n=await yI.deleteAuditLogsBefore(e);return await RI(e.schema,e.table),HH.info(`Finished deleting audit logs before ${e.timestamp}`),n}o(qse,"deleteAuditLogsBefore");async function kH(e){e.ids&&(e.hash_values=e.ids);let t=Lse(e);if(t)throw Ja(t,t.message,Qa.BAD_REQUEST,void 0,void 0,!0);Cl.transformReq(e);let r=Cl.checkSchemaTableExist(e.schema,e.table);if(r)throw Ja(new Error,r,Qa.NOT_FOUND,Pl.LOG_LEVELS.ERROR,r,!0);try{await RI(e.schema,e.table);let n=await yI.deleteRecords(e);return Cl.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${Fse}`),n}catch(n){if(n.message===Pl.SEARCH_NOT_FOUND_MESSAGE){let s=new xse;return s.message=Pl.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}o(kH,"deleteRecord")});var $g={};Ce($g,{HASH_FUNCTION:()=>Ur,hash:()=>NI,validate:()=>II});function AI(e=Rh){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(Th.randomBytes(e)).map(r=>t[r%t.length]).join("")}function NI(e,t=Ur[$H?.toUpperCase()]??Ur.SHA256){return bI[t](e)}function II(e,t,r=Ur[$H?.toUpperCase()]??Ur.SHA256){return e?Gse[r](e,t):!1}var Th,fd,GH,$H,Rh,VH,Ur,bI,Gse,Vg=fe(()=>{Th=w(require("node:crypto")),fd=w(require("argon2")),GH=w(ae());H();$H=(0,GH.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),Rh=16,VH=9,Ur={MD5:"md5",SHA256:"sha256",ARGON2ID:"argon2id"};o(AI,"generateSalt");bI={[Ur.MD5]:(e,t=void 0)=>{t=t??AI(VH);let r=Th.createHash(Ur.MD5).update(e+t).digest("hex");return t+r},[Ur.SHA256]:(e,t=void 0)=>{t=t??AI(Rh);let r=Th.createHash(Ur.SHA256).update(e+t).digest("hex");return t+r},[Ur.ARGON2ID]:async e=>{let t=AI(Rh),r=await fd.hash(e,{type:fd.argon2id,salt:Buffer.from(t)});return t+r}},Gse={[Ur.MD5]:(e,t)=>{let r=e.slice(0,VH);return e===bI[Ur.MD5](t,r)},[Ur.SHA256]:(e,t)=>{let r=e.slice(0,Rh);return e===bI[Ur.SHA256](t,r)},[Ur.ARGON2ID]:async(e,t)=>await fd.verify(e.slice(Rh),t)};o(NI,"hash");o(II,"validate")});var YH=M((_Me,KH)=>{var wI=lt(),cn={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 $se(e){return cn.password.presence=!0,cn.username.presence=!0,cn.role.presence=!0,cn.active.presence=!0,wI.validateObject(e,cn)}o($se,"addUserValidation");function Vse(e){return cn.password.presence=!1,cn.username.presence=!0,cn.role.presence=!1,cn.active.presence=!1,wI.validateObject(e,cn)}o(Vse,"alterUserValidation");function Kse(e){return cn.password.presence=!1,cn.username.presence=!0,cn.role.presence=!1,cn.active.presence=!1,wI.validateObject(e,cn)}o(Kse,"dropUserValidation");KH.exports={addUserValidation:$se,alterUserValidation:Vse,dropUserValidation:Kse}});var bt=M((SMe,zH)=>{"use strict";var{platform:gMe}=require("os"),Yse="nats-server.zip",OI="nats-server",Wse=process.platform==="win32"?`${OI}.exe`:OI,zse=/^[^\s.,*>]+$/,WH="__request__",jse=o(e=>`${e}.${WH}`,"REQUEST_SUBJECT"),Jse={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},Qse={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Xse={HUB:"hub.pid",LEAF:"leaf.pid"},Zse={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},eie={SUCCESS:"success",ERROR:"error"},tie={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},rie={TXN:"txn",MSGID:"msgid"},md={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},nie={[md.ERR]:1,[md.WRN]:2,[md.INF]:3,[md.DBG]:4,[md.TRC]:5},sie={debug:"-D",trace:"-DVV"};zH.exports={NATS_SERVER_ZIP:Yse,NATS_SERVER_NAME:OI,NATS_BINARY_NAME:Wse,PID_FILES:Xse,NATS_CONFIG_FILES:Qse,SERVER_SUFFIX:Zse,NATS_TERM_CONSTRAINTS_RX:zse,REQUEST_SUFFIX:WH,UPDATE_REMOTE_RESPONSE_STATUSES:eie,CLUSTER_STATUS_STATUSES:tie,REQUEST_SUBJECT:jse,SUBJECT_PREFIXES:rie,MSG_HEADERS:Jse,LOG_LEVELS:md,LOG_LEVEL_FLAGS:sie,LOG_LEVEL_HIERARCHY:nie}});var CI=M(ln=>{"use strict";var iie={cert:"-----BEGIN CERTIFICATE-----\rMIIDXDCCAkSgAwIBAgIFNTE4MzQwDQYJKoZIhvcNAQELBQAwXTEXMBUGA1UEAxMO\rSGFycGVyREIsIEluYy4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UE\rBxMGRGVudmVyMRcwFQYDVQQKEw5IYXJwZXJEQiwgSW5jLjAeFw0yMjAzMTEyMzAz\rNDlaFw0yNzAzMTAyMzAzNDlaMF0xFzAVBgNVBAMTDkhhcnBlckRCLCBJbmMuMQsw\rCQYDVQQGEwJVUzELMAkGA1UECBMCQ08xDzANBgNVBAcTBkRlbnZlcjEXMBUGA1UE\rChMOSGFycGVyREIsIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\rAQCsEUlBF8WImS78rCFXVKyntxfrW++4qZ3hGnoD2MHZAuDHyeP/5eGnaE9GQhKc\r4DwG4DGvh0wP2zIYnBfiQ3L2ZtnlDR9ZkKIQYGlVxTUn6T43krhK5nZKqDF43Yg3\rZEvO3cbJBjiKZx0eA2/toehdSsTAHHQx5gTDcggNe2tgoJHYPwi9YF/AxSBZrbgb\ryWlYgtYDmF32ytHP03GUCIdKOFuBPsHTGu4SkdEIdLIqO9oglW1YFH5qZ6NiwApW\rsP+GCuqOwDXXbdjr75iq9Tq/CDrjGFLaTPmvd2Q0qG/BtaCll0ghpG+yIHvt/iQs\rajS+LxEWAnVlGMaDdFErbDUtAgMBAAGjIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYD\rVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4IBAQASR4YW/rPK7PNArHVe9zzM\rb0rKNX/2T9/0nybRhmE/+hdlSgliTAeebmwkUS2APckmekYt/q2ZY2NS65Fo/jjp\rG8TJrtcF4h+ylVqUp0ZXQLFtIsr7r2JZA7hJ6njW6G4DHSZ0gxtECLi4CBlTjzm5\rNmnmIDObvGRTuqmcdAZmXeObbta/He2XIzietukPAYX062pNM+G5XT5UM1eG/Vlp\rN86vjhpyI+ffKy+C60SJqxmKM3ydgN7oLscE7+2wLPN25XqN4W99OwGsp5dTdu/f\r5lPtFayXdJ55e/sNQKmGN+UGLrL05c2MWgjb8U/LFilnupUianceoeSERZmVjzKX\r-----END CERTIFICATE-----\r".replace(/\r/g,`\r
13
13
  `),key:"-----BEGIN RSA PRIVATE KEY-----\rMIIEowIBAAKCAQEArBFJQRfFiJku/KwhV1Ssp7cX61vvuKmd4Rp6A9jB2QLgx8nj\r/+Xhp2hPRkISnOA8BuAxr4dMD9syGJwX4kNy9mbZ5Q0fWZCiEGBpVcU1J+k+N5K4\rSuZ2SqgxeN2IN2RLzt3GyQY4imcdHgNv7aHoXUrEwBx0MeYEw3IIDXtrYKCR2D8I\rvWBfwMUgWa24G8lpWILWA5hd9srRz9NxlAiHSjhbgT7B0xruEpHRCHSyKjvaIJVt\rWBR+amejYsAKVrD/hgrqjsA1123Y6++YqvU6vwg64xhS2kz5r3dkNKhvwbWgpZdI\rIaRvsiB77f4kLGo0vi8RFgJ1ZRjGg3RRK2w1LQIDAQABAoIBAQCEOmh78EOpnGZC\rYBjjHrvrysVD5gvLcfVUtl8Ls7gMB60re1eOIF+PoZZCHKZnDd6zPfiQtj1adg0C\rYnnsM/8VoaZS4gm0b3RLd3ubIQifWhuo40RissY2yxfxlPSH9LhZCY8ojnJG0cTL\resK579E8WCfopjUY33XLqEbN7Ylv39J+DSqInjqV3efJZUa+HqUJ98VxxzodcKMD\rP3bwUU4gHoSSp4pAsOFH5sQhaIWH1IcNjrAwpee2cJQuh4G157RRIuuUpagtaEG/\rXJIiAyBguJyu3JQFnIBQF01N5+omJgXYJ1L0m54543/iIRThmF3zDCDgCyUzmOk+\rH6As9fv1AoGBANOpOtOZLSAScjGsgJamT3ceJ2wCa86g2j8Oxu8lJUmUp5s3tA0v\rBFW5O3S4KR1EXwkLMBUMrfFM8YvzHWxsXBI6XV8azGLvyqPHxr65OhmpGYkGZMXu\rn9okgjkqlewnY2I073gvyK7ppX51UL5y9fF1vlsk+UlW+Rgx/vMHbdcjAoGBANAc\rxRUsxs4QJpbS4zD3JOkHjr24a97TrS3kCybAHUMpR2NrEHPZw9zex0/aphOJUHfL\rIMkOZdpfDqMfxWy4FAEmqBEMkO2SB+h0Wp4P+qp81ax4vGFiB0cD3wtixr11U1tt\rlZ/ZTdv4VDpDFNK1KaplhTDeyuCjeYfS3/GJia9vAoGAcOsAgjBevZR5rXx84WH6\rVO8WUu37u7FenXNxt9VWTinrPMh72uixZFY8nOk+rely1e1NCn3IMko9Ns9NbDFm\r8SaH95vhXArXTYbfxZIlp9jp0YtCqcHDL+p4Oq04bFMbFyJseu7rHj1x18QYfnHw\rOY/6LL/N6k1m+Hx7qgXVmIcCgYB/w0nTCBw84XlvWqSTqQaF8VfWbWP79mP5KmkW\rLxdH5g2noVEGbohqDnK6OXd/wusdwByukiJBf94Skyy25AOT+VFwthA7aU1ljhkb\rtJ+lDuJ28eBkwLPLCzthWBC+u0qjdJFJAzVjd/7tjcU43nNn4s90AzL12iaAFhvZ\rwyA+DQKBgGc/4cdyGJ3YkcA8150gQBawgJZ7q8V1JND87ggWA8wnK3cHn7rMZQl2\r3emDp9HEFXFex5dbGDDqZFAoesZCDxjknIn9oNfW4PvaWS8q7b6ZKLZG1p03Pu7/\rtYaD0kPbo0kysfFT/co+NgHbdykvIyboomfGdNLTUjYuy6lpwpvs\r-----END RSA PRIVATE KEY-----\r".replace(/\r/g,`\r
14
14
  `)},oie="certificate.pem",aie="privateKey.pem",cie="caCertificate.pem",lie="natsCertificate.pem",uie="natsCaCertificate.pem",Nt={DEFAULT:"default","DEFAULT-CA":"default-ca",SERVER:"server",CA:"ca","OPERATIONS-API":"operations-api","OPERATIONS-CA":"operations-ca"},die={tls_certificate:Nt.SERVER,tlsCertificateAuthority:Nt.CA,customFunctions_tls_certificate:Nt.SERVER,customFunctionsTlsCertificateAuthority:Nt.CA,operationsApi_tls_certificate:Nt["OPERATIONS-API"],operationsApiTlsCertificateAuthority:Nt["OPERATIONS-CA"]},fie={[Nt.SERVER]:2,[Nt.DEFAULT]:1},mie={[Nt["OPERATIONS-API"]]:3,[Nt.SERVER]:2,[Nt.DEFAULT]:1},hie={[Nt["OPERATIONS-API"]]:3,[Nt.SERVER]:2,[Nt.DEFAULT]:1},pie={[Nt["OPERATIONS-CA"]]:3,[Nt.CA]:2,[Nt["DEFAULT-CA"]]:1},_ie={[Nt["OPERATIONS-CA"]]:3,[Nt.CA]:2,[Nt["DEFAULT-CA"]]:1},Eie={[Nt.CA]:2,[Nt["DEFAULT-CA"]]:1};ln.CERTIFICATE_PEM_NAME=oie;ln.PRIVATEKEY_PEM_NAME=aie;ln.CA_PEM_NAME=cie;ln.CERT_NAME=Nt;ln.CERT_CONFIG_NAME_MAP=die;ln.CERT_PREFERENCE_APP=fie;ln.CERT_PREFERENCE_OPS=mie;ln.CERT_PREFERENCE_REP=hie;ln.CA_CERT_PREFERENCE_REP=pie;ln.CA_CERT_PREFERENCE_OPS=_ie;ln.CA_CERT_PREFERENCE_APP=Eie;ln.CERTIFICATE_VALUES=iie;ln.NATS_CERTIFICATE_PEM_NAME=lie;ln.NATS_CA_PEM_NAME=uie});var DI=M((AMe,ek)=>{"use strict";var XH=require("fs-extra"),Se=require("joi"),gie=require("os"),{boolean:Ge,string:St,number:lr,array:Xa}=Se.types(),{totalmem:jH}=require("os"),Ll=require("path"),Sie=z(),PI=se(),yMe=CI(),JH=(H(),v($)),Tie=lt(),QH="log",Rie="components",yie="Invalid logging.rotation.maxSize unit. Available units are G, M or K",Aie="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",bie="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",Nie="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",Iie="rootPath config parameter is undefined",qn=Se.alternatives([lr.min(0),St]).optional().empty(null),Kg=Se.alternatives([Xa.items(St,{host:St.required(),port:qn},{hostname:St.required(),port:qn}).empty(null),Xa.items(St)]),Qi,ZH=!1;ek.exports={configValidator:wie,routesValidator:Mie,routeConstraints:Kg};function wie(e,t=!1){if(ZH=t,Qi=e.rootPath,PI.isEmpty(Qi))throw Iie;let r=Ge.optional(),n=lr.min(0).max(1e3).empty(null).default(Lie),s=St.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(yh),i=St.optional().empty(null),a=St.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),c=Se.string().empty(null).default(yh),l=Se.custom(Cie).empty(null).default(yh),u=e.clustering?.enabled,d=Se.object({certificate:i,certificateAuthority:i,privateKey:i}),f;return u===!0?f=Se.object({enabled:r,hubServer:Se.object({cluster:Se.object({name:Se.required().empty(null),network:Se.object({port:qn,routes:Kg}).required()}).required(),leafNodes:Se.object({network:Se.object({port:qn}).required()}).required(),network:Se.object({port:qn}).required()}).required(),leafServer:Se.object({network:Se.object({port:qn,routes:Kg}).required(),streams:Se.object({maxAge:lr.min(120).allow(null).optional(),maxBytes:lr.min(1).allow(null).optional(),maxMsgs:lr.min(1).allow(null).optional(),path:c}).required()}).required(),logLevel:Se.valid("error","warn","info","debug","trace"),nodeName:a,republishMessages:Ge.optional(),databaseLevel:Ge.optional(),tls:Se.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:Ge.required(),verify:Ge.optional()}),user:St.optional().empty(null)}).optional():f=Se.object({enabled:r,tls:Se.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:Ge.optional()})}).optional(),Se.object({authentication:Se.alternatives(Se.object({authorizeLocal:Ge,cacheTTL:lr.required(),cookie:Se.object({domains:Xa.items(St).optional(),expires:St.optional()}),enableSessions:Ge,hashFunction:St.valid("md5","sha256","argon2id").optional().empty(null)}),Ge).optional(),analytics:Se.object({aggregatePeriod:lr,replicate:Ge.optional()}),replication:Se.object({hostname:Se.alternatives(St,lr).optional().empty(null),url:St.optional().empty(null),port:qn,securePort:qn,routes:Xa.optional().empty(null),databases:Se.alternatives(St,Xa),enableRootCAs:Ge.optional(),copyTablesToCatchUp:Ge.optional()}).optional(),componentsRoot:s.optional(),clustering:f,localStudio:Se.object({enabled:r}).required(),logging:Se.object({auditAuthEvents:Se.object({logFailed:Ge,logSuccessful:Ge}),file:Ge.required(),level:Se.valid("notify","fatal","error","warn","info","debug","trace"),rotation:Se.object({enabled:Ge.optional(),compress:Ge.optional(),interval:St.custom(Die).optional().empty(null),maxSize:St.custom(Pie).optional().empty(null),path:St.optional().empty(null).default(yh)}).required(),root:s,stdStreams:Ge.required(),auditLog:Ge.required()}).required(),operationsApi:Se.object({network:Se.object({cors:Ge.optional(),corsAccessList:Xa.optional(),headersTimeout:lr.min(1).optional(),keepAliveTimeout:lr.min(1).optional(),port:qn,domainSocket:Se.optional().empty("hdb/operations-server").default(yh),securePort:qn,timeout:lr.min(1).optional()}).optional(),tls:Se.alternatives([Se.array().items(d),d])}).required(),rootPath:St.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").required(),mqtt:Se.object({network:Se.object({port:qn,securePort:qn,mtls:Se.alternatives([Ge.optional(),Se.object({user:St.optional(),certificateAuthority:i,required:Ge.optional()})])}).required(),webSocket:Ge.optional(),requireAuthentication:Ge.optional()}),http:Se.object({compressionThreshold:lr.optional(),cors:Ge.optional(),corsAccessList:Xa.optional(),headersTimeout:lr.min(1).optional(),port:qn,securePort:qn,maxHeaderSize:lr.optional(),mtls:Se.alternatives([Ge.optional(),Se.object({user:St.optional(),certificateAuthority:i,required:Ge.optional()})]),threadRange:Se.alternatives([Xa.optional(),St.optional()])}).required(),threads:Se.alternatives(n.optional(),Se.object({count:n.optional(),debug:Se.alternatives(Ge.optional(),Se.object({startingPort:lr.min(1).optional(),host:St.optional(),waitForDebugger:Ge.optional()})),maxHeapMemory:lr.min(0).optional()})),storage:Se.object({writeAsync:Ge.required(),overlappingSync:Ge.optional(),caching:Ge.optional(),compression:Se.alternatives([Ge.optional(),Se.object({dictionary:St.optional(),threshold:lr.optional()})]),compactOnStart:Ge.optional(),compactOnStartKeepBackup:Ge.optional(),noReadAhead:Ge.optional(),path:l,prefetchWrites:Ge.optional(),maxFreeSpaceToLoad:lr.optional(),maxFreeSpaceToRetain:lr.optional()}).required(),ignoreScripts:Ge.optional(),tls:Se.alternatives([Se.array().items(d),d])}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}o(wie,"configValidator");function Oie(e){return ZH||XH.existsSync(e)?null:`Specified path ${e} does not exist.`}o(Oie,"doesPathExist");function Cie(e,t){Se.assert(e,St.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=Oie(e);if(r)return t.message(r)}o(Cie,"validatePath");function Pie(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(yie);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(bie):e}o(Pie,"validateRotationMaxSize");function Die(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(Aie);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(Nie):e}o(Die,"validateRotationInterval");function Lie(e,t){let r=t.state.path.join("."),n=gie.cpus().length,s=n-1;s<=2&&(s=2);let i=process.constrainedMemory?.()||jH();return i=Math.round(Math.min(i,jH())/1e6),s=Math.max(Math.min(s,Math.round((i-750)/300)),1),Sie.info(`Detected ${n} cores and ${i}MB on this machine, defaulting ${r} to ${s}`),s}o(Lie,"setDefaultThreads");function yh(e,t){let r=t.state.path.join(".");if(!PI.isEmpty(t.original)&&r!=="operationsApi.network.domainSocket")return t.original;if(PI.isEmpty(Qi))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"componentsRoot":return Ll.join(Qi,Rie);case"logging.root":return Ll.join(Qi,QH);case"clustering.leafServer.streams.path":return Ll.join(Qi,"clustering","leaf");case"storage.path":let n=Ll.join(Qi,JH.LEGACY_DATABASES_DIR_NAME);return XH.existsSync(n)?n:Ll.join(Qi,JH.DATABASES_DIR_NAME);case"logging.rotation.path":return Ll.join(Qi,QH);case"operationsApi.network.domainSocket":return r==null?null:Ll.join(Qi,"operations-server");default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}o(yh,"setDefaultRoot");function Mie(e){let t=Se.object({routes:Kg});return Tie.validateBySchema({routes:e},t)}o(Mie,"routesValidator")});var ht=M(Zt=>{"use strict";var xs=(H(),v($)),br=se(),ur=z(),{configValidator:vie,routesValidator:tk}=DI(),un=require("fs-extra"),nk=require("yaml"),as=require("path"),Uie=require("is-number"),sk=require("properties-reader"),xie=require("lodash"),{handleHDBError:Bie}=_e(),{HTTP_STATUS_CODES:Fie,HDB_ERROR_MSGS:hd}=$r(),{server:Hie}=(Lr(),v(hm)),{PACKAGE_ROOT:ik}=dt(),{DATABASES_PARAM_CONFIG:Ah,CONFIG_PARAMS:os,CONFIG_PARAM_MAP:gi}=xs,kie="Unable to get config value because config is uninitialized",qie="Config successfully initialized",Gie="Error backing up config file",$ie="Empty parameter sent to getConfigValue",ok=as.join(ik,"config","yaml",xs.HDB_DEFAULT_CONFIG_FILE),Vie=as.join(ik,"config","yaml","defaultNatsConfig.yaml"),Kie="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",rk={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"},Yg,Ut,Wg;Zt.createConfigFile=Yie;Zt.getDefaultConfig=Wie;Zt.getConfigValue=ck;Zt.initConfig=zg;Zt.flattenConfig=pd;Zt.updateConfigValue=lk;Zt.updateConfigObject=jie;Zt.getConfiguration=Xie;Zt.setConfiguration=Zie;Zt.readConfigFile=UI;Zt.getClusteringRoutes=eoe;Zt.initOldConfig=uk;Zt.getConfigFromFile=toe;Zt.getConfigFilePath=Ml;Zt.addConfig=roe;Zt.deleteConfigFromFile=noe;Zt.getConfigObj=soe;Zt.resolvePath=LI;Zt.getFlatConfigObj=ioe;function LI(e){if(e?.startsWith("~/"))return as.join(br.getHomeDir(),e.slice(1));let t=ae();try{return as.resolve(t.getHdbBasePath(),e)}catch(r){return console.error("Unable to resolve path",e,r),e}}o(LI,"resolvePath");function Yie(e,t=!1){let r=Za(ok);if(e.clustering_enabled||e.CLUSTERING_ENABLED||e.clustering){let c=nk.parseDocument(un.readFileSync(Vie,"utf8"),{simpleKeys:!0});r.addIn(["clustering"],c.toJSON().clustering)}Yg=pd(r.toJSON());let n;for(let c in e){let l=gi[c.toLowerCase()];if(l===os.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=MI(l,e[c]);l==="rootPath"&&d?.endsWith("/")&&(d=d.slice(0,-1));try{r.setIn([...u],d)}catch(f){ur.error(f)}}}n&&ak(r,n),vI(r,t);let s=r.toJSON();Ut=pd(s);let i=r.getIn(["rootPath"]),a=as.join(i,xs.HDB_CONFIG_FILE);if(un.createFileSync(a),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);un.writeFileSync(a,String(r)),ur.trace(`Config file written to ${a}`)}o(Yie,"createConfigFile");function ak(e,t){let r;try{try{r=JSON.parse(t)}catch(n){if(!br.isObject(t))throw n;r=t}for(let n of r){let s=Object.keys(n)[0];if(n[s].hasOwnProperty(Ah.TABLES))for(let i in n[s][Ah.TABLES])for(let a in n[s][Ah.TABLES][i]){let c=n[s][Ah.TABLES][i][a],l=[os.DATABASES,s,Ah.TABLES,i,a];e.hasIn(l)?e.setIn(l,c):e.addIn(l,c)}else for(let i in n[s]){let a=n[s][i],c=[os.DATABASES,s,i];e.hasIn(c)?e.setIn(c,a):e.addIn(c,a)}}}catch(n){ur.error("Error parsing schemas CLI/env config arguments",n)}}o(ak,"setSchemasConfig");function Wie(e){if(Yg===void 0){let r=Za(ok);Yg=pd(r.toJSON())}let t=gi[e.toLowerCase()];if(t!==void 0)return Yg[t.toLowerCase()]}o(Wie,"getDefaultConfig");function ck(e){if(e==null){ur.info($ie);return}if(Ut===void 0){ur.trace(kie);return}let t=gi[e.toLowerCase()];if(t!==void 0)return Ut[t.toLowerCase()]}o(ck,"getConfigValue");function Ml(e=br.getPropsFilePath()){let t=br.getEnvCliRootPath();if(t)return LI(as.join(t,xs.HDB_CONFIG_FILE));let r=sk(e);return LI(r.get(xs.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY))}o(Ml,"getConfigFilePath");function zg(e=!1){if(Ut===void 0||e){let t;if(!br.noBootFile()){t=br.getPropsFilePath();try{un.accessSync(t,un.constants.F_OK|un.constants.R_OK)}catch(i){throw ur.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}}let r=Ml(t),n;if(r.includes("config/settings.js"))try{uk(r);return}catch(i){if(i.code!==xs.NODE_ERROR_CODES.ENOENT)throw i}try{n=Za(r)}catch(i){if(i.code===xs.NODE_ERROR_CODES.ENOENT){ur.trace(`HarperDB config file not found at ${r}.
15
15
  This can occur during early stages of install where the config file has not yet been created`);return}else throw ur.error(i),new Error(`Error reading HarperDB config file at ${r}`)}zie(n,r),vI(n);let s=n.toJSON();if(Hie.config=s,Ut=pd(s),Ut.logging_rotation_rotate)for(let i in rk)Ut[i]&&ur.error(`Config ${rk[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);ur.trace(qie)}}o(zg,"initConfig");function zie(e,t){let r=e.getIn(["rootPath"]),n=!1;if(e.hasIn(["storage","path"])||(e.setIn(["storage","path"],as.join(r,"database")),n=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],as.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(ur.trace("Updating config file with missing config params"),e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${e.errors}`);un.writeFileSync(t,String(e))}}o(zie,"checkForUpdatedConfig");function vI(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 hd.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 hd.CONFIG_VALIDATION("operationsApi.network.port and operationsApi.network.securePort cannot be the same value");let n=vie(r,t);if(n.error)throw hd.CONFIG_VALIDATION(n.error.message);typeof n.value.threads=="object"?e.setIn(["threads","count"],n.value.threads.count):e.setIn(["threads"],n.value.threads),e.setIn(["componentsRoot"],n.value.componentsRoot),e.setIn(["logging","root"],n.value.logging.root),e.setIn(["storage","path"],n.value.storage.path),e.setIn(["logging","rotation","path"],n.value.logging.rotation.path),e.setIn(["operationsApi","network","domainSocket"],n.value?.operationsApi?.network?.domainSocket),r?.clustering?.enabled&&e.setIn(["clustering","leafServer","streams","path"],n.value.clustering.leafServer.streams?.path)}o(vI,"validateConfig");function jie(e,t){Ut===void 0&&(Ut={});let r=gi[e.toLowerCase()];if(r===void 0){ur.trace(`Unable to update config object because config param '${e}' does not exist`);return}Ut[r.toLowerCase()]=t}o(jie,"updateConfigObject");function lk(e,t,r=void 0,n=!1,s=!1,i=!1){Ut===void 0&&zg();let a=ck(gi.hdb_root),c=as.join(a,xs.HDB_CONFIG_FILE),l=Za(c),u;if(r&&Ut){let m=!1;for(let h in r)if(r[h]!=Ut[h.toLowerCase()]){m=!0;break}if(!m){ur.trace("No changes detected in config parameters, skipping update");return}}if(r===void 0&&e.toLowerCase()===os.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 h=m.split("_"),p=MI(m,t);l.setIn([...h],p)}else for(let m in r){let h=gi[m.toLowerCase()];if(h===os.HTTP_SECUREPORT&&r[m]===Ut[os.HTTP_PORT]?.toString()&&l.setIn(["http","port"],null),h===os.OPERATIONSAPI_NETWORK_SECUREPORT&&r[m]===Ut[os.OPERATIONSAPI_NETWORK_PORT.toLowerCase()]?.toString()&&l.setIn(["operationsApi","network","port"],null),h===os.DATABASES){u=r[m];continue}if(h?.startsWith("threads_")){let p=l.getIn(["threads"]);p>=0&&(l.deleteIn(["threads"]),l.setIn(["threads","count"],p))}if(!h&&(m.endsWith("_package")||m.endsWith("_port"))&&(h=m),h!==void 0){let p=h.split("_"),E=xs.LEGACY_CONFIG_PARAMS[m.toUpperCase()];E&&E.startsWith("customFunctions")&&l.hasIn(E.split("_"))&&(h=E,p=E.split("_"));let g=MI(h,r[m]);h==="rootPath"&&g?.endsWith("/")&&(g=g.slice(0,-1));try{p.length>1&&typeof l.getIn(p.slice(0,-1))=="boolean"&&l.deleteIn(p.slice(0,-1)),l.setIn([...p],g)}catch(y){ur.error(y)}}}u&&ak(l,u),vI(l);let d=l.getIn(["rootPath"]),f=as.join(d,xs.HDB_CONFIG_FILE);if(n===!0&&Jie(c,d),l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${l.errors}`);un.writeFileSync(f,String(l)),s&&(Ut=pd(l.toJSON())),ur.trace(`Config parameter: ${e} updated with value: ${t}`)}o(lk,"updateConfigValue");function Jie(e,t){try{let r=as.join(t,"backup",`${new Date(Date.now()).toISOString().replaceAll(":","-")}-${xs.HDB_CONFIG_FILE}.bak`);un.copySync(e,r),ur.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){ur.error(Gie),ur.error(r)}}o(Jie,"backupConfigFile");var Qie=["databases"];function pd(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}),Wg=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])&&!Qie.includes(i)){let a=r(n[i]);for(let c in a){if(!a.hasOwnProperty(c))continue;c!=="package"&&(i=i.toLowerCase());let l=i+"_"+c;!os[l.toUpperCase()]&&gi[l]&&(s[gi[l].toLowerCase()]=a[c]),s[l]=a[c]}}n[i]!==void 0&&(s[i.toLowerCase()]=n[i])}return s}o(r,"squashObj")}o(pd,"flattenConfig");function MI(e,t){if(e===os.CLUSTERING_NODENAME||e===os.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(Uie(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||br.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 br.autoCast(t)}o(MI,"castConfigValue");function Xie(){let e=br.getPropsFilePath(),t=Ml(e);return Za(t).toJSON()}o(Xie,"getConfiguration");async function Zie(e){let{operation:t,hdb_user:r,hdbAuthHeader:n,...s}=e;try{return lk(void 0,void 0,s,!0),Kie}catch(i){throw typeof i=="string"||i instanceof String?Bie(i,i,Fie.BAD_REQUEST,void 0,void 0,!0):i}}o(Zie,"setConfiguration");function UI(){let e=br.getPropsFilePath();try{un.accessSync(e,un.constants.F_OK|un.constants.R_OK)}catch(n){if(!br.noBootFile())throw ur.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=Ml(e);return Za(t).toJSON()}o(UI,"readConfigFile");function Za(e){return nk.parseDocument(un.readFileSync(e,"utf8"),{simpleKeys:!0})}o(Za,"parseYamlDoc");function eoe(){let e=UI(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=br.isEmptyOrZeroLength(t)?[]:t;let r=tk(t);if(r)throw hd.CONFIG_VALIDATION(r.message);let n=e?.clustering?.leafServer?.network?.routes;n=br.isEmptyOrZeroLength(n)?[]:n;let s=tk(n);if(s)throw hd.CONFIG_VALIDATION(s.message);if(!br.isEmptyOrZeroLength(n)&&!br.isEmptyOrZeroLength(t)){let i=t.filter(a=>n.some(c=>c.host===a.host&&c.port===a.port));if(!br.isEmptyOrZeroLength(i)){let a=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw hd.CONFIG_VALIDATION(a)}}return{hub_routes:t,leaf_routes:n}}o(eoe,"getClusteringRoutes");function uk(e){let t=sk(e);Ut={};for(let r in gi){let n=t.get(r.toUpperCase());if(br.isEmpty(n)||typeof n=="string"&&n.trim().length===0)continue;let s=gi[r].toLowerCase();s===os.LOGGING_ROOT?Ut[s]=as.dirname(n):Ut[s]=n}return Ut}o(uk,"initOldConfig");function toe(e){let t=UI();return xie.get(t,e.replaceAll("_","."))}o(toe,"getConfigFromFile");async function roe(e,t){let r=Za(Ml());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 un.writeFile(Ml(),String(r))}o(roe,"addConfig");function noe(e){let t=Ml(br.getPropsFilePath()),r=Za(t);r.deleteIn(e);let n=r.getIn(["rootPath"]),s=as.join(n,xs.HDB_CONFIG_FILE);un.writeFileSync(s,String(r))}o(noe,"deleteConfigFromFile");function soe(){return Wg||(zg(),Wg)}o(soe,"getConfigObj");function ioe(){return Ut||zg(),Ut}o(ioe,"getFlatConfigObj")});var Gn=M((wMe,xr)=>{"use strict";var mk="username is required",hk="nothing to update, must supply active, role or password to update",pk="password cannot be an empty string",_k="If role is specified, it cannot be empty.",Ek="active must be true or false";xr.exports.addUser=hoe;xr.exports.alterUser=poe;xr.exports.dropUser=Eoe;xr.exports.getSuperUser=yoe;xr.exports.userInfo=goe;xr.exports.listUsers=Jg;xr.exports.listUsersExternal=Soe;xr.exports.setUsersWithRolesCache=vl;xr.exports.findAndValidateUser=VI;xr.exports.getClusterUser=Aoe;xr.exports.getUsersWithRolesCache=Roe;xr.exports.USERNAME_REQUIRED=mk;xr.exports.ALTERUSER_NOTHING_TO_UPDATE=hk;xr.exports.EMPTY_PASSWORD=pk;xr.exports.EMPTY_ROLE=_k;xr.exports.ACTIVE_BOOLEAN=Ek;var gk=kn(),ooe=Dl(),bh=(Vg(),v($g)),Sk=YH(),Nh=an(),kI=Ho(),Xi=se(),Tk=require("validate.js"),qI=z(),{promisify:aoe}=require("util"),GI=Ji(),BI=(H(),v($)),dk=bt(),coe=ht(),loe=ae(),uoe=xo(),{hdbErrors:doe,ClientError:Si}=_e(),{HTTP_STATUS_CODES:$o,AUTHENTICATION_ERROR_MSGS:xI,HDB_ERROR_MSGS:_d}=doe,{UserEventMsg:$I}=hi(),FI=require("lodash"),{server:jg}=(Lr(),v(hm)),foe=z();jg.getUser=(e,t)=>VI(e,t,t!=null);jg.authenticateUser=(e,t)=>VI(e,t);var Rk={username:!0,active:!0,role:!0,password:!0},fk=new Map,moe=aoe(ooe.delete),HI=loe.get(BI.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??bh.HASH_FUNCTION.SHA256,Zi;async function hoe(e){let t=Tk.cleanAttributes(e,Rk),r=Sk.addUserValidation(t);if(r)throw new Si(r.message);let n=await Nh.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["id","permission","role"]});if(!n||n.length<1)throw new Si(_d.ROLE_NAME_NOT_FOUND(t.role),$o.NOT_FOUND);if(n.length>1)throw new Si(_d.DUP_ROLES_FOUND(t.role),$o.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=GI.encrypt(t.password)),t.password=await bh.hash(t.password,HI),t.hash_function=HI,t.role=n[0].id;let s=await gk.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(qI.debug(s),await vl(),s.skipped_hashes.length===1)throw new Si(_d.USER_ALREADY_EXISTS(t.username),$o.CONFLICT);return kI.signalUserChange(new $I(process.pid)),`${t.username} successfully added`}o(hoe,"addUser");async function poe(e){let t=Tk.cleanAttributes(e,Rk);if(Xi.isEmptyOrZeroLength(t.username))throw new Error(mk);if(Xi.isEmptyOrZeroLength(t.password)&&Xi.isEmptyOrZeroLength(t.role)&&Xi.isEmptyOrZeroLength(t.active))throw new Error(hk);if(!Xi.isEmpty(t.password)&&Xi.isEmptyOrZeroLength(t.password.trim()))throw new Error(pk);if(!Xi.isEmpty(t.active)&&!Xi.isBoolean(t.active))throw new Error(Ek);if(!Xi.isEmpty(t.password)&&!Xi.isEmptyOrZeroLength(t.password.trim())&&(_oe(t.username)&&(t.hash=GI.encrypt(t.password)),t.password=await bh.hash(t.password,HI)),t.role==="")throw new Error(_k);if(t.role){let n=await Nh.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new Si(_d.ALTER_USER_ROLE_NOT_FOUND(t.role),$o.NOT_FOUND);if(n.length>1)throw new Si(_d.DUP_ROLES_FOUND(t.role),$o.CONFLICT);t.role=n[0].id}let r=await gk.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await vl(),kI.signalUserChange(new $I(process.pid)),r}o(poe,"alterUser");function _oe(e){let t=!1,r=Zi.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}o(_oe,"isClusterUser");async function Eoe(e){let t=Sk.dropUserValidation(e);if(t)throw new Si(t.message);if(Zi.get(e.username)===void 0)throw new Si(_d.USER_NOT_EXIST(e.username),$o.NOT_FOUND);let r=await moe({table:"hdb_user",schema:"system",hash_values:[e.username]});return qI.debug(r),await vl(),kI.signalUserChange(new $I(process.pid)),`${e.username} successfully deleted`}o(Eoe,"dropUser");async function goe(e){let t={};if(!e||!e.hdb_user)return"There was no user info in the body";t=FI.cloneDeep(e.hdb_user);let r=await Nh.searchByHash({schema:"system",table:"hdb_role",hash_values:[t.role.id],get_attributes:["*"]});return t.role=r[0],delete t.password,delete t.refresh_token,delete t.hash,delete t.hash_function,t}o(goe,"userInfo");async function Soe(){let e=await Jg();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}o(Soe,"listUsersExternal");async function Jg(){let e=await Nh.searchByValue({schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=FI.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await Nh.searchByValue({schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=FI.cloneDeep(s),s.role=t[s.role],Toe(s.role),n.set(s.username,s);return n}o(Jg,"listUsers");function Toe(e){if(!e){qI.error("invalid user role found.");return}e.permission.system||(e.permission.system={}),e.permission.system.tables||(e.permission.system.tables={});for(let t of Object.keys(uoe)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}o(Toe,"appendSystemTablesToRole");async function vl(e=void 0){e?Zi=e:Zi=await Jg()}o(vl,"setUsersWithRolesCache");async function Roe(){return Zi||await vl(),Zi}o(Roe,"getUsersWithRolesCache");async function VI(e,t,r=!0){Zi||await vl();let n=Zi.get(e);if(!n){if(!r)return{username:e};throw new Si(xI.GENERIC_AUTH_FAIL,$o.UNAUTHORIZED)}if(n&&!n.active)throw new Si(xI.USER_INACTIVE,$o.UNAUTHORIZED);let s={active:n.active,username:n.username};if(n.refresh_token&&(s.refresh_token=n.refresh_token),n.role&&(s.role=n.role),r===!0){if(fk.get(t)===n.password)return s;{let i=bh.validate(n.password,t,n.hash_function||bh.HASH_FUNCTION.MD5);if(i?.then&&(i=await i),i===!0)fk.set(t,n.password);else throw new Si(xI.GENERIC_AUTH_FAIL,$o.UNAUTHORIZED)}}return s}o(VI,"findAndValidateUser");async function yoe(){Zi||await vl();for(let[,e]of Zi)if(e.role.role==="super_user")return e}o(yoe,"getSuperUser");async function Aoe(){let e=await Jg(),t=coe.getConfigFromFile(BI.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!(r==null||r?.role?.role!==BI.ROLE_TYPES_ENUM.CLUSTER_USER))return r.decrypt_hash=GI.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+dk.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+dk.SERVER_SUFFIX.ADMIN,r}o(Aoe,"getClusterUser");var yk=[];jg.invalidateUser=function(e){for(let t of yk)try{t(e)}catch(r){foe.error("Error invalidating user",r)}};jg.onInvalidatedUser=function(e){yk.push(e)}});var wh=M((DMe,Ik)=>{"use strict";var Ul=z(),cs=(H(),v($)),boe=zx(),CMe=Us(),PMe=ja(),Noe=Gn(),{validateEvent:Ak}=hi(),Ih=ss(),Ioe=require("process"),{resetDatabases:woe}=(De(),v(at)),Ooe={[cs.ITC_EVENT_TYPES.SCHEMA]:Coe,[cs.ITC_EVENT_TYPES.USER]:Nk};async function Coe(e){let t=Ak(e);if(t){Ul.error(t);return}Ul.trace("ITC schemaHandler received schema event:",e),await boe(e.message),await Poe(e.message)}o(Coe,"schemaHandler");async function Poe(e){try{Ih.resetReadTxn(cs.SYSTEM_SCHEMA_NAME,cs.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),Ih.resetReadTxn(cs.SYSTEM_SCHEMA_NAME,cs.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),Ih.resetReadTxn(cs.SYSTEM_SCHEMA_NAME,cs.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=woe();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){Ul.error(t)}}o(Poe,"syncSchemaMetadata");var bk=[];async function Nk(e){try{try{Ih.resetReadTxn(cs.SYSTEM_SCHEMA_NAME,cs.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),Ih.resetReadTxn(cs.SYSTEM_SCHEMA_NAME,cs.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){Ul.warn(r)}let t=Ak(e);if(t){Ul.error(t);return}Ul.trace(`ITC userHandler ${cs.HDB_ITC_CLIENT_PREFIX}${Ioe.pid} received user event:`,e),await Noe.setUsersWithRolesCache();for(let r of bk)r()}catch(t){Ul.error(t)}}o(Nk,"userHandler");Nk.addListener=function(e){bk.push(e)};Ik.exports=Ooe});var hi=M((BMe,Ok)=>{"use strict";var MMe=z(),KI=se(),Doe=(H(),v($)),{ITC_ERRORS:Oh}=$r(),{parentPort:vMe,threadId:Loe,isMainThread:Moe,workerData:UMe}=require("worker_threads"),{onMessageFromWorkers:voe,broadcast:xMe,broadcastWithAcknowledgement:Uoe}=st();Ok.exports={sendItcEvent:xoe,validateEvent:wk,SchemaEventMsg:Boe,UserEventMsg:Foe};var Qg;voe(async(e,t)=>{Qg=Qg||wh(),wk(e),Qg[e.type]&&await Qg[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function xoe(e){return!Moe&&e.message&&(e.message.originator=Loe),Uoe(e)}o(xoe,"sendItcEvent");function wk(e){if(typeof e!="object")return Oh.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||KI.isEmpty(e.type))return Oh.MISSING_TYPE;if(!e.hasOwnProperty("message")||KI.isEmpty(e.message))return Oh.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||KI.isEmpty(e.message.originator))return Oh.MISSING_ORIGIN;if(Doe.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return Oh.INVALID_EVENT(e.type)}o(wk,"validateEvent");function Boe(e,t,r,n=void 0,s=void 0){this.originator=e,this.operation=t,this.schema=r,this.table=n,this.attribute=s}o(Boe,"SchemaEventMsg");function Foe(e){this.originator=e}o(Foe,"UserEventMsg")});var Ho=M((kMe,Lk)=>{"use strict";var Ck=(H(),v($)),HMe=se(),Xg=z(),Pk=Px(),Ed,{sendItcEvent:Dk}=hi();function Hoe(e){try{Xg.info("signalSchemaChange called with message:",e),Ed=Ed||wh();let t=new Pk(Ck.ITC_EVENT_TYPES.SCHEMA,e);return Ed.schema(t),Dk(t)}catch(t){Xg.error(t)}}o(Hoe,"signalSchemaChange");function koe(e){try{Xg.trace("signalUserChange called with message:",e),Ed=Ed||wh();let t=new Pk(Ck.ITC_EVENT_TYPES.USER,e);return Ed.user(t),Dk(t)}catch(t){Xg.error(t)}}o(koe,"signalUserChange");Lk.exports={signalSchemaChange:Hoe,signalUserChange:koe}});function Zg(){return YI||(YI=et({table:"hdb_analytics_hostname",database:"system",attributes:[{name:"id",isPrimaryKey:!0},{name:"hostname"}]})),YI}function Goe(e){return e=e.replace(qoe,t=>{let[r,n,s,i]=t.split(".").map(a=>parseInt(a));return(r<<8|n).toString(16)+":"+(s<<8|i).toString(16)}),e=e.replace("::",":".repeat(10-e.split(":").length)),e.toLowerCase().split(":").map(t=>t.padStart(4,"0")).join(":")}function $oe(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 zI(e){let t=Mk.default.createHash("shake128",{outputLength:4}),r;return(0,vk.isIPv6)(e)?r=Goe(e):r=e.toLowerCase(),$oe(Uint8Array.from(t.update(r).digest()))}var Mk,vk,WI,YI,qoe,jI=fe(()=>{De();Mk=w(require("crypto")),vk=require("node:net"),WI=new Map;o(Zg,"getAnalyticsHostnameTable");qoe=/(\d{1,3}\.){3}\d{1,3}$/;o(Goe,"normalizeIPv6");o($oe,"nodeHashToNumber");o(zI,"stableNodeId")});var Vo,JI=fe(()=>{Vo={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 sS={};Ce(sS,{addAnalyticsListener:()=>Dh,calculateCPUUtilization:()=>Qk,diffResourceUsage:()=>Xk,recordAction:()=>Tt,recordActionBinary:()=>zr,recordHostname:()=>ZI,setAnalyticsEnabled:()=>Voe});function Voe(e){Yk=e}function Koe(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 Yoe(e,t,r,n,s,i){let a={};if(typeof t=="number")a.total=t,a.values=new Float32Array(4),a.values.index=1,a.values[0]=t,a.total=t;else if(typeof t=="boolean")a.total=t?1:0,a.count=1;else if(typeof t=="function")a.count=1,a.callback=t;else throw new TypeError("Invalid metric value type "+typeof t);a.description={metric:r,path:n,method:s,type:i},rS.set(e,a)}function Tt(e,t,r,n,s){if(!Yk)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let a=rS.get(i);a?Koe(e,a):Yoe(i,e,t,r,n,s),tS||Woe()}function zr(e,t,r,n,s){Tt(!!e,t,r,n,s)}function Dh(e){jk.push(e)}function Woe(){tS=performance.now(),setTimeout(async()=>{let e=performance.now()-tS;tS=0;let t=[],r={time:Date.now(),period:e,threadId:xl.threadId,metrics:t};for(let[s,i]of rS){if(i.values){let a=i.values.subarray(0,i.values.index);a.sort();let c=a.length,l=0,u=[],d;for(let f of Jk){let m=Math.floor(c*f),h=a[m-1];if(m>l){let p=m-l;if(h===d){let E=u[u.length-1];typeof E=="number"?u[u.length-1]={value:E,count:1+p}:E.count+=p}else u.push(p>1?{value:h,count:p}:h),d=h;l=m}}t.push(Object.assign(i.description,{mean:i.total/c,distribution:u,count:c}))}else i.callback?t.push(Object.assign(i.description,i.callback(i))):t.push(Object.assign(i.description,{total:i.total,count:i.count}));await Zk()}let n=process.memoryUsage();t.push({metric:"memory",threadId:xl.threadId,byThread:!0,...n});for(let s of jk)s(t);rS=new Map,xl.parentPort?xl.parentPort.postMessage({type:zk,report:r}):rq({report:r})},Wk).unref()}async function ZI(){let e=ve.hostname;Wr.trace?.("recordHostname server.hostname:",e);let t=zI(e);Wr.trace?.("recordHostname nodeId:",t);let r=Zg();if(!await r.get(t)){let s={id:t,hostname:e};Wr.trace?.(`recordHostname storing hostname: ${JSON.stringify(s)}`),r.put(s.id,s)}}function gd(e,t){let r=ve.hostname,n=WI.get(r);n?Wr.trace?.("storeMetric cached nodeId:",n):(n=zI(r),Wr.trace?.("storeMetric new nodeId:",n),WI.set(r,n));let s={id:[(0,XI.getNextMonotonicTime)(),n],...t};Wr.trace?.(`storing metric ${JSON.stringify(s)}`),e.put(s.id,s)}function Qk(e,t){let r=e.userCPUTime+e.systemCPUTime;return Wr.trace?.(`calculateCPUUtilization cpuTime: ${r} period: ${t}`),Math.round(r/t*100)/100}function Xk(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 zoe(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let a=`${t}.${s}`,c=i.getSize(),l={metric:Vo.TABLE_SIZE,database:t,table:s,size:c};Wr.trace?.(`table ${a} size metric: ${JSON.stringify(l)}`),gd(e,l),n+=c}return n}function Uk(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let a=Kk.statSync(s.primaryStore.env.path).size,c=zoe(e,r,n),l=a-c,u={metric:Vo.DATABASE_SIZE,database:r,size:a,used:c,free:l,audit:i};gd(e,u),Wr.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){Wr.warn?.("Error getting DB size metrics",s)}}function xk(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let a={metric:Vo.STORAGE_VOLUME,database:r,...i};gd(e,a),Wr.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(a)}`)}catch(s){Wr.warn?.("Error getting DB volume metrics",s)}}async function joe(e,t=6e4){let r=ew(),n=eq(),s=new Promise(R=>{let N=performance.now();setImmediate(()=>{let P=performance.now();P-N>5e3&&Wr.warn?.("Unusually high event queue latency on the main thread of "+Math.round(P-N)+"ms"),N=performance.now()}),n.primaryStore.prefetch([1],()=>{let P=performance.now();P-N>5e3&&Wr.warn?.("Unusually high task queue latency on the main thread of "+Math.round(P-N)+"ms"),R(P-N)})}),i;for(let R of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(R.value?.time){i=R.value.time;break}if(Date.now()-t<i)return;let a,c=new Map,l=new Map,u=[],d;for(let{key:R,value:N}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!N)continue;if(a){if(R>a+t)break}else a=R;d=R;let{metrics:P,threadId:Y}=N;for(let te of P||[]){let{path:x,method:V,type:j,metric:K,count:le,total:re,distribution:ie,threads:Ee,...Ie}=te;le||(le=1);let Fe=K+(x?"-"+x:"");V!==void 0&&(Fe+="-"+V),j!==void 0&&(Fe+="-"+j);let He=c.get(Fe);if(He){if(He.threads){let Et=He.threads[Y];if(Et)He=Et;else{He.threads[Y]={...Ie};continue}}He.count||(He.count=1);let Sr=He.count;for(let Et in Ie){let Tr=Ie[Et];typeof Tr=="number"&&(He[Et]=(He[Et]*Sr+Tr*le)/(Sr+le))}He.count+=le,re>=0&&(He.total+=re,He.ratio=He.total/He.count)}else He={period:t,...te},delete He.distribution,c.set(Fe,He),He.byThread&&(He.threads=[],He.threads[Y]={...Ie},u.push(He));if(ie){ie=ie.map(Et=>typeof Et=="number"?{value:Et,count:1}:Et);let Sr=l.get(Fe);Sr?Sr.push(...ie):l.set(Fe,ie)}}await Zk()}for(let R of u){let{path:N,method:P,type:Y,metric:te,count:x,total:V,distribution:j,threads:K,...le}=R;K=K.filter(re=>re);for(let re in le){if(typeof R[re]!="number")continue;let ie=0;for(let Ee of K){let Ie=Ee[re];typeof Ie=="number"&&(ie+=Ie)}R[re]=ie}R.count=K.length,delete R.threads,delete R.byThread}for(let[R,N]of l){let P=c.get(R);N.sort((Et,Tr)=>Et.value>Tr.value?1:-1);let Y=P.count-1,te=[],x=0,V=0,j;for(let Et of Jk){let Tr=Y*Et;for(;x<Tr;)j=N[V++],x+=j.count,V===1&&x--;let Cr=N[V>1?V-2:0];j||(j=N[0]),te.push(j.value-(j.value-Cr.value)*(x-Tr)/j.count)}let[K,le,re,ie,Ee,Ie,Fe,He,Sr]=te;Object.assign(P,{p1:K,p10:le,p25:re,median:ie,p75:Ee,p90:Ie,p95:Fe,p99:He,p999:Sr})}let f;for(let[,R]of c)R.time=d,gd(n,R),f=!0;let m=Date.now(),{idle:h,active:p}=performance.eventLoopUtilization();if(f||p*10>h){let R={metric:Vo.MAIN_THREAD_UTILIZATION,idle:h-Bk,active:p-Fk,taskQueueLatency:await s,time:m,...process.memoryUsage()};gd(n,R)}Bk=h,Fk=p;let E=process.resourceUsage();E.time=m,E.userCPUTime=E.userCPUTime/1e3,E.systemCPUTime=E.systemCPUTime/1e3,Wr.trace?.(`process.resourceUsage: ${JSON.stringify(E)}`);let g=Xk(eS,E);Wr.trace?.(`diffed resourceUsage: ${JSON.stringify(g)}`),g.time=m,g.period=eS.time?m-eS.time:t,g.cpuUtilization=Qk(g,g.period);let y={metric:Vo.RESOURCE_USAGE,...g};gd(n,y),eS=E;let T=it();Uk(n,T),Uk(n,{system:T.system}),xk(n,T),xk(n,{system:T.system})}async function Hk(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function ew(){return kk||(kk=et({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function eq(){return qk||(qk=et({table:"hdb_analytics",database:"system",audit:!0,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function Xoe(){tq=!0;let e=(0,Ph.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await joe(Wk,e),await Hk(ew(),Joe),await Hk(eq(),Qoe)},Math.min(e/2,2147483647)).unref()}function rq(e,t){let r=e.report;r.threadId=t?.threadId||xl.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(Gk+=n.mean*n.count);r.totalBytesProcessed=Gk,t&&(r.metrics.push({metric:Vo.UTILIZATION,...t.performance.eventLoopUtilization($k.get(t))}),$k.set(t,t.performance.eventLoopUtilization())),r.id=(0,XI.getNextMonotonicTime)(),ew().primaryStore.put(r.id,r),tq||Xoe(),Zoe&&(nq=tae(r))}async function tae(e){if(await nq,!ec){let r=(0,Ch.dirname)((0,nS.getLogFilePath)());try{ec=await(0,QI.open)((0,Ch.join)(r,"analytics.log"),"r+")}catch{ec=await(0,QI.open)((0,Ch.join)(r,"analytics.log"),"w+")}}let t=(await ec.stat()).size;if(t>eae){let r=Buffer.alloc(t);await ec.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await ec.write(r,{position:0}),await ec.truncate(r.length),t=r.length}await ec.write(JSON.stringify(e)+`
@@ -129,7 +129,7 @@ Connection: close\r
129
129
  `&&(e=e.slice(0,-1)),sA(e)),m3.apply(process.stderr,arguments)})}o(hIe,"stdioLogging");function A3(e,t,r=Dt){return e=e.replace(/ /g,"-"),{notify:n(r.notify,"notify"),fatal:n(r.fatal,"fatal"),error:n(r.error,"error"),warn:n(r.warn,"warn"),info:n(r.info,"info"),debug:n(r.debug,"debug"),trace:n(r.trace,"trace")};function n(s,i){return!t||r.level<=ar[i]?function(...a){iA=e;try{return s.call(r,...a)}finally{iA=void 0}}:null}o(n,"logWithTag")}o(A3,"loggerWithTag");function pIe(e){try{kc=!1,e()}finally{kc=!0}}o(pIe,"suppressLogging");var _Ie=iIe?.name?.replace(/ /g,"-")||"main",An="info",CM,iA;function oA({path:e,level:t,stdStreams:r,rotation:n,isExternalInstance:s,writeToLog:i,component:a}){t||(t="info");let c=ar[t],l;function u(h){if($_)if(l.logToStdstreams){f(h.replace(/\x1b\[[0-9;]*m/g,"")),kc=!1;try{process.stdout.write(h)}finally{kc=!0}}else f(h);else r&&process.stdout.write(h)}o(u,"logStdOut");function d(h){if($_){if(f(h),r){kc=!1;try{process.stderr.write(h)}finally{kc=!0}}}else r&&process.stderr.write(h)}o(d,"logStdErr");let f=e&&E3(e,n,s);function m(h){return{write(p){let E=[An];E.unshift(CM||_Ie+"/"+oIe),iA&&E.push(iA),l.tag&&E.push(l.tag),h(`[${E.join("] [")}]: ${p}`)}}}if(o(m,"logPrepend"),s&&(sA=f),l=new OM({stdout:m(i??u),stderr:m(i??d),colorMode:r??!1},c),R3(l),l.path=e,Object.defineProperty(l,"path",{get(){return e},set(h){e=h,f=E3(e,l.rotation,s),s&&(sA=f)},enumerable:!0}),l.closeLogFile=f?.closeLogFile,l.logToStdstreams=r,!a){let h=new Map;l.forComponent=function(p){let E=h.get(p);return E||(E=oA({path:e,level:t,stdStreams:r,isExternalInstance:p==="external",rotation:n,writeToLog:i,component:!0}),h.set(p,E)),E},l.hasComponent=function(p){return h.has(p)}}return l}o(oA,"createLogger");var _3=100;function E3(e,t,r){let n=h3.get(e),s,i,a,c,l=0;n||(n=d,n.closeLogFile=m,n.path=e,h3.set(e,n)),g3&&JSON.stringify(t)!==JSON.stringify(n.rotation)&&(n.rotation=t,setTimeout(()=>{if(n.rotator?.end(),!t)return;let p=i3();try{n.rotator=p({logger:n,...t})}catch(E){n("Error initializing log rotator",E)}},100));let u=0;return n;function d(p){u++;let E=`${new Date().toISOString()} ${p}${p.endsWith(`
130
130
  `)?"":`
131
131
  `}`;c?(c.length<p3?c.push(E):c.length===p3&&c.push(`Maximum log buffer rate reached, logs will be throttled
132
- `),Zf&&(clearTimeout(a),f())):Zf||l<performance.now()+_3?f(E):(l=Math.min(l,performance.now()+_3),c=[E],a=setTimeout(f,1))}function f(p){if(h(),s){let E=performance.now();ba.appendFileSync(s,c?c.join(""):p);let g=performance.now();l=Math.max(g,l)+(g-E)*50}else i||console.log(c?c.join(""):p);c&&(c=null)}function m(){try{ba.closeSync(s)}catch{}s=null,r&&(nA=null)}function h(p){if(!s){try{s=ba.openSync(e,"a"),r&&(nA=s)}catch(E){if(E.code==="ENOENT"&&!p)return ba.mkdirpSync(q_.dirname(e)),h(!0);i||(i=!0,console.error(E))}setTimeout(()=>{m()},fIe).unref()}}}o(E3,"getFileLogger");function EIe(...e){Dt.info(...e)}o(EIe,"info");function gIe(...e){Dt.trace(...e)}o(gIe,"trace");function PM(...e){Dt.error(...e)}o(PM,"error");function SIe(...e){Dt.debug(...e)}o(SIe,"debug");function TIe(...e){Dt.notify(...e)}o(TIe,"notify");function RIe(...e){Dt.fatal(...e)}o(RIe,"fatal");function yIe(...e){Dt.warn(...e)}o(yIe,"warn");function AIe(e,t,r,...n){CM=r.service_name;try{Dt[e](...n)}finally{CM=void 0}}o(AIe,"logCustomLevel");function bIe(){let e;try{e=aIe.homedir()}catch{e=process.env.HOME}e||(e="~/");let t=Na(e,qr.HDB_HOME_DIR_NAME,qr.BOOT_PROPS_FILE_NAME);return ba.existsSync(t)||(t=Na(DM,"utility/hdb_boot_properties.file")),t}o(bIe,"getPropsFilePath");function NIe(e){try{if(e.includes("config/settings.js")){let l=T3(e);return{level:l.get(qr.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY),configLogPath:q_.dirname(l.get(qr.HDB_SETTINGS_NAMES.LOG_PATH_KEY)),toFile:l.get(qr.HDB_SETTINGS_NAMES.LOG_TO_FILE),toStream:l.get(qr.HDB_SETTINGS_NAMES.LOG_TO_STDSTREAMS)}}let t=S3.parseDocument(ba.readFileSync(e,"utf8")),r=t.getIn(["logging","level"]),n=t.getIn(["logging","root"]),s=t.getIn(["logging","file"]),i=t.getIn(["logging","stdStreams"]),a=t.getIn(["logging","console"]),c=t.getIn(["logging","rotation"])?.toJSON();return{level:r,configLogPath:n,toFile:s,toStream:i,logConsole:a,rotation:c}}catch(t){if(t.code===qr.NODE_ERROR_CODES.ENOENT)throw t;console.error("Error accessing config file for logging"),console.error(t)}}o(NIe,"getLogConfig");function IIe(){try{let e=S3.parseDocument(ba.readFileSync(dIe,"utf8")),t=e.getIn(["logging","level"]),r=e.getIn(["logging","file"]),n=e.getIn(["logging","stdStreams"]);return{defaultLevel:t,defaultToFile:r,defaultToStream:n}}catch(e){console.error("Error accessing default config file for logging"),console.error(e)}}o(IIe,"getDefaultConfig");function wIe(e){return typeof e.message=="string"?`${e.constructor.name}: ${e.message}`:e.toString()}o(wIe,"errorToString");function OIe(e){Dt=e}o(OIe,"setMainLogger");function b3(){try{ba.closeSync(nA)}catch{}nA=null}o(b3,"closeLogFile");function CIe(e,t,r,n,s,i){this.username=e,this.status=t,this.type=r,this.originating_ip=n,this.request_method=s,this.path=i}o(CIe,"AuthAuditLog");var{RootConfigWatcher:PIe}=(d3(),v(u3))});var ae=M((C3,P3)=>{"use strict";var LM=require("fs-extra"),Ou=require("path"),N3=require("os"),DIe=require("properties-reader"),K_=z(),V_=se(),Be=(H(),v($)),cA=ht(),LIe="Error initializing environment manager",lA="BOOT_PROPS_FILE_PATH",I3=!1,MIe={[Be.HDB_SETTINGS_NAMES.INSTALL_USER]:!0,[Be.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]:!0,[Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]:!0,BOOT_PROPS_FILE_PATH:!0},Ia={};Object.assign(C3,P3.exports={BOOT_PROPS_FILE_PATH:lA,getHdbBasePath:vIe,setHdbBasePath:UIe,get:w3,initSync:BIe,setProperty:Qe,initTestEnvironment:HIe,setCloneVar:FIe});function vIe(){return Ia[Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]}o(vIe,"getHdbBasePath");function UIe(e){Ia[Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=e}o(UIe,"setHdbBasePath");function w3(e){let t=cA.getConfigValue(e);return t===void 0?Ia[e]:t}o(w3,"get");function Qe(e,t){MIe[e]&&(Ia[e]=t),cA.updateConfigObject(e,t)}o(Qe,"setProperty");function xIe(){let e;try{e=V_.getPropsFilePath(),LM.accessSync(e,LM.constants.F_OK|LM.constants.R_OK),I3=!0;let t=DIe(e);return Ia[Be.HDB_SETTINGS_NAMES.INSTALL_USER]=t.get(Be.HDB_SETTINGS_NAMES.INSTALL_USER),Ia[Be.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]=t.get(Be.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY),Ia[lA]=e,!0}catch{return K_.trace(`Environment manager found no properties file at ${e}`),!1}}o(xIe,"doesPropFileExist");function BIe(e=!1){try{((I3||xIe()||V_.noBootFile())&&!O3||e)&&(cA.initConfig(e),Ia[Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=cA.getConfigValue(Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY))}catch(t){K_.error(LIe),K_.error(t),console.error(t),process.exit(1)}}o(BIe,"initSync");var O3=!1;function FIe(e){O3=e}o(FIe,"setCloneVar");function HIe(e={}){try{let{keep_alive_timeout:t,headers_timeout:r,server_timeout:n,https_enabled:s,cors_enabled:i,cors_accesslist:a,local_studio_on:c}=e,l=Ou.join(__dirname,"../../","unitTests");Ia[lA]=Ou.join(l,"hdb_boot_properties.file"),Qe(Be.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY,Ou.join(l,"settings.test")),Qe(Be.HDB_SETTINGS_NAMES.INSTALL_USER,N3.userInfo()?N3.userInfo().username:void 0),Qe(Be.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY,"debug"),Qe(Be.HDB_SETTINGS_NAMES.LOG_PATH_KEY,Ou.join(l,"envDir","log")),Qe(Be.HDB_SETTINGS_NAMES.LOG_DAILY_ROTATE_KEY,!1),Qe(Be.HDB_SETTINGS_NAMES.CLUSTERING_ENABLED_KEY,!0),Qe(Be.HDB_SETTINGS_NAMES.CLUSTERING_NODE_NAME_KEY,"1231412de213"),Qe(Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY,Ou.join(l,"envDir")),Qe(Be.CONFIG_PARAMS.STORAGE_PATH,Ou.join(l,"envDir")),s&&(Qe(Be.CONFIG_PARAMS.HTTP_SECUREPORT,w3(Be.CONFIG_PARAMS.HTTP_PORT)),Qe(Be.CONFIG_PARAMS.HTTP_PORT,null)),Qe(Be.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HTTPS,!!s),Qe(Be.CONFIG_PARAMS.HTTP_PORT,9926),Qe(Be.HDB_SETTINGS_NAMES.SERVER_PORT_KEY,9925),Qe(Be.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_PORT,9925),Qe(Be.HDB_SETTINGS_NAMES.CORS_ENABLED_KEY,V_.isEmpty(i)?!1:i),Qe(Be.CONFIG_PARAMS.HTTP_CORS,V_.isEmpty(i)?!1:i),Qe(Be.HDB_SETTINGS_NAMES.MAX_CUSTOM_FUNCTION_PROCESSES,2),Qe(Be.HDB_SETTINGS_NAMES.MAX_HDB_PROCESSES,4),Qe(Be.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_PORT_KEY,9926),Qe(Be.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_ENABLED_KEY,!0),Qe(Be.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_DIRECTORY_KEY,Ou.resolve(__dirname,"../../unitTests/server/fastifyRoutes/custom_functions")),Qe(Be.HDB_SETTINGS_NAMES.LOCAL_STUDIO_ON,V_.isEmpty(c)?!1:c),a&&(Qe("CORS_ACCESSLIST",a),Qe(Be.CONFIG_PARAMS.HTTP_CORSACCESSLIST,a)),n&&(Qe(Be.HDB_SETTINGS_NAMES.SERVER_TIMEOUT_KEY,n),Qe(Be.CONFIG_PARAMS.HTTP_TIMEOUT,n)),t&&(Qe(Be.HDB_SETTINGS_NAMES.SERVER_KEEP_ALIVE_TIMEOUT_KEY,t),Qe(Be.CONFIG_PARAMS.HTTP_KEEPALIVETIMEOUT,t)),r&&(Qe(Be.HDB_SETTINGS_NAMES.SERVER_HEADERS_TIMEOUT_KEY,r),Qe(Be.CONFIG_PARAMS.HTTP_HEADERSTIMEOUT,r))}catch(t){let r=`Error reading in HDB environment variables from path ${lA}. Please check your boot props and settings files`;K_.fatal(r),K_.error(t)}}o(HIe,"initTestEnvironment")});var MM=M((MGe,v3)=>{"use strict";var dA=ae();dA.initSync();var uA=(H(),v($)),{httpRequest:kIe}=se(),M3=require("path"),D3=require("fs-extra"),qIe=require("yaml"),{packageDirectory:GIe}=(aP(),v(oP)),{encode:$Ie}=require("cbor-x"),{initConfig:VIe}=ht(),KIe=["describe_table","describe_all","describe_database","list_users","list_roles","drop_role","add_user","alter_user","drop_user","restart_service","restart","create_database","drop_database","create_table","drop_table","create_attribute","drop_attribute","search_by_id","insert","update","upsert","delete","search_by_value","csv_file_load","csv_url_load","cluster_get_routes","cluster_network","cluster_status","remove_node","add_component","deploy_component","package_component","drop_component","get_components","get_component_file","set_component_file","registration_info","get_fingerprint","set_license","get_job","search_jobs_by_start_date","read_log","read_transaction_log","read_audit_log","delete_transaction_logs_before","purge_stream","delete_records_before","install_node_modules","set_configuration","get_configuration","create_authentication_tokens","refresh_operation_token","system_information","sql","create_csr","sign_certificate","list_certificates","add_certificate","remove_certificate","add_ssh_key","update_ssh_key","delete_ssh_key","list_ssh_keys","set_ssh_known_hosts","get_ssh_known_hosts","get_status","set_status","clear_status"],L3={deploy:"deploy_component",package:"package_component"};v3.exports={cliOperations:zIe,buildRequest:WIe};var YIe={deploy_component:o(async e=>{if(e.package)return;let t=process.cwd();e.payload=await GIe(t,{skip_node_modules:!0,...e}),e.cborEncode=!0,e.project||(e.project=M3.basename(t))},"deploy_component")};function WIe(){let e={};for(let t of process.argv.slice(2))if(KIe.includes(t))e.operation=t;else if(L3.hasOwnProperty(t))e.operation=L3[t];else if(t.includes("=")){let[r,...n]=t.split("=");n=n.join("=");try{n=JSON.parse(n)}catch{}e[r]=n}return e}o(WIe,"buildRequest");async function zIe(e){VIe(),e.target||(e.target=process.env.CLI_TARGET);let t;if(e.target){try{t=new URL(e.target)}catch(r){try{t=new URL(`https://${e.target}:9925`)}catch{throw r}}t={protocol:t.protocol,hostname:t.hostname,port:t.port,username:e.username||t.username||process.env.CLI_TARGET_USERNAME,password:e.password||t.password||process.env.CLI_TARGET_PASSWORD,rejectUnauthorized:e.rejectUnauthorized}}else D3.existsSync(M3.join(dA.get(uA.CONFIG_PARAMS.ROOTPATH),uA.HDB_PID_FILE))||(console.error("HarperDB must be running to perform this operation"),process.exit()),D3.existsSync(dA.get(uA.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET))||(console.error("No domain socket found, unable to perform this operation"),process.exit());await YIe[e.operation]?.(e);try{let r=t??{protocol:"http:",socketPath:dA.get(uA.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET)};r.method="POST",r.headers={"Content-Type":"application/json"},t?.username&&(r.headers.Authorization=`Basic ${Buffer.from(`${t.username}:${t.password}`).toString("base64")}`),e.cborEncode&&(r.headers["Content-Type"]="application/cbor",e=$Ie(e));let n=await kIe(r,e),s;try{s=JSON.parse(n.body)}catch{s={status:n.statusCode+" "+(n.statusMessage||"Unknown"),body:n.body}}return e.json?console.log(JSON.stringify(s,null,2)):console.log(qIe.stringify(s).trim()),s}catch(r){let n="Error: ";if(r?.response?.data?.error)n+=r.response.data.error;else if(r?.response?.data)n+=r?.response?.data;else return console.error(r);console.error(n)}}o(zIe,"cliOperations")});var B3=M((UGe,x3)=>{"use strict";var U3=require("semver/functions/major"),{packageJson:jIe}=dt(),vM=process.versions&&process.versions.node?process.versions.node:void 0;x3.exports=JIe;function JIe(){let e=jIe.engines["minimum-node"];if(vM&&U3(vM)<U3(e))return{error:`The minimum version of Node.js HarperDB supports is: ${e}, the currently installed Node.js version is: ${vM}. Please install a version of Node.js that is withing the defined range.`}}o(JIe,"checkNodeVersion")});var GM=M((FGe,iX)=>{"use strict";var F3=require("os"),fA=require("https"),H3=require("http"),Jt=require("fs-extra"),k3=require("yaml"),{pipeline:q3}=require("stream/promises"),{createWriteStream:mA,ensureDir:Y_,writeFileSync:G3}=require("fs-extra"),{join:ii}=require("path"),Y3=require("lodash"),QIe=require("minimist"),wa=require("path"),XIe=require("node:crypto"),ZIe=require("properties-reader"),si=ae(),ewe=Qo(),HM=z(),hA=ht(),{restart:twe}=Rc(),em=se(),rwe=va(),nwe=Us(),{main:pA,launch:swe}=kf(),{install:W3,updateConfigEnv:iwe,setIgnoreExisting:gA}=cy(),z3=WD(),Nn=(H(),v($)),{packageJson:owe}=dt(),awe=S_(),{sendOperationToNode:BM}=($n(),v(oo)),{updateConfigCert:cwe}=hn(),{restartWorkers:lwe}=st(),{databases:uwe}=(De(),v(at)),{set:dwe}=(Nf(),v(ER)),{HTTP_STATUS_CODES:j3}=$r(),{cliOperations:fwe}=MM(),FM=class extends Error{static{o(this,"CloneNodeError")}constructor(t,r=j3.INTERNAL_SERVER_ERROR){super(t),this.name="CloneNodeError",this.statusCode=r}},_A=class extends FM{static{o(this,"CloneSyncError")}constructor(t){super(t,j3.INTERNAL_SERVER_ERROR),this.name="CloneSyncError"}},{SYSTEM_TABLE_NAMES:UM,SYSTEM_SCHEMA_NAME:BGe,CONFIG_PARAMS:W_,OPERATIONS_ENUM:Ns}=Nn,mwe=1e4,hwe="clone-node-config.yaml",J3=[UM.ROLE_TABLE_NAME,UM.USER_TABLE_NAME,UM.NODE_TABLE_NAME],pwe={clustering_nodename:!0,clustering_leafserver_streams_path:!0,clustering_tls_certificate:!0,clustering_tls_privatekey:!0,clustering_tls_certificateauthority:!0,logging_file:!0,logging_root:!0,logging_rotation_path:!0,operationsapi_network_domainsocket:!0,operationsapi_tls_certificate:!0,operationsapi_tls_privatekey:!0,operationsapi_tls_certificateauthority:!0,rootpath:!0,storage_path:!0,storage_audit_path:!0,databases:!0,mqtt_network_mtls_certificateauthority:!0,componentsroot:!0,tls_certificate:!0,tls_privatekey:!0,tls_certificateauthority:!0,replication_hostname:!0,replication_url:!0,cloned:!0},rn={HDB_LEADER_USERNAME:"HDB_LEADER_USERNAME",HDB_LEADER_PASSWORD:"HDB_LEADER_PASSWORD",HDB_LEADER_URL:"HDB_LEADER_URL",REPLICATION_HOSTNAME:"REPLICATION_HOSTNAME",HDB_CLONE_OVERTOP:"HDB_CLONE_OVERTOP",CLONE_KEYS:"CLONE_KEYS",CLONE_USING_WS:"CLONE_USING_WS",NO_START:"NO_START"},Ca=QIe(process.argv),tm=Ca[rn.HDB_LEADER_USERNAME]??process.env[rn.HDB_LEADER_USERNAME],rm=Ca[rn.HDB_LEADER_PASSWORD]??process.env[rn.HDB_LEADER_PASSWORD],Pu=Ca[rn.HDB_LEADER_URL]??process.env[rn.HDB_LEADER_URL],Oa=Ca[rn.REPLICATION_HOSTNAME]??process.env[rn.REPLICATION_HOSTNAME],Q3,X3;Oa&&([Q3,X3]=Oa.split(":"));var kM=(Ca[rn.HDB_CLONE_OVERTOP]??process.env[rn.HDB_CLONE_OVERTOP])==="true",Z3=Ca[W_.CLONED.toUpperCase()]??process.env[W_.CLONED.toUpperCase()],_we=Ca[rn.CLONE_KEYS]!=="false"&&process.env[rn.CLONE_KEYS]!=="false",eX=(Ca[rn.CLONE_USING_WS]??process.env[rn.CLONE_USING_WS])==="true",tX=(Ca[rn.NO_START]??process.env[rn.NO_START])==="true",bs,qc={},$3,V3,Cu={},bn,Ft,ni,yo,Du=!1,qM=!1,As,nm;iX.exports=o(async function(t=!1,r=!1){if(console.info(`Starting clone node from leader node: ${Pu}`),delete process.env.HDB_LEADER_URL,Ft=em.getEnvCliRootPath(),!Ft)try{let i=ii(F3.homedir(),Nn.HDB_HOME_DIR_NAME,Nn.BOOT_PROPS_FILE_NAME);if(await Jt.pathExists(i)){let a=ZIe(i);Ft=wa.parse(a.get(Nn.BOOT_PROP_PARAMS.SETTINGS_PATH_KEY)).dir}}catch{throw new Error("There was an error setting the clone default root path. Please set ROOTPATH using an environment or CLI variable.")}Ft?await Jt.pathExists(Ft)?console.log(`Existing HarperDB install found at ${Ft}. Clone node will only clone items that do not already exist on clone.`):(console.log(`No HarperDB install found at ${Ft} starting fresh clone`),Du=!0):(console.log("No HarperDB install found, starting fresh clone"),Du=!0),Ft||(Ft=ii(F3.homedir(),Nn.HDB_ROOT_DIR_NAME),console.log("Using default root path",Ft)),si.setHdbBasePath(Ft);let n;try{n=ii(Ft,hwe),bs=k3.parseDocument(await Jt.readFile(n,"utf8"),{simpleKeys:!0}).toJSON(),console.log("Clone config file found")}catch{}let s=ii(Ft,Nn.HDB_CONFIG_FILE);if(await Jt.pathExists(s))try{$3=k3.parseDocument(await Jt.readFile(s,"utf8"),{simpleKeys:!0}).toJSON(),qc=hA.flattenConfig($3)}catch(i){console.error("Error reading existing harperdb-config.yaml on clone",i)}if(Oa){let i=new URL(Pu);nm=`${i.protocol==="https:"?"wss://":"ws://"}${i.hostname}:${X3||9933}`}if(eX){await Ewe();return}if(qc?.cloned&&Z3!=="false")return console.log("Instance marked as cloned, clone will not run"),si.setCloneVar(!1),si.initSync(),pA();bn=await EA({operation:Ns.DESCRIBE_ALL}),await nX(),si.setCloneVar(!1),Jt.ensureDir(si.get(Nn.CONFIG_PARAMS.LOGGING_ROOT)),HM.initLogSettings(),await ywe(),qM||await Awe(),await Iwe(t,r),Oa&&(await Owe(),await rX()),console.info(`
132
+ `),Zf&&(clearTimeout(a),f())):Zf||l<performance.now()+_3?f(E):(l=Math.min(l,performance.now()+_3),c=[E],a=setTimeout(f,1))}function f(p){if(h(),s){let E=performance.now();ba.appendFileSync(s,c?c.join(""):p);let g=performance.now();l=Math.max(g,l)+(g-E)*50}else i||console.log(c?c.join(""):p);c&&(c=null)}function m(){try{ba.closeSync(s)}catch{}s=null,r&&(nA=null)}function h(p){if(!s){try{s=ba.openSync(e,"a"),r&&(nA=s)}catch(E){if(E.code==="ENOENT"&&!p)return ba.mkdirpSync(q_.dirname(e)),h(!0);i||(i=!0,console.error(E))}setTimeout(()=>{m()},fIe).unref()}}}o(E3,"getFileLogger");function EIe(...e){Dt.info(...e)}o(EIe,"info");function gIe(...e){Dt.trace(...e)}o(gIe,"trace");function PM(...e){Dt.error(...e)}o(PM,"error");function SIe(...e){Dt.debug(...e)}o(SIe,"debug");function TIe(...e){Dt.notify(...e)}o(TIe,"notify");function RIe(...e){Dt.fatal(...e)}o(RIe,"fatal");function yIe(...e){Dt.warn(...e)}o(yIe,"warn");function AIe(e,t,r,...n){CM=r.service_name;try{Dt[e](...n)}finally{CM=void 0}}o(AIe,"logCustomLevel");function bIe(){let e;try{e=aIe.homedir()}catch{e=process.env.HOME}e||(e="~/");let t=Na(e,qr.HDB_HOME_DIR_NAME,qr.BOOT_PROPS_FILE_NAME);return ba.existsSync(t)||(t=Na(DM,"utility/hdb_boot_properties.file")),t}o(bIe,"getPropsFilePath");function NIe(e){try{if(e.includes("config/settings.js")){let l=T3(e);return{level:l.get(qr.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY),configLogPath:q_.dirname(l.get(qr.HDB_SETTINGS_NAMES.LOG_PATH_KEY)),toFile:l.get(qr.HDB_SETTINGS_NAMES.LOG_TO_FILE),toStream:l.get(qr.HDB_SETTINGS_NAMES.LOG_TO_STDSTREAMS)}}let t=S3.parseDocument(ba.readFileSync(e,"utf8")),r=t.getIn(["logging","level"]),n=t.getIn(["logging","root"]),s=t.getIn(["logging","file"]),i=t.getIn(["logging","stdStreams"]),a=t.getIn(["logging","console"]),c=t.getIn(["logging","rotation"])?.toJSON();return{level:r,configLogPath:n,toFile:s,toStream:i,logConsole:a,rotation:c}}catch(t){if(t.code===qr.NODE_ERROR_CODES.ENOENT)throw t;console.error("Error accessing config file for logging"),console.error(t)}}o(NIe,"getLogConfig");function IIe(){try{let e=S3.parseDocument(ba.readFileSync(dIe,"utf8")),t=e.getIn(["logging","level"]),r=e.getIn(["logging","file"]),n=e.getIn(["logging","stdStreams"]);return{defaultLevel:t,defaultToFile:r,defaultToStream:n}}catch(e){console.error("Error accessing default config file for logging"),console.error(e)}}o(IIe,"getDefaultConfig");function wIe(e){return typeof e.message=="string"?`${e.constructor.name}: ${e.message}`:e.toString()}o(wIe,"errorToString");function OIe(e){Dt=e}o(OIe,"setMainLogger");function b3(){try{ba.closeSync(nA)}catch{}nA=null}o(b3,"closeLogFile");function CIe(e,t,r,n,s,i){this.username=e,this.status=t,this.type=r,this.originating_ip=n,this.request_method=s,this.path=i}o(CIe,"AuthAuditLog");var{RootConfigWatcher:PIe}=(d3(),v(u3))});var ae=M((C3,P3)=>{"use strict";var LM=require("fs-extra"),Ou=require("path"),N3=require("os"),DIe=require("properties-reader"),K_=z(),V_=se(),Be=(H(),v($)),cA=ht(),LIe="Error initializing environment manager",lA="BOOT_PROPS_FILE_PATH",I3=!1,MIe={[Be.HDB_SETTINGS_NAMES.INSTALL_USER]:!0,[Be.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]:!0,[Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]:!0,BOOT_PROPS_FILE_PATH:!0},Ia={};Object.assign(C3,P3.exports={BOOT_PROPS_FILE_PATH:lA,getHdbBasePath:vIe,setHdbBasePath:UIe,get:w3,initSync:BIe,setProperty:Qe,initTestEnvironment:HIe,setCloneVar:FIe});function vIe(){return Ia[Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]}o(vIe,"getHdbBasePath");function UIe(e){Ia[Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=e}o(UIe,"setHdbBasePath");function w3(e){let t=cA.getConfigValue(e);return t===void 0?Ia[e]:t}o(w3,"get");function Qe(e,t){MIe[e]&&(Ia[e]=t),cA.updateConfigObject(e,t)}o(Qe,"setProperty");function xIe(){let e;try{e=V_.getPropsFilePath(),LM.accessSync(e,LM.constants.F_OK|LM.constants.R_OK),I3=!0;let t=DIe(e);return Ia[Be.HDB_SETTINGS_NAMES.INSTALL_USER]=t.get(Be.HDB_SETTINGS_NAMES.INSTALL_USER),Ia[Be.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]=t.get(Be.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY),Ia[lA]=e,!0}catch{return K_.trace(`Environment manager found no properties file at ${e}`),!1}}o(xIe,"doesPropFileExist");function BIe(e=!1){try{((I3||xIe()||V_.noBootFile())&&!O3||e)&&(cA.initConfig(e),Ia[Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=cA.getConfigValue(Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY))}catch(t){K_.error(LIe),K_.error(t),console.error(t),process.exit(1)}}o(BIe,"initSync");var O3=!1;function FIe(e){O3=e}o(FIe,"setCloneVar");function HIe(e={}){try{let{keep_alive_timeout:t,headers_timeout:r,server_timeout:n,https_enabled:s,cors_enabled:i,cors_accesslist:a,local_studio_on:c}=e,l=Ou.join(__dirname,"../../","unitTests");Ia[lA]=Ou.join(l,"hdb_boot_properties.file"),Qe(Be.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY,Ou.join(l,"settings.test")),Qe(Be.HDB_SETTINGS_NAMES.INSTALL_USER,N3.userInfo()?N3.userInfo().username:void 0),Qe(Be.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY,"debug"),Qe(Be.HDB_SETTINGS_NAMES.LOG_PATH_KEY,Ou.join(l,"envDir","log")),Qe(Be.HDB_SETTINGS_NAMES.LOG_DAILY_ROTATE_KEY,!1),Qe(Be.HDB_SETTINGS_NAMES.CLUSTERING_ENABLED_KEY,!0),Qe(Be.HDB_SETTINGS_NAMES.CLUSTERING_NODE_NAME_KEY,"1231412de213"),Qe(Be.HDB_SETTINGS_NAMES.HDB_ROOT_KEY,Ou.join(l,"envDir")),Qe(Be.CONFIG_PARAMS.STORAGE_PATH,Ou.join(l,"envDir")),s&&(Qe(Be.CONFIG_PARAMS.HTTP_SECUREPORT,w3(Be.CONFIG_PARAMS.HTTP_PORT)),Qe(Be.CONFIG_PARAMS.HTTP_PORT,null)),Qe(Be.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HTTPS,!!s),Qe(Be.CONFIG_PARAMS.HTTP_PORT,9926),Qe(Be.HDB_SETTINGS_NAMES.SERVER_PORT_KEY,9925),Qe(Be.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_PORT,9925),Qe(Be.HDB_SETTINGS_NAMES.CORS_ENABLED_KEY,V_.isEmpty(i)?!1:i),Qe(Be.CONFIG_PARAMS.HTTP_CORS,V_.isEmpty(i)?!1:i),Qe(Be.HDB_SETTINGS_NAMES.MAX_CUSTOM_FUNCTION_PROCESSES,2),Qe(Be.HDB_SETTINGS_NAMES.MAX_HDB_PROCESSES,4),Qe(Be.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_PORT_KEY,9926),Qe(Be.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_ENABLED_KEY,!0),Qe(Be.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_DIRECTORY_KEY,Ou.resolve(__dirname,"../../unitTests/server/fastifyRoutes/custom_functions")),Qe(Be.HDB_SETTINGS_NAMES.LOCAL_STUDIO_ON,V_.isEmpty(c)?!1:c),a&&(Qe("CORS_ACCESSLIST",a),Qe(Be.CONFIG_PARAMS.HTTP_CORSACCESSLIST,a)),n&&(Qe(Be.HDB_SETTINGS_NAMES.SERVER_TIMEOUT_KEY,n),Qe(Be.CONFIG_PARAMS.HTTP_TIMEOUT,n)),t&&(Qe(Be.HDB_SETTINGS_NAMES.SERVER_KEEP_ALIVE_TIMEOUT_KEY,t),Qe(Be.CONFIG_PARAMS.HTTP_KEEPALIVETIMEOUT,t)),r&&(Qe(Be.HDB_SETTINGS_NAMES.SERVER_HEADERS_TIMEOUT_KEY,r),Qe(Be.CONFIG_PARAMS.HTTP_HEADERSTIMEOUT,r))}catch(t){let r=`Error reading in HDB environment variables from path ${lA}. Please check your boot props and settings files`;K_.fatal(r),K_.error(t)}}o(HIe,"initTestEnvironment")});var MM=M((MGe,v3)=>{"use strict";var dA=ae();dA.initSync();var uA=(H(),v($)),{httpRequest:kIe}=se(),M3=require("path"),D3=require("fs-extra"),qIe=require("yaml"),{packageDirectory:GIe}=(aP(),v(oP)),{encode:$Ie}=require("cbor-x"),{initConfig:VIe}=ht(),KIe=["describe_table","describe_all","describe_database","list_users","list_roles","drop_role","add_user","alter_user","drop_user","restart_service","restart","create_database","drop_database","create_table","drop_table","create_attribute","drop_attribute","search_by_id","insert","update","upsert","delete","search_by_value","csv_file_load","csv_url_load","cluster_get_routes","cluster_network","cluster_status","remove_node","add_component","deploy_component","package_component","drop_component","get_components","get_component_file","set_component_file","registration_info","get_fingerprint","set_license","get_job","search_jobs_by_start_date","read_log","read_transaction_log","read_audit_log","delete_transaction_logs_before","purge_stream","delete_records_before","install_node_modules","set_configuration","get_configuration","create_authentication_tokens","refresh_operation_token","system_information","sql","create_csr","sign_certificate","list_certificates","add_certificate","remove_certificate","add_ssh_key","update_ssh_key","delete_ssh_key","list_ssh_keys","set_ssh_known_hosts","get_ssh_known_hosts","get_status","set_status","clear_status"],L3={deploy:"deploy_component",package:"package_component"};v3.exports={cliOperations:zIe,buildRequest:WIe};var YIe={deploy_component:o(async e=>{if(e.package)return;let t=process.cwd();e.payload=await GIe(t,{skip_node_modules:!0,...e}),e.cborEncode=!0,e.project||(e.project=M3.basename(t))},"deploy_component")};function WIe(){let e={};for(let t of process.argv.slice(2))if(KIe.includes(t))e.operation=t;else if(L3.hasOwnProperty(t))e.operation=L3[t];else if(t.includes("=")){let[r,...n]=t.split("=");n=n.join("=");try{n=JSON.parse(n)}catch{}e[r]=n}return e}o(WIe,"buildRequest");async function zIe(e){e.target||(e.target=process.env.CLI_TARGET);let t;if(e.target){try{t=new URL(e.target)}catch(r){try{t=new URL(`https://${e.target}:9925`)}catch{throw r}}t={protocol:t.protocol,hostname:t.hostname,port:t.port,username:e.username||t.username||process.env.CLI_TARGET_USERNAME,password:e.password||t.password||process.env.CLI_TARGET_PASSWORD,rejectUnauthorized:e.rejectUnauthorized}}else VIe(),D3.existsSync(M3.join(dA.get(uA.CONFIG_PARAMS.ROOTPATH),uA.HDB_PID_FILE))||(console.error("HarperDB must be running to perform this operation"),process.exit()),D3.existsSync(dA.get(uA.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET))||(console.error("No domain socket found, unable to perform this operation"),process.exit());await YIe[e.operation]?.(e);try{let r=t??{protocol:"http:",socketPath:dA.get(uA.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET)};r.method="POST",r.headers={"Content-Type":"application/json"},t?.username&&(r.headers.Authorization=`Basic ${Buffer.from(`${t.username}:${t.password}`).toString("base64")}`),e.cborEncode&&(r.headers["Content-Type"]="application/cbor",e=$Ie(e));let n=await kIe(r,e),s;try{s=JSON.parse(n.body)}catch{s={status:n.statusCode+" "+(n.statusMessage||"Unknown"),body:n.body}}return e.json?console.log(JSON.stringify(s,null,2)):console.log(qIe.stringify(s).trim()),s}catch(r){let n="Error: ";if(r?.response?.data?.error)n+=r.response.data.error;else if(r?.response?.data)n+=r?.response?.data;else return console.error(r);console.error(n)}}o(zIe,"cliOperations")});var B3=M((UGe,x3)=>{"use strict";var U3=require("semver/functions/major"),{packageJson:jIe}=dt(),vM=process.versions&&process.versions.node?process.versions.node:void 0;x3.exports=JIe;function JIe(){let e=jIe.engines["minimum-node"];if(vM&&U3(vM)<U3(e))return{error:`The minimum version of Node.js HarperDB supports is: ${e}, the currently installed Node.js version is: ${vM}. Please install a version of Node.js that is withing the defined range.`}}o(JIe,"checkNodeVersion")});var GM=M((FGe,iX)=>{"use strict";var F3=require("os"),fA=require("https"),H3=require("http"),Jt=require("fs-extra"),k3=require("yaml"),{pipeline:q3}=require("stream/promises"),{createWriteStream:mA,ensureDir:Y_,writeFileSync:G3}=require("fs-extra"),{join:ii}=require("path"),Y3=require("lodash"),QIe=require("minimist"),wa=require("path"),XIe=require("node:crypto"),ZIe=require("properties-reader"),si=ae(),ewe=Qo(),HM=z(),hA=ht(),{restart:twe}=Rc(),em=se(),rwe=va(),nwe=Us(),{main:pA,launch:swe}=kf(),{install:W3,updateConfigEnv:iwe,setIgnoreExisting:gA}=cy(),z3=WD(),Nn=(H(),v($)),{packageJson:owe}=dt(),awe=S_(),{sendOperationToNode:BM}=($n(),v(oo)),{updateConfigCert:cwe}=hn(),{restartWorkers:lwe}=st(),{databases:uwe}=(De(),v(at)),{set:dwe}=(Nf(),v(ER)),{HTTP_STATUS_CODES:j3}=$r(),{cliOperations:fwe}=MM(),FM=class extends Error{static{o(this,"CloneNodeError")}constructor(t,r=j3.INTERNAL_SERVER_ERROR){super(t),this.name="CloneNodeError",this.statusCode=r}},_A=class extends FM{static{o(this,"CloneSyncError")}constructor(t){super(t,j3.INTERNAL_SERVER_ERROR),this.name="CloneSyncError"}},{SYSTEM_TABLE_NAMES:UM,SYSTEM_SCHEMA_NAME:BGe,CONFIG_PARAMS:W_,OPERATIONS_ENUM:Ns}=Nn,mwe=1e4,hwe="clone-node-config.yaml",J3=[UM.ROLE_TABLE_NAME,UM.USER_TABLE_NAME,UM.NODE_TABLE_NAME],pwe={clustering_nodename:!0,clustering_leafserver_streams_path:!0,clustering_tls_certificate:!0,clustering_tls_privatekey:!0,clustering_tls_certificateauthority:!0,logging_file:!0,logging_root:!0,logging_rotation_path:!0,operationsapi_network_domainsocket:!0,operationsapi_tls_certificate:!0,operationsapi_tls_privatekey:!0,operationsapi_tls_certificateauthority:!0,rootpath:!0,storage_path:!0,storage_audit_path:!0,databases:!0,mqtt_network_mtls_certificateauthority:!0,componentsroot:!0,tls_certificate:!0,tls_privatekey:!0,tls_certificateauthority:!0,replication_hostname:!0,replication_url:!0,cloned:!0},rn={HDB_LEADER_USERNAME:"HDB_LEADER_USERNAME",HDB_LEADER_PASSWORD:"HDB_LEADER_PASSWORD",HDB_LEADER_URL:"HDB_LEADER_URL",REPLICATION_HOSTNAME:"REPLICATION_HOSTNAME",HDB_CLONE_OVERTOP:"HDB_CLONE_OVERTOP",CLONE_KEYS:"CLONE_KEYS",CLONE_USING_WS:"CLONE_USING_WS",NO_START:"NO_START"},Ca=QIe(process.argv),tm=Ca[rn.HDB_LEADER_USERNAME]??process.env[rn.HDB_LEADER_USERNAME],rm=Ca[rn.HDB_LEADER_PASSWORD]??process.env[rn.HDB_LEADER_PASSWORD],Pu=Ca[rn.HDB_LEADER_URL]??process.env[rn.HDB_LEADER_URL],Oa=Ca[rn.REPLICATION_HOSTNAME]??process.env[rn.REPLICATION_HOSTNAME],Q3,X3;Oa&&([Q3,X3]=Oa.split(":"));var kM=(Ca[rn.HDB_CLONE_OVERTOP]??process.env[rn.HDB_CLONE_OVERTOP])==="true",Z3=Ca[W_.CLONED.toUpperCase()]??process.env[W_.CLONED.toUpperCase()],_we=Ca[rn.CLONE_KEYS]!=="false"&&process.env[rn.CLONE_KEYS]!=="false",eX=(Ca[rn.CLONE_USING_WS]??process.env[rn.CLONE_USING_WS])==="true",tX=(Ca[rn.NO_START]??process.env[rn.NO_START])==="true",bs,qc={},$3,V3,Cu={},bn,Ft,ni,yo,Du=!1,qM=!1,As,nm;iX.exports=o(async function(t=!1,r=!1){if(console.info(`Starting clone node from leader node: ${Pu}`),delete process.env.HDB_LEADER_URL,Ft=em.getEnvCliRootPath(),!Ft)try{let i=ii(F3.homedir(),Nn.HDB_HOME_DIR_NAME,Nn.BOOT_PROPS_FILE_NAME);if(await Jt.pathExists(i)){let a=ZIe(i);Ft=wa.parse(a.get(Nn.BOOT_PROP_PARAMS.SETTINGS_PATH_KEY)).dir}}catch{throw new Error("There was an error setting the clone default root path. Please set ROOTPATH using an environment or CLI variable.")}Ft?await Jt.pathExists(Ft)?console.log(`Existing HarperDB install found at ${Ft}. Clone node will only clone items that do not already exist on clone.`):(console.log(`No HarperDB install found at ${Ft} starting fresh clone`),Du=!0):(console.log("No HarperDB install found, starting fresh clone"),Du=!0),Ft||(Ft=ii(F3.homedir(),Nn.HDB_ROOT_DIR_NAME),console.log("Using default root path",Ft)),si.setHdbBasePath(Ft);let n;try{n=ii(Ft,hwe),bs=k3.parseDocument(await Jt.readFile(n,"utf8"),{simpleKeys:!0}).toJSON(),console.log("Clone config file found")}catch{}let s=ii(Ft,Nn.HDB_CONFIG_FILE);if(await Jt.pathExists(s))try{$3=k3.parseDocument(await Jt.readFile(s,"utf8"),{simpleKeys:!0}).toJSON(),qc=hA.flattenConfig($3)}catch(i){console.error("Error reading existing harperdb-config.yaml on clone",i)}if(Oa){let i=new URL(Pu);nm=`${i.protocol==="https:"?"wss://":"ws://"}${i.hostname}:${X3||9933}`}if(eX){await Ewe();return}if(qc?.cloned&&Z3!=="false")return console.log("Instance marked as cloned, clone will not run"),si.setCloneVar(!1),si.initSync(),pA();bn=await EA({operation:Ns.DESCRIBE_ALL}),await nX(),si.setCloneVar(!1),Jt.ensureDir(si.get(Nn.CONFIG_PARAMS.LOGGING_ROOT)),HM.initLogSettings(),await ywe(),qM||await Awe(),await Iwe(t,r),Oa&&(await Owe(),await rX()),console.info(`
133
133
  Successfully cloned node: `+Pu),(t||tX)&&process.exit()},"cloneNode");async function Ewe(){if(qc?.cloned&&Z3!=="false")return console.log("Instance marked as cloned, clone will not run"),si.setCloneVar(!1),si.initSync(),pA();console.log("Cloning using WebSockets");let e=Gc("system"),t=ii(e,"system.mdb"),r=Jt.existsSync(t);Du||!r||kM?(console.info("Clone node installing HarperDB"),process.env.TC_AGREEMENT="yes",process.env.ROOTPATH=Ft,process.env.HDB_ADMIN_USERNAME="clone-temp-admin",process.env.HDB_ADMIN_PASSWORD=XIe.randomBytes(10).toString("base64").slice(0,10),gA(!0),await W3()):(si.setCloneVar(!1),si.initSync()),await pA(),await nX(!0),await cwe(),r||await uwe.system.hdb_user.delete({username:"clone-temp-admin"}),await lwe();let n=await gwe();console.log("Adding node to the cluster");let i=await cf()({operation:Ns.ADD_NODE,url:nm});console.log("Add node response: ",i),await rX();try{await Twe(n)}catch(a){console.error("Sync monitoring failed:",a.message)}console.log(`Successfully cloned node: ${Pu} using WebSockets`),hA.updateConfigValue(W_.CLONED,!0),tX&&process.exit()}o(Ewe,"cloneUsingWS");async function gwe(){let e=o(i=>{let a=0;for(let c in i){let l=i[c];typeof l=="object"&&l.last_updated_record>a&&(a=l.last_updated_record)}return a},"findMostRecentTimestamp");console.log("Getting last updated record timestamp for all database");let t={},r=await EA({operation:"describe_database",database:"system"});t.system=e(r);let n=await EA({operation:"describe_all"});for(let i in n)typeof n[i]=="object"&&(t[i]=e(n[i]));let s=ii(Ft,"tmp","lastUpdated.json");return console.log("Writing last updated database timestamps to:",s),await Jt.outputJson(s,t),t}o(gwe,"getLastUpdatedRecord");function Swe(){return process.env.CLONE_NODE_UPDATE_STATUS==="true"}o(Swe,"isStatusUpdateEnabled");async function Twe(e){if(!e||Object.keys(e).length===0)throw new _A("No target timestamps available to check synchronization status");let t=Math.max(1,parseInt(process.env.HDB_CLONE_SYNC_TIMEOUT)||3e5),r=Math.max(1,parseInt(process.env.HDB_CLONE_CHECK_INTERVAL)||1e4),n=Swe();console.log("Starting sync monitoring"),console.log(`Max wait time: ${t}ms, Check interval: ${r}ms`);let s=Date.now(),i=!1;for(;!i&&Date.now()-s<t;)try{if(i=await Rwe(e),i){if(console.log("All databases synchronized"),n)try{await dwe({id:"availability",status:"Available"}),console.log("Successfully updated availability status to Available")}catch(a){console.error("Error updating status:",a)}}else console.log(`Sync not complete, waiting ${r}ms before next check`),await em.asyncSetTimeout(r)}catch(a){console.error("Error checking cluster status:",a),await em.asyncSetTimeout(r)}if(!i)throw new _A(`Sync monitoring timed out after ${t}ms`)}o(Twe,"monitorSyncAndUpdateStatus");async function Rwe(e){let t=await fwe({operation:"cluster_status"});for(let r of t.connections)if(r.database_sockets)for(let n of r.database_sockets){let s=n.database,i=e[s];if(!i)continue;let a=n.lastReceivedRemoteTime;if(!a)return console.log(`Database ${s}: No data received yet`),!1;let c=new Date(a).getTime();if(c<i)return console.log(`Database ${s}: Not synchronized (received: ${c}, target: ${i})`),!1;console.log(`Database ${s}: Synchronized`)}return!0}o(Rwe,"checkSyncStatus");async function EA(e){return eX?BM({url:nm},e,{rejectUnauthorized:!1}):JSON.parse((await Cwe(e)).body)}o(EA,"leaderReq");async function rX(){try{if(_we!==!1){console.log("Cloning JWT keys");let e=wa.join(Ft,Nn.LICENSE_KEY_DIR_NAME),t=await BM({url:nm},{operation:Ns.GET_KEY,name:".jwtPublic"},{rejectUnauthorized:!1});G3(wa.join(e,Nn.JWT_ENUM.JWT_PUBLIC_KEY_NAME),t.message);let r=await BM({url:nm},{operation:Ns.GET_KEY,name:".jwtPrivate"},{rejectUnauthorized:!1});G3(wa.join(e,Nn.JWT_ENUM.JWT_PRIVATE_KEY_NAME),r.message)}}catch(e){console.error("Error cloning JWT keys",e)}}o(rX,"cloneKeys");async function nX(e=!1){console.info("Cloning configuration"),V3=await EA({operation:Ns.GET_CONFIGURATION}),Cu=hA.flattenConfig(V3);let t=bs?.componentConfig?.exclude,r={rootpath:Ft};Oa&&(r.replication_hostname=Q3);for(let i in Cu)if(!(Cu[i]!==null&&typeof Cu[i]=="object"&&!(Cu[i]instanceof Array)||pwe[i])){if(i.includes("_package")||i.includes("_port")){if(Cu[i]?.includes?.("hdb/components"))continue;if(t){let a=!1;for(let c of t)if(i.includes(c.name)){a=!0;break}if(a)continue}}qc[i]||(r[i]=Cu[i])}for(let i in qc)i!=="databases"&&typeof qc[i]=="object"&&!(qc[i]instanceof Array)||(r[i]=qc[i]);let n={};if(bs?.databaseConfig?.excludeDatabases&&bs.databaseConfig.excludeDatabases.forEach(i=>{n[i.database]=!0}),bs?.clusteringConfig?.excludeDatabases&&bs.clusteringConfig.excludeDatabases.forEach(i=>{n[i.database]=!0}),Object.keys(n).length>0){r.replication_databases=[],n.system||r.replication_databases.push("system");for(let i in bn)n[i]||r.replication_databases.push(i)}let s=rwe(Object.keys(Nn.CONFIG_PARAM_MAP),!0);Object.assign(r,s),e||(r.cloned=!0),hA.createConfigFile(r,!0)}o(nX,"cloneConfig");async function ywe(){process.env.HDB_FETCH==="true"?(await Nwe(),process.env.NODE_TLS_REJECT_UNAUTHORIZED&&delete process.env.NODE_TLS_REJECT_UNAUTHORIZED):await bwe()}o(ywe,"cloneDatabases");async function Awe(){if(console.info("Clone node installing HarperDB."),process.env.TC_AGREEMENT="yes",process.env.ROOTPATH=Ft,!tm)throw new Error("HDB_LEADER_USERNAME is undefined.");if(process.env.HDB_ADMIN_USERNAME=tm,!rm)throw new Error("HDB_LEADER_PASSWORD is undefined.");process.env.HDB_ADMIN_PASSWORD=rm,process.env.OPERATIONSAPI_NETWORK_PORT=si.get(W_.OPERATIONSAPI_NETWORK_PORT),iwe(wa.join(Ft,Nn.HDB_CONFIG_FILE)),gA(!0),await W3()}o(Awe,"installHDB");function Gc(e){return si.get(Nn.CONFIG_PARAMS.DATABASES)?.[e]?.path||si.get(W_.STORAGE_PATH)||wa.join(Ft,Nn.DATABASES_DIR_NAME)}o(Gc,"getDBPath");async function bwe(){let e=Gc("system"),t=ii(e,"system.mdb");if(await Y_(e),Du||!await Jt.exists(t)||kM){if(!Oa){console.info("Cloning system database"),await Y_(e);let r=mA(t,{overwrite:!0}),n={operation:Ns.GET_BACKUP,database:"system",tables:J3},s=await K3(n,r),i=new Date(s.date);(!As||i<As)&&(As=i),await Jt.utimes(t,Date.now(),i)}Du||(await z3(Ft),await sX(),gA(!0))}else qM=!0,console.log("Not cloning system database due to it already existing on clone");ni=bs?.databaseConfig?.excludeDatabases,ni=ni?ni.reduce((r,n)=>({...r,[n.database]:!0}),{}):{};for(let r in bn)await Jt.exists(wa.join(Gc(r),r+".mdb"))&&(console.log(`Not cloning database ${r} due to it already existing on clone`),ni[r]=!0);yo=bs?.databaseConfig?.excludeTables,yo=yo?yo.reduce((r,n)=>({...r,[n.database==null?null:n.database+n.table]:!0}),{}):{};for(let r in bn){if(ni[r]){bn[r]="excluded";continue}if(Y3.isEmpty(bn[r]))continue;let n=[],s=!1;for(let f in bn[r])yo[r+f]?(s=!0,bn[r][f]="excluded"):n.push(bn[r][f]);if(n.length===0)continue;if(Oa){HM.debug("Setting up tables for #{db}");let f=(De(),v(at)).table;for(let m of n){for(let h of m.attributes)(h.is_hash_attribute||h.is_primary_key)&&(h.isPrimaryKey=!0);f({database:r,table:m.name,attributes:m.attributes})}continue}n=n.map(f=>f.name);let i;s?(console.info(`Cloning database: ${r} tables: ${n}`),i={operation:Ns.GET_BACKUP,database:r,tables:n}):(console.info(`Cloning database: ${r}`),i={operation:Ns.GET_BACKUP,database:r});let a=Gc(r);await Y_(a);let c=ii(a,r+".mdb"),l=mA(c,{overwrite:!0}),u=await K3(i,l),d=new Date(u.date);(!As||d<As)&&(As=d),await Jt.utimes(c,Date.now(),d)}}o(bwe,"cloneTablesHttp");async function Nwe(){let e=Gc("system"),t=ii(e,"system.mdb");if(Du||!await Jt.exists(t)||kM){if(!Oa){console.info("Cloning system database using fetch");let r={operation:Ns.GET_BACKUP,database:"system",tables:J3},n=await xM(r,!0),s=Gc("system");await Y_(s);let i=ii(s,"system.mdb");await q3(n.body,mA(i,{overwrite:!0}));let a=new Date(n.headers.get("date"));(!As||a<As)&&(As=a),await Jt.utimes(i,Date.now(),new Date(n.headers.get("date")))}Du||(await z3(Ft),await sX(),gA(!0))}else qM=!0,console.log("Not cloning system database due to it already existing on clone");if(Oa){HM.info("Replication hostname set, not using backup to clone databases, replication will clone");return}ni=bs?.databaseConfig?.excludeDatabases,ni=ni?ni.reduce((r,n)=>({...r,[n.database]:!0}),{}):{};for(let r in bn)await Jt.exists(wa.join(Gc(r),r+".mdb"))&&(console.log(`Not cloning database ${r} due to it already existing on clone`),ni[r]=!0);yo=bs?.databaseConfig?.excludeTables,yo=yo?yo.reduce((r,n)=>({...r,[n.database==null?null:n.database+n.table]:!0}),{}):{};for(let r in bn){if(ni[r]){bn[r]="excluded";continue}if(Y3.isEmpty(bn[r]))continue;let n=[],s=!1;for(let d in bn[r])yo[r+d]?(s=!0,bn[r][d]="excluded"):n.push(d);if(n.length===0)return;let i;s?(console.info(`Cloning database: ${r} tables: ${n}`),i=await xM({operation:Ns.GET_BACKUP,database:r,tables:n},!0)):(console.info(`Cloning database: ${r}`),i=await xM({operation:Ns.GET_BACKUP,database:r},!0));let a=Gc(r);await Y_(a);let c=new Date(i.headers.get("date")),l=ii(a,`${c.getTime()}-${r}.mdb`);await q3(i.body,mA(l,{overwrite:!0}));let u=ii(a,r+".mdb");await Jt.rename(l,u),(!As||c<As)&&(As=c),await Jt.utimes(u,Date.now(),c)}}o(Nwe,"cloneTablesFetch");async function xM(e,t=!1){let r=bs?.httpsRejectUnauthorized??!1,n=new fA.Agent({rejectUnauthorized:r});r||(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0");let i={Authorization:"Basic "+Buffer.from(tm+":"+rm).toString("base64"),"Content-Type":"application/json"};t&&(i["Accept-Encoding"]="gzip");let a=await fetch(Pu,{method:"POST",headers:i,body:JSON.stringify(e),agent:n,compress:!0});if(a.ok)return a;throw console.error(`HTTP Error Response: ${a.status} ${a.statusText}`),new Error(await a.text())}o(xM,"leaderHttpReqFetch");async function Iwe(e,t=!1){let r=await ewe.getHDBProcessInfo();r.clustering.length===0||r.core.length===0?e?await swe(!1):(t&&await wwe(),await pA()):(console.info(await twe({operation:Ns.RESTART})),await em.asyncSetTimeout(mwe)),e&&await em.asyncSetTimeout(2e3)}o(Iwe,"startHDB");async function wwe(){let e=process.argv[3];e&&e[0]!=="-"&&(await Jt.exists(e)||console.error(`The folder ${e} does not exist`),Jt.statSync(e).isDirectory()||console.error(`The path ${e} is not a folder`),e=await Jt.realpath(e),await Jt.exists(wa.join(e,Nn.HDB_CONFIG_FILE))?process.env.ROOTPATH=e:process.env.RUN_HDB_APP=e)}o(wwe,"setAppPath");async function Owe(){console.info("Setting up replication"),await nwe.setSchemaDataToGlobalAsync();let t=await cf()({operation:Ns.ADD_NODE,verify_tls:!1,url:nm,startTime:As,authorization:{username:tm,password:rm}},!0);console.log("Add node response: ",t)}o(Owe,"setupReplication");async function Cwe(e){let t=new fA.Agent({rejectUnauthorized:bs?.httpsRejectUnauthorized??!1}),n={Authorization:"Basic "+Buffer.from(tm+":"+rm).toString("base64"),"Content-Type":"application/json"},s=new URL(Pu),i={protocol:s.protocol,host:s.hostname,method:"POST",headers:n};return s.protocol==="https:"&&(i.agent=t),s.port&&(i.port=s.port),await em.httpRequest(i,e)}o(Cwe,"leaderHttpReq");async function K3(e,t){let r=new fA.Agent({rejectUnauthorized:bs?.httpsRejectUnauthorized??!1}),s={Authorization:"Basic "+Buffer.from(tm+":"+rm).toString("base64"),"Content-Type":"application/json"},i=new URL(Pu),a={protocol:i.protocol,host:i.hostname,method:"POST",headers:s};return i.protocol==="https:"&&(a.agent=r,H3=fA),i.port&&(a.port=i.port),new Promise((c,l)=>{let u=H3.request(a,d=>{d.statusCode!==200&&l("Request to leader node failed with code: "+d.statusCode),d.pipe(t),d.on("end",()=>{t.close(),c(d.headers)})});u.on("error",d=>{l(d)}),u.write(JSON.stringify(e)),u.end()})}o(K3,"leaderHttpStream");async function sX(){let e=owe.version;if(e)await awe.insertHdbInstallInfo(e);else throw new Error("The version is missing/removed from HarperDB package.json")}o(sX,"insertHdbVersionInfo")});var aX=M((kGe,oX)=>{var Pwe=cy(),Dwe=z();oX.exports=Lwe;async function Lwe(){try{await Pwe.install()}catch(e){console.error("There was an error during the install."),console.error(e),Dwe.error(e),process.exit(1)}}o(Lwe,"install")});var uX=M((GGe,lX)=>{"use strict";var Mwe=kT(),vwe=z(),cX="Registration failed.";async function Uwe(){let e;try{e=await Mwe.register()}catch(t){return vwe.error(`Registration error ${t}`),cX}return e||cX}o(Uwe,"register");lX.exports={register:Uwe}});var hX=M((VGe,mX)=>{"use strict";var xwe=z(),Bwe=(H(),v($)),Fwe=require("util"),Hwe=require("child_process"),dX=Fwe.promisify(Hwe.exec),kwe=Qo(),z_=Sf(),fX="Stopping HarperDB.";mX.exports=qwe;async function qwe(){if(console.log(fX),xwe.notify(fX),await z_.isServiceRegistered(Bwe.PROCESS_DESCRIPTORS.HDB)){z_.enterPM2Mode();let r=await z_.getUniqueServicesList();for(let n in r)await z_.stop(n)}await z_.kill();let t=await kwe.getHDBProcessInfo();t.clustering.forEach(r=>{dX(`kill ${r.pid}`)}),t.core.forEach(r=>{dX(`kill ${r.pid}`)})}o(qwe,"stop")});var EX=M((YGe,_X)=>{"use strict";var VM=require("fs-extra"),KM=require("path"),$M=require("yaml"),j_=tr(),$c=(H(),v($)),pX=bt(),YM=z(),Gwe=Gn(),$we=vT(),Vwe=LT(),Kwe=Qo(),J_=ae(),Ywe=kf(),Wwe=se();J_.initSync();var oi={RUNNING:"running",STOPPED:"stopped",ERRORED:"errored",NOT_INSTALLED:"not installed"},Jn={LEAF:"leaf server",HUB:"hub server"},SA;_X.exports=zwe;async function zwe(){let e={harperdb:{status:oi.STOPPED}};if(!await Ywe.isHdbInstalled()){e.harperdb.status=oi.NOT_INSTALLED,console.log($M.stringify(e));return}SA=J_.get($c.CONFIG_PARAMS.ROOTPATH);let t;try{t=Number.parseInt(await VM.readFile(KM.join(SA,$c.HDB_PID_FILE),"utf8"))}catch(n){if(n.code===$c.NODE_ERROR_CODES.ENOENT){YM.info("`harperdb status` did not find a hdb.pid file"),e.harperdb.status=oi.STOPPED,console.log($M.stringify(e));return}throw n}let r=await Kwe.getHDBProcessInfo();for(let n of r.core)if(n.pid===t){e.harperdb.status=oi.RUNNING,e.harperdb.pid=t;break}if((J_.get($c.CONFIG_PARAMS.REPLICATION_URL)||J_.get($c.CONFIG_PARAMS.REPLICATION_HOSTNAME))&&(e.replication=await Jwe()),e.clustering=await jwe(r),e.clustering[Jn.HUB].status===oi.RUNNING&&e.clustering[Jn.LEAF].status===oi.RUNNING){let n=[],s=await $we({});for(let a of s.nodes){let c={};for(let l in a)c[l.replace("_"," ")]=a[l];n.push(c)}e.clustering.network=n;let i=await Vwe.clusterStatus();e.clustering.replication={"node name":i.node_name,"is enabled":i.is_enabled,connections:[]};for(let a of i.connections){let c={};c["node name"]=a?.node_name,c.status=a?.status,c.ports={clustering:a?.ports?.clustering,"operations api":a?.ports?.operations_api},c["latency ms"]=a?.latency_ms,c.uptime=a?.uptime,c.subscriptions=a?.subscriptions,c["system info"]={"hdb version":a?.system_info?.hdb_version,"node version":a?.system_info?.node_version,platform:a?.system_info?.platform},e.clustering.replication.connections.push(c)}await j_.closeConnection()}console.log($M.stringify(e)),process.exit()}o(zwe,"status");async function jwe(e){let t={[Jn.HUB]:{},[Jn.LEAF]:{}};if(e.clustering.length===0)return t[Jn.HUB].status=oi.STOPPED,t[Jn.LEAF].status=oi.STOPPED,t;let{port:r}=j_.getServerConfig($c.PROCESS_DESCRIPTORS.CLUSTERING_HUB),{username:n,decrypt_hash:s}=await Gwe.getClusterUser();try{(await j_.createConnection(r,n,s,!1)).close(),t[Jn.HUB].status=oi.RUNNING}catch{t[Jn.HUB].status=oi.ERRORED}let{port:i}=j_.getServerConfig($c.PROCESS_DESCRIPTORS.CLUSTERING_LEAF);try{(await j_.createConnection(i,n,s,!1)).close(),t[Jn.LEAF].status=oi.RUNNING}catch{t[Jn.LEAF].status=oi.ERRORED}try{t[Jn.HUB].pid=Number.parseInt(await VM.readFile(KM.join(SA,"clustering",pX.PID_FILES.HUB),"utf8"))}catch(a){YM.error(a),t[Jn.HUB].pid=void 0}try{t[Jn.LEAF].pid=Number.parseInt(await VM.readFile(KM.join(SA,"clustering",pX.PID_FILES.LEAF),"utf8"))}catch(a){YM.error(a),t[Jn.LEAF].pid=void 0}return t}o(jwe,"getHubLeafStatus");async function Jwe(){let e=await Wwe.httpRequest({method:"POST",protocol:"http:",socketPath:J_.get($c.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET),headers:{"Content-Type":"application/json"}},{operation:"cluster_status"});e=JSON.parse(e.body);let t={"node name":e.node_name,"is enabled":e.is_enabled,connections:[]};for(let r of e.connections)t.connections.push({"node name":r.name,url:r.url,subscriptions:r.subscriptions,replicates:r.replicates,"database sockets":r.database_sockets.map(n=>({database:n.database,connected:n.connected,latency:n.latency,"catching up from":n.catching_up_from,"thread id":n.thread_id,nodes:n.nodes}))});return t}o(Jwe,"getReplicationStatus")});sE();var WM=process.env.HDB_LEADER_URL||process.argv.includes("--HDB_LEADER_URL");WM&&ae().setCloneVar(!0);var Q_=require("node:fs"),gX=require("node:path"),Lu=z(),SX=MM(),{packageJson:Qwe,PACKAGE_ROOT:TX}=dt(),Xwe=B3(),zM=(H(),v($)),{SERVICE_ACTIONS_ENUM:In}=zM,Zwe=`
134
134
  Usage: harperdb [command]
135
135