harperdb 4.7.27 → 4.7.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/harperdb.js +1 -1
- package/bin/lite.js +1 -1
- package/launchServiceScripts/launchNatsIngestService.js +1 -1
- package/launchServiceScripts/launchNatsReplyService.js +1 -1
- package/launchServiceScripts/launchUpdateNodes4-0-0.js +1 -1
- package/npm-shrinkwrap.json +246 -246
- package/package.json +2 -2
- package/server/jobs/jobProcess.js +1 -1
- package/server/threads/threadServer.js +1 -1
- package/studio/web/assets/{index-BKH0o6vZ.js → index-BLrHW_4X.js} +5 -5
- package/studio/web/assets/{index-BKH0o6vZ.js.map → index-BLrHW_4X.js.map} +1 -1
- package/studio/web/assets/{index.lazy-D5vviOl1.js → index.lazy-B3bMWbNh.js} +2 -2
- package/studio/web/assets/{index.lazy-D5vviOl1.js.map → index.lazy-B3bMWbNh.js.map} +1 -1
- package/studio/web/assets/{profile-V6JtmyCF.js → profile-BLeDamUk.js} +2 -2
- package/studio/web/assets/{profile-V6JtmyCF.js.map → profile-BLeDamUk.js.map} +1 -1
- package/studio/web/assets/{status-9_1gEAyL.js → status-CdZyfe1S.js} +2 -2
- package/studio/web/assets/{status-9_1gEAyL.js.map → status-CdZyfe1S.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/utility/scripts/restartHdb.js +1 -1
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
`:`data: ${e}
|
|
10
10
|
|
|
11
|
-
`},"serialize"),compressible:!1,q:.8});_n.set("application/x-www-form-urlencoded",{deserialize(e){let t=Buffer.isBuffer(e)?e.toString("utf8"):e,r={};for(let[n,s]of new URLSearchParams(t))if(r.hasOwnProperty(n)){let i=r[n];Array.isArray(i)?i.push(s):r.key=[i,s]}else r[n]=s;return r},serialize(e){let t=new URLSearchParams;for(let r in e)t.set(r,e);return t.toString()}});f0={type:"application/json",serializeStream:Hm,serialize:Gm,deserialize:N9,q:.5};_n.set("*/*",f0);_n.set("",f0);a(N9,"tryJSONParse");a($m,"registerContentHandlers");C9=(0,u0.default)(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=ig(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&o.serializeStream){if(l.mapError){let d=l.getColumns;l=l.mapError(f=>(f.toJSON=()=>({error:f.name,message:f.message,...f.partialObject}),f)),l.getColumns=d}u=o.serializeStream}else u=o.serialize;return u(l,{headers:{set:a((d,f)=>{s.header(d,f)},"set")}})})}),r()},{name:"content-type-negotiation"});a(ig,"findBestSerializer");o0=sg.default.get(U.HTTP_COMPRESSIONTHRESHOLD);a(Vm,"serialize");a(Wo,"serializeMessage");a(tI,"asyncSerialization");a(rI,"hasAsyncSerialization");a(O9,"streamToBuffer");P9=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(L9,"isBufferEncoding");a(D9,"parseContentType");a(jo,"getDeserializer");a(v9,"deserializerUnknownType");a(M9,"transformIterable");a(ng,"toCsvStream")});var mg={};Re(mg,{Blob:()=>xs,blobsWereEncoded:()=>fl,cleanupOrphans:()=>j9,databasePaths:()=>sI,decodeBlobsWithWrites:()=>fg,decodeFromDatabase:()=>Qo,decodeWithBlobCallback:()=>jm,deleteBlob:()=>lg,deleteBlobsInObject:()=>rc,deleteRootBlobPathsForDB:()=>aI,encodeBlobsAsBuffers:()=>K9,encodeBlobsWithFilePath:()=>dg,findBlobsInObject:()=>dl,getFileId:()=>ug,getFilePathForBlob:()=>b0,getRootBlobPathsForDB:()=>Xu,isSaving:()=>k9,saveBlob:()=>Wm,setDeletionDelay:()=>F9,startPreCommitBlobsForRecord:()=>cI});function y0(){}function lg(e){let t=b0(e);t&&setTimeout(()=>{(0,Ve.unlink)(t,r=>{r&&Mt.default.debug?.("Error trying to remove blob file",r)})},R0)}function F9(e){R0=e}function Wm(e,t=!1){let r=$r.get(e);if(!r)r={storageIndex:0,fileId:null,store:Fn},$r.set(e,r);else{if(r.fileId)return r;r.store=Fn}return r.deleteOnFailure=t,G9(r),r.source?nI(e,r.source,r):r.contentBuffer?H9(e,r):nI(e,tc.Readable.from(e.stream()),r),r}function nI(e,t,r){let{filePath:n,fileId:s,store:i,compress:o,flush:c}=r;return r.saving=new Promise((l,u)=>{let d=s+":blob";if(!i.attemptLock(d,0))throw new Error(`Unable to get lock for blob file ${s}`);let f=(0,Ve.createWriteStream)(n,{autoClose:!1,flags:"w"}),m=!1;e.size!==void 0&&(f.write(h(e.size)),m=!0);let p;o?(m||f.write(x9),p=(0,cg.createDeflate)(),(0,tc.pipeline)(t,p,f,E)):(m||f.write(U9),(0,tc.pipeline)(t,f,E));function h(_){let R=BigInt(_),S=new Uint8Array(Lr),y=new DataView(S.buffer);return R|=BigInt(o?oI:T0)<<48n,y.setBigInt64(0,R),S}a(h,"createHeader");function E(_){let R=f.fd;if(_){if(i.unlock(d,0),R&&((0,Ve.close)(R),f.fd=null),r.deleteOnFailure)(0,Ve.unlink)(n,S=>{S&&Mt.default.debug?.("Error while deleting aborted blob file",S)});else try{if((0,Ve.statSync)(n).size===0){let S=Buffer.from(_.toString());(0,Ve.writeFile)(n,Buffer.concat([h(BigInt(S.length)+0xff000000000000n),S]),y=>{y&&Mt.default.debug?.("Error write error message to blob file",y)})}}catch(S){Mt.default.debug?.("Error checking blob file after abort",S)}u(_)}else{if(!m){m=!0;let S=p?p.bytesWritten:f.bytesWritten-Lr;e.size=S,(0,Ve.write)(R,h(S),0,Lr,0,E);return}i.unlock(d,0),c?(0,Ve.fdatasync)(R,S=>{S&&u(S),l(),(0,Ve.close)(R),f.fd=null}):(l(),(0,Ve.close)(R),f.fd=null)}}a(E,"finished")}),e}function ug(e){return $r.get(e)?.fileId}function k9(e){return $r.get(e)?.saving}function b0(e){let t=$r.get(e);return t?.fileId&&Qu(t)}function Xu(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=sI.get(e);if(!t){if(!e.databaseName)return Mt.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,Ym.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,zi.join)(n,e.databaseName)):t=[(0,zi.join)((0,Ym.getHdbBasePath)(),"blobs",e.databaseName)],sI.set(e,t)}return t}async function aI(e){let t=Xu(e);t&&await Promise.all(t.map(r=>A0(r)))}async function A0(e){if((0,Ve.existsSync)(e)){for(let t of await(0,kn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await A0((0,zi.join)(e,t.name));else try{await(0,kn.unlink)((0,zi.join)(e,t.name))}catch(r){Mt.default.warn?.("Error deleting file",r)}try{await(0,kn.rmdir)(e)}catch(t){Mt.default.warn?.("Error deleting directory",t)}}}function Qu({storageIndex:e,fileId:t,store:r}){let n=Xu(r);return(0,zi.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 H9(e,t){let r=t.contentBuffer,n=r.length;if(!(n<S0))return e.size=n,nI(e,tc.Readable.from([r]),t)}function G9(e){let t=Xu(e.store),r=q9(),n=t?.length>1?$9(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Qu(e),o=(0,zi.dirname)(i);(0,Ve.existsSync)(o)||(0,iI.ensureDirSync)(o),e.filePath=i}function q9(){let e=_0.get(Fn);if(!e){let t=0,r=Xu(Fn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Ve.existsSync)(n))for(let c of(0,Ve.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>o&&(o=l)}s+=o,n=(0,zi.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(Fn.getUserSharedBuffer("blob-file-id",e.buffer)),_0.set(Fn,e)}return Number(Atomics.add(e,0,1n))}function $9(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(ag);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,V9(e)),e.frequencyTable[t%ag]}async function V9(e){if(!kn.statfs)return;let t=await Promise.all(e.map(async s=>{let i;try{i=await(0,kn.statfs)(s)}catch(c){if(c.code!=="ENOENT")throw c;(0,iI.ensureDirSync)(s),i=await(0,kn.statfs)(s)}let o=i.bavail*i.bsize;return Math.pow(o,.8)})),r=new Array(ag),n=t.map(s=>1/s);for(let s=0;s<ag;s++){let i=1/0,o=0;for(let c=0;c<n.length;c++)n[c]<i&&(o=c,i=n[c]);n[o]+=1/t[o],r[s]=o}e.frequencyTable=r}function dg(e,t,r){ju=t,Fn=r,fl=!1;try{return e()}finally{ju=void 0,Fn=void 0}}function K9(e){Zr=[];let t;try{t=e()}catch(n){throw Zr=void 0,n}let r=Zr.length<2?Zr[0]:Promise.all(Zr);return Zr=void 0,r?r.then(()=>e()):t}function fg(e,t,r){try{Zr=[],Jo=r,Fn=t,e()}catch(s){throw Jo=void 0,Zr=void 0,s}Jo=void 0;let n=Zr.length<2?Zr[0]:Promise.all(Zr);return Zr=void 0,n}function jm(e,t,r){Fn=r;try{return Jo=t,e()}finally{Jo=void 0}}function Qo(e,t){return Fn=t,e()}function rc(e){dl(e,t=>{lg(t)})}function dl(e,t){if(e instanceof xs)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&dl(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&dl(e[r],t)}}function cI(e,t){let r=[];for(let n in e){let s=e[n];s instanceof Ju&&s.saveBeforeCommit&&r.push(s)}if(r.length>0)return()=>(Fn=t,Promise.all(r.map(n=>Wm(n,!0).saving??Promise.resolve())))}function W9(){return class{static{a(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}async function j9(e,t){let r,n,s=0;for(let d in e){let f=e[d];if(r=f.primaryStore.rootStore,n=f.auditStore,n)break}let i=new Set,o=Xu(r);if(o)for(let d of o)await c(d);return await l(),Mt.default.warn?.(`Cleaned Orphan Blobs from ${t??"database"}, deleted ${s} blobs)`),s;async function c(d){try{if(!(0,Ve.existsSync)(d))return;for(let f of await(0,kn.readdir)(d,{withFileTypes:!0})){let m=(0,zi.join)(d,f.name);if(f.isDirectory())await c(m);else if(i.size%1e6===0&&Mt.default.info?.("Finding all blobs for orphan check, paths accumulated",i.size),i.add(m),i.size%2e3===0){let p=(0,g0.getHeapStatistics)();p.used_heap_size>p.heap_size_limit*(.8-i.size/16e6)&&await l()}}}catch(f){Mt.default.error?.("Error searching path for blobs",d,f)}}a(c,"searchPath");async function l(){let d=0,f=Math.floor(((0,Ym.get)(U.STORAGE_BLOBCLEANUPSPEED)??1e4)/1e3+1);for(let m in e){Mt.default.warn?.("Checking for references to potential orphaned blobs in table",m);let p=e[m];for(let h of p.primaryStore.getRange({versions:!0,snapshot:!1,lazy:!0}))try{h.metadataFlags&en&&h.value&&u(h.value),d++%f===0?await(0,zu.setTimeout)(1):await(0,zu.setImmediate)()}catch(E){Mt.default.error?.("Error searching table",m," for references to potential orphaned blobs failed",E)}}Mt.default.warn?.("Checking for references to potential orphaned blobs in the audit log");for(let{value:m}of n.getRange({start:1,snapshot:!1,lazy:!0}))try{let p=Nt(m),h=n.tableStores[p.tableId],E=h?.getEntry(p.recordId);(!E||E.version!==p.version||!E.value)&&u(p.getValue(h)),d++%f===0?await(0,zu.setTimeout)(1):await(0,zu.setImmediate)()}catch(p){Mt.default.error?.("Error searching audit log for references to potential orphaned blobs failed",p)}Mt.default.warn?.("Deleting",i.size,"orphaned blobs"),s+=i.size;for(let m of i)try{await(0,kn.unlink)(m)}catch(p){Mt.default.warn?.("Error deleting file",p)}Mt.default.warn?.("Finished deleting",i.size,"orphaned blobs"),i.clear()}a(l,"removePathsThatAreNotReferenced");function u(d){dl(d,f=>{if(f instanceof Ju){let m=$r.get(f);if(m.fileId!=null){let p=Qu(m);i.has(p)&&i.delete(p)}}})}a(u,"checkObjectForReferences")}var ji,kn,Ve,cg,tc,iI,Ym,zi,Mt,g0,zu,S0,Lr,T0,oI,p0,U9,x9,h0,$r,Jo,xs,ju,Zr,Fn,fl,Km,og,B9,E0,Ju,R0,sI,_0,ag,Y9,ls=ie(()=>{ji=require("msgpackr"),kn=require("node:fs/promises"),Ve=require("node:fs"),cg=require("node:zlib"),tc=require("node:stream"),iI=require("fs-extra"),Ym=b(fe());$();zi=require("path"),Mt=b(hr());zo();Yi();g0=require("node:v8"),zu=require("node:timers/promises"),S0=8192,Lr=8,T0=0,oI=1,p0=255,U9=new Uint8Array([0,T0,255,255,255,255,255,255]),x9=new Uint8Array([0,oI,255,255,255,255,255,255]),h0=0xffffffffffff,$r=new WeakMap,xs=global.Blob||W9(),fl=!1,Km=new Uint8Array(8),og=new DataView(Km.buffer),B9=6e4;a(y0,"InstanceOfBlobWithNoConstructor");y0.prototype=xs.prototype;E0=!1,Ju=class e extends y0{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size),t?.saveBeforeCommit!=null&&(this.saveBeforeCommit=t.saveBeforeCommit)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=$r.get(this),{start:r,end:n,contentBuffer:s,asString:i}=t;return i||(s&&(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),s?(t.asString=s.toString(),t.asString):(rI()&&tI(this.bytes().then(o=>t.contentBuffer=o)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=$r.get(this),{start:r,end:n,contentBuffer:s}=t;if(s)return(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),Promise.resolve(s);let i=Qu(t),o,c=a(async()=>{let l,u=Lr;try{if(l=await(0,kn.readFile)(i),l.length>=Lr){l.copy(Km,0,0,Lr);let f=og.getBigUint64(0);if(Number(f>>48n)===p0)throw new Error("Error in blob: "+l.subarray(Lr));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<h0&&(this.size=u,this.#t))for(let m of this.#t)m(u)}}catch(f){if(f.code!=="ENOENT")throw f;l=Buffer.alloc(0)}function d(f){if(u>f.length){let m=t.store,p=t.fileId+":blob";if(o)throw new Error(`Incomplete blob for ${i}`);return new Promise(h=>{if(m.attemptLock(p,0,()=>(o=!0,h(c()))))return o=!0,m.unlock(p,0),h(c())})}return(n!=null||r!=null)&&(f=f.subarray(r??0,n??f.length)),f}return a(d,"checkCompletion"),l[1]===oI?new Promise((f,m)=>{(0,cg.deflate)(l.subarray(Lr),(p,h)=>{p?m(p):f(d(h))})}):d(l.subarray(Lr))},"readContents");return c()}async arrayBuffer(){let t=await this.bytes(),r=new ArrayBuffer(t.length);return new Uint8Array(r).set(t),r}stream(){let t=$r.get(this),{contentBuffer:r,start:n,end:s}=t;if(r)return(s!=null||n!=null)&&(r=r.subarray(n??0,s??t.contentBuffer.length)),new ReadableStream({pull(E){E.enqueue(r),E.close()}});let i=Qu(t),o,c=0,l=0,u,d,f,m=!1,p=this;return new ReadableStream({start(){let E=1e3,_=a((R,S)=>{(0,Ve.open)(i,"r",(y,I)=>{if(y){if(y.code==="ENOENT"&&f!==!1&&(Mt.default.debug?.("File does not exist yet, waiting for it to be created",i,E),E-- >0))return setTimeout(()=>{h(),_(R,S)},20).unref();S(y),p.#e?.forEach(w=>w(y))}else o=I,R(I)})},"openFile");return new Promise(_)},pull:a(E=>{let _=0,R=100;return new Promise(a(function S(y,I){function w(H){(0,Ve.close)(o),clearTimeout(d),u&&u.close(),I(H),p.#e?.forEach(Z=>Z(H))}a(w,"onError");let L=Buffer.allocUnsafe(262144);(0,Ve.read)(o,L,0,L.length,c,(H,Z,X)=>{if(l+=Z,H)return w(H);if(c===0){if(Z<Lr){R-- >0&&f!==!1?(h(),Mt.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>S(y,I),20).unref()):(Mt.default.debug?.("File was empty, throwing error",i,R),w(new Error(`Blob ${t.fileId} was empty`)));return}X.copy(Km,0,0,Lr);let Q=og.getBigUint64(0);if(Number(Q>>48n)===p0)return w(new Error("Error in blob: "+X.subarray(Lr,Z)));if(_=Number(Q&0xffffffffffffn),_<h0&&p.size!==_&&(p.size=_,p.#t))for(let F of p.#t)F(_);X=X.subarray(Lr,Z),l-=Lr}else if(Z===0){let Q=Buffer.allocUnsafe(8);return(0,Ve.read)(o,Q,0,Lr,0,F=>{if(F)return w(F);if(Km.set(Q),_=Number(og.getBigUint64(0)&0xffffffffffffn),_>l){h()?(u=(0,Ve.watch)(i,{persistent:!1},()=>{u.close(),u=null,clearTimeout(d),S(y,I)}),(0,Ve.readSync)(o,Q,0,Q.length,c)>0?(u.close(),u=null,S(y,I)):d=setTimeout(()=>{w(new Error(`File read timed out reading from ${i}`))},B9).unref()):m?w(new Error("Blob is incomplete")):(m=!0,S(y,I));return}(0,Ve.close)(o),E.close(),y()})}else X=X.subarray(0,Z);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=Z,S(y,I);s&&l>=s&&(l>s&&(X=X.subarray(0,s-c)),l=_=s),n&&n>c&&(X=X.subarray(n-c))}c+=Z;try{E.enqueue(X)}catch(Q){return Mt.default.debug?.("Error enqueuing chunk",Q),y()}l===_&&((0,Ve.close)(o),E.close()),y()})},"readMore"))},"pull"),cancel(){(0,Ve.close)(o),clearTimeout(d),u&&u.close()}});function h(){if(f===void 0){let E=t.store,_=t.fileId+":blob";f=!E.attemptLock(_,0,()=>{f=!1}),f||E.unlock(_,0)}return f}}slice(t,r,n){let s=$r.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};$r.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};$r.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return E0||(E0=!0,Mt.default.warn?.("save() method on Blob is deprecated, use the 'saveBeforeCommit' flag on the Blob constructor instead")),this.saveBeforeCommit=!0,Promise.resolve()}get written(){return $r.get(this)?.saving??Promise.resolve()}},R0=500;a(lg,"deleteBlob");a(F9,"setDeletionDelay");global.createBlob=function(e,t){let r=new Ju(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if($r.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof tc.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=tc.Readable.from(e);else throw new Error("Invalid source type");return r};a(Wm,"saveBlob");a(nI,"writeBlobWithStream");a(ug,"getFileId");a(k9,"isSaving");a(b0,"getFilePathForBlob");sI=new Map;a(Xu,"getRootBlobPathsForDB");a(aI,"deleteRootBlobPathsForDB");a(A0,"rimrafSteadily");a(Qu,"getFilePath");a(H9,"writeBlobWithBuffer");a(G9,"generateFilePath");_0=new Map;a(q9,"getNextFileId");ag=128;a($9,"getNextStorageIndex");a(V9,"createFrequencyTableForStoragePaths");a(dg,"encodeBlobsWithFilePath");a(K9,"encodeBlobsAsBuffers");a(fg,"decodeBlobsWithWrites");a(jm,"decodeWithBlobCallback");a(Qo,"decodeFromDatabase");a(rc,"deleteBlobsInObject");a(dl,"findBlobsInObject");a(cI,"startPreCommitBlobsForRecord");Y9=new ji.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,ji.addExtension)({Class:xs,type:11,unpack:a(function(e){let t=Y9.unpack(e),r=new Ju;if(Object.assign(r,t[0]),typeof t[1]!="object"){if($r.set(r,{storageIndex:t[1],fileId:t[2],store:Fn}),Jo)return Jo(r)??r;if(!Fn)throw new Error("No store specified, cannot load blob from storage")}else $r.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:a(function(e){let t=$r.get(e);if(ju!==void 0&&(fl=!0,t?.recordId!==void 0&&t.recordId!==ju))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<S0)return r.size=t.contentBuffer.length,(0,ji.pack)([r,t.contentBuffer])}if(ju!==void 0){if(t=Wm(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=ju,(0,ji.pack)([r,t.storageIndex,t.fileId])}if(t){if(Jo)return Jo(e),(0,ji.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Ve.readFileSync)(Qu(t));if(n.length>=Lr&&(n.copy(Km,0,0,Lr),Number(og.getBigUint64(0)&0xffffffffffffn)===n.length-Lr))return Buffer.concat([(0,ji.pack)([r]),n]);if(Zr)Zr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Zr)return Zr.push(e.bytes()),Buffer.alloc(0);throw n}}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,ji.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(W9,"polyfillBlob");a(j9,"cleanupOrphans")});var B0={};Re(B0,{ACTION_32_BIT:()=>gg,ACTION_64_BIT:()=>X9,AUDIT_STORE_OPTIONS:()=>Qm,Decoder:()=>pl,HAS_BLOBS:()=>en,HAS_CURRENT_RESIDENCY_ID:()=>hl,HAS_EXPIRATION_EXTENDED_TYPE:()=>ep,HAS_ORIGINATING_OPERATION:()=>Zm,HAS_PREVIOUS_RESIDENCY_ID:()=>El,REMOTE_SEQUENCE_UPDATE:()=>Sg,createAuditEntry:()=>_l,getLastRemoved:()=>J9,openAuditStore:()=>Eg,readAuditEntry:()=>Nt,removeAuditEntry:()=>_g,setAuditRetention:()=>Q9,transactionKeyEncoder:()=>v0});function Eg(e){let t=e.auditStore=e.openDB(lI.AUDIT_STORE_NAME,{create:!1,...Qm});t||(t=e.auditStore=e.openDB(lI.AUDIT_STORE_NAME,Qm),w0(t,1)),t.rootStore=e,t.tableStores=[];let r=[];t.addDeleteRemovalCallback=function(l,u,d){return r[l]=d,t.tableStores[l]=u,t.deleteCallbacks=r,{remove(){delete r[l]}}};let n=null,s,i=0,o=dI;tp(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(o=l),clearTimeout(n);let u=new Promise(d=>{n=setTimeout(async()=>{if(await s,s=u,t.rootStore.status==="closed"||t.rootStore.status==="closing")return;let f=0,m,p;try{for(let{key:h,value:E}of t.getRange({start:1,snapshot:!1,end:Date.now()-uI/(1+i*i)})){try{m=_g(t,h,E)}catch(_){Zu.warn("Error removing audit entry",_)}if(p=h,await new Promise(setImmediate),++f>=z9){o=10;break}}await m}finally{f===0?o=Math.min(o<<1,uI/10):(w0(t,p),o>100&&(o=o>>1)),d(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Jm.getWorkerIndex)()===(0,Jm.getWorkerCount)()-1&&c(),(0,Jm.getWorkerIndex)()===0&&!I0)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(I0=!0,Zu.error("The current time is before the last recorded entry in the audit log. Time reversal can undermine the integrity of data tracking and certificate validation and the time must be corrected."));return t}function _g(e,t,r){let n=Z9(r),s;if(n&en){s=Nt(r);let i=e.tableStores[s.tableId];if(i){let o=s.type==="message"?null:i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&Qo(()=>rc(s.getValue(i)),i.rootStore)}}if((n&15)===fI){s=s||Nt(r);let i=s.tableId;e.tableStores[s.tableId]?.getEntry(s.recordId)?.version===s.version&&e.deleteCallbacks?.[i]?.(s.recordId,s.version)}return e.remove(t)}function w0(e,t){mI[0]=t,e.put(Symbol.for("last-removed"),M0)}function J9(e){let t=e.get(Symbol.for("last-removed"));if(t)return M0.set(t),mI[0]}function Q9(e,t=dI){uI=e,dI=t}function _l(e,t,r,n,s,i,o,c,l,u,d,f,m){let p=U0[o];if(!p)throw new Error(`Invalid audit entry type ${o}`);let h=1;if(n&&(n>1?nc.setFloat64(0,n):Bs.set(pI),h=9),l){if(l&255)throw new Error("Illegal extended type");h+=3}R(s),R(t),_(r),nc.setFloat64(h,e),h+=8,l&hl&&R(u),l&El&&R(d),l&ep&&(nc.setFloat64(h,f),h+=8),l&Zm&&R(x0[m]),i?_(i):Bs[h++]=0,l?nc.setUint32(n?8:0,p|l|3221225472):Bs[n?8:0]=p;let E=Bs.subarray(0,h);if(c)return Buffer.concat([E,c]);return E;function _(S){let y=h;h+=1,h=(0,ml.writeKey)(S,Bs,h);let I=h-y-1;I>127?I>16383?(Zu.error("Key or username was too large for audit entry",S),h=y+1,Bs[y]=0):(Bs.copyWithin(y+2,y+1,h),nc.setUint16(y,I|32768),h++):Bs[y]=I}function R(S){S<128?Bs[h++]=S:S<16384?(nc.setUint16(h,S|32768),h+=2):S<1056964608?(nc.setUint32(h,S|3221225472),h+=4):(Bs[h]=255,nc.setUint32(h+1,S),h+=5)}}function Z9(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 pl(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function Nt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new pl(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),o=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,d=n.position+=l,f=n.readFloat64(),m,p,h,E;if(i&hl&&(m=n.readInt()),i&El&&(p=n.readInt()),i&ep&&(h=n.readFloat64()),i&Zm){let y=n.readInt();E=x0[y]}l=n.readInt();let _=n.position,R=n.position+=l,S;return{type:U0[i&7],tableId:c,nodeId:o,get recordId(){return(0,ml.readKey)(e,u,d)},getBinaryRecordId(){return e.subarray(u,d)},version:f,previousLocalTime:s,get user(){return R>_?(0,ml.readKey)(e,_,R):void 0},get encoded(){return t?e.subarray(t,r):e},get size(){return t!==void 0&&r!==void 0?r-t:e.byteLength},getValue(y,I,w){if(i&pg||i&zm&&!I)return S||(S=Qo(()=>y.decoder.decode(e.subarray(n.position,r)),y.rootStore)),S;if(i&zm&&w)return KA(y.getEntry(this.recordId),w,y)},getBinaryValue(){return i&(pg|zm)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:m,previousResidencyId:p,expiresAt:h,originatingOperation:E}}catch(n){return Zu.error("Reading audit entry error",n,e),{}}}var ml,hg,lI,Jm,D0,Zu,Bs,nc,v0,Qm,uI,z9,mI,M0,dI,I0,pg,zm,N0,fI,C0,O0,P0,L0,gg,X9,Sg,hl,El,Zm,ep,en,U0,x0,pl,Yi=ie(()=>{ml=require("ordered-binary"),hg=b(fe()),lI=b(Or());$();Jm=b(it()),D0=b(ue());gl();Zu=b(ee());rg();ls();Tg();(0,hg.initSync)();Bs=Buffer.alloc(2816),nc=new DataView(Bs.buffer,Bs.byteOffset,2816),v0={writeKey(e,t,r){return e===Xm?(t.set(Xm,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,ml.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,ml.readKey)(e,t,r)}},Qm={encoding:"binary",keyEncoder:v0},uI=(0,D0.convertToMS)((0,hg.get)(U.LOGGING_AUDITRETENTION))||86400*3,z9=1e3,mI=new Float64Array(1),M0=new Uint8Array(mI.buffer),dI=1e4,I0=!1;a(Eg,"openAuditStore");a(_g,"removeAuditEntry");a(w0,"updateLastRemoved");a(J9,"getLastRemoved");a(Q9,"setAuditRetention");pg=16,zm=32,N0=1,fI=2,C0=3,O0=4,P0=5,L0=6,gg=14,X9=15,Sg=11,hl=512,El=1024,Zm=2048,ep=4096,en=8192,U0={put:N0|pg,[N0]:"put",delete:fI,[fI]:"delete",message:C0|pg,[C0]:"message",invalidate:O0|zm,[O0]:"invalidate",patch:P0|zm,[P0]:"patch",relocate:L0,[L0]:"relocate"},x0={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(_l,"createAuditEntry");a(Z9,"readAction");a(Nt,"readAuditEntry");pl=class extends DataView{static{a(this,"Decoder")}position=0;readInt(){let t;return t=this.getUint8(this.position++),t>=128?t>=192?t===255?(t=this.getUint32(this.position),this.position+=4,t):(t=this.getUint32(this.position-1)&1073741823,this.position+=3,t):(t=this.getUint16(this.position-1)&32767,this.position++,t):t}readFloat64(){try{let t=this.getFloat64(this.position);return this.position+=8,t}catch(t){throw t.message=`Error reading float64: ${t.message} at position ${this.position}`,t}}}});function yg(){return hI||(hI=je({table:"hdb_analytics_hostname",database:"system",attributes:[{name:"id",isPrimaryKey:!0},{name:"hostname"}]})),hI}function t7(e){return e=e.replace(e7,t=>{let[r,n,s,i]=t.split(".").map(o=>parseInt(o));return(r<<8|n).toString(16)+":"+(s<<8|i).toString(16)}),e=e.replace("::",":".repeat(10-e.split(":").length)),e.toLowerCase().split(":").map(t=>t.padStart(4,"0")).join(":")}function r7(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 rp(e){let t=F0.default.createHash("shake128",{outputLength:4}),r;return(0,k0.isIPv6)(e)?r=t7(e):r=e.toLowerCase(),r7(Uint8Array.from(t.update(r).digest()))}var F0,k0,EI,hI,e7,_I=ie(()=>{Oe();F0=b(require("crypto")),k0=require("node:net"),EI=new Map;a(yg,"getAnalyticsHostnameTable");e7=/(\d{1,3}\.){3}\d{1,3}$/;a(t7,"normalizeIPv6");a(r7,"nodeHashToNumber");a(rp,"stableNodeId")});var Xo,gI=ie(()=>{Xo={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 K0={};Re(K0,{captureProfile:()=>TI,userCodeFolders:()=>Rg});async function TI(e){let r=V0/1e6,n=new Map,s=new Map,i=new Map,o=0,c=0;try{let u=SI.time.stop(!0),d=u.stringTable.strings;for(let f of u.function)s.set(f.id,d[f.filename]);for(let f of u.location)n.set(f.id,f.line[0]);for(let f of u.sample)l(f);qe(c*r,"cpu-usage","harper"),qe(o*r,"cpu-usage","user");for(let[f,m]of i)if(m>100){let p=n.get(f),h=s.get(p.functionId)+":"+p.line;qe(m*r,"cpu-usage",h)}}catch(u){$0.error?.("analytics profiler error:",u)}finally{e&&setTimeout(()=>{let u=((0,np.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;TI(u)},e).unref()}function l(u){let d=!1;for(let f of u.locationId){let m=s.get(n.get(f).functionId);if(Rg.some(p=>m.startsWith(p))){let p=u.value[0];o+=p,d||i.set(f,(i.get(f)??0)+p);return}if(m.startsWith(G0.PACKAGE_ROOT)){let p=u.value[0];c+=p,d||(i.set(f,(i.get(f)??0)+p),d=!0)}}}a(l,"getUserHitCount")}var np,G0,q0,SI,$0,H0,Rg,V0,Y0=ie(()=>{Hn();np=b(fe());$();G0=b(Dt()),q0=require("node:fs"),SI=require("@datadog/pprof"),$0=b(ee()),H0=(0,np.getHdbBasePath)(),Rg=H0?[H0]:[];process.env.RUN_HDB_APP&&Rg.push((0,q0.realpathSync)(process.env.RUN_HDB_APP));V0=5e4;(async()=>{if(Rg.length===0)return;SI.time.start({intervalMicros:V0});let e=((0,np.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;setTimeout(()=>{TI(e)},e).unref()})();a(TI,"captureProfile")});var Ig={};Re(Ig,{addAnalyticsListener:()=>ap,analyticsDelay:()=>AI,calculateCPUUtilization:()=>dB,diffResourceUsage:()=>fB,onAnalyticsAggregate:()=>NI,recordAction:()=>qe,recordActionBinary:()=>rn,recordHostname:()=>II,setAnalyticsEnabled:()=>i7});function i7(e){iB=e,clearTimeout(ip),ip=null}function o7(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 a7(e,t,r,n,s,i){let o={};if(typeof t=="number")o.total=t,o.values=new Float32Array(4),o.values.index=1,o.values[0]=t,o.total=t;else if(typeof t=="boolean")o.total=t?1:0,o.count=1;else if(typeof t=="function")o.count=1,o.callback=t;else throw new TypeError("Invalid metric value type "+typeof t);o.description={metric:r,path:n,method:s,type:i},Ag.set(e,o)}function qe(e,t,r,n,s){if(!iB)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=Ag.get(i);o?o7(e,o):a7(i,e,t,r,n,s),ip||c7()}function rn(e,t,r,n,s){qe(!!e,t,r,n,s)}function ap(e){aB.push(e)}function c7(){yI||=performance.now(),ip=setTimeout(async()=>{ip=null;let e=performance.now()-yI;yI=0;let t=[],r={time:Date.now(),period:e,threadId:Sl.threadId,metrics:t};for(let[s,i]of Ag){if(i.values){let o=i.values.subarray(0,i.values.index);o.sort();let c=o.length,l=0,u=[],d;for(let f of lB){let m=Math.floor(c*f),p=o[m-1];if(m>l){let h=m-l;if(p===d){let E=u[u.length-1];typeof E=="number"?u[u.length-1]={value:E,count:1+h}:E.count+=h}else u.push(h>1?{value:p,count:h}:p),d=p;l=m}}t.push(Object.assign(i.description,{mean:i.total/c,distribution:u,count:c}))}else i.callback?t.push(Object.assign(i.description,i.callback(i))):t.push(Object.assign(i.description,{total:i.total,count:i.count}));await mB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:Sl.threadId,byThread:!0,...n});for(let s of aB)s(t);Ag=new Map,Sl.parentPort?Sl.parentPort.postMessage({type:oB,report:r}):EB({report:r})},AI).unref()}async function II(){let e=Ue.hostname;tn.trace?.("recordHostname server.hostname:",e);let t=rp(e);tn.trace?.("recordHostname nodeId:",t);let r=yg();if(!await r.get(t)){let s={id:t,hostname:e};tn.trace?.(`recordHostname storing hostname: ${JSON.stringify(s)}`),await r.put(s.id,s)}}function uB(e){let t=EI.get(e);return t?(tn.trace?.("storeMetric cached nodeId:",t),t):(t=rp(e),tn.trace?.("storeMetric new nodeId:",t),EI.set(e,t),t)}function ed(e,t){let r=uB(Ue.hostname),n={id:[(0,bI.getNextMonotonicTime)(),r],...t};tn.trace?.(`storing metric ${JSON.stringify(n)}`),e.put(n.id,n)}function dB(e,t){let r=e.userCPUTime+e.systemCPUTime;return tn.trace?.(`calculateCPUUtilization cpuTime: ${r} period: ${t}`),Math.round(r/t*100)/100}function fB(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 l7(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let o=`${t}.${s}`,c=i.getSize(),l={metric:Xo.TABLE_SIZE,database:t,table:s,size:c};tn.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),ed(e,l),n+=c}return n}function W0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=sB.statSync(s.primaryStore.env.path).size,c=l7(e,r,n),l=o-c,u={metric:Xo.DATABASE_SIZE,database:r,size:o,used:c,free:l,audit:i};ed(e,u),tn.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){tn.warn?.("Error getting DB size metrics",s)}}function j0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let o={metric:Xo.STORAGE_VOLUME,database:r,...i};ed(e,o),tn.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){tn.warn?.("Error getting DB volume metrics",s)}}async function u7(e,t=6e4){let r=wI(),n=pB(),s=new Promise(I=>{let w=performance.now();setImmediate(()=>{let L=performance.now();L-w>5e3&&tn.warn?.("Unusually high event queue latency on the main thread of "+Math.round(L-w)+"ms"),w=performance.now()}),n.primaryStore.prefetch([1],()=>{let L=performance.now();L-w>5e3&&tn.warn?.("Unusually high task queue latency on the main thread of "+Math.round(L-w)+"ms"),I(L-w)})}),i,o=uB(Ue.hostname);for(let I of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(!(!I.value?.time||I.value?.id[1]!==o)){i=I.value.time;break}if(Date.now()-t<i)return;let c,l=new Map,u=new Map,d=[],f;for(let{key:I,value:w}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!w)continue;if(c){if(I>c+t)break}else c=I;f=I;let{metrics:L,threadId:H}=w;for(let Z of L||[]){let{path:X,method:Q,type:F,metric:de,count:oe,total:ae,distribution:he,threads:Te,...De}=Z;oe||(oe=1);let Qe=de+(X?"-"+X:"");Q!==void 0&&(Qe+="-"+Q),F!==void 0&&(Qe+="-"+F);let $e=l.get(Qe);if($e){if($e.threads){let Pt=$e.threads[H];if(Pt)$e=Pt;else{$e.threads[H]={...De};continue}}$e.count||($e.count=1);let ss=$e.count;for(let Pt in De){let Lt=De[Pt];typeof Lt=="number"&&($e[Pt]=($e[Pt]*ss+Lt*oe)/(ss+oe))}$e.count+=oe,ae>=0&&($e.total+=ae,$e.ratio=$e.total/$e.count)}else $e={period:t,...Z},delete $e.distribution,l.set(Qe,$e),$e.byThread&&($e.threads=[],$e.threads[H]={...De},d.push($e));if(he){he=he.map(Pt=>typeof Pt=="number"?{value:Pt,count:1}:Pt);let ss=u.get(Qe);ss?ss.push(...he):u.set(Qe,he)}}await mB()}for(let I of d){let{path:w,method:L,type:H,metric:Z,count:X,total:Q,distribution:F,threads:de,...oe}=I;de=de.filter(ae=>ae);for(let ae in oe){if(typeof I[ae]!="number")continue;let he=0;for(let Te of de){let De=Te[ae];typeof De=="number"&&(he+=De)}I[ae]=he}I.count=de.length,delete I.threads,delete I.byThread}for(let[I,w]of u){let L=l.get(I);w.sort((Pt,Lt)=>Pt.value>Lt.value?1:-1);let H=L.count-1,Z=[],X=0,Q=0,F;for(let Pt of lB){let Lt=H*Pt;for(;X<Lt;)F=w[Q++],X+=F.count,Q===1&&X--;let Ya=w[Q>1?Q-2:0];F||(F=w[0]),Z.push(F.value-(F.value-Ya.value)*(X-Lt)/F.count)}let[de,oe,ae,he,Te,De,Qe,$e,ss]=Z;Object.assign(L,{p1:de,p10:oe,p25:ae,median:he,p75:Te,p90:De,p95:Qe,p99:$e,p999:ss})}let m;for(let[,I]of l)I.time=f,ed(n,I),m=!0;if(m)for(let I of cB)I(l.values());let p=Date.now(),{idle:h,active:E}=performance.eventLoopUtilization();if(m||E*10>h){let I={metric:Xo.MAIN_THREAD_UTILIZATION,idle:h-z0,active:E-J0,taskQueueLatency:await s,time:p,...process.memoryUsage()};ed(n,I)}z0=h,J0=E;let _=process.resourceUsage();_.time=p,_.userCPUTime=_.userCPUTime/1e3,_.systemCPUTime=_.systemCPUTime/1e3,tn.trace?.(`process.resourceUsage: ${JSON.stringify(_)}`);let R=fB(bg,_);tn.trace?.(`diffed resourceUsage: ${JSON.stringify(R)}`),R.time=p,R.period=bg.time?p-bg.time:t,R.cpuUtilization=dB(R,R.period);let S={metric:Xo.RESOURCE_USAGE,...R};ed(n,S),bg=_;let y=dt();W0(n,y),W0(n,{system:y.system}),j0(n,y),j0(n,{system:y.system})}async function Q0(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function wI(){return X0||(X0=je({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function pB(){return Z0||(Z0=je({table:"hdb_analytics",database:"system",audit:!0,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function m7(){hB=!0;let e=(0,op.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await u7(AI,e),await Q0(wI(),d7),await Q0(pB(),f7)},Math.min(e/2,2147483647)).unref()}function EB(e,t){let r=e.report;r.threadId=t?.threadId||Sl.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(eB+=n.mean*n.count);r.totalBytesProcessed=eB,t&&(r.metrics.push({metric:Xo.UTILIZATION,...t.performance.eventLoopUtilization(tB.get(t))}),tB.set(t,t.performance.eventLoopUtilization())),r.id=(0,bI.getNextMonotonicTime)(),wI().primaryStore.put(r.id,r),hB||m7(),p7&&(_B=E7(r))}async function E7(e){if(await _B,!sc){let r=(0,sp.dirname)(n7());try{sc=await(0,RI.open)((0,sp.join)(r,"analytics.log"),"r+")}catch{sc=await(0,RI.open)((0,sp.join)(r,"analytics.log"),"w+")}}let t=(await sc.stat()).size;if(t>h7){let r=Buffer.alloc(t);await sc.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await sc.write(r,{position:0}),await sc.truncate(r.length),t=r.length}await sc.write(JSON.stringify(e)+`
|
|
11
|
+
`},"serialize"),compressible:!1,q:.8});_n.set("application/x-www-form-urlencoded",{deserialize(e){let t=Buffer.isBuffer(e)?e.toString("utf8"):e,r={};for(let[n,s]of new URLSearchParams(t))if(r.hasOwnProperty(n)){let i=r[n];Array.isArray(i)?i.push(s):r.key=[i,s]}else r[n]=s;return r},serialize(e){let t=new URLSearchParams;for(let r in e)t.set(r,e);return t.toString()}});f0={type:"application/json",serializeStream:Hm,serialize:Gm,deserialize:N9,q:.5};_n.set("*/*",f0);_n.set("",f0);a(N9,"tryJSONParse");a($m,"registerContentHandlers");C9=(0,u0.default)(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=ig(n.raw);s.type(c),s.serializer(function(l){let u;if(typeof l=="object"&&l&&(l[Symbol.iterator]||l[Symbol.asyncIterator])&&o.serializeStream){if(l.mapError){let d=l.getColumns;l=l.mapError(f=>(f.toJSON=()=>({error:f.name,message:f.message,...f.partialObject}),f)),l.getColumns=d}u=o.serializeStream}else u=o.serialize;return u(l,{headers:{set:a((d,f)=>{s.header(d,f)},"set")}})})}),r()},{name:"content-type-negotiation"});a(ig,"findBestSerializer");o0=sg.default.get(U.HTTP_COMPRESSIONTHRESHOLD);a(Vm,"serialize");a(Wo,"serializeMessage");a(tI,"asyncSerialization");a(rI,"hasAsyncSerialization");a(O9,"streamToBuffer");P9=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(L9,"isBufferEncoding");a(D9,"parseContentType");a(jo,"getDeserializer");a(v9,"deserializerUnknownType");a(M9,"transformIterable");a(ng,"toCsvStream")});var mg={};Re(mg,{Blob:()=>xs,blobsWereEncoded:()=>fl,cleanupOrphans:()=>j9,databasePaths:()=>sI,decodeBlobsWithWrites:()=>fg,decodeFromDatabase:()=>Qo,decodeWithBlobCallback:()=>jm,deleteBlob:()=>lg,deleteBlobsInObject:()=>rc,deleteRootBlobPathsForDB:()=>aI,encodeBlobsAsBuffers:()=>K9,encodeBlobsWithFilePath:()=>dg,findBlobsInObject:()=>dl,getFileId:()=>ug,getFilePathForBlob:()=>b0,getRootBlobPathsForDB:()=>Xu,isSaving:()=>k9,saveBlob:()=>Wm,setDeletionDelay:()=>F9,startPreCommitBlobsForRecord:()=>cI});function y0(){}function lg(e){let t=b0(e);t&&setTimeout(()=>{(0,Ve.unlink)(t,r=>{r&&Mt.default.debug?.("Error trying to remove blob file",r)})},R0)}function F9(e){R0=e}function Wm(e,t=!1){let r=$r.get(e);if(!r)r={storageIndex:0,fileId:null,store:Fn},$r.set(e,r);else{if(r.fileId)return r;r.store=Fn}return r.deleteOnFailure=t,G9(r),r.source?nI(e,r.source,r):r.contentBuffer?H9(e,r):nI(e,tc.Readable.from(e.stream()),r),r}function nI(e,t,r){let{filePath:n,fileId:s,store:i,compress:o,flush:c}=r;return r.saving=new Promise((l,u)=>{let d=s+":blob";if(!i.attemptLock(d,0))throw new Error(`Unable to get lock for blob file ${s}`);let f=(0,Ve.createWriteStream)(n,{autoClose:!1,flags:"w"}),m=!1;e.size!==void 0&&(f.write(h(e.size)),m=!0);let p;o?(m||f.write(x9),p=(0,cg.createDeflate)(),(0,tc.pipeline)(t,p,f,E)):(m||f.write(U9),(0,tc.pipeline)(t,f,E));function h(_){let R=BigInt(_),S=new Uint8Array(Lr),y=new DataView(S.buffer);return R|=BigInt(o?oI:T0)<<48n,y.setBigInt64(0,R),S}a(h,"createHeader");function E(_){let R=f.fd;if(_){if(i.unlock(d,0),R&&((0,Ve.close)(R),f.fd=null),r.deleteOnFailure)(0,Ve.unlink)(n,S=>{S&&Mt.default.debug?.("Error while deleting aborted blob file",S)});else try{if((0,Ve.statSync)(n).size===0){let S=Buffer.from(_.toString());(0,Ve.writeFile)(n,Buffer.concat([h(BigInt(S.length)+0xff000000000000n),S]),y=>{y&&Mt.default.debug?.("Error write error message to blob file",y)})}}catch(S){Mt.default.debug?.("Error checking blob file after abort",S)}u(_)}else{if(!m){m=!0;let S=p?p.bytesWritten:f.bytesWritten-Lr;e.size=S,(0,Ve.write)(R,h(S),0,Lr,0,E);return}i.unlock(d,0),c?(0,Ve.fdatasync)(R,S=>{S&&u(S),l(),(0,Ve.close)(R),f.fd=null}):(l(),(0,Ve.close)(R),f.fd=null)}}a(E,"finished")}),e}function ug(e){return $r.get(e)?.fileId}function k9(e){return $r.get(e)?.saving}function b0(e){let t=$r.get(e);return t?.fileId&&Qu(t)}function Xu(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=sI.get(e);if(!t){if(!e.databaseName)return Mt.default.warn?.("No database name specified, can not determine blob storage path"),[];let r=(0,Ym.get)(U.STORAGE_BLOBPATHS);r?t=r.map(n=>(0,zi.join)(n,e.databaseName)):t=[(0,zi.join)((0,Ym.getHdbBasePath)(),"blobs",e.databaseName)],sI.set(e,t)}return t}async function aI(e){let t=Xu(e);t&&await Promise.all(t.map(r=>A0(r)))}async function A0(e){if((0,Ve.existsSync)(e)){for(let t of await(0,kn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await A0((0,zi.join)(e,t.name));else try{await(0,kn.unlink)((0,zi.join)(e,t.name))}catch(r){Mt.default.warn?.("Error deleting file",r)}try{await(0,kn.rmdir)(e)}catch(t){Mt.default.warn?.("Error deleting directory",t)}}}function Qu({storageIndex:e,fileId:t,store:r}){let n=Xu(r);return(0,zi.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 H9(e,t){let r=t.contentBuffer,n=r.length;if(!(n<S0))return e.size=n,nI(e,tc.Readable.from([r]),t)}function G9(e){let t=Xu(e.store),r=q9(),n=t?.length>1?$9(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Qu(e),o=(0,zi.dirname)(i);(0,Ve.existsSync)(o)||(0,iI.ensureDirSync)(o),e.filePath=i}function q9(){let e=_0.get(Fn);if(!e){let t=0,r=Xu(Fn);for(let n of r){let s=0;for(let i=0;i<3;i++){s=s*4096;let o=0;if((0,Ve.existsSync)(n))for(let c of(0,Ve.readdirSync)(n)){let l=parseInt(c,16);i===2&&c.length>3&&(l=parseInt(c.slice(-3),16),l+=parseInt(c.slice(0,-3),16)*68719476736),l>o&&(o=l)}s+=o,n=(0,zi.join)(n,o.toString(16))}t=Math.max(t,s)}e=new BigInt64Array([BigInt(t)+1n]),e=new BigInt64Array(Fn.getUserSharedBuffer("blob-file-id",e.buffer)),_0.set(Fn,e)}return Number(Atomics.add(e,0,1n))}function $9(e,t){let r=Date.now();if(!e.frequencyTable){e.lastUpdated=0;let s=new Array(ag);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,V9(e)),e.frequencyTable[t%ag]}async function V9(e){if(!kn.statfs)return;let t=await Promise.all(e.map(async s=>{let i;try{i=await(0,kn.statfs)(s)}catch(c){if(c.code!=="ENOENT")throw c;(0,iI.ensureDirSync)(s),i=await(0,kn.statfs)(s)}let o=i.bavail*i.bsize;return Math.pow(o,.8)})),r=new Array(ag),n=t.map(s=>1/s);for(let s=0;s<ag;s++){let i=1/0,o=0;for(let c=0;c<n.length;c++)n[c]<i&&(o=c,i=n[c]);n[o]+=1/t[o],r[s]=o}e.frequencyTable=r}function dg(e,t,r){ju=t,Fn=r,fl=!1;try{return e()}finally{ju=void 0,Fn=void 0}}function K9(e){Zr=[];let t;try{t=e()}catch(n){throw Zr=void 0,n}let r=Zr.length<2?Zr[0]:Promise.all(Zr);return Zr=void 0,r?r.then(()=>e()):t}function fg(e,t,r){try{Zr=[],Jo=r,Fn=t,e()}catch(s){throw Jo=void 0,Zr=void 0,s}Jo=void 0;let n=Zr.length<2?Zr[0]:Promise.all(Zr);return Zr=void 0,n}function jm(e,t,r){Fn=r;try{return Jo=t,e()}finally{Jo=void 0}}function Qo(e,t){return Fn=t,e()}function rc(e){dl(e,t=>{lg(t)})}function dl(e,t){if(e instanceof xs)t(e);else if(Array.isArray(e))for(let r of e)typeof r=="object"&&r&&dl(r,t);else if(e&&typeof e=="object"&&!e[Symbol.iterator])for(let r in e){let n=e[r];typeof n=="object"&&n&&dl(e[r],t)}}function cI(e,t){let r=[];for(let n in e){let s=e[n];s instanceof Ju&&s.saveBeforeCommit&&r.push(s)}if(r.length>0)return()=>(Fn=t,Promise.all(r.map(n=>Wm(n,!0).saving??Promise.resolve())))}function W9(){return class{static{a(this,"Blob")}content;constructor(t){this.content=t[0]}stream(){return new ReadableStream({start(t){t.enqueue(this.content),t.close()}})}text(){return Promise.resolve(this.content.toString())}arrayBuffer(){return Promise.resolve(this.content.buffer)}get size(){return this.content.length}slice(){throw new Error("Not implemented")}bytes(){return Promise.resolve(this.content)}get type(){return""}}}async function j9(e,t){let r,n,s=0;for(let d in e){let f=e[d];if(r=f.primaryStore.rootStore,n=f.auditStore,n)break}let i=new Set,o=Xu(r);if(o)for(let d of o)await c(d);return await l(),Mt.default.warn?.(`Cleaned Orphan Blobs from ${t??"database"}, deleted ${s} blobs)`),s;async function c(d){try{if(!(0,Ve.existsSync)(d))return;for(let f of await(0,kn.readdir)(d,{withFileTypes:!0})){let m=(0,zi.join)(d,f.name);if(f.isDirectory())await c(m);else if(i.size%1e6===0&&Mt.default.info?.("Finding all blobs for orphan check, paths accumulated",i.size),i.add(m),i.size%2e3===0){let p=(0,g0.getHeapStatistics)();p.used_heap_size>p.heap_size_limit*(.8-i.size/16e6)&&await l()}}}catch(f){Mt.default.error?.("Error searching path for blobs",d,f)}}a(c,"searchPath");async function l(){let d=0,f=Math.floor(((0,Ym.get)(U.STORAGE_BLOBCLEANUPSPEED)??1e4)/1e3+1);for(let m in e){Mt.default.warn?.("Checking for references to potential orphaned blobs in table",m);let p=e[m];for(let h of p.primaryStore.getRange({versions:!0,snapshot:!1,lazy:!0}))try{h.metadataFlags&en&&h.value&&u(h.value),d++%f===0?await(0,zu.setTimeout)(1):await(0,zu.setImmediate)()}catch(E){Mt.default.error?.("Error searching table",m," for references to potential orphaned blobs failed",E)}}Mt.default.warn?.("Checking for references to potential orphaned blobs in the audit log");for(let{value:m}of n.getRange({start:1,snapshot:!1,lazy:!0}))try{let p=Nt(m),h=n.tableStores[p.tableId],E=h?.getEntry(p.recordId);(!E||E.version!==p.version||!E.value)&&u(p.getValue(h)),d++%f===0?await(0,zu.setTimeout)(1):await(0,zu.setImmediate)()}catch(p){Mt.default.error?.("Error searching audit log for references to potential orphaned blobs failed",p)}Mt.default.warn?.("Deleting",i.size,"orphaned blobs"),s+=i.size;for(let m of i)try{await(0,kn.unlink)(m)}catch(p){Mt.default.warn?.("Error deleting file",p)}Mt.default.warn?.("Finished deleting",i.size,"orphaned blobs"),i.clear()}a(l,"removePathsThatAreNotReferenced");function u(d){dl(d,f=>{if(f instanceof Ju){let m=$r.get(f);if(m.fileId!=null){let p=Qu(m);i.has(p)&&i.delete(p)}}})}a(u,"checkObjectForReferences")}var ji,kn,Ve,cg,tc,iI,Ym,zi,Mt,g0,zu,S0,Lr,T0,oI,p0,U9,x9,h0,$r,Jo,xs,ju,Zr,Fn,fl,Km,og,B9,E0,Ju,R0,sI,_0,ag,Y9,ls=ie(()=>{ji=require("msgpackr"),kn=require("node:fs/promises"),Ve=require("node:fs"),cg=require("node:zlib"),tc=require("node:stream"),iI=require("fs-extra"),Ym=b(fe());$();zi=require("path"),Mt=b(hr());zo();Yi();g0=require("node:v8"),zu=require("node:timers/promises"),S0=8192,Lr=8,T0=0,oI=1,p0=255,U9=new Uint8Array([0,T0,255,255,255,255,255,255]),x9=new Uint8Array([0,oI,255,255,255,255,255,255]),h0=0xffffffffffff,$r=new WeakMap,xs=global.Blob||W9(),fl=!1,Km=new Uint8Array(8),og=new DataView(Km.buffer),B9=6e4;a(y0,"InstanceOfBlobWithNoConstructor");y0.prototype=xs.prototype;E0=!1,Ju=class e extends y0{static{a(this,"FileBackedBlob")}type="";size;#e;#t;constructor(t){super(),t?.type&&(this.type=t.type),t?.size!=null&&(this.size=t.size),t?.saveBeforeCommit!=null&&(this.saveBeforeCommit=t.saveBeforeCommit)}on(t,r){if(t==="error")this.#e??=[],this.#e.push(r);else if(t==="size")this.#t??=[],this.#t.push(r);else throw new Error("Only 'error' and 'size' events are supported")}toJSON(){if(this.type?.startsWith("text")){let t=$r.get(this),{start:r,end:n,contentBuffer:s,asString:i}=t;return i||(s&&(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),s?(t.asString=s.toString(),t.asString):(rI()&&tI(this.bytes().then(o=>t.contentBuffer=o)),`[blob: ${this.type}, ${this.size} bytes]`))}return{description:"Blobs that are not of type text/* can not be directly serialized as JSON, use as the body of a response or convert to another type"}}async text(){return(await this.bytes()).toString()}bytes(){let t=$r.get(this),{start:r,end:n,contentBuffer:s}=t;if(s)return(n!==void 0||r!==void 0)&&(s=s.subarray(r??0,n??t.contentBuffer.length)),Promise.resolve(s);let i=Qu(t),o,c=a(async()=>{let l,u=Lr;try{if(l=await(0,kn.readFile)(i),l.length>=Lr){l.copy(Km,0,0,Lr);let f=og.getBigUint64(0);if(Number(f>>48n)===p0)throw new Error("Error in blob: "+l.subarray(Lr));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<h0&&(this.size=u,this.#t))for(let m of this.#t)m(u)}}catch(f){if(f.code!=="ENOENT")throw f;l=Buffer.alloc(0)}function d(f){if(u>f.length){let m=t.store,p=t.fileId+":blob";if(o)throw new Error(`Incomplete blob for ${i}`);return new Promise(h=>{if(m.attemptLock(p,0,()=>(o=!0,h(c()))))return o=!0,m.unlock(p,0),h(c())})}return(n!=null||r!=null)&&(f=f.subarray(r??0,n??f.length)),f}return a(d,"checkCompletion"),l[1]===oI?new Promise((f,m)=>{(0,cg.deflate)(l.subarray(Lr),(p,h)=>{p?m(p):f(d(h))})}):d(l.subarray(Lr))},"readContents");return c()}async arrayBuffer(){let t=await this.bytes(),r=new ArrayBuffer(t.length);return new Uint8Array(r).set(t),r}stream(){let t=$r.get(this),{contentBuffer:r,start:n,end:s}=t;if(r)return(s!=null||n!=null)&&(r=r.subarray(n??0,s??t.contentBuffer.length)),new ReadableStream({pull(E){E.enqueue(r),E.close()}});let i=Qu(t),o,c=0,l=0,u,d,f,m=!1,p=this;return new ReadableStream({start(){let E=1e3,_=a((R,S)=>{(0,Ve.open)(i,"r",(y,I)=>{if(y){if(y.code==="ENOENT"&&f!==!1&&(Mt.default.debug?.("File does not exist yet, waiting for it to be created",i,E),E-- >0))return setTimeout(()=>{h(),_(R,S)},20).unref();S(y),p.#e?.forEach(w=>w(y))}else o=I,R(I)})},"openFile");return new Promise(_)},pull:a(E=>{let _=0,R=100;return new Promise(a(function S(y,I){function w(H){(0,Ve.close)(o),clearTimeout(d),u&&u.close(),I(H),p.#e?.forEach(Z=>Z(H))}a(w,"onError");let L=Buffer.allocUnsafe(262144);(0,Ve.read)(o,L,0,L.length,c,(H,Z,X)=>{if(l+=Z,H)return w(H);if(c===0){if(Z<Lr){R-- >0&&f!==!1?(h(),Mt.default.debug?.("File was empty, waiting for data to be written",i,R),setTimeout(()=>S(y,I),20).unref()):(Mt.default.debug?.("File was empty, throwing error",i,R),w(new Error(`Blob ${t.fileId} was empty`)));return}X.copy(Km,0,0,Lr);let Q=og.getBigUint64(0);if(Number(Q>>48n)===p0)return w(new Error("Error in blob: "+X.subarray(Lr,Z)));if(_=Number(Q&0xffffffffffffn),_<h0&&p.size!==_&&(p.size=_,p.#t))for(let F of p.#t)F(_);X=X.subarray(Lr,Z),l-=Lr}else if(Z===0){let Q=Buffer.allocUnsafe(8);return(0,Ve.read)(o,Q,0,Lr,0,F=>{if(F)return w(F);if(Km.set(Q),_=Number(og.getBigUint64(0)&0xffffffffffffn),_>l){h()?(u=(0,Ve.watch)(i,{persistent:!1},()=>{u.close(),u=null,clearTimeout(d),S(y,I)}),(0,Ve.readSync)(o,Q,0,Q.length,c)>0?(u.close(),u=null,S(y,I)):d=setTimeout(()=>{w(new Error(`File read timed out reading from ${i}`))},B9).unref()):m?w(new Error("Blob is incomplete")):(m=!0,S(y,I));return}(0,Ve.close)(o),E.close(),y()})}else X=X.subarray(0,Z);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=Z,S(y,I);s&&l>=s&&(l>s&&(X=X.subarray(0,s-c)),l=_=s),n&&n>c&&(X=X.subarray(n-c))}c+=Z;try{E.enqueue(X)}catch(Q){return Mt.default.debug?.("Error enqueuing chunk",Q),y()}l===_&&((0,Ve.close)(o),E.close()),y()})},"readMore"))},"pull"),cancel(){(0,Ve.close)(o),clearTimeout(d),u&&u.close()}});function h(){if(f===void 0){let E=t.store,_=t.fileId+":blob";f=!E.attemptLock(_,0,()=>{f=!1}),f||E.unlock(_,0)}return f}}slice(t,r,n){let s=$r.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};$r.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};$r.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return E0||(E0=!0,Mt.default.warn?.("save() method on Blob is deprecated, use the 'saveBeforeCommit' flag on the Blob constructor instead")),this.saveBeforeCommit=!0,Promise.resolve()}get written(){return $r.get(this)?.saving??Promise.resolve()}},R0=500;a(lg,"deleteBlob");a(F9,"setDeletionDelay");global.createBlob=function(e,t){let r=new Ju(t),n={storageIndex:0,fileId:null,flush:t?.flush,compress:t?.compress};if($r.set(r,n),e instanceof Uint8Array)r.size=e.length,n.contentBuffer=e;else if(e instanceof tc.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=tc.Readable.from(e);else throw new Error("Invalid source type");return r};a(Wm,"saveBlob");a(nI,"writeBlobWithStream");a(ug,"getFileId");a(k9,"isSaving");a(b0,"getFilePathForBlob");sI=new Map;a(Xu,"getRootBlobPathsForDB");a(aI,"deleteRootBlobPathsForDB");a(A0,"rimrafSteadily");a(Qu,"getFilePath");a(H9,"writeBlobWithBuffer");a(G9,"generateFilePath");_0=new Map;a(q9,"getNextFileId");ag=128;a($9,"getNextStorageIndex");a(V9,"createFrequencyTableForStoragePaths");a(dg,"encodeBlobsWithFilePath");a(K9,"encodeBlobsAsBuffers");a(fg,"decodeBlobsWithWrites");a(jm,"decodeWithBlobCallback");a(Qo,"decodeFromDatabase");a(rc,"deleteBlobsInObject");a(dl,"findBlobsInObject");a(cI,"startPreCommitBlobsForRecord");Y9=new ji.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,ji.addExtension)({Class:xs,type:11,unpack:a(function(e){let t=Y9.unpack(e),r=new Ju;if(Object.assign(r,t[0]),typeof t[1]!="object"){if($r.set(r,{storageIndex:t[1],fileId:t[2],store:Fn}),Jo)return Jo(r)??r;if(!Fn)throw new Error("No store specified, cannot load blob from storage")}else $r.set(r,{storageIndex:0,fileId:null,storageBuffer:e,contentBuffer:t[1]}),r.size=t[1]?.length;return r},"unpack"),pack:a(function(e){let t=$r.get(e);if(ju!==void 0&&(fl=!0,t?.recordId!==void 0&&t.recordId!==ju))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<S0)return r.size=t.contentBuffer.length,(0,ji.pack)([r,t.contentBuffer])}if(ju!==void 0){if(t=Wm(e),!t.fileId)throw new Error("Unable to save blob without file id");return t.recordId=ju,(0,ji.pack)([r,t.storageIndex,t.fileId])}if(t){if(Jo)return Jo(e),(0,ji.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Ve.readFileSync)(Qu(t));if(n.length>=Lr&&(n.copy(Km,0,0,Lr),Number(og.getBigUint64(0)&0xffffffffffffn)===n.length-Lr))return Buffer.concat([(0,ji.pack)([r]),n]);if(Zr)Zr.push(e.bytes());else throw new Error("Incomplete blob");return Buffer.alloc(0)}catch(n){if(n.code==="ENOENT"&&Zr)return Zr.push(e.bytes()),Buffer.alloc(0);throw n}}else throw new Error("Blob has no storage info or buffer attached to it")},"pack")});(0,ji.addExtension)({Class:Promise,type:12,pack(){throw new Error("Cannot encode a promise")}});a(W9,"polyfillBlob");a(j9,"cleanupOrphans")});var B0={};Re(B0,{ACTION_32_BIT:()=>gg,ACTION_64_BIT:()=>X9,AUDIT_STORE_OPTIONS:()=>Qm,Decoder:()=>pl,HAS_BLOBS:()=>en,HAS_CURRENT_RESIDENCY_ID:()=>hl,HAS_EXPIRATION_EXTENDED_TYPE:()=>ep,HAS_ORIGINATING_OPERATION:()=>Zm,HAS_PREVIOUS_RESIDENCY_ID:()=>El,REMOTE_SEQUENCE_UPDATE:()=>Sg,createAuditEntry:()=>_l,getLastRemoved:()=>J9,openAuditStore:()=>Eg,readAuditEntry:()=>Nt,removeAuditEntry:()=>_g,setAuditRetention:()=>Q9,transactionKeyEncoder:()=>v0});function Eg(e){let t=e.auditStore=e.openDB(lI.AUDIT_STORE_NAME,{create:!1,...Qm});t||(t=e.auditStore=e.openDB(lI.AUDIT_STORE_NAME,Qm),w0(t,1)),t.rootStore=e,t.tableStores=[];let r=[];t.addDeleteRemovalCallback=function(l,u,d){return r[l]=d,t.tableStores[l]=u,t.deleteCallbacks=r,{remove(){delete r[l]}}};let n=null,s,i=0,o=dI;tp(t.env.path,l=>{if(i=l,l)return c(100)});function c(l){l&&(o=l),clearTimeout(n);let u=new Promise(d=>{n=setTimeout(async()=>{if(await s,s=u,t.rootStore.status==="closed"||t.rootStore.status==="closing")return;let f=0,m,p;try{for(let{key:h,value:E}of t.getRange({start:1,snapshot:!1,end:Date.now()-uI/(1+i*i)})){try{m=_g(t,h,E)}catch(_){Zu.warn("Error removing audit entry",_)}if(p=h,await new Promise(setImmediate),++f>=z9){o=10;break}}await m}finally{f===0?o=Math.min(o<<1,uI/10):(w0(t,p),o>100&&(o=o>>1)),d(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Jm.getWorkerIndex)()===(0,Jm.getWorkerCount)()-1&&c(),(0,Jm.getWorkerIndex)()===0&&!I0)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(I0=!0,Zu.error("The current time is before the last recorded entry in the audit log. Time reversal can undermine the integrity of data tracking and certificate validation and the time must be corrected."));return t}function _g(e,t,r){let n=Z9(r),s;if(n&en){s=Nt(r);let i=e.tableStores[s.tableId];if(i){let o=s.type==="message"?null:i?.getEntry(s.recordId);(!o||o.version!==s.version||!o.value)&&Qo(()=>rc(s.getValue(i)),i.rootStore)}}if((n&15)===fI){s=s||Nt(r);let i=s.tableId;e.tableStores[s.tableId]?.getEntry(s.recordId)?.version===s.version&&e.deleteCallbacks?.[i]?.(s.recordId,s.version)}return e.remove(t)}function w0(e,t){mI[0]=t,e.put(Symbol.for("last-removed"),M0)}function J9(e){let t=e.get(Symbol.for("last-removed"));if(t)return M0.set(t),mI[0]}function Q9(e,t=dI){uI=e,dI=t}function _l(e,t,r,n,s,i,o,c,l,u,d,f,m){let p=U0[o];if(!p)throw new Error(`Invalid audit entry type ${o}`);let h=1;if(n&&(n>1?nc.setFloat64(0,n):Bs.set(pI),h=9),l){if(l&255)throw new Error("Illegal extended type");h+=3}R(s),R(t),_(r),nc.setFloat64(h,e),h+=8,l&hl&&R(u),l&El&&R(d),l&ep&&(nc.setFloat64(h,f),h+=8),l&Zm&&R(x0[m]),i?_(i):Bs[h++]=0,l?nc.setUint32(n?8:0,p|l|3221225472):Bs[n?8:0]=p;let E=Bs.subarray(0,h);if(c)return Buffer.concat([E,c]);return E;function _(S){let y=h;h+=1,h=(0,ml.writeKey)(S,Bs,h);let I=h-y-1;I>127?I>16383?(Zu.error("Key or username was too large for audit entry",S),h=y+1,Bs[y]=0):(Bs.copyWithin(y+2,y+1,h),nc.setUint16(y,I|32768),h++):Bs[y]=I}function R(S){S<128?Bs[h++]=S:S<16384?(nc.setUint16(h,S|32768),h+=2):S<1056964608?(nc.setUint32(h,S|3221225472),h+=4):(Bs[h]=255,nc.setUint32(h+1,S),h+=5)}}function Z9(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 pl(e.buffer,e.byteOffset,e.byteLength));return n.position=t,n.readInt()}function Nt(e,t=0,r=void 0){try{let n=e.dataView||(e.dataView=new pl(e.buffer,e.byteOffset,e.byteLength));n.position=t;let s;e[n.position]==66&&(s=n.readFloat64());let i=n.readInt(),o=n.readInt(),c=n.readInt(),l=n.readInt(),u=n.position,d=n.position+=l,f=n.readFloat64(),m,p,h,E;if(i&hl&&(m=n.readInt()),i&El&&(p=n.readInt()),i&ep&&(h=n.readFloat64()),i&Zm){let y=n.readInt();E=x0[y]}l=n.readInt();let _=n.position,R=n.position+=l,S;return{type:U0[i&7],tableId:c,nodeId:o,get recordId(){return(0,ml.readKey)(e,u,d)},getBinaryRecordId(){return e.subarray(u,d)},version:f,previousLocalTime:s,get user(){return R>_?(0,ml.readKey)(e,_,R):void 0},get encoded(){return t?e.subarray(t,r):e},get size(){return t!==void 0&&r!==void 0?r-t:e.byteLength},getValue(y,I,w){if(i&pg||i&zm&&!I)return S||(S=Qo(()=>y.decoder.decode(e.subarray(n.position,r)),y.rootStore)),S;if(i&zm&&w)return KA(y.getEntry(this.recordId),w,y)},getBinaryValue(){return i&(pg|zm)?e.subarray(n.position,r):void 0},extendedType:i,residencyId:m,previousResidencyId:p,expiresAt:h,originatingOperation:E}}catch(n){return Zu.error("Reading audit entry error",n,e),{}}}var ml,hg,lI,Jm,D0,Zu,Bs,nc,v0,Qm,uI,z9,mI,M0,dI,I0,pg,zm,N0,fI,C0,O0,P0,L0,gg,X9,Sg,hl,El,Zm,ep,en,U0,x0,pl,Yi=ie(()=>{ml=require("ordered-binary"),hg=b(fe()),lI=b(Or());$();Jm=b(it()),D0=b(ue());gl();Zu=b(ee());rg();ls();Tg();(0,hg.initSync)();Bs=Buffer.alloc(2816),nc=new DataView(Bs.buffer,Bs.byteOffset,2816),v0={writeKey(e,t,r){return e===Xm?(t.set(Xm,r),r+8):typeof e=="number"?((t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).setFloat64(r,e),r+8):(0,ml.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,ml.readKey)(e,t,r)}},Qm={encoding:"binary",keyEncoder:v0},uI=(0,D0.convertToMS)((0,hg.get)(U.LOGGING_AUDITRETENTION))||86400*3,z9=1e3,mI=new Float64Array(1),M0=new Uint8Array(mI.buffer),dI=1e4,I0=!1;a(Eg,"openAuditStore");a(_g,"removeAuditEntry");a(w0,"updateLastRemoved");a(J9,"getLastRemoved");a(Q9,"setAuditRetention");pg=16,zm=32,N0=1,fI=2,C0=3,O0=4,P0=5,L0=6,gg=14,X9=15,Sg=11,hl=512,El=1024,Zm=2048,ep=4096,en=8192,U0={put:N0|pg,[N0]:"put",delete:fI,[fI]:"delete",message:C0|pg,[C0]:"message",invalidate:O0|zm,[O0]:"invalidate",patch:P0|zm,[P0]:"patch",relocate:L0,[L0]:"relocate"},x0={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(_l,"createAuditEntry");a(Z9,"readAction");a(Nt,"readAuditEntry");pl=class extends DataView{static{a(this,"Decoder")}position=0;readInt(){let t;return t=this.getUint8(this.position++),t>=128?t>=192?t===255?(t=this.getUint32(this.position),this.position+=4,t):(t=this.getUint32(this.position-1)&1073741823,this.position+=3,t):(t=this.getUint16(this.position-1)&32767,this.position++,t):t}readFloat64(){try{let t=this.getFloat64(this.position);return this.position+=8,t}catch(t){throw t.message=`Error reading float64: ${t.message} at position ${this.position}`,t}}}});function yg(){return hI||(hI=je({table:"hdb_analytics_hostname",database:"system",attributes:[{name:"id",isPrimaryKey:!0},{name:"hostname"}]})),hI}function t7(e){return e=e.replace(e7,t=>{let[r,n,s,i]=t.split(".").map(o=>parseInt(o));return(r<<8|n).toString(16)+":"+(s<<8|i).toString(16)}),e=e.replace("::",":".repeat(10-e.split(":").length)),e.toLowerCase().split(":").map(t=>t.padStart(4,"0")).join(":")}function r7(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 rp(e){let t=F0.default.createHash("shake128",{outputLength:4}),r;return(0,k0.isIPv6)(e)?r=t7(e):r=e.toLowerCase(),r7(Uint8Array.from(t.update(r).digest()))}var F0,k0,EI,hI,e7,_I=ie(()=>{Oe();F0=b(require("crypto")),k0=require("node:net"),EI=new Map;a(yg,"getAnalyticsHostnameTable");e7=/(\d{1,3}\.){3}\d{1,3}$/;a(t7,"normalizeIPv6");a(r7,"nodeHashToNumber");a(rp,"stableNodeId")});var Xo,gI=ie(()=>{Xo={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 K0={};Re(K0,{captureProfile:()=>TI,userCodeFolders:()=>Rg});async function TI(e){let r=V0/1e6,n=new Map,s=new Map,i=new Map,o=0,c=0;try{let u=SI.time.stop(!0),d=u.stringTable.strings;for(let f of u.function)s.set(f.id,d[f.filename]);for(let f of u.location)n.set(f.id,f.line[0]);for(let f of u.sample)l(f);qe(c*r,"cpu-usage","harper"),qe(o*r,"cpu-usage","user");for(let[f,m]of i)if(m>100){let p=n.get(f),h=s.get(p.functionId)+":"+p.line;qe(m*r,"cpu-usage",h)}}catch(u){$0.error?.("analytics profiler error:",u)}finally{e&&setTimeout(()=>{let u=((0,np.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;TI(u)},e).unref()}function l(u){let d=!1;for(let f of u.locationId){let m=s.get(n.get(f).functionId);if(Rg.some(p=>m.startsWith(p))){let p=u.value[0];o+=p,d||i.set(f,(i.get(f)??0)+p);return}if(m.startsWith(G0.PACKAGE_ROOT)){let p=u.value[0];c+=p,d||(i.set(f,(i.get(f)??0)+p),d=!0)}}}a(l,"getUserHitCount")}var np,G0,q0,SI,$0,H0,Rg,V0,Y0=ie(()=>{Hn();np=b(fe());$();G0=b(Dt()),q0=require("node:fs"),SI=require("@datadog/pprof"),$0=b(ee()),H0=(0,np.getHdbBasePath)(),Rg=H0?[H0]:[];process.env.RUN_HDB_APP&&Rg.push((0,q0.realpathSync)(process.env.RUN_HDB_APP));V0=5e4;(async()=>{if(Rg.length===0)return;SI.time.start({intervalMicros:V0});let e=((0,np.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;setTimeout(()=>{TI(e)},e).unref()})();a(TI,"captureProfile")});var Ig={};Re(Ig,{addAnalyticsListener:()=>ap,analyticsDelay:()=>AI,calculateCPUUtilization:()=>dB,diffResourceUsage:()=>fB,onAnalyticsAggregate:()=>NI,recordAction:()=>qe,recordActionBinary:()=>rn,recordHostname:()=>II,setAnalyticsEnabled:()=>i7});function i7(e){iB=e,clearTimeout(ip),ip=null}function o7(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 a7(e,t,r,n,s,i){let o={};if(typeof t=="number")o.total=t,o.values=new Float32Array(4),o.values.index=1,o.values[0]=t,o.total=t;else if(typeof t=="boolean")o.total=t?1:0,o.count=1;else if(typeof t=="function")o.count=1,o.callback=t;else throw new TypeError("Invalid metric value type "+typeof t);o.description={metric:r,path:n,method:s,type:i},Ag.set(e,o)}function qe(e,t,r,n,s){if(!iB)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=Ag.get(i);o?o7(e,o):a7(i,e,t,r,n,s),ip||c7()}function rn(e,t,r,n,s){qe(!!e,t,r,n,s)}function ap(e){aB.push(e)}function c7(){yI||=performance.now(),ip=setTimeout(async()=>{ip=null;let e=performance.now()-yI;yI=0;let t=[],r={time:Date.now(),period:e,threadId:Sl.threadId,metrics:t};for(let[s,i]of Ag){if(i.values){let o=i.values.subarray(0,i.values.index);o.sort();let c=o.length,l=0,u=[],d;for(let f of lB){let m=Math.floor(c*f),p=o[m-1];if(m>l){let h=m-l;if(p===d){let E=u[u.length-1];typeof E=="number"?u[u.length-1]={value:E,count:1+h}:E.count+=h}else u.push(h>1?{value:p,count:h}:p),d=p;l=m}}t.push(Object.assign(i.description,{mean:i.total/c,distribution:u,count:c}))}else i.callback?t.push(Object.assign(i.description,i.callback(i))):t.push(Object.assign(i.description,{total:i.total,count:i.count}));await mB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:Sl.threadId,byThread:!0,...n});for(let s of aB)s(t);Ag=new Map,Sl.parentPort?Sl.parentPort.postMessage({type:oB,report:r}):EB({report:r})},AI).unref()}async function II(){let e=Ue.hostname;tn.trace?.("recordHostname server.hostname:",e);let t=rp(e);tn.trace?.("recordHostname nodeId:",t);let r=yg(),n={id:t,hostname:e};tn.trace?.(`recordHostname storing hostname: ${JSON.stringify(n)}`),await r.put(n.id,n)}function uB(e){let t=EI.get(e);return t?(tn.trace?.("storeMetric cached nodeId:",t),t):(t=rp(e),tn.trace?.("storeMetric new nodeId:",t),EI.set(e,t),t)}function ed(e,t){let r=uB(Ue.hostname),n={id:[(0,bI.getNextMonotonicTime)(),r],...t};tn.trace?.(`storing metric ${JSON.stringify(n)}`),e.put(n.id,n)}function dB(e,t){let r=e.userCPUTime+e.systemCPUTime;return tn.trace?.(`calculateCPUUtilization cpuTime: ${r} period: ${t}`),Math.round(r/t*100)/100}function fB(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 l7(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let o=`${t}.${s}`,c=i.getSize(),l={metric:Xo.TABLE_SIZE,database:t,table:s,size:c};tn.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),ed(e,l),n+=c}return n}function W0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=sB.statSync(s.primaryStore.env.path).size,c=l7(e,r,n),l=o-c,u={metric:Xo.DATABASE_SIZE,database:r,size:o,used:c,free:l,audit:i};ed(e,u),tn.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){tn.warn?.("Error getting DB size metrics",s)}}function j0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let o={metric:Xo.STORAGE_VOLUME,database:r,...i};ed(e,o),tn.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){tn.warn?.("Error getting DB volume metrics",s)}}async function u7(e,t=6e4){let r=wI(),n=pB(),s=new Promise(I=>{let w=performance.now();setImmediate(()=>{let L=performance.now();L-w>5e3&&tn.warn?.("Unusually high event queue latency on the main thread of "+Math.round(L-w)+"ms"),w=performance.now()}),n.primaryStore.prefetch([1],()=>{let L=performance.now();L-w>5e3&&tn.warn?.("Unusually high task queue latency on the main thread of "+Math.round(L-w)+"ms"),I(L-w)})}),i,o=uB(Ue.hostname);for(let I of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(!(!I.value?.time||I.value?.id[1]!==o)){i=I.value.time;break}if(Date.now()-t<i)return;let c,l=new Map,u=new Map,d=[],f;for(let{key:I,value:w}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!w)continue;if(c){if(I>c+t)break}else c=I;f=I;let{metrics:L,threadId:H}=w;for(let Z of L||[]){let{path:X,method:Q,type:F,metric:de,count:oe,total:ae,distribution:he,threads:Te,...De}=Z;oe||(oe=1);let Qe=de+(X?"-"+X:"");Q!==void 0&&(Qe+="-"+Q),F!==void 0&&(Qe+="-"+F);let $e=l.get(Qe);if($e){if($e.threads){let Pt=$e.threads[H];if(Pt)$e=Pt;else{$e.threads[H]={...De};continue}}$e.count||($e.count=1);let ss=$e.count;for(let Pt in De){let Lt=De[Pt];typeof Lt=="number"&&($e[Pt]=($e[Pt]*ss+Lt*oe)/(ss+oe))}$e.count+=oe,ae>=0&&($e.total+=ae,$e.ratio=$e.total/$e.count)}else $e={period:t,...Z},delete $e.distribution,l.set(Qe,$e),$e.byThread&&($e.threads=[],$e.threads[H]={...De},d.push($e));if(he){he=he.map(Pt=>typeof Pt=="number"?{value:Pt,count:1}:Pt);let ss=u.get(Qe);ss?ss.push(...he):u.set(Qe,he)}}await mB()}for(let I of d){let{path:w,method:L,type:H,metric:Z,count:X,total:Q,distribution:F,threads:de,...oe}=I;de=de.filter(ae=>ae);for(let ae in oe){if(typeof I[ae]!="number")continue;let he=0;for(let Te of de){let De=Te[ae];typeof De=="number"&&(he+=De)}I[ae]=he}I.count=de.length,delete I.threads,delete I.byThread}for(let[I,w]of u){let L=l.get(I);w.sort((Pt,Lt)=>Pt.value>Lt.value?1:-1);let H=L.count-1,Z=[],X=0,Q=0,F;for(let Pt of lB){let Lt=H*Pt;for(;X<Lt;)F=w[Q++],X+=F.count,Q===1&&X--;let Ya=w[Q>1?Q-2:0];F||(F=w[0]),Z.push(F.value-(F.value-Ya.value)*(X-Lt)/F.count)}let[de,oe,ae,he,Te,De,Qe,$e,ss]=Z;Object.assign(L,{p1:de,p10:oe,p25:ae,median:he,p75:Te,p90:De,p95:Qe,p99:$e,p999:ss})}let m;for(let[,I]of l)I.time=f,ed(n,I),m=!0;if(m)for(let I of cB)I(l.values());let p=Date.now(),{idle:h,active:E}=performance.eventLoopUtilization();if(m||E*10>h){let I={metric:Xo.MAIN_THREAD_UTILIZATION,idle:h-z0,active:E-J0,taskQueueLatency:await s,time:p,...process.memoryUsage()};ed(n,I)}z0=h,J0=E;let _=process.resourceUsage();_.time=p,_.userCPUTime=_.userCPUTime/1e3,_.systemCPUTime=_.systemCPUTime/1e3,tn.trace?.(`process.resourceUsage: ${JSON.stringify(_)}`);let R=fB(bg,_);tn.trace?.(`diffed resourceUsage: ${JSON.stringify(R)}`),R.time=p,R.period=bg.time?p-bg.time:t,R.cpuUtilization=dB(R,R.period);let S={metric:Xo.RESOURCE_USAGE,...R};ed(n,S),bg=_;let y=dt();W0(n,y),W0(n,{system:y.system}),j0(n,y),j0(n,{system:y.system})}async function Q0(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function wI(){return X0||(X0=je({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function pB(){return Z0||(Z0=je({table:"hdb_analytics",database:"system",audit:!0,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function m7(){hB=!0;let e=(0,op.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await u7(AI,e),await Q0(wI(),d7),await Q0(pB(),f7)},Math.min(e/2,2147483647)).unref()}function EB(e,t){let r=e.report;r.threadId=t?.threadId||Sl.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(eB+=n.mean*n.count);r.totalBytesProcessed=eB,t&&(r.metrics.push({metric:Xo.UTILIZATION,...t.performance.eventLoopUtilization(tB.get(t))}),tB.set(t,t.performance.eventLoopUtilization())),r.id=(0,bI.getNextMonotonicTime)(),wI().primaryStore.put(r.id,r),hB||m7(),p7&&(_B=E7(r))}async function E7(e){if(await _B,!sc){let r=(0,sp.dirname)(n7());try{sc=await(0,RI.open)((0,sp.join)(r,"analytics.log"),"r+")}catch{sc=await(0,RI.open)((0,sp.join)(r,"analytics.log"),"w+")}}let t=(await sc.stat()).size;if(t>h7){let r=Buffer.alloc(t);await sc.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await sc.write(r,{position:0}),await sc.truncate(r.length),t=r.length}await sc.write(JSON.stringify(e)+`
|
|
12
12
|
`,t)}function NI(e){e&&cB.push(e)}var Sl,rB,nB,sp,RI,bI,op,sB,n7,s7,tn,Ag,iB,ip,yI,AI,oB,aB,cB,lB,z0,J0,bg,mB,d7,f7,X0,Z0,hB,eB,tB,p7,_B,sc,h7,Hn=ie(()=>{Sl=require("worker_threads"),rB=b(it());Oe();nB=b(ee()),sp=require("path"),RI=require("fs/promises"),bI=b(Us()),op=b(fe());$();qr();sB=b(require("node:fs"));_I();gI();({getLogFilePath:n7,forComponent:s7}=nB.default);setTimeout(()=>{Promise.resolve().then(()=>Y0())},1e3);tn=s7("analytics").conditional;(0,op.initSync)();Ag=new Map,iB=(0,op.get)(U.ANALYTICS_AGGREGATEPERIOD)>-1;a(i7,"setAnalyticsEnabled");a(o7,"recordExistingAction");a(a7,"recordNewAction");a(qe,"recordAction");Ue.recordAnalytics=qe;a(rn,"recordActionBinary");yI=0,AI=1e3,oB="analytics-report",aB=[],cB=[];a(ap,"addAnalyticsListener");lB=[.01,.1,.25,.5,.75,.9,.95,.99,.999,1];a(c7,"sendAnalytics");a(II,"recordHostname");a(uB,"getHostNodeId");a(ed,"storeMetric");a(dB,"calculateCPUUtilization");a(fB,"diffResourceUsage");a(l7,"storeTableSizeMetrics");a(W0,"storeDBSizeMetrics");a(j0,"storeVolumeMetrics");a(u7,"aggregation");z0=0,J0=0,bg={userCPUTime:0,systemCPUTime:0},mB=a(()=>new Promise(setImmediate),"rest");a(Q0,"cleanup");d7=36e5,f7=31536e6;a(wI,"getRawAnalyticsTable");a(pB,"getAnalyticsTable");(0,rB.setChildListenerByType)(oB,EB);a(m7,"startScheduledTasks");eB=0,tB=new Map,p7=!1;a(EB,"recordAnalytics");h7=1e6;a(E7,"logAnalytics");a(NI,"onAnalyticsAggregate")});var RB={};Re(RB,{ENTRY:()=>g7,HAS_EXPIRATION:()=>Og,HAS_RESIDENCY_ID:()=>DI,HAS_STRUCTURE_UPDATE:()=>Pg,LAST_TIMESTAMP_PLACEHOLDER:()=>Xm,LOCAL_TIMESTAMP:()=>_7,METADATA:()=>rd,NEW_TIMESTAMP_PLACEHOLDER:()=>SB,NO_TIMESTAMP:()=>Ng,PENDING_LOCAL_TIME:()=>vI,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>pI,RecordEncoder:()=>LI,TIMESTAMP_ASSIGN_LAST:()=>T7,TIMESTAMP_ASSIGN_NEW:()=>TB,TIMESTAMP_ASSIGN_PREVIOUS:()=>yB,TIMESTAMP_PLACEHOLDER:()=>wg,TIMESTAMP_RECORD_PREVIOUS:()=>CI,entryMap:()=>ic,handleLocalTimeForGets:()=>Lg,lastMetadata:()=>ct,recordUpdater:()=>MI,removeEntry:()=>Rl});function R7(){return lp[0]=lp[0]^64,S7.getFloat64(0)}function Lg(e,t){let r=e.getEntry;e.readCount=0,e.cachePuts=!1,e.rootStore=t,e.encoder.rootStore=t,e.getEntry=function(o,c){e.readCount++,ct=null;let l=r.call(this,o,c);if(l){if(ct&&(l.metadataFlags=ct[rd],l.localTime=ct.localTime,l.residencyId=ct.residencyId,l.size=ct.size,ct.expiresAt>=0&&(l.expiresAt=ct.expiresAt),ct=null),l.value){if(l.value.constructor===Object){let u=l.value;l.value=new this.encoder.structPrototype.constructor,Object.assign(l.value,u)}ic.set(l.value,l)}l.key=o}return l};let n=e.get;e.get=function(o,c){ct=null;let l=n.call(this,o,c);return ct&&l&&(ic.set(l,ct),ct=null),l};let s=e.getRange;e.getRange=function(o){let c=s.call(this,o);return o.valuesForKey?c.map(l=>l?.value):o.values===!1||o.onlyCount?c:c.map(l=>{if(ct&&(l.metadataFlags=ct[rd],l.localTime=ct.localTime,l.residencyId=ct.residencyId,l.size=ct.size,ct.expiresAt>=0&&(l.expiresAt=ct.expiresAt),ct=null),l.value&&l.value.constructor===Object){let u=l.value;l.value=new this.encoder.structPrototype.constructor;for(let d in u)l.value[d]=u[d]}return l})};let i=e.useReadTransaction();if(i.done(),!i.done.isTracked){let o=i.constructor,c=i.use,l=i.done;o.prototype.use=function(){this.timerTracked||(this.timerTracked=!0,yl.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<yl.length;u++){let d=yl[u].deref();(!d||d.isDone||d.isCommitted)&&yl.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function MI(e,t,r){return function(n,s,i,o,c=-1,l,u,d="put",f,m){l==null?Tl=Ng:f?Tl=i?.localTime?CI|yB:Ng:Tl=l?i?.localTime?CI|16384:TB|16384:Ng;let p=u?.expiresAt;if(p>=0&&(c|=Og),cp=c,OI=p,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let h={version:o,instructedWrite:Tl>0},E,_=0;try{let R=i?.residencyId,S=u?.residencyId;S&&(PI=S,cp|=DI,_|=hl),R!==S&&(_|=El,R||(R=0)),c&Og&&(_|=ep),u?.originatingOperation&&(_|=Zm),f&&(h.ifVersion=E=i?.version??null),i&&i.value&&d!=="message"&&i.metadataFlags&en&&(!i.localTime||!r.getBinaryFast(i.localTime))&&rc(i.value);let y;if(s!==void 0&&(y=dg(()=>e.put(n,s,h),n,e.rootStore),fl&&(_|=en)),l){let I=u?.user?.username;if(m&&(dg(()=>e.encoder.encode(m),n,e.rootStore),fl&&(_|=en)),e.encoder.hasStructureUpdate&&(_|=Pg,e.encoder.hasStructureUpdate=!1),f&&i?.localTime){let w=i?.localTime,L=r.get(w);if(L){let H=Nt(L).previousLocalTime;return y=r.put(w,_l(o,t,n,H,u?.nodeId??server.replication.getThisNodeId(r)??0,I,d,td,_,S,R,p),{ifVersion:E}),y}}y=r.put(s===void 0?SB:Xm,_l(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,I,d,td,_,S,R,p,u?.originatingOperation),{instructedWrite:!0,ifVersion:E})}return u?.tableToTrack&&y7.has(d)&&qe(td?.length??1,"db-write",u.tableToTrack,null),y}catch(R){throw R.message+=" id: "+n+" options: "+h,R}}}function Rl(e,t,r){if(t)return t.value&&t.metadataFlags&en&&!e.auditStore?.getBinaryFast(t.localTime)&&rc(t.value),e.remove(t.key,r)}var gB,Cg,wg,Xm,pI,SB,_7,rd,g7,lp,S7,Ng,TB,T7,yB,CI,Og,DI,vI,Pg,y7,ic,td,Tl,cp,OI,PI,ct,LI,yl,gl=ie(()=>{gB=require("msgpackr");Yi();Cg=b(ee());ls();ls();Hn();wg=new Uint8Array([1,1,1,1,4,64,0,0]),Xm=new Uint8Array([1,1,1,1,1,0,0,0]),pI=new Uint8Array([1,1,1,1,3,64,0,0]),SB=new Uint8Array([1,1,1,1,0,64,0,0]),_7=Symbol("local-timestamp"),rd=Symbol("metadata"),g7=Symbol("entry"),lp=new Uint8Array(8),S7=new DataView(lp.buffer,0,8),Ng=0,TB=0,T7=1,yB=3,CI=4,Og=16,DI=32,vI=1,Pg=256,y7=new Set(["put","patch","delete","message","publish"]),ic=new WeakMap,Tl=0,cp=-1,OI=-1,PI=0,ct=null,LI=class extends gB.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0;class r{static{a(this,"RecordObject")}getUpdatedTime(){return ic.get(this)?.version}getExpiresAt(){return ic.get(this)?.expiresAt}}t.structPrototype=r.prototype,super(t);let n=this.encode;this.encode=function(i,o){if(Tl||cp>=0){let c=0,l=Tl;l&&(c+=8,Tl=0);let u=cp,d=OI,f=PI;u>=0&&(c+=4,cp=-1,d>=0&&(c+=8,OI=-1),f&&(c+=4,PI=0));let m=n.call(this,i,o|2048|c);td=m.subarray((m.start||0)+c,m.end);let p=m.start||0;return l&&(wg[4]=l,wg[5]=l>>8,m.set(wg,p),p+=8),fl&&(u|=en),u>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(p,u|gg<<24),p+=4,d>=0&&((m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setFloat64(p,d),p+=8),f&&(m.dataView||(m.dataView=new DataView(m.buffer,m.byteOffset,m.byteLength))).setUint32(p,f)),m}else return td=n.call(this,i,o),td};let s=this.saveStructures;this.saveStructures=function(i,o){let c=s.call(this,i,o);return this.hasStructureUpdate=!0,c}}decode(t,r){ct=null;let n=r?.start||0,s=r>-1?r:r?.end||t.length,i=t[n],o=0;try{if(i<32&&s>2){let c=n,l;if(i===2){if(t.copy)t.copy(lp,0,c),c+=8;else for(let m=0;m<8;m++)lp[m]=t[c++];l=R7(),i=t[c]}let u,d;i<32&&(i===gg?(o=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4):(o=i|t[c+1]<<5,c+=2),o&Og&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&DI&&(d=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let f=Qo(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return ct={localTime:l,[rd]:o,expiresAt:u,residencyId:d,size:s-n},f}return r?.valueAsBuffer?t:Qo(()=>super.decode(t,r),this.rootStore)}catch(c){return Cg.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(R7,"getTimestamp");a(Lg,"handleLocalTimeForGets");yl=[];setInterval(()=>{for(let e=0;e<yl.length;e++){let t=yl[e].deref();!t||t.isDone||t.isCommitted?yl.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(Cg.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):Cg.error("Read transaction detected that has been open too long (over one minute), make sure read transactions are quickly closed",t)),t.openTimer++):t.openTimer=1)}},15e3).unref();a(MI,"recordUpdater");a(Rl,"removeEntry")});function BI(e,t,r,n,s,i,o,c){let l=e[0];if(t==="or"){let f=u(l);for(let p=1;p<e.length;p++){let h=e[p],E=u(h);f=f.concat(E)}let m=new Set;return f.filter(p=>{let h=p.key??p;return m.has(h)?!1:(m.add(h),!0)})}else{let f=u(l),m=d(e.slice(1),!0,l.estimated_count);return m.length>0?o(f,m):f}function u(f){return f.conditions?BI(f.conditions,f.operator,r,n,s,i,o,c):od(f,n,f.descending||s.reverse===!0,r,s.allowFullScan,c,i)}a(u,"executeCondition");function d(f,m,p){return f.map((h,E)=>{if(h.conditions){let S=h.operator==="or",y=d(h.conditions,!S,p);return S?(I,w)=>y.some(L=>L(I,w)):(I,w)=>y.every(L=>L(I,w))}let _=(h.attribute||h[0])===r.primaryKey,R=dp(h,r,i,c,_,p);return m&&E<f.length-1&&p&&(p=L7(r.primaryStore,h.estimated_count,p)),R}).filter(Boolean)}a(d,"mapConditionsToFilters")}function od(e,t,r,n,s,i,o){let c=e[0]??e.attribute,l=e[1]??e.value,u=e.comparator;if(l===void 0&&u!=="sort")throw new nn.ClientError(`Search condition for ${c} must have a value`);if(Array.isArray(c)){let I=c[0],w=Qi(n.attributes,I);if(w.relationship){if(c.length<2)throw new nn.ClientError("Can not directly query a relational attribute, must query an attribute within the target table");let L=w.definition?.tableClass||w.elements?.definition?.tableClass,H=new Map,Z=od({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:u},t,r,L,s,H);if(w.relationship.to){i[c[0]]=H;let X=!!Qi(L.attributes,w.relationship.to)?.elements;Z=N7(Z,w,L.primaryStore,X,H)}if(w.relationship.from){let X=a(Q=>(Q?.key!==void 0&&(Q=Q.key),od({attribute:w.relationship.from,value:Q},t,r,n,s,H)),"searchEntry");w.elements?(i[c[0]]=H,Z=C7(Z,w,L.primaryStore,H,X)):Z=Z.flatMap(X)}return Z}else if(c.length===1)c=c[0];else throw new nn.ClientError("Unable to query by attribute "+JSON.stringify(c))}let d=c===n.primaryKey||c==null,f=d?n.primaryStore:n.indices[c],m,p,h,E;l instanceof Date&&(l=l.getTime());let _;switch(FI[u]||u){case"lt":m=!0,p=l;break;case"le":m=!0,p=l,h=!0;break;case"gt":m=l,E=!0;break;case"ge":m=l;break;case"prefix":Array.isArray(l)?l[l.length-1]!=null&&(l=l.concat(null)):l=[l,null],m=l,p=l.slice(0),p[p.length-1]=Ji.MAXIMUM_KEY;break;case"starts_with":m=l.toString(),p=l+"\uFFFF";break;case"between":case"gele":case"gelt":case"gtlt":case"gtle":m=l[0],m instanceof Date&&(m=m.getTime()),p=l[1],p instanceof Date&&(p=p.getTime()),h=u==="gele"||u==="gtle"||u==="between",E=u==="gtlt"||u==="gtle";break;case"equals":case void 0:m=l,p=l,h=!0;break;case"ne":if(l===null){m=l,E=!0;break}case"sort":case"contains":case"ends_with":m=!0,_=!0;break;default:throw new nn.ClientError(`Unknown query comparator "${u}"`)}let R;if(typeof m=="string"&&m.length>Fs.MAX_SEARCH_KEY_LENGTH&&(m=m.slice(0,Fs.MAX_SEARCH_KEY_LENGTH)+Fs.OVERFLOW_MARKER,E=!1,R=dp(e,n,null,i,d)),typeof p=="string"&&p.length>Fs.MAX_SEARCH_KEY_LENGTH&&(p=p.slice(0,Fs.MAX_SEARCH_KEY_LENGTH)+Fs.OVERFLOW_MARKER,h=!0,R=R??dp(e,n,null,i,d)),r){let I=m;m=p,p=I,I=!E,E=!h,h=I}if(!f||f.isIndexing||_||l===null&&!f.indexNulls){if(s===!1&&!f)throw new nn.ClientError(`"${c}" is not indexed, can not search for this attribute`,404);if(s===!1&&_)throw new nn.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 nn.ServerError(`"${c}" is not indexed yet, can not search for this attribute`,503);if(l===null&&f&&!f.indexNulls)throw new nn.ClientError(`"${c}" is not indexed for nulls, index needs to be rebuilt to search for nulls, can not search for this attribute`,400);if(R=R??dp(e,n,null,i,d),!R)throw new nn.ClientError(`Unknown search operator ${e.comparator}`)}let S={start:m,end:p,inclusiveEnd:h,exclusiveStart:E,values:!0,versions:d,transaction:t,reverse:r};if(d){let I=f.getRange(S).map(R?function({key:w,value:L}){return this?.isSync?L&&R(L)?w:oc.SKIP:new Promise((H,Z)=>setImmediate(()=>{try{H(L&&R(L)?w:oc.SKIP)}catch(X){Z(X)}}))}:function(w){let L;return w.value==null&&!(w.metadataFlags&(Gn|bl))?L=oc.SKIP:(o?._freezeRecords&&Object.freeze(w.value),y(w),L=w),this.isSync?L:new Promise(H=>setImmediate(()=>H(L)))});return I.hasEntries=!0,I}else return f?f.customIndex?f.customIndex.search(e,o).map(I=>{if(typeof I=="object"&&I){let{key:w,...L}=I,H=n.primaryStore.getEntry(w);return y(H),o?._freezeRecords&&Object.freeze(H?.value),{...L,...H}}return I}):f.getRange(S).map(R?function({key:I,value:w}){let L;return typeof I=="string"&&I.length>Fs.MAX_SEARCH_KEY_LENGTH?L=n.primaryStore.get(w):L={[c]:I},this.isSync?R(L)?w:oc.SKIP:new Promise((H,Z)=>setImmediate(()=>{try{H(R(L)?w:oc.SKIP)}catch(X){Z(X)}}))}:({value:I})=>I):n.primaryStore.getRange(r?{end:!0,transaction:t,reverse:!0}:{start:!0,transaction:t}).map(function(I){let{key:w,value:L}=I;return this.isSync?(y(I),L&&R(L)?w:oc.SKIP):new Promise((H,Z)=>setImmediate(()=>{try{y(I),H(L&&R(L)?w:oc.SKIP)}catch(X){Z(X)}}))});function y(I){(n.databaseName!=="system"||n.name==="hdb_analytics")&&I?.value&&qe(I.size??1,"db-read",n.name,null)}a(y,"recordRead")}function Qi(e,t){if(Array.isArray(t))if(t.length>1){let r=Qi(e,t[0]),n=(r?.definition?.tableClass||r?.elements?.definition?.tableClass)?.attributes??r?.properties;return n?Qi(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 N7(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i;return s.hasMappings=!0,{next(){if(!i){let c=t.relationship.to,l=a((u,d)=>{let f=s.get(u);f?f.push(d):s.set(u,f=[d])},"addEntry");for(let u of e){let d=u.value??r.get(u.key??u),f=d?.[c];if(f!=null&&!s.filters?.some(m=>!m(d)))if(n)for(let m=0;m<f.length;m++)l(f[m],u);else l(f,u)}return i=s.keys()[Symbol.iterator](),this.next()}let o=i.next();return o.done?o:{value:o.value}},return(){if(i?.return)return i.return()}}}})}function C7(e,t,r,n,s){return new e.constructor({[Symbol.iterator](){let i,o,c=new Set;return{next(){let l;if(o)for(;l=o.next(),!l.done;){let u=l.value;if(!c.has(u))return c.add(u),l}if(!i){let u=new Set;n.fromRecord=d=>d[t.relationship.from]?.filter?.(f=>u.has(f));for(let d of e){if(n.filters){let f=r.get(d);if(n.filters.some(m=>!m(f)))continue}u.add(d)}return i=u[Symbol.iterator](),this.next()}do{let u=i.next();return u.done?u:(o=s(u.value)[Symbol.iterator](),this.next())}while(!0)},return(){return o?.return?.()},throw(){return o?.throw?.()}}}})}function dp(e,t,r,n,s,i){let o=e.comparator,c=e[0]??e.attribute,l=e[1]??e.value;if(Array.isArray(c)){if(c.length===0)return()=>!0;if(c.length===1)c=c[0];else if(c.length>1){let d=c[0],f=Qi(t.attributes,d),m=f.definition?.tableClass||f.elements.definition?.tableClass,p=n?.[d],h=dp({attribute:c.length>2?c.slice(1):c[1],value:l,comparator:o},m,r,p?.[d]?.joined,c[1]===m.primaryKey,i);if(!h)return;if(p){p.filters||(p.filters=[]),p.filters.push(h);return}let E=t.propertyResolvers?.[d];E.to&&(h.to=E.to);let _,R=a((y,I)=>{let w,L;return E?E.returnDirect?(w=E(y,r,I),L=ct):(L=E(y,r,I,!0),Array.isArray(L)?(w=L.map(H=>H.value),L=null):w=L?.value):w=y[d],{subObject:w,subEntry:L}},"getSubObject"),S=a((y,I)=>{if(E&&h.idFilter){if(!_)if(h.idFilter.idSet?.size===1){for(let X of h.idFilter.idSet)e={attribute:E.from??t.primaryKey,value:X};_=u(E.from??t.primaryKey,h.idFilter,!0,!0)}else _=u(E.from??t.primaryKey,h.idFilter,!1,!0);let Z=_(y);return _.idFilter&&(S.idFilter=_.idFilter),Z}let{subObject:w,subEntry:L}=R(y,I);return w?Array.isArray(w)?(!n?.[d]&&n&&(n[d]={fromRecord(Z){let X=R(Z).subObject;return Array.isArray(X)?X.filter(h).map(Q=>Q[m.primaryKey]):X}}),w.some(h)):h(w,L):!1},"recordFilter");return S}}switch(l instanceof Date&&(l=l.getTime()),FI[o]||o){case Fs.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,Ji.compareKeys)(d,l[0])>=0&&(0,Ji.compareKeys)(d,l[1])<=0,!0);case"gt":return u(c,d=>(0,Ji.compareKeys)(d,l)>0);case"ge":return u(c,d=>(0,Ji.compareKeys)(d,l)>=0);case"lt":return u(c,d=>(0,Ji.compareKeys)(d,l)<0);case"le":return u(c,d=>(0,Ji.compareKeys)(d,l)<=0);case"ne":return u(c,d=>(0,Ji.compareKeys)(d,l)!==0,!1,!0);case"sort":return()=>!0;default:throw new nn.ClientError(`Unknown query comparator "${o}"`)}function u(d,f,m,p){let h;m=m&&!s&&t?.indices[d]&&i>3,m&&(e.estimated_count==null&&vg(t)(e),h=e.estimated_count>>4,(isNaN(h)||h>=i)&&(m=!1));let E=0,_=3;function R(S){let y=S[d],I;if(typeof y!="object"||!y||p?I=f(y):Array.isArray(y)?I=y.some(f):y instanceof Date&&(I=f(y.getTime())),m&&(_++,!I&&!R.idFilter&&++E/_*i>h)){let w=od(e,r.transaction.getReadTxn(),!1,t),L;R.to?L=w.flatMap(Z=>t.primaryStore.get(Z)[R.to]):L=w.map(ad);let H=new Set(L);R.idFilter=Z=>H.has(ad(Z)),R.idFilter.idSet=H}return I}return a(R,"recordFilter"),s&&(R.idFilter=f),R}a(u,"attributeComparator")}function vg(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/Zo(e.primaryStore):i.estimated_count}return r.estimated_count=s,r.estimated_count}let n=r.comparator||r.search_type;if(n=FI[n]||n,n===Fs.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=Qi(e.attributes,s[0]),o=i.definition?.tableClass||i.elements.definition?.tableClass,c=vg(o)({value:r.value,attribute:s.length>2?s.slice(1):s[1],comparator:"equals"}),l=e.indices[i.relationship.from];r.estimated_count=c+(l?c*Zo(e.indices[i.relationship.from])/(Zo(o.primaryStore)||1):c)}else{let i=e.indices[s];r.estimated_count=i?i.getValuesCount(r[1]??r.value):1/0}}else if(n==="contains"||n==="ends_with"||n==="ne"){let s=r[0]??r.attribute,i=e.indices[s];r.value===null&&n==="ne"?r.estimated_count=Zo(e.primaryStore)-(i?i.getValuesCount(null):0):r.estimated_count=1/0}else if(n==="starts_with"||n==="prefix")r.estimated_count=I7*Zo(e.primaryStore)+1;else if(n==="between")r.estimated_count=A7*Zo(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=Zo(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=b7*Zo(e.primaryStore)+1}typeof r.descending=="boolean"&&(r.estimated_count/=2)}return r.estimated_count}return a(t,"estimateConditionForTable"),t}function Mg(e,t){if(e)if(ea=e,nd.lastIndex=0,O7.test(e))try{if(t&&(t.conditions=[]),pi=t??new id,up(pi,""),Vr!==ea.length&&rr("Unable to parse query, unexpected end of query"),pi.parseErrorMessage&&(pi.parseError=new UI(t.parseErrorMessage),!t))throw pi.parseError;return pi}catch(r){if(r.statusCode=400,r.message=`Unable to parse query, ${r.message} at position ${Vr} in '${ea}'`,pi.parseErrorMessage&&(r.message+=", "+pi.parseErrorMessage),t)t.parseError=r;else throw r}else return t??new URLSearchParams(e)}function rr(e){let t=`${e} at position ${Vr}`;pi.parseErrorMessage=pi.parseErrorMessage?pi.parseErrorMessage+", "+t:t}function up(e,t){let r=nd,n,s,i,o,c,l=decodeURIComponent,u;for(;n=r.exec(ea);){Vr=r.lastIndex;let[,d,f]=n;o?(d&&rr(`expected operator, but encountered '${d}'`),o=!1,c=!1):c=!0;let m;switch(f){case"=":s!=null?(d.length<=2?i=d:rr(`invalid FIQL operator ${d}`),l=bB):(l=decodeURIComponent,i="equals",d||rr("attribute must be specified before equality comparator"),s=sd(d));break;case"==":case"!=":case"<":case"<=":case">":case">=":case"===":case"!==":i=w7[f],l=xI[i]?bB:decodeURIComponent,d||rr(`attribute must be specified before comparator ${f}`),s=sd(d);break;case"&=":case"|=":case"|":case"&":case"":case void 0:if(s==null)s===void 0&&(t&&rr(`expected '${t}', but encountered ${f[0]?"'"+f[0]+"'":"end of string"}}`),rr(`no comparison specified before ${f?"'"+f+"'":"end of string"}`));else{e.conditions||rr("conditions/comparisons are not allowed in a property list");let h={comparator:i,attribute:s||null,value:l(d)};if(i==="eq"&&AB(h,d),s===""){let E=e.conditions[e.conditions.length-1];E.chainedConditions=E.chainedConditions||[],E.chainedConditions.push(h),E.operator=u}else Dg(e,u),e.conditions.push(h)}f==="&"?(u="and",s=void 0):f==="|"?(u="or",s=void 0):f==="&="?(u="and",s=""):f==="|="&&(u="or",s="");break;case",":e.conditions?rr("conditions/comparisons are not allowed in a property list"):e.push(sd(d)),s=void 0;break;case"(":nd.lastIndex=Vr;let p=up(d?[]:new id,")");switch(d){case"":Dg(e,u),e.conditions.push(p);break;case"limit":switch(p.length){case 1:e.limit=+p[0];break;case 2:e.offset=+p[0],e.limit=p[1]-e.offset;break;default:rr("limit must have 1 or 2 arguments")}break;case"select":Array.isArray(p[0])&&p.length===1&&!p[0].name?(e.select=p[0],e.select.asArray=!0):p.length===1?e.select=p[0]:p.length===2&&p[1]===""?e.select=p.slice(0,1):e.select=p;break;case"group-by":rr("group by is not implemented yet");case"sort":e.sort=IB(p);break;default:rr(`unknown query function call ${d}`)}ea[Vr]===","?r.lastIndex=++Vr:o=!0,s=null;break;case"{":e.conditions&&rr("property sets are not allowed in a queries"),d||rr("property sets must have a defined parent property name"),nd.lastIndex=Vr,m=up([],"}"),m.name=d,e.push(m),ea[Vr]===","?r.lastIndex=++Vr:o=!0;break;case"[":if(nd.lastIndex=Vr,d?(m=up(new id,"]"),m.name=d):m=up(e.conditions?new id:[],"]"),e.conditions)if(Dg(e,u),ea[Vr]==="="){l=decodeURIComponent,i="equals",s=sd(d),r.lastIndex=++Vr;break}else e.conditions.push(m),s=null;else e.push(m);ea[Vr]===","?r.lastIndex=++Vr:o=!0;break;case")":case"]":case"}":if(t===f[0]){if(e.conditions)if(s){let h={comparator:i||"equals",attribute:s,value:l(d)};i==="eq"&&AB(h,d),Dg(e,u),e.conditions.push(h)}else d&&rr("no attribute or comparison specified");else(d||e.length>0&&c)&&e.push(sd(d));return e}else rr(t?`expected '${t}', but encountered '${f[0]}'`:`unexpected token '${f[0]}'`);default:rr(`unexpected operator '${f}'`)}if(t!==")"&&(r=s?P7:nd,r.lastIndex=Vr),Vr===ea.length)return e}t&&rr(`expected '${t}', but encountered end of string`)}function Dg(e,t){e.conditions.length>0&&(e.operator?e.operator!==t&&rr("Can not mix operators within a condition grouping"):e.operator=t)}function sd(e){return e.indexOf(".")>-1?e.split(".").map(sd):decodeURIComponent(e)}function bB(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 nn.ClientError(`Unknown type ${t}`)}return decodeURIComponent(e)}function AB(e,t){if(t.indexOf("*")>-1)if(t.endsWith("*"))e.comparator="starts_with",e.value=decodeURIComponent(t.slice(0,-1));else throw new nn.ClientError("wildcard can only be used at the end of a string")}function IB(e){let t=wB(e[0]);return e.length>1&&(t.next=IB(e.slice(1))),t}function wB(e){if(Array.isArray(e)){let t=wB(e[0]);return e[0]=t.attribute,t.attribute=e,t}if(typeof e=="string")switch(e[0]){case"-":return{attribute:e.slice(1),descending:!0};case"+":return{attribute:e.slice(1),descending:!1};default:return{attribute:e,descending:!1}}rr(`Unknown sort type ${e}`)}function ad(e){return Array.isArray(e)?e.join("\0"):e}function Zo(e){let t=Date.now();return(e.estimatedEntryCountExpires||0)<t&&(e.estimatedEntryCount=e.getStats().entryCount,e.estimatedEntryCountExpires=t+1e4),e.estimatedEntryCount}function L7(e,t,r){return t*r/Zo(e)}var nn,Fs,Ji,oc,b7,A7,I7,w7,xI,FI,UI,O7,nd,P7,Vr,pi,ea,id,Ug=ie(()=>{nn=b(ge()),Fs=b(Or()),Ji=require("ordered-binary"),oc=require("lmdb");xg();gl();Hn();b7=.3,A7=.1,I7=.05,w7={"<":"lt","<=":"le",">":"gt",">=":"ge","!=":"ne","==":"eq","===":"equals","!==":"not_equal"},xI={lt:!0,le:!0,gt:!0,ge:!0,ne:!0,eq:!0};a(BI,"executeConditions");a(od,"searchByIndex");a(Qi,"findAttribute");a(N7,"joinTo");a(C7,"joinFrom");FI={eq:"equals",greater_than:"gt",greaterThan:"gt",greater_than_equal:"ge",greaterThanEqual:"ge",less_than:"lt",lessThan:"lt",less_than_equal:"le",lessThanEqual:"le",not_equal:"ne",notEqual:"ne",equal:"equals",sw:"starts_with",startsWith:"starts_with",ew:"ends_with",endsWith:"ends_with",ct:"contains",">":"gt",">=":"ge","<":"lt","<=":"le","...":"between"};a(dp,"filterByType");a(vg,"estimateCondition");UI=class extends nn.Violation{static{a(this,"SyntaxViolation")}},O7=/[()[\]|!<>.]|(=\w*=)/,nd=/([^?&|=<>!([{}\]),]*)([([{}\])|,&]|[=<>!]*)/g,P7=/([^&|=[\]{}]+)([[\]{}]|[&|=]*)/g;a(Mg,"parseQuery");a(rr,"recordError");a(up,"parseBlock");a(Dg,"assignOperator");a(sd,"decodeProperty");a(bB,"typedDecoding");a(AB,"wildcardDecoding");a(IB,"toSortObject");a(wB,"toSortEntry");id=class{static{a(this,"Query")}constructor(){this.conditions=[]}[Symbol.iterator](){return this.conditions[Symbol.iterator]()}get(t){for(let r=0;r<this.conditions.length;r++){let n=this.conditions[r];if(n.attribute===t)return n.value}}getAll(){let t=[];for(let r=0,n=this.conditions.length;r<n;r++){let s=this.conditions[r];s.attribute&&t.push(s.value)}return t}};a(ad,"flattenKey");a(Zo,"estimatedEntryCount");a(L7,"intersectionEstimate")});var NB,ks,Bg=ie(()=>{NB=b(fi());Xi();ks=class extends URLSearchParams{static{a(this,"RequestTarget")}#e;pathname;search;id;isCollection;constructor(t){let r,n;if(t&&(r=t.indexOf("?"))>-1){n=t.slice(0,r);let s=t.slice(r+1);super(s),this.search=s}else super(),n=t;this.pathname=n??"",this.#e=t}toString(){return this.#e?this.#e:this.size>0?this.pathname+"?"+super.toString():this.pathname}get url(){return this.toString()}delete(t){super.delete(t),this.conditions&&(this.conditions=this.conditions.filter(r=>r.attribute!==t)),this.#e=void 0}set(t,r){this.delete(t),super.set(t,r),this.conditions?.push({attribute:t,value:r})}append(t,r){super.append(t,r),this.#e=void 0,this.conditions?.push({attribute:t,value:r})}};(0,NB._assignPackageExport)("Resource",Vt)});function CB(e,t){if(Al=!1,e==="")return null;if(e=e.slice(1),t.splitSegments){if(e.indexOf("/")===-1)return e===""?(Al=!0,null):t.coerceId(decodeURIComponent(e));let r=e.split("/"),n=new HI;for(let s=0;s<r.length;s++){let i=r[s];if(!i&&s===r.length-1){Al=!0;break}n[s]=t.coerceId(decodeURIComponent(i))}return n}else{if(e==="")return Al=!0,null;e[e.length-1]==="/"&&(Al=!0)}return t.coerceId(decodeURIComponent(e))}function qn(e,t){n.reliesOnPrototype=!0;let r=t.hasContent;return n;function n(s,i,o){let c,l,u,d;if(r){if(o)d=i,o=o.getContext?.()||o;else if(i)typeof s=="object"&&s&&(!Array.isArray(s)||typeof s[0]=="object")?(d=s,c=d[this.primaryKey]??null,o=i.getContext?.()||i):i?.transaction instanceof Vo?o=i:d=i;else if(s&&typeof s=="object")d=s,s=void 0,c=d.getId?.()??d[this.primaryKey];else throw new cd.ClientError(`Invalid argument for data, must be an object, but got ${s}`);c===null&&(u=!0)}else i?o?(d=i,o=o.getContext?.()||o):o=i.getContext?.()||i:s&&typeof s=="object"&&!Array.isArray(s)&&(o=s);if(c===void 0)if(typeof s=="object"&&s){if(l=s,c=s instanceof URLSearchParams?s.toString():s.url,s.conditions)c=s.id;else if(typeof c=="string")if(this.directURLMapping)c=c.slice(1),l.id=c;else{let E=c.indexOf("?");E>-1&&(l=this.parseQuery(c.slice(E+1),s),c=c.slice(0,E),c===""&&(u=!0));let _=this.parsePath(c,o,l);_?.id!==void 0?(_.query&&(l?l=Object.assign(_.query,l):l=_.query),u=_.isCollection,c=_.id):c=_,c&&(l.id=c)}else if(s[Symbol.iterator]){c=[],u=!0;for(let E of s){if(typeof E=="object"&&E)break;c.push(E)}c.length===0?c=null:(c.length===1&&(c=c[0]),l.slice&&(l=l.slice(c.length,l.length),l.length===0&&(l=new ks,l.id=c,u=!1)))}c===void 0&&(c=s.id??null,c==null&&(u=!0))}else c=s,l=new ks,l.id=c,c==null&&(t.method==="get"&&DB.default.warn?.(`Using an argument with a value of ${c} for ${t.method}, is deprecated`,new Error("Invalid id")),u=!0);l||(l=new ks,l.id=c),u&&(l.isCollection=!0);let f;o||(o=fp.getStore()??{}),l.ensureLoaded!=null||l.async||u?(f={...t},l.ensureLoaded!=null&&(f.ensureLoaded=l.ensureLoaded),l.async&&(f.async=l.async),u&&(f.isCollection=!0)):f=t;let m=this.loadAsInstance,p=h;if((m===!1?!this.explicitContext:this.explicitContext===!1)&&(p=a(E=>fp.run(o,()=>h(E)),"runAction")),o?.transaction){let E=this.getResource(c,o,f);return E.then?E.then(p):p(E)}else return wt(o,()=>{o.transaction.startedFrom={resourceName:this.name,method:t.method};let E=this.getResource(c,o,f);return E.then?E.then(p):p(E)},f);function h(E){if(o.authorize&&(o.authorize=!1,m!==!1)){let _=t.type==="read"?E.allowRead(o.user,l,o):t.type==="update"?E.doesExist?.()===!1?E.allowCreate(o.user,d,o):E.allowUpdate(o.user,d,o):t.type==="create"?E.allowCreate(o.user,d,o):E.allowDelete(o.user,l,o);if(_?.then)return _.then(R=>{if(!R)throw new cd.AccessViolation(o.user);return typeof d?.then=="function"?d.then(S=>e(E,l,o,S)):e(E,l,o,d)});if(!_)throw new cd.AccessViolation(o.user)}return typeof d?.then=="function"?d.then(_=>e(E,l,o,_)):e(E,l,o,d)}a(h,"authorizeActionOnResource")}}function us(e,t){let r=new cd.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 kI(e,t,r){let n=e.getRecord?.();if(n){let s=e.getChanges?.();return i=>{let o,c;return e.hasOwnProperty(i)&&typeof(o=e[i])!="function"?o:s&&i in s?s[i]:(c=t?.[i])?c(e,r):n[i]}}else return t?s=>{let i=t[s];return i?i(e,r):e[s]}:s=>e[s]}function mp(e,t){let r=t.propertyResolvers,n=t.getContext?.(),s;if(typeof e=="string")return a(function o(c){return c.then?c.then(o):Array.isArray(c)?c.map(o):kI(c,r,n)(e)},"transform");if(typeof e=="object"){if(e.asArray)return a(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(c);let u=[],d=i(kI(l,r,n));for(let f of e)u.push(d(f));return u},"transform");let o=e.forceNulls;return a(function c(l){if(l.then)return l.then(c);if(Array.isArray(l))return l.map(m=>m&&typeof m=="object"?c(m):m);let u={},d=i(kI(l,r,n)),f;for(let m of e){let p=d(m);p===void 0&&o&&(p=null),p?.then?(f||(f=[]),f.push(p.then(h=>u[m.name||m]=h))):u[m.name||m]=p}return f?Promise.all(f).then(()=>u):u},"transform")}else throw new Error("Invalid select argument type "+typeof e);function i(o){return c=>{if(typeof c=="string")return o(c);if(typeof c=="object")if(c.name){s||(s={});let l=s[c.name];if(!l){let d=r[c.name]?.definition?.tableClass;l=s[c.name]=mp(c.select||c,d)}let u=o(c.name);return l(u)}else return o(c);else return c}}a(i,"handleProperty")}var OB,PB,cd,LB,DB,fp,D7,Vt,Al,HI,Xi=ie(()=>{OB=require("crypto");Fm();Wu();PB=b(fi()),cd=b(ge());ec();Ug();LB=require("async_hooks");Bg();DB=b(hr()),fp=new LB.AsyncLocalStorage,D7={json:"application/json",cbor:"application/cbor",msgpack:"application/x-msgpack",csv:"text/csv"},Vt=class{static{a(this,"Resource")}#e;#t;#r;static transactions;static directURLMapping=!1;static loadAsInstance;constructor(t,r){this.#e=t;let n=r?.getContext?r.getContext()??null:void 0;this.#t=n!==void 0?n:r||null}static get=qn(function(t,r,n,s){let i=t.get?.(r);if(t.constructor.loadAsInstance===!1)return i;if(i?.then)return i.then(o);return o(i);function o(c){let l;if((l=r?.select)&&c!=null&&!c.selectApplied){let u=mp(l,t.constructor);return typeof c?.map=="function"?c.map(u):u(c)}return c}},{type:"read",letItLinger:!0,ensureLoaded:!0,async:!0,method:"get"});static put=qn(function(t,r,n,s){if(Array.isArray(s)&&t.#r&&t.constructor.loadAsInstance!==!1){let i=[];for(let o of s){let c=t.constructor,l=o[c.primaryKey],u=c.getResource(l,n,{async:!0});u.then?i.push(u.then(d=>d.put(o,n))):i.push(u.put(o,n))}return Promise.all(i)}return t.put?t.constructor.loadAsInstance===!1?t.put(r,s):t.put(s,r):us(t,"put")},{hasContent:!0,type:"update",method:"put"});static patch=qn(function(t,r,n,s){return t.patch?t.constructor.loadAsInstance===!1?t.patch(r,s):t.patch(s,r):us(t,"patch")},{hasContent:!0,type:"update",method:"patch"});static delete=qn(function(t,r,n,s){return t.delete?t.delete(r):us(t,"delete")},{hasContent:!1,type:"delete",method:"delete"});static getNewId(){return(0,OB.randomUUID)()}static create(t,r,n){let s;return this.loadAsInstance===!1?typeof t=="object"&&t&&!n?(n=r,r=t,s=new ks,s.isCollection=!0):s=t:t==null?s=r?.[this.primaryKey]??this.getNewId():Array.isArray(t)&&typeof t[0]!="object"?s=r?.[this.primaryKey]??[...t,this.getNewId()]:typeof t!="object"?s=r?.[this.primaryKey]??[t,this.getNewId()]:(s=t?.[this.primaryKey]??this.getNewId(),n=r||{},r=t),n?n.getContext&&(n=n.getContext()):n=fp.getStore()??{},wt(n,async()=>{n.transaction.startedFrom??={resourceName:this.name,method:"create"};let i=new this(s,n),o=i.create?await i.create(s,r):us(i,"create");return n.newLocation=s??o?.[this.primaryKey],n.createdResource=!0,this.loadAsInstance===!1?o:i})}static invalidate=qn(function(t,r,n,s){return t.invalidate?t.invalidate(r):us(t,"delete")},{hasContent:!1,type:"update",method:"invalidate"});static post=qn(function(t,r,n,s){return t.#e!=null&&t.update?.(),t.constructor.loadAsInstance===!1?t.post(r,s):t.post(s,r)},{hasContent:!0,type:"create",method:"post"});static update=qn(function(t,r,n,s){return t.update(r,s)},{hasContent:!1,type:"update",method:"update"});static connect=qn(function(t,r,n,s){return t.connect?t.constructor.loadAsInstance===!1?t.connect(r,s):t.connect(s,r):us(t,"connect")},{hasContent:!0,type:"read",method:"connect"});static subscribe=qn(function(t,r,n,s){return t.subscribe?t.subscribe(r):us(t,"subscribe")},{type:"read",method:"subscribe"});static publish=qn(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):us(t,"publish")},{hasContent:!0,type:"create",method:"publish"});static search=qn(function(t,r,n){let s=t.search?t.search(r):us(t,"search"),i=n.select;if(i&&n.hasOwnProperty("select")&&s!=null&&!s.selectApplied){let o=mp(i,t.constructor);return s.map(o)}return s},{type:"read",method:"search"});static query=qn(function(t,r,n,s){return t.search?t.constructor.loadAsInstance===!1?t.search(r,s):t.search(s,r):us(t,"search")},{hasContent:!0,type:"read",method:"query"});static copy=qn(function(t,r,n,s){return t.copy?t.constructor.loadAsInstance===!1?t.copy(r,s):t.copy(s,r):us(t,"copy")},{hasContent:!0,type:"create",method:"copy"});static move=qn(function(t,r,n,s){return t.move?t.constructor.loadAsInstance===!1?t.move(r,s):t.move(s,r):us(t,"move")},{hasContent:!0,type:"delete",method:"move"});async post(t,r){if(this.constructor.loadAsInstance===!1){if(t.isCollection&&this.create)return r=await this.create(t,r),r?.[this.constructor.primaryKey]}else if(this.#r)return(await this.constructor.create(this.#e,t,this.#t)).#e;us(this,"post")}static isCollection(t){return t&&t.#r}get isCollection(){return this.#r}static coerceId(t){return t}static parseQuery(t,r){return Mg(t,r)}static parsePath(t,r,n){let s=t.indexOf(".");if(s>-1){let o=t.slice(s+1),c=r?.headers&&D7[o];if(c)r.requestedContentType=c,t=t.slice(0,s);else if(this.attributes?.find(l=>l.name===o))if(t=t.slice(0,s),n)n.property=o;else return{query:{property:o},id:CB(t,this),isCollection:Al}}let i=CB(t,this);return Al?{id:i,isCollection:!0}:i}static getResource(t,r,n){let s,i=r.getContext?.(),o;typeof r.isCollection=="boolean"&&r.hasOwnProperty("isCollection")?o=r.isCollection:o=n?.isCollection;let c=o&&this.Collection||this;if(i||(i=i===void 0?r:{}),i.transaction){let l;if(i.resourceCache?l=i.resourceCache:l=i.resourceCache=[],l.asMap){let u=l.asMap.get(t);if(s=u?.find(d=>d.constructor===c),s)return s;u||l.asMap.set(t,u=[]),u.push(s=new c(t,i))}else{if(s=l.find(u=>u.#e===t&&u.constructor===c),s)return s;if(l.push(s=new c(t,i)),l.length>10){let u=new Map;for(let d of l){let f=d.#e,m=u.get(f);m?m.push(d):u.set(f,[d])}i.resourceCache.length=0,i.resourceCache.asMap=u}}}else s=new c(t,i);return o&&(s.#r=!0),s}subscribe(t){return new cs}connect(t,r){let n=this.constructor.loadAsInstance===!1?t:r;return n?.subscribe!==!1?this.subscribe?.(n):new cs}allowRead(t,r,n){return t?.role.permission.super_user}allowUpdate(t,r,n){return t?.role.permission.super_user}allowCreate(t,r,n){return t?.role.permission.super_user}allowDelete(t,r,n){return t?.role.permission.super_user}getId(){return this.#e}getContext(){return this.#t}getCurrentUser(){return this.getContext()?.user}};(0,PB._assignPackageExport)("Resource",Vt);a(CB,"pathToId");HI=class extends Array{static{a(this,"MultiPartId")}toString(){return this.join("/")}};a(qn,"transactional");a(us,"missingMethod");a(kI,"selectFromObject");a(mp,"transformForSelect")});var Il,GI=ie(()=>{Il=class{static{a(this,"ErrorResource")}error;constructor(t){this.error=t}isError=!0;allowRead(){throw this.error}allowUpdate(){throw this.error}allowCreate(){throw this.error}allowDelete(){throw this.error}getId(){throw this.error}getContext(){throw this.error}get(){throw this.error}post(){throw this.error}put(){throw this.error}delete(){throw this.error}connect(){throw this.error}getResource(){return this}publish(){throw this.error}subscribe(){throw this.error}}});var qI={};Re(qI,{Resources:()=>ld,keyArrayToString:()=>ud,resetResources:()=>v7,resources:()=>Hs});function v7(){return Hs=new ld,Ue.resources=Hs,Hs}function ud(e){return Array.isArray(e)?e[e.length-1]===null?e.slice(0,-1).join("/")+"/":e.join("/"):e}var vB,MB,ld,Hs,ac=ie(()=>{ec();GI();vB=b(ee()),MB=b(ge());qr();ld=class extends Map{static{a(this,"Resources")}isWorker=!0;loginPath;allTypes=new Map;set(t,r,n,s){if(!r)throw new Error("Must provide a resource");t.startsWith("/")&&(t=t.replace(/^\/+/,""));let i={Resource:r,path:t,exportTypes:n,hasSubPaths:!1,relativeURL:""},o=super.get(t);if(o&&(o.Resource.databaseName!==r.databaseName||o.Resource.tableName!==r.tableName)&&!s){let c=new MB.ServerError(`Conflicting paths for ${t}`);vB.default.error(c),i.Resource=new Il(c)}super.set(t,i);for(let[c]of this){let l=2;for(;(l=c.indexOf("/",l))>-1;){let u=this.get(c.slice(0,l));u&&(u.hasSubPaths=!0),l+=2}}}getMatch(t,r){let n=2,s=0,i,o=t.length;for(;n<o;){s=n,n=t.indexOf("/",n),n===-1&&(n=o);let u=n===o?t:t.slice(0,n),d=this.get(u),f=-1;if(!d&&n===o&&(f=u.indexOf("?",s),f!==-1)){let m=u.slice(0,f);d=this.get(m)}if(d&&(!r||d.exportTypes?.[r]!==!1)){if(d.relativeURL=t.slice(f!==-1?f:n),!d.hasSubPaths)return d;i=d}n+=2}if(i)return i;let c=t.indexOf("?"),l=c>-1?t.slice(0,c):t;return i=this.get(l),!i&&l.indexOf(".")>-1&&(i=this.get(l.split(".")[0])),i&&(!r||i.exportTypes?.[r]!==!1)?i.relativeURL=c>-1?t.slice(c):"":i||(i=this.get(""),i&&(!r||i.exportTypes?.[r]!==!1)&&(t.charAt(0)!=="/"&&(t="/"+t),i.relativeURL=t)),i}getResource(t,r){let n=this.getMatch(t);if(n)return t=n.relativeURL,n.Resource.getResource(this.pathToId(t,n.Resource),r)}call(t,r,n){return wt(r,async()=>{let s=this.getMatch(t);if(s)return t=s.relativeURL,n(s.Resource,s.path,t)})}setRepresentation(t,r,n){}};a(v7,"resetResources");a(ud,"keyArrayToString")});function KI(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=xB,M7(e.primaryStore,e.auditStore)):(c=UB,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{BB(UB[i])})));let l=c[i]||(c[i]=[]);if(l.auditStore=e.auditStore,l.lastTxnTime==null&&(l.lastTxnTime=Date.now()),s?.scope==="full-database")return;let u=l[o];u||(u=l[o]=new Map,u.envs=l,u.tableId=o,u.store=e.primaryStore),t=ud(t);let d=new VI(r);d.startTime=n;let f=u.get(t);return f?f.push(d):(u.set(t,f=[d]),f.tables=u,f.key=t),d.subscriptions=f,d}function BB(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),FB(e.auditStore);let r;for(let{key:n,value:s}of t.getRange({start:e.lastTxnTime,exclusiveStart:!0})){e.lastTxnTime=n;let i=Nt(s),o=e[i.tableId];if(!o)continue;let c=i.recordId,l=ud(c),u=0;do{let d=o.get(l);if(d){for(let m of d)if(!(u>0&&!(m.includeDescendants&&!(m.onlyChildren&&u>1)))){if(m.startTime>=n){(0,$I.info)("omitting",c,m.startTime,n);continue}try{let p;m.supportsTransactions&&m.txnInProgress!==i.version&&(p=!0,m.txnInProgress||(r?r.push(m):r=[m]),m.txnInProgress=i.version),m.listener(c,i,n,p)}catch(p){console.error(p),(0,$I.info)(p)}}}if(l==null)break;let f=l.lastIndexOf?.("/",l.length-2);f!==l.length-1&&u++,f>-1?l=l.slice(0,f+1):l=null}while(!0)}if(r)for(let n of r)n.txnInProgress=null,n.listener(null,{type:"end_txn"},e.lastTxnTime,!0)}function M7(e,t){let r=t||e,n=r.env;if(!n.hasAfterCommitListener){n.hasAfterCommitListener=!0;let s=n.path;r.on("aftercommit",()=>{let i=xB[s];if(!i)return;let o=a(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),i.txnTime=r.threadLocalWrites[0]||Date.now();try{BB(i)}finally{r.threadLocalWrites[0]=i.lastTxnTime,r.unlock("thread-local-writes",0)}},"acquiredLock");r.attemptLock("thread-local-writes",0,o)&&o()})}}function FB(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function kB(e){return e.nextTransaction||(KI({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),FB(e)),e.nextTransaction}var $I,UB,xB,VI,YI=ie(()=>{$I=b(ee());Wu();ac();Yi();UB=Object.create(null),xB=Object.create(null);a(KI,"addSubscription");VI=class extends cs{static{a(this,"Subscription")}listener;subscriptions;startTime;includeDescendants;supportsTransactions;onlyChildren;constructor(t){super(),this.listener=t,this.on("close",()=>this.end())}end(){if(this.subscriptions){if(this.subscriptions.splice(this.subscriptions.indexOf(this),1),this.subscriptions.length===0){let t=this.subscriptions.tables;if(t){let r=this.subscriptions.key;if(t.delete(r),t.size===0){let n=t.envs,s=t.dbi;delete n[s]}}}this.subscriptions=null}}toJSON(){return{name:"subscription"}}};a(BB,"notifyFromTransactionData");a(M7,"listenToCommits");a(FB,"nextTransaction");a(kB,"whenNextTransaction")});var GB=x((YPe,HB)=>{"use strict";var WI=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};HB.exports=WI});var $B=x((jPe,qB)=>{"use strict";var jI=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};qB.exports=jI});var pp=x(KB=>{"use strict";var VB=fe(),U7=($(),P(z)),{RecordEncoder:x7}=(gl(),P(RB));VB.initSync();var B7=VB.get(U7.CONFIG_PARAMS.STORAGE_CACHING)!==!1,zI=class{static{a(this,"OpenDBIObject")}constructor(t,r=!1){this.dupSort=t===!0,this.encoding=t?"ordered-binary":"msgpack",this.useVersions=r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=B7&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:x7})}};KB.OpenDBIObject=zI});var hp=x((XPe,YB)=>{"use strict";var ds=fe(),Gs=($(),P(z));ds.initSync();var Fg=class{static{a(this,"OpenEnvironmentObject")}constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=2048,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.eventTurnBatching=!1,this.noSync=ds.get(Gs.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||ds.get(Gs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||ds.get(Gs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",ds.get(Gs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=ds.get(Gs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),ds.get(Gs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=ds.get(Gs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),ds.get(Gs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=ds.get(Gs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),ds.get(Gs.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=ds.get(Gs.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=ds.get(Gs.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};YB.exports=Fg;Fg.MAX_DBS=1e4});var Kt=x((eLe,rF)=>{"use strict";var QI=require("lmdb"),hi=require("fs-extra"),fs=require("path"),kg=Us(),zB=ee(),$n=En().LMDB_ERRORS_ENUM,Hg=$B(),{OpenDBIObject:XI}=pp(),JB=hp(),cc=Or(),WB=($(),P(z)),{table:F7,resetDatabases:k7}=(Oe(),P(Et)),jB=fe(),Ei=cc.INTERNAL_DBIS_NAME,QB=cc.DBI_DEFINITION_NAME,H7="data.mdb",G7="lock.mdb",Ep=".mdb",q7="-lock",JI=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=qs(t,r),this.key_type=this.dbi[cc.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[cc.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new QI.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Gg(e,t){if(e===void 0)throw new Error($n.BASE_PATH_REQUIRED);if(t===void 0)throw new Error($n.ENV_NAME_REQUIRED)}a(Gg,"pathEnvNameValidation");async function ZI(e,t,r=!0){try{await hi.access(e)}catch(n){throw n.code==="ENOENT"?new Error($n.INVALID_BASE_PATH):n}try{let n=fs.join(e,t+Ep);return await hi.access(n,hi.constants.R_OK|hi.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await hi.access(fs.join(e,t,H7),hi.constants.R_OK|hi.constants.F_OK),fs.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error($n.INVALID_ENVIRONMENT)}else throw new Error($n.INVALID_ENVIRONMENT);throw n}}a(ZI,"validateEnvironmentPath");function qg(e,t){if(kg.validateEnv(e),t===void 0)throw new Error($n.DBI_NAME_REQUIRED)}a(qg,"validateEnvDBIName");async function $7(e,t,r=!1,n=!1){Gg(e,t);let s=fs.basename(e);t=t.toString();let i=jB.get(WB.CONFIG_PARAMS.DATABASES);i||jB.setProperty(WB.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await ZI(e,t,n),XB(e,t,r)}catch(o){if(o.message===$n.INVALID_ENVIRONMENT){let c=fs.join(e,t);await hi.mkdirp(n?c:e);let l=new JB(n?c:c+Ep,!1),u=QI.open(l);u.dbis=Object.create(null);let d=new XI(!1);u.openDB(Ei,d),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let f=ew(e,t,r);return u[cc.ENVIRONMENT_NAME_KEY]=f,global.lmdb_map[f]=u,u}throw o}}a($7,"createEnvironment");async function V7(e,t,r,n=!0){Gg(e,t),t=t.toString();let s=fs.join(e,t);return F7({table:t,database:fs.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(V7,"copyEnvironment");async function XB(e,t,r=!1){Gg(e,t),t=t.toString();let n=ew(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 ZI(e,t),i=fs.join(e,t+Ep),o=s!=i,c=new JB(s,o),l=QI.open(c);l.dbis=Object.create(null);let u=eF(l);for(let d=0;d<u.length;d++)qs(l,u[d]);return l[cc.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(XB,"openEnvironment");async function K7(e,t,r=!1){Gg(e,t),t=t.toString();let n=fs.join(e,t+Ep),s=await ZI(e,t);if(global.lmdb_map!==void 0){let i=ew(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await ZB(o),delete global.lmdb_map[i]}}await hi.remove(s),await hi.remove(s===n?s+q7:fs.join(fs.dirname(s),G7))}a(K7,"deleteEnvironment");async function ZB(e){kg.validateEnv(e);let t=e[cc.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(ZB,"closeEnvironment");function ew(e,t,r=!1){let s=`${fs.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(ew,"getCachedEnvironmentName");function Y7(e){kg.validateEnv(e);let t=Object.create(null),r=qs(e,Ei);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Ei)try{t[n]=Object.assign(new Hg,s)}catch{zB.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(Y7,"listDBIDefinitions");function eF(e){kg.validateEnv(e);let t=[],r=qs(e,Ei);for(let{key:n}of r.getRange({start:!1}))n!==Ei&&t.push(n);return t}a(eF,"listDBIs");function W7(e,t){let n=qs(e,Ei).getEntry(t),s=new Hg;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{zB.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(W7,"getDBIDefinition");function tF(e,t,r,n=!r){if(qg(e,t),t=t.toString(),t===Ei)throw new Error($n.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return qs(e,t)}catch(s){if(s.message===$n.DBI_DOES_NOT_EXIST){let i=new XI(r,n===!0),o=e.openDB(t,i),c=new Hg(r===!0,n);return o[QB]=c,qs(e,Ei).putSync(t,c),e.dbis[t]=o,o}throw s}}a(tF,"createDBI");function qs(e,t){if(qg(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Ei?r=W7(e,t):r=new Hg,r===void 0)throw new Error($n.DBI_DOES_NOT_EXIST);let n;try{let s=new XI(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($n.DBI_DOES_NOT_EXIST):s}return n[QB]=r,e.dbis[t]=n,n}a(qs,"openDBI");function j7(e,t){qg(e,t),t=t.toString();let r=qs(e,t),n=r.getStats();return r[cc.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(j7,"statDBI");async function z7(e,t){try{let r=fs.join(e,t+Ep);return(await hi.stat(r)).size}catch{throw new Error($n.INVALID_ENVIRONMENT)}}a(z7,"environmentDataSize");function J7(e,t){if(qg(e,t),t=t.toString(),t===Ei)throw new Error($n.CANNOT_DROP_INTERNAL_DBIS_NAME);qs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],qs(e,Ei).removeSync(t)}a(J7,"dropDBI");function Q7(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{qs(e,i)}catch(o){if(o.message===$n.DBI_DOES_NOT_EXIST)tF(e,i,i!==t,i===t),n=!0;else throw o}}n&&k7()}a(Q7,"initializeDBIs");rF.exports={openDBI:qs,openEnvironment:XB,createEnvironment:$7,listDBIs:eF,listDBIDefinitions:Y7,createDBI:tF,dropDBI:J7,statDBI:j7,deleteEnvironment:K7,initializeDBIs:Q7,TransactionCursor:JI,environmentDataSize:z7,copyEnvironment:V7,closeEnvironment:ZB}});var iF=x((rLe,sF)=>{"use strict";var tw=Kt(),X7=ee(),nF=En().LMDB_ERRORS_ENUM;sF.exports=Z7;async function Z7(e){try{if(global.lmdb_map!==void 0&&e.operation!==void 0){let t=Object.keys(global.lmdb_map),r;switch(e.operation){case"drop_schema":for(let i=0;i<t.length;i++){let o=t[i];if(o.startsWith(`${e.schema}.`)||o.startsWith(`txn.${e.schema}.`))try{await tw.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==nF.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await tw.closeEnvironment(global.lmdb_map[n]),await tw.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==nF.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){X7.error(t)}}a(Z7,"cleanLMDBMap")});var ta=x((sLe,cF)=>{"use strict";var aF=ue(),oF=($(),P(z)),dd=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Zi=require("joi"),lc={schema_format:{pattern:dd,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},eee=Zi.alternatives(Zi.string().min(1).max(lc.schema_length.maximum).pattern(dd).messages({"string.pattern.base":"{:#label} "+lc.schema_format.message}),Zi.number(),Zi.array()).required(),tee=Zi.alternatives(Zi.string().min(1).max(lc.schema_length.maximum).pattern(dd).messages({"string.pattern.base":"{:#label} "+lc.schema_format.message}),Zi.number()),ree=Zi.alternatives(Zi.string().min(1).max(lc.schema_length.maximum).pattern(dd).messages({"string.pattern.base":"{:#label} "+lc.schema_format.message}),Zi.number()).required();function nee(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>lc.schema_length.maximum?`'${e}' maximum of 250 characters`:dd.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(nee,"checkValidTable");function see(e,t){return aF.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(see,"validateSchemaExists");function iee(e,t){let r=t.state.ancestors[0].schema;return aF.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(iee,"validateTableExists");function oee(e,t){return e.toLowerCase()===oF.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${oF.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(oee,"validateSchemaName");cF.exports={commonValidators:lc,schemaRegex:dd,hdbSchemaTable:eee,validateSchemaExists:see,validateTableExists:iee,validateSchemaName:oee,checkValidTable:nee,hdbDatabase:tee,hdbTable:ree}});var dF=x((oLe,uF)=>{var{hdbTable:aee,hdbDatabase:lF}=ta(),cee=ht(),rw=require("joi"),lee={undefined:"undefined",null:"null"},uee=a((e,t)=>{let r=Object.keys(e),n=r.length,s;for(let i=0;i<n;i++){let o=r[i];(!o||o.length===0||lee[o]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${o}'`:s+=`. Invalid attribute name: '${o}'`)}return s?t.message(s):e},"customRecordsVal"),dee=rw.object({database:lF,schema:lF,table:aee,records:rw.array().items(rw.object().custom(uee)).required()});uF.exports=function(e){return cee.validateBySchema(e,dee)}});var mF=x((cLe,fF)=>{"use strict";var nw=class{static{a(this,"BridgeMethods")}createSchema(){throw new Error("createSchema bridge method is not defined")}dropSchema(){throw new Error("dropSchema bridge method is not defined")}createTable(){throw new Error("createTable bridge method is not defined")}dropTable(){throw new Error("dropTable bridge method is not defined")}createRecords(){throw new Error("createRecords bridge method is not defined")}updateRecords(){throw new Error("updateRecords bridge method is not defined")}async upsertRecords(){throw new Error("upsertRecords bridge method is not defined")}deleteRecords(){throw new Error("deleteRecords bridge method is not defined")}createAttribute(){throw new Error("createAttribute bridge method is not defined")}dropAttribute(){throw new Error("dropAttribute bridge method is not defined")}searchByConditions(){throw new Error("searchByConditions bridge method is not defined")}searchByHash(){throw new Error("searchByHash bridge method is not defined")}searchByValue(){throw new Error("searchByValue bridge method is not defined")}getDataByHash(){throw new Error("getDataByHash bridge method is not defined")}getDataByValue(){throw new Error("getDataByValue bridge method is not defined")}deleteRecordsBefore(){throw new Error("deleteRecordsBefore bridge method is not defined")}deleteAuditLogsBefore(){throw new Error("deleteAuditLogsBefore bridge method is not defined")}async readAuditLog(){throw new Error("readAuditLog bridge method is not defined")}};fF.exports=nw});var hF=x((uLe,pF)=>{"use strict";var sw=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};pF.exports=sw});var _F=x((fLe,EF)=>{"use strict";var iw=class{static{a(this,"UpdateRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n,this.original_records=s}};EF.exports=iw});var SF=x((pLe,gF)=>{"use strict";var ow=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};gF.exports=ow});var Nl=x((_Le,RF)=>{"use strict";var fee=Kt(),mee=hF(),pee=_F(),hee=SF(),eo=Us(),_p=En().LMDB_ERRORS_ENUM,ra=($(),P(z)),Eee=ue(),_ee=require("uuid"),ELe=require("lmdb"),{handleHDBError:gee,hdbErrors:See}=ge(),TF=fe();TF.initSync();var $g=TF.get(ra.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),aw=ra.TIME_STAMP_NAMES_ENUM.CREATED_TIME,wl=ra.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function Tee(e,t,r,n,s=eo.getNextMonotonicTime()){dw(e,t,r,n),cw(e,t,r);let i=new mee,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];yF(u,!0,s);let d=yee(e,t,r,u),f=u[t];o.push(d),c.push(f)}return lw(o,c,n,i,s)}a(Tee,"insertRecords");function yee(e,t,r,n){let s=n[t];return e.dbis[t].ifNoExists(s,()=>{for(let i=0;i<r.length;i++){let o=r[i];if(o===t||n.hasOwnProperty(o)===!1)continue;let c=n[o];if(typeof c=="function"){let d=c([[{}]]);Array.isArray(d)&&(c=d[0][ra.FUNC_VAL],n[o]=c)}let l=eo.getIndexedValues(c),u=e.dbis[o];if(l){$g&&u.prefetch(l.map(d=>({key:d,value:s})),Vg);for(let d=0,f=l.length;d<f;d++)u.put(l[d],s)}}$g&&e.dbis[t].prefetch([s],Vg),e.dbis[t].put(s,n,n[wl])})}a(yee,"insertRecord");function Ree(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(Ree,"removeSkippedRecords");function yF(e,t,r){let n=r>0;(n||!Number.isInteger(e[wl]))&&(e[wl]=r||(r=eo.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[aw]))&&(e[aw]=r||eo.getNextMonotonicTime()):delete e[aw]}a(yF,"setTimestamps");function cw(e,t,r){r.indexOf(ra.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(ra.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(ra.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(ra.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),fee.initializeDBIs(e,t,r)}a(cw,"initializeTransaction");async function bee(e,t,r,n,s=eo.getNextMonotonicTime()){dw(e,t,r,n),cw(e,t,r);let i=new pee,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let d=n[u],f=d[t],m;try{m=uw(e,t,d,f,i,!0,s)}catch{i.skipped_hashes.push(f),o.push(u);continue}c.push(m),l.push(f)}return lw(c,l,n,i,s,o)}a(bee,"updateRecords");async function Aee(e,t,r,n,s=eo.getNextMonotonicTime()){try{dw(e,t,r,n)}catch(l){throw gee(l,l.message,See.HTTP_STATUS_CODES.BAD_REQUEST)}cw(e,t,r);let i=new hee,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],d;Eee.isEmpty(u[t])?(d=_ee.v4(),u[t]=d):d=u[t];let f=uw(e,t,u,d,i,!1,s);o.push(f),c.push(d)}return lw(o,c,n,i,s)}a(Aee,"upsertRecords");async function lw(e,t,r,n,s,i=[]){let o=await Promise.all(e);for(let c=0,l=o.length;c<l;c++)o[c]===!0?n.written_hashes.push(t[c]):(n.skipped_hashes.push(t[c]),i.push(c));return n.txn_time=s||eo.getNextMonotonicTime(),Ree(r,i),n}a(lw,"finalizeWrite");function uw(e,t,r,n,s,i=!1,o){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,d=u;if(!u){if(i)return!1;u={}}if(yF(r,!d,o),Number.isInteger(r[wl])&&u[wl]>r[wl])return!1;d&&s.original_records.push(u);let f,m=a(()=>{for(let h in r){if(!r.hasOwnProperty(h)||h===t)continue;let E=r[h],_=e.dbis[h];if(_===void 0)continue;let R=u[h];if(typeof E=="function"){let y=E([[u]]);Array.isArray(y)&&(E=y[0][ra.FUNC_VAL],r[h]=E)}if(E===R)continue;let S=eo.getIndexedValues(R);if(S){$g&&_.prefetch(S.map(y=>({key:y,value:n})),Vg);for(let y=0,I=S.length;y<I;y++)_.remove(S[y],n)}if(S=eo.getIndexedValues(E),S){$g&&_.prefetch(S.map(y=>({key:y,value:n})),Vg);for(let y=0,I=S.length;y<I;y++)_.put(S[y],n)}}let p={...u,...r};c.put(n,p,p[wl])},"doPut");return l?f=c.ifVersion(n,l.version,m):f=c.ifNoExists(n,m),f.then(p=>p?!0:uw(e,t,r,n,s,i,o))}a(uw,"updateUpsertRecord");function Iee(e,t,r){if(eo.validateEnv(e),t===void 0)throw new Error(_p.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(_p.WRITE_ATTRIBUTES_REQUIRED):new Error(_p.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(Iee,"validateBasic");function dw(e,t,r,n){if(Iee(e,t,r),!Array.isArray(n))throw n===void 0?new Error(_p.RECORDS_REQUIRED):new Error(_p.RECORDS_MUST_BE_ARRAY)}a(dw,"validateWrite");function Vg(){}a(Vg,"noop");RF.exports={insertRecords:Tee,updateRecords:bee,upsertRecords:Aee}});var AF=x((SLe,bF)=>{"use strict";var wee=require("uuid"),fw=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||wee.v4(),this.schema_table=`${this.schema}.${this.table}`}};bF.exports=fw});var Kg=x((yLe,IF)=>{"use strict";var Nee=AF(),mw=class extends Nee{static{a(this,"LMDBCreateAttributeObject")}constructor(t,r,n,s,i=!0,o=!1){super(t,r,n,s),this.dup_sort=i,this.is_hash_attribute=o}};IF.exports=mw});var NF=x((bLe,wF)=>{"use strict";wF.exports=Oee;var Cee="inserted";function Oee(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===Cee?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(Oee,"returnObject")});var Yg=x((ILe,OF)=>{"use strict";var Pee=($(),P(z)),pw=Kt(),Lee=Nl(),{getSystemSchemaPath:Dee,getSchemaPath:vee}=tr(),{validateBySchema:Mee}=ht(),gp=require("joi"),Uee=Kg(),xee=NF(),{handleHDBError:Bee,hdbErrors:Fee,ClientError:kee}=ge(),CF=ue(),{HTTP_STATUS_CODES:Hee}=Fee,Gee="inserted";OF.exports=qee;async function qee(e){let t=Mee(e,gp.object({database:gp.string(),schema:gp.string(),table:gp.string().required(),attribute:gp.string().required()}));if(t)throw new kee(t.message);let r=!e.skip_table_check&&CF.checkGlobalSchemaTable(e.schema,e.table);if(r)throw Bee(new Error,r,Hee.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=CF.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 Uee(e.schema,e.table,e.attribute,e.id);try{let i=await pw.openEnvironment(vee(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${e.attribute}' already exists in ${e.schema}.${e.table}`);pw.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await pw.openEnvironment(Dee(),Pee.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await Lee.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdbAttributeAttributes,[s]);return xee(Gee,c,{records:[s]},l)}catch(i){throw i}}a(qee,"lmdbCreateAttribute")});var Sp=x((NLe,LF)=>{"use strict";var na=ue(),PF=ee(),{getDatabases:$ee}=(Oe(),P(Et)),{ClientError:Cl}=ge();LF.exports=Vee;function Vee(e){if(na.isEmpty(e))throw new Cl("invalid update parameters defined.");if(na.isEmptyOrZeroLength(e.schema))throw new Cl("invalid schema specified.");if(na.isEmptyOrZeroLength(e.table))throw new Cl("invalid table specified.");if(!Array.isArray(e.records))throw new Cl("records must be an array");let t=$ee()[e.schema]?.[e.table];if(na.isEmpty(t))throw new Cl(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.primaryKey,n=new Set,s={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(o=>{if(i&&na.isEmptyOrZeroLength(o[r]))throw PF.error("a valid hash attribute must be provided with update record:",o),new Cl("a valid hash attribute must be provided with update record, check log for more info");if(!na.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw PF.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Cl(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!na.isEmpty(o[r])&&o[r]!==""&&n.has(na.autoCast(o[r]))&&(o.skip=!0),n.add(na.autoCast(o[r]));for(let c in o)s[c]=1}),s[r]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(s)}}a(Vee,"insertUpdateValidate")});var Wg=x((OLe,vF)=>{"use strict";var DF=ue(),Kee=($(),P(z)),Yee=ee(),Wee=Yg(),jee=Kg(),zee=sa(),{SchemaEventMsg:Jee}=ms(),Qee="already exists in";vF.exports=Xee;async function Xee(e,t,r){if(DF.isEmptyOrZeroLength(r))return r;let n=[];DF.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 Zee(e,t.schema,t.name,i)})),s}a(Xee,"lmdbCheckForNewAttributes");async function Zee(e,t,r,n){let s=new jee(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await ete(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(Qee))Yee.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a(Zee,"createNewAttribute");async function ete(e){let t;return t=await Wee(e),zee.signalSchemaChange(new Jee(process.pid,Kee.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(ete,"createAttribute")});var fd=x((LLe,MF)=>{"use strict";var hw=class{static{a(this,"LMDBTransactionObject")}constructor(t,r,n,s,i=void 0){this.operation=t,this.user_name=r,this.timestamp=n,this.hash_values=s,this.origin=i}};MF.exports=hw});var xF=x((vLe,UF)=>{"use strict";var tte=fd(),rte=($(),P(z)).OPERATIONS_ENUM,Ew=class extends tte{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(rte.INSERT,r,n,s,i),this.records=t}};UF.exports=Ew});var FF=x((ULe,BF)=>{"use strict";var nte=fd(),ste=($(),P(z)).OPERATIONS_ENUM,_w=class extends nte{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(ste.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};BF.exports=_w});var HF=x((BLe,kF)=>{"use strict";var ite=fd(),ote=($(),P(z)).OPERATIONS_ENUM,gw=class extends ite{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(ote.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};kF.exports=gw});var qF=x((kLe,GF)=>{"use strict";var ate=fd(),cte=($(),P(z)).OPERATIONS_ENUM,Sw=class extends ate{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(cte.DELETE,n,s,t,i),this.original_records=r}};GF.exports=Sw});var Tp=x((GLe,YF)=>{"use strict";var $F=Kt(),lte=xF(),ute=FF(),dte=HF(),fte=qF(),md=Or(),VF=ue(),{CONFIG_PARAMS:mte}=($(),P(z)),KF=fe();KF.initSync();var jg=($(),P(z)).OPERATIONS_ENUM,{getTransactionAuditStorePath:pte}=tr();YF.exports=hte;async function hte(e,t){if(KF.get(mte.LOGGING_AUDITLOG)===!1)return;let r=pte(e.schema,e.table),n=await $F.openEnvironment(r,e.table,!0),s=Ete(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){$F.initializeDBIs(n,md.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,md.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[md.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[md.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),VF.isEmpty(s.user_name)||n.dbis[md.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[md.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a(hte,"writeTransaction");function Ete(e,t){let r=VF.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===jg.INSERT)return new lte(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===jg.UPDATE)return new ute(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===jg.UPSERT)return new dte(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===jg.DELETE)return new fte(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(Ete,"createTransactionObject")});var Tw=x((VLe,WF)=>{"use strict";var _te=Sp(),$Le=Um(),yp=($(),P(z)),gte=xm(),Ste=Nl().insertRecords,Tte=Kt(),yte=ee(),Rte=Wg(),{getSchemaPath:bte}=tr(),Ate=Tp();WF.exports=Ite;async function Ite(e){try{let{schemaTable:t,attributes:r}=_te(e);gte(e,r,t.hash_attribute),e.schema!==yp.SYSTEM_SCHEMA_NAME&&(r.includes(yp.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(yp.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(yp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(yp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await Rte(e.hdb_auth_header,t,r),s=bte(e.schema,e.table),i=await Tte.openEnvironment(s,e.table),o=await Ste(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await Ate(e,o)}catch(c){yte.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(Ite,"lmdbCreateRecords")});var JF=x((YLe,zF)=>{"use strict";var jF=($(),P(z)),wte=Tw(),Nte=Um(),Cte=require("fs-extra"),{getSchemaPath:Ote}=tr();zF.exports=Pte;async function Pte(e){let t=[{name:e.schema,createddate:Date.now()}],r=new Nte(jF.SYSTEM_SCHEMA_NAME,jF.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await wte(r),await Cte.mkdirp(Ote(e.schema))}a(Pte,"lmdbCreateSchema")});var XF=x((jLe,QF)=>{"use strict";var yw=class{static{a(this,"DeleteRecordsResponseObject")}constructor(t=[],r=[],n=void 0,s=[]){this.deleted=t,this.skipped=r,this.txn_time=n,this.original_records=s}};QF.exports=yw});var rk=x((JLe,tk)=>{"use strict";var ZF=Kt(),Rw=Us(),bw=En().LMDB_ERRORS_ENUM,ek=ee(),Lte=require("lmdb"),Dte=XF(),vte=($(),P(z)),Mte=vte.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function Ute(e,t,r,n){if(Rw.validateEnv(e),t===void 0)throw new Error(bw.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(bw.IDS_REQUIRED):new Error(bw.IDS_MUST_BE_ITERABLE);try{let s=ZF.listDBIs(e);ZF.initializeDBIs(e,t,s);let i=new Dte,o,c=[],l=[];for(let m=0,p=r.length;m<p;m++)try{o=r[m];let h=e.dbis[t].get(o);if(!h||n&&h[Mte]>n){i.skipped.push(o);continue}let E=e.dbis[t].ifVersion(o,Lte.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let _=0;_<s.length;_++){let R=s[_];if(!h.hasOwnProperty(R)||R===t)continue;let S=e.dbis[R],y=h[R];if(y!=null)try{let I=Rw.getIndexedValues(y);if(I)for(let w=0,L=I.length;w<L;w++)S.remove(I[w],o)}catch{ek.warn(`cannot delete from attribute: ${R}, ${y}:${o}`)}}});c.push(E),l.push(o),i.original_records.push(h)}catch(h){ek.warn(h),i.skipped.push(o)}let u=[],d=await Promise.all(c);for(let m=0,p=d.length;m<p;m++)d[m]===!0?i.deleted.push(l[m]):(i.skipped.push(l[m]),u.push(m));let f=0;for(let m=0;m<u.length;m++){let p=u[m];i.original_records.splice(p-f,1),f++}return i.txn_time=Rw.getNextMonotonicTime(),i}catch(s){throw s}}a(Ute,"deleteRecords");tk.exports={deleteRecords:Ute}});var Rp=x((XLe,sk)=>{"use strict";var pd=ue(),xte=rk(),Bte=Kt(),{getSchemaPath:Fte}=tr(),kte=Tp(),Hte=ee();sk.exports=Gte;async function Gte(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(pd.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(pd.isEmptyOrZeroLength(e.hash_values)&&!pd.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];pd.isEmpty(l)||e.hash_values.push(l)}}if(pd.isEmptyOrZeroLength(e.hash_values))return nk([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(pd.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=Fte(e.schema,e.table),i=await Bte.openEnvironment(s,e.table),o=await xte.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await kte(e,o)}catch(c){Hte.error(`unable to write transaction due to ${c.message}`)}return nk(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(Gte,"lmdbDeleteRecords");function nk(e,t,r){let n=e.length+t.length,s=n===1?"record":"records";return{message:`${e.length} of ${n} ${s} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}a(nk,"createDeleteResponse")});var Iw=x((eDe,ik)=>{"use strict";var qte=($(),P(z));function Aw(e,t){let r=Object.create(null);if(t.length===1&&qte.SEARCH_WILDCARDS.indexOf(t[0])>=0)Object.assign(r,e);else for(let n=0;n<t.length;n++){let s=t[n],i=e[s];r[s]=i===void 0?null:i}return r}a(Aw,"parseRow");function $te(e,t,r,n){let s=Aw(r,e);n.push(s)}a($te,"searchAll");function Vte(e,t,r,n){let s=Aw(r,e);n[t]=s}a(Vte,"searchAllToMap");function Kte(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(Kte,"iterateDBI");function Ol(e,t,r,n,s){let i=Object.create(null);i[s]=e;let o;n===s?o=e:(o=t,n!==void 0&&(i[n]=o)),r[0].push(o),r[1].push(i)}a(Ol,"pushResults");function Yte(e,t,r,n,s,i){t.toString().endsWith(e)&&Ol(t,r,n,s,i)}a(Yte,"endsWith");function Wte(e,t,r,n,s,i){t.toString().includes(e)&&Ol(t,r,n,s,i)}a(Wte,"contains");function jte(e,t,r,n,s,i){t>e&&Ol(t,r,n,s,i)}a(jte,"greaterThanCompare");function zte(e,t,r,n,s,i){t>=e&&Ol(t,r,n,s,i)}a(zte,"greaterThanEqualCompare");function Jte(e,t,r,n,s,i){t<e&&Ol(t,r,n,s,i)}a(Jte,"lessThanCompare");function Qte(e,t,r,n,s,i){t<=e&&Ol(t,r,n,s,i)}a(Qte,"lessThanEqualCompare");ik.exports={parseRow:Aw,searchAll:$te,searchAllToMap:Vte,iterateDBI:Kte,endsWith:Yte,contains:Wte,greaterThanCompare:jte,greaterThanEqualCompare:zte,lessThanCompare:Jte,lessThanEqualCompare:Qte,pushResults:Ol}});var hd=x((nDe,fk)=>{"use strict";var uc=Kt(),ps=Us(),zg=Or(),ar=En().LMDB_ERRORS_ENUM,Xte=($(),P(z)),Jg=Iw(),{parseRow:Zte}=Jg,rDe=require("lmdb"),{OVERFLOW_MARKER:ok,MAX_SEARCH_KEY_LENGTH:ere}=zg;function ak(e,t,r,n=!1,s=void 0,i=void 0){return Pl(e,t,r,(o,c)=>c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}))}a(ak,"iterateFullIndex");function bp(e,t,r,n,s,i=!1,o=void 0,c=void 0,l=!1,u=!1){return Pl(e,t,r,(d,f,m,p)=>{let S={transaction:d,start:i===!0?s:n,end:i===!0?n:s,reverse:i,limit:o,offset:c,inclusiveEnd:i===!0?!l:!u,exclusiveStart:i===!0?u:l};return p===r?(S.values=!1,f.getRange(S).map(y=>({value:y}))):f.getRange(S)})}a(bp,"iterateRangeBetween");function Pl(e,t,r,n){let s=e.database||e,i=uc.openDBI(s,r);i[zg.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&uc.openDBI(s,t);let o;e.database?o=e:(o=e.useReadTransaction(),o.database=e);let c=n(o,i,s,t);return c.transaction=o,e.database||(c.onDone=()=>{o.done()}),c}a(Pl,"setupTransaction");function ck(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(ok)){if(!s)if(r)s=uc.openDBI(e,r);else{let l=uc.listDBIs(e);for(let u=0,d=l.length;u<d&&(s=uc.openDBI(e,l[u]),!s[zg.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(ck,"getOverflowCheck");function tre(e,t,r,n=!1,s=void 0,i=void 0){if(ps.validateEnv(e),t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);return Pl(e,t,t,(o,c,l)=>(Qg(r),r=Ap(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>Zte(u.value,r))))}a(tre,"searchAll");function rre(e,t,r,n=!1,s=void 0,i=void 0){if(ps.validateEnv(e),t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);Qg(r),r=Ap(e.database||e,r);let o=new Map;for(let{key:c,value:l}of ak(e,t,t,n,s,i))o.set(c,Jg.parseRow(l,r));return o}a(rre,"searchAllToMap");function nre(e,t,r=!1,n=void 0,s=void 0){if(ps.validateEnv(e),t===void 0)throw new Error(ar.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=ak(e,void 0,t,r,n,s),c=o.transaction,l=ck(c.database,c,void 0,t);for(let{key:u,value:d}of o){let f=l(u,d);i[f]===void 0&&(i[f]=[]),i[f].push(d)}return i}a(nre,"iterateDBI");function sre(e,t){if(ps.validateEnv(e),t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);return uc.statDBI(e,t).entryCount}a(sre,"countAll");function ire(e,t,r,n,s=!1,i=void 0,o=void 0){return dc(e,r,n),Pl(e,t,r,(c,l,u,d)=>(n=ps.convertKeyValueToWrite(n),d===r?l.get(n,{transaction:c,lazy:!0})===void 0?[]:[{key:n,value:n}]:l.getValues(n,{transaction:c,reverse:s,limit:i,offset:o}).map(f=>({key:n,value:f}))))}a(ire,"equals");function ore(e,t,r){return dc(e,t,r),uc.openDBI(e,t).getValuesCount(r)}a(ore,"count");function are(e,t,r,n,s=!1,i=void 0,o=void 0){return dc(e,r,n),Pl(e,null,r,(c,l)=>{n=ps.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let d;if(s===!0){let f;for(let m of l.getKeys({transaction:c,start:n}))if(!m.startsWith(n)){f=m;break}return f!==void 0&&(Number.isInteger(o)?o++:i++),d=l.getRange({transaction:c,start:f,end:void 0,reverse:s,limit:i,offset:o}).map(m=>{let{key:p}=m;if(p!==f){if(p.toString().startsWith(n))return m;if(u===!0)return d.DONE}}),d.filter(m=>m)}else return d=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:o}).map(f=>{if(f.key.toString().startsWith(n))return f;if(u===!0)return d.DONE}),u?d:d.filter(f=>f)})}a(are,"startsWith");function cre(e,t,r,n,s=!1,i=void 0,o=void 0){return lk(e,t,r,n,s,i,o,!0)}a(cre,"endsWith");function lk(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return dc(e,r,n),Pl(e,null,r,(l,u,d,f)=>{let m=ck(d,l,f,r);return o=Number.isInteger(o)?o:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(p=>{let h=p.toString();return h.endsWith(ok)?u.getValues(p,{transaction:l}).map(E=>{let _=m(p,E);if(c?_.endsWith(n):_.includes(n))return{key:_,value:E}}).filter(E=>E):(c?h.endsWith(n):h.includes(n))?u[zg.DBI_DEFINITION_NAME].is_hash_attribute?{key:p,value:p}:u.getValues(p,{transaction:l}).map(E=>({key:p,value:E})):[]}).slice(o,i===void 0?void 0:i+(o||0))})}a(lk,"contains");function lre(e,t,r,n,s=!1,i=void 0,o=void 0){dc(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),bp(e,t,r,n,l,s,i,o,!0,!1)}a(lre,"greaterThan");function ure(e,t,r,n,s=!1,i=void 0,o=void 0){dc(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),bp(e,t,r,n,l,s,i,o,!1,!1)}a(ure,"greaterThanEqual");function dre(e,t,r,n,s=!1,i=void 0,o=void 0){dc(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),bp(e,t,r,l,n,s,i,o,!1,!0)}a(dre,"lessThan");function fre(e,t,r,n,s=!1,i=void 0,o=void 0){dc(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),bp(e,t,r,l,n,s,i,o,!1,!1)}a(fre,"lessThanEqual");function mre(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(ps.validateEnv(e),r===void 0)throw new Error(ar.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(ar.START_VALUE_REQUIRED);if(s===void 0)throw new Error(ar.END_VALUE_REQUIRED);if(n=ps.convertKeyValueToWrite(n),s=ps.convertKeyValueToWrite(s),n>s)throw new Error(ar.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return bp(e,t,r,n,s,i,o,c)}a(mre,"between");function pre(e,t,r,n){ps.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);if(Qg(r),r=Ap(s,r),n===void 0)throw new Error(ar.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=Jg.parseRow(c,r)),o}a(pre,"searchByHash");function hre(e,t,r){ps.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(ar.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(hre,"checkHashExists");function Ere(e,t,r,n,s=[]){return dk(e,t,r,n,s),uk(e,t,r,n,s).map(i=>i[1])}a(Ere,"batchSearchByHash");function _re(e,t,r,n,s=[]){dk(e,t,r,n,s);let i=new Map;for(let[o,c]of uk(e,t,r,n,s))i.set(o,c);return i}a(_re,"batchSearchByHashToMap");function uk(e,t,r,n,s=[]){return Pl(e,t,t,(i,o,c)=>{r=Ap(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,Jg.parseRow(d,r)];s.push(u)}).filter(u=>u)})}a(uk,"batchHashSearch");function dk(e,t,r,n,s){if(ps.validateEnv(e),t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);if(Qg(r),n==null)throw new Error(ar.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(ar.IDS_MUST_BE_ITERABLE)}a(dk,"initializeBatchSearchByHash");function Qg(e){if(!Array.isArray(e))throw e===void 0?new Error(ar.FETCH_ATTRIBUTES_REQUIRED):new Error(ar.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Qg,"validateFetchAttributes");function dc(e,t,r){if(ps.validateEnv(e),t===void 0)throw new Error(ar.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(ar.SEARCH_VALUE_REQUIRED);if(r?.length>ere)throw new Error(ar.SEARCH_VALUE_TOO_LARGE)}a(dc,"validateComparisonFunctions");function Ap(e,t){return t.length===1&&Xte.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=uc.listDBIs(e)),t}a(Ap,"setGetWholeRowAttributes");fk.exports={searchAll:tre,searchAllToMap:rre,count:ore,countAll:sre,equals:ire,startsWith:are,endsWith:cre,contains:lk,searchByHash:pre,setGetWholeRowAttributes:Ap,batchSearchByHash:Ere,batchSearchByHashToMap:_re,checkHashExists:hre,iterateDBI:nre,greaterThan:lre,greaterThanEqual:ure,lessThan:dre,lessThanEqual:fre,between:mre}});var Ed=x((iDe,_k)=>{var mk=require("lodash"),pk=ht(),ze=require("joi"),gre=ue(),{hdbSchemaTable:Ip,checkValidTable:hk,hdbTable:Ek,hdbDatabase:Xg}=ta(),{handleHDBError:Sre,hdbErrors:Tre}=ge(),{getDatabases:yre}=(Oe(),P(Et)),{HTTP_STATUS_CODES:Rre}=Tre,bre=ze.object({database:Xg,schema:Xg,table:Ek,attribute:Ip,value:ze.any().required(),get_attributes:ze.array().min(1).items(ze.alternatives(Ip,ze.object())).optional(),desc:ze.bool(),limit:ze.number().integer().min(1),offset:ze.number().integer().min(0)}),Are=ze.object({database:Xg,schema:Xg,table:Ek,operator:ze.string().valid("and","or").default("and").lowercase(),offset:ze.number().integer().min(0),limit:ze.number().integer().min(1),get_attributes:ze.array().min(1).items(ze.alternatives(Ip,ze.object())).optional(),sort:ze.object({attribute:ze.alternatives(Ip,ze.array().min(1)),descending:ze.bool().optional()}).optional(),conditions:ze.array().min(1).items(ze.alternatives(ze.object({operator:ze.string().valid("and","or").default("and").lowercase(),conditions:ze.array()}),ze.object({attribute:ze.alternatives(Ip,ze.array().min(1)),comparator:ze.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),value:ze.when("comparator",{switch:[{is:"equals",then:ze.any()},{is:"between",then:ze.array().items(ze.alternatives([ze.string(),ze.number()])).length(2)}],otherwise:ze.alternatives(ze.string(),ze.number())}).required()}))).required()});_k.exports=function(e,t){let r=null;switch(t){case"value":r=pk.validateBySchema(e,bre);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(hk("database",e.schema)),i(hk("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(o=>typeof o=="string"||typeof o=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(o=>typeof o=="string"||typeof o=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),s&&(r=new Error(s.trim()));break;case"conditions":r=pk.validateBySchema(e,Are);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=gre.checkGlobalSchemaTable(e.schema,e.table);if(s)return Sre(new Error,s,Rre.NOT_FOUND);let o=yre()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.attribute);let l=a(d=>{for(let f of d.conditions)f.conditions?l(f):c.push(f.attribute)},"addConditions");t==="conditions"&&l(e);let u=mk.filter(c,d=>d!=="*"&&!d.startsWith?.("$")&&d.attribute!=="*"&&!Array.isArray(d)&&!d.name&&!mk.some(o,f=>f===d||f.attribute===d||f.attribute===d.attribute));if(u&&u.length>0){let d=u.join(", ");return d=d.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${d}'`)}}return r}});var ww=x((aDe,gk)=>{"use strict";var Ire=Kt(),wre=Ed(),{getSchemaPath:Nre}=tr();gk.exports=Cre;function Cre(e){let t=wre(e,"hashes");if(t)throw t;let r=Nre(e.schema,e.table);return Ire.openEnvironment(r,e.table)}a(Cre,"initialize")});var Nw=x((lDe,Sk)=>{"use strict";var Ore=hd(),Pre=ww();Sk.exports=Lre;async function Lre(e){let t=await Pre(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return Ore.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(Lre,"lmdbGetDataByHash")});var yk=x((dDe,Tk)=>{"use strict";var Dre=hd(),vre=ww();Tk.exports=Mre;async function Mre(e){let t=await vre(e),r=global.hdb_schema[e.schema][e.table];return Dre.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(Mre,"lmdbSearchByHash")});var Ll=x((mDe,Ure)=>{Ure.exports={hdb_user:{hash_attribute:"username",name:"hdb_user",schema:"system",residence:["*"],attributes:[{attribute:"username"},{attribute:"password"},{attribute:"role"},{attribute:"active"},{attribute:"hash"},{attribute:"refresh_token"},{attribute:"hash_function"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_role:{hash_attribute:"id",name:"hdb_role",schema:"system",attributes:[{attribute:"id"},{attribute:"role"},{attribute:"permission"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}],residence:["*"]},hdb_job:{hash_attribute:"id",name:"hdb_job",schema:"system",attributes:[{attribute:"id"},{attribute:"user"},{attribute:"type"},{attribute:"status"},{attribute:"start_datetime"},{attribute:"end_datetime"},{attribute:"message"},{attribute:"created_datetime"},{attribute:"request"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_license:{hash_attribute:"id",table:"hdb_license",database:"system",audit:!0,attributes:[{attribute:"id"},{name:"level"},{name:"region",indexed:!0},{name:"reads"},{name:"writes"},{name:"readBytes"},{name:"writeBytes"},{name:"realTimeMessages"},{name:"realTimeBytes"},{name:"cpuTime"},{name:"storage"},{name:"usedReads"},{name:"usedWrites"},{name:"usedReadBytes"},{name:"usedWriteBytes"},{name:"usedRealTimeMessages"},{name:"usedRealTimeBytes"},{name:"usedCpuTime"},{name:"usedStorage"},{name:"expiration"},{name:"autoRenew"},{name:"__createdtime__",indexed:!0},{name:"__updatedtime__",indexed:!0}]},hdb_info:{hash_attribute:"info_id",name:"hdb_info",schema:"system",attributes:[{attribute:"info_id"},{attribute:"data_version_num"},{attribute:"hdb_version_num"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_nodes:{hash_attribute:"name",name:"hdb_nodes",schema:"system",attributes:[{attribute:"name"},{attribute:"subscriptions"},{attribute:"system_info"},{attribute:"url"},{attribute:"routes"},{attribute:"revoked_certificates"},{attribute:"shard"}]},hdb_certificate:{hash_attribute:"name",name:"hdb_certificate",schema:"system",attributes:[{attribute:"name"},{attribute:"uses"},{attribute:"certificate"},{attribute:"is_authority"},{attribute:"private_key_name"},{attribute:"details"},{attribute:"is_self_signed"},{attribute:"__updatedtime__"}]},hdb_analytics_hostname:{hash_attribute:"id",name:"hdb_analytics_hostname",schema:"system",attributes:[{attribute:"id"},{attribute:"hostname"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",attributes:[{attribute:"id"},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]},hdb_raw_analytics:{hash_attribute:"id",name:"hdb_raw_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{attribute:"time"},{attribute:"metrics"}]},hdb_temp:{hash_attribute:"id",name:"hdb_temp",schema:"system",attributes:[{attribute:"id"}]},hdb_durable_session:{hash_attribute:"id",name:"hdb_durable_session",schema:"system",attributes:[{attribute:"id"}]},hdb_session_will:{hash_attribute:"id",name:"hdb_session_will",schema:"system",attributes:[{attribute:"id"}]},hdb_certificate_cache:{hash_attribute:"certificate_id",name:"hdb_certificate_cache",schema:"system",attributes:[{attribute:"certificate_id"}]},hdb_crl_cache:{hash_attribute:"distribution_point",name:"hdb_crl_cache",schema:"system",attributes:[{attribute:"distribution_point"}]},hdb_revoked_certificates:{hash_attribute:"composite_id",name:"hdb_revoked_certificates",schema:"system",attributes:[{attribute:"composite_id"}]}}});var Zg=x((pDe,Nk)=>{"use strict";var gn=hd(),xre=Kt(),Bre=ue(),Je=Or(),Dl=($(),P(z)),Fre=Ll(),Rk=En().LMDB_ERRORS_ENUM,{getSchemaPath:kre}=tr(),ia=Dl.SEARCH_WILDCARDS;async function Hre(e,t,r){let n;e.schema===Dl.SYSTEM_SCHEMA_NAME?n=Fre[e.table]:n=global.hdb_schema[e.schema][e.table];let s=wk(e,n.hash_attribute,r,t);return Ak(e,s,n.hash_attribute,r)}a(Hre,"prepSearch");async function Ak(e,t,r,n){let s=kre(e.schema,e.table),i=await xre.openEnvironment(s,e.table),o=Ik(i,e,t,r),c=o.transaction||i;if([Je.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,Je.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,Je.SEARCH_TYPES.SEARCH_ALL,Je.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(Gre(e,r)===!1){let d=e.attribute;if(d===r)return n?bk(o,()=>!0):o.map(m=>({[r]:m.key}));let f=a(m=>({[r]:m.value,[d]:m.key}),"toObject");return n?bk(o,f):o.map(f)}let u=e.attribute===r?o.map(d=>d.key):o.map(d=>d.value);return n===!0?gn.batchSearchByHashToMap(c,r,e.get_attributes,u):gn.batchSearchByHash(c,r,e.get_attributes,u)}a(Ak,"executeSearch");function Ik(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:o,limit:c,offset:l}=t;switch(o=typeof o=="boolean"?o:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case Je.SEARCH_TYPES.EQUALS:s=gn.equals(e,i,t.attribute,t.value,o,c,l);break;case Je.SEARCH_TYPES.CONTAINS:s=gn.contains(e,i,t.attribute,t.value,o,c,l);break;case Je.SEARCH_TYPES.ENDS_WITH:case Je.SEARCH_TYPES._ENDS_WITH:s=gn.endsWith(e,i,t.attribute,t.value,o,c,l);break;case Je.SEARCH_TYPES.STARTS_WITH:case Je.SEARCH_TYPES._STARTS_WITH:s=gn.startsWith(e,i,t.attribute,t.value,o,c,l);break;case Je.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return gn.batchSearchByHash(e,t.attribute,t.get_attributes,[t.value]);case Je.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return gn.batchSearchByHashToMap(e,t.attribute,t.get_attributes,[t.value]);case Je.SEARCH_TYPES.SEARCH_ALL:return gn.searchAll(e,n,t.get_attributes,o,c,l);case Je.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return gn.searchAllToMap(e,n,t.get_attributes,o,c,l);case Je.SEARCH_TYPES.BETWEEN:s=gn.between(e,i,t.attribute,t.value,t.end_value,o,c,l);break;case Je.SEARCH_TYPES.GREATER_THAN:case Je.SEARCH_TYPES._GREATER_THAN:s=gn.greaterThan(e,i,t.attribute,t.value,o,c,l);break;case Je.SEARCH_TYPES.GREATER_THAN_EQUAL:case Je.SEARCH_TYPES._GREATER_THAN_EQUAL:s=gn.greaterThanEqual(e,i,t.attribute,t.value,o,c,l);break;case Je.SEARCH_TYPES.LESS_THAN:case Je.SEARCH_TYPES._LESS_THAN:s=gn.lessThan(e,i,t.attribute,t.value,o,c,l);break;case Je.SEARCH_TYPES.LESS_THAN_EQUAL:case Je.SEARCH_TYPES._LESS_THAN_EQUAL:s=gn.lessThanEqual(e,i,t.attribute,t.value,o,c,l);break;default:return Object.create(null)}return s}a(Ik,"searchByType");function bk(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(bk,"createMapFromIterable");function Gre(e,t){if(e.get_attributes.length===1&&e.get_attributes[0]==="*")return!0;let r=[e.attribute];e.get_attributes.indexOf(t)>=0&&r.push(t);let n=!1;for(let s=0;s<e.get_attributes.length;s++)if(r.indexOf(e.get_attributes[s])<0){n=!0;break}return n}a(Gre,"checkToFetchMore");function wk(e,t,r,n){if(Bre.isEmpty(n)){let s=e.value;typeof s=="object"?s=JSON.stringify(s):s=s.toString();let i=s.charAt(0),o=s.charAt(s.length-1),c=!1;if(e.attribute===t&&(c=!0),ia.indexOf(s)>-1)return r===!0?Je.SEARCH_TYPES.SEARCH_ALL_TO_MAP:Je.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(ia[0])<0&&s.indexOf(ia[1])<0)return c===!0?r===!0?Je.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:Je.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:Je.SEARCH_TYPES.EQUALS;if(ia.indexOf(i)>=0&&ia.indexOf(o)>=0)return e.value=e.value.slice(1,-1),Je.SEARCH_TYPES.CONTAINS;if(ia.indexOf(i)>=0)return e.value=e.value.substr(1),Je.SEARCH_TYPES.ENDS_WITH;if(ia.indexOf(o)>=0)return e.value=e.value.slice(0,-1),Je.SEARCH_TYPES.STARTS_WITH;if(s.includes(ia[0])||s.includes(ia[1]))return Je.SEARCH_TYPES.EQUALS;throw new Error(Rk.UNKNOWN_SEARCH_TYPE)}else switch(n){case Dl.VALUE_SEARCH_COMPARATORS.BETWEEN:return Je.SEARCH_TYPES.BETWEEN;case Dl.VALUE_SEARCH_COMPARATORS.GREATER:return Je.SEARCH_TYPES.GREATER_THAN;case Dl.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return Je.SEARCH_TYPES.GREATER_THAN_EQUAL;case Dl.VALUE_SEARCH_COMPARATORS.LESS:return Je.SEARCH_TYPES.LESS_THAN;case Dl.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return Je.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(Rk.UNKNOWN_SEARCH_TYPE)}}a(wk,"createSearchTypeFromSearchObject");Nk.exports={executeSearch:Ak,createSearchTypeFromSearchObject:wk,prepSearch:Hre,searchByType:Ik}});var Ok=x((EDe,Ck)=>{"use strict";var qre=Ed(),$re=ue(),Vre=($(),P(z)),Kre=Zg();Ck.exports=Yre;function Yre(e,t){if(!$re.isEmpty(t)&&Vre.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=qre(e,"value");if(n)throw n;return Kre.prepSearch(e,t,!0)}a(Yre,"lmdbGetDataByValue")});var to=x((gDe,Pk)=>{"use strict";var Cw=class{static{a(this,"SearchObject")}constructor(t,r,n,s,i,o,c,l=!1,u=void 0,d=void 0){this.schema=t,this.table=r,this.attribute=n,this.value=s,this.hash_attribute=i,this.get_attributes=o,this.end_value=c,this.reverse=l,this.limit=u,this.offset=d}};Pk.exports=Cw});var wp=x((yDe,Lk)=>{"use strict";var TDe=to(),Wre=Ed(),jre=ue(),zre=($(),P(z)),Jre=Zg();Lk.exports=Qre;async function Qre(e,t){if(!jre.isEmpty(t)&&zre.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Wre(e,"value");if(n)throw n;return Jre.prepSearch(e,t,!1)}a(Qre,"lmdbSearchByValue")});var vk=x((ADe,Dk)=>{"use strict";var bDe=Or(),Ow=class{static{a(this,"SearchByConditionsObject")}constructor(t,r,n,s,i=void 0,o=void 0,c="and"){this.schema=t,this.table=r,this.get_attributes=n,this.limit=i,this.offset=o,this.conditions=s,this.operator=c}},Pw=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.attribute=t,this.comparator=r,this.value=n}},Lw=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};Dk.exports={SearchByConditionsObject:Ow,SearchCondition:Pw,SortAttribute:Lw}});var Fk=x((CDe,Bk)=>{"use strict";var{SearchByConditionsObject:wDe,SearchCondition:NDe}=vk(),Xre=to(),Zre=Ed(),Dw=hd(),eS=Or(),xk=Zg(),ene=Iw(),tne=require("lodash"),{getSchemaPath:rne}=tr(),Mk=Kt(),{handleHDBError:nne,hdbErrors:sne}=ge(),{HTTP_STATUS_CODES:ine}=sne,one=1e8;Bk.exports=ane;async function ane(e){let t=Zre(e,"conditions");if(t)throw nne(t,t.message,ine.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=rne(e.schema,e.table),n=await Mk.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)Mk.openDBI(n,u.attribute);let i=tne.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let d=u.comparator;d===eS.SEARCH_TYPES.EQUALS?u.estimated_count=Dw.count(n,u.attribute,u.value):d===eS.SEARCH_TYPES.CONTAINS||d===eS.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=one}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await Uk(o,e,i[0],s.hash_attribute),l;if(!e.operator||e.operator.toLowerCase()==="and"){let u=n.dbis[s.hash_attribute],d=i.slice(1).map(xk.filterByType),f=d.length,m=Dw.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(p=>u.get(p,{transaction:o,lazy:!0})),f>0&&(l=l.filter(p=>{for(let h=0;h<f;h++)if(!d[h](p))return!1;return!0})),(e.offset||e.limit!==void 0)&&(l=l.slice(e.offset,e.limit!==void 0?(e.offset||0)+e.limit:void 0)),l=l.map(p=>ene.parseRow(p,m))}else{for(let f=1;f<i.length;f++){let m=i[f],p=await Uk(o,e,m,s.hash_attribute);c=c.concat(p)}let u=new Set,d=e.offset||0;c=c.filter(f=>u.has(f)?!1:(u.add(f),!0)).slice(d,e.limit&&e.limit+d),l=Dw.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(ane,"lmdbSearchByConditions");async function Uk(e,t,r,n){let s=new Xre(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.comparator;return s.attribute=r.attribute,i===eS.SEARCH_TYPES.BETWEEN?(s.value=r.value[0],s.end_value=r.value[1]):s.value=r.value,xk.searchByType(e,s,i,n).map(o=>o.value)}a(Uk,"executeConditionSearch")});var Np=x((PDe,kk)=>{"use strict";var vw=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};kk.exports=vw});var Cp=x((DDe,Hk)=>{"use strict";var cne=($(),P(z)).OPERATIONS_ENUM,Mw=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=cne.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};Hk.exports=Mw});var Uw=x((MDe,jk)=>{"use strict";var Vk=to(),Kk=Cp(),Yk=wp(),Wk=Rp(),Vn=($(),P(z)),Gk=ue(),qk=Kt(),{getTransactionAuditStorePath:lne,getSchemaPath:une}=tr(),$k=ee();jk.exports=dne;async function dne(e){try{if(Gk.isEmpty(global.hdb_schema[e.schema])||Gk.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await fne(e),await mne(e);let t=une(e.schema,e.table);try{await qk.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")$k.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=lne(e.schema,e.table);await qk.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")$k.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(dne,"lmdbDropTable");async function fne(e){let t=new Vk(Vn.SYSTEM_SCHEMA_NAME,Vn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Vn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Vn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await Yk(t)),n=[];for(let i=0;i<r.length;i++){let o=r[i];n.push(o.id)}if(n.length===0)return;let s=new Kk(Vn.SYSTEM_SCHEMA_NAME,Vn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await Wk(s)}a(fne,"deleteAttributesFromSystem");async function mne(e){let t=new Vk(Vn.SYSTEM_SCHEMA_NAME,Vn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Vn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Vn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Vn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Vn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await Yk(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let o=r[i];o.name===e.table&&o.schema===e.schema&&(n=o)}if(!n)throw new Error(`${e.schema}.${e.table} was not found`);let s=new Kk(Vn.SYSTEM_SCHEMA_NAME,Vn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await Wk(s)}catch(i){throw i}}a(mne,"dropTableFromSystem")});var Jk=x((xDe,zk)=>{"use strict";var pne=require("fs-extra"),hne=to(),Ene=Np(),_ne=Cp(),gne=Uw(),Sne=Rp(),Tne=Nw(),yne=wp(),oa=($(),P(z)),{getSchemaPath:Rne}=tr(),{handleHDBError:bne,hdbErrors:Ane}=ge(),{HDB_ERROR_MSGS:Ine,HTTP_STATUS_CODES:wne}=Ane;zk.exports=Nne;async function Nne(e){let t;try{t=await Cne(e.schema);let r=new hne(oa.SYSTEM_SCHEMA_NAME,oa.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,oa.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[oa.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await yne(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await gne(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new _ne(oa.SYSTEM_SCHEMA_NAME,oa.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await Sne(s);let i=Rne(t);await pne.remove(i)}catch(r){throw r}}a(Nne,"lmdbDropSchema");async function Cne(e){let t=new Ene(oa.SYSTEM_SCHEMA_NAME,oa.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[oa.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await Tne(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw bne(new Error,Ine.SCHEMA_NOT_FOUND(e),wne.NOT_FOUND,void 0,void 0,!0);return n}a(Cne,"validateDropSchema")});var tS=x((FDe,Qk)=>{"use strict";var xw=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};Qk.exports=xw});var Zk=x((GDe,Xk)=>{"use strict";var One=require("fs-extra"),rS=Kt(),{getTransactionAuditStorePath:Pne}=tr(),Bw=Or(),HDe=tS();Xk.exports=Lne;async function Lne(e){let t;try{let r=Pne(e.schema,e.table);await One.mkdirp(r),t=await rS.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{rS.createDBI(t,Bw.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),rS.createDBI(t,Bw.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),rS.createDBI(t,Bw.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}a(Lne,"createTransactionsAuditEnvironment")});var rH=x(($De,tH)=>{"use strict";var Fw=($(),P(z)),eH=Kt(),Dne=Nl(),{getSystemSchemaPath:vne,getSchemaPath:Mne}=tr(),Une=Yg(),kw=Kg(),xne=ee(),Bne=Zk();tH.exports=Fne;async function Fne(e,t){let r=Mne(t.schema,t.table),n=new kw(t.schema,t.table,Fw.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new kw(t.schema,t.table,Fw.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new kw(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await eH.createEnvironment(r,t.table),e!==void 0){let o=await eH.openEnvironment(vne(),Fw.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await Dne.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdbTableAttributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await Hw(n),await Hw(s),await Hw(i)}await Bne(t)}catch(o){throw o}}a(Fne,"lmdbCreateTable");async function Hw(e){try{await Une(e)}catch(t){xne.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Hw,"createAttribute")});var sH=x((KDe,nH)=>{"use strict";var kne=Sp(),Hne=xm(),Gne=Wg(),Op=($(),P(z)),qne=Nl().updateRecords,$ne=Kt(),{getSchemaPath:Vne}=tr(),Kne=Tp(),Yne=ee();nH.exports=Wne;async function Wne(e){try{let{schemaTable:t,attributes:r}=kne(e);Hne(e,r,t.hash_attribute),e.schema!==Op.SYSTEM_SCHEMA_NAME&&(r.includes(Op.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Op.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Op.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Op.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await Gne(e.hdb_auth_header,t,r),s=Vne(e.schema,e.table),i=await $ne.openEnvironment(s,e.table),o=await qne(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await Kne(e,o)}catch(c){Yne.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schemaTable:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(Wne,"lmdbUpdateRecords")});var oH=x((WDe,iH)=>{"use strict";var jne=($(),P(z)).OPERATIONS_ENUM,Gw=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=jne.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};iH.exports=Gw});var cH=x((JDe,aH)=>{"use strict";var zDe=oH(),zne=Sp(),Jne=xm(),Qne=Wg(),Pp=($(),P(z)),Xne=Nl().upsertRecords,Zne=Kt(),{getSchemaPath:ese}=tr(),tse=Tp(),rse=ee(),{handleHDBError:nse,hdbErrors:sse}=ge();aH.exports=ise;async function ise(e){let t;try{t=zne(e)}catch(l){throw nse(l,l.message,sse.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schemaTable:r,attributes:n}=t;Jne(e,n,r.hash_attribute),e.schema!==Pp.SYSTEM_SCHEMA_NAME&&(n.includes(Pp.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(Pp.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(Pp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(Pp.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await Qne(e.hdb_auth_header,r,n),i=ese(e.schema,e.table),o=await Zne.openEnvironment(i,e.table),c=await Xne(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await tse(e,c)}catch(l){rse.error(`unable to write transaction due to ${l.message}`)}return{written_hashes:c.written_hashes,schemaTable:r,new_attributes:s,txn_time:c.txn_time}}a(ise,"lmdbUpsertRecords")});var uH=x((XDe,lH)=>{"use strict";var qw=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};lH.exports=qw});var fH=x((eve,dH)=>{"use strict";var $w=class{static{a(this,"DeleteAuditLogsBeforeResults")}constructor(t=void 0,r=void 0,n=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=n}};dH.exports=$w});var hH=x((nve,pH)=>{"use strict";var Vw=Kt(),{getTransactionAuditStorePath:ose}=tr(),rve=uH(),Lp=Or(),ase=ue(),mH=fH(),cse=require("util").promisify,lse=cse(setTimeout),use=1e4,dse=100;pH.exports=fse;async function fse(e){let t=ose(e.schema,e.table),r=await Vw.openEnvironment(t,e.table,!0),n=Vw.listDBIs(r);Vw.initializeDBIs(r,Lp.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new mH;do s=await mse(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 lse(dse);while(s.transactions_deleted>0);return i}a(fse,"deleteAuditLogsBefore");async function mse(e,t){let r=new mH;try{let n=e.dbis[Lp.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let{key:i,value:o}of n.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),s=n.remove(i);let c=o[Lp.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];ase.isEmpty(c)||(s=e.dbis[Lp.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[Lp.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>use)break}return await s,r}catch(n){throw n}}a(mse,"deleteTransactions")});var _H=x((ive,EH)=>{"use strict";var Kw=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};EH.exports=Kw});var SH=x((cve,gH)=>{"use strict";var pse=to(),hse=Cp(),ave=_H(),ro=($(),P(z)),Ese=ue(),Yw=Kt(),_se=Ll(),gse=wp(),Sse=Rp(),{getSchemaPath:Tse}=tr();gH.exports=yse;async function yse(e,t=!0){let r;e.schema===ro.SYSTEM_SCHEMA_NAME?r=_se[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await bse(e),s=Tse(e.schema,e.table),i=await Yw.openEnvironment(s,e.table);return t===!0&&await Rse(e,i,r.hash_attribute),Yw.dropDBI(i,e.attribute),n}a(yse,"lmdbDropAttribute");async function Rse(e,t,r){let n=Yw.openDBI(t,r),s,i=e.attribute;for(let{key:o,value:c,version:l}of n.getRange({start:!1,versions:!0})){let u={};for(let d in c)d!==i&&(u[d]=c[d]);s=t.dbis[r].put(o,u,l)}await s}a(Rse,"removeAttributeFromAllObjects");async function bse(e){let t=new pse(ro.SYSTEM_SCHEMA_NAME,ro.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,ro.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[ro.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,ro.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await gse(t)).filter(o=>o[ro.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(Ese.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[ro.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new hse(ro.SYSTEM_SCHEMA_NAME,ro.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return Sse(i)}a(bse,"dropAttributeFromSystem")});var IH=x((uve,AH)=>{"use strict";var Ww=Kt(),_d=Or(),jw=($(),P(z)),TH=ue(),{getTransactionAuditStorePath:Ase}=tr(),Ise=hd(),nS=fd(),wse=ee();AH.exports=Nse;async function Nse(e){let t=Ase(e.schema,e.table),r=await Ww.openEnvironment(t,e.table,!0),n=Ww.listDBIs(r);Ww.initializeDBIs(r,_d.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case jw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return yH(r,e.search_values);case jw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,Ose(r,e.search_values,s);case jw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return Cse(r,e.search_values);default:return yH(r)}}a(Nse,"readAuditLog");function yH(e,t=[0,Date.now()]){TH.isEmpty(t[0])&&(t[0]=0),TH.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[_d.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 nS,s))}a(yH,"searchTransactionsByTimestamp");function Cse(e,t=[]){let r=new Map;for(let n=0;n<t.length;n++){let s=t[n],i=[];for(let o of e.dbis[_d.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,bH(e,i))}return Object.fromEntries(r)}a(Cse,"searchTransactionsByUsername");function Ose(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],d=Ise.equals(e,_d.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,_d.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=bH(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,d=n.get(u);RH(l,"records",r,d,o),RH(l,"original_records",r,d,o)}return Object.fromEntries(o)}a(Ose,"searchTransactionsByHashValues");function RH(e,t,r,n,s){let i=e.timestamp;if(e[t])for(let o=0;o<e[t].length;o++){let c=e[t][o],l=c[r].toString();if(n.indexOf(l)>=0)if(s.has(l)){let u=s.get(l),d=u[u.length-1];if(d.timestamp===i)d[t]=[c];else{let f=new nS(e.operation,e.user_name,i,void 0);f[t]=[c],u.push(f)}}else{let u=new nS(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(RH,"loopRecords");function bH(e,t){let r=[];try{let n=e.dbis[_d.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let s=0;s<t.length;s++)try{let i=n.get(t[s]);if(i){let o=Object.assign(new nS,i);r.push(o)}}catch(i){wse.warn(i)}return r}catch(n){throw n}}a(bH,"batchSearchTransactions")});var NH=x((fve,wH)=>{"use strict";var{database:Pse}=(Oe(),P(Et));wH.exports={writeTransaction:Lse};async function Lse(e,t,r){return Pse({database:e,table:t}).transaction(r)}a(Lse,"writeTransaction")});var LH=x((pve,PH)=>{"use strict";var{getSchemaPath:CH}=tr(),OH=Kt();PH.exports={flush:Dse,resetReadTxn:vse};async function Dse(e,t){return(await OH.openEnvironment(CH(e,t),t.toString())).flushed}a(Dse,"flush");async function vse(e,t){try{(await OH.openEnvironment(CH(e,t),t.toString())).resetReadTxn()}catch{}}a(vse,"resetReadTxn")});var UH=x((Eve,MH)=>{"use strict";var{Readable:Mse}=require("stream"),{getDatabases:Use}=(Oe(),P(Et)),{readSync:xse,openSync:Bse,createReadStream:DH}=require("fs"),{open:Fse}=require("lmdb"),{OpenDBIObject:vH}=pp(),kse=hp(),{AUDIT_STORE_OPTIONS:Hse}=(Yi(),P(B0)),{INTERNAL_DBIS_NAME:Gse,AUDIT_STORE_NAME:qse}=Or();MH.exports=Vse;var zw=32768,$se=100;async function Vse(e){let t=e.database||e.schema||"data",r=Use()[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=Fse({noSync:!0,maxDbs:kse.MAX_DBS}),m,p=f.openDB(Gse,new vH(!1)),h=d.useReadTransaction(),E=0,_=a(async function(S,y){y.encoding="binary",y.encoder=void 0;let I=f.openDB(S,y),w=d.openDB(S,y);for(let{key:L,version:H,value:Z}of w.getRange({start:null,transaction:h,versions:w.useVersions}))m=I.put(L,Z,H),E++%$se===0&&(await new Promise(X=>setTimeout(X,20)),h.openTimer&&(h.openTimer=0))},"copyDatabase");for(let{key:S,value:y}of d.getRange({transaction:h,start:!1}))if(s.some(I=>S.startsWith?.(I+"/"))){p.put(S,y);let[,I]=S.split("/"),w=!I,L=new vH(!w,w);await _(S,L)}e.include_audit&&await _(qse,{...Hse}),await m;let R=DH(f.path);return R.headers=l(),R.on("close",()=>{h.done(),f.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=Bse(o.path);return o.transaction(()=>{let u=Buffer.alloc(zw);xse(c,u,0,zw),o.resetReadTxn();let d=o.useReadTransaction();d.renew();let f=DH(null,{fd:c,start:zw}),m=new Mse.from(async function*(){yield u;for await(let p of f)d.openTimer&&(d.openTimer=0),yield p;d.done()}());return m.headers=l(),m});function l(){let u=new Map;return u.set("content-type","application/octet-stream"),u.set("content-disposition",`attachment; filename="${t}"`),u.set("date",n),u}}a(Vse,"getBackup")});var FH=x((gve,BH)=>{"use strict";var Kse=ee(),{handleHDBError:Yse}=ge(),Wse=mF(),jse=Yg(),zse=Tw(),Jse=JF(),Qse=Rp(),Xse=Nw(),Zse=yk(),eie=Ok(),tie=wp(),rie=Fk(),nie=Jk(),sie=rH(),iie=sH(),oie=cH(),aie=hH(),cie=Uw(),lie=SH(),uie=IH(),die=NH(),xH=LH(),fie=UH(),Jw=class extends Wse{static{a(this,"LMDBBridge")}async searchByConditions(t){return rie(t)}async getDataByHash(t){return await Xse(t)}async searchByHash(t){return await Zse(t)}async getDataByValue(t,r){return await eie(t,r)}async searchByValue(t){return await tie(t)}async createSchema(t){return await Jse(t)}async dropSchema(t){return await nie(t)}async createTable(t,r){return await sie(t,r)}async dropTable(t){return await cie(t)}async createAttribute(t){return await jse(t)}async createRecords(t){return await zse(t)}async updateRecords(t){return await iie(t)}async upsertRecords(t){try{return await oie(t)}catch(r){throw Yse(r,null,null,Kse.ERR,r)}}async deleteRecords(t){return await Qse(t)}async dropAttribute(t){return await lie(t)}async deleteAuditLogsBefore(t){return await aie(t)}async readAuditLog(t){return await uie(t)}writeTransaction(t,r,n){return die.writeTransaction(t,r,n)}flush(t,r){return xH.flush(t,r)}resetReadTxn(t,r){return xH.resetReadTxn(t,r)}getBackup(t){return fie(t)}};BH.exports=Jw});function Kn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function vp(e,t,r=!1){let n=e.prototype,s={},i=t.attributes||t.properties||[];for(let l of i){let u=l.name,d,f;if(l.resolve)f={get(){return l.resolve(this,this.getContext?.())},set(m){return l.set(this,m)},configurable:!0};else{switch(l.type){case"String":d=a(function(m){if(!(typeof m=="string"||m==null&&l.nullable!==!1))throw new hs.ClientError(`${u} must be a string, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"ID":d=a(function(m){if(!(typeof m=="string"||m?.length>0&&m.every?.(p=>typeof p=="string")||m==null&&l.nullable!==!1))throw new hs.ClientError(`${u} must be a string, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"Float":case"Number":d=a(function(m){let p=m?.__op__?m.value:m;if(!(typeof p=="number"||m==null&&l.nullable!==!1))throw new hs.ClientError(`${u} must be a number, attempt to assign ${p}`);Kn(this)[u]=m},"set");break;case"Int":d=a(function(m){let p=m?.__op__?m.value:m;if(!(p>>0===p||m==null&&l.nullable!==!1))if(typeof p=="number"&&Math.abs((p>>0)-p)<=1)p=Math.round(p),m?.__op__?m.value=p:m=p;else throw new hs.ClientError(`${u} must be an integer between -2147483648 and 2147483647, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"Long":d=a(function(m){let p=m?.__op__?m.value:m;if(!(Math.round(p)===m&&Math.abs(p)<=9007199254740992||m==null&&l.nullable!==!1))if(typeof p=="number"&&Math.abs(p)<=9007199254740992)p=Math.round(p),m?.__op__?m.value=p:m=p;else throw new hs.ClientError(`${u} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"BigInt":d=a(function(m){let p=m?.__op__?m.value:m;if(!(typeof p=="bigint"||m==null&&l.nullable!==!1))if(typeof p=="string"||typeof p=="number")p=BigInt(p),m?.__op__?m.value=p:m=p;else throw new hs.ClientError(`${u} must be a number, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"Boolean":d=a(function(m){if(!(typeof m=="boolean"||m==null&&l.nullable!==!1))throw new hs.ClientError(`${u} must be a boolean, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"Date":d=a(function(m){if(!(m instanceof Date||m==null&&l.nullable!==!1))if(typeof m=="string"||typeof m=="number")m=new Date(m);else throw new hs.ClientError(`${u} must be a Date, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"Bytes":d=a(function(m){if(!(m instanceof Uint8Array||m==null&&l.nullable!==!1))throw new hs.ClientError(`${u} must be a Buffer or Uint8Array, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"Blob":d=a(function(m){if(!(m instanceof xs||m==null&&l.nullable!==!1))throw new hs.ClientError(`${u} must be a Blob, attempt to assign ${m}`);Kn(this)[u]=m},"set");break;case"Any":case void 0:d=a(function(m){Kn(this)[u]=m},"set");break;default:d=a(function(m){if(!(typeof m=="object"||m==null&&l.nullable!==!1))throw new hs.ClientError(`${u} must be an object, attempt to assign ${m}`);Kn(this)[u]=m},"set")}f={get(){let m=this.getChanges?.();if(m&&u in m){let h=m[u];if(h?.__op__){let E=this.getRecord()?.[u];return h.update(E)}return h}let p=this.getRecord()?.[u];if(p&&typeof p=="object"){let h=Qw(p,l);if(h)return m||this._setChanges(m=Object.create(null)),m[u]=h}return p},set:d,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,s[u]=f,(!(u in n)||Object.getOwnPropertyDescriptor(n,u)?.get?.isAttribute)&&Object.defineProperty(n,u,f)}o("getProperty",function(l){let u=s[l];if(u)return u.get.call(this);let d=this.getChanges();return d?.[l]!==void 0?d[l]:this.getRecord()?.[l]}),o("set",function(l,u){let d=s[l];if(d)return d.set.call(this,u);if(t.sealed)throw new hs.ClientError("Can not add a property to a sealed table schema");Kn(this)[l]=u}),o("deleteProperty",function(l){Kn(this)[l]=void 0}),o("toJSON",function(){let l=this.getChanges?.(),u;for(let f in l){u||(u={...this.getRecord()});let m=l[f];if(m?.__op__){let p=u[f];m=m.update(p)}u[f]=m}return Object.keys(this).length>0&&(u||(u={...this.getRecord()}),Object.assign(u,this)),u||this.getRecord()}),n.get||o("get",n.getProperty),n.delete||o("delete",n.deleteProperty),n.then||o("then",null);function o(l,u){Object.defineProperty(n,l,{value:u,configurable:!0})}a(o,"setMethod");let c=n;do{let l=Object.getPrototypeOf(c);if(l===Object.prototype){Object.setPrototypeOf(c,r?GH:HH);break}c=l}while(c&&c!==HH&&c!==GH)}function qH(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(kH[t])return kH[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=Qw(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}function mie(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 Qw(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends Ml{static{a(this,"TrackedObject")}},vp(r,t)),new r(e)):new Ml(e);case Array:let n=new iS(e.length,e);for(let s=0,i=e.length;s<i;s++){let o=e[s];o&&typeof o=="object"&&(o=Qw(o,t?.elements)),n[s]=o}return n;default:return e}}function oS(e){let t=e.getChanges?.(),r;for(let s in t){r||(r=e.getRecord?{...e.getRecord()}:{});let i=t[s];if(i&&typeof i=="object")if(i.__op__){let o=r[s];i=i.update(o)}else i=oS(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 Ul(e,t=e.getChanges?.()){let r;if(!e)return t;if(e.getRecord&&e.constructor===Array&&!Object.isFrozen(e)){r=e;for(let n=0,s=e.length;n<s;n++){let i=e[n];if(i&&typeof i=="object"){let o=Ul(i);o!==i&&r===e&&(r=e.slice(0)),i=o}r[n]=i}return Object.freeze(r)}for(let n in t){r||(r={...e.getRecord?e.getRecord():e});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=YA[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=Ul(s);r[n]=s}if(!Array.isArray(e)&&e.getRecord)for(let n in e)pie.call(e,n)&&(r||(r={...e.getRecord()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?e.getRecord():e}function sS(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[vl]||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(sS(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(sS(s))return!0}else return!0}else return!0}}return!1}var hs,kH,HH,GH,Ml,pie,vl,iS,Dp,Xw=ie(()=>{hs=b(ge());rg();ls();a(Kn,"getChanges");a(vp,"assignTrackedAccessors");kH=Object.prototype,HH=new Proxy({},{get:qH}),GH=new Proxy({},{get:qH,set:mie});a(qH,"getProxiedProperty");a(mie,"setProxiedProperty");a(Qw,"trackObject");Ml=class{static{a(this,"GenericTrackedObject")}#e;#t;constructor(t){if(t?.getRecord)throw new Error("Can not track an already tracked object, check for circular references");this.#e=t}getRecord(){return this.#e}setRecord(t){this.#e=t}getChanges(){return this.#t}_setChanges(t){this.#t=t}};vp(Ml,{},!0);a(oS,"collapseData");pie=Object.prototype.hasOwnProperty;a(Ul,"updateAndFreeze");a(sS,"hasChanges");vl=Symbol.for("has-array-changes"),iS=class extends Array{static{a(this,"TrackedArray")}#e;[vl];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[vl]=!0,super.splice(...t)}push(...t){return this[vl]=!0,super.push(...t)}pop(){return this[vl]=!0,super.pop()}unshift(...t){return this[vl]=!0,super.unshift(...t)}shift(){return this[vl]=!0,super.shift()}};iS.prototype.constructor=Array;Dp=class{static{a(this,"Addition")}__op__="add";value;constructor(t){this.value=t}update(t){return(+t||0)+this.value}}});var JH={};Re(JH,{ResourceBridge:()=>tN});function rN({get_attributes:e},t){if(e){if(e[0]==="*"){if(t.schemaDefined)return;e=t.attributes.map(r=>r.name)}return e.forceNulls=!0,e}}function $H(e,t){let r=no(e),n=rN(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},o;wt(i,()=>new Promise(u=>o=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],d;try{d=await r.get({id:u,lazy:s,select:n},i),d=d&&oS(d)}catch(f){d={message:(0,zH.errorToString)(f)}}return t?{value:{key:u,value:d}}:{value:d}}else return o(),{done:!0}},return(u){return o(),{value:u,done:!0}},throw(u){return o(),{done:!0}}}}}}function no(e){let t=e.database||e.schema||Eie,r=dt()[t];if(!r)throw(0,_i.handleHDBError)(new Error,hie.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function VH(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*KH(e,t,r,n){let s,i=0;for await(let o of e.getHistory(t,r)){let c=o.operation??o.type;c==="put"&&(c="upsert");let{id:l,version:u,value:d}=o;if(s?.timestamp===u)s.hash_values.push(l),s.records.push(d);else{if(s&&(yield s,i++,n&&n<=i)){s=void 0;break}s={operation:c,user_name:o.user,timestamp:u,hash_values:[l],records:[d]}}}s&&(yield s)}var YH,aS,_i,WH,Zw,eN,jH,zH,hie,Eie,_ie,gie,tN,QH=ie(()=>{YH=b(FH()),aS=b(Ed()),_i=b(ge());Oe();WH=b(Sp());$();Zw=b(sa()),eN=b(ms()),jH=b(ue());ec();Xw();zH=b(ee()),{HDB_ERROR_MSGS:hie}=_i.hdbErrors,Eie="data",_ie=1e4,gie=10,tN=class extends YH.default{static{a(this,"ResourceBridge")}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);let r=no(t);if(!r)throw new _i.ClientError(`Table ${t.table} not found`);t.conditions=t.conditions.map(n);function n(i){if("conditions"in i&&i.conditions)return i.conditions=i.conditions.map(n),i;{let o=i;return{attribute:o.attribute??o.search_attribute,comparator:o.comparator??o.search_type,value:o.value!==void 0?o.value:o.search_value}}}a(n,"mapCondition");let s=(0,aS.default)(t,"conditions");if(s)throw(0,_i.handleHDBError)(s,s.message,400,void 0,void 0,!0);return r.search({conditions:t.conditions,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:rN(t,r),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let o of n)o.is_primary_key?(o.isPrimaryKey=!0,delete o.is_primary_key):o.name===i&&i&&(o.isPrimaryKey=!0);else{if(!i)throw new _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}]}je({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await no(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=no(t);if(await r.removeAttributes([t.attribute]),!r.schemaDefined){let n=t.attribute,s,i=a((o,c,l)=>(c={...c},delete c[n],r.primaryStore.ifVersion(o,l,()=>r.primaryStore.put(o,c,l)).then(u=>{if(!u){let{value:d,version:f}=r.primaryStore.getEntry(o);return i(o,d,f)}})),"deleteRecord");for(let{key:o,value:c,version:l}of r.primaryStore.getRange({start:!0,versions:!0}))s=i(o,c,l),await new Promise(u=>setImmediate(u));await s}return`successfully deleted ${t.schema}.${t.table}.${t.attribute}`}dropTable(t){return no(t).dropTable()}createSchema(t){return gd({database:t.schema,table:null}),Zw.signalSchemaChange(new eN.SchemaEventMsg(process.pid,Y.CREATE_SCHEMA,t.schema))}async dropSchema(t){await nN(t.schema),Zw.signalSchemaChange(new eN.SchemaEventMsg(process.pid,Y.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,this.upsertRecords(t)}async upsertRecords(t){let{attributes:r}=(0,WH.default)(t),n,s=dt()[t.schema][t.table],i={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(i.replicateTo=t.replicateTo),t.replicatedConfirmation&&(i.replicatedConfirmation=t.replicatedConfirmation),wt(i,async o=>{if(!s.schemaDefined){n=[];for(let u of r)s.attributes.find(f=>f.name==u)||n.push(u);n.length>0&&await s.addAttributes(n.map(u=>({name:u,indexed:!0})))}let c=[],l=[];for(let u of t.records){let d=u[s.primaryKey],f=d!=null&&await s.get(d,i);if(t.requires_existing&&!f||t.requires_no_existing&&f){l.push(u[s.primaryKey]);continue}f&&(f=oS(f));for(let m in u)if(Object.prototype.hasOwnProperty.call(u,m)){let p=u[m];if(typeof p=="function")try{let h=p([[f]]);Array.isArray(h)&&(p=h[0].func_val,u[m]=p)}catch(h){throw h.message+="Trying to set key "+m+" on object"+JSON.stringify(u),h}}if(f)for(let m in f)Object.prototype.hasOwnProperty.call(u,m)||(u[m]=f[m]);await(d==null?s.create(u,i):s.put(u,i)),c.push(u[s.primaryKey])}return{txn_time:o.timestamp,written_hashes:c,new_attributes:n,skipped_hashes:l}})}async deleteRecords(t){let r=dt()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),wt(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),o=[],c=[];for(let l of i)await r.delete(l,n)?o.push(l):c.push(l);return VH(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=dt()[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:w_.LESS}]}),s=!1,i=[],o=[],c=0,l=[],u=a(async()=>{let d=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...d.deleted_hashes),o.push(...d.skipped_hashes),await(0,jH.asyncSetTimeout)(gie),l=[],s=!0},"chunkDelete");for await(let d of n)l.push(d[r.primaryKey]),c++,c%_ie===0&&await u();return l.length>0&&await u(),s?VH(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,aS.default)(t,"hashes");if(r)throw r;return $H(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of $H(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&bA[r]===void 0)throw new Error(`Value search comparator - ${r} - is not valid`);t.select!==void 0&&(t.get_attributes=t.select),t.search_attribute!==void 0&&(t.attribute=t.search_attribute),t.search_value!==void 0&&(t.value=t.search_value);let n=(0,aS.default)(t,"value");if(n)throw n;let s=no(t);if(!s)throw new _i.ClientError(`Table ${t.table} not found`);let i=t.value;i.includes?.("*")&&(i.startsWith("*")?i.endsWith("*")?i!=="*"&&(r="contains",i=i.slice(1,-1)):(r="ends_with",i=i.slice(1)):i.endsWith("*")&&(r="starts_with",i=i.slice(0,-1))),r===w_.BETWEEN&&(i=[i,t.end_value]);let o=i==="*"?[]:[{attribute:t.attribute,value:i,comparator:r}];return s.search({conditions:o,allowFullScan:!0,limit:t.limit,offset:t.offset,reverse:t.reverse,sort:t.sort,select:rN(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=no(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){no({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return no(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=no(t),n={};switch(t.search_type){case N_.HASH_VALUE:for(let s of t.search_values)n[s]=(await r.getHistoryOfRecord(s)).map(i=>{let o=i.operation??i.type;return o==="put"&&(o="upsert"),{operation:o,timestamp:i.version,user_name:i.user,hash_values:[s],records:[i.value]}});return n;case N_.USERNAME:{let s=t.search_values;for await(let i of KH(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n}default:return KH(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(rN,"getSelect");a($H,"getRecords");a(no,"getTable");a(VH,"createDeleteResponse");a(KH,"groupRecordsInHistory")});var Es=x((Ove,XH)=>{"use strict";var{ResourceBridge:Sie}=(QH(),P(JH)),Tie=fe();Tie.initSync();var cS;function yie(){return cS||(cS=new Sie,cS)}a(yie,"getBridge");XH.exports=yie()});var gi=x((Lve,tG)=>{var Rie=Ll(),{promisify:bie}=require("util"),{getDatabases:eG}=(Oe(),P(Et));tG.exports={setSchemaDataToGlobal:ZH,getTableSchema:Aie,getSystemSchema:Iie,setSchemaDataToGlobalAsync:bie(ZH)};function ZH(e){global.hdb_schema=eG(),e&&e()}a(ZH,"setSchemaDataToGlobal");function Aie(e,t,r){let n=eG()[e];if(!n)return r(`schema ${e} does not exist`);let s=n[t];return s?r(null,{schema:e,name:t,hash_attribute:s.primaryKey}):r(`table ${e}.${t} does not exist`)}a(Aie,"getTableSchema");function Iie(){return Rie}a(Iie,"getSystemSchema")});var _s=x((vve,iG)=>{"use strict";var uS=dF(),sn=ue(),wie=require("util"),dS=Es(),Nie=gi(),rG=ee(),{handleHDBError:xl,hdbErrors:Cie}=ge(),{HTTP_STATUS_CODES:Bl}=Cie,Oie=wie.promisify(Nie.getTableSchema),Pie="updated",nG="inserted",sG="upserted";iG.exports={insert:Die,update:vie,upsert:Mie,validation:Lie,flush:Uie};async function Lie(e){if(sn.isEmpty(e))throw new Error("invalid update parameters defined.");if(sn.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(sn.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await Oie(e.schema,e.table),r=uS(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let n=t.hash_attribute,s=new Set,i={},o=!1;return e.operation==="update"&&(o=!0),e.records.forEach(c=>{if(o&&sn.isEmptyOrZeroLength(c[n]))throw rG.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(!sn.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw rG.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!sn.isEmpty(c[n])&&c[n]!==""&&s.has(sn.autoCast(c[n]))&&(c.skip=!0),s.add(sn.autoCast(c[n]));for(let l in c)i[l]=1}),i[n]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(i)}}a(Lie,"validation");async function Die(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=uS(e);if(t)throw xl(new Error,t.message,Bl.BAD_REQUEST);sn.transformReq(e);let r=sn.checkSchemaTableExist(e.schema,e.table);if(r)throw xl(new Error,r,Bl.BAD_REQUEST);let n=await dS.createRecords(e);return lS(nG,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(Die,"insertData");async function vie(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=uS(e);if(t)throw xl(new Error,t.message,Bl.BAD_REQUEST);sn.transformReq(e);let r=sn.checkSchemaTableExist(e.schema,e.table);if(r)throw xl(new Error,r,Bl.BAD_REQUEST);let n=await dS.updateRecords(e);return sn.isEmpty(n.existing_rows)?lS(Pie,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):lS(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(vie,"updateData");async function Mie(e){if(e.operation!=="upsert")throw xl(new Error,"invalid operation, must be upsert",Bl.INTERNAL_SERVER_ERROR);let t=uS(e);if(t)throw xl(new Error,t.message,Bl.BAD_REQUEST);sn.transformReq(e);let r=sn.checkSchemaTableExist(e.schema,e.table);if(r)throw xl(new Error,r,Bl.BAD_REQUEST);let n=await dS.upsertRecords(e);return lS(sG,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(Mie,"upsertData");function lS(e,t,r,n,s,i){let o={message:`${e} ${t.length} of ${t.length+n.length} records`,new_attributes:s,txn_time:i};return e===nG?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===sG?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(lS,"returnObject");function Uie(e){return sn.transformReq(e),dS.flush(e.schema,e.table)}a(Uie,"flush")});var iN=x((Uve,cG)=>{var xie=ht(),sN=require("joi"),{hdbTable:Bie,hdbDatabase:oG}=ta(),aG={schema:oG,database:oG,table:Bie},Fie={date:sN.date().iso().required()},kie={timestamp:sN.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};cG.exports=function(e,t){let r=t==="timestamp"?{...aG,...kie}:{...aG,...Fie},n=sN.object(r);return xie.validateBySchema(e,n)}});var dG=x((xve,uG)=>{var Hie=ht(),oN=require("joi"),{hdbTable:Gie,hdbDatabase:lG}=ta(),qie=oN.object({schema:lG,database:lG,table:Gie,hash_values:oN.array().required(),ids:oN.array()});uG.exports=function(e){return Hie.validateBySchema(e,qie)}});var uN=x((Bve,fG)=>{"use strict";var aN=class{static{a(this,"InsertObject")}constructor(t,r,n,s,i){this.operation=t,this.schema=r,this.table=n,this.hash_attribute=s,this.records=i}},cN=class{static{a(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,o){this.schema=t,this.table=r,this.attribute=n,this.hash_attribute=s,this.get_attributes=i,this.value=o}},lN=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};fG.exports={InsertObject:aN,NoSQLSeachObject:cN,DeleteResponseObject:lN}});var Hl=x((kve,_G)=>{"use strict";var pG=iN(),$ie=dG(),Fl=ue(),mG=require("moment"),hG=ee(),{promisify:Vie,callbackify:Kie}=require("util"),kl=($(),P(z)),Yie=gi(),dN=Vie(Yie.getTableSchema),fN=Es(),{DeleteResponseObject:Wie}=uN(),{handleHDBError:fc,hdbErrors:jie}=ge(),{HDB_ERROR_MSGS:fS,HTTP_STATUS_CODES:mc}=jie,zie="records successfully deleted",Jie=Kie(EG);_G.exports={delete:Jie,deleteRecord:EG,deleteFilesBefore:Qie,deleteAuditLogsBefore:Xie};async function Qie(e){let t=pG(e,"date");if(t)throw fc(t,t.message,mc.BAD_REQUEST,void 0,void 0,!0);if(Fl.transformReq(e),!mG(e.date,mG.ISO_8601).isValid())throw fc(new Error,fS.INVALID_DATE,mc.BAD_REQUEST,kl.LOG_LEVELS.ERROR,fS.INVALID_DATE,!0);let n=Fl.checkSchemaTableExist(e.schema,e.table);if(n)throw fc(new Error,n,mc.NOT_FOUND,kl.LOG_LEVELS.ERROR,n,!0);let s=await fN.deleteRecordsBefore(e);if(await dN(e.schema,e.table),hG.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(Qie,"deleteFilesBefore");async function Xie(e){let t=pG(e,"timestamp");if(t)throw fc(t,t.message,mc.BAD_REQUEST,void 0,void 0,!0);if(Fl.transformReq(e),isNaN(e.timestamp))throw fc(new Error,fS.INVALID_VALUE("Timestamp"),mc.BAD_REQUEST,kl.LOG_LEVELS.ERROR,fS.INVALID_VALUE("Timestamp"),!0);let r=Fl.checkSchemaTableExist(e.schema,e.table);if(r)throw fc(new Error,r,mc.NOT_FOUND,kl.LOG_LEVELS.ERROR,r,!0);let n=await fN.deleteAuditLogsBefore(e);return await dN(e.schema,e.table),hG.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(Xie,"deleteAuditLogsBefore");async function EG(e){e.ids&&(e.hash_values=e.ids);let t=$ie(e);if(t)throw fc(t,t.message,mc.BAD_REQUEST,void 0,void 0,!0);Fl.transformReq(e);let r=Fl.checkSchemaTableExist(e.schema,e.table);if(r)throw fc(new Error,r,mc.NOT_FOUND,kl.LOG_LEVELS.ERROR,r,!0);try{await dN(e.schema,e.table);let n=await fN.deleteRecords(e);return Fl.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${zie}`),n}catch(n){if(n.message===kl.SEARCH_NOT_FOUND_MESSAGE){let s=new Wie;return s.message=kl.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(EG,"deleteRecord")});var _N={};Re(_N,{HASH_FUNCTION:()=>Kr,hash:()=>hN,validate:()=>EN});function mN(e=Up){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(Mp.randomBytes(e)).map(r=>t[r%t.length]).join("")}function hN(e,t=Kr[SG?.toUpperCase()]??Kr.SHA256){return pN[t](e)}function EN(e,t,r=Kr[SG?.toUpperCase()]??Kr.SHA256){return e?Zie[r](e,t):!1}var Mp,Sd,gG,SG,Up,TG,Kr,pN,Zie,gN=ie(()=>{Mp=b(require("node:crypto")),Sd=b(require("argon2")),gG=b(fe());$();SG=(0,gG.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),Up=16,TG=9,Kr={MD5:"md5",SHA256:"sha256",ARGON2ID:"argon2id"};a(mN,"generateSalt");pN={[Kr.MD5]:(e,t=void 0)=>{t=t??mN(TG);let r=Mp.createHash(Kr.MD5).update(e+t).digest("hex");return t+r},[Kr.SHA256]:(e,t=void 0)=>{t=t??mN(Up);let r=Mp.createHash(Kr.SHA256).update(e+t).digest("hex");return t+r},[Kr.ARGON2ID]:async e=>{let t=mN(Up),r=await Sd.hash(e,{type:Sd.argon2id,salt:Buffer.from(t)});return t+r}},Zie={[Kr.MD5]:(e,t)=>{let r=e.slice(0,TG);return e===pN[Kr.MD5](t,r)},[Kr.SHA256]:(e,t)=>{let r=e.slice(0,Up);return e===pN[Kr.SHA256](t,r)},[Kr.ARGON2ID]:async(e,t)=>await Sd.verify(e.slice(Up),t)};a(hN,"hash");a(EN,"validate")});var RG=x(($ve,yG)=>{var SN=ht(),Sn={username:{presence:!0,exclusion:{within:["system"],message:"You cannot create tables within the system schema"}},password:{presence:!0},role:{presence:!0,format:"[\\w\\-\\_]+"},active:{presence:!0,inclusion:{within:[!0,!1],message:"must be a boolean"}}};function eoe(e){return Sn.password.presence=!0,Sn.username.presence=!0,Sn.role.presence=!0,Sn.active.presence=!0,SN.validateObject(e,Sn)}a(eoe,"addUserValidation");function toe(e){return Sn.password.presence=!1,Sn.username.presence=!0,Sn.role.presence=!1,Sn.active.presence=!1,SN.validateObject(e,Sn)}a(toe,"alterUserValidation");function roe(e){return Sn.password.presence=!1,Sn.username.presence=!0,Sn.role.presence=!1,Sn.active.presence=!1,SN.validateObject(e,Sn)}a(roe,"dropUserValidation");yG.exports={addUserValidation:eoe,alterUserValidation:toe,dropUserValidation:roe}});var UG=x((Kve,MG)=>{"use strict";var TN=require("recursive-iterator"),noe=require("alasql"),yN=require("clone"),bG=ue(),{handleHDBError:AG,hdbErrors:soe}=ge(),{HDB_ERROR_MSGS:IG,HTTP_STATUS_CODES:wG}=soe,{getDatabases:ioe}=(Oe(),P(Et)),ooe=["DISTINCT_ARRAY"],NG=Symbol("validateTables"),RN=Symbol("validateTable"),CG=Symbol("validateAllColumns"),mS=Symbol("findColumn"),OG=Symbol("validateOrderBy"),xp=Symbol("validateSegment"),bN=Symbol("validateColumn"),PG=Symbol("setColumnsForTable"),LG=Symbol("checkColumnsForAsterisk"),DG=Symbol("validateGroupBy"),vG=Symbol("hasColumns"),AN=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[NG](),this[LG](),this[CG]()}[NG](){if(this[vG]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[RN](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[RN](t.table)})}}[vG](){let t=!1,r=new TN(this.statement);for(let{node:n}of r)if(n&&n.columnid){t=!0;break}return t}[RN](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=ioe();if(!r[t.databaseid])throw AG(new Error,IG.SCHEMA_NOT_FOUND(t.databaseid),wG.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw AG(new Error,IG.TABLE_NOT_FOUND(t.databaseid,t.tableid),wG.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=yN(s);i.table=yN(t),this.attributes.push(i)})}[mS](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)}[LG](){let t=new TN(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[PG](r.tableid)}[PG](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new noe.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[CG](){this[xp](this.statement.columns,!1),this[xp](this.statement.joins,!1),this[xp](this.statement.where,!1),this[DG](this.statement.group,!1),this[xp](this.statement.order,!0)}[xp](t,r){if(!t)return;let n=new TN(t),s=[];for(let{node:i}of n)!bG.isEmpty(i)&&!bG.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[OG](i):s.push(this[bN](i)));return s}[DG](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&ooe.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=yN(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[mS](n)[0];s&&r.push(s)}}}),this.statement.group.forEach(n=>{let s=null;if(!n.columnid)r.forEach((i,o)=>{if(i.toString()===n.toString()){s=i,r.splice(o,1);return}});else{let i=this[mS](n);if(!i||i.length===0)throw`unknown column '${n.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${n.toString()}' in group by`;r.forEach((o,c)=>{if(o.attribute===i[0].attribute&&o.table.tableid===i[0].table.tableid){s=o,r.splice(c,1);return}})}if(!s)throw`group by column '${n.toString()}' must be in select`}),r.length>0)throw`select column '${r[0].attribute?r[0].attribute:r[0].toString()}' must be in group by`}[OG](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[bN](t)}[bN](t){let r=this[mS](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]}};MG.exports=AN});var kG=x((Wve,FG)=>{"use strict";var xG=require("lodash"),Bp=require("mathjs"),aoe=require("jsonata"),BG=ue();FG.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?xG.uniqWith(e,xG.isEqual):e,"distinct_array"),searchJSON:coe,mad:Fp.bind(null,Bp.mad),mean:Fp.bind(null,Bp.mean),mode:Fp.bind(null,Bp.mode),prod:Fp.bind(null,Bp.prod),median:Fp.bind(null,Bp.median)};function Fp(e,t,r,n){return n===1?t==null?[]:[t]:n===2?(t!=null&&r.push(t),r):r!=null&&r.length>0?e(r):null}a(Fp,"aggregateFunction");function coe(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(BG.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),BG.isEmpty(this.__ala__.res[r])){let n=aoe(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(coe,"searchJSON")});var GG=x((zve,HG)=>{"use strict";var Er=require("moment"),IN="YYYY-MM-DDTHH:mm:ss.SSSZZ";Er.suppressDeprecationWarnings=!0;HG.exports={current_date:a(()=>Er().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>Er().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return Er(e).utc().format("YYYY");case"month":return Er(e).utc().format("MM");case"day":return Er(e).utc().format("DD");case"hour":return Er(e).utc().format("HH");case"minute":return Er(e).utc().format("mm");case"second":return Er(e).utc().format("ss");case"millisecond":return Er(e).utc().format("SSS");default:break}},"extract"),date:a(e=>Er(e).utc().format(IN),"date"),date_format:a((e,t)=>Er(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>Er(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>Er(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=Er(e).utc(),s=Er(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>Er().utc().valueOf(),"now"),get_server_time:a(()=>Er().format(IN),"get_server_time"),offset_utc:a((e,t)=>Er(e).utc().utcOffset(t).format(IN),"offset_utc")}});var KG=x((Qve,VG)=>{"use strict";var loe=require("@turf/area"),uoe=require("@turf/length"),doe=require("@turf/circle"),foe=require("@turf/difference"),moe=require("@turf/distance"),poe=require("@turf/boolean-contains"),hoe=require("@turf/boolean-equal"),Eoe=require("@turf/boolean-disjoint"),_oe=require("@turf/helpers"),qG=($(),P(z)),Ze=ue(),aa=ee();VG.exports={geoArea:goe,geoLength:Soe,geoCircle:Toe,geoDifference:yoe,geoDistance:$G,geoNear:Roe,geoContains:boe,geoEqual:Aoe,geoCrosses:Ioe,geoConvert:woe};function goe(e){if(Ze.isEmpty(e))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return loe.default(e)}catch(t){return aa.trace(t,e),NaN}}a(goe,"geoArea");function Soe(e,t){if(Ze.isEmpty(e))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return uoe.default(e,{units:t||"kilometers"})}catch(r){return aa.trace(r,e),NaN}}a(Soe,"geoLength");function Toe(e,t,r){if(Ze.isEmpty(e))return NaN;if(Ze.isEmpty(t))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return doe.default(e,t,{units:r||"kilometers"})}catch(n){return aa.trace(n,e,t),NaN}}a(Toe,"geoCircle");function yoe(e,t){if(Ze.isEmpty(e))return NaN;if(Ze.isEmpty(t))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return foe(e,t)}catch(r){return aa.trace(r,e,t),NaN}}a(yoe,"geoDifference");function $G(e,t,r){if(Ze.isEmpty(e))return NaN;if(Ze.isEmpty(t))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return moe.default(e,t,{units:r||"kilometers"})}catch(n){return aa.trace(n,e,t),NaN}}a($G,"geoDistance");function Roe(e,t,r,n){if(Ze.isEmpty(e)||Ze.isEmpty(t))return!1;if(Ze.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return $G(e,t,n)<=r}catch(s){return aa.trace(s,e,t),!1}}a(Roe,"geoNear");function boe(e,t){if(Ze.isEmpty(e)||Ze.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return poe.default(e,t)}catch(r){return aa.trace(r,e,t),!1}}a(boe,"geoContains");function Aoe(e,t){if(Ze.isEmpty(e)||Ze.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return hoe.default(e,t)}catch(r){return aa.trace(r,e,t),!1}}a(Aoe,"geoEqual");function Ioe(e,t){if(Ze.isEmpty(e)||Ze.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ze.autoCastJSON(e)),typeof t=="string"&&(t=Ze.autoCastJSON(t));try{return!Eoe.default(e,t)}catch(r){return aa.trace(r,e,t),!1}}a(Ioe,"geoCrosses");function woe(e,t,r){if(Ze.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ze.isEmpty(t))throw new Error("geo_type is required");if(Ze.isEmpty(qG.GEO_CONVERSION_ENUM[t]))throw new Error(`geoType of ${t} is invalid please use one of the following types: ${Object.keys(qG.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ze.autoCastJSON(e)),_oe[t](e,r)}a(woe,"geoConvert")});var pS=x((Zve,YG)=>{var Gl=kG(),gs=GG(),so=KG();YG.exports=e=>{e.aggr.mad=e.aggr.MAD=Gl.mad,e.aggr.mean=e.aggr.MEAN=Gl.mean,e.aggr.mode=e.aggr.MODE=Gl.mode,e.aggr.prod=e.aggr.PROD=Gl.prod,e.aggr.median=e.aggr.MEDIAN=Gl.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Gl.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Gl.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=gs.current_date,e.fn.current_time=e.fn.CURRENT_TIME=gs.current_time,e.fn.extract=e.fn.EXTRACT=gs.extract,e.fn.date=e.fn.DATE=gs.date,e.fn.date_format=e.fn.DATE_FORMAT=gs.date_format,e.fn.date_add=e.fn.DATE_ADD=gs.date_add,e.fn.date_sub=e.fn.DATE_SUB=gs.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=gs.date_diff,e.fn.now=e.fn.NOW=gs.now,e.fn.offset_utc=e.fn.OFFSET_UTC=gs.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=gs.get_server_time,e.fn.getdate=e.fn.GETDATE=gs.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=gs.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=so.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=so.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=so.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=so.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=so.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=so.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=so.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=so.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=so.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=so.geoNear}});var JG=x((eMe,zG)=>{"use strict";var kp=require("lodash"),Yn=require("alasql");Yn.options.cache=!1;var Noe=pS(),WG=require("clone"),hS=require("recursive-iterator"),Ke=ee(),ot=ue(),Td=Es(),Coe=($(),P(z)),{hdbErrors:Ooe}=ge(),{getDatabases:jG}=(Oe(),P(Et)),Poe="IS NULL",Si="There was a problem performing this search. Please check the logs and try again.";Noe(Yn);var wN=class{static{a(this,"SQLSearch")}constructor(t,r){if(ot.isEmpty(t))throw Ke.error("AST statement for SQL select process cannot be empty"),"statement cannot be null";this.statement=t,this.columns={},this.all_table_attributes=r,this.fetch_attributes=[],this.exact_search_values={},this.comparator_search_values={},this.tables=[],this.data={},this.has_aggregator=!1,this.has_ordinal=!1,this.has_outer_join=!1,this._getColumns(),this._getTables(),this._conditionsToFetchAttributeValues(),this._setAliasesForColumns(),ot.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!ot.isEmptyOrZeroLength(n))return Ke.trace("No results returned from checkEmptySQL SQLSearch method."),n}catch(n){throw Ke.error("Error thrown from checkEmptySQL in SQLSearch class method search."),Ke.error(n),new Error(Si)}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(Si)}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(Si)}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(Si)}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(Si)}}_getColumns(){let t=new hS(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(WG(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=kp.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=jG()[r.databaseid][r.tableid].primaryKey,this.data[n].__mergedData={},this.data[n].__mergedAttributes=[],this.data[n].__mergedAttrMap={}})}_conditionsToFetchAttributeValues(){if(ot.isEmpty(this.statement.where)){Ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new hS(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!ot.isEmpty(r)&&r.right)if(ot.isNotEmptyAndHasValue(r.right.value)){let n=ot.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new Yn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=ot.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new Yn.yy.LogicValue({value:i}):n instanceof Yn.yy.StringValue&&ot.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Yn.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 hS(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let n=new Set,s=r.left.columnid?r.left:r.right,i=this._findColumn(s);if(!i)continue;let o=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!ot.isEmpty(Coe.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(ot.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(ot.isEmptyOrZeroLength(r.left.columnid)||ot.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[o].ignore=!0,this.comparator_search_values[o].comparators=[];continue}this.comparator_search_values[o].comparators.push({attribute:r.left.columnid,operation:r.op,value:r.right.value})}continue}if(ot.isEmpty(this.exact_search_values[o])&&(this.exact_search_values[o]={ignore:!1,values:new Set}),!this.exact_search_values[o].ignore){let c=!1;switch(r.op){case"=":!ot.isEmpty(r.right.value)||!ot.isEmpty(r.left.value)?n.add(ot.isEmpty(r.right.value)?r.left.value:r.right.value):c=!0;break;case"IN":let l=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<l.length;u++)if(l[u].value)n.add(l[u].value);else{c=!0;break}break;default:c=!0;break}this.exact_search_values[o].ignore=c,c?this.exact_search_values[o].values=new Set:this.exact_search_values[o].values=new Set([...this.exact_search_values[o].values,...n])}}}_setAliasesForColumns(){if(ot.isEmptyOrZeroLength(this.all_table_attributes)&&ot.isEmptyOrZeroLength(this.statement.from)&&ot.isEmptyOrZeroLength(this.columns.columns))return;let t=[],r={};this.statement.columns.forEach((n,s)=>{if(n.columnid==="*"){t.push(s);return}if(n.aggregatorid&&(this.has_aggregator=!0),!n.aggregatorid&&!n.funcid)if(n.as_orig=n.as?n.as:n.columnid,this.statement.joins)if(r[n.as_orig]>=0){let i=r[n.as_orig]+1;n.as=`[${n.as_orig+i}]`,r[n.as_orig]=i}else n.as=`[${n.as_orig}]`,r[n.as_orig]=0;else n.as=`[${n.as_orig}]`;!n.aggregatorid&&n.funcid&&n.args&&(n.as_orig=n.as?n.as:n.toString().replace(/'/g,'"'),n.as=`[${n.as_orig}]`),n.aggregatorid&&n.expression.columnid!=="*"&&(n.as_orig=n.as?n.as:n.expression.tableid?`${n.aggregatorid}(${n.expression.tableid}.${n.expression.columnid})`:`${n.aggregatorid}(${n.expression.columnid})`,n.as=`[${n.as_orig}]`)}),this.statement.columns.length>1&&t.length>0&&kp.pullAt(this.statement.columns,t)}_findColumn(t){let r=this.all_table_attributes.filter(n=>{if(t.columnid_orig&&t.tableid_orig)return(n.table.as===t.tableid_orig||n.table.tableid===t.tableid_orig)&&n.attribute===t.columnid_orig;if(t.tableid)return(n.table.as===t.tableid||n.table.tableid===t.tableid)&&n.attribute===t.columnid;let s=t.columnid_orig?t.columnid_orig:t.columnid;return n.attribute===s});if(ot.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);ot.isEmptyOrZeroLength(n)||(r=this.all_table_attributes.filter(s=>s.attribute===n[0].columnid&&n[0].tableid&&n[0].tableid===(s.table.as?s.table.as:s.table.tableid)))}return r[0]}async _checkEmptySQL(){let t=[];if(ot.isEmptyOrZeroLength(this.all_table_attributes)&&!ot.isEmptyOrZeroLength(this.columns.columns))return t;if(ot.isEmptyOrZeroLength(this.all_table_attributes)&&ot.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await Yn.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(WG(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__mergedAttributes.push(r),this.data[t].__mergedAttrMap[r]=this.data[t].__mergedAttributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__mergedData[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__mergedAttrMap[n];this.data[t].__mergedData[r].splice(i,1,s)}async _getFetchAttributeValues(){if(ot.isEmptyOrZeroLength(Object.keys(this.columns)))return[];this._addFetchColumns(this.columns.joins);let t=null;try{t=this.statement.where?this.statement.where.toString():""}catch{throw new Error("Could not generate proper where clause")}this.columns.where&&this._addFetchColumns(this.columns.where);let r=this._isSimpleSelect();if(r?this._addFetchColumns(this.columns.columns):(!this.columns.where&&this.fetch_attributes.length===0)|t.indexOf(Poe)>-1&&this.tables.forEach(s=>{let i={columnid:jG()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=kp.uniqBy(this.fetch_attributes,s=>[s.table.databaseid,s.table.as?s.table.as:s.table.tableid,s.attribute].join()),r)return await this._simpleSQLQuery();let n=this.fetch_attributes.reduce((s,i)=>{let o=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,c=this.data[o].__hashName;return s[o]||(s[o]=[],s[o].push(null),this._addColumnToMergedAttributes(o,c)),i.attribute!==c&&(s[o].push(null),this._addColumnToMergedAttributes(o,i.attribute)),s},{});for(let s of this.fetch_attributes){let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,o=this.data[i].__hashName,c={schema:s.table.databaseid,table:s.table.tableid,get_attributes:[s.attribute]},l=!1,u=[s.table.databaseid,s.table.tableid,s.attribute].join("/");if(s.attribute===o&&(l=!0),!ot.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!ot.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let d=await Td.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(Si)}else try{c.attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async d=>{let f={...c};f.value=d;let m=await Td.getDataByValue(f);for(let[p,h]of m)this.data[i].__mergedData[p]?this._updateMergedAttribute(i,p,s.attribute,h[s.attribute]):(this.data[i].__mergedData[p]=[...n[i]],this._updateMergedAttribute(i,p,s.attribute,h[s.attribute]),this._setMergedHashAttribute(i,p))}))}catch(d){throw Ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),Ke.error(d),new Error(Si)}else if(!ot.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!ot.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let d=this.comparator_search_values[u].comparators;for(let f=0,m=d.length;f<m;f++){let p=d[f];c.attribute=p.attribute,c.value=p.value;let h=await Td.getDataByValue(c,p.operation);if(l)for(let[E]of h)this.data[i].__mergedData[E]||(this.data[i].__mergedData[E]=[...n[i]],this._setMergedHashAttribute(i,E));else for(let[E,_]of h)this.data[i].__mergedData[E]?this._updateMergedAttribute(i,E,s.attribute,_[s.attribute]):(this.data[i].__mergedData[E]=[...n[i]],this._updateMergedAttribute(i,E,s.attribute,_[s.attribute]),this._setMergedHashAttribute(i,E))}}catch(d){throw Ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),Ke.error(d),new Error(Si)}else try{c.attribute=s.attribute,c.value="*";let d=await Td.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(Si)}}}_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 Yn.yy.Column||(t=!1)}),t)}_updateOrderByToAliases(){this.statement.order.forEach(t=>{if(t.expression.aggregatorid){t.is_aggregator=!0;return}if(t.expression.value){t.is_ordinal=!0,this.has_ordinal=!0;return}else t.is_ordinal=!1;let r=this.statement.columns.filter(s=>{let i=s.aggregatorid?s.expression:s,o=s.aggregatorid?s.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===o});r[0]||r.push(this._findColumn(t.expression));let n=r[0];if(t.is_func=!!n.funcid,t.is_aggregator=!!n.aggregatorid,n.as)if(n.as&&!t.expression.tableid)t.expression.columnid=n.as,t.expression.columnid_orig=n.as_orig;else{let s=new Yn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Yn.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 Yn.yy.FuncValue:new Yn.yy.Column;t.initial_select_column=Object.assign(s,n)}})}_addNonAggregatorsToFetchColumns(){let r=this.statement.order.filter(n=>!n.is_aggregator&&!n.is_ordinal).map(n=>n.is_func?{columnid:n.initial_select_column.args.filter(i=>!!i.columnid_orig)[0].columnid_orig}:{columnid:n.expression.columnid_orig});this._addFetchColumns(r)}async _processJoins(){let t=[],r=[],n=this.statement.from[0],s=[n],i=["? "+(n.as?" AS "+n.as:n.tableid)];t.push(Object.values(this.data[`${n.databaseid_orig}_${n.as?n.as_orig:n.tableid_orig}`].__mergedData)),this.statement.joins&&this.statement.joins.forEach(p=>{p.joinmode&&p.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(p.table);let h=p.joinmode+" JOIN ? AS "+(p.as?p.as:p.table.tableid);p.on&&(h+=" ON "+p.on.toString()),i.push(h),t.push(Object.values(this.data[`${p.table.databaseid_orig}_${p.table.as?p.table.as_orig:p.table.tableid_orig}`].__mergedData))});let o=[],c={};s.forEach(p=>{let h=this.data[`${p.databaseid_orig}_${p.as?p.as_orig:p.tableid_orig}`].__hashName,E=p.as?p.as_orig:p.tableid_orig;o.push({key:`'${E}.${h}'`,schema:p.databaseid_orig,table:p.as?p.as_orig:p.tableid_orig,keys:new Set}),r.push(`${p.as?p.as:p.tableid}.\`${h}\` AS "${E}.${h}"`),c[p.as?p.as_orig:p.tableid_orig]=this.data[`${p.databaseid_orig}_${p.as?p.as_orig:p.tableid_orig}`].__mergedAttributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(p=>{p.is_func?r.push(p.initial_select_column.toString()):p.initial_select_column.tableid?r.push(`${p.initial_select_column.tableid}.${p.initial_select_column.columnid} AS ${p.expression.columnid}`):r.push(`${p.initial_select_column.columnid} AS ${p.expression.columnid}`)}));let d="",f="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(d=this.statement.limit?"LIMIT "+this.statement.limit:"",f=this.statement.offset?"OFFSET "+this.statement.offset:"");let m=[];try{let p=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${d} ${f}`,h=this._convertColumnsToIndexes(p,s);m=await Yn.promise(h,t),t=null}catch(p){throw Ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),Ke.error(p),new Error("There was a problem processing the data.")}if(m&&m.length>0){for(let p=0,h=m.length;p<h;p++){let E=m[p];o.forEach(_=>{E[_.key]!==null&&E[_.key]!==void 0&&_.keys.add(E[_.key])})}o.forEach(p=>{let h=Object.keys(this.data[`${p.schema}_${p.table}`].__mergedData),E=kp.difference(h,[...p.keys].map(_=>_.toString()));for(let _=0,R=E.length;_<R;_++){let S=E[_];delete this.data[`${p.schema}_${p.table}`].__mergedData[S]}})}return{existing_attributes:c,joined_length:m?m.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new hS(this.columns);for(let{node:i}of s)if(i&&i.columnid){let o=this._findColumn(i);if(o){let c=o.table.as?o.table.as:o.table.tableid;(!t[c]||t[c].indexOf(o.attribute)<0)&&n.push(o)}}n=kp.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(Si)}}async _getData(t){try{let r=t.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]?n[i].columns.push(s.attribute):n[i]={schema:s.table.databaseid,table:s.table.tableid,columns:[s.attribute]},n},{});for(let n in r){let s=r[n],i=this.data[n].__mergedData,o=[];for(let d in i)o.push(i[d][0]);this.data[n].__mergedAttributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:o,get_attributes:s.columns},l=await Td.getDataByHash(c),u=s.columns.length;for(let d=0,f=o.length;d<f;d++){let m=o[d],p=l.get(m);for(let h=0;h<u;h++){let E=s.columns[h],_=p[E]===void 0?null:p[E];this.data[n].__mergedData[m].push(_)}}}}catch(r){throw Ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),Ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__mergedData)),r.as=r.as?r.as:r.tableid,r.databaseid="",r.tableid="?",this.statement.joins&&this.statement.joins.forEach(s=>{s.as=s.as?s.as:s.table.tableid,t.push(Object.values(this.data[`${s.table.databaseid_orig}_${s.table.as?s.table.as_orig:s.table.tableid_orig}`].__mergedData)),s.table.databaseid="",s.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(s=>{if(s.is_ordinal)return;this.statement.columns.filter(o=>{let c=o.aggregatorid?o.expression:o,l=o.aggregatorid?o.as_orig:c.as_orig;return s.expression.tableid?c.columnid_orig===s.expression.columnid_orig&&c.tableid_orig===s.expression.tableid_orig:c.columnid_orig===s.expression.columnid_orig||s.expression.columnid_orig===l}).length===0&&(s.expression.columnid=s.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&this.statement.limit&&!this.statement.joins&&(delete this.statement.limit,delete this.statement.offset);let n;try{let s=this._buildSQL();Ke.trace(`Final SQL: ${s}`),n=await Yn.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(Ooe.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),Ke.trace(r.stack),t}}_buildSQL(t=!0){let r=this.statement.toString();return r=r.replace(/NOT\(NULL\)/g,"NOT NULL"),this.statement.columns.forEach(n=>{if(n.funcid&&n.as){let s=n.toString().replace(" AS "+n.as,"");r=r.replace(n.toString(),s)}}),t===!0?this._convertColumnsToIndexes(r,this.tables):r}_convertColumnsToIndexes(t,r){let n=t,s={};r.forEach(i=>{i.databaseid_orig?s[`${i.databaseid_orig}_${i.as?i.as_orig:i.tableid_orig}`]=i.as?i.as:i.tableid:s[`${i.databaseid}_${i.as?i.as:i.tableid}`]=`\`${i.as?i.as:i.tableid}\``});for(let i in this.data)this.data[i].__mergedAttributes.forEach((o,c)=>{let l=s[i],u=new RegExp(`${l}.\`${o}\``,"g"),d=`${l}.[${c}]`;n=n.replace(u,d)});for(let i in this.data)this.data[i].__mergedAttributes.forEach((o,c)=>{let l=new RegExp(`\`${o}\``,"g"),u=`[${c}]`;n=n.replace(l,u)});return n}async _simpleSQLQuery(){let t=this.statement.columns.reduce((n,s)=>(s.as_orig&&s.as_orig!=s.columnid_orig?n[s.columnid_orig]=s.as_orig:n[s.columnid_orig]||(n[s.columnid_orig]=s.columnid_orig),n),{}),r=this.fetch_attributes.reduce((n,s)=>{let i=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`;return n[i]||(n[i]={}),n[i][t[s.attribute]]=null,n},{});for(let n of this.fetch_attributes){let s=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,i={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]};try{i.attribute=n.attribute,i.value="*";let o=await Td.getDataByValue(i);for(let[c,l]of o)this.data[s].__mergedData[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__mergedData[c]={...r[s]}),this.data[s].__mergedData[c][t[n.attribute]]=l[n.attribute]??null}catch(o){throw Ke.error("There was an error when processing this SQL operation. Check your logs"),Ke.error(o),new Error(Si)}}return Object.values(Object.values(this.data)[0].__mergedData)}};zG.exports=wN});var Wn=x((rMe,QG)=>{"use strict";QG.exports={searchByConditions:Loe,searchByHash:Doe,searchByValue:voe,search:Moe};var NN=Es(),{transformReq:CN}=ue();async function Loe(e){return CN(e),NN.searchByConditions(e)}a(Loe,"searchByConditions");async function Doe(e){CN(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of NN.searchByHash(e))r&&t.push(r);return t}a(Doe,"searchByHash");async function voe(e){CN(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of NN.searchByValue(e))t.push(r);return t}a(voe,"searchByValue");function Moe(e,t){try{let r=UG(),n=JG(),s=new r(e);s.validate(),new n(s.statement,s.attributes).search().then(o=>{t(null,o)}).catch(o=>{t(o,null)})}catch(r){return t(r)}}a(Moe,"search")});var ca=x((sMe,tq)=>{"use strict";var Hp=require("crypto"),Uoe=fe(),{CONFIG_PARAMS:xoe}=($(),P(z)),ZG="aes-256-cbc",Boe=32,Foe=16,ON=64,eq=32,koe=ON+eq,XG=new Map;tq.exports={encrypt:Hoe,decrypt:Goe,createNatsTableStreamName:qoe};function Hoe(e){let t=Hp.randomBytes(Boe),r=Hp.randomBytes(Foe),n=Hp.createCipheriv(ZG,Buffer.from(t),r),s=n.update(e);s=Buffer.concat([s,n.final()]);let i=t.toString("hex"),o=r.toString("hex"),c=s.toString("hex");return i+o+c}a(Hoe,"encrypt");function Goe(e){let t=e.substr(0,ON),r=e.substr(ON,eq),n=e.substr(koe,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=Hp.createDecipheriv(ZG,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(Goe,"decrypt");function qoe(e,t){let r=Uoe.get(xoe.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=XG.get(r);return n||(n=Hp.createHash("md5").update(r).digest("hex"),XG.set(r,n)),n}a(qoe,"createNatsTableStreamName")});var _r=x((oMe,nq)=>{"use strict";var $oe="nats-server.zip",PN="nats-server",Voe=process.platform==="win32"?`${PN}.exe`:PN,Koe=/^[^\s.,*>]+$/,rq="__request__",Yoe=a(e=>`${e}.${rq}`,"REQUEST_SUBJECT"),Woe={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},joe={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},zoe={HUB:"hub.pid",LEAF:"leaf.pid"},Joe={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},Qoe={SUCCESS:"success",ERROR:"error"},Xoe={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},Zoe={TXN:"txn",MSGID:"msgid"},yd={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},eae={[yd.ERR]:1,[yd.WRN]:2,[yd.INF]:3,[yd.DBG]:4,[yd.TRC]:5},tae={debug:"-D",trace:"-DVV"};nq.exports={NATS_SERVER_ZIP:$oe,NATS_SERVER_NAME:PN,NATS_BINARY_NAME:Voe,PID_FILES:zoe,NATS_CONFIG_FILES:joe,SERVER_SUFFIX:Joe,NATS_TERM_CONSTRAINTS_RX:Koe,REQUEST_SUFFIX:rq,UPDATE_REMOTE_RESPONSE_STATUSES:Qoe,CLUSTER_STATUS_STATUSES:Xoe,REQUEST_SUBJECT:Yoe,SUBJECT_PREFIXES:Zoe,MSG_HEADERS:Woe,LOG_LEVELS:yd,LOG_LEVEL_FLAGS:tae,LOG_LEVEL_HIERARCHY:eae}});var Ri={};Re(Ri,{ACTIVE_BOOLEAN:()=>uq,ALTERUSER_NOTHING_TO_UPDATE:()=>aq,EMPTY_PASSWORD:()=>cq,EMPTY_ROLE:()=>lq,USERNAME_REQUIRED:()=>oq,addUser:()=>FN,alterUser:()=>kN,dropUser:()=>HN,findAndValidateUser:()=>bd,getClusterUser:()=>mae,getSuperUser:()=>$p,getUsersWithRolesCache:()=>fae,listUsers:()=>gS,listUsersExternal:()=>qN,setUsersWithRolesCache:()=>yi,userInfo:()=>GN});async function FN(e){let t=mq.cleanAttributes(e,pq),r=fq.addUserValidation(t);if(r)throw new Ti(r.message);let n=await qp.searchByValue({schema:"system",table:"hdb_role",attribute:"role",value:t.role,get_attributes:["id","permission","role"]});if(!n||n.length<1)throw new Ti(Rd.ROLE_NAME_NOT_FOUND(t.role),la.NOT_FOUND);if(n.length>1)throw new Ti(Rd.DUP_ROLES_FOUND(t.role),la.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=xN.encrypt(t.password)),t.password=await Gp.hash(t.password,ES),t.hash_function=ES,t.role=n[0].id;let s=await dq.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(UN.debug(s),await yi(),s.skipped_hashes.length===1)throw new Ti(Rd.USER_ALREADY_EXISTS(t.username),la.CONFLICT);return await MN.signalUserChange(new BN(process.pid)),`${t.username} successfully added`}async function kN(e){let t=mq.cleanAttributes(e,pq);if(io.isEmptyOrZeroLength(t.username))throw new Error(oq);if(io.isEmptyOrZeroLength(t.password)&&io.isEmptyOrZeroLength(t.role)&&io.isEmptyOrZeroLength(t.active))throw new Error(aq);if(!io.isEmpty(t.password)&&io.isEmptyOrZeroLength(t.password.trim()))throw new Error(cq);if(!io.isEmpty(t.active)&&!io.isBoolean(t.active))throw new Error(uq);if(!io.isEmpty(t.password)&&!io.isEmptyOrZeroLength(t.password.trim())&&(uae(t.username)&&(t.hash=xN.encrypt(t.password)),t.password=await Gp.hash(t.password,ES),t.hash_function=ES),t.role==="")throw new Error(lq);if(t.role){let n=await qp.searchByValue({schema:"system",table:"hdb_role",attribute:"role",value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new Ti(Rd.ALTER_USER_ROLE_NOT_FOUND(t.role),la.NOT_FOUND);if(n.length>1)throw new Ti(Rd.DUP_ROLES_FOUND(t.role),la.CONFLICT);t.role=n[0].id}let r=await dq.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await yi(),await MN.signalUserChange(new BN(process.pid)),r}function uae(e){let t=!1,r=oo.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}async function HN(e){let t=fq.dropUserValidation(e);if(t)throw new Ti(t.message);if(oo.get(e.username)===void 0)throw new Ti(Rd.USER_NOT_EXIST(e.username),la.NOT_FOUND);let r=await lae({table:"hdb_user",schema:"system",hash_values:[e.username]});return UN.debug(r),await yi(),await MN.signalUserChange(new BN(process.pid)),`${e.username} successfully deleted`}async function GN(e){if(!e||!e.hdb_user)return"There was no user info in the body";let t=vN.cloneDeep(e.hdb_user),r=await qp.searchByHash({schema:"system",table:"hdb_role",hash_values:[t.role.id],get_attributes:["*"]});return t.role=r[0],delete t.password,delete t.refresh_token,delete t.hash,delete t.hash_function,t}async function qN(){let e=await gS();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}async function gS(){let e=await qp.searchByValue({schema:"system",table:"hdb_role",value:"*",attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=vN.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await qp.searchByValue({schema:"system",table:"hdb_user",value:"*",attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=vN.cloneDeep(s),s.role=t[s.role],dae(s.role),n.set(s.username,s);return n}function dae(e){if(!e){UN.error("invalid user role found.");return}e.permission.system||(e.permission.system={tables:{}}),e.permission.system.tables||(e.permission.system.tables={});for(let t of Object.keys(oae)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}async function yi(e=void 0){e?oo=e:oo=await gS()}async function fae(){return oo||await yi(),oo}async function bd(e,t,r=!0){oo||await yi();let n=oo.get(e);if(!n){if(!r)return{username:e};throw new Ti(LN.GENERIC_AUTH_FAIL,la.UNAUTHORIZED)}if(n&&!n.active)throw new Ti(LN.USER_INACTIVE,la.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(iq.get(t)===n.password)return s;{let i=Gp.validate(n.password,t,n.hash_function||Gp.HASH_FUNCTION.MD5);if(i?.then&&(i=await i),i===!0)iq.set(t,n.password);else throw new Ti(LN.GENERIC_AUTH_FAIL,la.UNAUTHORIZED)}}return s}async function $p(){oo||await yi();for(let[,e]of oo)if(e.role.role==="super_user")return e}async function mae(){let e=await gS(),t=sae.getConfigFromFile(DN.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(r==null||r?.role?.role!==DN.ROLE_TYPES_ENUM.CLUSTER_USER)return;let n=xN.decrypt(r.hash);return r.decrypt_hash=n,r.uri_encoded_d_hash=encodeURIComponent(n),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+sq.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+sq.SERVER_SUFFIX.ADMIN,r}var oq,aq,cq,lq,uq,dq,rae,Gp,fq,qp,MN,io,mq,UN,nae,xN,DN,sq,sae,iae,oae,aae,Ti,la,LN,Rd,BN,vN,_S,cae,pq,iq,lae,ES,oo,hq,jn=ie(()=>{"use strict";oq="username is required",aq="nothing to update, must supply active, role or password to update",cq="password cannot be an empty string",lq="If role is specified, it cannot be empty.",uq="active must be true or false",dq=_s(),rae=Hl(),Gp=(gN(),P(_N)),fq=RG(),qp=Wn(),MN=sa(),io=ue(),mq=require("validate.js"),UN=ee(),{promisify:nae}=require("util"),xN=ca(),DN=($(),P(z)),sq=_r(),sae=It(),iae=fe(),oae=Ll(),{hdbErrors:aae,ClientError:Ti}=ge(),{HTTP_STATUS_CODES:la,AUTHENTICATION_ERROR_MSGS:LN,HDB_ERROR_MSGS:Rd}=aae,{UserEventMsg:BN}=ms(),vN=require("lodash"),{server:_S}=(qr(),P(Rm)),cae=ee();_S.getUser=(e,t)=>bd(e,t,t!=null);_S.authenticateUser=(e,t)=>bd(e,t);pq={username:!0,active:!0,role:!0,password:!0},iq=new Map,lae=nae(rae.delete),ES=iae.get(DN.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??Gp.HASH_FUNCTION.SHA256;a(FN,"addUser");a(kN,"alterUser");a(uae,"isClusterUser");a(HN,"dropUser");a(GN,"userInfo");a(qN,"listUsersExternal");a(gS,"listUsers");a(dae,"appendSystemTablesToRole");a(yi,"setUsersWithRolesCache");a(fae,"getUsersWithRolesCache");a(bd,"findAndValidateUser");a($p,"getSuperUser");a(mae,"getClusterUser");hq=[];_S.invalidateUser=function(e){for(let t of hq)try{t(e)}catch(r){cae.error("Error invalidating user",r)}};_S.onInvalidatedUser=function(e){hq.push(e)}});var Le,Ad=ie(()=>{Le={HEALTHY:"healthy",WARNING:"warning",ERROR:"error",UNKNOWN:"unknown",LOADING:"loading"}});var Id,$N=ie(()=>{Ad();Id=class{static{a(this,"ComponentStatus")}lastChecked;status;message;error;constructor(t,r,n){this.lastChecked=new Date,this.status=t,this.message=r,this.error=n}updateStatus(t,r){this.status=t,this.message=r,this.lastChecked=new Date,t!==Le.ERROR&&(this.error=void 0)}markHealthy(t){this.updateStatus(Le.HEALTHY,t||"Component is healthy")}markError(t,r){this.status=Le.ERROR,this.error=t,this.message=r||(typeof t=="string"?t:t.message),this.lastChecked=new Date}markWarning(t){this.updateStatus(Le.WARNING,t)}markLoading(t){this.updateStatus(Le.LOADING,t||"Component is loading")}isHealthy(){return this.status===Le.HEALTHY}hasError(){return this.status===Le.ERROR}isLoading(){return this.status===Le.LOADING}hasWarning(){return this.status===Le.WARNING}getSummary(){let t=this.status.toUpperCase(),r=this.message?`: ${this.message}`:"";return`${t}${r}`}}});var ql,pc,VN,wd,KN,Nd,YN,SS=ie(()=>{ql=b(En()),pc=class extends Error{static{a(this,"ComponentStatusError")}statusCode;timestamp;constructor(t,r=ql.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR){super(t),this.name="ComponentStatusError",this.statusCode=r,this.timestamp=new Date,Error.captureStackTrace(this,this.constructor)}},VN=class extends pc{static{a(this,"CrossThreadTimeoutError")}requestId;timeoutMs;collectedCount;constructor(t,r,n){super(`Component status collection timeout after ${r}ms. Collected ${n} responses for request ${t}.`,ql.HTTP_STATUS_CODES.GATEWAY_TIMEOUT),this.name="CrossThreadTimeoutError",this.requestId=t,this.timeoutMs=r,this.collectedCount=n}},wd=class extends pc{static{a(this,"ITCError")}operation;cause;constructor(t,r){super(`Inter-thread communication failed during ${t}: ${r?.message||"Unknown error"}`,ql.HTTP_STATUS_CODES.SERVICE_UNAVAILABLE),this.name="ITCError",this.operation=t,this.cause=r}},KN=class extends pc{static{a(this,"AggregationError")}componentCount;cause;constructor(t,r){super(`Failed to aggregate status for ${t} components: ${r?.message||"Unknown error"}`,ql.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR),this.name="AggregationError",this.componentCount=t,this.cause=r}},Nd=class extends pc{static{a(this,"ComponentStatusOperationError")}componentName;operation;constructor(t,r,n){super(`Component '${t}' ${r} failed: ${n}`,ql.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR),this.name="ComponentStatusOperationError",this.componentName=t,this.operation=r}},YN=class extends pc{static{a(this,"CrossThreadCollectionError")}result;constructor(t){let r=t.success?`Partial collection success: ${t.collectedFromThreads} threads responded`+(t.timedOutThreads.length>0?`, ${t.timedOutThreads.length} timed out`:""):`Collection failed: ${t.errors.map(n=>n.message).join(", ")}`;super(r,ql.HTTP_STATUS_CODES.OK),this.name="CrossThreadCollectionError",this.result=t}getDiagnostics(){let t=[`Cross-thread collection ${this.result.success?"partially succeeded":"failed"}`,`Threads responded: ${this.result.collectedFromThreads}`];return this.result.expectedThreads&&t.push(`Expected threads: ${this.result.expectedThreads}`),this.result.timedOutThreads.length>0&&t.push(`Timed out threads: ${this.result.timedOutThreads.join(", ")}`),this.result.errors.length>0&&(t.push("Errors:"),this.result.errors.forEach((r,n)=>{t.push(` ${n+1}. ${r.name}: ${r.message}`)})),t.join(`
|
|
13
13
|
`)}}});var Eq,$l,_q,hc,Vp,Cd,pae,TS,WN=ie(()=>{Eq=b(ms()),$l=b(it());$();_q=b(hr());Ad();SS();hc=(0,_q.loggerWithTag)("componentStatus.crossThread"),Vp=class{static{a(this,"CrossThreadStatusCollector")}awaitingResponses=new Map;responseCheckers=new Map;nextRequestId=1;listenerAttached=!1;timeout;cleanupTimer=null;constructor(t=5e3){this.timeout=t}attachListener(){this.listenerAttached||((0,$l.onMessageByType)(Hu.COMPONENT_STATUS_RESPONSE,({message:t})=>{let r=t.isMainThread?"main":`worker-${t.workerIndex}`;hc.trace?.("Received component status response from %s, with requestId: %d",r,t.requestId);let n=this.awaitingResponses.get(t.requestId);if(n){n.push({workerIndex:t.workerIndex,isMainThread:t.isMainThread||!1,statuses:t.statuses||[]});let s=this.responseCheckers.get(t.requestId);s&&s()}}),this.listenerAttached=!0)}scheduleCleanup(){this.cleanupTimer&&clearTimeout(this.cleanupTimer),this.awaitingResponses.size>0&&(this.cleanupTimer=setTimeout(()=>{this.awaitingResponses.size>0&&(hc.debug?.(`Cleaning up ${this.awaitingResponses.size} stale pending requests`),this.awaitingResponses.clear()),this.cleanupTimer=null},3e4))}async collect(t){try{this.attachListener(),this.scheduleCleanup();let r=this.nextRequestId++,n=[];this.awaitingResponses.set(r,n);let o=((0,$l.getWorkerCount)()||1)+1-1,l=await new Promise((p,h)=>{let E=!1,_=a(()=>{let y=this.awaitingResponses.get(r);y&&y.length>=o&&!E&&(E=!0,S(),hc.trace?.(`Collected all ${y.length} expected responses for request ${r}`),p(y))},"checkComplete"),R=setTimeout(()=>{if(!E){E=!0;let y=this.awaitingResponses.get(r)||[];this.awaitingResponses.delete(r),hc.debug?.(`Collection timeout for request ${r}: collected ${y.length}/${o} responses`),p(y)}},this.timeout),S=a(()=>{this.awaitingResponses.delete(r),clearTimeout(R)},"cleanup");this.responseCheckers.set(r,_),(0,Eq.sendItcEvent)({type:Hu.COMPONENT_STATUS_REQUEST,message:{requestId:r}}).then(()=>{_()}).catch(y=>{E=!0,S(),this.responseCheckers.delete(r),h(new wd("sendItcEvent",y))})});this.responseCheckers.delete(r);let u=new Map,d=t.getAllStatuses(),f=(0,$l.getWorkerIndex)(),m=f===void 0?"main":`worker-${f}`;for(let[p,h]of d)u.set(`${p}@${m}`,{...h,workerIndex:f});for(let p of l)for(let[h,E]of p.statuses){let _=p.isMainThread?"main":`worker-${p.workerIndex}`;u.set(`${h}@${_}`,{...E,workerIndex:p.workerIndex})}return hc.debug?.(`Collected component status from ${l.length+1} threads (including local)`),u}catch(r){return r instanceof wd?hc.error?.(`ITC failure during component status collection: ${r.message}`):hc.warn?.("Failed to collect component status from all threads:",r),hc.debug?.(`Collection failed for request. Error: ${r instanceof Error?r.message:"Unknown error"}`),this.getLocalStatusOnly(t)}}getLocalStatusOnly(t){let r=t.getAllStatuses(),n=new Map,s=(0,$l.getWorkerIndex)(),i=s===void 0?"main":`worker-${s}`;for(let[o,c]of r)n.set(`${o}@${i}`,{...c,workerIndex:s});return n}cleanup(){this.awaitingResponses.clear(),this.responseCheckers.clear(),this.cleanupTimer&&(clearTimeout(this.cleanupTimer),this.cleanupTimer=null)}},Cd=class{static{a(this,"StatusAggregator")}static aggregate(t){let r=new Map,n=new Map;for(let[s,i]of t){let o=s.indexOf("@"),c=o!==-1?s.substring(0,o):s,l=n.get(c);l||(l=[],n.set(c,l)),l.push([s,i])}for(let[s,i]of n){let o=this.aggregateComponentGroup(s,i);r.set(s,o)}return r}static aggregateComponentGroup(t,r){let n={workers:{}},s=0,i,o,c=new Map,l=new Map;for(let[m,p]of r){let h=m.lastIndexOf("@"),E=h!==-1?m.substring(h+1):"",_=p.lastChecked instanceof Date?p.lastChecked.getTime():new Date(p.lastChecked).getTime();if(E==="main")n.main=_;else if(E&&E.startsWith("worker-")){let R=parseInt(E.substring(7));isNaN(R)||(n.workers[R]=_)}c.set(p.status,(c.get(p.status)||0)+1),p.status!==Le.HEALTHY&&p.message&&(!i||_>s)&&(s=_,i=p.message),p.error&&!o&&(o=p.error)}let u=this.determineOverallStatus(c);if(Array.from(c.keys()).length>1)for(let[m,p]of r)p.status!==u&&l.set(m,{workerIndex:p.workerIndex!==void 0?p.workerIndex:-1,status:p.status,message:p.message,error:p.error});let f={componentName:t,status:u,lastChecked:n,latestMessage:i,error:o};return l.size>0&&(f.abnormalities=l),f}static determineOverallStatus(t){let r=[Le.ERROR,Le.WARNING,Le.LOADING,Le.UNKNOWN,Le.HEALTHY];for(let n of r)if(t.has(n)&&t.get(n)>0)return n;return Le.UNKNOWN}},pae=parseInt(process.env.COMPONENT_STATUS_TIMEOUT||"5000"),TS=new Vp(pae)});var Ec,yS=ie(()=>{$N();Ad();WN();SS();Ec=class e{static{a(this,"ComponentStatusRegistry")}statusMap=new Map;reset(){this.statusMap=new Map}setStatus(t,r,n,s){if(!t||typeof t!="string")throw new Nd(String(t),"setStatus","Component name must be a non-empty string");if(!Object.values(Le).includes(r))throw new Nd(t,"setStatus",`Invalid status level: ${r}. Must be one of: ${Object.values(Le).join(", ")}`);this.statusMap.set(t,new Id(r,n,s))}getStatus(t){return this.statusMap.get(t)}getAllStatuses(){return this.statusMap}reportHealthy(t,r){this.setStatus(t,Le.HEALTHY,r)}reportError(t,r,n){this.setStatus(t,Le.ERROR,n,r)}reportWarning(t,r){this.setStatus(t,Le.WARNING,r)}initializeLoading(t,r){this.setStatus(t,Le.LOADING,r||"Component is loading")}markLoaded(t,r){this.setStatus(t,Le.HEALTHY,r||"Component loaded successfully")}markFailed(t,r,n){this.setStatus(t,Le.ERROR,n,r)}getComponentsByStatus(t){let r=[];for(let[n,s]of this.statusMap)s.status===t&&r.push({name:n,status:s});return r}getStatusSummary(){let t={[Le.HEALTHY]:0,[Le.ERROR]:0,[Le.WARNING]:0,[Le.LOADING]:0,[Le.UNKNOWN]:0};for(let r of this.statusMap.values())t[r.status]++;return t}static async getAggregatedFromAllThreads(t){let r=await TS.collect(t);return Cd.aggregate(r)}async getAggregatedStatusFor(t,r){r||(r=await e.getAggregatedFromAllThreads(this));let n=[],s=t+".",i=r.get(t);i&&n.push({key:t,...i});for(let[f,m]of r)f.startsWith(s)&&n.push({key:f,...m});if(n.length===0)return{status:Le.UNKNOWN,message:"The component has not been loaded yet (may need a restart)",lastChecked:{workers:{}}};let o=n.some(f=>f.status===Le.ERROR),c=n.some(f=>f.status===Le.LOADING),l=o?Le.ERROR:c?Le.LOADING:Le.HEALTHY,u="All components loaded successfully",d={};if(o||c){u=n.filter(m=>m.status===Le.ERROR||m.status===Le.LOADING).map(m=>`${m.key}: ${m.latestMessage||m.status}`).join("; ");for(let m of n)m.status!==Le.HEALTHY&&(d[m.key]={status:m.status,message:m.latestMessage})}return{status:l,message:u,...Object.keys(d).length>0&&{details:d},lastChecked:n[0]?.lastChecked||{workers:{}}}}}});var gr,RS=ie(()=>{yS();gr=new Ec});function Sq(e){let t=gq.get(e);return t||(t=new jN(e),gq.set(e,t)),t}function Tq(){gr.reset()}var jN,gq,ao,yq,Rq=ie(()=>{RS();Ad();jN=class{static{a(this,"ComponentStatusBuilder")}componentName;constructor(t){this.componentName=t}healthy(t){return gr.setStatus(this.componentName,Le.HEALTHY,t),this}warning(t){return gr.setStatus(this.componentName,Le.WARNING,t),this}error(t,r){return gr.setStatus(this.componentName,Le.ERROR,t,r),this}loading(t){return gr.setStatus(this.componentName,Le.LOADING,t||"Loading..."),this}unknown(t){return gr.setStatus(this.componentName,Le.UNKNOWN,t),this}get(){return gr.getStatus(this.componentName)}},gq=new Map;a(Sq,"statusForComponent");ao={loading(e,t){gr.initializeLoading(e,t)},loaded(e,t){gr.markLoaded(e,t)},failed(e,t,r){gr.markFailed(e,t,r)}};a(Tq,"reset");yq=Le});var Kp={};Re(Kp,{AggregationError:()=>KN,COMPONENT_STATUS_LEVELS:()=>Le,ComponentStatus:()=>Id,ComponentStatusError:()=>pc,ComponentStatusOperationError:()=>Nd,ComponentStatusRegistry:()=>Ec,CrossThreadCollectionError:()=>YN,CrossThreadStatusCollector:()=>Vp,CrossThreadTimeoutError:()=>VN,ITCError:()=>wd,StatusAggregator:()=>Cd,componentStatusRegistry:()=>gr,crossThreadCollector:()=>TS,query:()=>hae});var hae,bq=ie(()=>{RS();yS();$N();yS();WN();RS();SS();Ad();hae={get(e){return gr.getStatus(e)},all(){return gr.getAllStatuses()},byStatus(e){return gr.getComponentsByStatus(e)},summary(){return gr.getStatusSummary()},async allThreads(){return Ec.getAggregatedFromAllThreads(gr)}}});var zN={};Re(zN,{STATUS:()=>yq,internal:()=>Kp,lifecycle:()=>ao,reset:()=>Tq,statusForComponent:()=>Sq});var Yp=ie(()=>{Rq();bq()});var jp=x((GMe,wq)=>{"use strict";var Ss=ee(),Tn=($(),P(z)),Eae=iF(),_ae=(jn(),P(Ri)),{validateEvent:JN}=ms(),Wp=Es(),gae=require("process"),{resetDatabases:Sae}=(Oe(),P(Et)),Tae={[Tn.ITC_EVENT_TYPES.SCHEMA]:yae,[Tn.ITC_EVENT_TYPES.USER]:Iq,[Tn.ITC_EVENT_TYPES.COMPONENT_STATUS_REQUEST]:bae};async function yae(e){let t=JN(e);if(t){Ss.error(t);return}Ss.trace("ITC schemaHandler received schema event:",e),await Eae(e.message),await Rae(e.message)}a(yae,"schemaHandler");async function Rae(e){try{Wp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),Wp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),Wp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=Sae();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){Ss.error(t)}}a(Rae,"syncSchemaMetadata");var Aq=[];async function Iq(e){try{try{Wp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),Wp.resetReadTxn(Tn.SYSTEM_SCHEMA_NAME,Tn.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){Ss.warn(r)}let t=JN(e);if(t){Ss.error(t);return}Ss.trace(`ITC userHandler ${Tn.HDB_ITC_CLIENT_PREFIX}${gae.pid} received user event:`,e),await _ae.setUsersWithRolesCache();for(let r of Aq)r()}catch(t){Ss.error(t)}}a(Iq,"userHandler");Iq.addListener=function(e){Aq.push(e)};async function bae(e){try{let t=JN(e);if(t){Ss.error(t);return}Ss.trace("ITC componentStatusRequestHandler received request:",e);let{internal:r}=(Yp(),P(zN)),{getWorkerIndex:n}=it(),{sendItcEvent:s}=ms(),i=r.componentStatusRegistry.getAllStatuses(),o=Array.from(i.entries()),c=n(),l=c===void 0,u=e.message.originator,d={type:Tn.ITC_EVENT_TYPES.COMPONENT_STATUS_RESPONSE,message:{requestId:e.message.requestId,statuses:o,workerIndex:c,isMainThread:l}};u!==void 0&&threads.sendToThread(u,d)?Ss.trace(`Sent component status response directly to thread ${u}`):(u===void 0?Ss.debug("No originator threadId, falling back to broadcast"):Ss.debug(`Failed to send direct response to thread ${u}, falling back to broadcast`),await s(d))}catch(t){Ss.error("Error handling component status request:",t)}}a(bae,"componentStatusRequestHandler");wq.exports=Tae});var ms=x(($Me,Cq)=>{"use strict";var QN=ue(),Aae=($(),P(z)),{ITC_ERRORS:zp}=En(),{threadId:Iae,isMainThread:wae}=require("worker_threads"),{onMessageFromWorkers:Nae,broadcastWithAcknowledgement:Cae}=it();Cq.exports={sendItcEvent:Oae,validateEvent:Nq,SchemaEventMsg:Pae,UserEventMsg:Lae};var bS;Nae(async(e,t)=>{bS=bS||jp(),Nq(e),bS[e.type]&&await bS[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function Oae(e){return!wae&&e.message&&(e.message.originator=Iae),Cae(e)}a(Oae,"sendItcEvent");function Nq(e){if(typeof e!="object")return zp.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||QN.isEmpty(e.type))return zp.MISSING_TYPE;if(!e.hasOwnProperty("message")||QN.isEmpty(e.message))return zp.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||QN.isEmpty(e.message.originator))return zp.MISSING_ORIGIN;if(Aae.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return zp.INVALID_EVENT(e.type)}a(Nq,"validateEvent");function Pae(e,t,r,n=void 0,s=void 0){this.originator=e,this.operation=t,this.schema=r,this.table=n,this.attribute=s}a(Pae,"SchemaEventMsg");function Lae(e){this.originator=e}a(Lae,"UserEventMsg")});var sa=x((KMe,Dq)=>{"use strict";var Oq=($(),P(z)),AS=ee(),Pq=GB(),Od,{sendItcEvent:Lq}=ms();function Dae(e){try{AS.debug("signalSchemaChange called with message:",e),Od=Od||jp();let t=new Pq(Oq.ITC_EVENT_TYPES.SCHEMA,e);return Od.schema(t),Lq(t)}catch(t){AS.error(t)}}a(Dae,"signalSchemaChange");function vae(e){try{AS.trace("signalUserChange called with message:",e),Od=Od||jp();let t=new Pq(Oq.ITC_EVENT_TYPES.USER,e);return Od.user(t),Lq(t)}catch(t){AS.error(t)}}a(vae,"signalUserChange");Dq.exports={signalSchemaChange:Dae,signalUserChange:vae}});function Jp(e,t,r,n){if(e.append)e.append(t,r,n);else if(e.set){let s=e.get(t);if(s)if(n)r=(typeof s=="string"?s:s.join(", "))+", "+r;else if(typeof s=="string")r=[s,r];else{s.push(r);return}return e.set(t,r)}else e[t]=(e[t]?e[t]+", ":"")+r}function vq(e,t){(typeof e.set!="function"||typeof e.has!="function")&&(e=new $s(e));for(let[r,n]of t)if(!e.has(r))e.set(r,n);else if(r.toLowerCase()==="set-cookie"){let s=Array.isArray(n)?n:[n];if(e.append)for(let i of s)e.append(r,i);else{let i=e.get(r),o=Array.isArray(i)?[...i,...s]:[i,...s];e.set(r,o)}}return e}var $s,Qp=ie(()=>{$s=class extends Map{static{a(this,"Headers")}constructor(t){if(t)if(t[Symbol.iterator])super(t);else{super();for(let r in t)this.set(r,t[r])}else super()}set(t,r){return typeof t!="string"&&(t=""+t),Array.isArray(r)?r=r.map(n=>typeof n=="string"?n:""+n):typeof r!="string"&&(r=""+r),super.set(t.toLowerCase(),[t,r])}get(t){return typeof t!="string"&&(t=""+t),super.get(t.toLowerCase())?.[1]}has(t){return typeof t!="string"&&(t=""+t),super.has(t.toLowerCase())}setIfNone(t,r){typeof t!="string"&&(t=""+t),typeof r!="string"&&(r=""+r);let n=t.toLowerCase();if(!super.has(n))return super.set(n,[t,r])}append(t,r,n){typeof t!="string"&&(t=""+t),typeof r!="string"&&(r=""+r);let s=t.toLowerCase(),i=super.get(s);if(i){let o=i[1];if(n)r=(typeof o=="string"?o:o.join(", "))+", "+r;else if(typeof o=="string")r=[o,r];else{o.push(r);return}}return super.set(s,[t,r])}[Symbol.iterator](){return super.values()[Symbol.iterator]()}};a(Jp,"appendHeader");a(vq,"mergeHeaders")});function IS(e,t,r=Uae){let n;return function(...i){return n?n.length*XN>r?t(...i):new Promise((o,c)=>{n.push({args:i,fn(){try{let l=e(...i);o(l)}catch(l){c(l)}}})}):(n=[],s(performance.now()),e(...i))};function s(i){setImmediate(()=>{let o=performance.now();XN=(XN*4+o-i)/5;let c=n.shift();if(c){let{fn:l}=c;l(),s(o)}else n=null})}}var xq,Mae,Uae,Mq,xae,ZN,Uq,XN,eC=ie(()=>{xq=b(hr()),Mae=3e3,Uae=2e4,Mq=0,xae=3e4,ZN=3e3,Uq=performance.now()+ZN,XN=0;a(IS,"throttle");setInterval(()=>{let e=performance.now();e-Uq-ZN>Mae&&Mq+xae<e&&(xq.default.warn?.("JavaScript execution has taken too long and is not allowing proper event queue cycling, consider using 'await new Promise(setImmediate)' in code that will execute for a long duration"),Mq=e),Uq=e},ZN).unref()});var Wq={};Re(Wq,{EVICTED:()=>bl,INVALIDATED:()=>Gn,coerceType:()=>NS,makeTable:()=>OS});function OS(e){let{primaryKey:t,indices:r,tableId:n,tableName:s,primaryStore:i,databasePath:o,databaseName:c,auditStore:l,schemaDefined:u,dbisDB:d,sealed:f,splitSegments:m,replicate:p}=e,{expirationMS:h,evictionMS:E,audit:_,trackDeletes:R}=e;E??=0;let{attributes:S}=e;S||(S=[]);let y=MI(i,n,l),I,w,L={},H=Promise.resolve(),Z,X,Q;for(let W of S)(W.assignCreatedTime||W.name==="__createdtime__")&&(Z=W),(W.assignUpdatedTime||W.name==="__updatedtime__")&&(X=W),W.expiresAt&&(Q=W),W.isPrimaryKey&&(L=W);let F,de=[],oe=[],ae=1,he=2,Te={},De={},Qe=864e5,$e=0,ss,Pt,Lt,Ya=!1,Qc,qt,vs,Wa=Pd.get(U.REPLICATION_DATABASES);if(Array.isArray(Wa)){for(let W of Wa)if(W.name===c&&W.replicateTo>=0){vs=W.replicateTo;break}}let p_=i.getRange({start:!1,end:!1}).constructor,lm=10,h_=6;_&&Bu(),tp(i.env.path,W=>{if(w)return Cr(W)});class um extends Ml{static{a(this,"Updatable")}getUpdatedTime(){return ic.get(this.getRecord())?.version}getExpiresAt(){return ic.get(this.getRecord())?.expiresAt}addTo(g,T){if(typeof T=="number"||typeof T=="bigint")this.set(g,new Dp(T));else throw new Error("Can not add or subtract a non-numeric value")}subtractFrom(g,T){return this.addTo(g,-T)}}class Be extends Vt{#e;#t;#r;#n;#s;#i;static name=s;static primaryStore=i;static auditStore=l;static primaryKey=t;static tableName=s;static tableId=n;static indices=r;static audit=_;static databasePath=o;static databaseName=c;static attributes=S;static replicate=p;static sealed=f;static splitSegments=m??!0;static createdTimeProperty=Z;static updatedTimeProperty=X;static propertyResolvers;static userResolvers={};static sources=[];static getResidencyById;static get expirationMS(){return h}static dbisDB=d;static schemaDefined=u;static sourcedFrom(g,T){if(T&&(this.sourceOptions=T,(T.expiration||T.eviction||T.scanInterval)&&this.setTTLExpiration(T)),T?.intermediateSource)g.intermediateSource=!0,this.sources.unshift(g);else{if(this.sources.some(v=>!v.intermediateSource)){if(this.sources.some(v=>v.name===g.name))return;throw new Error("Can not have multiple canonical (non-intermediate) sources")}this.sources.push(g)}w=w||g.get&&(!g.get.reliesOnPrototype||g.prototype.get),I=I||g.load;let A=a(v=>{let k=this.sources;if(k=k.filter(K=>K.intermediateSource&&K[v]&&(!K[v].reliesOnPrototype||K.prototype[v])),k.length>0)if(k.length===1){let K=k[0];return(M,q,O)=>{if(M?.source!==K)return K[v](q,O,M)}}else return(K,M,q)=>{let O=[];for(let G of k){if(K?.source===G)break;O.push(G[v](M,q,K))}return Promise.all(O)}},"getApplyToIntermediateSource"),N=this.sources[this.sources.length-1];N.intermediateSource&&(N={});let C=a(v=>{if(N[v]&&(!N[v].reliesOnPrototype||N.prototype[v]))return(k,K,M)=>{if(!k?.source)return N[v](K,M,k)}},"getApplyToCanonicalSource");Te={put:C("put"),patch:C("patch"),delete:C("delete"),publish:C("publish")},De={put:A("put"),patch:A("patch"),delete:A("delete"),publish:A("publish"),invalidate:A("invalidate")};let B=N.shouldRevalidateEvents;return(async()=>{let v=!1,k,K=a(async(M,q)=>{let O=M.value,G=M.table?xe[c][M.table]:Be;if(c===gm&&(M.table===ku.ROLE_TABLE_NAME||M.table===ku.USER_TABLE_NAME)&&(v=!0),M.id===void 0&&(M.id=O[G.primaryKey],M.id===void 0))throw new Error("Replication message without an id "+JSON.stringify(M));M.source=g;let V={residencyId:tl(M.residencyList),isNotification:!0,ensureLoaded:!1,nodeId:M.nodeId,async:!0},D=M.id,me=await G.getResource(D,q,V);switch(M.finished&&await M.finished,M.type){case"put":return B?me._writeInvalidate(D,O,V):me._writeUpdate(D,O,!0,V);case"patch":return B?me._writeInvalidate(D,O,V):me._writeUpdate(D,O,!1,V);case"delete":return me._writeDelete(D,V);case"publish":case"message":return me._writePublish(D,O,V);case"invalidate":return me._writeInvalidate(D,O,V);case"relocate":return me._writeRelocate(D,V);default:Fe.default.error?.("Unknown operation",M.type,M.id)}},"writeUpdate");try{let M=g.subscribe;M&&R==null&&(R=!0);let q={crossThreads:!1,inTransactionUpdates:!0,supportsTransactions:!0,omitCurrent:!0},O=g.subscribeOnThisThread?g.subscribeOnThisThread((0,Vl.getWorkerIndex)(),q):(0,Vl.getWorkerIndex)()===0,G=M&&O&&await g.subscribe?.(q);if(G){let V;for await(let D of G)try{if(!(D.type==="transaction"?D.writes[0]:D)){Fe.default.error?.("Bad subscription event",D);continue}if(D.source=g,D.type==="end_txn"){V?.resolve();let Ee;if(D.localTime&&k!==D.localTime&&D.remoteNodeIds?.length>0&&(Ee=a(()=>{let j=[Symbol.for("seq"),D.remoteNodeIds[0]],J=d.get(j),le=J?.nodes;le||(le=[]);for(let Pe of D.remoteNodeIds.slice(1)){let Xe=le.find(mt=>mt.id===Pe);le=le.filter(mt=>mt.id!==Pe||mt===Xe),Xe||(Xe={id:Pe,seqId:0},le.push(Xe)),Xe.seqId=Math.max(J?.seqId??1,D.localTime),Pe===V?.nodeId&&(Xe.lastTxnTime=D.timestamp)}let pe=Math.max(J?.seqId??1,D.localTime);Fe.default.trace?.("Received txn",c,pe,new Date(pe),D.localTime,new Date(D.localTime),D.remoteNodeIds),d.put(j,{seqId:pe,nodes:le})},"updateRecordedSequenceId"),k=D.localTime),D.onCommit){let j=V?V.committed.then(D.onCommit):D.onCommit();Ee&&(j?.then?j.then(Ee):Ee())}else Ee&&Ee();continue}if(V)if(D.beginTxn)V.resolve();else{V.writePromises.push(K(D,V));continue}!D.timestamp&&D.version&&(D.timestamp=D.version);let ne=wt(D,()=>{if(D.type==="transaction"){let Ee=[];for(let j of D.writes)try{Ee.push(K(j,D))}catch(J){throw J.message+=" writing "+JSON.stringify(j)+" of event "+JSON.stringify(D),J}return Promise.all(Ee)}else if(D.type==="define_schema"){let Ee=this.attributes.slice(0),j=!1;for(let J of D.attributes)Ee.find(le=>le.name===J.name)||(Ee.push(J),j=!0);j&&(je({table:s,database:c,attributes:Ee,origin:"cluster"}),Zp.signalSchemaChange(new eh.SchemaEventMsg(process.pid,Y.CREATE_TABLE,c,s)))}else return D.beginTxn?(V=D,V.writePromises=[K(D,D)],new Promise(Ee=>{V.resolve=()=>Ee(Promise.all(V.writePromises))})):K(D,D)});V&&(V.committed=ne),v&&ne&&!ne?.waitingForUserChange&&(ne.then(()=>Zp.signalUserChange(new eh.UserEventMsg(process.pid))),ne.waitingForUserChange=!0),D.onCommit&&(ne?ne.then(D.onCommit):D.onCommit())}catch(me){Fe.default.error?.("error in subscription handler",me)}}}catch(M){Fe.default.error?.(M)}})(),this}static get isCaching(){return w}static get shouldRevalidateEvents(){return this.prototype.get!==Be.prototype.get}static getResource(g,T,A){let N=super.getResource(g,T,A);if(this.loadAsInstance===!1&&(T._freezeRecords=!0),g!=null&&this.loadAsInstance!==!1){Fo(g);try{if(N.getRecord?.())return N;if(typeof g=="object"&&g&&!Array.isArray(g))throw new Error(`Invalid id ${JSON.stringify(g)}`);let C=!A?.async||i.cache?.get?.(g),B=Rt(T),v=B.getReadTxn();if(v?.isDone)throw new Error("You can not read from a transaction that has already been committed/aborted");return Zc(g,T,{transaction:v,ensureLoaded:A?.ensureLoaded,type:A?.type},C,k=>{if(k?Be._updateResource(N,k):N.#e=null,T.onlyIfCached){if(!N.doesExist())throw new ft.ServerError("Entry is not cached",504)}else if(A?.ensureLoaded){let K=Ho(g,k,T,N);if(K)return B?.disregardReadTxn(),N.#i=!0,T.loadedFromSource=!0,Vs(K,M=>(Be._updateResource(N,M),N))}return N})}catch(C){throw C.message.includes("Unable to serialize object")&&(C.message+=": "+JSON.stringify(g)),C}}return N}static _updateResource(g,T){g.#n=T,g.#e=T?.value??null,g.#r=T?.version}ensureLoaded(){let g=Ho(this.getId(),this.#n,this.getContext());if(g)return this.#i=!0,this.getContext().loadedFromSource=!0,Vs(g,T=>{this.#n=T,this.#e=T.value,this.#r=T.version})}static getNewId(){let g=L?.type;if(g==="String"||g==="ID")return super.getNewId();if(!qt){let C=i.getEntry(Symbol.for("id_allocation")),B=C?.value,v;if(B&&B.nodeName===server.hostname&&(!jae(i)||B.pid===process.pid)){let k=B.start,K=B.end;v=k;for(let M of i.getKeys({start:K,end:k,limit:1,reverse:!0}))v=M}else B=N(C?.version??null),v=B.start;qt=new BigInt64Array([BigInt(v)+1n]),qt=new BigInt64Array(i.getUserSharedBuffer("id",qt.buffer)),qt.maxSafeId=B.end}let T=Number(Atomics.add(qt,0,1n)),A=g==="Int"?512:1048576;if(T+A>=qt.maxSafeId){let C=a(B=>{qt.maxSafeId=T+(g==="Int"?1023:4194303);let v=(g==="Int"?Math.pow(2,31):Math.pow(2,49))-1,k=B?void 0:i.useReadTransaction(),K=Number(qt[0]);for(let O of i.getKeys({start:K+1,end:v,limit:1,transaction:k}))v=O;k?.done();let{value:M,version:q}=i.getEntry(Symbol.for("id_allocation"));if(qt.maxSafeId<v){if(M.end>qt.maxSafeId-100)return;Fe.default.info?.("New id allocation",T,qt.maxSafeId,q),i.put(Symbol.for("id_allocation"),{start:M.start,end:qt.maxSafeId,nodeName:server.hostname,pid:process.pid},Date.now(),q)}else{Fe.default.warn?.(`Id conflict detected, starting new id allocation range, attempting to allocate to ${qt.maxSafeId}, but id of ${v} detected`);let O=N(q);O.alreadyUpdated||Atomics.store(qt,0,BigInt(O.start+1)),qt.maxSafeId=O.end}},"updateEnd");T+A===qt.maxSafeId?setImmediate(C):T+100>=qt.maxSafeId&&(Fe.default.warn?.(`Synchronous id allocation required on table ${s}${g=="Int"?", it is highly recommended that you use Long or Float as the type for auto-incremented primary keys":""}`),i.transactionSync(()=>C(!0)))}return T;function N(C){let B=(g==="Int"?Math.pow(2,31):Math.pow(2,49))-1,v=B/4,k,K,M=!1,q,O;do{q=Math.floor(Math.random()*B),O={start:q,end:q+(g==="Int"?1024:4194304),nodeName:server.hostname,pid:process.pid},k=0;for(let G of i.getKeys({start:q,limit:1,reverse:!0}))k=G;K=B;for(let G of i.getKeys({start:q+1,end:B,limit:1}))K=G;v*=.875,v<1e3&&!M&&(M=!0,Fe.default.error?.(`Id allocation in table ${s} is very dense, limited safe range of numbers to allocate ids in${g==="Int"?", it is highly recommended that you use Long or Float as the type for auto-incremented primary keys":""}`,q,k,K,v))}while(!(v<K-q&&(v<q-k||k===0)));return i.transactionSync(()=>{let G=i.getEntry(Symbol.for("id_allocation"));return(G?.version??null)==C?(Fe.default.info?.("Allocated new id range",O),i.put(Symbol.for("id_allocation"),O,Date.now()),O):(Fe.default.debug?.("Looks like ids were already allocated"),{alreadyUpdated:!0,...G.value})})}}static setTTLExpiration(g){if(typeof g=="number")h=g*1e3,E||(E=0);else if(g&&typeof g=="object")h=g.expiration*1e3,E=(g.eviction||0)*1e3,Qe=g.scanInterval*1e3;else throw new Error("Invalid expiration value type");if(h<0)throw new Error("Expiration can not be negative");Qe=Qe||(h+E)/4,Cr()}static getResidencyRecord(g){return d.get([Symbol.for("residency_by_id"),g])}static setResidency(g){Be.getResidency=g&&((T,A)=>{try{return g(T,A)}catch(N){throw N.message+=` in residency function for table ${s}`,N}})}static setResidencyById(g){Be.getResidencyById=g&&(T=>{try{return g(T)}catch(A){throw A.message+=` in residency function for table ${s}`,A}})}static getResidency(g,T){if(Be.getResidencyById)return Be.getResidencyById(g[t]);let A=vs;if(T.replicateTo!=null){if(Array.isArray(T.replicateTo))return T.replicateTo.includes(server.hostname)?T.replicateTo:[server.hostname,...T.replicateTo];T.replicateTo>=0&&(A=T.replicateTo)}if(A>=0&&server.nodes){let N=[server.hostname];if(T.previousResidency)N.push(...T.previousResidency.slice(0,A));else{let C=server.nodes.map(k=>k.name),B=Math.floor(C.length*Math.random());N.push(...C.slice(B,B+A));let v=B+A-C.length;v>0&&N.push(...C.slice(0,v))}return N}}static enableAuditing(){_||(_=!0,Bu(),Be.audit=!0)}static coerceId(g){return g===""?null:NS(g,L)}static async dropTable(){delete xe[c][s];for(let g of i.getRange({versions:!0,snapshot:!1,lazy:!0}))g.metadataFlags&en&&g.value&&rc(g.value);if(c===o){for(let g of S)d.remove(Be.tableName+"/"+g.name),r[g.name]?.drop();d.remove(Be.tableName+"/"),i.drop(),await d.committed}else console.log("legacy dropTable"),await i.close(),rC.default.unlinkSync(i.env.path);Zp.signalSchemaChange(new eh.SchemaEventMsg(process.pid,Y.DROP_TABLE,c,s))}get(g){let T=this.constructor;if(typeof g=="string"&&T.loadAsInstance!==!1)return this.getProperty(g);if(xu(g))return this.search(g);if(g&&g.id===void 0&&!g.toString()){let A={records:"./",name:s,database:c,auditSize:l?.getStats().entryCount,attributes:S,recordCount:void 0,estimatedRecordRange:void 0};return this.getContext()?.includeExpensiveRecordCountEstimates?Be.getRecordCount().then(N=>(A.recordCount=N.recordCount,A.estimatedRecordRange=N.estimatedRange,A)):A}if(g!==void 0&&T.loadAsInstance===!1){let A=this.getContext(),N=Rt(A),C=N.getReadTxn();if(C?.isDone)throw new Error("You can not read from a transaction that has already been committed/aborted");let B=ci(g);Fo(B);let v=!0;return g.checkPermission&&(v=this.allowRead(A.user,g,A)),Vs(Vs(v,k=>{if(!k)throw new ft.AccessViolation(A.user);let K=!0;return Zc(B,A,{transaction:C,ensureLoaded:K},!1,M=>{if(A.onlyIfCached){if(!M?.value)throw new ft.ServerError("Entry is not cached",504)}else if(K){let q=Ho(B,M,A);if(q)return N?.disregardReadTxn(),A.loadedFromSource=!0,q.then(O=>O?.value)}return M?.value})}),k=>{let K=g?.select;return K&&k!=null?mp(K,this.constructor)(k):k})}if(g?.property)return this.getProperty(g.property);if(this.doesExist()||g?.ensureLoaded===!1||this.getContext()?.returnNonexistent)return this}allowRead(g,T,A){let N=ko(g,T);if(N?.read){if(N.isSuperUser)return!0;let C=N.attribute_permissions,B=T?.select;if(C?.length>0||Ya&&B){if(T||(T={}),B){let v=Array.isArray(B)?B:[B],k=C?.length>0&&tC(C,"read");T.select=v.map(K=>{let M=K.name||K;if(!k||k[M]){let q=Lt[M]?.definition?.tableClass;if(q){if(K.name||(K={name:K}),!K.checkPermission&&T.checkPermission&&(K.checkPermission=T.checkPermission),!q.prototype.allowRead.call(null,g,K,A))return!1;if(!K.select)return K.name}return K}}).filter(Boolean)}else T.select=C.filter(v=>v.read&&!Lt[v.attribute_name]).map(v=>v.attribute_name);return!0}else return!0}}allowUpdate(g,T,A){let N=ko(g);if(N?.update){let C=N.attribute_permissions;if(C?.length>0){let B=tC(C,"update");for(let v in T)if(!B[v])return!1;for(let v of C){let k=v.attribute_name;!v.update&&!(k in T)&&(T[k]=this.getProperty(k))}}return ja(this.getContext())}}allowCreate(g,T,A){if(this.isCollection){let N=ko(g);if(N?.insert){let C=N.attribute_permissions;if(C?.length>0){let B=tC(C,"insert");for(let v in T)if(!B[v])return!1;return ja(this.getContext())}else return ja(this.getContext())}}else return this.allowUpdate(g,T,A)}allowDelete(g,T,A){return!!ko(g,T)?.delete&&ja(A)}update(g,T){let A,N=typeof T=="boolean"||T===void 0&&(g==null||typeof g=="object"&&!(g instanceof URLSearchParams)),C=!1;N?(C=T,T=g,A=this.getId()):A=ci(g);let B=this.getContext();if(!Rt(B))throw new Error("Can not update a table resource outside of a transaction");if(T===!1)return this;if(typeof T=="object"&&T)if(C)Object.isFrozen(T)&&(T={...T}),this.#e={},this.#t=T;else if(N){let k=this.#t;k&&(T=Object.assign(k,T)),this.#t=T}else{let k=!0;if(g==null)throw new TypeError("Can not put a record without a target");return g.checkPermission&&(k=this.allowUpdate(B.user,T,B)),Vs(k,K=>{if(!K)throw new ft.AccessViolation(B.user);return Vs(i.get(ci(g)),M=>{let q=new um(M);return q._setChanges(T),this._writeUpdate(A,q.getChanges(),!1),q})})}return this._writeUpdate(A,this.#t,C),this}addTo(g,T){if(typeof T=="number"||typeof T=="bigint")this.#s===Fq?this.set(g,(+this.getProperty(g)||0)+T):(this.#s||this.update(),this.set(g,new Dp(T)));else throw new Error("Can not add a non-numeric value")}subtractFrom(g,T){if(typeof T=="number")return this.addTo(g,-T);throw new Error("Can not subtract a non-numeric value")}getMetadata(){return this.#n}getRecord(){return this.#e}getChanges(){return this.#t}_setChanges(g){this.#t=g}setRecord(g){this.#e=g}invalidate(g){let T=!0,A=this.getContext();return g?.checkPermission&&(T=this.allowDelete(A.user,g,A)),Vs(T,N=>{if(!N)throw new ft.AccessViolation(A.user);this._writeInvalidate(g?ci(g):this.getId())})}_writeInvalidate(g,T,A){let N=this.getContext();Fo(g),Rt(this.getContext()).addWrite({key:g,store:i,invalidated:!0,entry:this.#n,before:Te.invalidate?.bind(this,N,g),beforeIntermediate:rl(T,De.invalidate?.bind(this,N,g)),commit:a((B,v)=>{if(!(Go(B,v,A?.nodeId)<=0)){T??=null;for(let k in r)T||(T={}),T[k]===void 0&&(T[k]=this.getProperty(k));Fe.default.trace?.(`Invalidating entry in ${s} id: ${g}, timestamp: ${new Date(B).toISOString()}`),y(g,T,v,B,Gn,_,{user:N?.user,residencyId:A?.residencyId,nodeId:A?.nodeId,tableToTrack:s},"invalidate")}},"commit")})}_writeRelocate(g,T){let A=this.getContext();Fo(g),Rt(this.getContext()).addWrite({key:g,store:i,invalidated:!0,entry:this.#n,before:Te.relocate?.bind(this,A,g),beforeIntermediate:De.relocate?.bind(this,A,g),commit:a((C,B)=>{if(Go(C,B,T?.nodeId)<=0)return;let v=Be.getResidencyRecord(T.residencyId),k=0,K=null,M=B?.value;if(v&&!v.includes(server.hostname)){for(let q in r)K||(K={}),K[q]=M[q];k=Gn}else K=M;Fe.default.trace?.(`Relocating entry id: ${g}, timestamp: ${new Date(C).toISOString()}`),y(g,K,B,C,k,_,{user:A.user,residencyId:T.residencyId,nodeId:T.nodeId,expiresAt:T.expiresAt},"relocate",!1,null)},"commit")})}static _recordRelocate(g,T){if(this.getResidencyById)return!1;let A={previousResidency:this.getResidencyRecord(g.residencyId),isRelocation:!0},N=el(this.getResidency(T.value,A)),C;if(N){if(!N.includes(server.hostname))return!1;C=tl(N)}let B=0;return Fe.default.debug?.("Performing a relocate of an entry",g.key,T.value,N),y(g.key,T.value,g,g.version,B,!0,{residencyId:C,expiresAt:T.expiresAt},"relocate",!1,null),!0}static evict(g,T,A){let N;if(!((w||_)&&(!T||(N=i.getEntry(g),!N||!T)||N.version!==A))){if(w){if(i.hasLock(g,N.version))return;let C;for(let B in r)C||(C={}),C[B]=T[B];if(C)return y(g,C,N,A,bl,null,null,null,!0)}return i.ifVersion(g,A,()=>{Xc(g,T,null)}),Rl(i,N??i.getEntry(g),A)}}lock(){throw new Error("Not yet implemented")}static operation(g,T){return g.table||=s,g.schema||=c,global.operation(g,T)}put(g,T){if(T===void 0||T instanceof URLSearchParams)this.update(g,!0);else{let A=!0;if(g==null)throw new TypeError("Can not put a record without a target");let N=this.getContext();return g.checkPermission&&(A=this.allowUpdate(N.user,T,N)),Vs(A,C=>{if(!C)throw new ft.AccessViolation(N.user);if(Array.isArray(T))for(let B of T){let v=B[t];this._writeUpdate(v,B,!0)}else{let B=ci(g);this._writeUpdate(B,T,!0)}})}}create(g,T){let A=!0,N=this.getContext();if(!T&&!(g instanceof URLSearchParams)&&(T=g,g=void 0),!T||typeof T!="object"||Array.isArray(T))throw new TypeError("Can not create a record without an object");return g?.checkPermission&&(A=this.allowCreate(N.user,T,N)),Vs(A,C=>{if(!C)throw new ft.AccessViolation(N.user);let B=ci(g)??T[t];if(B===void 0)B=this.constructor.getNewId(),T[t]=B;else if(i.get(B))throw new ft.ClientError("Record already exists",409);return this._writeUpdate(B,T,!0),T})}patch(g,T){if(T===void 0||T instanceof URLSearchParams)this.update(g,!1);else{let A=this.update(g,T);if(A?.then)return A.then(()=>{})}}_writeUpdate(g,T,A,N){let C=this.getContext(),B=Rt(C);Fo(g);let v=this.#n??i.getEntry(g);this.#s=A?Fq:Vae;let k=a(M=>A?M.put?()=>M.put(C,g,T):null:M.patch?()=>M.patch(C,g,T):M.put?()=>M.put(C,g,Ul(this)):null,"writeToSources"),K={key:g,store:i,entry:v,nodeName:C?.nodeName,validate:a(M=>{T||(T=this.#t),A||T&&sS(this.#t===T?this:T)?C?.source||(B.checkOverloaded(),this.validate(T,!A),X&&(T[X.name]=X.type==="Date"?new Date(M):X.type==="String"?new Date(M).toISOString():M),A&&(t&&T[t]!==g&&(T[t]=g),Z&&(v?.value?T[Z.name]=v?.value[Z.name]:T[Z.name]=Z.type==="Date"?new Date(M):Z.type==="String"?new Date(M).toISOString():M),T=Ul(T))):B.removeWrite(K)},"validate"),before:k(Te),beforeIntermediate:rl(T,k(De)),commit:a((M,q,O)=>{if(O){if(C&&q?.version>(C.lastModified||0)&&(C.lastModified=q.version),this.#n=q,q?.value&&q.value.getRecord)throw new Error("Can not assign a record to a record, check for circular references");A||(this.#e=q?.value??null)}this.#t=void 0,this.#r=M;let G=q?.value,V;this.#s=0;let D=!1,me=Go(M,q,N?.nodeId),ne,Ee=A?"put":"patch",j;N?.residencyId!=null&&(j=N.residencyId);let J=C?.expiresAt??(h?h+Date.now():-1);if(me<=0){if(_){let Pe=q.localTime,Xe=q.version;Fe.default.trace?.("Applying CRDT update to record with id: ",g,"txn time",new Date(M),"applying later update from:",new Date(Xe),"local recorded time",new Date(Pe));let mt=[];for(;Pe>M||Xe>=M&&Pe>0;){let ye=l.get(Pe);if(!ye)break;let Se=Nt(ye);if(Xe=Se.version,Xe>=M){if(Xe===M){if(me=Go(M,{version:Xe,localTime:Pe},N?.nodeId),me===0)return pe(!1);if(me>0){Pe=Se.previousLocalTime;continue}}if(Se.type==="patch")mt.push(Se),ne=T;else if(Se.type==="put"||Se.type==="delete")return pe(!1)}Pe=Se.previousLocalTime}Pe||Fe.default.debug?.("No further audit history, applying incremental updates based on available history",g,"existing version preserved",q),mt.sort((ye,Se)=>ye.version-Se.version);for(let ye of mt){let Se=ye.getValue(i);if(Fe.default.debug?.("Rebuilding update with future patch:",new Date(ye.version),Se,ye),V=tg(V??T,Se,A),!V)return pe(!1)}}else{if(A)return pe(!1);V=tg(V??T,G,A),Fe.default.debug?.("Rebuilding update without audit:",V)}Fe.default.trace?.("Rebuilt record to save:",V," is full update:",A)}let le;if(A&&!V?le=T:this.constructor.loadAsInstance===!1?le=Ul(G,V??T):(this.#e=G,le=Ul(this,V??T)),this.#e=le,le&&le.getRecord)throw new Error("Can not assign a record to a record, check for circular references");if(j==null){v?.residencyId&&(C.previousResidency=Be.getResidencyRecord(v.residencyId));let Pe=el(Be.getResidency(le,C));if(Pe&&!Pe.includes(server.hostname))if(ne??=le,D=!0,Be.getResidencyById)le=void 0;else{le=null;for(let Xe in r)le||(le={}),le[Xe]=ne[Xe]}j=tl(Pe)}A||(ne=T),Fe.default.trace?.(`Saving record with id: ${g}, timestamp: ${new Date(M).toISOString()}${J?", expires at: "+new Date(J).toISOString():""}${q?", replaces entry from: "+new Date(q.version).toISOString():", new entry"}`,(()=>{try{return JSON.stringify(le).slice(0,100)}catch{return""}})()),Xc(g,G,le),pe(!0),C.expiresAt&&Cr();function pe(Pe){y(g,Pe?le:void 0,Pe?q:{...q,value:void 0},M,D?Gn:0,_,{omitLocalRecord:D,user:C?.user,residencyId:j,expiresAt:J,nodeId:N?.nodeId,originatingOperation:C?.originatingOperation,tableToTrack:c==="system"?null:s},Ee,!1,Pe?ne:ne??T)}a(pe,"writeCommit")},"commit")};B.addWrite(K)}async delete(g){if(xu(g)){g.select=["$id"];for await(let T of this.search(g))this._writeDelete(T.$id);return!0}if(g){let T=!0,A=this.getContext();return g.checkPermission&&(T=this.allowDelete(A.user,g,A)),Vs(T,N=>{if(!N)throw new ft.AccessViolation(A.user);let C=ci(g);return this._writeDelete(C),!0})}return this._writeDelete(this.getId()),!!this.#e}_writeDelete(g,T){let A=Rt(this.getContext());Fo(g);let N=this.getContext();return A.addWrite({key:g,store:i,entry:this.#n,nodeName:N?.nodeName,before:Te.delete?.bind(this,N,g),beforeIntermediate:De.delete?.bind(this,N,g),commit:a((C,B,v)=>{let k=B?.value;v&&(N&&B?.version>(N.lastModified||0)&&(N.lastModified=B.version),Be._updateResource(this,B)),!(Go(C,B,T?.nodeId)<=0)&&(Xc(g,k),Fe.default.trace?.(`Deleting record with id: ${g}, txn timestamp: ${new Date(C).toISOString()}`),_||R?(y(g,null,B,C,0,_,{user:N?.user,nodeId:T?.nodeId,tableToTrack:s},"delete"),_||Cr()):Rl(i,B))},"commit")}),!0}search(g){let T=this.getContext(),A=Rt(T);if(!g)throw new Error("No query provided");if(g.parseError)throw g.parseError;if(g.checkPermission&&!this.allowRead(T.user,g,T))throw new ft.AccessViolation(T.user);T&&(T.lastModified=Hae);let N=g.conditions;N?N.length===void 0&&(N=N[Symbol.iterator]?Array.from(N):[N]):N=Array.isArray(g)?g:g[Symbol.iterator]?Array.from(g):[];let C=g.id??this.getId();C&&(N=[{attribute:null,comparator:Array.isArray(C)?"prefix":"starts_with",value:C}].concat(N));let B,v={};function k(J,le){switch(le){case"and":case void 0:if(J.length<1)throw new Error('An "and" operator requires at least one condition');break;case"or":if(J.length<2)throw new Error('An "or" operator requires at least two conditions');break;default:throw new Error("Invalid operator "+le)}for(let pe of J){if(pe.conditions){pe.conditions=k(pe.conditions,pe.operator);continue}let Pe=pe[0]??pe.attribute,Xe=Pe==null?L:Qi(S,Pe);if(Xe)(Xe.type||xI[pe.comparator])&&(pe[1]===void 0?pe.value=M(pe.value,Xe):pe[1]=M(pe[1],Xe));else if(Pe!=null&&!g.allowConditionsOnDynamicAttributes)throw(0,ft.handleHDBError)(new Error,`${Pe} is not a defined attribute`,404);if(pe.chainedConditions)if(pe.chainedConditions.length===1&&(!pe.operator||pe.operator=="and")){let mt=pe.chainedConditions[0],ye,Se;if(mt.comparator==="gt"||mt.comparator==="greater_than"||mt.comparator==="ge"||mt.comparator==="greater_than_equal"?(ye=pe,Se=mt):(ye=mt,Se=pe),ye.comparator!=="lt"&&ye.comparator!=="less_than"&&ye.comparator!=="le"&&ye.comparator!=="less_than_equal")throw new Error("Invalid chained condition, only less than and greater than conditions can be chained together");let bt=Se.comparator==="ge"||Se.comparator==="greater_than_equal",_t=ye.comparator==="le"||ye.comparator==="less_than_equal";pe.comparator=(bt?"ge":"gt")+(_t?"le":"lt"),pe.value=[Se.value,ye.value]}else throw new Error("Multiple chained conditions are not currently supported")}return J}a(k,"prepareConditions");function K(J,le){if(g.enforceExecutionOrder)return J;for(let pe of J)pe.conditions&&(pe.conditions=K(pe.conditions,pe.operator));return J.length>1&&le!=="or"?Bae(J,vg(Be)):J}a(K,"orderConditions");function M(J,le){return Array.isArray(J)?J.map(pe=>NS(pe,le)):NS(J,le)}a(M,"coerceTypedValues");let q=g.operator;(N.length>0||q)&&(N=k(N,q));let O=typeof g.sort=="object"&&g.sort,G;if(O&&q!=="or"){let J=O.attribute;if(J==null)throw new ft.ClientError("Sort requires an attribute");if(B=N.find(le=>ad(le.attribute)===ad(J)),!B){let le=Qi(S,J);if(!le)throw(0,ft.handleHDBError)(new Error,`${Array.isArray(J)?J.join("."):J} is not a defined attribute`,404);if(le.indexed)B={...O,comparator:"sort"},N.push(B);else if(N.length===0&&!g.allowFullScan)throw(0,ft.handleHDBError)(new Error,`${Array.isArray(J)?J.join("."):J} is not indexed and not combined with any other conditions`,404)}B&&(B.descending=!!O.descending)}N=K(N,q),O&&(B&&N[0]===B?O.next&&(G={dbOrderedAttribute:O.attribute,attribute:O.next.attribute,descending:O.next.descending,next:O.next.next}):(B&&N.splice(N.indexOf(B),1),G=O));let V=g.select;if(N.length===0&&(N=[{attribute:t,comparator:"greater_than",value:!0}]),g.explain)return{conditions:N,operator:q,postOrdering:G,selectApplied:!!V};let D=A.useReadTxn(),me=BI(N,q,Be,D,g,T,(J,le)=>dm(J,V,T,D,le),v),ne=g.ensureLoaded!==!1,Ee=Be.transformEntryForSelect(V,T,D,v,ne,!0),j=Be.transformToOrderedSelect(me,V,G,T,D,Ee);return(g.offset||g.limit!==void 0)&&(j=j.slice(g.offset,g.limit!==void 0?(g.offset||0)+g.limit:void 0)),j.onDone=()=>{j.onDone=null,A.doneReadTxn()},j.selectApplied=!0,j.getColumns=()=>{if(V){let J=[];for(let le of V)le==="*"?J.push(...S.map(pe=>pe.name)):J.push(le.name||le);return J}return S.filter(J=>!J.computed&&!J.relationship).map(J=>J.name)},j}static transformToOrderedSelect(g,T,A,N,C,B){let v=new p_;if(A){g=dm(g,T,N,C,null);let k;v.iterate=function(M){let q,O=M?.async&&g[Symbol.asyncIterator]?g[Symbol.asyncIterator]():g[Symbol.iterator](),G,V=A.dbOrderedAttribute,D,me,ne=!0;function Ee(J){let le=J.next&&Ee(J.next),pe=J.descending;return N.sort=J,(Pe,Xe)=>{let mt=Mn(Pe,J.attribute,N),ye=Mn(Xe,J.attribute,N),Se=pe?(0,Kl.compareKeys)(ye,mt):(0,Kl.compareKeys)(mt,ye);return Se===0?le?.(Pe,Xe)||0:Se}}a(Ee,"createComparator");let j=Ee(A);return{async next(){let J;if(q)if(J=q.next(),J.done){if(G)return v.onDone&&v.onDone(),J}else return{value:await B.call(this,J.value)};k=[],D&&k.push(D);do if(J=await O.next(),J.done){if(G=!0,k.length)break;return v.onDone&&v.onDone(),J}else{let le=J.value;if(le?.then&&(le=await le),V){let pe=Mn(le,V,N);if(ne)ne=!1,me=pe;else if(pe!==me){me=pe,D=le;break}}k.push(le)}while(!0);return A.isGrouped,k.sort(j),q=k[Symbol.iterator](),J=q.next(),J.done?(v.onDone&&v.onDone(),J):{value:await B.call(this,J.value)}},return(){return v.onDone&&v.onDone(),O.return()},throw(){return v.onDone&&v.onDone(),O.throw()}}};let K=a(M=>{if(typeof T=="object"&&Array.isArray(M.attribute))for(let q=0;q<T.length;q++){let O=T[q],G;if(O.name===M.attribute[0]){for(G=O.sort||(O.sort={});G.next;)G=G.next;G.attribute=M.attribute.slice(1),G.descending=M.descending}else O===M.attribute[0]&&(T[q]=G={name:O,sort:{attribute:M.attribute.slice(1),descending:M.descending}})}M.next&&K(M.next)},"applySortingOnSelect");K(A)}else v.iterate=k=>k?.async&&g[Symbol.asyncIterator]?g[Symbol.asyncIterator]():g[Symbol.iterator](),v=v.map(function(k){try{let K=B.call(this,k);return typeof K?.catch=="function"?K.catch(M=>{throw M.partialObject={[t]:k.key},M}):K}catch(K){throw K.partialObject={[t]:k.key},K}});return v}static transformEntryForSelect(g,T,A,N,C,B){let v;C&&w&&!(typeof g=="string"?[g]:g)?.every(M=>{let q;return typeof M=="object"?q=M.name:q=M,r[q]||q===t})&&(v=!0);let k,K=a(function(M){let q;if(T?.transaction?.stale&&(T.transaction.stale=!1),M!=null){if(q=M.deref?M.deref():M.value,!q&&(M.key===void 0||M.deref)||M.metadataFlags&Gn){if(M.metadataFlags&Gn&&T.replicateFrom===!1&&B&&M.residencyId)return gc.SKIP;if(M=Zc(M.key??M,T,{transaction:A,lazy:g?.length<4,ensureLoaded:C},this?.isSync,O=>O),M?.then)return M.then(K.bind(this));q=M?.value}if(v&&M?.metadataFlags&(Gn|bl)||M?.expiresAt!=null&&M?.expiresAt<Date.now()){if(T.onlyIfCached)return{[t]:M.key,message:"This entry has expired"};let O=Ho(M.key??M,M,T);if(O?.then)return O.then(K)}}if(q==null)return B?gc.SKIP:q;if(g&&!(g[0]==="*"&&g.length===1)){let O,G=a((D,me)=>{let ne;typeof D=="object"?ne=D.name:ne=D;let Ee=Lt?.[ne],j;if(Ee){let J=N?.[ne];if(J)if(J.hasMappings){let pe=Ee.from?q[Ee.from]:ad(M.key);j=J.get(pe),j||(j=[])}else j=J.fromRecord?.(q);else j=Ee(q,T,M,!0);let le=a(pe=>{if(Ee.directReturn)return me(pe,ne);if(pe&&typeof pe=="object"){let Pe=Ee.definition?.tableClass||Be;k||(k={});let Xe=k[ne]||(k[ne]=Pe.transformEntryForSelect(ne===D?null:D.select||(Array.isArray(D)?D:null),T,A,J,C));if(Array.isArray(pe)){let mt=[],ye=Pe.transformToOrderedSelect(pe,D.select,typeof D.sort=="object"&&D.sort,T,A,Xe)[this.isSync?Symbol.iterator:Symbol.asyncIterator](),Se=a(_t=>{for(;!_t.done;){if(_t?.then)return _t.then(Se);mt.push(_t.value),_t=ye.next()}me(mt,ne)},"nextValue"),bt=Se(ye.next());bt&&(O||(O=[]),O.push(bt));return}else if(pe=Xe.call(this,pe),pe?.then){O||(O=[]),O.push(pe.then(mt=>me(mt,ne)));return}}me(pe,ne)},"handleResolvedValue");j?.then?(O||(O=[]),O.push(j.then(le))):le(j);return}else j=q[ne],j&&typeof j=="object"&&ne!==D&&(j=Be.transformEntryForSelect(D.select||D,T,A,null)({value:j}));me(j,ne)},"selectAttribute"),V;if(typeof g=="string")G(g,D=>{V=D});else if(Array.isArray(g))if(g.asArray)V=[],g.forEach((D,me)=>{D==="*"?g[me]=q:G(D,ne=>V[me]=ne)});else{V={};let D=g.forceNulls;for(let me of g)if(me==="*")for(let ne in q)V[ne]=q[ne];else G(me,(ne,Ee)=>{ne===void 0&&D&&(ne=null),V[Ee]=ne})}else throw new ft.ClientError("Invalid select"+g);return O?Promise.all(O).then(()=>V):V}return q},"transform");return K}async subscribe(g){if(!l)throw new Error("Can not subscribe to a table without an audit log");_||je({table:s,database:c,schemaDefined:u,attributes:S,audit:!0}),g||(g={});let T=!g.rawEvents,A=[],N=KI(Be,this.getId()??null,function(v,k,K,M){try{let q=k.getValue?.(i,T),O=k.type;if(!q&&O==="patch"&&T){let V=i.getEntry(v);V?.version===k.version?q=V.value:q=k.getValue?.(i,!0,K),O="put"}let G={id:v,localTime:K,value:q,version:k.version,type:O,beginTxn:M};A?A.push(G):(c!=="system"&&qe(k.size??1,"db-message",s,null),this.send(G))}catch(q){Fe.default.error?.(q)}},g.startTime||0,g),C=(async()=>{this.isCollection&&(N.includeDescendants=!0,g.onlyChildren&&(N.onlyChildren=!0)),g.supportsTransactions&&(N.supportsTransactions=!0);let v=this.getId(),k=g.previousCount;k>1e3&&(k=1e3);let K=g.startTime;if(this.isCollection){if(K){if(k)throw new ft.ClientError("startTime and previousCount can not be combined for a table level subscription");for(let{key:M,value:q}of l.getRange({start:K,exclusiveStart:!0,snapshot:!1})){let O=Nt(q);if(O.tableId!==n)continue;let G=O.recordId;if(v==null||qq(v,G)){let V=O.getValue(i,T,M);if(B({id:G,localTime:M,value:V,version:O.version,type:O.type,size:O.size}),N.queue?.length>Hq&&await N.waitForDrain()===!1)return}N.startTime=M}}else if(k){let M=[];for(let{key:q,value:O}of l.getRange({start:"z",end:!1,reverse:!0}))try{let G=Nt(O);if(G.tableId!==n)continue;let V=G.recordId;if(v==null||qq(v,V)){let D=G.getValue(i,T,q);if(M.push({id:V,localTime:q,value:D,version:G.version,type:G.type}),--k<=0)break}}catch(G){Fe.default.error("Error getting history entry",q,G)}for(let q=M.length;q>0;)B(M[--q]);M[0]&&(N.startTime=M[0].localTime)}else if(!g.omitCurrent){for(let{key:M,value:q,version:O,localTime:G,size:V}of i.getRange({start:v??!1,end:v==null?void 0:[v,Kl.MAXIMUM_KEY],versions:!0,snapshot:!1}))if(q&&(B({id:M,localTime:G,value:q,version:O,type:"put",size:V}),N.queue?.length>Hq&&await N.waitForDrain()===!1))return}}else{k&&!K&&(K=0);let M=this.#n?.localTime;if(M===vI&&(i.cache?.delete(v),this.#n=i.getEntry(v),Fe.default.trace?.("re-retrieved record",M,this.#n?.localTime),M=this.#n?.localTime),Fe.default.trace?.("Subscription from",K,"from",v,M),K<M){let q=[],O=M;do{let G=l.get(O);if(G){g.omitCurrent=!0;let V=Nt(G),D=V.getValue(i,T,O);T&&(V.type="put"),q.push({id:v,value:D,localTime:O,...V}),O=V.previousLocalTime}else break;k&&k--}while(O>K&&k!==0);for(let G=q.length;G>0;)B(q[--G]);N.startTime=M}!g.omitCurrent&&this.doesExist()&&B({id:v,localTime:M,value:this.#e,version:this.#r,type:"put"})}for(let M of A)B(M);A=null})();function B(v){c!=="system"&&qe(v.size??1,"db-message",s,null),N.send(v)}return a(B,"send"),g.listener&&N.on("data",g.listener),N}static subscribeOnThisThread(g,T){return g===0||T?.crossThreads===!1}doesExist(){return!!(this.#e||this.#s)}publish(g,T,A){if(T===void 0||T instanceof URLSearchParams)this._writePublish(this.getId(),g,T);else{let N=!0,C=this.getContext();return g.checkPermission&&(N=this.allowCreate(C.user,T,C)),Vs(N,B=>{if(!B)throw new ft.AccessViolation(C.user);let v=ci(g);this._writePublish(v,T,A)})}}_writePublish(g,T,A){let N=Rt(this.getContext());g??=null,g!==null&&Fo(g);let C=this.getContext();N.addWrite({key:g,store:i,entry:this.#n,nodeName:C?.nodeName,validate:a(()=>{C?.source||(N.checkOverloaded(),this.validate(T))},"validate"),before:Te.publish?.bind(this,C,g,T),beforeIntermediate:rl(T,De.publish?.bind(this,C,g,T)),commit:a((B,v,k)=>{v===void 0&&R&&!_&&Cr(),Fe.default.trace?.(`Publishing message to id: ${g}, timestamp: ${new Date(B).toISOString()}`),y(g,v?.value??null,v,v?.version||B,0,!0,{user:C?.user,residencyId:A?.residencyId,expiresAt:C?.expiresAt,nodeId:A?.nodeId,tableToTrack:s},"message",!1,T)},"commit")})}validate(g,T){let A,N=a((C,B,v)=>{if(B.type&&C!=null)if(T&&C.__op__&&(C=C.value),B.properties){typeof C!="object"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an object${B.type?" ("+B.type+")":""}`);let k=B.properties;for(let K=0,M=k.length;K<M;K++){let q=k[K];if(q.relationship||q.computed){g.hasOwnProperty(q.name)&&(A||(A=[])).push(`Computed property ${v}.${q.name} may not be directly assigned a value`);continue}let O=N(C[q.name],q,v+"."+q.name);O&&(C[q.name]=O)}if(B.sealed&&C!=null&&typeof C=="object")for(let K in C)k.find(M=>M.name===K)||(A||(A=[])).push(`Property ${K} is not allowed within object in property ${v}`)}else switch(B.type){case"Int":(typeof C!="number"||C>>0!==C)&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an integer (from -2147483648 to 2147483647)`);break;case"Long":(typeof C!="number"||!(Math.floor(C)===C&&Math.abs(C)<=9007199254740992))&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an integer (from -9007199254740992 to 9007199254740992)`);break;case"Float":typeof C!="number"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a number`);break;case"ID":typeof C=="string"||C?.length>0&&C.every?.(k=>typeof k=="string")||(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a string, or an array of strings`);break;case"String":typeof C!="string"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a string`);break;case"Boolean":typeof C!="boolean"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a boolean`);break;case"Date":if(!(C instanceof Date)){if(typeof C=="string"||typeof C=="number")return new Date(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a Date`)}break;case"BigInt":if(typeof C!="bigint"){if(typeof C=="string"||typeof C=="number")return BigInt(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a bigint`)}break;case"Bytes":if(!(C instanceof Uint8Array)){if(typeof C=="string")return Buffer.from(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a Buffer or Uint8Array`)}break;case"Blob":if(!(C instanceof xs)){if(typeof C=="string"&&(C=Buffer.from(C)),C instanceof Buffer)return createBlob(C,{type:"text/plain"});(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a Blob`)}break;case"array":if(Array.isArray(C)){if(B.elements)for(let k=0,K=C.length;k<K;k++){let M=C[k],q=N(M,B.elements,v+"[*]");q&&(C[k]=q)}}else(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an Array`);break}B.nullable===!1&&C==null&&(A||(A=[])).push(`Property ${v} is required (and not does not allow null values)`)},"validateValue");for(let C=0,B=S.length;C<B;C++){let v=S[C];if(v.relationship||v.computed){Object.hasOwn(g,v.name)&&(A||(A=[])).push(`Computed property ${v.name} may not be directly assigned a value`);continue}if(!T||v.name in g){let k=N(g[v.name],v,v.name);k!==void 0&&(g[v.name]=k)}}if(f)for(let C in g)S.find(B=>B.name===C)||(A||(A=[])).push(`Property ${C} is not allowed`);if(A)throw new ft.ClientError(A.join(". "))}getUpdatedTime(){return this.#r}wasLoadedFromSource(){return w?!!this.#i:void 0}static async addAttributes(g){let T=S.slice(0);for(let A of g){if(!A.name)throw new ft.ClientError("Attribute name is required");if(A.name.match(/[`/]/))throw new ft.ClientError("Attribute names cannot include backticks or forward slashes");Fae(A.name),T.push(A)}return je({table:s,database:c,schemaDefined:u,attributes:T}),Be.indexingOperation}static async removeAttributes(g){let T=S.filter(A=>!g.includes(A.name));return je({table:s,database:c,schemaDefined:u,attributes:T}),Be.indexingOperation}static getSize(){let g=i.getStats();return(g.treeBranchPageCount+g.treeLeafPageCount+g.overflowPages)*g.pageSize}static getAuditSize(){let g=l?.getStats();return g&&(g.treeBranchPageCount+g.treeLeafPageCount+g.overflowPages)*g.pageSize}static getStorageStats(){let g=i.env.path,T=rC.default.statfsSync?.(g)??{};return{available:T.bavail*T.bsize,free:T.bfree*T.bsize,size:T.blocks*T.bsize}}static async getRecordCount(g){let T=i.getStats().entryCount,A=1e3/2,N=performance.now(),C=Math.floor(T/2),B=g?.exactCount,v=0,k=0,K;for(let{value:M}of i.getRange({start:!0,lazy:!0,snapshot:!1}))if(M!=null&&v++,k++,await _c(),!B&&k<C&&performance.now()-N>A){K=k;break}if(K){let M=v;v=0;for(let{value:j}of i.getRange({start:"\uFFFF",reverse:!0,lazy:!0,limit:K,snapshot:!1}))j!=null&&v++,await _c();let q=K*2,O=(v+M)/q,G=Math.pow((v-M+1)/K/2,2)+O*(1-O)/q,V=Math.max(Math.sqrt(G)*T,1),D=Math.round(O*T),me=Math.max(D-1.96*V,v+M),ne=Math.min(D+1.96*V,T),Ee=Math.pow(10,Math.round(Math.log10(V)));return Ee>D&&(Ee=Ee/10),v=Math.round(D/Ee)*Ee,{recordCount:v,estimatedRange:[Math.round(me),Math.round(ne)]}}return{recordCount:v}}static updatedAttributes(){Lt=this.propertyResolvers={$id:a((g,T,A)=>({value:A.key}),"$id"),$updatedtime:a((g,T,A)=>A.version,"$updatedtime"),$updatedTime:a((g,T,A)=>A.version,"$updatedTime"),$expiresAt:a((g,T,A)=>A.expiresAt,"$expiresAt"),$record:a((g,T,A)=>A?{value:g}:g,"$record"),$distance:a((g,T,A)=>A&&(A.distance??T?.vectorDistances?.get(A)),"$distance")};for(let g of this.attributes){g.isPrimaryKey&&(L=g),g.resolve=null;let T=g.relationship,A=g.computed;if(T)if(g.indexed&&console.error("A relationship property can not be directly indexed, (but you may want to index the foreign key attribute)"),A&&console.error("A relationship property is already computed and can not be combined with a computed function (the relationship will be given precedence)"),Ya=!0,T.to)g.elements?.definition?(Lt[g.name]=g.resolve=(N,C,B,v)=>{let k=N[T.from?T.from:t],K=g.elements.definition.tableClass;return v?od({attribute:T.to,value:k},Rt(C).getReadTxn(),!1,K,!1).map(M=>M&&M.key!==void 0?M:K.primaryStore.getEntry(M,{transaction:Rt(C).getReadTxn()})).asArray:K.search([{attribute:T.to,value:k}],C).asArray},g.set=()=>{},g.resolve.definition=g.elements.definition,g.resolve.to=T.to,T.from&&(g.resolve.from=T.from)):console.error(`The one-to-many/many-to-many relationship property "${g.name}" in table "${s}" must have an array type referencing a table as the elements`);else if(T.from){let N=g.definition||g.elements?.definition;N?(Lt[g.name]=g.resolve=(C,B,v,k)=>{let K=C[T.from];if(K===void 0)return;if(g.elements){let q,O=K?.map(G=>{let V=N.tableClass.primaryStore[k?"getEntry":"get"](G,{transaction:Rt(B).getReadTxn()});return V?.then&&(q=!0),Be.loadAsInstance===!1&&Object.freeze(k?V?.value:V),V});return T.filterMissing?q?Promise.all(O).then(G=>G.filter($q)):O.filter($q):q?Promise.all(O):O}let M=N.tableClass.primaryStore[k?"getEntry":"get"](K,{transaction:Rt(B).getReadTxn()});return Be.loadAsInstance===!1&&Object.freeze(k?M?.value:M),M},g.set=(C,B)=>{if(Array.isArray(B)){let v=B.map(k=>k.getId?.()||k[N.tableClass.primaryKey]);C[T.from]=v}else{let v=B.getId?.()||B[N.tableClass.primaryKey];C[T.from]=v}},g.resolve.definition=g.definition||g.elements?.definition,g.resolve.from=T.from):console.error(`The relationship property "${g.name}" in table "${s}" must be a type that references a table`)}else console.error(`The relationship directive on "${g.name}" in table "${s}" must use either "from" or "to" arguments`);else if(A)typeof A.from=="function"&&this.setComputedAttribute(g.name,A.from),Lt[g.name]=g.resolve=(N,C,B)=>{let v=typeof A.from=="string"?N[A.from]:N,k=this.userResolvers[g.name];if(k)return k(v,C,B);Fe.default.warn(`Computed attribute "${g.name}" does not have a function assigned to it. Please use setComputedAttribute('${g.name}', resolver) to assign a resolver function.`),this.userResolvers[g.name]=()=>{}},g.resolve.directReturn=!0;else if(r[g.name]?.customIndex?.propertyResolver){let N=r[g.name].customIndex;Lt[g.name]=(C,B,v)=>{let k=C[g.name];return N.propertyResolver(k,B,v)},Lt[g.name].directReturn=!0}}vp(this,this),vp(um,this,!0);for(let g of S){let T=g.name;g.resolve&&(Object.defineProperty(i.encoder.structPrototype,T,{get(){return g.resolve(this,fp.getStore())},set(A){return g.set(this,A)},configurable:!0,enumerable:g.enumerable}),g.enumerable&&!i.encoder.structPrototype.toJSON&&Object.defineProperty(i.encoder.structPrototype,"toJSON",{configurable:!0,value(){let A={};for(let N in this)A[N]=this[N];return A}}))}}static setComputedAttribute(g,T){let A=Qi(S,g);if(!A){console.error(`The attribute "${g}" does not exist in the table "${s}"`);return}if(!A.computed){console.error(`The attribute "${g}" is not defined as computed in the table "${s}"`);return}this.userResolvers[g]=T}static async deleteHistory(g=0,T=!1){let A;for(let{key:N,value:C}of l.getRange({start:0,end:g}))await _c(),Nt(C).tableId===n&&(A=_g(l,N,C));if(T)for(let N of i.getRange({start:0,versions:!0})){let{value:C,localTime:B}=N;await _c(),C===null&&B<g&&(A=Rl(i,N))}await A}static async*getHistory(g=0,T=1/0){for(let{key:A,value:N}of l.getRange({start:g||1,end:T})){await _c();let C=Nt(N);C.tableId===n&&(yield{id:C.recordId,localTime:A,version:C.version,type:C.type,value:C.getValue(i,!0,A),user:C.user,operation:C.originatingOperation})}}static async getHistoryOfRecord(g){let T=[];if(g==null)throw new Error("An id is required");let A=i.getEntry(g);if(!A)return T;let N=A.localTime;if(!N)throw new Error("The entry does not have a local audit time");let C=0;do{await _c();let B=l.get(N);if(B){let v=Nt(B);T.push({id:v.recordId,localTime:N,version:v.version,type:v.type,value:v.getValue(i,!0,N),user:v.user}),N=v.previousLocalTime}else break}while(C<1e3&&N);return T.reverse()}static cleanup(){F?.remove()}}let E_=IS(async(W,g,T)=>{for(let A of Be.sources)if(A.get&&(!A.get.reliesOnPrototype||A.prototype.get)){if(A.available?.(T)===!1)continue;g.source=A;let N=await A.get(W,g);if(N)return N}},()=>{throw new ft.ServerError("Service unavailable, exceeded request queue limit for resolving cache record",503)});return Be.updatedAttributes(),h&&Be.setTTLExpiration(h/1e3),Q&&mm(),Be;function Xc(W,g,T){let A;for(let N in r){let C=r[N],B=C.isIndexing,v=Lt[N],k=T&&(v?v(T):T[N]),K=g&&(v?v(g):g[N]);if(k===K&&!B)continue;if(C.customIndex){C.customIndex.index(W,k,K);continue}A=!0;let M=C.indexNulls,q=(0,Xp.getIndexedValues)(k,M),O=(0,Xp.getIndexedValues)(K,M);if(O?.length>0){let G=new Set(O);if(q=q?q.filter(V=>{if(G.has(V))G.delete(V);else return!0}):[],O=Array.from(G),(O.length>0||q.length>0)&&Bq){let V=O.concat(q).map(D=>({key:D,value:W}));C.prefetch(V,Gq)}for(let V=0,D=O.length;V<D;V++)C.remove(O[V],W)}else q?.length>0&&Bq&&C.prefetch(q.map(G=>({key:G,value:W})),Gq);if(q)for(let G=0,V=q.length;G<V;G++)C.put(q[G],W)}return A}a(Xc,"updateIndices");function Fo(W){switch(typeof W){case"number":return!0;case"string":if(W.length<659)return!0;if(W.length>kq)throw new Error("Primary key size is too large: "+W.length);break;case"object":if(W===null)throw new Error("Invalid primary key of null");break;case"bigint":if(W<2n**64n&&W>-(2n**64n))return!0;break;default:throw new Error("Invalid primary key type: "+typeof W)}if((0,Kl.writeKey)(W,Kae,0)>kq)throw new Error("Primary key size is too large: "+W.length);return!0}a(Fo,"checkValidId");function ci(W){return typeof W=="object"&&W?W.id:W}a(ci,"requestTargetToId");function xu(W){return typeof W=="object"&&W&&W.isCollection}a(xu,"isSearchTarget");function Zc(W,g,T,A,N){if(Be.getResidencyById&&T.ensureLoaded&&g?.replicateFrom!==!1){let B=el(Be.getResidencyById(W));if(B&&!B.includes(server.hostname)&&I)return I({key:W,residency:B}).then(N)}let C=a(()=>{if(g?.transaction?.stale&&(g.transaction.stale=!1),T.transaction?.isDone)return N(null,W);let B=i.getEntry(W,T);return c!=="system"&&(T.type==="read"||!T.type)&&(Yq.default.trace?.("Recording db-read action for",`${c}.${s}`),qe(B?.size??1,"db-read",s,null)),g?._freezeRecords&&Object.freeze(B?.value),B?.residencyId&&B.metadataFlags&Gn&&I&&T.ensureLoaded&&g?.replicateFrom!==!1?I(B).then(v=>N(v,W),v=>(Fe.default.error?.("Error loading remote record",W,B,T,v),N(null,W))):(B&&g&&(B?.version>(g.lastModified||0)&&(g.lastModified=B.version),B?.localTime&&!g.lastRefreshed&&(g.lastRefreshed=B.localTime)),N(B,W))},"whenPrefetched");return A?C():ae>0?(ae--,C()):new Promise((B,v)=>{ae===0?(ae--,i.prefetch([W],()=>{k(),K()})):(de.push(W),oe.push(K),de.length>h_&&(ae--,k()));function k(){if(de.length>0){let M=oe;i.prefetch(de,()=>{ae===-1?k():ae++;for(let q of M)q()}),de=[],oe=[],he>2&&he--}else ae=he,he<lm&&he++}a(k,"prefetch");function K(){try{B(C())}catch(M){v(M)}}a(K,"load")})}a(Zc,"loadLocalRecord");function ko(W,g){let T=g?.checkPermission;if(typeof T!="object"){if(!W?.role)return;T=W.role.permission}if(T.super_user)return Yae;let A=T[c],N,C=A?.tables;if(C)return C[s];if(c==="data"&&(N=T[s])&&!N.tables)return N}a(ko,"getTablePermissions");function Ho(W,g,T,A){if(w){let N=!1;if(T.noCache?N=!0:(g?(!g.value||g.metadataFlags&(Gn|bl)||g.expiresAt!=null&&g.expiresAt<Date.now())&&(N=!0):N=!0,rn(!N,"cache-hit",s)),N){let C=fm(W,g,T).then(B=>(B?.value&&B?.value.getRecord?.()&&Fe.default.error?.("Can not assign a record that is already a resource"),T&&(B?.version>(T.lastModified||0)&&(T.lastModified=B.version),T.lastRefreshed=Date.now()),B));if(T?.onlyIfCached||g?.value&&A?.allowStaleWhileRevalidate?.(g,W)){if(C.catch(B=>Fe.default.warn?.(B)),T?.onlyIfCached&&!A.doesExist())throw new ft.ServerError("Entry is not cached",504);return}else return C}}else if(g?.value&&g.expiresAt!=null&&g.expiresAt<Date.now())return Be.evict(g.key,g.value,g.version),g.value=null,{then(N){return N(g)}}}a(Ho,"ensureLoadedFromSource");function Rt(W){let g=W?.transaction;if(g){if(!g.lmdbDb)return g.lmdbDb=i,g;do{if(g.lmdbDb?.path===i.path)return g;let T=g.next;if(!T)return g=g.next=new Vo,g.lmdbDb=i,g;g=T}while(!0)}else return new X_}a(Rt,"txnForContext");function Mn(W,g,T){if(!W)return;let A=(W.deref?W.deref():W.value)??i.getEntry(W.key)?.value;if(typeof g=="object"){let C=Lt,B=A;for(let v=0,k=g.length;v<k;v++){let K=g[v],M=C?.[K];B=M&&B?M(B,T,W):B?.[K],W=null,C=M?.definition?.tableClass?.propertyResolvers}return B}let N=Lt[g];return N?N(A,T,W):A[g]}a(Mn,"getAttributeValue");function dm(W,g,T,A,N){let C=N?.length,B={transaction:A,lazy:C>0||typeof g=="string"||g?.length<4,alwaysPrefetch:!0},v;function k(K,M){let q=K?.value;if(!q)return gc.SKIP;for(let O=0;O<C;O++)if(!v?.includes(O)&&!N[O](q,K))return gc.SKIP;return M!==void 0&&(K.key=M),K}if(a(k,"processEntry"),C>0||!W.hasEntries){let K=W.map(M=>{if(v=null,typeof M=="object"&&M?.key!==void 0)return C>0?k(M):M;if(M==null)return gc.SKIP;for(let q=0;q<C;q++){let G=N[q].idFilter;if(G){if(!G(M))return gc.SKIP;v||(v=[]),v.push(q)}}return Zc(M,T,B,!1,k)});return Array.isArray(W)&&(K=K.filter(M=>M!==gc.SKIP)),K.hasEntries=!0,K}return W}a(dm,"transformToEntries");function Go(W,g,T=server.replication?.getThisNodeId(l)){if(W<=g?.version){if(g?.version===W&&T!==void 0){let A=server.replication?.exportIdMapping(l),N=g.localTime,C=N&&l.get(N);if(C){let B,v,k=Nt(C);for(let K in A)A[K]===T&&(B=K),A[K]===k.nodeId&&(v=K);if(B>v)return 1;if(B===v)return 0}}return-1}return 1}a(Go,"precedesExistingVersion");async function fm(W,g,T){let A=g?.metadataFlags,N=g?.version,C,B;if(!i.attemptLock(W,N,()=>{clearTimeout(B);let M=i.getEntry(W);!M||!M.value||M.metadataFlags&(Gn|bl)||M.expiresAt!=null&&M.expiresAt<Date.now()?C(fm(W,i.getEntry(W),T)):C(M)}))return new Promise(M=>{C=M,B=setTimeout(()=>{i.unlock(W,N)},$ae)});let v=g?.value,k={requestContext:T,replacingRecord:v,replacingEntry:g,replacingVersion:N,noCacheStore:!1,source:null,resourceCache:T?.resourceCache,transaction:void 0,expiresAt:void 0,lastModified:void 0},K=T?.responseHeaders;return new Promise((M,q)=>{let O;Vs(wt(k,async G=>{let V=performance.now(),D,me,ne;try{D=await E_(W,k,g),ne=A&Gn;let j=k.lastModified||ne&&N;j||(j=(0,Xp.getNextMonotonicTime)()),me=ne||j>N||!v;let J=performance.now()-V;if(qe(J,"cache-resolution",s,null,"success"),K&&Jp(K,"Server-Timing",`cache-resolve;dur=${J.toFixed(2)}`,!0),G.timestamp=j,h&&k.expiresAt==null&&(k.expiresAt=Date.now()+h),D){if(typeof D!="object")throw new Error("Only objects can be cached and stored in tables");if(D.status>0&&D.headers)if(D.status>=300)if(D.status===304)D=v,j=N;else throw new ft.ServerError(D.body||"Error from source",D.status);else D=D.body;typeof D.toJSON=="function"&&(D=D.toJSON()),t&&D[t]!==W&&(D[t]=W)}O=!0,M({key:W,version:j,value:D})}catch(j){j.message+=` while resolving record ${W} for ${s}`,v&&((j.code==="ECONNRESET"||j.code==="ECONNREFUSED"||j.code==="EAI_AGAIN")&&!T?.mustRevalidate||T?.staleIfError&&(j.statusCode===500||j.statusCode===502||j.statusCode===503||j.statusCode===504))?(M({key:W,version:N,value:v}),Fe.default.trace?.(j.message,"(returned stale record)")):q(j);let J=performance.now()-V;qe(J,"cache-resolution",s,null,"fail"),K&&Jp(K,"Server-Timing",`cache-resolve;dur=${J.toFixed(2)}`,!0),k.transaction.abort();return}if(T?.noCacheStore||k.noCacheStore){k.transaction.abort();return}Rt(k).addWrite({key:W,store:i,entry:g,nodeName:"source",before:rl(D),commit:a((j,J)=>{if(J?.version===N)if(Xc(W,v,D),D){De.put?.(k,W,D),J&&(T.previousResidency=Be.getResidencyRecord(J.residencyId));let le,pe=!1,Pe,Xe=el(Be.getResidency(D,T));if(Xe){if(!Xe.includes(server.hostname))if(le=D,pe=!0,Be.getResidencyById)D=void 0;else{D=null;for(let mt in r)D||(D={}),D[mt]=le[mt]}Pe=tl(Xe)}Fe.default.trace?.(`Writing resolved record from source with id: ${W}, timestamp: ${new Date(j).toISOString()}`),y(W,D,J,j,pe?Gn:0,_&&(me||pe)||null,{user:k?.user,expiresAt:k.expiresAt,residencyId:Pe,tableToTrack:s},"put",!!ne,le)}else J&&(De.delete?.(k,W),Fe.default.trace?.(`Deleting resolved record from source with id: ${W}, timestamp: ${new Date(j).toISOString()}`),_||R?y(W,null,J,j,0,_&&me||null,{user:k?.user,tableToTrack:s},"delete",!!ne):Rl(i,J,N))},"commit")})}),()=>{i.unlock(W,N)},G=>{i.unlock(W,N),O&&Fe.default.error?.("Error committing cache update",G)})})}a(fm,"getFromSource");function ja(W){if(!W||W.user?.role?.permission?.super_user)return!0;if(W.replicateTo)throw new ft.ClientError("Can not specify replication parameters without super user permissions",403);if(W.replicatedConfirmation)throw new ft.ClientError("Can not specify replication confirmation without super user permissions",403);return!0}a(ja,"checkContextPermissions");function Cr(W){let g=!1;if(W&&(W-$e>1&&(g=!0),$e=W),!(Qe===ss&&!g)&&(ss=Qe,(0,Vl.getWorkerIndex)()===(0,Vl.getWorkerCount)()-1))return Pt&&clearTimeout(Pt),Qe?new Promise(T=>{let A=new Date;A.setMonth(0),A.setDate(1),A.setHours(0),A.setMinutes(0),A.setSeconds(0);let N=Qe/(1+$e),C=g?Date.now():Math.ceil((Date.now()-A.getTime())/N)*N+A.getTime(),B=a(v=>{Fe.default.trace?.(`Scheduled next cleanup scan at ${new Date(v)}`),Pt=setTimeout(()=>H=H.then(async()=>{if(B(Math.max(v+Qe,Date.now())),i.rootStore.status!=="open"){clearTimeout(Pt);return}let k=50,K=new Array(k),M=0,q=Math.pow($e,8)*(Pd.get(U.STORAGE_RECLAMATION_EVICTIONFACTOR)??1e5),O=E/Math.pow(Math.max($e,1),4);Fe.default.debug?.(`Starting cleanup scan for ${s}, evict threshold ${q}, adjusted eviction ${O}ms`);function G(V,D,me,ne){let Ee=V+O-Date.now();if(Ee<0)return!0;if($e){let j=i.lastSize;return me&en&&dl(ne,J=>{J.size&&(j+=J.size)}),Fe.default.trace?.(`shouldEvict adjusted ${Ee} ${j}, ${Ee*(V-D)/j} < ${q}`),Ee*(V-D)/j<q}return!1}a(G,"shouldEvict");try{let V=0;for(let D of i.getRange({start:!1,snapshot:!1,versions:!0,lazy:!0})){let{key:me,value:ne,version:Ee,expiresAt:j,metadataFlags:J}=D,le;ne===null&&!_&&Ee+qae<Date.now()?le=Rl(i,D,Ee):j!=null&&G(j,Ee,J,ne)&&(le=Be.evict(me,ne,Ee),V++),le&&(await K[M],K[M]=le.catch(pe=>{Fe.default.error?.("Cleanup error",pe)}),++M>=k&&(M=0)),await _c()}Fe.default.debug?.(`Finished cleanup scan for ${s}, evicted ${V} entries`)}catch(V){Fe.default.warn?.(`Error in cleanup scan for ${s}:`,V)}T(void 0),$e=0}),Math.min(v-Date.now(),2147483647)).unref()},"startNextTimer");B(C)}):void 0}a(Cr,"scheduleCleanup");function Bu(){F=l?.addDeleteRemovalCallback(n,i,(W,g)=>{i.remove(W,g)})}a(Bu,"addDeleteRemoval");function mm(){(0,Vl.getWorkerIndex)()===0&&setInterval(async()=>{if(!Qc){Qc=!0;try{let W=Q.name,g=r[W];if(!g)throw new Error(`expiresAt attribute ${Q} must be indexed`);for(let T of g.getRange({start:!0,values:!1,end:Date.now(),snapshot:!1})){for(let A of g.getValues(T)){let N=i.getEntry(A);N?.value?N.value[W]<Date.now()&&Be.evict(A,N.value,N.version):i.ifVersion(A,N?.version,()=>g.remove(T,A))}await _c()}}catch(W){Fe.default.error?.("Error in evicting old records",W)}finally{Qc=!1}}},Gae).unref()}a(mm,"runRecordExpirationEviction");function el(W){if(W!=null){if(Array.isArray(W))return W;if(typeof W=="number"){if(W>=65536)throw new Error(`Shard id ${W} must be below 65536`);let g=server.shards?.get?.(W);if(g)return Fe.default.trace?.(`Shard ${W} mapped to ${g.map(T=>T.name).join(", ")}`),g.map(T=>T.name);throw new Error(`Shard ${W} is not defined`)}throw new Error(`Shard or residency list ${W} is not a valid type, must be a shard number or residency list of node hostnames`)}}a(el,"residencyFromFunction");function tl(W){if(W){let g=W.join(","),T=d.get([Symbol.for("residency_by_set"),g]);return T||(d.put([Symbol.for("residency_by_set"),g],T=Math.floor(Math.random()*2147418112)+65535),d.put([Symbol.for("residency_by_id"),T],W),T)}}a(tl,"getResidencyId");function rl(W,g){let T=cI(W,i.rootStore);if(T){let A=g;return A?async()=>{await A(),await T()}:()=>T()}return g}a(rl,"preCommitBlobsForRecordBefore")}function tC(e,t){let r=e.attr_object||(e.attr_object={}),n=r[t];if(n)return n;n=r[t]=Object.create(null);for(let s of e)n[s.attribute_name]=s[t];return n}function Gq(){}function NS(e,t){let r=t?.type;if(e===null)return e;if(e===""&&r&&r!=="String"&&r!=="Any")return null;try{switch(r){case"Int":case"Long":if(e[0]==="$")return wS(parseInt(e.slice(1),36));if(e==="null")return null;if(!/^-?[0-9]+$/.test(e)&&!(e instanceof Date))throw new SyntaxError;return wS(+e);case"Float":return e==="null"?null:wS(+e);case"BigInt":return e==="null"?null:BigInt(e);case"Boolean":return(0,CS.autoCastBooleanStrict)(e);case"Date":if(isNaN(e)){if(e==="null")return null;Wae.test(e)||(e+="Z");let n=new Date(e);return wS(n.getTime()),n}return new Date(+e);case void 0:case"Any":return(0,CS.autoCast)(e);default:return e}}catch(n){throw n.message=`Invalid value for attribute ${t.name}: "${e}", expecting ${r}`,n.statusCode=400,n}}function wS(e){if(isNaN(e))throw new SyntaxError;return e}function qq(e,t){if(e==null)return!0;if(!Array.isArray(t))return e===t||t.startsWith?.(e);if(Array.isArray(e)){let r=e.length;if(e[r-1]===null&&r--,t.length>=r){for(let n=0;n<r;n++)if(t[n]!==e[n])return!1;return!0}return!1}else if(t[0]===e)return!0}function Vs(e,t,r){return e?.then?e.then(t,r):t(e)}function $q(e){return e!=null}function Ks(e){try{return JSON.stringify(e)}catch{return e}}function jae(e){let t=process.pid;return e.env.readerList().slice(1).some(r=>+r.match(/\d+/)?.[0]!=t)}var gc,Xp,Vq,Kq,Pd,ft,Zp,eh,Fe,Kl,Vl,CS,rC,Yq,Bae,Fae,kae,Hae,Gae,qae,Bq,$ae,Fq,Vae,Gn,bl,Kae,kq,Hq,Yae,Wae,_c,xg=ie(()=>{$();gc=require("lmdb"),Xp=b(Us()),Vq=b(require("lodash")),Kq=b(xm());Xi();Fm();Pd=b(fe());YI();ft=b(ge()),Zp=b(sa()),eh=b(ms());Oe();Ug();Fe=b(hr());Xw();ec();Kl=require("ordered-binary"),Vl=b(it());Yi();CS=b(ue());gl();Hn();rg();Qp();rC=b(require("node:fs"));ls();Tg();Yq=b(ee());eC();({sortBy:Bae}=Vq.default),{validateAttribute:Fae}=Kq.default,kae=new Uint8Array(9);kae[8]=192;Hae=1/0,Gae=6e4,qae=864e5;Pd.initSync();Bq=Pd.get(U.STORAGE_PREFETCHWRITES),$ae=1e4,Fq=1,Vae=2,Gn=1,bl=8,Kae=Buffer.allocUnsafeSlow(8192),kq=1978,Hq=100,Yae={read:!0,insert:!0,update:!0,delete:!0,isSuperUser:!0};a(OS,"makeTable");a(tC,"attributesAsObject");a(Gq,"noop");Wae=/[+-][0-9]{2}:[0-9]{2}|[a-zA-Z]$/;a(NS,"coerceType");a(wS,"rejectNaN");a(qq,"isDescendantId");_c=a(()=>new Promise(setImmediate),"rest");a(Vs,"when");a($q,"exists");a(Ks,"stringify");a(jae,"hasOtherProcesses")});function PS(e,t){if(!Array.isArray(e)||!Array.isArray(t))throw new Error("Euclidean distance comparison requires an array");let r=0,n=Math.max(e.length,t.length);for(let s=0;s<n;s++){let i=e[s]||0,o=t[s]||0,c=i-o;r+=c*c}return r}function LS(e,t){if(!Array.isArray(e)||!Array.isArray(t))throw new Error("Cosine distance comparison requires an array");let r=0,n=0,s=0,i=Math.max(e.length,t.length);for(let o=0;o<i;o++){let c=e[o]||0,l=t[o]||0;r+=c*l,n+=c*c,s+=l*l}return n=Math.sqrt(n),s=Math.sqrt(s),1-r/(n*s||1)}var jq=ie(()=>{a(PS,"euclideanDistance");a(LS,"cosineDistance")});var zq,Jq,Dd,co,Ld,zae,Jae,DS,Qq=ie(()=>{jq();zq=require("msgpackr"),Jq=b(hr()),Dd=b(ge()),co=(0,Jq.loggerWithTag)("HNSW"),Ld=Symbol.for("entryPoint"),zae=Symbol.for("key"),Jae=10,DS=class{static{a(this,"HierarchicalNavigableSmallWorld")}static useObjectStore=!0;indexStore;M=16;efConstruction=100;efConstructionSearch=50;mL=1/Math.log(this.M);optimizeRouting=.5;nodesVisitedCount=0;idIncrementer;distance;constructor(t,r){this.indexStore=t,t&&(this.indexStore.encoder.useFloat32=zq.FLOAT32_OPTIONS.ALWAYS),this.distance=r?.distance==="euclidean"?PS:LS,r&&(r.M!==void 0&&(this.M=r.M,this.mL=1/Math.log(this.M)),r.efConstruction!==void 0&&(this.efConstruction=this.efConstructionSearch=r.efConstruction),r.efConstructionSearch!==void 0&&(this.efConstructionSearch=r.efConstructionSearch),r.mL!==void 0&&(this.mL=r.mL),r.optimizeRouting!==void 0&&(this.optimizeRouting=r.optimizeRouting))}index(t,r,n){let s=typeof t=="number"?[zae,t]:t,i=this.indexStore.get(s);if(!i){if(!r)return;if(!this.idIncrementer){let f=0;for(let m of this.indexStore.getKeys({reverse:!0,limit:1,start:1/0,end:0}))typeof m=="number"&&(f=m);this.idIncrementer=new BigInt64Array([BigInt(f)+1n]),this.idIncrementer=new BigInt64Array(this.indexStore.getUserSharedBuffer("next-id",this.idIncrementer.buffer))}i=Number(Atomics.add(this.idIncrementer,0,1n)),this.indexStore.put(s,i)}let o=new Map,c,l=this.indexStore.get(Ld);if(n?c={...this.indexStore.get(i)}:c={},r){let f=l&&this.indexStore.get(l);if(f==null){let E=Math.floor(-Math.log(Math.random())*this.mL),_={vector:r,level:E,primaryKey:t};for(let R=0;R<=E;R++)_[R]=[];if(this.indexStore.put(i,_),typeof i!="number")throw new Error("Invalid nodeId: "+i);co.debug?.("setting entry point to",i),this.indexStore.put(Ld,i);return}let m=c.level??Math.min(Math.floor(-Math.log(Math.random())*this.mL),Jae),p=f.level;if(m>=p){if(typeof i!="number")throw new Error("Invalid nodeId: "+i);co.debug?.("setting entry point to",i),this.indexStore.put(Ld,i)}for(;p>m;){let E=this.searchLayer(r,l,f,this.efConstruction,p);E.length>0&&(l=E[0].id,f=E[0].node),p--}let h=new Array(m+1);for(let E=0;E<=m;E++)h[E]=[];for(let E=Math.min(m,p);E>=0;E--){let _=this.searchLayer(r,l,f,this.efConstruction,E);_=_.slice(0,this.M<<1),_.length===0&&E===0&&co.info?.("should not have zero connections for",l);let R=h[E];for(let S=0;S<_.length;S++){let{id:y,distance:I,node:w}=_[S];if(y===i)continue;let L=[];if(this.optimizeRouting){let X=!1,Q=w[E],F=1+this.optimizeRouting*(1+.5*S/this.M);for(let de=0;de<Q?.length;de++){let{id:oe,distance:ae}=Q[de],he=1+this.optimizeRouting*(1+.5*de/this.M);for(let Te=0;Te<R.length;Te++){let{id:De,distance:Qe}=R[Te];if(De===oe){I*F>Qe+ae?X=!0:ae*he>I+Qe&&(L.push({fromId:De,toId:y}),L.push({fromId:y,toId:De}));break}}if(X)break}if(X)continue}else if(S>=(E>0?this.M:this.M<<1))continue;R.push({id:y,distance:I});for(let{fromId:X,toId:Q}of L){let F=d(X);F||(F=d(X,this.indexStore.get(X)));for(let de=0;de<F[E].length;de++)if(F[E][de].id===Q){Object.isFrozen(F[E])&&(F[E]=F[E].slice()),F[E].splice(de,1);break}}let H=c[E],Z=H?.find(({id:X})=>X===y);if(Z){let X=H?.indexOf(Z);H.copied||(H=[...H],H.copied=!0,c[E]=H),H.splice(X,1)}else this.addConnection(y,d(y,w),i,E,I,d)}}this.indexStore.put(i,{vector:r,level:m,primaryKey:t,...h})}else{if(l===i){let f=c.level??0;for(let m=f;m>=0&&(l=c[m]?.[0]?.id,l===void 0);m--);if(l===void 0){let m=-1;for(let{key:p,value:h}of this.indexStore.getRange({start:0,end:1/0}))if(h.level>m){if(l=p,h.level===f)break;m=h.level}}if(l===void 0)this.indexStore.remove(Ld);else{if(typeof l!="number")throw new Error("Invalid nodeId: "+l);co.debug?.("setting entry point to",l),this.indexStore.put(Ld,l)}}this.indexStore.remove(i)}let u=new Map;if(c.level!==void 0)for(let f=0;f<=c.level;f++){let m=c[f];for(let{id:p}of m){let h=d(p,this.indexStore.get(p));if(h)for(let E=0;E<=f;E++)h[E]=h[E]?.filter(({id:_})=>_!==i),h[E]?.length===0&&(co.info?.("node was left orphaned, will reindex",p),u.set(h.primaryKey,h.vector))}}function d(f,m){let p=o.get(f);return!p&&m&&(p={...m},o.set(f,p)),p}a(d,"updateNode");for(let[f,m]of o)this.indexStore.put(f,m);for(let[f,m]of u)this.index(f,m,m);this.checkSymmetry(i,this.indexStore.get(i))}getEntryPoint(){let t=this.indexStore.get(Ld);if(t===void 0)return;let r=this.indexStore.get(t);return{id:t,...r}}searchLayer(t,r,n,s,i,o=this.distance){let c=new Set([r]),l=[{id:r,distance:this.distance(t,n.vector),node:n}],u=[...l];for(;l.length>0;){l.sort((p,h)=>p.distance-h.distance);let d=l.shift(),f=u[u.length-1].distance;if(d.distance>f)break;let m=d.node;for(let{id:p}of m[i]||[]){if(c.has(p)||p===void 0)continue;c.add(p);let h=this.indexStore.get(p);if(!h)continue;this.nodesVisitedCount++;let E=o(t,h.vector);if(E<f||u.length<s){let _={id:p,distance:E,node:h};l.push(_),u.push(_)}}u.sort((p,h)=>p.distance-h.distance),u.length>s&&u.splice(s,u.length-s)}return u.visited=c.size,u}search({target:t,value:r,descending:n,distance:s,comparator:i}){let o=0;switch(i){case"lt":case"le":o=r;case"sort":break;default:throw new Dd.ClientError(`Can not use "${i}" comparator with HNSW`)}if(n)throw new Dd.ClientError("Can not use descending sort order with HNSW");let c;if(s==="cosine")c=LS;else if(s==="euclidean")c=PS;else{if(s)throw new Dd.ClientError("Unknown distance function");c=this.distance}if(!t)throw new Dd.ClientError("A target vector must be provided for an HNSW query");if(!Array.isArray(t))throw new Dd.ClientError("The target vector must be an array");let l=this.getEntryPoint();if(!l)return[];let u=l.id,d=[];for(let f=l.level;f>=0;f--)if(d=this.searchLayer(t,u,l,this.efConstructionSearch,f,c),d.length>0){let m=d[0];l=m.node,u=m.id}return o&&(d=d.filter(f=>f.distance<o)),d.map(f=>({key:f.node.primaryKey,distance:f.distance}))}checkSymmetry(t,r){if(!r)return;let n=0,s;for(;(s=r[n])&&s.length!==0;){for(let{id:i}of s){let o=this.indexStore.get(i);if(!o){co.info?.("could not find neighbor node",o);continue}o[n]?.find(({id:l})=>l==t)||co.info?.("asymmetry detected",o[n])}n++}}addConnection(t,r,n,s,i,o){r[s]||(r[s]=[]);let c=s===0?this.M<<1:this.M;if(this.optimizeRouting&&(c<<=2),r[s].length>=c+(c>>2)){co.debug?.("maxConnections reached, removing some connections",c);let l=[...r[s]];l.sort((f,m)=>f.distance-m.distance);let u=l.slice(0,c),d=l.slice(c);r[s]=u;for(let f of d){let m=o(f.id)??this.indexStore.get(f.id);m&&m[s]&&(m=o(f.id,m),m[s]=m[s].filter(({id:p})=>p!==t),s===0&&m[s].length===0&&co.info?.("should not remove last connection",t,n))}}r[s].find(({id:l})=>l===n)?co.debug?.("already connected",t,n):r[s]=[...r[s],{id:n,distance:i}]}validateConnectivity(t=0){let r=this.getEntryPoint(),n=new Set,s=[r.id];n.add(r.id);let i=0;for(;s.length>0;){let o=s.shift(),c=this.indexStore.get(o);for(let l=t;l<=c.level;l++)for(let{id:u}of c[l]||[])i++,n.has(u)||(n.add(u),s.push(u))}return n.size!==this.totalNodes&&console.log("visited",n.size,"total",this.totalNodes),{isFullyConnected:n.size===this.totalNodes,averageConnections:i/n.size}}get totalNodes(){return Array.from(this.indexStore.getKeys({start:0,end:1/0})).length}estimateCountAsSort(){return Math.sqrt(this.indexStore.getStats().entryCount*this.efConstructionSearch)}propertyResolver(t,r,n){let s=r?.sort;if(s){let i=s.vectorDistances;if(i){let l=i.get(n);if(l)return l}else i=r.vectorDistances=s.vectorDistances=new Map;let o=this.distance;s.type&&(o=s.distance==="euclidean"?PS:LS);let c=o(s.target,t);return i.set(n,c),c}return t}}});var nC,Xq=ie(()=>{Qq();nC={HNSW:DS}});var Et={};Re(Et,{NON_REPLICATING_SYSTEM_TABLES:()=>vS,database:()=>gd,databaseEnvs:()=>ua,databaseEventsEmitter:()=>Rn,databases:()=>xe,dropDatabase:()=>nN,dropTableMeta:()=>rce,getDatabases:()=>dt,getDefaultCompression:()=>HS,getTables:()=>Xae,onRemovedDB:()=>ih,onRemovedTable:()=>nce,onUpdatedTable:()=>Yl,readMetaDb:()=>th,resetDatabases:()=>Bd,table:()=>je,tables:()=>yn});function sh(e,t){let r=FS.OpenDBIObject??FS.default.OpenDBIObject;return new r(e,t)}function Xae(){return BS||dt(),yn||{}}function dt(){if(BS)return xe;BS=!0,Ud=new Map;let e=(0,nr.getHdbBasePath)()&&(0,Yt.join)((0,nr.getHdbBasePath)(),sl),t=(0,nr.get)(U.DATABASES)||{};if(process.env.SCHEMAS_DATA_PATH&&(t.data={path:process.env.SCHEMAS_DATA_PATH}),e=process.env.STORAGE_PATH||(0,nr.get)(U.STORAGE_PATH)||e&&((0,Ts.existsSync)(e)?e:(0,Yt.join)((0,nr.getHdbBasePath)(),I_)),!!e){if((0,Ts.existsSync)(e))for(let r of(0,Ts.readdirSync)(e,{withFileTypes:!0})){let n=(0,Yt.basename)(r.name,".mdb");r.isFile()&&(0,Yt.extname)(r.name).toLowerCase()===".mdb"&&!t[n]?.path&&th((0,Yt.join)(e,r.name),null,n)}if((0,Ts.existsSync)((0,Md.getBaseSchemaPath)())){for(let r of(0,Ts.readdirSync)((0,Md.getBaseSchemaPath)(),{withFileTypes:!0}))if(!r.isFile()){let n=(0,Yt.join)((0,Md.getBaseSchemaPath)(),r.name),s=(0,Yt.join)((0,Md.getTransactionAuditStoreBasePath)(),r.name);for(let i of(0,Ts.readdirSync)(n,{withFileTypes:!0}))if(i.isFile()&&(0,Yt.extname)(i.name).toLowerCase()===".mdb"){let o=(0,Yt.join)(s,i.name);th((0,Yt.join)(n,i.name),(0,Yt.basename)(i.name,".mdb"),r.name,o,!0)}}}if(t)for(let r in t){let n=t[r],s=n.path;if((0,Ts.existsSync)(s))for(let o of(0,Ts.readdirSync)(s,{withFileTypes:!0}))o.isFile()&&(0,Yt.extname)(o.name).toLowerCase()===".mdb"&&th((0,Yt.join)(s,o.name),(0,Yt.basename)(o.name,".mdb"),r);let i=n.tables;if(i)for(let o in i){let c=i[o],l=(0,Yt.join)(c.path,(0,Yt.basename)(o+".mdb"));(0,Ts.existsSync)(l)&&th(l,o,r,null,!0)}}for(let r in xe){let n=Ud.get(r);if(n){let s=xe[r];r.includes("delete")&&Dr.trace(`defined tables ${Array.from(n.keys())}`);for(let i in s)n.has(i)||(Dr.trace(`delete table class ${i}`),delete s[i])}else if(delete xe[r],r==="data"){for(let s in yn)delete yn[s];delete yn[kS]}}if((0,nr.get)(U.ANALYTICS_REPLICATE)===!1?vS.includes("hdb_analytics")||vS.push("hdb_analytics"):(xe.system?.hdb_analytics?.enableAuditing(),xe.system?.hdb_analytics_hostname?.enableAuditing()),xe.system)for(let r of vS)xe.system[r]&&(xe.system[r].replicate=!1);return Ud=null,xe}}function Bd(){BS=!1;for(let[,e]of ua)e.needsDeletion=!0;dt();for(let[e,t]of ua)if(t.needsDeletion&&!e.endsWith("system.mdb")){t.close(),ua.delete(e);let r=xe[t.databaseName];for(let n in r)if(r[n].primaryStore.path===e){delete xe[t.databaseName],Rn.emit("dropDatabase",t.databaseName);break}}return xe}function th(e,t,r=oC,n,s){let i=new sC.default(e,!1);try{let o=ua.get(e);o?o.needsDeletion=!1:(o=(0,xd.open)(i),ua.set(e,o));let c=new sh(!1),l=o.dbisDb||(o.dbisDb=o.openDB(MS.INTERNAL_DBIS_NAME,c)),u=o.auditStore;u||(n?(0,Ts.existsSync)(n)&&(i.path=n,u=(0,xd.open)(i),u.isLegacy=!0):u=Eg(o));let d=s$(r),f=d[kS],m=new Map;for(let{key:p,value:h}of l.getRange({start:!1})){let[E,_]=p.toString().split("/");_===""?_=h.name:_||(_=E,E=t,h.name||(h.name=_,h.indexed=!h.is_hash_attribute)),f?.add(E);let R=m.get(E);R||m.set(E,R={attributes:[]}),(_==null||h.is_hash_attribute)&&(R.primary=h),_!=null&&R.attributes.push(h),Object.defineProperty(h,"key",{value:p,configurable:!0})}for(let[p,h]of m){let{attributes:E,primary:_}=h;if(!_){for(let ae of E)if(ae.is_hash_attribute||ae.isPrimaryKey){_=ae;break}if(!_){Dr.warn(`Unable to find a primary key attribute on table ${p}, with attributes: ${JSON.stringify(E)}`);continue}}let R=d[p],S={},y=[],I,w,L=typeof _.audit=="boolean"?_.audit:(0,nr.get)(U.LOGGING_AUDITLOG),H=_.trackDeletes,Z=_.expiration,X=_.eviction,Q=_.sealed,F=_.splitSegments,de=_.replicate;if(R)S=R.indices,y=R.attributes,R.schemaVersion++;else{I=_.tableId,I?I>=(l.get(vd)||0)&&(l.putSync(vd,I+1),Dr.info(`Updating next table id (it was out of sync) to ${I+1} for ${p}`)):(_.tableId=I=l.get(vd),I||(I=1),Dr.debug("Table {tableName} missing an id, assigning {tableId}"),l.putSync(vd,I+1),l.putSync(_.key,_));let ae=new sh(!_.is_hash_attribute,_.is_hash_attribute);if(ae.compression=_.compression,ae.compression){let he=(0,nr.get)(U.STORAGE_COMPRESSION_THRESHOLD)||n$;ae.compression.threshold=he}w=Lg(o.openDB(_.key,ae),o),o.databaseName=r,w.tableId=I}let oe;for(let ae of E){ae.attribute=ae.name;try{if(!ae.is_hash_attribute&&(ae.indexed||ae.attribute&&!ae.name)){if(!S[ae.name]){let Te=o$(ae.key,o,ae);S[ae.name]=Te,S[ae.name].indexNulls=ae.indexNulls}let he=y.find(Te=>Te.name===ae.name);he?y.splice(y.indexOf(he),1,ae):y.push(ae),oe=!0}}catch(he){Dr.error("Error trying to update attribute",ae,y,S,he)}}for(let ae of y)if(!E.find(Te=>Te.name===ae.name)){if(ae.is_hash_attribute){Dr.error("Unable to remove existing primary key attribute",ae);continue}ae.indexed&&(y.splice(y.indexOf(ae),1),oe=!0)}R?oe&&(R.schemaVersion++,R.updatedAttributes()):(R=i$(d,p,OS({primaryStore:w,auditStore:u,audit:L,sealed:Q,splitSegments:F,replicate:de,expirationMS:Z&&Z*1e3,evictionMS:X&&X*1e3,trackDeletes:H,tableName:p,tableId:I,primaryKey:_.name,databasePath:s?r+"/"+p:r,databaseName:r,indices:S,attributes:E,schemaDefined:_.schemaDefined,dbisDB:l})),R.schemaVersion=1,Rn.emit("updateTable",R))}return o}catch(o){throw o.message+=` opening database ${e}`,o}}function s$(e){let t=xe[e];if(t||(e==="data"?t=xe[e]=yn:e==="system"?Object.defineProperty(xe,"system",{value:t=Object.create(null),configurable:!0}):t=xe[e]=Object.create(null)),Ud&&!Ud.has(e)){let r=new Set;t[kS]=r,Ud.set(e,r)}return t}function i$(e,t,r){return e[t]=r,r}function gd({database:e,table:t}){e||(e=oC),dt(),s$(e);let r=(0,Yt.join)((0,nr.getHdbBasePath)(),sl),n=(0,nr.get)(U.DATABASES)||{};process.env.SCHEMAS_DATA_PATH&&(n.data={path:process.env.SCHEMAS_DATA_PATH});let s=t&&n[e]?.tables?.[t]?.path;r=s||n[e]?.path||process.env.STORAGE_PATH||(0,nr.get)(U.STORAGE_PATH)||((0,Ts.existsSync)(r)?r:(0,Yt.join)((0,nr.getHdbBasePath)(),I_));let i=(0,Yt.join)(r,(s?t:e)+".mdb"),o=ua.get(i);if(!o||o.status==="closed"){let c=new sC.default(i,!1);o=(0,xd.open)(c),ua.set(i,o)}return o.auditStore||(o.auditStore=Eg(o)),o}async function nN(e){if(!xe[e])throw new Error("Schema does not exist");let t=xe[e],r;for(let n in t)r=t[n].primaryStore.rootStore,ua.delete(r.path),r.status==="open"&&(await r.close(),await rh.remove(r.path)),Rn.emit("dropTable",n,e);if(r||(r=gd({database:e,table:null}),r.status==="open"&&(await r.close(),await rh.remove(r.path))),e==="data"){for(let n in yn)delete yn[n];delete yn[kS]}delete xe[e],Rn.emit("dropDatabase",e),await aI(r)}function o$(e,t,r){let n=r.is_hash_attribute||r.indexed.type&&nC[r.indexed.type]?.useObjectStore,s=new sh(!n,n),i=t.openDB(e,s);if(r.indexed.type){let o=nC[r.indexed.type];o?i.customIndex=new o(i,r.indexed):Dr.error(`The indexing type '${r.indexed.type}' is unknown`)}return i}function je(e){let{table:t,database:r,expiration:n,eviction:s,scanInterval:i,attributes:o,audit:c,sealed:l,splitSegments:u,replicate:d,trackDeletes:f,schemaDefined:m,origin:p}=e;r||(r=oC);let h=gd({database:r,table:t}),E=xe[r];Dr.trace(`Defining ${t} in ${r}`);let _=E?.[t];if(h.status==="closed")throw new Error(`Can not use a closed data store for ${t}`);let R,S,y;m==null&&(m=!0);let I=new sh(!1);for(let F of o)F.attribute&&!F.name?(F.name=F.attribute,F.indexed=!0):F.attribute=F.name,F.expiresAt&&(F.indexed=!0);let w,L;if(_){if(R=_.primaryKey,_.primaryStore.rootStore.status==="closed")throw new Error(`Can not use a closed data store from ${t} class`);u==null&&(u=_.splitSegments),_.attributes.splice(0,_.attributes.length,...o)}else{let F=h.auditStore;S=o.find(he=>he.isPrimaryKey)||{},R=S.name,S.is_hash_attribute=S.isPrimaryKey=!0,S.schemaDefined=m,S.compression=HS(),f&&(S.trackDeletes=!0),c=S.audit=typeof c=="boolean"?c:(0,nr.get)(U.LOGGING_AUDITLOG),n&&(S.expiration=n),s&&(S.eviction=s),u??=!1,S.splitSegments=u,typeof l=="boolean"&&(S.sealed=l),typeof d=="boolean"&&(S.replicate=d),p&&(S.origins?S.origins.includes(p)||S.origins.push(p):S.origins=[p]),Dr.trace(`${t} table loading, opening primary store`);let de=new sh(!1,!0);de.compression=S.compression;let oe=t+"/";if(y=h.dbisDb=h.openDB(MS.INTERNAL_DBIS_NAME,I),Q(),y.get(oe))return L&&L(),Bd(),je(e);let ae=Lg(h.openDB(oe,de),h);h.databaseName=r,ae.tableId=y.get(vd),Dr.trace(`Assigning new table id ${ae.tableId} for ${t}`),ae.tableId||(ae.tableId=1),y.put(vd,ae.tableId+1),S.tableId=ae.tableId,_=i$(E,t,OS({primaryStore:ae,auditStore:F,audit:c,sealed:l,splitSegments:u,replicate:d,trackDeletes:f,expirationMS:n&&n*1e3,evictionMS:s&&s*1e3,primaryKey:R,tableName:t,tableId:ae.tableId,databasePath:r,databaseName:r,indices:{},attributes:o,schemaDefined:m,dbisDB:y})),_.schemaVersion=1,w=!0,y.put(oe,S)}let H=_.indices;y=y||(h.dbisDb=h.openDB(MS.INTERNAL_DBIS_NAME,I)),_.dbisDB=y;let Z=[];for(let{key:F,value:de}of y.getRange({start:!0})){let[oe,ae]=F.toString().split("/");if(ae===""&&(ae=de.name),ae){if(oe!==t)continue}else continue;let he=o.find(De=>De.name===ae),Te=!he?.indexed&&de.indexed&&!de.isPrimaryKey;if((!he||Te)&&(Q(),w=!0,he||y.remove(F),Te)){let De=_.indices[oe];De&&Z.push(De)}}let X=[];try{for(let F of o||[]){if((F.relationship||F.computed)&&(w=!0,F.relationship))continue;let de=t+"/"+(F.name||"");Object.defineProperty(F,"key",{value:de,configurable:!0});let oe=y.get(de);if(F.isPrimaryKey){if(oe=oe||y.get(de=t+"/")||{},c!==void 0&&c!==_.audit||l!==void 0&&l!==_.sealed||d!==void 0&&d!==_.replicate||(+n||void 0)!==(+oe.expiration||void 0)||(+s||void 0)!==(+oe.eviction||void 0)||F.type!==oe.type){let he={...oe};typeof c=="boolean"&&(c&&_.enableAuditing(c),he.audit=c),n&&(he.expiration=+n),s&&(he.eviction=+s),l!==void 0&&(he.sealed=l),d!==void 0&&(he.replicate=d),F.type&&(he.type=F.type),w=!0,Q(),y.put(de,he)}continue}oe?.attribute&&!oe.name&&(oe.indexed=!0);let ae=!oe||oe.type!==F.type||JSON.stringify(oe.indexed)!==JSON.stringify(F.indexed)||oe.nullable!==F.nullable||oe.version!==F.version||oe.enumerable!==F.enumerable||JSON.stringify(oe.properties)!==JSON.stringify(F.properties)||JSON.stringify(oe.elements)!==JSON.stringify(F.elements);if(F.indexed){let he=o$(de,h,F);(ae||oe.indexingPID&&oe.indexingPID!==process.pid||oe.restartNumber<nh.workerData?.restartNumber)&&(w=!0,Q(),oe=y.get(de),(ae||oe.indexingPID&&oe.indexingPID!==process.pid||oe.restartNumber<nh.workerData?.restartNumber)&&(w=!0,F.indexNulls===void 0&&(F.indexNulls=!0),_.primaryStore.getStats().entryCount>0&&(F.lastIndexedKey=oe?.lastIndexedKey??void 0,F.indexingPID=process.pid,he.isIndexing=!0,Object.defineProperty(F,"dbi",{value:he}),X.push(F))),y.put(de,F)),oe?.indexNulls&&F.indexNulls===void 0&&(F.indexNulls=!0),he.indexNulls=F.indexNulls,H[F.name]=he}else ae&&(w=!0,Q(),y.put(de,F))}}finally{L&&L()}return w&&(_.schemaVersion++,_.updatedAttributes()),Dr.trace(`${t} table loading, running index`),X.length>0||Z.length>0?_.indexingOperation=tce(_,X,Z):w&&US.signalSchemaChange(new xS.SchemaEventMsg(process.pid,"schema-change",_.databaseName,_.tableName)),_.origin=p,w&&Rn.emit("updateTable",_,p!=="cluster"),(n||s||i)&&_.setTTLExpiration({expiration:n,eviction:s,scanInterval:i}),Dr.trace(`${t} table loaded`),_;function Q(){L||h.transactionSync(()=>({then(F){L=F}}))}a(Q,"startTxn")}async function tce(e,t,r){try{Dr.info(`Indexing ${e.tableName} attributes`,t),await US.signalSchemaChange(new xS.SchemaEventMsg(process.pid,"schema-change",e.databaseName,e.tableName));let n;for(let l of r)n=l.drop();let s,i={},o=0,c=t.length;if(await new Promise(l=>setImmediate(l)),c>0){let l;for(let d of t)(0,xd.compareKeys)(d.lastIndexedKey,l)<0&&(l=d.lastIndexedKey),d.lastIndexedKey==null&&d.dbi.clearAsync();let u=0;for(let{key:d,value:f,version:m}of e.primaryStore.getRange({start:l,lazy:c<4,versions:!0,snapshot:!1}))if(f){if(u++,n=e.primaryStore.ifVersion(d,m,()=>{for(let p=0;p<c;p++){let h=t[p],E=h.name,_=h.dbi;try{let R=h.resolve,S=f&&(R?R(f):f[E]);if(_.customIndex){_.customIndex.index(d,S);continue}let y=(0,e$.getIndexedValues)(S,_.indexNulls);if(y)for(let I=0,w=y.length;I<w;I++)_.put(y[I],d)}catch(R){i[E]||(i[E]=!0,Dr.error(`Error indexing attribute ${E}`,R))}}}),n.then(()=>u--,p=>{u--,Dr.error(p)}),nh.workerData&&nh.workerData.restartNumber!==r$.restartNumber&&(s=!0),++o%100===0||s){for(let p of t)p.lastIndexedKey=d,e.dbisDB.put(p.key,p);if(s)return}u>Zae?await n:u>ece&&await new Promise(p=>setImmediate(p))}for(let d of t)delete d.lastIndexedKey,delete d.indexingPID,d.dbi.isIndexing=!1,n=e.dbisDB.put(d.key,d)}await n,await US.signalSchemaChange(new xS.SchemaEventMsg(process.pid,"indexing-finished",e.databaseName,e.tableName)),Dr.info(`Finished indexing ${e.tableName} attributes`,t)}catch(n){Dr.error("Error in indexing",n)}}function rce({table:e,database:t}){let r=gd({database:t,table:e}),n=[],s=r.dbisDb;for(let i of s.getKeys({start:e+"/",end:e+"0"}))n.push(s.remove(i));return Rn.emit("dropTable",e,t),Promise.all(n)}function Yl(e){return Rn.on("updateTable",e),{remove(){Rn.off("updateTable",e)}}}function nce(e){return Rn.on("dropTable",e),{remove(){Rn.off("dropTable",e)}}}function ih(e){return Rn.on("dropDatabase",e),{remove(){Rn.off("dropDatabase",e)}}}function HS(){let e=(0,nr.get)(U.STORAGE_COMPRESSION),t=(0,nr.get)(U.STORAGE_COMPRESSION_DICTIONARY),r=(0,nr.get)(U.STORAGE_COMPRESSION_THRESHOLD)||n$,n={startingOffset:32};return t&&(n.dictionary=rh.readFileSync(t)),r&&(n.threshold=r),e&&n}var Zq,nr,MS,xd,Yt,Ts,Md,sC,rh,iC,e$,US,xS,nh,t$,r$,FS,Qae,Dr,oC,kS,n$,vS,Rn,yn,xe,vd,BS,ua,Ud,Zae,ece,Oe=ie(()=>{Zq=require("node:events"),nr=b(fe()),MS=b(Or()),xd=require("lmdb"),Yt=require("path"),Ts=require("fs"),Md=b(tr());xg();sC=b(hp());$();rh=b(require("fs-extra")),iC=b(fi()),e$=b(Us()),US=b(sa()),xS=b(ms()),nh=require("worker_threads"),t$=b(ee()),r$=b(it());Yi();gl();ls();Xq();FS=b(pp()),{forComponent:Qae}=t$.default;a(sh,"OpenDBIObject");Dr=Qae("storage"),oC="data",kS=Symbol("defined-tables"),n$=((0,nr.get)(U.STORAGE_PAGESIZE)||4096)-60;(0,nr.initSync)();vS=["hdb_temp","hdb_certificate","hdb_raw_analytics","hdb_session_will","hdb_job","hdb_info"],Rn=new Zq.EventEmitter,yn=Object.create(null),xe=Object.create(null);(0,iC._assignPackageExport)("databases",xe);(0,iC._assignPackageExport)("tables",yn);vd=Symbol.for("next-table-id"),ua=new Map;a(Xae,"getTables");a(dt,"getDatabases");a(Bd,"resetDatabases");a(th,"readMetaDb");a(s$,"ensureDB");a(i$,"setTable");a(gd,"database");a(nN,"dropDatabase");a(o$,"openIndex");a(je,"table");Zae=1e3,ece=10;a(tce,"runIndexing");a(rce,"dropTableMeta");a(Yl,"onUpdatedTable");a(nce,"onRemovedTable");a(ih,"onRemovedDB");a(HS,"getDefaultCompression")});var GS,qS,oh,$S=ie(()=>{GS={primary:{allowedValues:null},maintenance:{allowedValues:null},availability:{allowedValues:["Available","Unavailable"]}},qS=Object.keys(GS),oh="primary"});function c$(e){return a$.validateBySchema(e,ace)}var ah,a$,sce,ice,oce,ace,l$=ie(()=>{ah=b(require("joi")),a$=b(ht());$S();sce=qS,ice=Object.entries(GS).reduce((e,[t,r])=>(r.allowedValues&&(e[t]=`Status "${t}" only accepts these values: ${r.allowedValues.join(", ")}`),e),{}),oce=a(()=>{let e=ah.default.string().min(1).max(512);return Object.entries(GS).forEach(([t,r])=>{r.allowedValues&&(e=e.when("id",{is:t,then:ah.default.string().valid(...r.allowedValues).messages({"any.only":ice[t]})}))}),e.required()},"createStatusValidationSchema"),ace=ah.default.object({id:ah.default.string().valid(...sce).required(),status:oce()});a(c$,"validateStatus")});var dC={};Re(dC,{DEFAULT_STATUS_ID:()=>oh,STATUS_IDS:()=>qS,Status:()=>da,clear:()=>cC,get:()=>lC,set:()=>uC});function lh(){return aC||(aC=je({database:"system",table:"hdb_status",replicate:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"status"},{name:"__createdtime__"},{name:"__updatedtime__"}]})),aC}function cC({id:e}){return ch.debug?.("clearStatus",e),lh().delete(e)}async function lce(){ch.debug?.("getAllStatus");let e=lh().get({}),t=await Kp.query.allThreads(),r=Array.from(t.entries()).map(([s,i])=>({name:s,...i})),n=fC();return{systemStatus:e,componentStatus:r,restartRequired:n}}function lC({id:e}){return e?(ch.debug?.("getStatus",e),lh().get(e)):(ch.debug?.("getStatus","all"),lce())}function uC({status:e,id:t=oh}){let r=c$({status:e,id:t});if(r)throw(0,VS.handleHDBError)(r,r.message,cce.BAD_REQUEST);return ch.debug?.("setStatus",t,e),lh().put(t,{status:e})}var VS,u$,cce,aC,da,ch,uh=ie(()=>{Oe();VS=b(ge()),u$=b(hr());l$();$S();Yp();KS();$S();({HTTP_STATUS_CODES:cce}=VS.hdbErrors);a(lh,"getStatusTable");da={get primaryStore(){return lh().primaryStore}},ch=(0,u$.loggerWithTag)("status");a(cC,"clearStatus");a(lce,"getAllStatus");a(lC,"getStatus");a(uC,"setStatus")});var d$={};Re(d$,{requestRestart:()=>hC,resetRestartNeeded:()=>uce,restartNeeded:()=>fC});function pC(){mC||(mC=da.primaryStore.getUserSharedBuffer("restart-needed",new ArrayBuffer(1)),YS=new Uint8Array(mC))}function hC(){pC(),YS[0]=1}function fC(){return pC(),YS[0]===1}function uce(){pC(),YS[0]=0}var mC,YS,KS=ie(()=>{uh();a(pC,"ensureInitialized");a(hC,"requestRestart");a(fC,"restartNeeded");a(uce,"resetRestartNeeded")});var gC={};Re(gC,{loadGQLSchema:()=>mce,start:()=>_C,startOnMainThread:()=>fce});function _C({ensureTable:e}){return{handleFile:t,setupFile:t};async function t(r,n,s,i){let{parse:o,Source:c,Kind:l}=await import("graphql"),u=o(new c(r.toString(),s)),d=new Map,f=[];for(let h of u.definitions)switch(h.kind){case l.OBJECT_TYPE_DEFINITION:let y=function(w){if(w.kind==="NonNullType"){let Z=y(w.type);return Z.nullable=!1,Z}if(w.kind==="ListType")return{type:"array",elements:y(w.type)};let H={type:w.name?.value};return Object.defineProperty(H,"location",{value:w.loc.startToken}),H};a(y,"getProperty");let E=h.name.value,_=[],R={table:null,database:null,properties:_};d.set(E,R),i.allTypes.set(E,R);for(let w of h.directives){if(w.name.value==="table"){for(let H of w.arguments)R[H.name.value]=H.value.value;R.schema&&(R.database=R.schema),R.table||(R.table=E),R.audit&&(R.audit=R.audit!=="false"),R.attributes=R.properties,f.push(R)}if(w.name.value==="sealed"&&(R.sealed=!0),w.name.value==="splitSegments"&&(R.splitSegments=!0),w.name.value==="replicate"&&(R.replicate=!0),w.name.value==="export"){R.export=!0;for(let H of w.arguments)typeof R.export!="object"&&(R.export={}),R.export[H.name.value]=H.value.value}}let S=!1,I={};for(let w of h.fields){let L=y(w.type);L.name=w.name.value,_.push(L),I[L.name]=void 0;for(let H of w.directives){let Z=H.name.value;if(Z==="primaryKey")S?console.warn("Can not define two attributes as a primary key at",H.loc):(L.isPrimaryKey=!0,S=!0);else if(Z==="indexed"){let X={};for(let Q of H.arguments||[])X[Q.name.value]=Q.value.value;L.indexed=X}else if(Z==="computed"){for(let X of H.arguments||[])if(X.name.value==="from"){let Q=X.value.value;L.computed={from:p(Q,X,I)},L.version==null&&(L.version=Q)}else X.name.value==="version"&&(L.version=X.value.value);L.computed=L.computed||!0}else if(Z==="relationship"){let X={};for(let Q of H.arguments)X[Q.name.value]=Q.value.value;L.relationship=X}else if(Z==="createdTime")L.assignCreatedTime=!0;else if(Z==="updatedTime")L.assignUpdatedTime=!0;else if(Z==="expiresAt")L.expiresAt=!0;else if(Z==="enumerable")L.enumerable=!0;else if(Z==="allow"){let X=L.authorizedRoles=[];for(let Q of H.arguments)Q.name.value==="role"&&X.push(Q.value.value)}else server.knownGraphQLDirectives.includes(Z)&&console.warn(`@${Z} is an unknown directive, at`,H.loc)}}R.type=E}function m(h){let E=d.get(h.type);E?(Object.defineProperty(h,"properties",{value:E.properties}),Object.defineProperty(h,"definition",{value:E})):h.type==="array"?m(h.elements):dce.includes(h.type)||(0,m$.getWorkerIndex)()===0&&console.error(`The type ${h.type} is unknown at line ${h.location.line}, column ${h.location.column}, in ${s}`)}a(m,"connectPropertyType");for(let h of d.values())for(let E of h.properties)m(E);for(let h of f)h.tableClass=e(h),h.export&&(h.export.name===""?i.set((0,EC.dirname)(n),h.tableClass):i.set((0,EC.dirname)(n)+"/"+(h.export.name||h.type),h.tableClass,h.export));function p(h,E,_){return new f$.Script(`function computed(attributes) { return function(record) { with(attributes) { with (record) { return ${h}; } } } } computed;`,{filename:s,lineOffset:E.loc.startToken.line-1,columnOffset:E.loc.startToken.column}).runInThisContext()(_)}a(p,"createComputedFrom")}}var EC,f$,m$,dce,fce,mce,p$=ie(()=>{EC=require("path"),f$=require("node:vm");Oe();m$=b(it());ac();dce=["ID","Int","Float","Long","String","Boolean","Date","Bytes","Any","BigInt","Blob"];server.knownGraphQLDirectives||(server.knownGraphQLDirectives=[]);server.knownGraphQLDirectives.push("table","sealed","export","primaryKey","indexed","computed","relationship","createdTime","updatedTime","expiresAt","allow","enumerable");a(_C,"start");fce=_C,mce=a(e=>_C({ensureTable:je}).handleFile(e,null,null,new ld),"loadGQLSchema")});var yC={};Re(yC,{start:()=>Rce});function pce(e){if(e.kind!==Ge.Kind.OPERATION_DEFINITION&&e.kind!==Ge.Kind.FRAGMENT_DEFINITION)throw new Yr(`Unexpected non-executable definition type ${e.kind}.`)}function h$(e){if(typeof e!="object"||e===null)throw new lo("Request body must be an object.");if(!("query"in e))throw new lo("Request body must contain a `query` field.");if(typeof e.query!="string")throw new lo("Request body `query` field must be a string.");if("variables"in e&&(typeof e.variables!="object"||e.variables===null))throw new lo("Request body `variables` field must be an object.");if("operationName"in e&&typeof e.operationName!="string")throw new lo("Request body `operationName` field must be a string.")}function TC(e){return parseInt(e.value,10)}function _$(e){return parseFloat(e.value)}function g$(e,t,r){let n=r.get(e.name.value);return S$(n)?T$(n,t):{attribute:t,value:n}}function S$(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function T$(e,t){return t=typeof t=="string"?[t]:t,Object.entries(e).flatMap(([r,n])=>(t=[...t,r],S$(n)?T$(n,t):{attribute:t,value:n}))}function hce(e,t,r){switch(t=[...t,e.name.value],e.value.kind){case Ge.Kind.NULL:return{attribute:t,value:null};case Ge.Kind.INT:return{attribute:t,value:TC(e.value)};case Ge.Kind.FLOAT:return{attribute:t,value:_$(e.value)};case Ge.Kind.BOOLEAN:case Ge.Kind.STRING:return{attribute:t,value:e.value.value};case Ge.Kind.VARIABLE:return g$(e.value,t,r);case Ge.Kind.OBJECT:return y$(e.value,t,r);case Ge.Kind.LIST:case Ge.Kind.ENUM:default:throw new Yr(`Value type, ${e.value.kind}, is not supported.`)}}function y$(e,t,r){return e.fields.flatMap(n=>hce(n,t,r))}function Ece(e,t){switch(e.value.kind){case Ge.Kind.NULL:return{attribute:e.name.value,value:null};case Ge.Kind.INT:return{attribute:e.name.value,value:TC(e.value)};case Ge.Kind.FLOAT:return{attribute:e.name.value,value:_$(e.value)};case Ge.Kind.BOOLEAN:case Ge.Kind.STRING:return{attribute:e.name.value,value:e.value.value};case Ge.Kind.VARIABLE:return g$(e.value,e.name.value,t);case Ge.Kind.OBJECT:return y$(e.value,[e.name.value],t);case Ge.Kind.LIST:case Ge.Kind.ENUM:default:throw new Yr(`Argument type, ${e.value.kind}, is not supported.`)}}function _ce(e,t){return e.flatMap(r=>Ece(r,t))}function WS(e,t){return e.selections.flatMap(r=>{switch(r.kind){case Ge.Kind.FIELD:return r;case Ge.Kind.FRAGMENT_SPREAD:{let n=r.name.value,s=t.get(n);if(s==null)throw new Yr(`Fragment \`${n}\` not found.`);return WS(s.selectionSet,t)}case Ge.Kind.INLINE_FRAGMENT:return WS(r.selectionSet,t)}})}function R$(e,t){return WS(e,t).map(r=>r.selectionSet?.selections.length>0?{name:r.name.value,select:R$(r.selectionSet,t)}:r.name.value)}async function gce(e,t,r,n){let s=Hs.getMatch(e.name.value,"graphql");if(s===void 0)throw new Yr(`Resource \`${e.name.value}\` not found.`);let i=s.Resource,o={select:R$(e.selectionSet,r),conditions:_ce(e.arguments,t)},c=[];n.authorize=!0;for await(let l of i.search(o,n))c.push(l);return[e.name.value,c]}function b$(e){switch(e.kind){case Ge.Kind.NULL:return null;case Ge.Kind.INT:return TC(e);case Ge.Kind.FLOAT:return parseFloat(e.value);case Ge.Kind.STRING:case Ge.Kind.BOOLEAN:return e.value;case Ge.Kind.OBJECT:return e.fields.reduce((t,r)=>({[r.name.value]:b$(r.value),...t}),{});case Ge.Kind.LIST:case Ge.Kind.ENUM:default:throw new Yr(`Value type, ${e.kind}, is not supported.`)}}function Sce(e,t){let r=new Map;for(let n of e){let s=n.variable.name.value,i=t?.[s];if(i===void 0&&n.defaultValue!==void 0&&(i=b$(n.defaultValue)),n.type.kind===Ge.Kind.NON_NULL_TYPE&&!(s in t)&&i===void 0)throw new Yr(`Variable $${s} is required, but not provided.`);r.set(n.variable.name.value,i??null)}return r}async function Tce(e,t,r,n){if(e.operation===Ge.OperationTypeNode.SUBSCRIPTION)throw new Yr("Subscriptions are not supported.");if(e.operation===Ge.OperationTypeNode.MUTATION)throw new Yr("Mutations are not supported yet.");let s=Sce(e.variableDefinitions,t),i=await Promise.all(WS(e.selectionSet,r).map(c=>gce(c,s,r,n))),o={data:{}};for(let[c,l]of i)o.data[c]=l;return o}async function E$({query:e,variables:t={},operationName:r},n){let s=Ge.parse(e),i=new Map,o=new Map;for(let u of s.definitions)if(pce(u),u.kind===Ge.Kind.FRAGMENT_DEFINITION)o.set(u.name.value,u);else{if(u.name===void 0&&s.definitions.length>1)throw new Yr("Unnamed operations are only allowed when there is a single operation in the document.");let d=u.name?.value??"Unnamed Query";if(i.has(d))throw new Yr(`Duplicate operation definition: ${d}`);i.set(d,u)}let c;if(r==null)if(i.size===1)c=i.entries().next().value[1];else throw new Yr("Operation name is required when there are multiple operations in the document.");else if(c=i.get(r),c==null)throw new Yr(`Operation \`${r}\` not found.`);let l=await Tce(c,t,o,n);return{status:200,headers:{"Content-Type":"application/graphql-response+json; charset=utf-8"},body:JSON.stringify(l)}}async function yce(e){switch(e.method){case"GET":{let t=new URLSearchParams(e.url.split("?")[1]),r={};for(let[n,s]of t)r[n]=n==="variables"||n==="extensions"?JSON.parse(s):s;return h$(r),E$(r,e)}case"POST":{let r=await jo(e.headers.get("content-type"),!0)(e._nodeRequest);return h$(r),E$(r,e)}default:throw new lo("Method Not Allowed",405,{Allow:"GET, POST"})}}function Rce(e){e.server.http(async(t,r)=>{if(!t.url.startsWith("/graphql"))return r(t);try{return await yce(t)}catch(n){SC.default.error(n);let s=t.headers.get("accept")??"application/graphql-response+json";switch(s){case"application/json":{if(n instanceof lo)return{status:n.statusCode,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/json",...n.headers}};if(n instanceof Ge.GraphQLError)return{status:200,body:JSON.stringify({errors:[n]}),headers:{"Content-Type":"application/json"}};if(n instanceof Yr)return{status:200,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/json"}};if(n instanceof Error)return{status:500,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/json"}};break}default:SC.default.info(`Unsupported accept header, ${s}, defaulting to application/graphql-response+json`);case"application/graphql-response+json":{if(n instanceof lo)return{status:n.statusCode,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/graphql-response+json",...n.headers}};if(n instanceof Ge.GraphQLError)return{status:400,body:JSON.stringify({errors:[n]}),headers:{"Content-Type":"application/graphql-response+json"}};if(n instanceof Yr)return{status:400,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/graphql-response+json"}};if(n instanceof Error)return{status:500,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/graphql-response+json"}};break}}throw n}},{port:e.port,securePort:e.securePort})}var Ge,SC,Yr,lo,A$=ie(()=>{Ge=b(require("graphql"));zo();ac();SC=b(ee());a(pce,"assertExecutableDefinitionNode");a(h$,"assertRequestParams");a(TC,"processIntValueNode");a(_$,"processFloatValueNode");a(g$,"processVariableNode");a(S$,"isObject");a(T$,"transformObjectIntoQueryCondition");a(hce,"processObjectFieldNode");a(y$,"processObjectValueNode");a(Ece,"processArgumentNode");a(_ce,"buildConditionsQuery");a(WS,"fillInFragments");a(R$,"buildSelectQuery");a(gce,"processFieldNode");a(b$,"processConstValueNode");a(Sce,"resolveVariables");a(Tce,"executeOperation");a(E$,"resolver");Yr=class extends Error{static{a(this,"GraphQLQueryingError")}},lo=class extends Error{static{a(this,"HTTPError")}statusCode;headers;constructor(t,r=400,n={}){super(t),this.statusCode=r,this.headers=n}};a(yce,"graphqlQueryingHandler");a(Rce,"start")});var P$=x((WUe,O$)=>{var Fd=require("validate.js"),w$=ht(),kd=($(),P(z)),{handleHDBError:bce,hdbErrors:Ace}=ge(),{HDB_ERROR_MSGS:cr,HTTP_STATUS_CODES:Ice}=Ace,RC=a(()=>({role:{presence:!0,format:"[\\w\\-\\_]+"},id:{presence:!0,format:"[\\w\\-\\_]+"},permission:{presence:!0}}),"constraintsTemplate"),wce={STRUCTURE_USER:"structure_user"},I$=Object.values(kd.ROLE_TYPES_ENUM),Nce="attribute_permissions",Cce="attribute_name",{PERMS_CRUD_ENUM:Hd}=kd,Oce=[Nce,...Object.values(Hd)],N$=[Hd.READ,Hd.INSERT,Hd.UPDATE],Pce=[Cce,...N$];function Lce(e){let t=RC();return t.role.presence=!0,t.id.presence=!1,t.permission.presence=!0,C$(e,t)}a(Lce,"addRoleValidation");function Dce(e){let t=RC();return t.role.presence=!1,t.id.presence=!0,t.permission.presence=!0,C$(e,t)}a(Dce,"alterRoleValidation");function vce(e){let t=RC();return t.role.presence=!1,t.id.presence=!0,t.permission.presence=!1,w$.validateObject(e,t)}a(vce,"dropRoleValidation");var Mce=["operation","role","id","permission","hdb_user","access"];function C$(e,t){let r={main_permissions:[],schema_permissions:{}},n=Object.keys(e),s=[];for(let o=0,c=n.length;o<c;o++)Mce.includes(n[o])||s.push(n[o]);s.length>0&&Sr(cr.INVALID_ROLE_JSON_KEYS(s),r);let i=w$.validateObject(e,t);if(i&&i.message.split(",").forEach(o=>{Sr(o,r)}),e.permission){let o=Uce(e);o&&Sr(o,r),I$.forEach(c=>{e.permission[c]&&!Fd.isBoolean(e.permission[c])&&Sr(cr.SU_CU_ROLE_BOOLEAN_ERROR(c),r)})}for(let o in e.permission)if(I$.indexOf(o)<0){if(o===wce.STRUCTURE_USER){let l=e.permission[o];if(typeof l=="boolean")continue;if(Array.isArray(l)){for(let u=0,d=l.length;u<d;u++){let f=l[u];global.hdb_schema[f]||Sr(cr.SCHEMA_NOT_FOUND(f),r)}continue}Sr(cr.STRUCTURE_USER_ROLE_TYPE_ERROR(o),r);continue}let c=e.permission[o];if(!o||!global.hdb_schema[o]){Sr(cr.SCHEMA_NOT_FOUND(o),r);continue}if(c.tables)for(let l in c.tables){let u=c.tables[l];if(!l||!global.hdb_schema[o][l]){Sr(cr.TABLE_NOT_FOUND(o,l),r);continue}if(Object.keys(u).forEach(d=>{Oce.includes(d)||Sr(cr.INVALID_PERM_KEY(d),r,o,l)}),Object.values(Hd).forEach(d=>{Fd.isDefined(u[d])?Fd.isBoolean(u[d])||Sr(cr.TABLE_PERM_NOT_BOOLEAN(d),r,o,l):Sr(cr.TABLE_PERM_MISSING(d),r,o,l)}),u.attribute_permissions===void 0){Sr(cr.ATTR_PERMS_ARRAY_MISSING,r,o,l);continue}else if(!(Array.isArray(u.attribute_permissions)||u.attribute_permissions===null)){Sr(cr.ATTR_PERMS_NOT_ARRAY,r,o,l);continue}if(u.attribute_permissions){let d=global.hdb_schema[o][l].attributes.map(({attribute:m})=>m),f={read:!1,insert:!1,update:!1};for(let m in u.attribute_permissions){let p=u.attribute_permissions[m];if(Object.keys(p).forEach(E=>{!Pce.includes(E)&&E!==Hd.DELETE&&Sr(cr.INVALID_ATTR_PERM_KEY(E),r,o,l)}),!Fd.isDefined(p.attribute_name)){Sr(cr.ATTR_PERM_MISSING_NAME,r,o,l);continue}let h=p.attribute_name;if(!d.includes(h)){Sr(cr.INVALID_ATTRIBUTE_IN_PERMS(h),r,o,l);continue}N$.forEach(E=>{Fd.isDefined(p[E])?Fd.isBoolean(p[E])||Sr(cr.ATTR_PERM_NOT_BOOLEAN(E,h),r,o,l):Sr(cr.ATTR_PERM_MISSING(E,h),r,o,l)}),!f.read&&p.read===!0&&(f.read=!0),!f.insert&&p.insert===!0&&(f.insert=!0),!f.update&&p.update===!0&&(f.update=!0)}if(u.read===!1&&f.read===!0||u.insert===!1&&f.insert===!0||u.update===!1&&f.update===!0){let m=`${o}.${l}`;Sr(cr.MISMATCHED_TABLE_ATTR_PERMS(m),r,o,l)}}}}return xce(r)}a(C$,"customValidate");O$.exports={addRoleValidation:Lce,alterRoleValidation:Dce,dropRoleValidation:vce};function Uce(e){let{operation:t,permission:r}=e;if(t===kd.OPERATIONS_ENUM.ADD_ROLE||t===kd.OPERATIONS_ENUM.ALTER_ROLE){let n=r.super_user===!0,s=r.cluster_user===!0;if(Object.keys(r).length>1&&(n||s)){if(s&&n)return cr.SU_CU_ROLE_COMBINED_ERROR;{let o=r.super_user?kd.ROLE_TYPES_ENUM.SUPER_USER:kd.ROLE_TYPES_ENUM.CLUSTER_USER;return cr.SU_CU_ROLE_NO_PERMS_ALLOWED(o)}}}return null}a(Uce,"validateNoSUPerms");function xce(e){let{main_permissions:t,schema_permissions:r}=e;if(t.length>0||Object.keys(r).length>0){let n={error:cr.ROLE_PERMS_ERROR,...e};return bce(new Error,n,Ice.BAD_REQUEST)}else return null}a(xce,"generateRolePermResponse");function Sr(e,t,r,n){if(!r)t.main_permissions.push(e);else{let s=n?r+"_"+n:r;t.schema_permissions[s]?t.schema_permissions[s].push(e):t.schema_permissions[s]=[e]}}a(Sr,"addPermError")});var fh=x((zUe,M$)=>{"use strict";var L$=_s(),D$=Wn(),Bce=Hl(),AC=P$(),IC=sa(),Fce=require("util"),jS=($(),P(z)),kce=ue(),wC=D$.searchByValue,Hce=D$.searchByHash,Gce=Fce.promisify(Bce.delete),qce=to(),$ce=Np(),{hdbErrors:Vce,handleHDBError:Wl}=ge(),{HDB_ERROR_MSGS:v$,HTTP_STATUS_CODES:dh}=Vce,{UserEventMsg:NC}=ms();M$.exports={addRole:Kce,alterRole:Yce,dropRole:Wce,listRoles:jce};function bC(e){try{e.hdb_auth_header&&delete e.hdb_auth_header,e.HDB_INTERNAL_PATH&&delete e.HDB_INTERNAL_PATH,e.operation&&delete e.operation,e.hdb_user&&delete e.hdb_user}catch{}return e}a(bC,"scrubRoleDetails");async function Kce(e){let t=AC.addRoleValidation(e);if(t)throw t;e=bC(e);let r={schema:"system",table:"hdb_role",attribute:"role",value:e.role,hash_attribute:"id",get_attributes:["*"]},n;try{n=Array.from(await wC(r)||[])}catch(i){throw Wl(i)}if(n&&n.length>0)throw Wl(new Error,v$.ROLE_ALREADY_EXISTS(e.role),dh.CONFLICT,void 0,void 0,!0);e.id||(e.id=e.role);let s={operation:"insert",schema:"system",table:"hdb_role",hash_attribute:"id",records:[e]};return await L$.insert(s),IC.signalUserChange(new NC(process.pid)),e=bC(e),e}a(Kce,"addRole");async function Yce(e){let t=AC.alterRoleValidation(e);if(t)throw t;e=bC(e);let r={operation:"update",schema:"system",table:"hdb_role",records:[e]},n;try{n=await L$.update(r)}catch(s){throw Wl(s)}if(n&&n?.message==="updated 0 of 1 records")throw Wl(new Error,"Invalid role id",dh.BAD_REQUEST,void 0,void 0,!0);return await IC.signalUserChange(new NC(process.pid)),e}a(Yce,"alterRole");async function Wce(e){let t=AC.dropRoleValidation(e);if(t)throw Wl(new Error,t,dh.BAD_REQUEST,void 0,void 0,!0);let r=new $ce(jS.SYSTEM_SCHEMA_NAME,jS.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME,[e.id],["role"]),n=Array.from(await Hce(r));if(n.length===0)throw Wl(new Error,v$.ROLE_NOT_FOUND,dh.NOT_FOUND,void 0,void 0,!0);let s=new qce(jS.SYSTEM_SCHEMA_NAME,jS.SYSTEM_TABLE_NAMES.USER_TABLE_NAME,"role",e.id,void 0,["username","active"]),i=Array.from(await wC(s)),o=!1;if(kce.isEmptyOrZeroLength(i)===!1){for(let l=0;l<i.length;l++)if(i[l].active===!0){o=!0;break}}if(o===!0)throw Wl(new Error,`Cannot drop role ${n[0].role} as it has active user(s) tied to this role`,dh.CONFLICT,void 0,void 0,!0);let c={table:"hdb_role",schema:"system",hash_values:[e.id]};return await Gce(c),IC.signalUserChange(new NC(process.pid)),`${n[0].role} successfully deleted`}a(Wce,"dropRole");async function jce(){return wC({table:"hdb_role",schema:"system",hash_attribute:"id",attribute:"id",value:"*",get_attributes:["*"]})}a(jce,"listRoles")});var CC={};Re(CC,{start:()=>B$,startOnMainThread:()=>Qce});function B$({ensureTable:e}){return{handleFile:t,setupFile:t};async function t(r){let n=(0,U$.parseDocument)(r.toString(),{simpleKeys:!0}).toJSON();for(let s in n){let i=n[s];i.permission||(i={permission:i},i.permission.access&&(i.access=i.permission.access,delete i.permission.access));for(let o in i.permission){if(zce.includes(o))continue;let c=i.permission[o];c.tables||(i.permission[o]=c={tables:c});for(let l in c.tables){let u=c.tables[l];if(u.read=!!u.read,u.insert=!!u.insert,u.update=!!u.update,u.delete=!!u.delete,u.attributes){let d=[];for(let f in u.attributes){let m=u.attributes[f];m.attribute_name=f,d.push(m)}u.attribute_permissions=d,delete u.attributes}if(u.attribute_permissions){if(!Array.isArray(u.attribute_permissions))throw new Error("attribute_permissions must be an array if defined");for(let d of u.attribute_permissions)d.read=!!d.read,d.insert=!!d.insert,d.update=!!d.update}else u.attribute_permissions=null}}i.role=i.id=s,await Jce(i)}}}async function Jce(e){let t=dt().system.hdb_role;for await(let r of t.search([{attribute:"role",value:e.role}])){let{__createdtime__:n,__updatedtime__:s,...i}=r;return(0,x$.isEqual)(i,e)?void 0:(e.id=r.id,(0,zS.alterRole)(e))}return(0,zS.addRole)(e)}var zS,U$,x$,zce,Qce,F$=ie(()=>{Oe();zS=b(fh()),U$=require("yaml"),x$=require("lodash"),zce=["super_user","cluster_user","structure_user"];a(B$,"start");a(Jce,"ensureRole");Qce=B$});async function JS(e){let t=(0,G$.pathToFileURL)(e).toString();if(Xce)return mh||(mh=Zce(tle)),(await(await mh).import(t)).namespace;try{return await import(t)}catch(r){try{(await import("internal/util")).default.decorateErrorStack(r)}catch{}throw r}}async function Zce(e){let{StaticModuleRecord:t}=await import("@endo/static-module-record");return require("ses"),lockdown({domainTaming:"unsafe",consoleTaming:"unsafe",errorTaming:"unsafe",errorTrapping:"none",stackFiltering:"verbose"}),mh=new Compartment({console,Math,Date,fetch:ele,...e()},{},{name:"h-dapp",resolveHook(r,n){return r==="harperdb"?"harperdb":(r=new URL(r,n).toString(),(0,H$.extname)(r)||(r+=".js"),r)},importHook:a(async r=>{if(r==="harperdb")return{imports:[],exports:["Resource","tables","databases"],execute(s){s.Resource=Vt,s.tables=yn,s.databases=xe}};let n=await(0,k$.readFile)(new URL(r),{encoding:"utf-8"});return new t(n,r)},"importHook")}),mh}function ele(e,t){let r=typeof e=="string"||e.url;if(new URL(r).protocol!="https")throw new Error("Only https is allowed in fetch");return fetch(e,t)}function tle(){return{Resource:Vt,tables:yn}}var k$,H$,G$,Xce,mh,OC=ie(()=>{Xi();Oe();k$=require("fs/promises"),H$=require("path"),G$=require("url"),Xce=!1;a(JS,"secureImport");a(Zce,"getCompartment");a(ele,"secureOnlyFetch");a(tle,"getGlobalVars")});var PC={};Re(PC,{ResourceLoadError:()=>QS,handleApplication:()=>rle,suppressHandleApplicationWarning:()=>nle});function $$(e){return typeof e=="function"&&("get"in e||"put"in e||"post"in e||"delete"in e)}async function rle(e){e.handleEntry(a(async function(r){if(r.entryType!=="file"){e.logger.warn(`jsResource plugin cannot handle entry type ${r.entryType}. Modify the 'files' option in ${e.configFilePath} to only include files.`);return}if(r.eventType!=="add"){e.requestRestart();return}try{let n=await JS(r.absolutePath),s=(0,q$.dirname)(r.urlPath).replace(/\\/g,"/").replace(/^\/$/,"");$$(n.default)&&(e.resources.set(s,n.default),e.logger.debug(`Registered root resource: ${s}`)),V$(e,n,s)}catch(n){throw new QS(r.absolutePath,n)}},"handleResourceEntry"))}function V$(e,t,r){for(let n in t){let s=t[n],i=`${r}/${n}`;$$(s)?(e.resources.set(i,s),e.logger.debug(`Registered resource: ${i}`)):typeof s=="object"&&V$(e,s,i)}}var q$,QS,nle,K$=ie(()=>{OC();q$=require("path");a($$,"isResource");QS=class extends Error{static{a(this,"ResourceLoadError")}filePath;cause;constructor(t,r){super(`Failed to load resource module ${t}${r?`: ${r.message}`:""}`),this.name="ResourceLoadError",this.filePath=t,this.cause=r}};a(rle,"handleApplication");a(V$,"recurseForResources");nle=!0});var DC={};Re(DC,{start:()=>sle});function sle({resources:e}){e.set("login",LC),e.loginPath=t=>"/login?redirect="+encodeURIComponent(t.url)}var LC,Y$=ie(()=>{Xi();a(sle,"start");LC=class extends Vt{static{a(this,"Login")}static async get(t,r,n){}static async post(t,r,n){let{username:s,password:i}=r;return{data:await n.login(s,i)}}}});function ZS(e,t){let r={openapi:ile,info:{title:"HarperDB HTTP REST interface",version:X$.packageJson.version},servers:[{description:"REST API",url:t}],paths:{},components:{schemas:{},securitySchemes:{basicAuth:{type:"http",scheme:"basic"},bearerAuth:{type:"http",scheme:"bearer",bearerFormat:"JWT"}}}},n=[{basicAuth:[],bearerAuth:[]}],s=a(i=>{if(i.type&&!r.components.schemas[i.type]){r.components.schemas[i.type]={};let o={},c=[];for(let l of i.properties)XS[l.type]?o[l.name]=new MC(XS[l.type],l.type):l.properties?(o[l.name]=new eV(l.type),s(l)):l.elements?.properties&&(o[l.name]=new lle(l.elements.type),s(l.elements)),l.nullable===!1&&c.push(l.name);r.components.schemas[i.type]=new Q$(o,!i.sealed,c)}},"includeDefinitionInSchema");for(let[,i]of e){if(!i.path||i.Resource.isError)continue;let{path:o}=i,c=o.split("/").pop(),{attributes:l,sealed:u}=i.Resource,{prototype:d,primaryKey:f="id"}=i.Resource;if(!l&&e.allTypes.has(i.path)){let X=e.allTypes.get(i.path);u=X.sealed,l=X.properties}if(!f)continue;let m={},p=[],h=[];if(l)for(let{type:X,name:Q,elements:F,relationship:de,definition:oe,nullable:ae}of l){let he=oe??F?.definition;he&&s(he),ae===!1&&h.push(Q),de?X==="array"?m[Q]={type:"array",items:{$ref:Ys+F.type}}:m[Q]={$ref:Ys+X}:he?X==="array"?m[Q]={type:"array",items:{$ref:Ys+he.type}}:m[Q]={$ref:Ys+he.type}:X==="array"?F.type==="Any"?m[Q]={type:"array",items:{format:F.type}}:m[Q]={type:"array",items:new MC(XS[F.type],F.type)}:X==="Any"?m[Q]={format:X}:m[Q]=new MC(XS[X],X),p.push(new UC(Q,"query",m[Q]))}let E=Object.keys(m),_=new UC(f,"path",{type:"string",format:"ID"});_.required=!0,_.description="primary key of record";let R=new UC("property","path",{enum:E});R.required=!0,r.components.schemas[c]=new Q$(m,!u,h);let S=d.post!==Vt.prototype.post||d.update,y=typeof d.put=="function",I=typeof d.get=="function",w=typeof d.delete=="function",L=typeof d.patch=="function",H=`/${o}/`;r.paths[H]||(r.paths[H]={}),S&&(r.paths[H].post=new ole(c,n,{200:new Gd({$ref:Ys+c},{Location:{description:"primary key of new record",schema:{type:"string",format:"ID"}}})},"create a new record auto-assigning a primary key")),r.paths[H].options=new W$(p,n,{200:new j$},"retrieve information about the communication options available for a target resource or the server as a whole, without performing any resource action"),I&&(r.paths[H].get=new vC(p,n,{200:new Gd({type:"array",items:{$ref:Ys+c}})},"search for records by the specified property name and value pairs")),w&&(r.paths[H].delete=new J$(p,n,"delete all the records that match the provided query",{204:new z$}));let Z="/"+o+"/{"+f+"}";if(r.paths[Z]||(r.paths[Z]={}),r.paths[Z].options=new W$(p,n,{200:new j$},"retrieve information about the communication options available for a target resource or the server as a whole, without performing any resource action"),I&&(r.paths[Z].get=new vC([_],n,{200:new Gd({$ref:Ys+c})},"retrieve a record by its primary key")),y&&(r.paths[Z].put=new ale([_],n,c,{200:new Gd({$ref:Ys+c})},"create or update the record with the URL path that maps to the record's primary key")),L&&(r.paths[Z].patch=new cle([_],n,c,{200:new Gd({$ref:Ys+c})},"patch the record with the URL path that maps to the record's primary key")),w&&(r.paths[Z].delete=new J$([_],n,"delete a record with the given primary key",{204:new z$})),I&&R.schema.enum.length>0){let X=`/${o}/{${f}}.{property}`;r.paths[X]||(r.paths[X]={}),r.paths[X].get=new vC([_,R],n,{200:new Gd({enum:E})},"used to retrieve the specified property of the specified record")}}for(let[,i]of e.allTypes)s(i),i.sealed&&r.components.schemas[i.type].additionalProperties&&(r.components.schemas[i.type].additionalProperties=!1);return r}function ole(e,t,r,n){this.description=n,this.requestBody={content:{"application/json":{schema:{$ref:Ys+e}}}},this.security=t,this.responses=r}function vC(e,t,r,n){this.description=n,this.parameters=e,this.security=t,this.responses=r}function W$(e,t,r,n){this.description=n,this.parameters=e,this.security=t,this.responses=r}function j$(){this.description=Z$,this.headers={},this.content={}}function Gd(e,t){this.description=Z$,this.content={"application/json":{schema:e}},this.headers=t}function z$(){this.description="successfully processed request, no content returned to client"}function ale(e,t,r,n,s){this.description=s,this.parameters=e,this.security=t,this.requestBody={content:{"application/json":{schema:{$ref:Ys+r}}}},this.responses=n}function cle(e,t,r,n,s){this.description=s,this.parameters=e,this.security=t,this.requestBody={content:{"application/json":{schema:{$ref:Ys+r}}}},this.responses=n}function J$(e,t,r,n){this.description=r,this.parameters=e,this.security=t,this.responses=n}function Q$(e,t,r){this.type="object",this.properties=e,this.additionalProperties=t,this.required=r}function MC(e,t){this.type=e,(e==="string"||e==="number"||e==="integer")&&t!=="String"&&(this.format=t)}function eV(e){this.$ref=`#/components/schemas/${e}`}function lle(e){this.type="array",this.items=new eV(e)}function UC(e,t,r){this.name=e,this.in=t,this.schema=r}var X$,ile,XS,Ys,Z$,xC=ie(()=>{X$=b(Dt());Xi();ile="3.0.3",XS={Int:"integer",Float:"number",Long:"integer",ID:"string",String:"string",Boolean:"boolean",Date:"string",Bytes:"string",BigInt:"integer"},Ys="#/components/schemas/",Z$="successful operation";a(ZS,"generateJsonApi");a(ole,"Post");a(vC,"Get");a(W$,"Options");a(j$,"ResponseOptions200");a(Gd,"Response200");a(z$,"Response204");a(ale,"Put");a(cle,"Patch");a(J$,"Delete");a(Q$,"ResourceSchema");a(MC,"Type");a(eV,"Ref");a(lle,"ArrayRef");a(UC,"Parameter")});var rV={};Re(rV,{Request:()=>Sc,createReuseportFd:()=>eT});var tV,Sc,BC,FC,eT,ph=ie(()=>{tV=require("os"),Sc=class{static{a(this,"Request")}#e;#t;_nodeRequest;_nodeResponse;method;url;headers;isWebSocket;user;constructor(t,r){this.method=t.method;let n=t.url;this._nodeRequest=t,this._nodeResponse=r,this.url=n,this.headers=new FC(t.headers)}get absoluteURL(){return this.protocol+"://"+this.host+this.url}get pathname(){let t=this.url.indexOf("?");return t>-1?this.url.slice(0,t):this.url}set pathname(t){let r=this.url.indexOf("?");r>-1?this.url=t+this.url.slice(r):this.url=t}get protocol(){return this._nodeRequest.socket.encrypted?"https":"http"}get ip(){return this._nodeRequest.socket.remoteAddress}get authorized(){return this._nodeRequest.socket.authorized}get peerCertificate(){return this.#t===void 0&&(this.#t=this._nodeRequest.socket.getPeerCertificate?.(!0)||null),this.#t}get mtlsConfig(){return this._nodeRequest.socket.server.mtlsConfig}get body(){return this.#e||(this.#e=new BC(this._nodeRequest))}get host(){return this._nodeRequest.authority||this._nodeRequest.headers.host}get hostname(){return this._nodeRequest.headers.host}get httpVersion(){return this._nodeRequest.httpVersion}get isAborted(){return!1}get nodeRequest(){return this._nodeRequest}sendEarlyHints(t,r={}){r.link=t,this._nodeResponse.writeEarlyHints(r)}},BC=class{static{a(this,"RequestBody")}#e;constructor(t){this.#e=t}on(t,r){return this.#e.on(t,r),this}pipe(t,r){return this.#e.pipe(t,r)}},FC=class{static{a(this,"Headers")}asObject;constructor(t){this.asObject=t}set(t,r){this.asObject[t.toLowerCase()]=r}get(t){return this.asObject[t.toLowerCase()]}has(t){return Object.prototype.hasOwnProperty.call(this.asObject,t.toLowerCase())}[Symbol.iterator](){return Object.entries(this.asObject)[Symbol.iterator]()}keys(){return Object.keys(this.asObject)}values(){return Object.values(this.asObject)}delete(t){delete this.asObject[t.toLowerCase()]}forEach(t){for(let[r,n]of this)t(n,r,this)}};(0,tV.platform)()!="win32"&&(eT=require("node-unix-socket").createReuseportFd)});var rT={};Re(rT,{parseHeaderValue:()=>HC,start:()=>fle});async function dle(e,t){let r=e.headers.asObject,n=r.accept==="text/event-stream",s=n?"CONNECT":e.method;e.search&&Mg(e);let i=new $s;try{e.responseHeaders=i;let o=e.url.slice(1),c,l;if(o!==nV){let _=tT.getMatch(o,n?"sse":"rest");if(!_)return t(e);e.handlerPath=_.path,c=new ks(_.relativeURL),c.async=!0,l=_.Resource}if(l?.isCaching){let _=r["cache-control"];if(_){let R=HC(_);for(let S of R)switch(S.name){case"max-age":e.expiresAt=S.value*1e3+Date.now();break;case"only-if-cached":e.onlyIfCached=!0;break;case"no-cache":e.noCache=!0;break;case"no-store":e.noCacheStore=!0;break;case"stale-if-error":e.staleIfError=!0;break;case"must-revalidate":e.mustRevalidate=!0;break}}}let u=r["x-replicate-to"];if(u){let _=HC(u).map(R=>(R.next?.name==="confirm"&&R.next.value>=0&&(e.replicatedConfirmation=+R.next.value),R.name));e.replicateTo=_.length===1&&+_[0]>=0?+_[0]:_[0]==="*"?void 0:_}r["x-replicate-from"]==="none"&&(e.replicateFrom=!1);let f=await wt(e,()=>{if(r["content-length"]||r["transfer-encoding"])try{e.data=jo(r["content-type"],!0)(e.body,e.headers)}catch(_){throw new qd.ClientError(_,400)}if(e.authorize=!0,o===nV&&s==="GET"){if(e?.user?.role?.permission?.super_user)return ZS(tT,`${e.protocol}://${e.hostname}`);throw new qd.ServerError("Forbidden",403)}switch(c.checkPermission=e.user?.role?.permission??{},s){case"GET":case"HEAD":return l.get(c,e);case"POST":return l.post(c,e.data,e);case"PUT":return l.put(c,e.data,e);case"DELETE":return l.delete(c,e);case"PATCH":return l.patch(c,e.data,e);case"OPTIONS":i.setIfNone("Allow","GET, HEAD, POST, PUT, DELETE, PATCH, OPTIONS, TRACE, QUERY, COPY, MOVE");return;case"CONNECT":return l.connect(c,null,e);case"TRACE":return"HarperDB is the terminating server";case"QUERY":return l.query(c,e.data,e);case"COPY":return l.copy(c,r.destination,e);case"MOVE":return l.move(c,r.destination,e);case"BREW":throw new qd.ClientError("HarperDB is short and stout and can't brew coffee",418);default:throw new qd.ServerError(`Method ${s} is not recognized`,501)}}),m=200,p=e.lastModified;if(f==null)m=s==="GET"||s==="HEAD"?404:204,kC.lastModified&&isFinite(p)&&i.setIfNone("Last-Modified",new Date(p).toUTCString());else if(f.status>0&&f.headers){let _=vq(f.headers,i);return f.headers!==_&&(f.headers=_),f.data!==void 0&&(f.body=Vm(f.data,e,f)),f}else if(isFinite(p)){ule[0]=p;let _=String.fromCharCode(34,(on[0]&63)+62,(on[0]>>6)+(on[1]<<2&63)+62,(on[1]>>4)+(on[2]<<4&63)+62,(on[2]>>2)+62,(on[3]&63)+62,(on[3]>>6)+(on[4]<<2&63)+62,(on[4]>>4)+(on[5]<<4&63)+62,(on[5]>>2)+62,(on[6]&63)+62,(on[6]>>6)+(on[7]<<2&63)+62,34),R=r["if-none-match"];R&&_==R?(f?.onDone&&f.onDone(),m=304,f=void 0):i.setIfNone("ETag",_),kC.lastModified&&i.setIfNone("Last-Modified",new Date(p).toUTCString())}e.createdResource&&(m=201),e.newLocation&&i.setIfNone("Location",e.newLocation);let h={status:m,headers:i,body:void 0},E=e.loadedFromSource??f?.wasLoadedFromSource?.();return E!==void 0&&(h.wasCacheMiss=E,!E&&isFinite(p)&&i.setIfNone("Age",Math.round((Date.now()-(e.lastRefreshed||p))/1e3))),f!==void 0&&(h.body=Vm(f,e,h),s==="HEAD"&&(h.body=void 0)),h}catch(o){o.statusCode?o.statusCode===500?bi.warn(o):bi.info(o):bi.error(o),o.statusCode===405&&(o.method&&(o.message+=` to handle HTTP method ${o.method.toUpperCase()||""}`),o.allow&&(o.allow.push("trace","head","options"),i.setIfNone("Allow",o.allow.map(l=>l.toUpperCase()).join(", "))));let c={status:o.statusCode||500,headers:i,body:void 0};return c.body=Vm(o instanceof Error?oV(o):o,e,c),c}}function fle(e){kC=e,e.includeExpensiveRecordCountEstimates&&(Sc.prototype.includeExpensiveRecordCountEstimates=!0),!sV&&(sV=!0,tT=e.resources,e.server.http(async(t,r)=>{if(!t.isWebSocket)return dle(t,r)},e),e.webSocket!==!1&&e.server.ws(async(t,r,n)=>{hh++;let s=new cs;iV||(iV=!0,ap(l=>{hh>0&&l.push({metric:"ws-connections",connections:hh,byThread:!0})}));let i;t.on("error",l=>{i=!0,bi.warn(l)});let o;t.on("message",a(function(u){o||(o=jo(r.requestedContentType??r.headers.asObject["content-type"],!1));let d=o(u);qe(u.length,"bytes-received",r.handlerPath,"message","ws"),s.push(d)},"message"));let c;t.on("close",()=>{hh--,rn(!i,"connection","ws","disconnect"),s.emit("close"),c&&c.return()});try{await n;let l=r.url.slice(1),u=tT.getMatch(l,"ws");if(rn(!!u,"connection","ws","connect"),u){r.handlerPath=u.path,qe(h=>({count:h.count,total:hh}),"connections",r.handlerPath,"connect","ws"),r.authorize=!0;let d=new ks(u.relativeURL);d.checkPermission=r.user?.role?.permission??{};let f=u.Resource;c=(await wt(r,()=>f.connect(d,s,r)))[Symbol.asyncIterator]();let p;for(;!(p=await c.next()).done;){let h=await Wo(p.value,r);t.send(h),qe(h.length,"bytes-sent",r.handlerPath,"message","ws"),t._socket.writableNeedDrain&&await new Promise(E=>t._socket.once("drain",E))}}else return t.close(1011,`No resource was found to handle ${r.pathname}`)}catch(l){l.statusCode?l.statusCode===500?bi.warn(l):bi.info(l):bi.error(l),t.close(mle[l.statusCode]||1011,oV(l))}t.close()},e))}function HC(e){return e.trim().split(",").map(t=>{let r,n=t.trim().split(";"),s;for(;s=n.pop();)if(s.includes("=")){let[i,o]=s.trim().split("=");i=i.trim(),o&&(o=o.trim()),r={name:i.toLowerCase(),value:o,next:r}}else r={name:s.toLowerCase(),next:r};return r})}var bi,qd,oV,on,ule,kC,nV,sV,tT,iV,hh,mle,aV=ie(()=>{zo();Hn();bi=b(ee()),qd=b(ge());Ug();Wu();ec();Qp();xC();ph();Bg();({errorToString:oV}=bi),on=new Uint8Array(8),ule=new Float64Array(on.buffer,0,1),kC={},nV="openapi";a(dle,"http");hh=0;a(fle,"start");mle={401:3e3,403:3003};a(HC,"parseHeaderValue")});var GC=x((yxe,lV)=>{var{recordAction:nT,recordActionBinary:cV}=(Hn(),P(Ig)),ple=require("fastify-plugin"),hle=200;lV.exports=ple(function(e,t,r){e.addHook("onResponse",async(n,s)=>{let i=s.elapsedTime}),e.addHook("onSend",async(n,s,i)=>{let o=s.elapsedTime,c=performance.now(),l=s.request.routeOptions,u,d,f;l.config?.isOperation?(u=n.body?.operation,d="operation"):(u=l.url,d="fastify-route",f=l.method),nT(o,"duration",u,f,d),cV(s.raw.statusCode<400,"success",u,f,d),cV(1,"response_"+s.raw.statusCode,u,f,d);let m=hle;i?.pipe?(i.on("data",_=>{m+=_.length}),i.on("end",()=>{nT(performance.now()-c,"transfer",u,f,d),nT(m,"bytes-sent",u,f,d)})):(m+=i?.length||0,nT(m,"bytes-sent",u,f,d));let p=o.toFixed(3),h=s.getHeader("Server-Timing"),E=`db;dur=${p}`;s.header("Server-Timing",h?`${h}, ${E}`:E)}),r()},{name:"hdb-request-time"})});var dV=x((Rxe,uV)=>{var Ele=ht(),_le={user:{presence:!0},schema:{presence:!0},table:{presence:!0},operation:{presence:!0}};uV.exports=function(e){return Ele.validateObject(e,_le)}});var sT=x((bxe,fV)=>{"use strict";var gle=($(),P(z)).OPERATIONS_ENUM,qC=class{static{a(this,"UpdateObject")}constructor(t,r,n,s=void 0){this.operation=gle.UPDATE,this.schema=t,this.table=r,this.records=n,this.__origin=s}};fV.exports=qC});var gh={};Re(gh,{createTokens:()=>VC,getJWTRSAKeys:()=>lT,refreshOperationToken:()=>KC,validateOperationToken:()=>YC,validateRefreshToken:()=>uT});async function lT(){if(iT)return iT;try{let e=Eh.default.join(_h.default.getHdbBasePath(),SA),t=await oT.default.readFile(Eh.default.join(e,Tm.JWT_PASSPHRASE_NAME),"utf8"),r=await oT.default.readFile(Eh.default.join(e,Tm.JWT_PRIVATE_KEY_NAME),"utf8");return iT={publicKey:await oT.default.readFile(Eh.default.join(e,Tm.JWT_PUBLIC_KEY_NAME),"utf8"),privateKey:r,passphrase:t},iT}catch(e){throw cT.default.error(e),new Ai.ClientError(Vd.NO_ENCRYPTION_KEYS,$d.INTERNAL_SERVER_ERROR)}}async function VC(e){let t=(0,$C.validateBySchema)(e,uo.default.object({username:uo.default.string().optional(),password:uo.default.string().optional(),role:uo.default.string().optional(),expires_in:uo.default.alternatives(uo.default.string(),uo.default.number()).optional()}));if(t)throw new Ai.ClientError(t.message);let r;try{let f=e.bypass_auth!==!0;!e.username&&!e.password&&(e.username=e.hdb_user?.username,f=!1),r=await bd(e.username,e.password,f)}catch(f){throw cT.default.error(f),new Ai.ClientError(Vd.INVALID_CREDENTIALS,$d.UNAUTHORIZED)}if(!r)throw new Ai.ClientError(Vd.INVALID_CREDENTIALS,$d.UNAUTHORIZED);let n=!1,s=!1;r.role?.permission&&(n=r.role.permission.super_user===!0,s=r.role.permission.cluster_user===!0);let i={username:e.username,super_user:n,cluster_user:s};e.role&&(i.role=e.role);let o=await lT(),c=await Kd.default.sign(i,{key:o.privateKey,passphrase:o.passphrase},{expiresIn:e.expires_in??_V,algorithm:aT,subject:Yd.OPERATION}),l=await Kd.default.sign(i,{key:o.privateKey,passphrase:o.passphrase},{expiresIn:Sle,algorithm:aT,subject:Yd.REFRESH}),u=hN(l,Kr.SHA256);if((await(0,mV.update)(new pV.default(gm,ku.USER_TABLE_NAME,[{username:e.username,refresh_token:u}]))).skipped_hashes.length>0)throw new Ai.ClientError(Vd.REFRESH_TOKEN_SAVE_FAILED,$d.INTERNAL_SERVER_ERROR);return hV.default.signalUserChange(new EV.UserEventMsg(process.pid)),{operation_token:c,refresh_token:l}}async function KC(e){let t=(0,$C.validateBySchema)(e,uo.default.object({refresh_token:uo.default.string().required()}).required());if(t)throw new Ai.ClientError(t.message);let{refresh_token:r}=e;await uT(r);let n=await lT(),s=await Kd.default.decode(r);return{operation_token:await Kd.default.sign({username:s.username,super_user:s.super_user,cluster_user:s.cluster_user},{key:n.privateKey,passphrase:n.passphrase},{expiresIn:_V,algorithm:aT,subject:Yd.OPERATION})}}async function YC(e){return gV(e,Yd.OPERATION)}async function uT(e){return gV(e,Yd.REFRESH)}async function gV(e,t){try{let r=await lT(),n=await Kd.default.verify(e,r.publicKey,{algorithms:aT,subject:t});if(n.role)throw new Error("Invalid token");let s=await bd(n.username,void 0,!1);if(t===Yd.REFRESH&&!EN(s.refresh_token,e))throw new Error("Invalid token");return s}catch(r){throw cT.default.warn(r),r?.name==="TokenExpiredError"?new Ai.ClientError(Vd.TOKEN_EXPIRED,$d.FORBIDDEN):new Ai.ClientError(Vd.INVALID_TOKEN,$d.UNAUTHORIZED)}}var Kd,oT,Eh,uo,$C,Ai,cT,mV,pV,hV,EV,_h,$d,Vd,_V,Sle,aT,Yd,iT,Wd=ie(()=>{Kd=b(require("jsonwebtoken")),oT=b(require("fs-extra")),Eh=b(require("node:path")),uo=b(require("joi")),$C=b(ht());$();Ai=b(ge()),cT=b(ee());gN();jn();mV=b(_s()),pV=b(sT()),hV=b(sa()),EV=b(ms()),_h=b(fe()),{HTTP_STATUS_CODES:$d,AUTHENTICATION_ERROR_MSGS:Vd}=Ai.hdbErrors;_h.default.initSync();_V=_h.default.get(U.AUTHENTICATION_OPERATIONTOKENTIMEOUT)||"1d",Sle=_h.default.get(U.AUTHENTICATION_REFRESHTOKENTIMEOUT)||"30d",aT="RS256",Yd={OPERATION:"operation",REFRESH:"refresh"};a(lT,"getJWTRSAKeys");a(VC,"createTokens");a(KC,"refreshOperationToken");a(YC,"validateOperationToken");a(uT,"validateRefreshToken");a(gV,"validateToken")});var RV=x((Cxe,yV)=>{"use strict";var Tle=dV(),jd=require("passport"),yle=require("passport-local").Strategy,Rle=require("passport-http").BasicStrategy,ble=require("util"),Ale=(jn(),P(Ri)),TV=ble.callbackify(Ale.findAndValidateUser),Ile=($(),P(z)),SV=(Wd(),P(gh)),{AccessViolation:wle}=ge();jd.use(new yle(function(e,t,r){TV(e,t,r)}));jd.use(new Rle(function(e,t,r){TV(e,t,r)}));jd.serializeUser(function(e,t){t(null,e)});jd.deserializeUser(function(e,t){t(null,e)});function Nle(e,t,r){if(e.raw?.user!==void 0)return r(null,e.raw.user);let n,s;if(e.headers?.authorization){let o=e.headers.authorization.split(" ");n=o[0],s=o[1]}function i(o,c){return o?r(o):c?r(null,c):r(new wle)}switch(a(i,"handleResponse"),n){case"Basic":jd.authenticate("basic",{session:!1},(o,c)=>{i(o,c)})(e,t,r);break;case"Bearer":e.body?.operation&&e.body.operation===Ile.OPERATIONS_ENUM.REFRESH_OPERATION_TOKEN?SV.validateRefreshToken(s).then(o=>{e.body.refresh_token=s,r(null,o)}).catch(o=>{r(o)}):SV.validateOperationToken(s).then(o=>{r(null,o)}).catch(o=>{r(o)});break;default:jd.authenticate("local",{session:!1},function(o,c){i(o,c)})(e,t,r);break}}a(Nle,"authorize");function Cle(e,t){let r=Tle(e);if(r){t(r);return}let n={authorized:!0,messages:[]},s=e.user.role;if(!s?.permission)return t("Invalid role");let i=JSON.parse(s.permission);if(i.super_user)return t(null,n);if(!i[e.schema])return n.authorized=!1,n.messages.push(`Not authorized to access ${e.schema} schema`),t(null,n);if(!i[e.schema].tables[e.table])return n.authorized=!1,n.messages.push(`Not authorized to access ${e.table} table`),t(null,n);if(!i[e.schema].tables[e.table][e.operation])return n.authorized=!1,n.messages.push(`Not authorized to access ${e.operation} on ${e.table} table`),t(null,n);if(i[e.schema].tables[e.table].attribute_permissions&&!e.attributes)return n.authorized=!1,n.messages.push(`${e.schema}.${e.table} has attribute permissions. Missing attributes to validate`),t(null,n);if(i[e.schema].tables[e.table].attribute_permissions&&e.attributes){let o=i[e.schema].tables[e.table].attribute_permissions;for(let c in o)e.attributes.indexOf(o[c].attribute_name)>-1&&!o[c][e.operation]&&(n.authorized=!1,n.messages.push(`Not authorized to ${e.operation} ${o[c].attribute_name} `))}return t(null,n)}a(Cle,"checkPermissions");yV.exports={authorize:Nle,checkPermissions:Cle}});var XC=x((Pxe,wV)=>{var pT=require("clone"),hT=ht(),Ole=ue(),fT=($(),P(z)),WC=require("fs"),zC=require("joi"),{string:mT}=zC.types(),{hdbErrors:Ple,handleHDBError:dT}=ge(),{HTTP_STATUS_CODES:jC}=Ple,{commonValidators:zd}=ta(),bV=" is required",Lle=["insert","update","upsert"],JC={database:{presence:!1,format:zd.schema_format,length:zd.schema_length},schema:{presence:!1,format:zd.schema_format,length:zd.schema_length},table:{presence:!0,format:zd.schema_format,length:zd.schema_length},action:{inclusion:{within:Lle,message:"is required and must be either insert, update, or upsert"}},file_path:{},csv_url:{url:{allowLocal:!0}},data:{},passthrough_headers:{}},Dle={schema:mT.required(),table:mT.required(),action:mT.valid("insert","update","upsert")},{AWS_ACCESS_KEY:vle,AWS_SECRET:Mle,AWS_BUCKET:Ule,AWS_FILE_KEY:xle,REGION:Ble}=fT.S3_BUCKET_AUTH_KEYS,Fle={s3:{presence:!0},[`s3.${vle}`]:{presence:!0,type:"String"},[`s3.${Mle}`]:{presence:!0,type:"String"},[`s3.${Ule}`]:{presence:!0,type:"String"},[`s3.${xle}`]:{presence:!0,type:"String",hasValidFileExt:[".csv",".json"]},[`s3.${Ble}`]:{presence:!0,type:"String"}},AV=pT(JC);AV.data.presence={message:bV};var IV=pT(JC);IV.file_path.presence={message:bV};var kle=Object.assign(pT(JC),Fle),QC=pT(Dle);QC.csv_url=mT.uri().messages({"string.uri":"'csv_url' must be a valid url"}).required();QC.passthrough_headers=zC.object();function Hle(e){let t=hT.validateObject(e,AV);return ET(e,t)}a(Hle,"dataObject");function Gle(e){let t=hT.validateBySchema(e,zC.object(QC));return ET(e,t)}a(Gle,"urlObject");function qle(e){let t=hT.validateObject(e,IV);return ET(e,t)}a(qle,"fileObject");function $le(e){let t=hT.validateObject(e,kle);return ET(e,t)}a($le,"s3FileObject");function ET(e,t){if(!t){let r=Ole.checkGlobalSchemaTable(e.schema,e.table);if(r)return dT(new Error,r,jC.BAD_REQUEST);if(e.operation===fT.OPERATIONS_ENUM.CSV_FILE_LOAD)try{WC.accessSync(e.file_path,WC.constants.R_OK|WC.constants.F_OK)}catch(n){return n.code===fT.NODE_ERROR_CODES.ENOENT?dT(n,`No such file or directory ${n.path}`,jC.BAD_REQUEST):n.code===fT.NODE_ERROR_CODES.EACCES?dT(n,`Permission denied ${n.path}`,jC.BAD_REQUEST):dT(n)}}return t}a(ET,"postValidateChecks");wV.exports={dataObject:Hle,urlObject:Gle,fileObject:qle,s3FileObject:$le}});var ZC=x((Dxe,NV)=>{"use strict";var Sh=ee(),_T=($(),P(z));async function Vle(e,t,r,n=void 0){if(!e||typeof e!="function")throw new Error("Invalid function parameter");let s;try{return s=await e(t),r&&await r(t,s,n),t.operation===_T.OPERATIONS_ENUM.INSERT||t.operation===_T.OPERATIONS_ENUM.UPDATE||t.operation===_T.OPERATIONS_ENUM.UPSERT?(delete s.new_attributes,delete s.txn_time):t.operation===_T.OPERATIONS_ENUM.DELETE&&delete s.txn_time,s}catch(i){throw i.message&&typeof i.message=="string"&&i.message.includes("already exists")?(Sh.info(i.message),i):i.http_resp_msg?(Sh.error(`Error calling operation: ${e.name}`),Sh.error(i.http_resp_msg),i):(Sh.error(`Error calling operation: ${e.name}`),Sh.error(i),i)}}a(Vle,"callOperationFunctionAsAwait");NV.exports={callOperationFunctionAsAwait:Vle}});var eO=x((Mxe,OV)=>{"use strict";var{S3:Kle,GetObjectCommand:Yle}=require("@aws-sdk/client-s3");OV.exports={getFileStreamFromS3:Wle,getS3AuthObj:CV};async function Wle(e){let{s3:t}=e,r={Bucket:t.bucket,Key:t.key};return(await CV(t.aws_access_key_id,t.aws_secret_access_key,t.region).send(new Yle(r))).Body}a(Wle,"getFileStreamFromS3");function CV(e,t,r){return new Kle({credentials:{accessKeyId:e,secretAccessKey:t},region:r})}a(CV,"getS3AuthObj")});var LV=x((xxe,PV)=>{"use strict";var tO=class{static{a(this,"BulkLoadFileObject")}constructor(t,r,n,s,i,o,c=null){this.op=t,this.action=r,this.schema=n,this.table=s,this.file_path=i,this.file_type=o,this.role_perms=c}},rO=class{static{a(this,"BulkLoadDataObject")}constructor(t,r,n,s){this.action=t,this.schema=r,this.table=n,this.data=s}};PV.exports={BulkLoadFileObject:tO,BulkLoadDataObject:rO}});var vV=x((Fxe,DV)=>{"use strict";var nO=class{static{a(this,"PermissionTableResponseObject")}constructor(t,r,n=[],s=[]){this.schema=t,this.table=r,this.required_table_permissions=n,this.required_attribute_permissions=s}};DV.exports=nO});var UV=x((Hxe,MV)=>{"use strict";var sO=class{static{a(this,"PermissionAttributeResponseObject")}constructor(t,r=[]){this.attribute_name=t,this.required_permissions=r}};MV.exports=sO});var oO=x((qxe,BV)=>{"use strict";var xV=vV(),jle=UV(),{HDB_ERROR_MSGS:zle}=En(),iO=class{static{a(this,"PermissionResponseObject")}constructor(){this.error=zle.OP_AUTH_PERMS_ERROR,this.unauthorized_access={},this.invalid_schema_items=[]}handleUnauthorizedItem(t){return this.invalid_schema_items=[],this.unauthorized_access=[t],this}handleInvalidItem(t){return this.invalid_schema_items=[t],this.unauthorized_access=[],this}addInvalidItem(t,r,n){if(r&&n){let s=`${r}_${n}`;if(this.unauthorized_access[s])return}this.invalid_schema_items.push(t)}addUnauthorizedTable(t,r,n){let s=new xV(t,r,n),i=`${t}_${r}`;this.unauthorized_access[i]=s}addUnauthorizedAttributes(t,r,n,s){let i=[];t.forEach(c=>{let l=new jle(c,s[c]);i.push(l)});let o=`${r}_${n}`;if(this.unauthorized_access[o])this.unauthorized_access[o].required_attribute_permissions=i;else{let c=new xV(r,n,[],i);this.unauthorized_access[o]=c}}getPermsResponse(){let t=Object.values(this.unauthorized_access);return t.length>0||this.invalid_schema_items.length>0?(this.unauthorized_access=t,this):null}};BV.exports=iO});var Jd=x((Vxe,GV)=>{"use strict";var Th=ee(),{validateBySchema:FV}=ht(),fa=require("joi"),Jle=ca(),gT=ue(),{handleHDBError:ST,hdbErrors:Qle,ClientError:kV}=ge(),{HDB_ERROR_MSGS:TT,HTTP_STATUS_CODES:aO}=Qle,HV=fe();HV.initSync();var{getDatabases:cO}=(Oe(),P(Et)),Xle=require("fs-extra"),Zle=($(),P(z));GV.exports={describeAll:eue,describeTable:yT,describeSchema:tue};async function eue(e={}){try{let t=gT.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=cO(),o={},c={},l=[],u=e?.exact_count,d=e?.include_computed;for(let m in i){o[m]=!0,!t&&!s&&!r&&(c[m]=e.hdb_user?.role?.permission[m]?.describe);let p=i[m];for(let h in p)try{let E;if(t||s||r)E=await yT({schema:m,table:h,exact_count:u,include_computed:d});else if(n&&n[m].describe&&n[m].tables[h].describe){let _=n[m].tables[h].attribute_permissions;E=await yT({schema:m,table:h,exact_count:u,include_computed:d},_)}E&&l.push(E)}catch(E){Th.error(E)}}let f={};for(let m in l)t||s||r?(f[l[m].schema]==null&&(f[l[m].schema]={}),f[l[m].schema][l[m].name]=l[m],o[l[m].schema]&&delete o[l[m].schema]):c[l[m].schema]&&(f[l[m].schema]==null&&(f[l[m].schema]={}),f[l[m].schema][l[m].name]=l[m],o[l[m].schema]&&delete o[l[m].schema]);for(let m in o)t||s||r?f[m]={}:c[m]&&(f[m]={});return f}catch(t){return Th.error("Got an error in describeAll"),Th.error(t),ST(new Error,TT.DESCRIBE_ALL_ERR)}}a(eue,"describeAll");async function yT(e,t){gT.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=FV(e,fa.object({database:fa.string(),table:fa.string().required(),exact_count:fa.boolean().strict(),include_computed:fa.boolean().strict()}));if(i)throw new kV(i.message);let c=cO()[r];if(!c)throw ST(new Error,TT.SCHEMA_NOT_FOUND(e.schema),aO.NOT_FOUND);let l=c[n];if(!l)throw ST(new Error,TT.TABLE_NOT_FOUND(e.schema,e.table),aO.NOT_FOUND);function u(p){(!p.computed||e.include_computed)&&d.push({attribute:p.attribute,type:p.type,elements:p.elements?.type,indexed:p.indexed,is_primary_key:p.isPrimaryKey,assigned_created_time:p.assignCreatedTime,assigned_updated_time:p.assignUpdatedTime,nullable:p.nullable,computed:p.computed?!0:void 0,properties:p.properties?p.properties.map(h=>({type:h.type,name:h.name})):void 0})}a(u,"pushAtt");let d=[];if(s){let p={};s.forEach(h=>{h.describe&&(p[h.attribute_name]=!0)}),l.attributes.forEach(h=>{p[h.name]&&u(h)})}else l.attributes?.forEach(p=>u(p));let f;try{f=(await Xle.stat(l.primaryStore.env.path)).size}catch(p){Th.warn("unable to get database size",p)}let m={schema:r,name:l.tableName,hash_attribute:l.attributes.find(p=>p.isPrimaryKey||p.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(p=>p.name).filter(p=>p&&p!=="NATSReplicator"&&p!=="Replicator")),HV.get(Zle.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(m.clustering_stream_name=Jle.createNatsTableStreamName(m.schema,m.name));try{let p=await l.getRecordCount({exactCount:!!e.exact_count});m.record_count=p.recordCount,m.table_size=l.getSize(),m.db_audit_size=l.getAuditSize(),m.estimated_record_range=p.estimatedRange;let h=l.auditStore;if(h)for(let E of h.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(p){Th.warn(`unable to stat table dbi due to ${p}`)}return m}a(yT,"descTable");async function tue(e){gT.transformReq(e);let t=FV(e,fa.object({database:fa.string(),exact_count:fa.boolean().strict(),include_computed:fa.boolean().strict()}));if(t)throw new kV(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=cO()[n];if(!i)throw ST(new Error,TT.SCHEMA_NOT_FOUND(e.schema),aO.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),gT.isEmpty(l)||l.describe){let u=await yT({schema:e.schema,table:c,exact_count:e.exact_count,include_computed:e.include_computed},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(tue,"describeSchema")});var YV=x((Yxe,KV)=>{"use strict";var rue=Jd(),{hdbErrors:qV}=ge(),{getDatabases:$V}=(Oe(),P(Et));KV.exports={checkSchemaExists:VV,checkSchemaTableExists:nue,schemaDescribe:rue};async function VV(e){if(!$V()[e])return qV.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}a(VV,"checkSchemaExists");async function nue(e,t){let r=await VV(e);if(r)return r;if(!$V()[e][t])return qV.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}a(nue,"checkSchemaTableExists")});var jV=x((jxe,WV)=>{"use strict";var sue=Es();WV.exports={writeTransaction:iue};function iue(e,t,r){return sue.writeTransaction(e,t,r)}a(iue,"writeTransaction")});var mO=x((Jxe,o1)=>{"use strict";var{decode:oue}=require("msgpackr"),AT=Tr(),Qd=_r(),dO=($(),P(z)),bn=ee(),uO=fe(),aue=($(),P(z)),{onMessageByType:cue}=it(),XV=ca(),{recordAction:zV,recordActionBinary:lue}=(Hn(),P(Ig)),{publishToStream:uue}=AT,{ConsumerEvents:JV}=require("nats"),due=Wn(),{promisify:fue}=require("util"),{decodeBlobsWithWrites:mue}=(ls(),P(mg)),ZV=fue(setTimeout),IT=1e4,wT,bT,e1,yh=new Map,Xd=new Map;o1.exports={initialize:t1,ingestConsumer:fO,setSubscription:pue,setIgnoreOrigin:_ue,getDatabaseSubscriptions:Eue,updateConsumer:r1};async function t1(){cue(dO.ITC_EVENT_TYPES.NATS_CONSUMER_UPDATE,async t=>{await r1(t)}),e1=!0,bn.notify("Initializing clustering ingest service.");let{connection:e}=await AT.getNATSReferences();wT=e,bT=e.info.server_name}a(t1,"initialize");async function r1(e){if(e.status==="start"){let{js:t,jsm:r}=await n1(e.node_domain_name);fO(e.stream_name,t,r,e.node_domain_name)}else if(e.status==="stop"){let t=yh.get(e.stream_name+e.node_domain_name);t&&(bn.notify("Closing ingest consumer for node:",e.node_domain_name,"stream:",e.stream_name),await t.close?.(),yh.set(e.stream_name+e.node_domain_name,"close")),Xd.get(e.node_domain_name)==="failed"&&Xd.set(e.node_domain_name,"close")}}a(r1,"updateConsumer");var NT=new Map;function pue(e,t,r){let n=NT.get(e);n||NT.set(e,n=new Map),n.set(t,r),e1||t1().then(hue)}a(pue,"setSubscription");async function hue(){let e=await due.searchByValue({database:"system",table:"hdb_nodes",attribute:"name",value:"*"});for await(let t of e){let r=t.name+Qd.SERVER_SUFFIX.LEAF,n,s;for(let i of t.subscriptions||[])if(i.subscribe===!0){if(!n&&({js:n,jsm:s}=await n1(r),!n))break;let{schema:o,table:c}=i,l=XV.createNatsTableStreamName(o,c);fO(l,n,s,r)}}}a(hue,"accessConsumers");async function n1(e){let t,r,n=1;for(;!r;)try{t=await wT.jetstream({domain:e}),r=await wT.jetstreamManager({domain:e,checkAPI:!1})}catch(s){if(Xd.get(e)==="close")break;Xd.set(e,"failed"),n%10===1&&bn.warn("Nats ingest attempting to connect to:",e,"Nats error:",s.message);let i=n++*100<IT?n++*100:IT;await ZV(i)}return{js:t,jsm:r}}a(n1,"connectToRemoteJS");function Eue(){return NT}a(Eue,"getDatabaseSubscriptions");var s1;function _ue(e){s1=e}a(_ue,"setIgnoreOrigin");var i1=100,QV=new Array(i1),RT=0;async function fO(e,t,r,n){let{connection:s}=await AT.getNATSReferences();wT=s,bT=s.info.server_name;let i,o=1;for(;!i;)try{i=await t.consumers.get(e,bT),bn.notify("Initializing ingest consumer for node:",n,"stream:",e)}catch(u){if(Xd.get(n)==="close")break;o%10===1&&bn.warn("Nats ingest error getting consumer:",n,"stream:",e,"Nats error:",u.message),u.code==="404"&&(bn.notify("Nats ingest creating consumer for node:",n,"stream:",e),i=await AT.createConsumer(r,e,bT,new Date(Date.now()).toISOString()));let d=o++*100<IT?o++*100:IT;await ZV(d)}let c=!1,l;for(;!c;){if(yh.get(e+n)==="close"||Xd.get(n)==="close"){yh.delete(e+n),c=!0;continue}l=await i.consume({max_messages:uO.get(dO.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXCONSUMEMSGS)??100,bind:!0}),yh.set(e+n,l);let u=(async()=>{for await(let d of await l.status())if(d.type===JV.ConsumerDeleted&&(await l.close(),c=!0),d.type===JV.HeartbeatsMissed){let f=d.data;bn.trace(`${f} clustering ingest consumer heartbeats missed, node: ${n} stream: ${l.consumer.stream}`),f===100&&(bn.warn(`Restarting clustering ingest consumer due to missed heartbeat threshold being met, node: ${n} stream: ${l.consumer.stream}`),l.stop())}})();try{for await(let d of l)await QV[RT],QV[RT]=gue(d).catch(f=>{bn.error(f)}),++RT>=i1&&(RT=0)}catch(d){d.message==="consumer deleted"?(bn.notify("Nats consumer deleted, closing messages for node:",n,"stream:",l.consumer.stream),await l.close(),c=!0):bn.error("Error consuming clustering ingest, restarting consumer",d)}}}a(fO,"ingestConsumer");async function gue(e){let t;await mue(()=>{t=oue(e.data)}),zV(e.data.length,"bytes-received",e.subject,t.operation,"ingest"),bn.trace("Nats message processor message size:",e?.msg?._msg?.size,"bytes");let r=e.headers,n=!1,s=uO.get(dO.CONFIG_PARAMS.CLUSTERING_NODENAME);r.has(Qd.MSG_HEADERS.TRANSACTED_NODES)&&r.values(Qd.MSG_HEADERS.TRANSACTED_NODES).indexOf(s)>-1&&(n=!0);let i=r.get(Qd.MSG_HEADERS.ORIGIN);if(n||(n=i===s&&!s1),lue(n,"echo",e.subject,t.operation,"ingest"),n){e.ack();return}r.append(Qd.MSG_HEADERS.TRANSACTED_NODES,s);try{let{operation:o,schema:c,next:l,table:u,records:d,hash_values:f,__origin:m,expiresAt:p}=t;bn.trace("processing message:",o,c,u,(d?"records: "+d.map(w=>w?.id):"")+(f?"ids: "+f:""),"with sequence:",e.seq),bn.trace(`messageProcessor nats msg id: ${e.headers.get(Qd.MSG_HEADERS.NATS_MSG_ID)}`);let h;d||(d=f);let E=new Promise(w=>h=w),{timestamp:_,user:R,node_name:S}=m||{},y=NT.get(c)?.get(u);if(!y)throw new Error(`Missing table for replication message: ${u}`);if(o==="define_schema")t.type=o,t.onCommit=h,y.send(t);else if(d.length===1&&!l)y.send({type:lO(o),value:d[0],id:f?.[0],expiresAt:p,timestamp:_,table:u,onCommit:h,user:R,nodeName:S});else{let w=d.map((L,H)=>({type:lO(o),value:L,expiresAt:p,id:f?.[H],table:u}));for(;l;)w.push({type:lO(l.operation),value:l.record,expiresAt:l.expiresAt,id:l.id,table:l.table}),l=l.next;y.send({type:"transaction",writes:w,table:u,timestamp:_,onCommit:h,user:R,nodeName:S})}uO.get(aue.CONFIG_PARAMS.CLUSTERING_REPUBLISHMESSAGES)!==!1&&uue(e.subject.split(".").slice(0,-1).join("."),XV.createNatsTableStreamName(c,u),e.headers,e.data),await E;let I=Date.now()-_;_&&zV(I,"replication-latency",e.subject,o,"ingest")}catch(o){bn.error(o)}e.ack()}a(gue,"messageProcessor");function lO(e){switch(e){case"insert":case"upsert":case"update":return"put"}return e}a(lO,"convertOperation")});var Tr=x((Xxe,b1)=>{"use strict";var Wr=fe();Wr.initSync();var Sue=require("fs-extra"),Tue=require("semver"),Ah=require("path"),{monotonicFactory:yue}=require("ulidx"),c1=yue(),Rue=require("util"),l1=require("child_process"),bue=Rue.promisify(l1.exec),Aue=l1.spawn,an=_r(),nt=($(),P(z)),{packageJson:Iue,PACKAGE_ROOT:wue}=Dt(),CT=ue(),Ii=ee(),OT=ca(),Nue=jV(),Rh=It(),{broadcast:Cue,onMessageByType:Oue,getWorkerIndex:Pue}=it(),{isMainThread:u1}=require("worker_threads"),{Encoder:Lue,decode:_O}=require("msgpackr"),d1=new Lue,{isEmpty:Ql}=CT,f1=(jn(),P(Ri));u1&&Oue(nt.ITC_EVENT_TYPES.RESTART,()=>{An=void 0,Jl=void 0});var{connect:Due,StorageType:vue,RetentionPolicy:Mue,AckPolicy:gO,DeliverPolicy:SO,DiscardPolicy:Uue,JSONCodec:xue,createInbox:TO,headers:Bue,ErrorCode:a1}=require("nats"),{recordAction:Fue}=(Hn(),P(Ig)),{encodeBlobsAsBuffers:kue}=(ls(),P(mg)),m1=xue(),Hue="clustering",Gue=Iue.engines[an.NATS_SERVER_NAME],que=Ah.join(wue,"dependencies"),EO=Ah.join(que,`${process.platform}-${process.arch}`,an.NATS_BINARY_NAME),pO,hO,bh,jl,zl;b1.exports={runCommand:p1,checkNATSServerInstalled:$ue,createConnection:yO,getConnection:Ih,getJetStreamManager:wh,getJetStream:E1,getNATSReferences:fo,getServerList:Kue,createLocalStream:RO,listStreams:_1,deleteLocalStream:Yue,getServerConfig:Zd,listRemoteStreams:Wue,viewStream:jue,viewStreamIterator:zue,publishToStream:Jue,request:Zue,reloadNATS:bO,reloadNATSHub:ede,reloadNATSLeaf:tde,extractServerName:Xue,requestErrorHandler:rde,createLocalTableStream:y1,createTableStreams:ide,purgeTableStream:R1,purgeSchemaTableStreams:ode,getStreamInfo:ade,updateLocalStreams:lde,closeConnection:Vue,getJsmServerName:PT,addNatsMsgHeader:g1,clearClientCache:h1,updateRemoteConsumer:nde,createConsumer:S1,updateConsumerIterator:sde};async function p1(e,t=void 0){let{stdout:r,stderr:n}=await bue(e,{cwd:t});if(n)throw new Error(n.replace(`
|
|
14
14
|
`,""));return r.replace(`
|