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()}});u0={type:"application/json",serializeStream:Hm,serialize:Gm,deserialize:I9,q:.5};_n.set("*/*",u0);_n.set("",u0);a(I9,"tryJSONParse");a($m,"registerContentHandlers");w9=(0,c0.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");s0=sg.default.get(U.HTTP_COMPRESSIONTHRESHOLD);a(Vm,"serialize");a(zo,"serializeMessage");a(JA,"asyncSerialization");a(XA,"hasAsyncSerialization");a(N9,"streamToBuffer");C9=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(O9,"isBufferEncoding");a(P9,"parseContentType");a(Qo,"getDeserializer");a(L9,"deserializerUnknownType");a(D9,"transformIterable");a(ng,"toCsvStream")});var mg={};Re(mg,{Blob:()=>xs,blobsWereEncoded:()=>fl,cleanupOrphans:()=>Y9,databasePaths:()=>eI,decodeBlobsWithWrites:()=>fg,decodeFromDatabase:()=>Zo,decodeWithBlobCallback:()=>jm,deleteBlob:()=>lg,deleteBlobsInObject:()=>nc,deleteRootBlobPathsForDB:()=>nI,encodeBlobsAsBuffers:()=>$9,encodeBlobsWithFilePath:()=>dg,findBlobsInObject:()=>dl,getFileId:()=>ug,getFilePathForBlob:()=>y0,getRootBlobPathsForDB:()=>Xu,isSaving:()=>B9,saveBlob:()=>Wm,setDeletionDelay:()=>x9,startPreCommitBlobsForRecord:()=>sI});function S0(){}function lg(e){let t=y0(e);t&&setTimeout(()=>{(0,Ve.unlink)(t,r=>{r&&Mt.default.debug?.("Error trying to remove blob file",r)})},T0)}function x9(e){T0=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,k9(r),r.source?ZA(e,r.source,r):r.contentBuffer?F9(e,r):ZA(e,rc.Readable.from(e.stream()),r),r}function ZA(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(M9),p=(0,cg.createDeflate)(),(0,rc.pipeline)(t,p,f,E)):(m||f.write(v9),(0,rc.pipeline)(t,f,E));function h(_){let R=BigInt(_),S=new Uint8Array(Pr),y=new DataView(S.buffer);return R|=BigInt(o?rI:g0)<<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-Pr;e.size=S,(0,Ve.write)(R,h(S),0,Pr,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 B9(e){return $r.get(e)?.saving}function y0(e){let t=$r.get(e);return t?.fileId&&Ju(t)}function Xu(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=eI.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)],eI.set(e,t)}return t}async function nI(e){let t=Xu(e);t&&await Promise.all(t.map(r=>R0(r)))}async function R0(e){if((0,Ve.existsSync)(e)){for(let t of await(0,kn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await R0((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 Ju({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 F9(e,t){let r=t.contentBuffer,n=r.length;if(!(n<_0))return e.size=n,ZA(e,rc.Readable.from([r]),t)}function k9(e){let t=Xu(e.store),r=H9(),n=t?.length>1?G9(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Ju(e),o=(0,zi.dirname)(i);(0,Ve.existsSync)(o)||(0,tI.ensureDirSync)(o),e.filePath=i}function H9(){let e=h0.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)),h0.set(Fn,e)}return Number(Atomics.add(e,0,1n))}function G9(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,q9(e)),e.frequencyTable[t%ag]}async function q9(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,tI.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 $9(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=[],Xo=r,Fn=t,e()}catch(s){throw Xo=void 0,Zr=void 0,s}Xo=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 Xo=t,e()}finally{Xo=void 0}}function Zo(e,t){return Fn=t,e()}function nc(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 sI(e,t){let r=[];for(let n in e){let s=e[n];s instanceof Qu&&s.saveBeforeCommit&&r.push(s)}if(r.length>0)return()=>(Fn=t,Promise.all(r.map(n=>Wm(n,!0).saving??Promise.resolve())))}function K9(){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 Y9(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,E0.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 Qu){let m=$r.get(f);if(m.fileId!=null){let p=Ju(m);i.has(p)&&i.delete(p)}}})}a(u,"checkObjectForReferences")}var ji,kn,Ve,cg,rc,tI,Ym,zi,Mt,E0,zu,_0,Pr,g0,rI,f0,v9,M9,m0,$r,Xo,xs,ju,Zr,Fn,fl,Km,og,U9,p0,Qu,T0,eI,h0,ag,V9,cs=ie(()=>{ji=require("msgpackr"),kn=require("node:fs/promises"),Ve=require("node:fs"),cg=require("node:zlib"),rc=require("node:stream"),tI=require("fs-extra"),Ym=b(fe());$();zi=require("path"),Mt=b(hr());Jo();Yi();E0=require("node:v8"),zu=require("node:timers/promises"),_0=8192,Pr=8,g0=0,rI=1,f0=255,v9=new Uint8Array([0,g0,255,255,255,255,255,255]),M9=new Uint8Array([0,rI,255,255,255,255,255,255]),m0=0xffffffffffff,$r=new WeakMap,xs=global.Blob||K9(),fl=!1,Km=new Uint8Array(8),og=new DataView(Km.buffer),U9=6e4;a(S0,"InstanceOfBlobWithNoConstructor");S0.prototype=xs.prototype;p0=!1,Qu=class e extends S0{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):(XA()&&JA(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=Ju(t),o,c=a(async()=>{let l,u=Pr;try{if(l=await(0,kn.readFile)(i),l.length>=Pr){l.copy(Km,0,0,Pr);let f=og.getBigUint64(0);if(Number(f>>48n)===f0)throw new Error("Error in blob: "+l.subarray(Pr));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<m0&&(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]===rI?new Promise((f,m)=>{(0,cg.deflate)(l.subarray(Pr),(p,h)=>{p?m(p):f(d(h))})}):d(l.subarray(Pr))},"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=Ju(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<Pr){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,Pr);let J=og.getBigUint64(0);if(Number(J>>48n)===f0)return w(new Error("Error in blob: "+X.subarray(Pr,Z)));if(_=Number(J&0xffffffffffffn),_<m0&&p.size!==_&&(p.size=_,p.#t))for(let F of p.#t)F(_);X=X.subarray(Pr,Z),l-=Pr}else if(Z===0){let J=Buffer.allocUnsafe(8);return(0,Ve.read)(o,J,0,Pr,0,F=>{if(F)return w(F);if(Km.set(J),_=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,J,0,J.length,c)>0?(u.close(),u=null,S(y,I)):d=setTimeout(()=>{w(new Error(`File read timed out reading from ${i}`))},U9).unref()):m?w(new Error("Blob is incomplete")):(m=!0,S(y,I));return}(0,Ve.close)(o),E.close(),y()})}else X=X.subarray(0,Z);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=Z,S(y,I);s&&l>=s&&(l>s&&(X=X.subarray(0,s-c)),l=_=s),n&&n>c&&(X=X.subarray(n-c))}c+=Z;try{E.enqueue(X)}catch(J){return Mt.default.debug?.("Error enqueuing chunk",J),y()}l===_&&((0,Ve.close)(o),E.close()),y()})},"readMore"))},"pull"),cancel(){(0,Ve.close)(o),clearTimeout(d),u&&u.close()}});function h(){if(f===void 0){let E=t.store,_=t.fileId+":blob";f=!E.attemptLock(_,0,()=>{f=!1}),f||E.unlock(_,0)}return f}}slice(t,r,n){let s=$r.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};$r.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};$r.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return p0||(p0=!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()}},T0=500;a(lg,"deleteBlob");a(x9,"setDeletionDelay");global.createBlob=function(e,t){let r=new Qu(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 rc.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=rc.Readable.from(e);else throw new Error("Invalid source type");return r};a(Wm,"saveBlob");a(ZA,"writeBlobWithStream");a(ug,"getFileId");a(B9,"isSaving");a(y0,"getFilePathForBlob");eI=new Map;a(Xu,"getRootBlobPathsForDB");a(nI,"deleteRootBlobPathsForDB");a(R0,"rimrafSteadily");a(Ju,"getFilePath");a(F9,"writeBlobWithBuffer");a(k9,"generateFilePath");h0=new Map;a(H9,"getNextFileId");ag=128;a(G9,"getNextStorageIndex");a(q9,"createFrequencyTableForStoragePaths");a(dg,"encodeBlobsWithFilePath");a($9,"encodeBlobsAsBuffers");a(fg,"decodeBlobsWithWrites");a(jm,"decodeWithBlobCallback");a(Zo,"decodeFromDatabase");a(nc,"deleteBlobsInObject");a(dl,"findBlobsInObject");a(sI,"startPreCommitBlobsForRecord");V9=new ji.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,ji.addExtension)({Class:xs,type:11,unpack:a(function(e){let t=V9.unpack(e),r=new Qu;if(Object.assign(r,t[0]),typeof t[1]!="object"){if($r.set(r,{storageIndex:t[1],fileId:t[2],store:Fn}),Xo)return Xo(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<_0)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(Xo)return Xo(e),(0,ji.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Ve.readFileSync)(Ju(t));if(n.length>=Pr&&(n.copy(Km,0,0,Pr),Number(og.getBigUint64(0)&0xffffffffffffn)===n.length-Pr))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(K9,"polyfillBlob");a(Y9,"cleanupOrphans")});var U0={};Re(U0,{ACTION_32_BIT:()=>gg,ACTION_64_BIT:()=>Q9,AUDIT_STORE_OPTIONS:()=>Jm,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:()=>z9,transactionKeyEncoder:()=>L0});function Eg(e){let t=e.auditStore=e.openDB(iI.AUDIT_STORE_NAME,{create:!1,...Jm});t||(t=e.auditStore=e.openDB(iI.AUDIT_STORE_NAME,Jm),A0(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=aI;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()-oI/(1+i*i)})){try{m=_g(t,h,E)}catch(_){Zu.warn("Error removing audit entry",_)}if(p=h,await new Promise(setImmediate),++f>=W9){o=10;break}}await m}finally{f===0?o=Math.min(o<<1,oI/10):(A0(t,p),o>100&&(o=o>>1)),d(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Qm.getWorkerIndex)()===(0,Qm.getWorkerCount)()-1&&c(),(0,Qm.getWorkerIndex)()===0&&!b0)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(b0=!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=J9(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)&&Zo(()=>nc(s.getValue(i)),i.rootStore)}}if((n&15)===cI){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 A0(e,t){lI[0]=t,e.put(Symbol.for("last-removed"),D0)}function j9(e){let t=e.get(Symbol.for("last-removed"));if(t)return D0.set(t),lI[0]}function z9(e,t=aI){oI=e,aI=t}function _l(e,t,r,n,s,i,o,c,l,u,d,f,m){let p=v0[o];if(!p)throw new Error(`Invalid audit entry type ${o}`);let h=1;if(n&&(n>1?sc.setFloat64(0,n):Bs.set(uI),h=9),l){if(l&255)throw new Error("Illegal extended type");h+=3}R(s),R(t),_(r),sc.setFloat64(h,e),h+=8,l&hl&&R(u),l&El&&R(d),l&ep&&(sc.setFloat64(h,f),h+=8),l&Zm&&R(M0[m]),i?_(i):Bs[h++]=0,l?sc.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),sc.setUint16(y,I|32768),h++):Bs[y]=I}function R(S){S<128?Bs[h++]=S:S<16384?(sc.setUint16(h,S|32768),h+=2):S<1056964608?(sc.setUint32(h,S|3221225472),h+=4):(Bs[h]=255,sc.setUint32(h+1,S),h+=5)}}function J9(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=M0[y]}l=n.readInt();let _=n.position,R=n.position+=l,S;return{type:v0[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=Zo(()=>y.decoder.decode(e.subarray(n.position,r)),y.rootStore)),S;if(i&zm&&w)return GA(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,iI,Qm,P0,Zu,Bs,sc,L0,Jm,oI,W9,lI,D0,aI,b0,pg,zm,I0,cI,w0,N0,C0,O0,gg,Q9,Sg,hl,El,Zm,ep,en,v0,M0,pl,Yi=ie(()=>{ml=require("ordered-binary"),hg=b(fe()),iI=b(Cr());$();Qm=b(it()),P0=b(ue());gl();Zu=b(ee());rg();cs();Tg();(0,hg.initSync)();Bs=Buffer.alloc(2816),sc=new DataView(Bs.buffer,Bs.byteOffset,2816),L0={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)}},Jm={encoding:"binary",keyEncoder:L0},oI=(0,P0.convertToMS)((0,hg.get)(U.LOGGING_AUDITRETENTION))||86400*3,W9=1e3,lI=new Float64Array(1),D0=new Uint8Array(lI.buffer),aI=1e4,b0=!1;a(Eg,"openAuditStore");a(_g,"removeAuditEntry");a(A0,"updateLastRemoved");a(j9,"getLastRemoved");a(z9,"setAuditRetention");pg=16,zm=32,I0=1,cI=2,w0=3,N0=4,C0=5,O0=6,gg=14,Q9=15,Sg=11,hl=512,El=1024,Zm=2048,ep=4096,en=8192,v0={put:I0|pg,[I0]:"put",delete:cI,[cI]:"delete",message:w0|pg,[w0]:"message",invalidate:N0|zm,[N0]:"invalidate",patch:C0|zm,[C0]:"patch",relocate:O0,[O0]:"relocate"},M0={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(_l,"createAuditEntry");a(J9,"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 dI||(dI=je({table:"hdb_analytics_hostname",database:"system",attributes:[{name:"id",isPrimaryKey:!0},{name:"hostname"}]})),dI}function Z9(e){return e=e.replace(X9,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 e7(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=x0.default.createHash("shake128",{outputLength:4}),r;return(0,B0.isIPv6)(e)?r=Z9(e):r=e.toLowerCase(),e7(Uint8Array.from(t.update(r).digest()))}var x0,B0,fI,dI,X9,mI=ie(()=>{Oe();x0=b(require("crypto")),B0=require("node:net"),fI=new Map;a(yg,"getAnalyticsHostnameTable");X9=/(\d{1,3}\.){3}\d{1,3}$/;a(Z9,"normalizeIPv6");a(e7,"nodeHashToNumber");a(rp,"stableNodeId")});var ea,pI=ie(()=>{ea={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 $0={};Re($0,{captureProfile:()=>EI,userCodeFolders:()=>Rg});async function EI(e){let r=q0/1e6,n=new Map,s=new Map,i=new Map,o=0,c=0;try{let u=hI.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){G0.error?.("analytics profiler error:",u)}finally{e&&setTimeout(()=>{let u=((0,np.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;EI(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(k0.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,k0,H0,hI,G0,F0,Rg,q0,V0=ie(()=>{Hn();np=b(fe());$();k0=b(Dt()),H0=require("node:fs"),hI=require("@datadog/pprof"),G0=b(ee()),F0=(0,np.getHdbBasePath)(),Rg=F0?[F0]:[];process.env.RUN_HDB_APP&&Rg.push((0,H0.realpathSync)(process.env.RUN_HDB_APP));q0=5e4;(async()=>{if(Rg.length===0)return;hI.time.start({intervalMicros:q0});let e=((0,np.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;setTimeout(()=>{EI(e)},e).unref()})();a(EI,"captureProfile")});var Ig={};Re(Ig,{addAnalyticsListener:()=>ap,analyticsDelay:()=>TI,calculateCPUUtilization:()=>lB,diffResourceUsage:()=>uB,onAnalyticsAggregate:()=>bI,recordAction:()=>qe,recordActionBinary:()=>rn,recordHostname:()=>yI,setAnalyticsEnabled:()=>n7});function n7(e){nB=e,clearTimeout(ip),ip=null}function s7(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 i7(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(!nB)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=Ag.get(i);o?s7(e,o):i7(i,e,t,r,n,s),ip||o7()}function rn(e,t,r,n,s){qe(!!e,t,r,n,s)}function ap(e){iB.push(e)}function o7(){_I||=performance.now(),ip=setTimeout(async()=>{ip=null;let e=performance.now()-_I;_I=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 aB){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 dB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:Sl.threadId,byThread:!0,...n});for(let s of iB)s(t);Ag=new Map,Sl.parentPort?Sl.parentPort.postMessage({type:sB,report:r}):pB({report:r})},TI).unref()}async function yI(){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 cB(e){let t=fI.get(e);return t?(tn.trace?.("storeMetric cached nodeId:",t),t):(t=rp(e),tn.trace?.("storeMetric new nodeId:",t),fI.set(e,t),t)}function ed(e,t){let r=cB(Ue.hostname),n={id:[(0,SI.getNextMonotonicTime)(),r],...t};tn.trace?.(`storing metric ${JSON.stringify(n)}`),e.put(n.id,n)}function lB(e,t){let r=e.userCPUTime+e.systemCPUTime;return tn.trace?.(`calculateCPUUtilization cpuTime: ${r} period: ${t}`),Math.round(r/t*100)/100}function uB(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 a7(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let o=`${t}.${s}`,c=i.getSize(),l={metric:ea.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 K0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=rB.statSync(s.primaryStore.env.path).size,c=a7(e,r,n),l=o-c,u={metric:ea.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 Y0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let o={metric:ea.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 c7(e,t=6e4){let r=RI(),n=fB(),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=cB(Ue.hostname);for(let I of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(!(!I.value?.time||I.value?.id[1]!==o)){i=I.value.time;break}if(Date.now()-t<i)return;let c,l=new Map,u=new Map,d=[],f;for(let{key:I,value:w}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!w)continue;if(c){if(I>c+t)break}else c=I;f=I;let{metrics:L,threadId:H}=w;for(let Z of L||[]){let{path:X,method:J,type:F,metric:de,count:oe,total:ae,distribution:he,threads:Te,...De}=Z;oe||(oe=1);let Je=de+(X?"-"+X:"");J!==void 0&&(Je+="-"+J),F!==void 0&&(Je+="-"+F);let $e=l.get(Je);if($e){if($e.threads){let Pt=$e.threads[H];if(Pt)$e=Pt;else{$e.threads[H]={...De};continue}}$e.count||($e.count=1);let ns=$e.count;for(let Pt in De){let Lt=De[Pt];typeof Lt=="number"&&($e[Pt]=($e[Pt]*ns+Lt*oe)/(ns+oe))}$e.count+=oe,ae>=0&&($e.total+=ae,$e.ratio=$e.total/$e.count)}else $e={period:t,...Z},delete $e.distribution,l.set(Je,$e),$e.byThread&&($e.threads=[],$e.threads[H]={...De},d.push($e));if(he){he=he.map(Pt=>typeof Pt=="number"?{value:Pt,count:1}:Pt);let ns=u.get(Je);ns?ns.push(...he):u.set(Je,he)}}await dB()}for(let I of d){let{path:w,method:L,type:H,metric:Z,count:X,total:J,distribution:F,threads:de,...oe}=I;de=de.filter(ae=>ae);for(let ae in oe){if(typeof I[ae]!="number")continue;let he=0;for(let Te of de){let De=Te[ae];typeof De=="number"&&(he+=De)}I[ae]=he}I.count=de.length,delete I.threads,delete I.byThread}for(let[I,w]of u){let L=l.get(I);w.sort((Pt,Lt)=>Pt.value>Lt.value?1:-1);let H=L.count-1,Z=[],X=0,J=0,F;for(let Pt of aB){let Lt=H*Pt;for(;X<Lt;)F=w[J++],X+=F.count,J===1&&X--;let Wa=w[J>1?J-2:0];F||(F=w[0]),Z.push(F.value-(F.value-Wa.value)*(X-Lt)/F.count)}let[de,oe,ae,he,Te,De,Je,$e,ns]=Z;Object.assign(L,{p1:de,p10:oe,p25:ae,median:he,p75:Te,p90:De,p95:Je,p99:$e,p999:ns})}let m;for(let[,I]of l)I.time=f,ed(n,I),m=!0;if(m)for(let I of oB)I(l.values());let p=Date.now(),{idle:h,active:E}=performance.eventLoopUtilization();if(m||E*10>h){let I={metric:ea.MAIN_THREAD_UTILIZATION,idle:h-W0,active:E-j0,taskQueueLatency:await s,time:p,...process.memoryUsage()};ed(n,I)}W0=h,j0=E;let _=process.resourceUsage();_.time=p,_.userCPUTime=_.userCPUTime/1e3,_.systemCPUTime=_.systemCPUTime/1e3,tn.trace?.(`process.resourceUsage: ${JSON.stringify(_)}`);let R=uB(bg,_);tn.trace?.(`diffed resourceUsage: ${JSON.stringify(R)}`),R.time=p,R.period=bg.time?p-bg.time:t,R.cpuUtilization=lB(R,R.period);let S={metric:ea.RESOURCE_USAGE,...R};ed(n,S),bg=_;let y=dt();K0(n,y),K0(n,{system:y.system}),Y0(n,y),Y0(n,{system:y.system})}async function z0(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function RI(){return Q0||(Q0=je({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function fB(){return J0||(J0=je({table:"hdb_analytics",database:"system",audit:!0,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function d7(){mB=!0;let e=(0,op.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await c7(TI,e),await z0(RI(),l7),await z0(fB(),u7)},Math.min(e/2,2147483647)).unref()}function pB(e,t){let r=e.report;r.threadId=t?.threadId||Sl.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(X0+=n.mean*n.count);r.totalBytesProcessed=X0,t&&(r.metrics.push({metric:ea.UTILIZATION,...t.performance.eventLoopUtilization(Z0.get(t))}),Z0.set(t,t.performance.eventLoopUtilization())),r.id=(0,SI.getNextMonotonicTime)(),RI().primaryStore.put(r.id,r),mB||d7(),f7&&(hB=p7(r))}async function p7(e){if(await hB,!ic){let r=(0,sp.dirname)(t7());try{ic=await(0,gI.open)((0,sp.join)(r,"analytics.log"),"r+")}catch{ic=await(0,gI.open)((0,sp.join)(r,"analytics.log"),"w+")}}let t=(await ic.stat()).size;if(t>m7){let r=Buffer.alloc(t);await ic.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await ic.write(r,{position:0}),await ic.truncate(r.length),t=r.length}await ic.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()}});u0={type:"application/json",serializeStream:Hm,serialize:Gm,deserialize:I9,q:.5};_n.set("*/*",u0);_n.set("",u0);a(I9,"tryJSONParse");a($m,"registerContentHandlers");w9=(0,c0.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");s0=sg.default.get(U.HTTP_COMPRESSIONTHRESHOLD);a(Vm,"serialize");a(zo,"serializeMessage");a(JA,"asyncSerialization");a(XA,"hasAsyncSerialization");a(N9,"streamToBuffer");C9=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(O9,"isBufferEncoding");a(P9,"parseContentType");a(Qo,"getDeserializer");a(L9,"deserializerUnknownType");a(D9,"transformIterable");a(ng,"toCsvStream")});var mg={};Re(mg,{Blob:()=>xs,blobsWereEncoded:()=>fl,cleanupOrphans:()=>Y9,databasePaths:()=>eI,decodeBlobsWithWrites:()=>fg,decodeFromDatabase:()=>Zo,decodeWithBlobCallback:()=>jm,deleteBlob:()=>lg,deleteBlobsInObject:()=>nc,deleteRootBlobPathsForDB:()=>nI,encodeBlobsAsBuffers:()=>$9,encodeBlobsWithFilePath:()=>dg,findBlobsInObject:()=>dl,getFileId:()=>ug,getFilePathForBlob:()=>y0,getRootBlobPathsForDB:()=>Xu,isSaving:()=>B9,saveBlob:()=>Wm,setDeletionDelay:()=>x9,startPreCommitBlobsForRecord:()=>sI});function S0(){}function lg(e){let t=y0(e);t&&setTimeout(()=>{(0,Ve.unlink)(t,r=>{r&&Mt.default.debug?.("Error trying to remove blob file",r)})},T0)}function x9(e){T0=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,k9(r),r.source?ZA(e,r.source,r):r.contentBuffer?F9(e,r):ZA(e,rc.Readable.from(e.stream()),r),r}function ZA(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(M9),p=(0,cg.createDeflate)(),(0,rc.pipeline)(t,p,f,E)):(m||f.write(v9),(0,rc.pipeline)(t,f,E));function h(_){let R=BigInt(_),S=new Uint8Array(Pr),y=new DataView(S.buffer);return R|=BigInt(o?rI:g0)<<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-Pr;e.size=S,(0,Ve.write)(R,h(S),0,Pr,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 B9(e){return $r.get(e)?.saving}function y0(e){let t=$r.get(e);return t?.fileId&&Ju(t)}function Xu(e){if(!e)throw new Error("No store specified, can not determine blob storage path");let t=eI.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)],eI.set(e,t)}return t}async function nI(e){let t=Xu(e);t&&await Promise.all(t.map(r=>R0(r)))}async function R0(e){if((0,Ve.existsSync)(e)){for(let t of await(0,kn.readdir)(e,{withFileTypes:!0}))if(t.isDirectory())await R0((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 Ju({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 F9(e,t){let r=t.contentBuffer,n=r.length;if(!(n<_0))return e.size=n,ZA(e,rc.Readable.from([r]),t)}function k9(e){let t=Xu(e.store),r=H9(),n=t?.length>1?G9(t,r):0,s=r.toString(16);e.storageIndex=n,e.fileId=s;let i=Ju(e),o=(0,zi.dirname)(i);(0,Ve.existsSync)(o)||(0,tI.ensureDirSync)(o),e.filePath=i}function H9(){let e=h0.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)),h0.set(Fn,e)}return Number(Atomics.add(e,0,1n))}function G9(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,q9(e)),e.frequencyTable[t%ag]}async function q9(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,tI.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 $9(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=[],Xo=r,Fn=t,e()}catch(s){throw Xo=void 0,Zr=void 0,s}Xo=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 Xo=t,e()}finally{Xo=void 0}}function Zo(e,t){return Fn=t,e()}function nc(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 sI(e,t){let r=[];for(let n in e){let s=e[n];s instanceof Qu&&s.saveBeforeCommit&&r.push(s)}if(r.length>0)return()=>(Fn=t,Promise.all(r.map(n=>Wm(n,!0).saving??Promise.resolve())))}function K9(){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 Y9(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,E0.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 Qu){let m=$r.get(f);if(m.fileId!=null){let p=Ju(m);i.has(p)&&i.delete(p)}}})}a(u,"checkObjectForReferences")}var ji,kn,Ve,cg,rc,tI,Ym,zi,Mt,E0,zu,_0,Pr,g0,rI,f0,v9,M9,m0,$r,Xo,xs,ju,Zr,Fn,fl,Km,og,U9,p0,Qu,T0,eI,h0,ag,V9,cs=ie(()=>{ji=require("msgpackr"),kn=require("node:fs/promises"),Ve=require("node:fs"),cg=require("node:zlib"),rc=require("node:stream"),tI=require("fs-extra"),Ym=b(fe());$();zi=require("path"),Mt=b(hr());Jo();Yi();E0=require("node:v8"),zu=require("node:timers/promises"),_0=8192,Pr=8,g0=0,rI=1,f0=255,v9=new Uint8Array([0,g0,255,255,255,255,255,255]),M9=new Uint8Array([0,rI,255,255,255,255,255,255]),m0=0xffffffffffff,$r=new WeakMap,xs=global.Blob||K9(),fl=!1,Km=new Uint8Array(8),og=new DataView(Km.buffer),U9=6e4;a(S0,"InstanceOfBlobWithNoConstructor");S0.prototype=xs.prototype;p0=!1,Qu=class e extends S0{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):(XA()&&JA(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=Ju(t),o,c=a(async()=>{let l,u=Pr;try{if(l=await(0,kn.readFile)(i),l.length>=Pr){l.copy(Km,0,0,Pr);let f=og.getBigUint64(0);if(Number(f>>48n)===f0)throw new Error("Error in blob: "+l.subarray(Pr));if(u=Number(f&0xffffffffffffn),u<n&&(u=n),u<m0&&(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]===rI?new Promise((f,m)=>{(0,cg.deflate)(l.subarray(Pr),(p,h)=>{p?m(p):f(d(h))})}):d(l.subarray(Pr))},"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=Ju(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<Pr){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,Pr);let J=og.getBigUint64(0);if(Number(J>>48n)===f0)return w(new Error("Error in blob: "+X.subarray(Pr,Z)));if(_=Number(J&0xffffffffffffn),_<m0&&p.size!==_&&(p.size=_,p.#t))for(let F of p.#t)F(_);X=X.subarray(Pr,Z),l-=Pr}else if(Z===0){let J=Buffer.allocUnsafe(8);return(0,Ve.read)(o,J,0,Pr,0,F=>{if(F)return w(F);if(Km.set(J),_=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,J,0,J.length,c)>0?(u.close(),u=null,S(y,I)):d=setTimeout(()=>{w(new Error(`File read timed out reading from ${i}`))},U9).unref()):m?w(new Error("Blob is incomplete")):(m=!0,S(y,I));return}(0,Ve.close)(o),E.close(),y()})}else X=X.subarray(0,Z);if(n!==void 0||s!==void 0){if(n&&l<n)return c+=Z,S(y,I);s&&l>=s&&(l>s&&(X=X.subarray(0,s-c)),l=_=s),n&&n>c&&(X=X.subarray(n-c))}c+=Z;try{E.enqueue(X)}catch(J){return Mt.default.debug?.("Error enqueuing chunk",J),y()}l===_&&((0,Ve.close)(o),E.close()),y()})},"readMore"))},"pull"),cancel(){(0,Ve.close)(o),clearTimeout(d),u&&u.close()}});function h(){if(f===void 0){let E=t.store,_=t.fileId+":blob";f=!E.attemptLock(_,0,()=>{f=!1}),f||E.unlock(_,0)}return f}}slice(t,r,n){let s=$r.get(this),i=new e(n&&{type:n});if(s?.fileId){let o={...s,start:t,end:r};$r.set(i,o),this.size!=null&&(i.size=(r==null?this.size:Math.min(r,this.size))-(t??0))}else if(s?.contentBuffer&&!s.storageBuffer){let o={...s,contentBuffer:s.contentBuffer.subarray(t,r)};$r.set(i,o),i.size=(r??this.size)-t}else throw new Error("Can not slice a streaming blob that is not backed by a file");return i}save(){return p0||(p0=!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()}},T0=500;a(lg,"deleteBlob");a(x9,"setDeletionDelay");global.createBlob=function(e,t){let r=new Qu(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 rc.Readable)n.source=e;else if(typeof e=="string")n.contentBuffer=Buffer.from(e);else if(e?.[Symbol.asyncIterator]||e?.[Symbol.iterator])n.source=rc.Readable.from(e);else throw new Error("Invalid source type");return r};a(Wm,"saveBlob");a(ZA,"writeBlobWithStream");a(ug,"getFileId");a(B9,"isSaving");a(y0,"getFilePathForBlob");eI=new Map;a(Xu,"getRootBlobPathsForDB");a(nI,"deleteRootBlobPathsForDB");a(R0,"rimrafSteadily");a(Ju,"getFilePath");a(F9,"writeBlobWithBuffer");a(k9,"generateFilePath");h0=new Map;a(H9,"getNextFileId");ag=128;a(G9,"getNextStorageIndex");a(q9,"createFrequencyTableForStoragePaths");a(dg,"encodeBlobsWithFilePath");a($9,"encodeBlobsAsBuffers");a(fg,"decodeBlobsWithWrites");a(jm,"decodeWithBlobCallback");a(Zo,"decodeFromDatabase");a(nc,"deleteBlobsInObject");a(dl,"findBlobsInObject");a(sI,"startPreCommitBlobsForRecord");V9=new ji.Packr({copyBuffers:!0,mapsAsObjects:!0});(0,ji.addExtension)({Class:xs,type:11,unpack:a(function(e){let t=V9.unpack(e),r=new Qu;if(Object.assign(r,t[0]),typeof t[1]!="object"){if($r.set(r,{storageIndex:t[1],fileId:t[2],store:Fn}),Xo)return Xo(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<_0)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(Xo)return Xo(e),(0,ji.pack)([r,t.storageIndex,t.fileId]);try{let n=(0,Ve.readFileSync)(Ju(t));if(n.length>=Pr&&(n.copy(Km,0,0,Pr),Number(og.getBigUint64(0)&0xffffffffffffn)===n.length-Pr))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(K9,"polyfillBlob");a(Y9,"cleanupOrphans")});var U0={};Re(U0,{ACTION_32_BIT:()=>gg,ACTION_64_BIT:()=>Q9,AUDIT_STORE_OPTIONS:()=>Jm,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:()=>z9,transactionKeyEncoder:()=>L0});function Eg(e){let t=e.auditStore=e.openDB(iI.AUDIT_STORE_NAME,{create:!1,...Jm});t||(t=e.auditStore=e.openDB(iI.AUDIT_STORE_NAME,Jm),A0(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=aI;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()-oI/(1+i*i)})){try{m=_g(t,h,E)}catch(_){Zu.warn("Error removing audit entry",_)}if(p=h,await new Promise(setImmediate),++f>=W9){o=10;break}}await m}finally{f===0?o=Math.min(o<<1,oI/10):(A0(t,p),o>100&&(o=o>>1)),d(void 0),c()}},o).unref()});return u}if(a(c,"scheduleAuditCleanup"),t.scheduleAuditCleanup=c,(0,Qm.getWorkerIndex)()===(0,Qm.getWorkerCount)()-1&&c(),(0,Qm.getWorkerIndex)()===0&&!b0)for(let l of t.getKeys({reverse:!0,limit:1}))l>Date.now()&&(b0=!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=J9(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)&&Zo(()=>nc(s.getValue(i)),i.rootStore)}}if((n&15)===cI){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 A0(e,t){lI[0]=t,e.put(Symbol.for("last-removed"),D0)}function j9(e){let t=e.get(Symbol.for("last-removed"));if(t)return D0.set(t),lI[0]}function z9(e,t=aI){oI=e,aI=t}function _l(e,t,r,n,s,i,o,c,l,u,d,f,m){let p=v0[o];if(!p)throw new Error(`Invalid audit entry type ${o}`);let h=1;if(n&&(n>1?sc.setFloat64(0,n):Bs.set(uI),h=9),l){if(l&255)throw new Error("Illegal extended type");h+=3}R(s),R(t),_(r),sc.setFloat64(h,e),h+=8,l&hl&&R(u),l&El&&R(d),l&ep&&(sc.setFloat64(h,f),h+=8),l&Zm&&R(M0[m]),i?_(i):Bs[h++]=0,l?sc.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),sc.setUint16(y,I|32768),h++):Bs[y]=I}function R(S){S<128?Bs[h++]=S:S<16384?(sc.setUint16(h,S|32768),h+=2):S<1056964608?(sc.setUint32(h,S|3221225472),h+=4):(Bs[h]=255,sc.setUint32(h+1,S),h+=5)}}function J9(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=M0[y]}l=n.readInt();let _=n.position,R=n.position+=l,S;return{type:v0[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=Zo(()=>y.decoder.decode(e.subarray(n.position,r)),y.rootStore)),S;if(i&zm&&w)return GA(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,iI,Qm,P0,Zu,Bs,sc,L0,Jm,oI,W9,lI,D0,aI,b0,pg,zm,I0,cI,w0,N0,C0,O0,gg,Q9,Sg,hl,El,Zm,ep,en,v0,M0,pl,Yi=ie(()=>{ml=require("ordered-binary"),hg=b(fe()),iI=b(Cr());$();Qm=b(it()),P0=b(ue());gl();Zu=b(ee());rg();cs();Tg();(0,hg.initSync)();Bs=Buffer.alloc(2816),sc=new DataView(Bs.buffer,Bs.byteOffset,2816),L0={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)}},Jm={encoding:"binary",keyEncoder:L0},oI=(0,P0.convertToMS)((0,hg.get)(U.LOGGING_AUDITRETENTION))||86400*3,W9=1e3,lI=new Float64Array(1),D0=new Uint8Array(lI.buffer),aI=1e4,b0=!1;a(Eg,"openAuditStore");a(_g,"removeAuditEntry");a(A0,"updateLastRemoved");a(j9,"getLastRemoved");a(z9,"setAuditRetention");pg=16,zm=32,I0=1,cI=2,w0=3,N0=4,C0=5,O0=6,gg=14,Q9=15,Sg=11,hl=512,El=1024,Zm=2048,ep=4096,en=8192,v0={put:I0|pg,[I0]:"put",delete:cI,[cI]:"delete",message:w0|pg,[w0]:"message",invalidate:N0|zm,[N0]:"invalidate",patch:C0|zm,[C0]:"patch",relocate:O0,[O0]:"relocate"},M0={insert:1,update:2,upsert:3,1:"insert",2:"update",3:"upsert"};a(_l,"createAuditEntry");a(J9,"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 dI||(dI=je({table:"hdb_analytics_hostname",database:"system",attributes:[{name:"id",isPrimaryKey:!0},{name:"hostname"}]})),dI}function Z9(e){return e=e.replace(X9,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 e7(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=x0.default.createHash("shake128",{outputLength:4}),r;return(0,B0.isIPv6)(e)?r=Z9(e):r=e.toLowerCase(),e7(Uint8Array.from(t.update(r).digest()))}var x0,B0,fI,dI,X9,mI=ie(()=>{Oe();x0=b(require("crypto")),B0=require("node:net"),fI=new Map;a(yg,"getAnalyticsHostnameTable");X9=/(\d{1,3}\.){3}\d{1,3}$/;a(Z9,"normalizeIPv6");a(e7,"nodeHashToNumber");a(rp,"stableNodeId")});var ea,pI=ie(()=>{ea={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 $0={};Re($0,{captureProfile:()=>EI,userCodeFolders:()=>Rg});async function EI(e){let r=q0/1e6,n=new Map,s=new Map,i=new Map,o=0,c=0;try{let u=hI.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){G0.error?.("analytics profiler error:",u)}finally{e&&setTimeout(()=>{let u=((0,np.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;EI(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(k0.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,k0,H0,hI,G0,F0,Rg,q0,V0=ie(()=>{Hn();np=b(fe());$();k0=b(Dt()),H0=require("node:fs"),hI=require("@datadog/pprof"),G0=b(ee()),F0=(0,np.getHdbBasePath)(),Rg=F0?[F0]:[];process.env.RUN_HDB_APP&&Rg.push((0,H0.realpathSync)(process.env.RUN_HDB_APP));q0=5e4;(async()=>{if(Rg.length===0)return;hI.time.start({intervalMicros:q0});let e=((0,np.get)(U.ANALYTICS_AGGREGATEPERIOD)||60)*1e3;setTimeout(()=>{EI(e)},e).unref()})();a(EI,"captureProfile")});var Ig={};Re(Ig,{addAnalyticsListener:()=>ap,analyticsDelay:()=>TI,calculateCPUUtilization:()=>lB,diffResourceUsage:()=>uB,onAnalyticsAggregate:()=>bI,recordAction:()=>qe,recordActionBinary:()=>rn,recordHostname:()=>yI,setAnalyticsEnabled:()=>n7});function n7(e){nB=e,clearTimeout(ip),ip=null}function s7(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 i7(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(!nB)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=Ag.get(i);o?s7(e,o):i7(i,e,t,r,n,s),ip||o7()}function rn(e,t,r,n,s){qe(!!e,t,r,n,s)}function ap(e){iB.push(e)}function o7(){_I||=performance.now(),ip=setTimeout(async()=>{ip=null;let e=performance.now()-_I;_I=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 aB){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 dB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:Sl.threadId,byThread:!0,...n});for(let s of iB)s(t);Ag=new Map,Sl.parentPort?Sl.parentPort.postMessage({type:sB,report:r}):pB({report:r})},TI).unref()}async function yI(){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 cB(e){let t=fI.get(e);return t?(tn.trace?.("storeMetric cached nodeId:",t),t):(t=rp(e),tn.trace?.("storeMetric new nodeId:",t),fI.set(e,t),t)}function ed(e,t){let r=cB(Ue.hostname),n={id:[(0,SI.getNextMonotonicTime)(),r],...t};tn.trace?.(`storing metric ${JSON.stringify(n)}`),e.put(n.id,n)}function lB(e,t){let r=e.userCPUTime+e.systemCPUTime;return tn.trace?.(`calculateCPUUtilization cpuTime: ${r} period: ${t}`),Math.round(r/t*100)/100}function uB(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 a7(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let o=`${t}.${s}`,c=i.getSize(),l={metric:ea.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 K0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=rB.statSync(s.primaryStore.env.path).size,c=a7(e,r,n),l=o-c,u={metric:ea.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 Y0(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let o={metric:ea.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 c7(e,t=6e4){let r=RI(),n=fB(),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=cB(Ue.hostname);for(let I of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(!(!I.value?.time||I.value?.id[1]!==o)){i=I.value.time;break}if(Date.now()-t<i)return;let c,l=new Map,u=new Map,d=[],f;for(let{key:I,value:w}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!w)continue;if(c){if(I>c+t)break}else c=I;f=I;let{metrics:L,threadId:H}=w;for(let Z of L||[]){let{path:X,method:J,type:F,metric:de,count:oe,total:ae,distribution:he,threads:Te,...De}=Z;oe||(oe=1);let Je=de+(X?"-"+X:"");J!==void 0&&(Je+="-"+J),F!==void 0&&(Je+="-"+F);let $e=l.get(Je);if($e){if($e.threads){let Pt=$e.threads[H];if(Pt)$e=Pt;else{$e.threads[H]={...De};continue}}$e.count||($e.count=1);let ns=$e.count;for(let Pt in De){let Lt=De[Pt];typeof Lt=="number"&&($e[Pt]=($e[Pt]*ns+Lt*oe)/(ns+oe))}$e.count+=oe,ae>=0&&($e.total+=ae,$e.ratio=$e.total/$e.count)}else $e={period:t,...Z},delete $e.distribution,l.set(Je,$e),$e.byThread&&($e.threads=[],$e.threads[H]={...De},d.push($e));if(he){he=he.map(Pt=>typeof Pt=="number"?{value:Pt,count:1}:Pt);let ns=u.get(Je);ns?ns.push(...he):u.set(Je,he)}}await dB()}for(let I of d){let{path:w,method:L,type:H,metric:Z,count:X,total:J,distribution:F,threads:de,...oe}=I;de=de.filter(ae=>ae);for(let ae in oe){if(typeof I[ae]!="number")continue;let he=0;for(let Te of de){let De=Te[ae];typeof De=="number"&&(he+=De)}I[ae]=he}I.count=de.length,delete I.threads,delete I.byThread}for(let[I,w]of u){let L=l.get(I);w.sort((Pt,Lt)=>Pt.value>Lt.value?1:-1);let H=L.count-1,Z=[],X=0,J=0,F;for(let Pt of aB){let Lt=H*Pt;for(;X<Lt;)F=w[J++],X+=F.count,J===1&&X--;let Wa=w[J>1?J-2:0];F||(F=w[0]),Z.push(F.value-(F.value-Wa.value)*(X-Lt)/F.count)}let[de,oe,ae,he,Te,De,Je,$e,ns]=Z;Object.assign(L,{p1:de,p10:oe,p25:ae,median:he,p75:Te,p90:De,p95:Je,p99:$e,p999:ns})}let m;for(let[,I]of l)I.time=f,ed(n,I),m=!0;if(m)for(let I of oB)I(l.values());let p=Date.now(),{idle:h,active:E}=performance.eventLoopUtilization();if(m||E*10>h){let I={metric:ea.MAIN_THREAD_UTILIZATION,idle:h-W0,active:E-j0,taskQueueLatency:await s,time:p,...process.memoryUsage()};ed(n,I)}W0=h,j0=E;let _=process.resourceUsage();_.time=p,_.userCPUTime=_.userCPUTime/1e3,_.systemCPUTime=_.systemCPUTime/1e3,tn.trace?.(`process.resourceUsage: ${JSON.stringify(_)}`);let R=uB(bg,_);tn.trace?.(`diffed resourceUsage: ${JSON.stringify(R)}`),R.time=p,R.period=bg.time?p-bg.time:t,R.cpuUtilization=lB(R,R.period);let S={metric:ea.RESOURCE_USAGE,...R};ed(n,S),bg=_;let y=dt();K0(n,y),K0(n,{system:y.system}),Y0(n,y),Y0(n,{system:y.system})}async function z0(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function RI(){return Q0||(Q0=je({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function fB(){return J0||(J0=je({table:"hdb_analytics",database:"system",audit:!0,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function d7(){mB=!0;let e=(0,op.get)(U.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await c7(TI,e),await z0(RI(),l7),await z0(fB(),u7)},Math.min(e/2,2147483647)).unref()}function pB(e,t){let r=e.report;r.threadId=t?.threadId||Sl.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(X0+=n.mean*n.count);r.totalBytesProcessed=X0,t&&(r.metrics.push({metric:ea.UTILIZATION,...t.performance.eventLoopUtilization(Z0.get(t))}),Z0.set(t,t.performance.eventLoopUtilization())),r.id=(0,SI.getNextMonotonicTime)(),RI().primaryStore.put(r.id,r),mB||d7(),f7&&(hB=p7(r))}async function p7(e){if(await hB,!ic){let r=(0,sp.dirname)(t7());try{ic=await(0,gI.open)((0,sp.join)(r,"analytics.log"),"r+")}catch{ic=await(0,gI.open)((0,sp.join)(r,"analytics.log"),"w+")}}let t=(await ic.stat()).size;if(t>m7){let r=Buffer.alloc(t);await ic.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await ic.write(r,{position:0}),await ic.truncate(r.length),t=r.length}await ic.write(JSON.stringify(e)+`
|
|
12
12
|
`,t)}function bI(e){e&&oB.push(e)}var Sl,eB,tB,sp,gI,SI,op,rB,t7,r7,tn,Ag,nB,ip,_I,TI,sB,iB,oB,aB,W0,j0,bg,dB,l7,u7,Q0,J0,mB,X0,Z0,f7,hB,ic,m7,Hn=ie(()=>{Sl=require("worker_threads"),eB=b(it());Oe();tB=b(ee()),sp=require("path"),gI=require("fs/promises"),SI=b(Us()),op=b(fe());$();qr();rB=b(require("node:fs"));mI();pI();({getLogFilePath:t7,forComponent:r7}=tB.default);setTimeout(()=>{Promise.resolve().then(()=>V0())},1e3);tn=r7("analytics").conditional;(0,op.initSync)();Ag=new Map,nB=(0,op.get)(U.ANALYTICS_AGGREGATEPERIOD)>-1;a(n7,"setAnalyticsEnabled");a(s7,"recordExistingAction");a(i7,"recordNewAction");a(qe,"recordAction");Ue.recordAnalytics=qe;a(rn,"recordActionBinary");_I=0,TI=1e3,sB="analytics-report",iB=[],oB=[];a(ap,"addAnalyticsListener");aB=[.01,.1,.25,.5,.75,.9,.95,.99,.999,1];a(o7,"sendAnalytics");a(yI,"recordHostname");a(cB,"getHostNodeId");a(ed,"storeMetric");a(lB,"calculateCPUUtilization");a(uB,"diffResourceUsage");a(a7,"storeTableSizeMetrics");a(K0,"storeDBSizeMetrics");a(Y0,"storeVolumeMetrics");a(c7,"aggregation");W0=0,j0=0,bg={userCPUTime:0,systemCPUTime:0},dB=a(()=>new Promise(setImmediate),"rest");a(z0,"cleanup");l7=36e5,u7=31536e6;a(RI,"getRawAnalyticsTable");a(fB,"getAnalyticsTable");(0,eB.setChildListenerByType)(sB,pB);a(d7,"startScheduledTasks");X0=0,Z0=new Map,f7=!1;a(pB,"recordAnalytics");m7=1e6;a(p7,"logAnalytics");a(bI,"onAnalyticsAggregate")});var TB={};Re(TB,{ENTRY:()=>E7,HAS_EXPIRATION:()=>Og,HAS_RESIDENCY_ID:()=>CI,HAS_STRUCTURE_UPDATE:()=>Pg,LAST_TIMESTAMP_PLACEHOLDER:()=>Xm,LOCAL_TIMESTAMP:()=>h7,METADATA:()=>rd,NEW_TIMESTAMP_PLACEHOLDER:()=>_B,NO_TIMESTAMP:()=>Ng,PENDING_LOCAL_TIME:()=>OI,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>uI,RecordEncoder:()=>NI,TIMESTAMP_ASSIGN_LAST:()=>g7,TIMESTAMP_ASSIGN_NEW:()=>gB,TIMESTAMP_ASSIGN_PREVIOUS:()=>SB,TIMESTAMP_PLACEHOLDER:()=>wg,TIMESTAMP_RECORD_PREVIOUS:()=>AI,entryMap:()=>oc,handleLocalTimeForGets:()=>Lg,lastMetadata:()=>ct,recordUpdater:()=>PI,removeEntry:()=>Rl});function T7(){return lp[0]=lp[0]^64,_7.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)}oc.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&&(oc.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 PI(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?AI|SB:Ng:Tl=l?i?.localTime?AI|16384:gB|16384:Ng;let p=u?.expiresAt;if(p>=0&&(c|=Og),cp=c,II=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&&(wI=S,cp|=CI,_|=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))&&nc(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?_B: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&&S7.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)&&nc(t.value),e.remove(t.key,r)}var EB,Cg,wg,Xm,uI,_B,h7,rd,E7,lp,_7,Ng,gB,g7,SB,AI,Og,CI,OI,Pg,S7,oc,td,Tl,cp,II,wI,ct,NI,yl,gl=ie(()=>{EB=require("msgpackr");Yi();Cg=b(ee());cs();cs();Hn();wg=new Uint8Array([1,1,1,1,4,64,0,0]),Xm=new Uint8Array([1,1,1,1,1,0,0,0]),uI=new Uint8Array([1,1,1,1,3,64,0,0]),_B=new Uint8Array([1,1,1,1,0,64,0,0]),h7=Symbol("local-timestamp"),rd=Symbol("metadata"),E7=Symbol("entry"),lp=new Uint8Array(8),_7=new DataView(lp.buffer,0,8),Ng=0,gB=0,g7=1,SB=3,AI=4,Og=16,CI=32,OI=1,Pg=256,S7=new Set(["put","patch","delete","message","publish"]),oc=new WeakMap,Tl=0,cp=-1,II=-1,wI=0,ct=null,NI=class extends EB.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0;class r{static{a(this,"RecordObject")}getUpdatedTime(){return oc.get(this)?.version}getExpiresAt(){return oc.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=II,f=wI;u>=0&&(c+=4,cp=-1,d>=0&&(c+=8,II=-1),f&&(c+=4,wI=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=T7(),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&CI&&(d=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let f=Zo(()=>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:Zo(()=>super.decode(t,r),this.rootStore)}catch(c){return Cg.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(T7,"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(PI,"recordUpdater");a(Rl,"removeEntry")});function vI(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?vI(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=O7(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=Ji(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=!!Ji(L.attributes,w.relationship.to)?.elements;Z=I7(Z,w,L.primaryStore,X,H)}if(w.relationship.from){let X=a(J=>(J?.key!==void 0&&(J=J.key),od({attribute:w.relationship.from,value:J},t,r,n,s,H)),"searchEntry");w.elements?(i[c[0]]=H,Z=w7(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(MI[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]=Qi.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:ac.SKIP:new Promise((H,Z)=>setImmediate(()=>{try{H(L&&R(L)?w:ac.SKIP)}catch(X){Z(X)}}))}:function(w){let L;return w.value==null&&!(w.metadataFlags&(Gn|bl))?L=ac.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:ac.SKIP:new Promise((H,Z)=>setImmediate(()=>{try{H(R(L)?w:ac.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:ac.SKIP):new Promise((H,Z)=>setImmediate(()=>{try{y(I),H(L&&R(L)?w:ac.SKIP)}catch(X){Z(X)}}))});function y(I){(n.databaseName!=="system"||n.name==="hdb_analytics")&&I?.value&&qe(I.size??1,"db-read",n.name,null)}a(y,"recordRead")}function Ji(e,t){if(Array.isArray(t))if(t.length>1){let r=Ji(e,t[0]),n=(r?.definition?.tableClass||r?.elements?.definition?.tableClass)?.attributes??r?.properties;return n?Ji(n,t.slice(1)):void 0}else t=t.toString();else typeof t!="string"&&(t=t.toString());return e.find(r=>r.name===t)}function I7(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 w7(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=Ji(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(J=>J[m.primaryKey]):X}}),w.some(h)):h(w,L):!1},"recordFilter");return S}}switch(l instanceof Date&&(l=l.getTime()),MI[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,Qi.compareKeys)(d,l[0])>=0&&(0,Qi.compareKeys)(d,l[1])<=0,!0);case"gt":return u(c,d=>(0,Qi.compareKeys)(d,l)>0);case"ge":return u(c,d=>(0,Qi.compareKeys)(d,l)>=0);case"lt":return u(c,d=>(0,Qi.compareKeys)(d,l)<0);case"le":return u(c,d=>(0,Qi.compareKeys)(d,l)<=0);case"ne":return u(c,d=>(0,Qi.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/ta(e.primaryStore):i.estimated_count}return r.estimated_count=s,r.estimated_count}let n=r.comparator||r.search_type;if(n=MI[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=Ji(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*ta(e.indices[i.relationship.from])/(ta(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=ta(e.primaryStore)-(i?i.getValuesCount(null):0):r.estimated_count=1/0}else if(n==="starts_with"||n==="prefix")r.estimated_count=b7*ta(e.primaryStore)+1;else if(n==="between")r.estimated_count=R7*ta(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=ta(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=y7*ta(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(ra=e,nd.lastIndex=0,N7.test(e))try{if(t&&(t.conditions=[]),pi=t??new id,up(pi,""),Vr!==ra.length&&rr("Unable to parse query, unexpected end of query"),pi.parseErrorMessage&&(pi.parseError=new LI(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 '${ra}'`,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(ra);){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=yB):(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=A7[f],l=DI[i]?yB: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"&&RB(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=bB(p);break;default:rr(`unknown query function call ${d}`)}ra[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),ra[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),ra[Vr]==="="){l=decodeURIComponent,i="equals",s=sd(d),r.lastIndex=++Vr;break}else e.conditions.push(m),s=null;else e.push(m);ra[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"&&RB(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?C7:nd,r.lastIndex=Vr),Vr===ra.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 yB(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 RB(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 bB(e){let t=AB(e[0]);return e.length>1&&(t.next=bB(e.slice(1))),t}function AB(e){if(Array.isArray(e)){let t=AB(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 ta(e){let t=Date.now();return(e.estimatedEntryCountExpires||0)<t&&(e.estimatedEntryCount=e.getStats().entryCount,e.estimatedEntryCountExpires=t+1e4),e.estimatedEntryCount}function O7(e,t,r){return t*r/ta(e)}var nn,Fs,Qi,ac,y7,R7,b7,A7,DI,MI,LI,N7,nd,C7,Vr,pi,ra,id,Ug=ie(()=>{nn=b(ge()),Fs=b(Cr()),Qi=require("ordered-binary"),ac=require("lmdb");xg();gl();Hn();y7=.3,R7=.1,b7=.05,A7={"<":"lt","<=":"le",">":"gt",">=":"ge","!=":"ne","==":"eq","===":"equals","!==":"not_equal"},DI={lt:!0,le:!0,gt:!0,ge:!0,ne:!0,eq:!0};a(vI,"executeConditions");a(od,"searchByIndex");a(Ji,"findAttribute");a(I7,"joinTo");a(w7,"joinFrom");MI={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");LI=class extends nn.Violation{static{a(this,"SyntaxViolation")}},N7=/[()[\]|!<>.]|(=\w*=)/,nd=/([^?&|=<>!([{}\]),]*)([([{}\])|,&]|[=<>!]*)/g,C7=/([^&|=[\]{}]+)([[\]{}]|[&|=]*)/g;a(Mg,"parseQuery");a(rr,"recordError");a(up,"parseBlock");a(Dg,"assignOperator");a(sd,"decodeProperty");a(yB,"typedDecoding");a(RB,"wildcardDecoding");a(bB,"toSortObject");a(AB,"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(ta,"estimatedEntryCount");a(O7,"intersectionEstimate")});var IB,ks,Bg=ie(()=>{IB=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,IB._assignPackageExport)("Resource",Vt)});function wB(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 xI;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 Yo?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"&&PB.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 ls(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 UI(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):UI(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(UI(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(UI(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 NB,CB,cd,OB,PB,fp,P7,Vt,Al,xI,Xi=ie(()=>{NB=require("crypto");Fm();Wu();CB=b(fi()),cd=b(ge());tc();Ug();OB=require("async_hooks");Bg();PB=b(hr()),fp=new OB.AsyncLocalStorage,P7={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):ls(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):ls(t,"patch")},{hasContent:!0,type:"update",method:"patch"});static delete=qn(function(t,r,n,s){return t.delete?t.delete(r):ls(t,"delete")},{hasContent:!1,type:"delete",method:"delete"});static getNewId(){return(0,NB.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):ls(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):ls(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):ls(t,"connect")},{hasContent:!0,type:"read",method:"connect"});static subscribe=qn(function(t,r,n,s){return t.subscribe?t.subscribe(r):ls(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):ls(t,"publish")},{hasContent:!0,type:"create",method:"publish"});static search=qn(function(t,r,n){let s=t.search?t.search(r):ls(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):ls(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):ls(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):ls(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;ls(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&&P7[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:wB(t,this),isCollection:Al}}let i=wB(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 as}connect(t,r){let n=this.constructor.loadAsInstance===!1?t:r;return n?.subscribe!==!1?this.subscribe?.(n):new as}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,CB._assignPackageExport)("Resource",Vt);a(wB,"pathToId");xI=class extends Array{static{a(this,"MultiPartId")}toString(){return this.join("/")}};a(qn,"transactional");a(ls,"missingMethod");a(UI,"selectFromObject");a(mp,"transformForSelect")});var Il,BI=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 FI={};Re(FI,{Resources:()=>ld,keyArrayToString:()=>ud,resetResources:()=>L7,resources:()=>Hs});function L7(){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 LB,DB,ld,Hs,cc=ie(()=>{tc();BI();LB=b(ee()),DB=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 DB.ServerError(`Conflicting paths for ${t}`);LB.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(L7,"resetResources");a(ud,"keyArrayToString")});function GI(e,t,r,n,s){let i=e.primaryStore.env.path,o=e.primaryStore.tableId,c;s?.crossThreads===!1?(c=MB,D7(e.primaryStore,e.auditStore)):(c=vB,e.primaryStore.env.hasSubscriptionCommitListener||(e.primaryStore.env.hasSubscriptionCommitListener=!0,e.primaryStore.on("committed",()=>{UB(vB[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 HI(r);d.startTime=n;let f=u.get(t);return f?f.push(d):(u.set(t,f=[d]),f.tables=u,f.key=t),d.subscriptions=f,d}function UB(e){if(!e)return;let t=e.auditStore;t.resetReadTxn(),xB(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,kI.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,kI.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 D7(e,t){let r=t||e,n=r.env;if(!n.hasAfterCommitListener){n.hasAfterCommitListener=!0;let s=n.path;r.on("aftercommit",()=>{let i=MB[s];if(!i)return;let o=a(()=>{r.threadLocalWrites||(r.threadLocalWrites=new Float64Array(r.getUserSharedBuffer("last-thread-local-write",new ArrayBuffer(8)))),i.txnTime=r.threadLocalWrites[0]||Date.now();try{UB(i)}finally{r.threadLocalWrites[0]=i.lastTxnTime,r.unlock("thread-local-writes",0)}},"acquiredLock");r.attemptLock("thread-local-writes",0,o)&&o()})}}function xB(e){e.nextTransaction?.resolve();let t;e.nextTransaction=new Promise(r=>{t=r}),e.nextTransaction.resolve=t}function BB(e){return e.nextTransaction||(GI({primaryStore:e,auditStore:e},null,null,0,{scope:"full-database"}),xB(e)),e.nextTransaction}var kI,vB,MB,HI,qI=ie(()=>{kI=b(ee());Wu();cc();Yi();vB=Object.create(null),MB=Object.create(null);a(GI,"addSubscription");HI=class extends as{static{a(this,"Subscription")}listener;subscriptions;startTime;includeDescendants;supportsTransactions;onlyChildren;constructor(t){super(),this.listener=t,this.on("close",()=>this.end())}end(){if(this.subscriptions){if(this.subscriptions.splice(this.subscriptions.indexOf(this),1),this.subscriptions.length===0){let t=this.subscriptions.tables;if(t){let r=this.subscriptions.key;if(t.delete(r),t.size===0){let n=t.envs,s=t.dbi;delete n[s]}}}this.subscriptions=null}}toJSON(){return{name:"subscription"}}};a(UB,"notifyFromTransactionData");a(D7,"listenToCommits");a(xB,"nextTransaction");a(BB,"whenNextTransaction")});var kB=x((zPe,FB)=>{"use strict";var $I=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};FB.exports=$I});var GB=x((JPe,HB)=>{"use strict";var VI=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};HB.exports=VI});var pp=x($B=>{"use strict";var qB=fe(),v7=($(),P(z)),{RecordEncoder:M7}=(gl(),P(TB));qB.initSync();var U7=qB.get(v7.CONFIG_PARAMS.STORAGE_CACHING)!==!1,KI=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=U7&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:M7})}};$B.OpenDBIObject=KI});var hp=x((tLe,VB)=>{"use strict";var us=fe(),Gs=($(),P(z));us.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=us.get(Gs.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||us.get(Gs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||us.get(Gs.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",us.get(Gs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=us.get(Gs.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),us.get(Gs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=us.get(Gs.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),us.get(Gs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=us.get(Gs.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),us.get(Gs.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=us.get(Gs.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=us.get(Gs.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};VB.exports=Fg;Fg.MAX_DBS=1e4});var Kt=x((nLe,eF)=>{"use strict";var WI=require("lmdb"),hi=require("fs-extra"),ds=require("path"),kg=Us(),WB=ee(),$n=En().LMDB_ERRORS_ENUM,Hg=GB(),{OpenDBIObject:jI}=pp(),jB=hp(),lc=Cr(),KB=($(),P(z)),{table:x7,resetDatabases:B7}=(Oe(),P(Et)),YB=fe(),Ei=lc.INTERNAL_DBIS_NAME,zB=lc.DBI_DEFINITION_NAME,F7="data.mdb",k7="lock.mdb",Ep=".mdb",H7="-lock",YI=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=qs(t,r),this.key_type=this.dbi[lc.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[lc.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new WI.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=ds.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(ds.join(e,t,F7),hi.constants.R_OK|hi.constants.F_OK),ds.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 G7(e,t,r=!1,n=!1){Gg(e,t);let s=ds.basename(e);t=t.toString();let i=YB.get(KB.CONFIG_PARAMS.DATABASES);i||YB.setProperty(KB.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await zI(e,t,n),QB(e,t,r)}catch(o){if(o.message===$n.INVALID_ENVIRONMENT){let c=ds.join(e,t);await hi.mkdirp(n?c:e);let l=new jB(n?c:c+Ep,!1),u=WI.open(l);u.dbis=Object.create(null);let d=new jI(!1);u.openDB(Ei,d),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let f=QI(e,t,r);return u[lc.ENVIRONMENT_NAME_KEY]=f,global.lmdb_map[f]=u,u}throw o}}a(G7,"createEnvironment");async function q7(e,t,r,n=!0){Gg(e,t),t=t.toString();let s=ds.join(e,t);return x7({table:t,database:ds.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(q7,"copyEnvironment");async function QB(e,t,r=!1){Gg(e,t),t=t.toString();let n=QI(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=ds.join(e,t+Ep),o=s!=i,c=new jB(s,o),l=WI.open(c);l.dbis=Object.create(null);let u=XB(l);for(let d=0;d<u.length;d++)qs(l,u[d]);return l[lc.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(QB,"openEnvironment");async function $7(e,t,r=!1){Gg(e,t),t=t.toString();let n=ds.join(e,t+Ep),s=await zI(e,t);if(global.lmdb_map!==void 0){let i=QI(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await JB(o),delete global.lmdb_map[i]}}await hi.remove(s),await hi.remove(s===n?s+H7:ds.join(ds.dirname(s),k7))}a($7,"deleteEnvironment");async function JB(e){kg.validateEnv(e);let t=e[lc.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(JB,"closeEnvironment");function QI(e,t,r=!1){let s=`${ds.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(QI,"getCachedEnvironmentName");function V7(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{WB.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(V7,"listDBIDefinitions");function XB(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(XB,"listDBIs");function K7(e,t){let n=qs(e,Ei).getEntry(t),s=new Hg;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{WB.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(K7,"getDBIDefinition");function ZB(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 jI(r,n===!0),o=e.openDB(t,i),c=new Hg(r===!0,n);return o[zB]=c,qs(e,Ei).putSync(t,c),e.dbis[t]=o,o}throw s}}a(ZB,"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=K7(e,t):r=new Hg,r===void 0)throw new Error($n.DBI_DOES_NOT_EXIST);let n;try{let s=new jI(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[zB]=r,e.dbis[t]=n,n}a(qs,"openDBI");function Y7(e,t){qg(e,t),t=t.toString();let r=qs(e,t),n=r.getStats();return r[lc.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(Y7,"statDBI");async function W7(e,t){try{let r=ds.join(e,t+Ep);return(await hi.stat(r)).size}catch{throw new Error($n.INVALID_ENVIRONMENT)}}a(W7,"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 z7(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)ZB(e,i,i!==t,i===t),n=!0;else throw o}}n&&B7()}a(z7,"initializeDBIs");eF.exports={openDBI:qs,openEnvironment:QB,createEnvironment:G7,listDBIs:XB,listDBIDefinitions:V7,createDBI:ZB,dropDBI:j7,statDBI:Y7,deleteEnvironment:$7,initializeDBIs:z7,TransactionCursor:YI,environmentDataSize:W7,copyEnvironment:q7,closeEnvironment:JB}});var nF=x((iLe,rF)=>{"use strict";var JI=Kt(),Q7=ee(),tF=En().LMDB_ERRORS_ENUM;rF.exports=J7;async function J7(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 JI.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==tF.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await JI.closeEnvironment(global.lmdb_map[n]),await JI.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==tF.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){Q7.error(t)}}a(J7,"cleanLMDBMap")});var na=x((aLe,oF)=>{"use strict";var iF=ue(),sF=($(),P(z)),dd=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Zi=require("joi"),uc={schema_format:{pattern:dd,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},X7=Zi.alternatives(Zi.string().min(1).max(uc.schema_length.maximum).pattern(dd).messages({"string.pattern.base":"{:#label} "+uc.schema_format.message}),Zi.number(),Zi.array()).required(),Z7=Zi.alternatives(Zi.string().min(1).max(uc.schema_length.maximum).pattern(dd).messages({"string.pattern.base":"{:#label} "+uc.schema_format.message}),Zi.number()),eee=Zi.alternatives(Zi.string().min(1).max(uc.schema_length.maximum).pattern(dd).messages({"string.pattern.base":"{:#label} "+uc.schema_format.message}),Zi.number()).required();function tee(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>uc.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(tee,"checkValidTable");function ree(e,t){return iF.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(ree,"validateSchemaExists");function nee(e,t){let r=t.state.ancestors[0].schema;return iF.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(nee,"validateTableExists");function see(e,t){return e.toLowerCase()===sF.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${sF.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(see,"validateSchemaName");oF.exports={commonValidators:uc,schemaRegex:dd,hdbSchemaTable:X7,validateSchemaExists:ree,validateTableExists:nee,validateSchemaName:see,checkValidTable:tee,hdbDatabase:Z7,hdbTable:eee}});var lF=x((lLe,cF)=>{var{hdbTable:iee,hdbDatabase:aF}=na(),oee=ht(),XI=require("joi"),aee={undefined:"undefined",null:"null"},cee=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||aee[o]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${o}'`:s+=`. Invalid attribute name: '${o}'`)}return s?t.message(s):e},"customRecordsVal"),lee=XI.object({database:aF,schema:aF,table:iee,records:XI.array().items(XI.object().custom(cee)).required()});cF.exports=function(e){return oee.validateBySchema(e,lee)}});var dF=x((dLe,uF)=>{"use strict";var ZI=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")}};uF.exports=ZI});var mF=x((mLe,fF)=>{"use strict";var ew=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};fF.exports=ew});var hF=x((hLe,pF)=>{"use strict";var tw=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}};pF.exports=tw});var _F=x((_Le,EF)=>{"use strict";var rw=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};EF.exports=rw});var Nl=x((TLe,TF)=>{"use strict";var uee=Kt(),dee=mF(),fee=hF(),mee=_F(),eo=Us(),_p=En().LMDB_ERRORS_ENUM,sa=($(),P(z)),pee=ue(),hee=require("uuid"),SLe=require("lmdb"),{handleHDBError:Eee,hdbErrors:_ee}=ge(),gF=fe();gF.initSync();var $g=gF.get(sa.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),nw=sa.TIME_STAMP_NAMES_ENUM.CREATED_TIME,wl=sa.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function gee(e,t,r,n,s=eo.getNextMonotonicTime()){aw(e,t,r,n),sw(e,t,r);let i=new dee,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];SF(u,!0,s);let d=See(e,t,r,u),f=u[t];o.push(d),c.push(f)}return iw(o,c,n,i,s)}a(gee,"insertRecords");function See(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][sa.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(See,"insertRecord");function Tee(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(Tee,"removeSkippedRecords");function SF(e,t,r){let n=r>0;(n||!Number.isInteger(e[wl]))&&(e[wl]=r||(r=eo.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[nw]))&&(e[nw]=r||eo.getNextMonotonicTime()):delete e[nw]}a(SF,"setTimestamps");function sw(e,t,r){r.indexOf(sa.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(sa.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(sa.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(sa.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),uee.initializeDBIs(e,t,r)}a(sw,"initializeTransaction");async function yee(e,t,r,n,s=eo.getNextMonotonicTime()){aw(e,t,r,n),sw(e,t,r);let i=new fee,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let d=n[u],f=d[t],m;try{m=ow(e,t,d,f,i,!0,s)}catch{i.skipped_hashes.push(f),o.push(u);continue}c.push(m),l.push(f)}return iw(c,l,n,i,s,o)}a(yee,"updateRecords");async function Ree(e,t,r,n,s=eo.getNextMonotonicTime()){try{aw(e,t,r,n)}catch(l){throw Eee(l,l.message,_ee.HTTP_STATUS_CODES.BAD_REQUEST)}sw(e,t,r);let i=new mee,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],d;pee.isEmpty(u[t])?(d=hee.v4(),u[t]=d):d=u[t];let f=ow(e,t,u,d,i,!1,s);o.push(f),c.push(d)}return iw(o,c,n,i,s)}a(Ree,"upsertRecords");async function iw(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(),Tee(r,i),n}a(iw,"finalizeWrite");function ow(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(SF(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][sa.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:ow(e,t,r,n,s,i,o))}a(ow,"updateUpsertRecord");function bee(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(bee,"validateBasic");function aw(e,t,r,n){if(bee(e,t,r),!Array.isArray(n))throw n===void 0?new Error(_p.RECORDS_REQUIRED):new Error(_p.RECORDS_MUST_BE_ARRAY)}a(aw,"validateWrite");function Vg(){}a(Vg,"noop");TF.exports={insertRecords:gee,updateRecords:yee,upsertRecords:Ree}});var RF=x((RLe,yF)=>{"use strict";var Aee=require("uuid"),cw=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||Aee.v4(),this.schema_table=`${this.schema}.${this.table}`}};yF.exports=cw});var Kg=x((ALe,bF)=>{"use strict";var Iee=RF(),lw=class extends Iee{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}};bF.exports=lw});var IF=x((wLe,AF)=>{"use strict";AF.exports=Nee;var wee="inserted";function Nee(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===wee?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(Nee,"returnObject")});var Yg=x((CLe,NF)=>{"use strict";var Cee=($(),P(z)),uw=Kt(),Oee=Nl(),{getSystemSchemaPath:Pee,getSchemaPath:Lee}=tr(),{validateBySchema:Dee}=ht(),gp=require("joi"),vee=Kg(),Mee=IF(),{handleHDBError:Uee,hdbErrors:xee,ClientError:Bee}=ge(),wF=ue(),{HTTP_STATUS_CODES:Fee}=xee,kee="inserted";NF.exports=Hee;async function Hee(e){let t=Dee(e,gp.object({database:gp.string(),schema:gp.string(),table:gp.string().required(),attribute:gp.string().required()}));if(t)throw new Bee(t.message);let r=!e.skip_table_check&&wF.checkGlobalSchemaTable(e.schema,e.table);if(r)throw Uee(new Error,r,Fee.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=wF.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 vee(e.schema,e.table,e.attribute,e.id);try{let i=await uw.openEnvironment(Lee(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}`);uw.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await uw.openEnvironment(Pee(),Cee.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await Oee.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdbAttributeAttributes,[s]);return Mee(kee,c,{records:[s]},l)}catch(i){throw i}}a(Hee,"lmdbCreateAttribute")});var Sp=x((PLe,OF)=>{"use strict";var ia=ue(),CF=ee(),{getDatabases:Gee}=(Oe(),P(Et)),{ClientError:Cl}=ge();OF.exports=qee;function qee(e){if(ia.isEmpty(e))throw new Cl("invalid update parameters defined.");if(ia.isEmptyOrZeroLength(e.schema))throw new Cl("invalid schema specified.");if(ia.isEmptyOrZeroLength(e.table))throw new Cl("invalid table specified.");if(!Array.isArray(e.records))throw new Cl("records must be an array");let t=Gee()[e.schema]?.[e.table];if(ia.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&&ia.isEmptyOrZeroLength(o[r]))throw CF.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(!ia.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw CF.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`);!ia.isEmpty(o[r])&&o[r]!==""&&n.has(ia.autoCast(o[r]))&&(o.skip=!0),n.add(ia.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(qee,"insertUpdateValidate")});var Wg=x((DLe,LF)=>{"use strict";var PF=ue(),$ee=($(),P(z)),Vee=ee(),Kee=Yg(),Yee=Kg(),Wee=oa(),{SchemaEventMsg:jee}=fs(),zee="already exists in";LF.exports=Qee;async function Qee(e,t,r){if(PF.isEmptyOrZeroLength(r))return r;let n=[];PF.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 Jee(e,t.schema,t.name,i)})),s}a(Qee,"lmdbCheckForNewAttributes");async function Jee(e,t,r,n){let s=new Yee(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await Xee(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(zee))Vee.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a(Jee,"createNewAttribute");async function Xee(e){let t;return t=await Kee(e),Wee.signalSchemaChange(new jee(process.pid,$ee.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(Xee,"createAttribute")});var fd=x((MLe,DF)=>{"use strict";var dw=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}};DF.exports=dw});var MF=x((xLe,vF)=>{"use strict";var Zee=fd(),ete=($(),P(z)).OPERATIONS_ENUM,fw=class extends Zee{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(ete.INSERT,r,n,s,i),this.records=t}};vF.exports=fw});var xF=x((FLe,UF)=>{"use strict";var tte=fd(),rte=($(),P(z)).OPERATIONS_ENUM,mw=class extends tte{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(rte.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};UF.exports=mw});var FF=x((HLe,BF)=>{"use strict";var nte=fd(),ste=($(),P(z)).OPERATIONS_ENUM,pw=class extends nte{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(ste.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};BF.exports=pw});var HF=x((qLe,kF)=>{"use strict";var ite=fd(),ote=($(),P(z)).OPERATIONS_ENUM,hw=class extends ite{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(ote.DELETE,n,s,t,i),this.original_records=r}};kF.exports=hw});var Tp=x((VLe,VF)=>{"use strict";var GF=Kt(),ate=MF(),cte=xF(),lte=FF(),ute=HF(),md=Cr(),qF=ue(),{CONFIG_PARAMS:dte}=($(),P(z)),$F=fe();$F.initSync();var jg=($(),P(z)).OPERATIONS_ENUM,{getTransactionAuditStorePath:fte}=tr();VF.exports=mte;async function mte(e,t){if($F.get(dte.LOGGING_AUDITLOG)===!1)return;let r=fte(e.schema,e.table),n=await GF.openEnvironment(r,e.table,!0),s=pte(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){GF.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),qF.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(mte,"writeTransaction");function pte(e,t){let r=qF.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===jg.INSERT)return new ate(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===jg.UPDATE)return new cte(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===jg.UPSERT)return new lte(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===jg.DELETE)return new ute(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(pte,"createTransactionObject")});var Ew=x((WLe,KF)=>{"use strict";var hte=Sp(),YLe=Um(),yp=($(),P(z)),Ete=xm(),_te=Nl().insertRecords,gte=Kt(),Ste=ee(),Tte=Wg(),{getSchemaPath:yte}=tr(),Rte=Tp();KF.exports=bte;async function bte(e){try{let{schemaTable:t,attributes:r}=hte(e);Ete(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 Tte(e.hdb_auth_header,t,r),s=yte(e.schema,e.table),i=await gte.openEnvironment(s,e.table),o=await _te(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await Rte(e,o)}catch(c){Ste.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(bte,"lmdbCreateRecords")});var jF=x((zLe,WF)=>{"use strict";var YF=($(),P(z)),Ate=Ew(),Ite=Um(),wte=require("fs-extra"),{getSchemaPath:Nte}=tr();WF.exports=Cte;async function Cte(e){let t=[{name:e.schema,createddate:Date.now()}],r=new Ite(YF.SYSTEM_SCHEMA_NAME,YF.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await Ate(r),await wte.mkdirp(Nte(e.schema))}a(Cte,"lmdbCreateSchema")});var QF=x((JLe,zF)=>{"use strict";var _w=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}};zF.exports=_w});var ek=x((ZLe,ZF)=>{"use strict";var JF=Kt(),gw=Us(),Sw=En().LMDB_ERRORS_ENUM,XF=ee(),Ote=require("lmdb"),Pte=QF(),Lte=($(),P(z)),Dte=Lte.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function vte(e,t,r,n){if(gw.validateEnv(e),t===void 0)throw new Error(Sw.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Sw.IDS_REQUIRED):new Error(Sw.IDS_MUST_BE_ITERABLE);try{let s=JF.listDBIs(e);JF.initializeDBIs(e,t,s);let i=new Pte,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[Dte]>n){i.skipped.push(o);continue}let E=e.dbis[t].ifVersion(o,Ote.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=gw.getIndexedValues(y);if(I)for(let w=0,L=I.length;w<L;w++)S.remove(I[w],o)}catch{XF.warn(`cannot delete from attribute: ${R}, ${y}:${o}`)}}});c.push(E),l.push(o),i.original_records.push(h)}catch(h){XF.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=gw.getNextMonotonicTime(),i}catch(s){throw s}}a(vte,"deleteRecords");ZF.exports={deleteRecords:vte}});var Rp=x((tDe,rk)=>{"use strict";var pd=ue(),Mte=ek(),Ute=Kt(),{getSchemaPath:xte}=tr(),Bte=Tp(),Fte=ee();rk.exports=kte;async function kte(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 tk([],[]);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=xte(e.schema,e.table),i=await Ute.openEnvironment(s,e.table),o=await Mte.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await Bte(e,o)}catch(c){Fte.error(`unable to write transaction due to ${c.message}`)}return tk(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(kte,"lmdbDeleteRecords");function tk(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(tk,"createDeleteResponse")});var yw=x((nDe,nk)=>{"use strict";var Hte=($(),P(z));function Tw(e,t){let r=Object.create(null);if(t.length===1&&Hte.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(Tw,"parseRow");function Gte(e,t,r,n){let s=Tw(r,e);n.push(s)}a(Gte,"searchAll");function qte(e,t,r,n){let s=Tw(r,e);n[t]=s}a(qte,"searchAllToMap");function $te(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a($te,"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 Vte(e,t,r,n,s,i){t.toString().endsWith(e)&&Ol(t,r,n,s,i)}a(Vte,"endsWith");function Kte(e,t,r,n,s,i){t.toString().includes(e)&&Ol(t,r,n,s,i)}a(Kte,"contains");function Yte(e,t,r,n,s,i){t>e&&Ol(t,r,n,s,i)}a(Yte,"greaterThanCompare");function Wte(e,t,r,n,s,i){t>=e&&Ol(t,r,n,s,i)}a(Wte,"greaterThanEqualCompare");function jte(e,t,r,n,s,i){t<e&&Ol(t,r,n,s,i)}a(jte,"lessThanCompare");function zte(e,t,r,n,s,i){t<=e&&Ol(t,r,n,s,i)}a(zte,"lessThanEqualCompare");nk.exports={parseRow:Tw,searchAll:Gte,searchAllToMap:qte,iterateDBI:$te,endsWith:Vte,contains:Kte,greaterThanCompare:Yte,greaterThanEqualCompare:Wte,lessThanCompare:jte,lessThanEqualCompare:zte,pushResults:Ol}});var hd=x((oDe,uk)=>{"use strict";var dc=Kt(),ms=Us(),zg=Cr(),ar=En().LMDB_ERRORS_ENUM,Qte=($(),P(z)),Qg=yw(),{parseRow:Jte}=Qg,iDe=require("lmdb"),{OVERFLOW_MARKER:sk,MAX_SEARCH_KEY_LENGTH:Xte}=zg;function ik(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(ik,"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=dc.openDBI(s,r);i[zg.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&dc.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 ok(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(sk)){if(!s)if(r)s=dc.openDBI(e,r);else{let l=dc.listDBIs(e);for(let u=0,d=l.length;u<d&&(s=dc.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(ok,"getOverflowCheck");function Zte(e,t,r,n=!1,s=void 0,i=void 0){if(ms.validateEnv(e),t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);return Pl(e,t,t,(o,c,l)=>(Jg(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=>Jte(u.value,r))))}a(Zte,"searchAll");function ere(e,t,r,n=!1,s=void 0,i=void 0){if(ms.validateEnv(e),t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);Jg(r),r=Ap(e.database||e,r);let o=new Map;for(let{key:c,value:l}of ik(e,t,t,n,s,i))o.set(c,Qg.parseRow(l,r));return o}a(ere,"searchAllToMap");function tre(e,t,r=!1,n=void 0,s=void 0){if(ms.validateEnv(e),t===void 0)throw new Error(ar.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=ik(e,void 0,t,r,n,s),c=o.transaction,l=ok(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(tre,"iterateDBI");function rre(e,t){if(ms.validateEnv(e),t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);return dc.statDBI(e,t).entryCount}a(rre,"countAll");function nre(e,t,r,n,s=!1,i=void 0,o=void 0){return fc(e,r,n),Pl(e,t,r,(c,l,u,d)=>(n=ms.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(nre,"equals");function sre(e,t,r){return fc(e,t,r),dc.openDBI(e,t).getValuesCount(r)}a(sre,"count");function ire(e,t,r,n,s=!1,i=void 0,o=void 0){return fc(e,r,n),Pl(e,null,r,(c,l)=>{n=ms.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(ire,"startsWith");function ore(e,t,r,n,s=!1,i=void 0,o=void 0){return ak(e,t,r,n,s,i,o,!0)}a(ore,"endsWith");function ak(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return fc(e,r,n),Pl(e,null,r,(l,u,d,f)=>{let m=ok(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(sk)?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(ak,"contains");function are(e,t,r,n,s=!1,i=void 0,o=void 0){fc(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(are,"greaterThan");function cre(e,t,r,n,s=!1,i=void 0,o=void 0){fc(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(cre,"greaterThanEqual");function lre(e,t,r,n,s=!1,i=void 0,o=void 0){fc(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(lre,"lessThan");function ure(e,t,r,n,s=!1,i=void 0,o=void 0){fc(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(ure,"lessThanEqual");function dre(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(ms.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=ms.convertKeyValueToWrite(n),s=ms.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(dre,"between");function fre(e,t,r,n){ms.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);if(Jg(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=Qg.parseRow(c,r)),o}a(fre,"searchByHash");function mre(e,t,r){ms.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(mre,"checkHashExists");function pre(e,t,r,n,s=[]){return lk(e,t,r,n,s),ck(e,t,r,n,s).map(i=>i[1])}a(pre,"batchSearchByHash");function hre(e,t,r,n,s=[]){lk(e,t,r,n,s);let i=new Map;for(let[o,c]of ck(e,t,r,n,s))i.set(o,c);return i}a(hre,"batchSearchByHashToMap");function ck(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,Qg.parseRow(d,r)];s.push(u)}).filter(u=>u)})}a(ck,"batchHashSearch");function lk(e,t,r,n,s){if(ms.validateEnv(e),t===void 0)throw new Error(ar.HASH_ATTRIBUTE_REQUIRED);if(Jg(r),n==null)throw new Error(ar.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(ar.IDS_MUST_BE_ITERABLE)}a(lk,"initializeBatchSearchByHash");function Jg(e){if(!Array.isArray(e))throw e===void 0?new Error(ar.FETCH_ATTRIBUTES_REQUIRED):new Error(ar.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(Jg,"validateFetchAttributes");function fc(e,t,r){if(ms.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>Xte)throw new Error(ar.SEARCH_VALUE_TOO_LARGE)}a(fc,"validateComparisonFunctions");function Ap(e,t){return t.length===1&&Qte.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=dc.listDBIs(e)),t}a(Ap,"setGetWholeRowAttributes");uk.exports={searchAll:Zte,searchAllToMap:ere,count:sre,countAll:rre,equals:nre,startsWith:ire,endsWith:ore,contains:ak,searchByHash:fre,setGetWholeRowAttributes:Ap,batchSearchByHash:pre,batchSearchByHashToMap:hre,checkHashExists:mre,iterateDBI:tre,greaterThan:are,greaterThanEqual:cre,lessThan:lre,lessThanEqual:ure,between:dre}});var Ed=x((cDe,hk)=>{var dk=require("lodash"),fk=ht(),ze=require("joi"),Ere=ue(),{hdbSchemaTable:Ip,checkValidTable:mk,hdbTable:pk,hdbDatabase:Xg}=na(),{handleHDBError:_re,hdbErrors:gre}=ge(),{getDatabases:Sre}=(Oe(),P(Et)),{HTTP_STATUS_CODES:Tre}=gre,yre=ze.object({database:Xg,schema:Xg,table:pk,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)}),Rre=ze.object({database:Xg,schema:Xg,table:pk,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()});hk.exports=function(e,t){let r=null;switch(t){case"value":r=fk.validateBySchema(e,yre);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(mk("database",e.schema)),i(mk("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=fk.validateBySchema(e,Rre);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=Ere.checkGlobalSchemaTable(e.schema,e.table);if(s)return _re(new Error,s,Tre.NOT_FOUND);let o=Sre()[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=dk.filter(c,d=>d!=="*"&&!d.startsWith?.("$")&&d.attribute!=="*"&&!Array.isArray(d)&&!d.name&&!dk.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 Rw=x((uDe,Ek)=>{"use strict";var bre=Kt(),Are=Ed(),{getSchemaPath:Ire}=tr();Ek.exports=wre;function wre(e){let t=Are(e,"hashes");if(t)throw t;let r=Ire(e.schema,e.table);return bre.openEnvironment(r,e.table)}a(wre,"initialize")});var bw=x((fDe,_k)=>{"use strict";var Nre=hd(),Cre=Rw();_k.exports=Ore;async function Ore(e){let t=await Cre(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return Nre.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(Ore,"lmdbGetDataByHash")});var Sk=x((pDe,gk)=>{"use strict";var Pre=hd(),Lre=Rw();gk.exports=Dre;async function Dre(e){let t=await Lre(e),r=global.hdb_schema[e.schema][e.table];return Pre.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(Dre,"lmdbSearchByHash")});var Ll=x((EDe,vre)=>{vre.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((_De,Ik)=>{"use strict";var gn=hd(),Mre=Kt(),Ure=ue(),Qe=Cr(),Dl=($(),P(z)),xre=Ll(),Tk=En().LMDB_ERRORS_ENUM,{getSchemaPath:Bre}=tr(),aa=Dl.SEARCH_WILDCARDS;async function Fre(e,t,r){let n;e.schema===Dl.SYSTEM_SCHEMA_NAME?n=xre[e.table]:n=global.hdb_schema[e.schema][e.table];let s=Ak(e,n.hash_attribute,r,t);return Rk(e,s,n.hash_attribute,r)}a(Fre,"prepSearch");async function Rk(e,t,r,n){let s=Bre(e.schema,e.table),i=await Mre.openEnvironment(s,e.table),o=bk(i,e,t,r),c=o.transaction||i;if([Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,Qe.SEARCH_TYPES.SEARCH_ALL,Qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(kre(e,r)===!1){let d=e.attribute;if(d===r)return n?yk(o,()=>!0):o.map(m=>({[r]:m.key}));let f=a(m=>({[r]:m.value,[d]:m.key}),"toObject");return n?yk(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(Rk,"executeSearch");function bk(e,t,r,n){let s,i=n;t.get_attributes.indexOf(n)<0&&(i=void 0);let{reverse:o,limit:c,offset:l}=t;switch(o=typeof o=="boolean"?o:!1,c=Number.isInteger(c)?c:void 0,l=Number.isInteger(l)?l:void 0,r){case Qe.SEARCH_TYPES.EQUALS:s=gn.equals(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.CONTAINS:s=gn.contains(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.ENDS_WITH:case Qe.SEARCH_TYPES._ENDS_WITH:s=gn.endsWith(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.STARTS_WITH:case Qe.SEARCH_TYPES._STARTS_WITH:s=gn.startsWith(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return gn.batchSearchByHash(e,t.attribute,t.get_attributes,[t.value]);case Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return gn.batchSearchByHashToMap(e,t.attribute,t.get_attributes,[t.value]);case Qe.SEARCH_TYPES.SEARCH_ALL:return gn.searchAll(e,n,t.get_attributes,o,c,l);case Qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return gn.searchAllToMap(e,n,t.get_attributes,o,c,l);case Qe.SEARCH_TYPES.BETWEEN:s=gn.between(e,i,t.attribute,t.value,t.end_value,o,c,l);break;case Qe.SEARCH_TYPES.GREATER_THAN:case Qe.SEARCH_TYPES._GREATER_THAN:s=gn.greaterThan(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.GREATER_THAN_EQUAL:case Qe.SEARCH_TYPES._GREATER_THAN_EQUAL:s=gn.greaterThanEqual(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.LESS_THAN:case Qe.SEARCH_TYPES._LESS_THAN:s=gn.lessThan(e,i,t.attribute,t.value,o,c,l);break;case Qe.SEARCH_TYPES.LESS_THAN_EQUAL:case Qe.SEARCH_TYPES._LESS_THAN_EQUAL:s=gn.lessThanEqual(e,i,t.attribute,t.value,o,c,l);break;default:return Object.create(null)}return s}a(bk,"searchByType");function yk(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(yk,"createMapFromIterable");function kre(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(kre,"checkToFetchMore");function Ak(e,t,r,n){if(Ure.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),aa.indexOf(s)>-1)return r===!0?Qe.SEARCH_TYPES.SEARCH_ALL_TO_MAP:Qe.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(aa[0])<0&&s.indexOf(aa[1])<0)return c===!0?r===!0?Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:Qe.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:Qe.SEARCH_TYPES.EQUALS;if(aa.indexOf(i)>=0&&aa.indexOf(o)>=0)return e.value=e.value.slice(1,-1),Qe.SEARCH_TYPES.CONTAINS;if(aa.indexOf(i)>=0)return e.value=e.value.substr(1),Qe.SEARCH_TYPES.ENDS_WITH;if(aa.indexOf(o)>=0)return e.value=e.value.slice(0,-1),Qe.SEARCH_TYPES.STARTS_WITH;if(s.includes(aa[0])||s.includes(aa[1]))return Qe.SEARCH_TYPES.EQUALS;throw new Error(Tk.UNKNOWN_SEARCH_TYPE)}else switch(n){case Dl.VALUE_SEARCH_COMPARATORS.BETWEEN:return Qe.SEARCH_TYPES.BETWEEN;case Dl.VALUE_SEARCH_COMPARATORS.GREATER:return Qe.SEARCH_TYPES.GREATER_THAN;case Dl.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return Qe.SEARCH_TYPES.GREATER_THAN_EQUAL;case Dl.VALUE_SEARCH_COMPARATORS.LESS:return Qe.SEARCH_TYPES.LESS_THAN;case Dl.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return Qe.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(Tk.UNKNOWN_SEARCH_TYPE)}}a(Ak,"createSearchTypeFromSearchObject");Ik.exports={executeSearch:Rk,createSearchTypeFromSearchObject:Ak,prepSearch:Fre,searchByType:bk}});var Nk=x((SDe,wk)=>{"use strict";var Hre=Ed(),Gre=ue(),qre=($(),P(z)),$re=Zg();wk.exports=Vre;function Vre(e,t){if(!Gre.isEmpty(t)&&qre.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Hre(e,"value");if(n)throw n;return $re.prepSearch(e,t,!0)}a(Vre,"lmdbGetDataByValue")});var to=x((yDe,Ck)=>{"use strict";var Aw=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}};Ck.exports=Aw});var wp=x((ADe,Ok)=>{"use strict";var bDe=to(),Kre=Ed(),Yre=ue(),Wre=($(),P(z)),jre=Zg();Ok.exports=zre;async function zre(e,t){if(!Yre.isEmpty(t)&&Wre.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Kre(e,"value");if(n)throw n;return jre.prepSearch(e,t,!1)}a(zre,"lmdbSearchByValue")});var Lk=x((NDe,Pk)=>{"use strict";var wDe=Cr(),Iw=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}},ww=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.attribute=t,this.comparator=r,this.value=n}},Nw=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};Pk.exports={SearchByConditionsObject:Iw,SearchCondition:ww,SortAttribute:Nw}});var xk=x((LDe,Uk)=>{"use strict";var{SearchByConditionsObject:ODe,SearchCondition:PDe}=Lk(),Qre=to(),Jre=Ed(),Cw=hd(),eS=Cr(),Mk=Zg(),Xre=yw(),Zre=require("lodash"),{getSchemaPath:ene}=tr(),Dk=Kt(),{handleHDBError:tne,hdbErrors:rne}=ge(),{HTTP_STATUS_CODES:nne}=rne,sne=1e8;Uk.exports=ine;async function ine(e){let t=Jre(e,"conditions");if(t)throw tne(t,t.message,nne.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=ene(e.schema,e.table),n=await Dk.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)Dk.openDBI(n,u.attribute);let i=Zre.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let d=u.comparator;d===eS.SEARCH_TYPES.EQUALS?u.estimated_count=Cw.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=sne}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await vk(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(Mk.filterByType),f=d.length,m=Cw.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=>Xre.parseRow(p,m))}else{for(let f=1;f<i.length;f++){let m=i[f],p=await vk(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=Cw.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(ine,"lmdbSearchByConditions");async function vk(e,t,r,n){let s=new Qre(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,Mk.searchByType(e,s,i,n).map(o=>o.value)}a(vk,"executeConditionSearch")});var Np=x((vDe,Bk)=>{"use strict";var Ow=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};Bk.exports=Ow});var Cp=x((UDe,Fk)=>{"use strict";var one=($(),P(z)).OPERATIONS_ENUM,Pw=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=one.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};Fk.exports=Pw});var Lw=x((BDe,Yk)=>{"use strict";var qk=to(),$k=Cp(),Vk=wp(),Kk=Rp(),Vn=($(),P(z)),kk=ue(),Hk=Kt(),{getTransactionAuditStorePath:ane,getSchemaPath:cne}=tr(),Gk=ee();Yk.exports=lne;async function lne(e){try{if(kk.isEmpty(global.hdb_schema[e.schema])||kk.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await une(e),await dne(e);let t=cne(e.schema,e.table);try{await Hk.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")Gk.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=ane(e.schema,e.table);await Hk.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")Gk.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(lne,"lmdbDropTable");async function une(e){let t=new qk(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 Vk(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 $k(Vn.SYSTEM_SCHEMA_NAME,Vn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await Kk(s)}a(une,"deleteAttributesFromSystem");async function dne(e){let t=new qk(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 Vk(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 $k(Vn.SYSTEM_SCHEMA_NAME,Vn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await Kk(s)}catch(i){throw i}}a(dne,"dropTableFromSystem")});var jk=x((kDe,Wk)=>{"use strict";var fne=require("fs-extra"),mne=to(),pne=Np(),hne=Cp(),Ene=Lw(),_ne=Rp(),gne=bw(),Sne=wp(),ca=($(),P(z)),{getSchemaPath:Tne}=tr(),{handleHDBError:yne,hdbErrors:Rne}=ge(),{HDB_ERROR_MSGS:bne,HTTP_STATUS_CODES:Ane}=Rne;Wk.exports=Ine;async function Ine(e){let t;try{t=await wne(e.schema);let r=new mne(ca.SYSTEM_SCHEMA_NAME,ca.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,ca.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[ca.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await Sne(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await Ene(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new hne(ca.SYSTEM_SCHEMA_NAME,ca.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await _ne(s);let i=Tne(t);await fne.remove(i)}catch(r){throw r}}a(Ine,"lmdbDropSchema");async function wne(e){let t=new pne(ca.SYSTEM_SCHEMA_NAME,ca.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[ca.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await gne(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw yne(new Error,bne.SCHEMA_NOT_FOUND(e),Ane.NOT_FOUND,void 0,void 0,!0);return n}a(wne,"validateDropSchema")});var tS=x((GDe,zk)=>{"use strict";var Dw=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};zk.exports=Dw});var Jk=x((VDe,Qk)=>{"use strict";var Nne=require("fs-extra"),rS=Kt(),{getTransactionAuditStorePath:Cne}=tr(),vw=Cr(),$De=tS();Qk.exports=One;async function One(e){let t;try{let r=Cne(e.schema,e.table);await Nne.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,vw.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),rS.createDBI(t,vw.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),rS.createDBI(t,vw.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(One,"createTransactionsAuditEnvironment")});var eH=x((YDe,Zk)=>{"use strict";var Mw=($(),P(z)),Xk=Kt(),Pne=Nl(),{getSystemSchemaPath:Lne,getSchemaPath:Dne}=tr(),vne=Yg(),Uw=Kg(),Mne=ee(),Une=Jk();Zk.exports=xne;async function xne(e,t){let r=Dne(t.schema,t.table),n=new Uw(t.schema,t.table,Mw.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new Uw(t.schema,t.table,Mw.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new Uw(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await Xk.createEnvironment(r,t.table),e!==void 0){let o=await Xk.openEnvironment(Lne(),Mw.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await Pne.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 xw(n),await xw(s),await xw(i)}await Une(t)}catch(o){throw o}}a(xne,"lmdbCreateTable");async function xw(e){try{await vne(e)}catch(t){Mne.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(xw,"createAttribute")});var rH=x((jDe,tH)=>{"use strict";var Bne=Sp(),Fne=xm(),kne=Wg(),Op=($(),P(z)),Hne=Nl().updateRecords,Gne=Kt(),{getSchemaPath:qne}=tr(),$ne=Tp(),Vne=ee();tH.exports=Kne;async function Kne(e){try{let{schemaTable:t,attributes:r}=Bne(e);Fne(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 kne(e.hdb_auth_header,t,r),s=qne(e.schema,e.table),i=await Gne.openEnvironment(s,e.table),o=await Hne(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await $ne(e,o)}catch(c){Vne.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(Kne,"lmdbUpdateRecords")});var sH=x((QDe,nH)=>{"use strict";var Yne=($(),P(z)).OPERATIONS_ENUM,Bw=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=Yne.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};nH.exports=Bw});var oH=x((ZDe,iH)=>{"use strict";var XDe=sH(),Wne=Sp(),jne=xm(),zne=Wg(),Pp=($(),P(z)),Qne=Nl().upsertRecords,Jne=Kt(),{getSchemaPath:Xne}=tr(),Zne=Tp(),ese=ee(),{handleHDBError:tse,hdbErrors:rse}=ge();iH.exports=nse;async function nse(e){let t;try{t=Wne(e)}catch(l){throw tse(l,l.message,rse.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 zne(e.hdb_auth_header,r,n),i=Xne(e.schema,e.table),o=await Jne.openEnvironment(i,e.table),c=await Qne(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await Zne(e,c)}catch(l){ese.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(nse,"lmdbUpsertRecords")});var cH=x((tve,aH)=>{"use strict";var Fw=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};aH.exports=Fw});var uH=x((nve,lH)=>{"use strict";var kw=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}};lH.exports=kw});var mH=x((ove,fH)=>{"use strict";var Hw=Kt(),{getTransactionAuditStorePath:sse}=tr(),ive=cH(),Lp=Cr(),ise=ue(),dH=uH(),ose=require("util").promisify,ase=ose(setTimeout),cse=1e4,lse=100;fH.exports=use;async function use(e){let t=sse(e.schema,e.table),r=await Hw.openEnvironment(t,e.table,!0),n=Hw.listDBIs(r);Hw.initializeDBIs(r,Lp.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new dH;do s=await dse(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 ase(lse);while(s.transactions_deleted>0);return i}a(use,"deleteAuditLogsBefore");async function dse(e,t){let r=new dH;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];ise.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>cse)break}return await s,r}catch(n){throw n}}a(dse,"deleteTransactions")});var hH=x((cve,pH)=>{"use strict";var Gw=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};pH.exports=Gw});var _H=x((dve,EH)=>{"use strict";var fse=to(),mse=Cp(),uve=hH(),ro=($(),P(z)),pse=ue(),qw=Kt(),hse=Ll(),Ese=wp(),_se=Rp(),{getSchemaPath:gse}=tr();EH.exports=Sse;async function Sse(e,t=!0){let r;e.schema===ro.SYSTEM_SCHEMA_NAME?r=hse[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await yse(e),s=gse(e.schema,e.table),i=await qw.openEnvironment(s,e.table);return t===!0&&await Tse(e,i,r.hash_attribute),qw.dropDBI(i,e.attribute),n}a(Sse,"lmdbDropAttribute");async function Tse(e,t,r){let n=qw.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(Tse,"removeAttributeFromAllObjects");async function yse(e){let t=new fse(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 Ese(t)).filter(o=>o[ro.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(pse.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 mse(ro.SYSTEM_SCHEMA_NAME,ro.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return _se(i)}a(yse,"dropAttributeFromSystem")});var bH=x((mve,RH)=>{"use strict";var $w=Kt(),_d=Cr(),Vw=($(),P(z)),gH=ue(),{getTransactionAuditStorePath:Rse}=tr(),bse=hd(),nS=fd(),Ase=ee();RH.exports=Ise;async function Ise(e){let t=Rse(e.schema,e.table),r=await $w.openEnvironment(t,e.table,!0),n=$w.listDBIs(r);$w.initializeDBIs(r,_d.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Vw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return SH(r,e.search_values);case Vw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,Nse(r,e.search_values,s);case Vw.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return wse(r,e.search_values);default:return SH(r)}}a(Ise,"readAuditLog");function SH(e,t=[0,Date.now()]){gH.isEmpty(t[0])&&(t[0]=0),gH.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(SH,"searchTransactionsByTimestamp");function wse(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,yH(e,i))}return Object.fromEntries(r)}a(wse,"searchTransactionsByUsername");function Nse(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],d=bse.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=yH(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,d=n.get(u);TH(l,"records",r,d,o),TH(l,"original_records",r,d,o)}return Object.fromEntries(o)}a(Nse,"searchTransactionsByHashValues");function TH(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(TH,"loopRecords");function yH(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){Ase.warn(i)}return r}catch(n){throw n}}a(yH,"batchSearchTransactions")});var IH=x((hve,AH)=>{"use strict";var{database:Cse}=(Oe(),P(Et));AH.exports={writeTransaction:Ose};async function Ose(e,t,r){return Cse({database:e,table:t}).transaction(r)}a(Ose,"writeTransaction")});var OH=x((_ve,CH)=>{"use strict";var{getSchemaPath:wH}=tr(),NH=Kt();CH.exports={flush:Pse,resetReadTxn:Lse};async function Pse(e,t){return(await NH.openEnvironment(wH(e,t),t.toString())).flushed}a(Pse,"flush");async function Lse(e,t){try{(await NH.openEnvironment(wH(e,t),t.toString())).resetReadTxn()}catch{}}a(Lse,"resetReadTxn")});var vH=x((Sve,DH)=>{"use strict";var{Readable:Dse}=require("stream"),{getDatabases:vse}=(Oe(),P(Et)),{readSync:Mse,openSync:Use,createReadStream:PH}=require("fs"),{open:xse}=require("lmdb"),{OpenDBIObject:LH}=pp(),Bse=hp(),{AUDIT_STORE_OPTIONS:Fse}=(Yi(),P(U0)),{INTERNAL_DBIS_NAME:kse,AUDIT_STORE_NAME:Hse}=Cr();DH.exports=qse;var Kw=32768,Gse=100;async function qse(e){let t=e.database||e.schema||"data",r=vse()[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=xse({noSync:!0,maxDbs:Bse.MAX_DBS}),m,p=f.openDB(kse,new LH(!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++%Gse===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 LH(!w,w);await _(S,L)}e.include_audit&&await _(Hse,{...Fse}),await m;let R=PH(f.path);return R.headers=l(),R.on("close",()=>{h.done(),f.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=Use(o.path);return o.transaction(()=>{let u=Buffer.alloc(Kw);Mse(c,u,0,Kw),o.resetReadTxn();let d=o.useReadTransaction();d.renew();let f=PH(null,{fd:c,start:Kw}),m=new Dse.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(qse,"getBackup")});var xH=x((yve,UH)=>{"use strict";var $se=ee(),{handleHDBError:Vse}=ge(),Kse=dF(),Yse=Yg(),Wse=Ew(),jse=jF(),zse=Rp(),Qse=bw(),Jse=Sk(),Xse=Nk(),Zse=wp(),eie=xk(),tie=jk(),rie=eH(),nie=rH(),sie=oH(),iie=mH(),oie=Lw(),aie=_H(),cie=bH(),lie=IH(),MH=OH(),uie=vH(),Yw=class extends Kse{static{a(this,"LMDBBridge")}async searchByConditions(t){return eie(t)}async getDataByHash(t){return await Qse(t)}async searchByHash(t){return await Jse(t)}async getDataByValue(t,r){return await Xse(t,r)}async searchByValue(t){return await Zse(t)}async createSchema(t){return await jse(t)}async dropSchema(t){return await tie(t)}async createTable(t,r){return await rie(t,r)}async dropTable(t){return await oie(t)}async createAttribute(t){return await Yse(t)}async createRecords(t){return await Wse(t)}async updateRecords(t){return await nie(t)}async upsertRecords(t){try{return await sie(t)}catch(r){throw Vse(r,null,null,$se.ERR,r)}}async deleteRecords(t){return await zse(t)}async dropAttribute(t){return await aie(t)}async deleteAuditLogsBefore(t){return await iie(t)}async readAuditLog(t){return await cie(t)}writeTransaction(t,r,n){return lie.writeTransaction(t,r,n)}flush(t,r){return MH.flush(t,r)}resetReadTxn(t,r){return MH.resetReadTxn(t,r)}getBackup(t){return uie(t)}};UH.exports=Yw});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 ps.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 ps.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 ps.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 ps.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 ps.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 ps.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 ps.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 ps.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 ps.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 ps.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 ps.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=Ww(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 ps.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?kH:FH);break}c=l}while(c&&c!==FH&&c!==kH)}function HH(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(BH[t])return BH[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=Ww(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}function die(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 Ww(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=Ww(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=qA[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)fie.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 ps,BH,FH,kH,Ml,fie,vl,iS,Dp,jw=ie(()=>{ps=b(ge());rg();cs();a(Kn,"getChanges");a(vp,"assignTrackedAccessors");BH=Object.prototype,FH=new Proxy({},{get:HH}),kH=new Proxy({},{get:HH,set:die});a(HH,"getProxiedProperty");a(die,"setProxiedProperty");a(Ww,"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");fie=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:()=>Jw});function Xw({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 GH(e,t){let r=no(e),n=Xw(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,WH.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||pie,r=dt()[t];if(!r)throw(0,_i.handleHDBError)(new Error,mie.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function qH(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*$H(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 VH,aS,_i,KH,zw,Qw,YH,WH,mie,pie,hie,Eie,Jw,zH=ie(()=>{VH=b(xH()),aS=b(Ed()),_i=b(ge());Oe();KH=b(Sp());$();zw=b(oa()),Qw=b(fs()),YH=b(ue());tc();jw();WH=b(ee()),{HDB_ERROR_MSGS:mie}=_i.hdbErrors,pie="data",hie=1e4,Eie=10,Jw=class extends VH.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:Xw(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 Qw.SchemaEventMsg(process.pid,Y.CREATE_SCHEMA,t.schema))}async dropSchema(t){await Zw(t.schema),zw.signalSchemaChange(new Qw.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,KH.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 qH(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,YH.asyncSetTimeout)(Eie),l=[],s=!0},"chunkDelete");for await(let d of n)l.push(d[r.primaryKey]),c++,c%hie===0&&await u();return l.length>0&&await u(),s?qH(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 GH(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of GH(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&gA[r]===void 0)throw new Error(`Value search comparator - ${r} - is not valid`);t.select!==void 0&&(t.get_attributes=t.select),t.search_attribute!==void 0&&(t.attribute=t.search_attribute),t.search_value!==void 0&&(t.value=t.search_value);let n=(0,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:Xw(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 $H(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n}default:return $H(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(Xw,"getSelect");a(GH,"getRecords");a(no,"getTable");a(qH,"createDeleteResponse");a($H,"groupRecordsInHistory")});var hs=x((Dve,QH)=>{"use strict";var{ResourceBridge:_ie}=(zH(),P(jH)),gie=fe();gie.initSync();var cS;function Sie(){return cS||(cS=new _ie,cS)}a(Sie,"getBridge");QH.exports=Sie()});var gi=x((Mve,ZH)=>{var Tie=Ll(),{promisify:yie}=require("util"),{getDatabases:XH}=(Oe(),P(Et));ZH.exports={setSchemaDataToGlobal:JH,getTableSchema:Rie,getSystemSchema:bie,setSchemaDataToGlobalAsync:yie(JH)};function JH(e){global.hdb_schema=XH(),e&&e()}a(JH,"setSchemaDataToGlobal");function Rie(e,t,r){let n=XH()[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(Rie,"getTableSchema");function bie(){return Tie}a(bie,"getSystemSchema")});var Es=x((xve,nG)=>{"use strict";var uS=lF(),sn=ue(),Aie=require("util"),dS=hs(),Iie=gi(),eG=ee(),{handleHDBError:xl,hdbErrors:wie}=ge(),{HTTP_STATUS_CODES:Bl}=wie,Nie=Aie.promisify(Iie.getTableSchema),Cie="updated",tG="inserted",rG="upserted";nG.exports={insert:Pie,update:Lie,upsert:Die,validation:Oie,flush:vie};async function Oie(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 Nie(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 eG.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 eG.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(Oie,"validation");async function Pie(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(tG,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(Pie,"insertData");async function Lie(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(Cie,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(Lie,"updateData");async function Die(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(rG,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(Die,"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===tG?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===rG?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(lS,"returnObject");function vie(e){return sn.transformReq(e),dS.flush(e.schema,e.table)}a(vie,"flush")});var tN=x((Fve,oG)=>{var Mie=ht(),eN=require("joi"),{hdbTable:Uie,hdbDatabase:sG}=na(),iG={schema:sG,database:sG,table:Uie},xie={date:eN.date().iso().required()},Bie={timestamp:eN.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};oG.exports=function(e,t){let r=t==="timestamp"?{...iG,...Bie}:{...iG,...xie},n=eN.object(r);return Mie.validateBySchema(e,n)}});var lG=x((kve,cG)=>{var Fie=ht(),rN=require("joi"),{hdbTable:kie,hdbDatabase:aG}=na(),Hie=rN.object({schema:aG,database:aG,table:kie,hash_values:rN.array().required(),ids:rN.array()});cG.exports=function(e){return Fie.validateBySchema(e,Hie)}});var oN=x((Hve,uG)=>{"use strict";var nN=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}},sN=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}},iN=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};uG.exports={InsertObject:nN,NoSQLSeachObject:sN,DeleteResponseObject:iN}});var Hl=x((qve,hG)=>{"use strict";var fG=tN(),Gie=lG(),Fl=ue(),dG=require("moment"),mG=ee(),{promisify:qie,callbackify:$ie}=require("util"),kl=($(),P(z)),Vie=gi(),aN=qie(Vie.getTableSchema),cN=hs(),{DeleteResponseObject:Kie}=oN(),{handleHDBError:mc,hdbErrors:Yie}=ge(),{HDB_ERROR_MSGS:fS,HTTP_STATUS_CODES:pc}=Yie,Wie="records successfully deleted",jie=$ie(pG);hG.exports={delete:jie,deleteRecord:pG,deleteFilesBefore:zie,deleteAuditLogsBefore:Qie};async function zie(e){let t=fG(e,"date");if(t)throw mc(t,t.message,pc.BAD_REQUEST,void 0,void 0,!0);if(Fl.transformReq(e),!dG(e.date,dG.ISO_8601).isValid())throw mc(new Error,fS.INVALID_DATE,pc.BAD_REQUEST,kl.LOG_LEVELS.ERROR,fS.INVALID_DATE,!0);let n=Fl.checkSchemaTableExist(e.schema,e.table);if(n)throw mc(new Error,n,pc.NOT_FOUND,kl.LOG_LEVELS.ERROR,n,!0);let s=await cN.deleteRecordsBefore(e);if(await aN(e.schema,e.table),mG.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(zie,"deleteFilesBefore");async function Qie(e){let t=fG(e,"timestamp");if(t)throw mc(t,t.message,pc.BAD_REQUEST,void 0,void 0,!0);if(Fl.transformReq(e),isNaN(e.timestamp))throw mc(new Error,fS.INVALID_VALUE("Timestamp"),pc.BAD_REQUEST,kl.LOG_LEVELS.ERROR,fS.INVALID_VALUE("Timestamp"),!0);let r=Fl.checkSchemaTableExist(e.schema,e.table);if(r)throw mc(new Error,r,pc.NOT_FOUND,kl.LOG_LEVELS.ERROR,r,!0);let n=await cN.deleteAuditLogsBefore(e);return await aN(e.schema,e.table),mG.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(Qie,"deleteAuditLogsBefore");async function pG(e){e.ids&&(e.hash_values=e.ids);let t=Gie(e);if(t)throw mc(t,t.message,pc.BAD_REQUEST,void 0,void 0,!0);Fl.transformReq(e);let r=Fl.checkSchemaTableExist(e.schema,e.table);if(r)throw mc(new Error,r,pc.NOT_FOUND,kl.LOG_LEVELS.ERROR,r,!0);try{await aN(e.schema,e.table);let n=await cN.deleteRecords(e);return Fl.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${Wie}`),n}catch(n){if(n.message===kl.SEARCH_NOT_FOUND_MESSAGE){let s=new Kie;return s.message=kl.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(pG,"deleteRecord")});var mN={};Re(mN,{HASH_FUNCTION:()=>Kr,hash:()=>dN,validate:()=>fN});function lN(e=Up){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(Mp.randomBytes(e)).map(r=>t[r%t.length]).join("")}function dN(e,t=Kr[_G?.toUpperCase()]??Kr.SHA256){return uN[t](e)}function fN(e,t,r=Kr[_G?.toUpperCase()]??Kr.SHA256){return e?Jie[r](e,t):!1}var Mp,Sd,EG,_G,Up,gG,Kr,uN,Jie,pN=ie(()=>{Mp=b(require("node:crypto")),Sd=b(require("argon2")),EG=b(fe());$();_G=(0,EG.get)(U.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),Up=16,gG=9,Kr={MD5:"md5",SHA256:"sha256",ARGON2ID:"argon2id"};a(lN,"generateSalt");uN={[Kr.MD5]:(e,t=void 0)=>{t=t??lN(gG);let r=Mp.createHash(Kr.MD5).update(e+t).digest("hex");return t+r},[Kr.SHA256]:(e,t=void 0)=>{t=t??lN(Up);let r=Mp.createHash(Kr.SHA256).update(e+t).digest("hex");return t+r},[Kr.ARGON2ID]:async e=>{let t=lN(Up),r=await Sd.hash(e,{type:Sd.argon2id,salt:Buffer.from(t)});return t+r}},Jie={[Kr.MD5]:(e,t)=>{let r=e.slice(0,gG);return e===uN[Kr.MD5](t,r)},[Kr.SHA256]:(e,t)=>{let r=e.slice(0,Up);return e===uN[Kr.SHA256](t,r)},[Kr.ARGON2ID]:async(e,t)=>await Sd.verify(e.slice(Up),t)};a(dN,"hash");a(fN,"validate")});var TG=x((Yve,SG)=>{var hN=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 Xie(e){return Sn.password.presence=!0,Sn.username.presence=!0,Sn.role.presence=!0,Sn.active.presence=!0,hN.validateObject(e,Sn)}a(Xie,"addUserValidation");function Zie(e){return Sn.password.presence=!1,Sn.username.presence=!0,Sn.role.presence=!1,Sn.active.presence=!1,hN.validateObject(e,Sn)}a(Zie,"alterUserValidation");function eoe(e){return Sn.password.presence=!1,Sn.username.presence=!0,Sn.role.presence=!1,Sn.active.presence=!1,hN.validateObject(e,Sn)}a(eoe,"dropUserValidation");SG.exports={addUserValidation:Xie,alterUserValidation:Zie,dropUserValidation:eoe}});var vG=x((jve,DG)=>{"use strict";var EN=require("recursive-iterator"),toe=require("alasql"),_N=require("clone"),yG=ue(),{handleHDBError:RG,hdbErrors:roe}=ge(),{HDB_ERROR_MSGS:bG,HTTP_STATUS_CODES:AG}=roe,{getDatabases:noe}=(Oe(),P(Et)),soe=["DISTINCT_ARRAY"],IG=Symbol("validateTables"),gN=Symbol("validateTable"),wG=Symbol("validateAllColumns"),mS=Symbol("findColumn"),NG=Symbol("validateOrderBy"),xp=Symbol("validateSegment"),SN=Symbol("validateColumn"),CG=Symbol("setColumnsForTable"),OG=Symbol("checkColumnsForAsterisk"),PG=Symbol("validateGroupBy"),LG=Symbol("hasColumns"),TN=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[IG](),this[OG](),this[wG]()}[IG](){if(this[LG]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[gN](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[gN](t.table)})}}[LG](){let t=!1,r=new EN(this.statement);for(let{node:n}of r)if(n&&n.columnid){t=!0;break}return t}[gN](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=noe();if(!r[t.databaseid])throw RG(new Error,bG.SCHEMA_NOT_FOUND(t.databaseid),AG.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw RG(new Error,bG.TABLE_NOT_FOUND(t.databaseid,t.tableid),AG.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=_N(s);i.table=_N(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)}[OG](){let t=new EN(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[CG](r.tableid)}[CG](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new toe.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[wG](){this[xp](this.statement.columns,!1),this[xp](this.statement.joins,!1),this[xp](this.statement.where,!1),this[PG](this.statement.group,!1),this[xp](this.statement.order,!0)}[xp](t,r){if(!t)return;let n=new EN(t),s=[];for(let{node:i}of n)!yG.isEmpty(i)&&!yG.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[NG](i):s.push(this[SN](i)));return s}[PG](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&soe.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=_N(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`}[NG](t){let r=this.statement.columns.filter(n=>n.as===t.columnid);if(r.length>1)throw`ambiguous column reference ${(t.tableid?t.tableid+".":"")+t.columnid} in order by`;r.length===0&&this[SN](t)}[SN](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]}};DG.exports=TN});var BG=x((Qve,xG)=>{"use strict";var MG=require("lodash"),Bp=require("mathjs"),ioe=require("jsonata"),UG=ue();xG.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?MG.uniqWith(e,MG.isEqual):e,"distinct_array"),searchJSON:ooe,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 ooe(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(UG.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),UG.isEmpty(this.__ala__.res[r])){let n=ioe(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(ooe,"searchJSON")});var kG=x((Xve,FG)=>{"use strict";var Er=require("moment"),yN="YYYY-MM-DDTHH:mm:ss.SSSZZ";Er.suppressDeprecationWarnings=!0;FG.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(yN),"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(yN),"get_server_time"),offset_utc:a((e,t)=>Er(e).utc().utcOffset(t).format(yN),"offset_utc")}});var $G=x((eMe,qG)=>{"use strict";var aoe=require("@turf/area"),coe=require("@turf/length"),loe=require("@turf/circle"),uoe=require("@turf/difference"),doe=require("@turf/distance"),foe=require("@turf/boolean-contains"),moe=require("@turf/boolean-equal"),poe=require("@turf/boolean-disjoint"),hoe=require("@turf/helpers"),HG=($(),P(z)),Ze=ue(),la=ee();qG.exports={geoArea:Eoe,geoLength:_oe,geoCircle:goe,geoDifference:Soe,geoDistance:GG,geoNear:Toe,geoContains:yoe,geoEqual:Roe,geoCrosses:boe,geoConvert:Aoe};function Eoe(e){if(Ze.isEmpty(e))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return aoe.default(e)}catch(t){return la.trace(t,e),NaN}}a(Eoe,"geoArea");function _oe(e,t){if(Ze.isEmpty(e))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return coe.default(e,{units:t||"kilometers"})}catch(r){return la.trace(r,e),NaN}}a(_oe,"geoLength");function goe(e,t,r){if(Ze.isEmpty(e))return NaN;if(Ze.isEmpty(t))return NaN;typeof e=="string"&&(e=Ze.autoCastJSON(e));try{return loe.default(e,t,{units:r||"kilometers"})}catch(n){return la.trace(n,e,t),NaN}}a(goe,"geoCircle");function Soe(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 uoe(e,t)}catch(r){return la.trace(r,e,t),NaN}}a(Soe,"geoDifference");function GG(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 doe.default(e,t,{units:r||"kilometers"})}catch(n){return la.trace(n,e,t),NaN}}a(GG,"geoDistance");function Toe(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 GG(e,t,n)<=r}catch(s){return la.trace(s,e,t),!1}}a(Toe,"geoNear");function yoe(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 foe.default(e,t)}catch(r){return la.trace(r,e,t),!1}}a(yoe,"geoContains");function Roe(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 moe.default(e,t)}catch(r){return la.trace(r,e,t),!1}}a(Roe,"geoEqual");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 la.trace(r,e,t),!1}}a(boe,"geoCrosses");function Aoe(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(HG.GEO_CONVERSION_ENUM[t]))throw new Error(`geoType of ${t} is invalid please use one of the following types: ${Object.keys(HG.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ze.autoCastJSON(e)),hoe[t](e,r)}a(Aoe,"geoConvert")});var pS=x((rMe,VG)=>{var Gl=BG(),_s=kG(),so=$G();VG.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=_s.current_date,e.fn.current_time=e.fn.CURRENT_TIME=_s.current_time,e.fn.extract=e.fn.EXTRACT=_s.extract,e.fn.date=e.fn.DATE=_s.date,e.fn.date_format=e.fn.DATE_FORMAT=_s.date_format,e.fn.date_add=e.fn.DATE_ADD=_s.date_add,e.fn.date_sub=e.fn.DATE_SUB=_s.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=_s.date_diff,e.fn.now=e.fn.NOW=_s.now,e.fn.offset_utc=e.fn.OFFSET_UTC=_s.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=_s.get_server_time,e.fn.getdate=e.fn.GETDATE=_s.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=_s.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((nMe,WG)=>{"use strict";var kp=require("lodash"),Yn=require("alasql");Yn.options.cache=!1;var Ioe=pS(),KG=require("clone"),hS=require("recursive-iterator"),Ke=ee(),ot=ue(),Td=hs(),woe=($(),P(z)),{hdbErrors:Noe}=ge(),{getDatabases:YG}=(Oe(),P(Et)),Coe="IS NULL",Si="There was a problem performing this search. Please check the logs and try again.";Ioe(Yn);var RN=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(KG(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=YG()[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(woe.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(KG(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(Coe)>-1&&this.tables.forEach(s=>{let i={columnid:YG()[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(Noe.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)}};WG.exports=RN});var Wn=x((iMe,zG)=>{"use strict";zG.exports={searchByConditions:Ooe,searchByHash:Poe,searchByValue:Loe,search:Doe};var bN=hs(),{transformReq:AN}=ue();async function Ooe(e){return AN(e),bN.searchByConditions(e)}a(Ooe,"searchByConditions");async function Poe(e){AN(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of bN.searchByHash(e))r&&t.push(r);return t}a(Poe,"searchByHash");async function Loe(e){AN(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of bN.searchByValue(e))t.push(r);return t}a(Loe,"searchByValue");function Doe(e,t){try{let r=vG(),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(Doe,"search")});var ua=x((aMe,ZG)=>{"use strict";var Hp=require("crypto"),voe=fe(),{CONFIG_PARAMS:Moe}=($(),P(z)),JG="aes-256-cbc",Uoe=32,xoe=16,IN=64,XG=32,Boe=IN+XG,QG=new Map;ZG.exports={encrypt:Foe,decrypt:koe,createNatsTableStreamName:Hoe};function Foe(e){let t=Hp.randomBytes(Uoe),r=Hp.randomBytes(xoe),n=Hp.createCipheriv(JG,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(Foe,"encrypt");function koe(e){let t=e.substr(0,IN),r=e.substr(IN,XG),n=e.substr(Boe,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=Hp.createDecipheriv(JG,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(koe,"decrypt");function Hoe(e,t){let r=voe.get(Moe.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=QG.get(r);return n||(n=Hp.createHash("md5").update(r).digest("hex"),QG.set(r,n)),n}a(Hoe,"createNatsTableStreamName")});var _r=x((lMe,tq)=>{"use strict";var Goe="nats-server.zip",wN="nats-server",qoe=process.platform==="win32"?`${wN}.exe`:wN,$oe=/^[^\s.,*>]+$/,eq="__request__",Voe=a(e=>`${e}.${eq}`,"REQUEST_SUBJECT"),Koe={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},Yoe={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Woe={HUB:"hub.pid",LEAF:"leaf.pid"},joe={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},zoe={SUCCESS:"success",ERROR:"error"},Qoe={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},Joe={TXN:"txn",MSGID:"msgid"},yd={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},Xoe={[yd.ERR]:1,[yd.WRN]:2,[yd.INF]:3,[yd.DBG]:4,[yd.TRC]:5},Zoe={debug:"-D",trace:"-DVV"};tq.exports={NATS_SERVER_ZIP:Goe,NATS_SERVER_NAME:wN,NATS_BINARY_NAME:qoe,PID_FILES:Woe,NATS_CONFIG_FILES:Yoe,SERVER_SUFFIX:joe,NATS_TERM_CONSTRAINTS_RX:$oe,REQUEST_SUFFIX:eq,UPDATE_REMOTE_RESPONSE_STATUSES:zoe,CLUSTER_STATUS_STATUSES:Qoe,REQUEST_SUBJECT:Voe,SUBJECT_PREFIXES:Joe,MSG_HEADERS:Koe,LOG_LEVELS:yd,LOG_LEVEL_FLAGS:Zoe,LOG_LEVEL_HIERARCHY:Xoe}});var ao={};Re(ao,{ACTIVE_BOOLEAN:()=>cq,ALTERUSER_NOTHING_TO_UPDATE:()=>iq,EMPTY_PASSWORD:()=>oq,EMPTY_ROLE:()=>aq,USERNAME_REQUIRED:()=>sq,addUser:()=>MN,alterUser:()=>UN,dropUser:()=>xN,findAndValidateUser:()=>bd,getClusterUser:()=>dae,getSuperUser:()=>$p,getUsersWithRolesCache:()=>uae,listUsers:()=>gS,listUsersExternal:()=>FN,setUsersWithRolesCache:()=>yi,userInfo:()=>BN});async function MN(e){let t=dq.cleanAttributes(e,fq),r=uq.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),da.NOT_FOUND);if(n.length>1)throw new Ti(Rd.DUP_ROLES_FOUND(t.role),da.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=DN.encrypt(t.password)),t.password=await Gp.hash(t.password,ES),t.hash_function=ES,t.role=n[0].id;let s=await lq.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(LN.debug(s),await yi(),s.skipped_hashes.length===1)throw new Ti(Rd.USER_ALREADY_EXISTS(t.username),da.CONFLICT);return await PN.signalUserChange(new vN(process.pid)),`${t.username} successfully added`}async function UN(e){let t=dq.cleanAttributes(e,fq);if(io.isEmptyOrZeroLength(t.username))throw new Error(sq);if(io.isEmptyOrZeroLength(t.password)&&io.isEmptyOrZeroLength(t.role)&&io.isEmptyOrZeroLength(t.active))throw new Error(iq);if(!io.isEmpty(t.password)&&io.isEmptyOrZeroLength(t.password.trim()))throw new Error(oq);if(!io.isEmpty(t.active)&&!io.isBoolean(t.active))throw new Error(cq);if(!io.isEmpty(t.password)&&!io.isEmptyOrZeroLength(t.password.trim())&&(cae(t.username)&&(t.hash=DN.encrypt(t.password)),t.password=await Gp.hash(t.password,ES),t.hash_function=ES),t.role==="")throw new Error(aq);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),da.NOT_FOUND);if(n.length>1)throw new Ti(Rd.DUP_ROLES_FOUND(t.role),da.CONFLICT);t.role=n[0].id}let r=await lq.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await yi(),await PN.signalUserChange(new vN(process.pid)),r}function cae(e){let t=!1,r=oo.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}async function xN(e){let t=uq.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),da.NOT_FOUND);let r=await aae({table:"hdb_user",schema:"system",hash_values:[e.username]});return LN.debug(r),await yi(),await PN.signalUserChange(new vN(process.pid)),`${e.username} successfully deleted`}async function BN(e){if(!e||!e.hdb_user)return"There was no user info in the body";let t=ON.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 FN(){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]=ON.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=ON.cloneDeep(s),s.role=t[s.role],lae(s.role),n.set(s.username,s);return n}function lae(e){if(!e){LN.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(sae)){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 uae(){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(NN.GENERIC_AUTH_FAIL,da.UNAUTHORIZED)}if(n&&!n.active)throw new Ti(NN.USER_INACTIVE,da.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(nq.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)nq.set(t,n.password);else throw new Ti(NN.GENERIC_AUTH_FAIL,da.UNAUTHORIZED)}}return s}async function $p(){oo||await yi();for(let[,e]of oo)if(e.role.role==="super_user")return e}async function dae(){let e=await gS(),t=rae.getConfigFromFile(CN.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(r==null||r?.role?.role!==CN.ROLE_TYPES_ENUM.CLUSTER_USER)return;let n=DN.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+rq.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+rq.SERVER_SUFFIX.ADMIN,r}var sq,iq,oq,aq,cq,lq,eae,Gp,uq,qp,PN,io,dq,LN,tae,DN,CN,rq,rae,nae,sae,iae,Ti,da,NN,Rd,vN,ON,_S,oae,fq,nq,aae,ES,oo,mq,gs=ie(()=>{"use strict";sq="username is required",iq="nothing to update, must supply active, role or password to update",oq="password cannot be an empty string",aq="If role is specified, it cannot be empty.",cq="active must be true or false",lq=Es(),eae=Hl(),Gp=(pN(),P(mN)),uq=TG(),qp=Wn(),PN=oa(),io=ue(),dq=require("validate.js"),LN=ee(),{promisify:tae}=require("util"),DN=ua(),CN=($(),P(z)),rq=_r(),rae=It(),nae=fe(),sae=Ll(),{hdbErrors:iae,ClientError:Ti}=ge(),{HTTP_STATUS_CODES:da,AUTHENTICATION_ERROR_MSGS:NN,HDB_ERROR_MSGS:Rd}=iae,{UserEventMsg:vN}=fs(),ON=require("lodash"),{server:_S}=(qr(),P(Rm)),oae=ee();_S.getUser=(e,t)=>bd(e,t,t!=null);_S.authenticateUser=(e,t)=>bd(e,t);fq={username:!0,active:!0,role:!0,password:!0},nq=new Map,aae=tae(eae.delete),ES=nae.get(CN.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??Gp.HASH_FUNCTION.SHA256;a(MN,"addUser");a(UN,"alterUser");a(cae,"isClusterUser");a(xN,"dropUser");a(BN,"userInfo");a(FN,"listUsersExternal");a(gS,"listUsers");a(lae,"appendSystemTablesToRole");a(yi,"setUsersWithRolesCache");a(uae,"getUsersWithRolesCache");a(bd,"findAndValidateUser");a($p,"getSuperUser");a(dae,"getClusterUser");mq=[];_S.invalidateUser=function(e){for(let t of mq)try{t(e)}catch(r){oae.error("Error invalidating user",r)}};_S.onInvalidatedUser=function(e){mq.push(e)}});var Le,Ad=ie(()=>{Le={HEALTHY:"healthy",WARNING:"warning",ERROR:"error",UNKNOWN:"unknown",LOADING:"loading"}});var Id,kN=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,hc,HN,wd,GN,Nd,qN,SS=ie(()=>{ql=b(En()),hc=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)}},HN=class extends hc{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 hc{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}},GN=class extends hc{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 hc{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}},qN=class extends hc{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 pq,$l,hq,Ec,Vp,Cd,fae,TS,$N=ie(()=>{pq=b(fs()),$l=b(it());$();hq=b(hr());Ad();SS();Ec=(0,hq.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}`;Ec.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&&(Ec.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(),Ec.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),Ec.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,pq.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 Ec.debug?.(`Collected component status from ${l.length+1} threads (including local)`),u}catch(r){return r instanceof wd?Ec.error?.(`ITC failure during component status collection: ${r.message}`):Ec.warn?.("Failed to collect component status from all threads:",r),Ec.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}},fae=parseInt(process.env.COMPONENT_STATUS_TIMEOUT||"5000"),TS=new Vp(fae)});var _c,yS=ie(()=>{kN();Ad();$N();SS();_c=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 _c});function _q(e){let t=Eq.get(e);return t||(t=new VN(e),Eq.set(e,t)),t}function gq(){gr.reset()}var VN,Eq,co,Sq,Tq=ie(()=>{RS();Ad();VN=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)}},Eq=new Map;a(_q,"statusForComponent");co={loading(e,t){gr.initializeLoading(e,t)},loaded(e,t){gr.markLoaded(e,t)},failed(e,t,r){gr.markFailed(e,t,r)}};a(gq,"reset");Sq=Le});var Kp={};Re(Kp,{AggregationError:()=>GN,COMPONENT_STATUS_LEVELS:()=>Le,ComponentStatus:()=>Id,ComponentStatusError:()=>hc,ComponentStatusOperationError:()=>Nd,ComponentStatusRegistry:()=>_c,CrossThreadCollectionError:()=>qN,CrossThreadStatusCollector:()=>Vp,CrossThreadTimeoutError:()=>HN,ITCError:()=>wd,StatusAggregator:()=>Cd,componentStatusRegistry:()=>gr,crossThreadCollector:()=>TS,query:()=>mae});var mae,yq=ie(()=>{RS();yS();kN();yS();$N();RS();SS();Ad();mae={get(e){return gr.getStatus(e)},all(){return gr.getAllStatuses()},byStatus(e){return gr.getComponentsByStatus(e)},summary(){return gr.getStatusSummary()},async allThreads(){return _c.getAggregatedFromAllThreads(gr)}}});var KN={};Re(KN,{STATUS:()=>Sq,internal:()=>Kp,lifecycle:()=>co,reset:()=>gq,statusForComponent:()=>_q});var Yp=ie(()=>{Tq();yq()});var jp=x((VMe,Aq)=>{"use strict";var Ss=ee(),Tn=($(),P(z)),pae=nF(),hae=(gs(),P(ao)),{validateEvent:YN}=fs(),Wp=hs(),Eae=require("process"),{resetDatabases:_ae}=(Oe(),P(Et)),gae={[Tn.ITC_EVENT_TYPES.SCHEMA]:Sae,[Tn.ITC_EVENT_TYPES.USER]:bq,[Tn.ITC_EVENT_TYPES.COMPONENT_STATUS_REQUEST]:yae};async function Sae(e){let t=YN(e);if(t){Ss.error(t);return}Ss.trace("ITC schemaHandler received schema event:",e),await pae(e.message),await Tae(e.message)}a(Sae,"schemaHandler");async function Tae(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=_ae();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){Ss.error(t)}}a(Tae,"syncSchemaMetadata");var Rq=[];async function bq(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=YN(e);if(t){Ss.error(t);return}Ss.trace(`ITC userHandler ${Tn.HDB_ITC_CLIENT_PREFIX}${Eae.pid} received user event:`,e),await hae.setUsersWithRolesCache();for(let r of Rq)r()}catch(t){Ss.error(t)}}a(bq,"userHandler");bq.addListener=function(e){Rq.push(e)};async function yae(e){try{let t=YN(e);if(t){Ss.error(t);return}Ss.trace("ITC componentStatusRequestHandler received request:",e);let{internal:r}=(Yp(),P(KN)),{getWorkerIndex:n}=it(),{sendItcEvent:s}=fs(),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(yae,"componentStatusRequestHandler");Aq.exports=gae});var fs=x((YMe,wq)=>{"use strict";var WN=ue(),Rae=($(),P(z)),{ITC_ERRORS:zp}=En(),{threadId:bae,isMainThread:Aae}=require("worker_threads"),{onMessageFromWorkers:Iae,broadcastWithAcknowledgement:wae}=it();wq.exports={sendItcEvent:Nae,validateEvent:Iq,SchemaEventMsg:Cae,UserEventMsg:Oae};var bS;Iae(async(e,t)=>{bS=bS||jp(),Iq(e),bS[e.type]&&await bS[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function Nae(e){return!Aae&&e.message&&(e.message.originator=bae),wae(e)}a(Nae,"sendItcEvent");function Iq(e){if(typeof e!="object")return zp.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||WN.isEmpty(e.type))return zp.MISSING_TYPE;if(!e.hasOwnProperty("message")||WN.isEmpty(e.message))return zp.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||WN.isEmpty(e.message.originator))return zp.MISSING_ORIGIN;if(Rae.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return zp.INVALID_EVENT(e.type)}a(Iq,"validateEvent");function Cae(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(Cae,"SchemaEventMsg");function Oae(e){this.originator=e}a(Oae,"UserEventMsg")});var oa=x((jMe,Pq)=>{"use strict";var Nq=($(),P(z)),AS=ee(),Cq=kB(),Od,{sendItcEvent:Oq}=fs();function Pae(e){try{AS.debug("signalSchemaChange called with message:",e),Od=Od||jp();let t=new Cq(Nq.ITC_EVENT_TYPES.SCHEMA,e);return Od.schema(t),Oq(t)}catch(t){AS.error(t)}}a(Pae,"signalSchemaChange");function Lae(e){try{AS.trace("signalUserChange called with message:",e),Od=Od||jp();let t=new Cq(Nq.ITC_EVENT_TYPES.USER,e);return Od.user(t),Oq(t)}catch(t){AS.error(t)}}a(Lae,"signalUserChange");Pq.exports={signalSchemaChange:Pae,signalUserChange:Lae}});function Qp(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 Lq(e,t){(typeof e.set!="function"||typeof e.has!="function")&&(e=new $s(e));for(let[r,n]of t)if(!e.has(r))e.set(r,n);else if(r.toLowerCase()==="set-cookie"){let s=Array.isArray(n)?n:[n];if(e.append)for(let i of s)e.append(r,i);else{let i=e.get(r),o=Array.isArray(i)?[...i,...s]:[i,...s];e.set(r,o)}}return e}var $s,Jp=ie(()=>{$s=class extends Map{static{a(this,"Headers")}constructor(t){if(t)if(t[Symbol.iterator])super(t);else{super();for(let r in t)this.set(r,t[r])}else super()}set(t,r){return typeof t!="string"&&(t=""+t),Array.isArray(r)?r=r.map(n=>typeof n=="string"?n:""+n):typeof r!="string"&&(r=""+r),super.set(t.toLowerCase(),[t,r])}get(t){return typeof t!="string"&&(t=""+t),super.get(t.toLowerCase())?.[1]}has(t){return typeof t!="string"&&(t=""+t),super.has(t.toLowerCase())}setIfNone(t,r){typeof t!="string"&&(t=""+t),typeof r!="string"&&(r=""+r);let n=t.toLowerCase();if(!super.has(n))return super.set(n,[t,r])}append(t,r,n){typeof t!="string"&&(t=""+t),typeof r!="string"&&(r=""+r);let s=t.toLowerCase(),i=super.get(s);if(i){let o=i[1];if(n)r=(typeof o=="string"?o:o.join(", "))+", "+r;else if(typeof o=="string")r=[o,r];else{o.push(r);return}}return super.set(s,[t,r])}[Symbol.iterator](){return super.values()[Symbol.iterator]()}};a(Qp,"appendHeader");a(Lq,"mergeHeaders")});function IS(e,t,r=vae){let n;return function(...i){return n?n.length*jN>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();jN=(jN*4+o-i)/5;let c=n.shift();if(c){let{fn:l}=c;l(),s(o)}else n=null})}}var Mq,Dae,vae,Dq,Mae,zN,vq,jN,QN=ie(()=>{Mq=b(hr()),Dae=3e3,vae=2e4,Dq=0,Mae=3e4,zN=3e3,vq=performance.now()+zN,jN=0;a(IS,"throttle");setInterval(()=>{let e=performance.now();e-vq-zN>Dae&&Dq+Mae<e&&(Mq.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"),Dq=e),vq=e},zN).unref()});var Kq={};Re(Kq,{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=PI(i,n,l),I,w,L={},H=Promise.resolve(),Z,X,J;for(let W of S)(W.assignCreatedTime||W.name==="__createdtime__")&&(Z=W),(W.assignUpdatedTime||W.name==="__updatedtime__")&&(X=W),W.expiresAt&&(J=W),W.isPrimaryKey&&(L=W);let F,de=[],oe=[],ae=1,he=2,Te={},De={},Je=864e5,$e=0,ns,Pt,Lt,Wa=!1,Jc,qt,vs,ja=Pd.get(U.REPLICATION_DATABASES);if(Array.isArray(ja)){for(let W of ja)if(W.name===c&&W.replicateTo>=0){vs=W.replicateTo;break}}let h_=i.getRange({start:!1,end:!1}).constructor,lm=10,E_=6;_&&Bu(),tp(i.env.path,W=>{if(w)return Nr(W)});class um extends Ml{static{a(this,"Updatable")}getUpdatedTime(){return oc.get(this.getRecord())?.version}getExpiresAt(){return oc.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]],Q=d.get(j),le=Q?.nodes;le||(le=[]);for(let Pe of D.remoteNodeIds.slice(1)){let Xe=le.find(mt=>mt.id===Pe);le=le.filter(mt=>mt.id!==Pe||mt===Xe),Xe||(Xe={id:Pe,seqId:0},le.push(Xe)),Xe.seqId=Math.max(Q?.seqId??1,D.localTime),Pe===V?.nodeId&&(Xe.lastTxnTime=D.timestamp)}let pe=Math.max(Q?.seqId??1,D.localTime);Fe.default.trace?.("Received txn",c,pe,new Date(pe),D.localTime,new Date(D.localTime),D.remoteNodeIds),d.put(j,{seqId:pe,nodes:le})},"updateRecordedSequenceId"),k=D.localTime),D.onCommit){let j=V?V.committed.then(D.onCommit):D.onCommit();Ee&&(j?.then?j.then(Ee):Ee())}else Ee&&Ee();continue}if(V)if(D.beginTxn)V.resolve();else{V.writePromises.push(K(D,V));continue}!D.timestamp&&D.version&&(D.timestamp=D.version);let ne=wt(D,()=>{if(D.type==="transaction"){let Ee=[];for(let j of D.writes)try{Ee.push(K(j,D))}catch(Q){throw Q.message+=" writing "+JSON.stringify(j)+" of event "+JSON.stringify(D),Q}return Promise.all(Ee)}else if(D.type==="define_schema"){let Ee=this.attributes.slice(0),j=!1;for(let Q of D.attributes)Ee.find(le=>le.name===Q.name)||(Ee.push(Q),j=!0);j&&(je({table:s,database:c,attributes:Ee,origin:"cluster"}),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){Ho(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=qo(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=qo(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&&(!Yae(i)||B.pid===process.pid)){let k=B.start,K=B.end;v=k;for(let M of i.getKeys({start:K,end:k,limit:1,reverse:!0}))v=M}else B=N(C?.version??null),v=B.start;qt=new BigInt64Array([BigInt(v)+1n]),qt=new BigInt64Array(i.getUserSharedBuffer("id",qt.buffer)),qt.maxSafeId=B.end}let T=Number(Atomics.add(qt,0,1n)),A=g==="Int"?512:1048576;if(T+A>=qt.maxSafeId){let C=a(B=>{qt.maxSafeId=T+(g==="Int"?1023:4194303);let v=(g==="Int"?Math.pow(2,31):Math.pow(2,49))-1,k=B?void 0:i.useReadTransaction(),K=Number(qt[0]);for(let O of i.getKeys({start:K+1,end:v,limit:1,transaction:k}))v=O;k?.done();let{value:M,version:q}=i.getEntry(Symbol.for("id_allocation"));if(qt.maxSafeId<v){if(M.end>qt.maxSafeId-100)return;Fe.default.info?.("New id allocation",T,qt.maxSafeId,q),i.put(Symbol.for("id_allocation"),{start:M.start,end:qt.maxSafeId,nodeName:server.hostname,pid:process.pid},Date.now(),q)}else{Fe.default.warn?.(`Id conflict detected, starting new id allocation range, attempting to allocate to ${qt.maxSafeId}, but id of ${v} detected`);let O=N(q);O.alreadyUpdated||Atomics.store(qt,0,BigInt(O.start+1)),qt.maxSafeId=O.end}},"updateEnd");T+A===qt.maxSafeId?setImmediate(C):T+100>=qt.maxSafeId&&(Fe.default.warn?.(`Synchronous id allocation required on table ${s}${g=="Int"?", it is highly recommended that you use Long or Float as the type for auto-incremented primary keys":""}`),i.transactionSync(()=>C(!0)))}return T;function N(C){let B=(g==="Int"?Math.pow(2,31):Math.pow(2,49))-1,v=B/4,k,K,M=!1,q,O;do{q=Math.floor(Math.random()*B),O={start:q,end:q+(g==="Int"?1024:4194304),nodeName:server.hostname,pid:process.pid},k=0;for(let G of i.getKeys({start:q,limit:1,reverse:!0}))k=G;K=B;for(let G of i.getKeys({start:q+1,end:B,limit:1}))K=G;v*=.875,v<1e3&&!M&&(M=!0,Fe.default.error?.(`Id allocation in table ${s} is very dense, limited safe range of numbers to allocate ids in${g==="Int"?", it is highly recommended that you use Long or Float as the type for auto-incremented primary keys":""}`,q,k,K,v))}while(!(v<K-q&&(v<q-k||k===0)));return i.transactionSync(()=>{let G=i.getEntry(Symbol.for("id_allocation"));return(G?.version??null)==C?(Fe.default.info?.("Allocated new id range",O),i.put(Symbol.for("id_allocation"),O,Date.now()),O):(Fe.default.debug?.("Looks like ids were already allocated"),{alreadyUpdated:!0,...G.value})})}}static setTTLExpiration(g){if(typeof g=="number")h=g*1e3,E||(E=0);else if(g&&typeof g=="object")h=g.expiration*1e3,E=(g.eviction||0)*1e3,Je=g.scanInterval*1e3;else throw new Error("Invalid expiration value type");if(h<0)throw new Error("Expiration can not be negative");Je=Je||(h+E)/4,Nr()}static getResidencyRecord(g){return d.get([Symbol.for("residency_by_id"),g])}static setResidency(g){Be.getResidency=g&&((T,A)=>{try{return g(T,A)}catch(N){throw N.message+=` in residency function for table ${s}`,N}})}static setResidencyById(g){Be.getResidencyById=g&&(T=>{try{return g(T)}catch(A){throw A.message+=` in residency function for table ${s}`,A}})}static getResidency(g,T){if(Be.getResidencyById)return Be.getResidencyById(g[t]);let A=vs;if(T.replicateTo!=null){if(Array.isArray(T.replicateTo))return T.replicateTo.includes(server.hostname)?T.replicateTo:[server.hostname,...T.replicateTo];T.replicateTo>=0&&(A=T.replicateTo)}if(A>=0&&server.nodes){let N=[server.hostname];if(T.previousResidency)N.push(...T.previousResidency.slice(0,A));else{let C=server.nodes.map(k=>k.name),B=Math.floor(C.length*Math.random());N.push(...C.slice(B,B+A));let v=B+A-C.length;v>0&&N.push(...C.slice(0,v))}return N}}static enableAuditing(){_||(_=!0,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&&nc(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(),XN.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);Ho(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=qo(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=Go(g,T);if(N?.read){if(N.isSuperUser)return!0;let C=N.attribute_permissions,B=T?.select;if(C?.length>0||Wa&&B){if(T||(T={}),B){let v=Array.isArray(B)?B:[B],k=C?.length>0&&JN(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=Go(g);if(N?.update){let C=N.attribute_permissions;if(C?.length>0){let B=JN(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 za(this.getContext())}}allowCreate(g,T,A){if(this.isCollection){let N=Go(g);if(N?.insert){let C=N.attribute_permissions;if(C?.length>0){let B=JN(C,"insert");for(let v in T)if(!B[v])return!1;return za(this.getContext())}else return za(this.getContext())}}else return this.allowUpdate(g,T,A)}allowDelete(g,T,A){return!!Go(g,T)?.delete&&za(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===xq?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();Ho(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(!($o(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();Ho(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($o(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);Ho(g);let v=this.#n??i.getEntry(g);this.#s=A?xq:qae;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=$o(M,q,N?.nodeId),ne,Ee=A?"put":"patch",j;N?.residencyId!=null&&(j=N.residencyId);let Q=C?.expiresAt??(h?h+Date.now():-1);if(me<=0){if(_){let Pe=q.localTime,Xe=q.version;Fe.default.trace?.("Applying CRDT update to record with id: ",g,"txn time",new Date(M),"applying later update from:",new Date(Xe),"local recorded time",new Date(Pe));let mt=[];for(;Pe>M||Xe>=M&&Pe>0;){let ye=l.get(Pe);if(!ye)break;let Se=Nt(ye);if(Xe=Se.version,Xe>=M){if(Xe===M){if(me=$o(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()}${Q?", expires at: "+new Date(Q).toISOString():""}${q?", replaces entry from: "+new Date(q.version).toISOString():", new entry"}`,(()=>{try{return JSON.stringify(le).slice(0,100)}catch{return""}})()),Xc(g,G,le),pe(!0),C.expiresAt&&Nr();function pe(Pe){y(g,Pe?le:void 0,Pe?q:{...q,value:void 0},M,D?Gn:0,_,{omitLocalRecord:D,user:C?.user,residencyId:j,expiresAt:Q,nodeId:N?.nodeId,originatingOperation:C?.originatingOperation,tableToTrack:c==="system"?null:s},Ee,!1,Pe?ne:ne??T)}a(pe,"writeCommit")},"commit")};B.addWrite(K)}async delete(g){if(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());Ho(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)),!($o(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"),_||Nr()):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=Fae);let N=g.conditions;N?N.length===void 0&&(N=N[Symbol.iterator]?Array.from(N):[N]):N=Array.isArray(g)?g:g[Symbol.iterator]?Array.from(g):[];let C=g.id??this.getId();C&&(N=[{attribute:null,comparator:Array.isArray(C)?"prefix":"starts_with",value:C}].concat(N));let B,v={};function k(Q,le){switch(le){case"and":case void 0:if(Q.length<1)throw new Error('An "and" operator requires at least one condition');break;case"or":if(Q.length<2)throw new Error('An "or" operator requires at least two conditions');break;default:throw new Error("Invalid operator "+le)}for(let pe of Q){if(pe.conditions){pe.conditions=k(pe.conditions,pe.operator);continue}let Pe=pe[0]??pe.attribute,Xe=Pe==null?L:Ji(S,Pe);if(Xe)(Xe.type||DI[pe.comparator])&&(pe[1]===void 0?pe.value=M(pe.value,Xe):pe[1]=M(pe[1],Xe));else if(Pe!=null&&!g.allowConditionsOnDynamicAttributes)throw(0,ft.handleHDBError)(new Error,`${Pe} is not a defined attribute`,404);if(pe.chainedConditions)if(pe.chainedConditions.length===1&&(!pe.operator||pe.operator=="and")){let mt=pe.chainedConditions[0],ye,Se;if(mt.comparator==="gt"||mt.comparator==="greater_than"||mt.comparator==="ge"||mt.comparator==="greater_than_equal"?(ye=pe,Se=mt):(ye=mt,Se=pe),ye.comparator!=="lt"&&ye.comparator!=="less_than"&&ye.comparator!=="le"&&ye.comparator!=="less_than_equal")throw new Error("Invalid chained condition, only less than and greater than conditions can be chained together");let bt=Se.comparator==="ge"||Se.comparator==="greater_than_equal",_t=ye.comparator==="le"||ye.comparator==="less_than_equal";pe.comparator=(bt?"ge":"gt")+(_t?"le":"lt"),pe.value=[Se.value,ye.value]}else throw new Error("Multiple chained conditions are not currently supported")}return Q}a(k,"prepareConditions");function K(Q,le){if(g.enforceExecutionOrder)return Q;for(let pe of Q)pe.conditions&&(pe.conditions=K(pe.conditions,pe.operator));return Q.length>1&&le!=="or"?Uae(Q,vg(Be)):Q}a(K,"orderConditions");function M(Q,le){return Array.isArray(Q)?Q.map(pe=>NS(pe,le)):NS(Q,le)}a(M,"coerceTypedValues");let q=g.operator;(N.length>0||q)&&(N=k(N,q));let O=typeof g.sort=="object"&&g.sort,G;if(O&&q!=="or"){let Q=O.attribute;if(Q==null)throw new ft.ClientError("Sort requires an attribute");if(B=N.find(le=>ad(le.attribute)===ad(Q)),!B){let le=Ji(S,Q);if(!le)throw(0,ft.handleHDBError)(new Error,`${Array.isArray(Q)?Q.join("."):Q} is not a defined attribute`,404);if(le.indexed)B={...O,comparator:"sort"},N.push(B);else if(N.length===0&&!g.allowFullScan)throw(0,ft.handleHDBError)(new Error,`${Array.isArray(Q)?Q.join("."):Q} is not indexed and not combined with any other conditions`,404)}B&&(B.descending=!!O.descending)}N=K(N,q),O&&(B&&N[0]===B?O.next&&(G={dbOrderedAttribute:O.attribute,attribute:O.next.attribute,descending:O.next.descending,next:O.next.next}):(B&&N.splice(N.indexOf(B),1),G=O));let V=g.select;if(N.length===0&&(N=[{attribute:t,comparator:"greater_than",value:!0}]),g.explain)return{conditions:N,operator:q,postOrdering:G,selectApplied:!!V};let D=A.useReadTxn(),me=vI(N,q,Be,D,g,T,(Q,le)=>dm(Q,V,T,D,le),v),ne=g.ensureLoaded!==!1,Ee=Be.transformEntryForSelect(V,T,D,v,ne,!0),j=Be.transformToOrderedSelect(me,V,G,T,D,Ee);return(g.offset||g.limit!==void 0)&&(j=j.slice(g.offset,g.limit!==void 0?(g.offset||0)+g.limit:void 0)),j.onDone=()=>{j.onDone=null,A.doneReadTxn()},j.selectApplied=!0,j.getColumns=()=>{if(V){let Q=[];for(let le of V)le==="*"?Q.push(...S.map(pe=>pe.name)):Q.push(le.name||le);return Q}return S.filter(Q=>!Q.computed&&!Q.relationship).map(Q=>Q.name)},j}static transformToOrderedSelect(g,T,A,N,C,B){let v=new h_;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(Q){let le=Q.next&&Ee(Q.next),pe=Q.descending;return N.sort=Q,(Pe,Xe)=>{let mt=Mn(Pe,Q.attribute,N),ye=Mn(Xe,Q.attribute,N),Se=pe?(0,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 Q;if(q)if(Q=q.next(),Q.done){if(G)return v.onDone&&v.onDone(),Q}else return{value:await B.call(this,Q.value)};k=[],D&&k.push(D);do if(Q=await O.next(),Q.done){if(G=!0,k.length)break;return v.onDone&&v.onDone(),Q}else{let le=Q.value;if(le?.then&&(le=await le),V){let pe=Mn(le,V,N);if(ne)ne=!1,me=pe;else if(pe!==me){me=pe,D=le;break}}k.push(le)}while(!0);return A.isGrouped,k.sort(j),q=k[Symbol.iterator](),Q=q.next(),Q.done?(v.onDone&&v.onDone(),Q):{value:await B.call(this,Q.value)}},return(){return v.onDone&&v.onDone(),O.return()},throw(){return v.onDone&&v.onDone(),O.throw()}}};let K=a(M=>{if(typeof T=="object"&&Array.isArray(M.attribute))for(let q=0;q<T.length;q++){let O=T[q],G;if(O.name===M.attribute[0]){for(G=O.sort||(O.sort={});G.next;)G=G.next;G.attribute=M.attribute.slice(1),G.descending=M.descending}else O===M.attribute[0]&&(T[q]=G={name:O,sort:{attribute:M.attribute.slice(1),descending:M.descending}})}M.next&&K(M.next)},"applySortingOnSelect");K(A)}else v.iterate=k=>k?.async&&g[Symbol.asyncIterator]?g[Symbol.asyncIterator]():g[Symbol.iterator](),v=v.map(function(k){try{let K=B.call(this,k);return typeof K?.catch=="function"?K.catch(M=>{throw M.partialObject={[t]:k.key},M}):K}catch(K){throw K.partialObject={[t]:k.key},K}});return v}static transformEntryForSelect(g,T,A,N,C,B){let v;C&&w&&!(typeof g=="string"?[g]:g)?.every(M=>{let q;return typeof M=="object"?q=M.name:q=M,r[q]||q===t})&&(v=!0);let k,K=a(function(M){let q;if(T?.transaction?.stale&&(T.transaction.stale=!1),M!=null){if(q=M.deref?M.deref():M.value,!q&&(M.key===void 0||M.deref)||M.metadataFlags&Gn){if(M.metadataFlags&Gn&&T.replicateFrom===!1&&B&&M.residencyId)return Sc.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=qo(M.key??M,M,T);if(O?.then)return O.then(K)}}if(q==null)return B?Sc.SKIP:q;if(g&&!(g[0]==="*"&&g.length===1)){let O,G=a((D,me)=>{let ne;typeof D=="object"?ne=D.name:ne=D;let Ee=Lt?.[ne],j;if(Ee){let Q=N?.[ne];if(Q)if(Q.hasMappings){let pe=Ee.from?q[Ee.from]:ad(M.key);j=Q.get(pe),j||(j=[])}else j=Q.fromRecord?.(q);else j=Ee(q,T,M,!0);let le=a(pe=>{if(Ee.directReturn)return me(pe,ne);if(pe&&typeof pe=="object"){let Pe=Ee.definition?.tableClass||Be;k||(k={});let Xe=k[ne]||(k[ne]=Pe.transformEntryForSelect(ne===D?null:D.select||(Array.isArray(D)?D:null),T,A,Q,C));if(Array.isArray(pe)){let mt=[],ye=Pe.transformToOrderedSelect(pe,D.select,typeof D.sort=="object"&&D.sort,T,A,Xe)[this.isSync?Symbol.iterator:Symbol.asyncIterator](),Se=a(_t=>{for(;!_t.done;){if(_t?.then)return _t.then(Se);mt.push(_t.value),_t=ye.next()}me(mt,ne)},"nextValue"),bt=Se(ye.next());bt&&(O||(O=[]),O.push(bt));return}else if(pe=Xe.call(this,pe),pe?.then){O||(O=[]),O.push(pe.then(mt=>me(mt,ne)));return}}me(pe,ne)},"handleResolvedValue");j?.then?(O||(O=[]),O.push(j.then(le))):le(j);return}else j=q[ne],j&&typeof j=="object"&&ne!==D&&(j=Be.transformEntryForSelect(D.select||D,T,A,null)({value:j}));me(j,ne)},"selectAttribute"),V;if(typeof g=="string")G(g,D=>{V=D});else if(Array.isArray(g))if(g.asArray)V=[],g.forEach((D,me)=>{D==="*"?g[me]=q:G(D,ne=>V[me]=ne)});else{V={};let D=g.forceNulls;for(let me of g)if(me==="*")for(let ne in q)V[ne]=q[ne];else G(me,(ne,Ee)=>{ne===void 0&&D&&(ne=null),V[Ee]=ne})}else throw new ft.ClientError("Invalid select"+g);return O?Promise.all(O).then(()=>V):V}return q},"transform");return K}async subscribe(g){if(!l)throw new Error("Can not subscribe to a table without an audit log");_||je({table:s,database:c,schemaDefined:u,attributes:S,audit:!0}),g||(g={});let T=!g.rawEvents,A=[],N=GI(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||Hq(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>Fq&&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||Hq(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>Fq&&await N.waitForDrain()===!1))return}}else{k&&!K&&(K=0);let M=this.#n?.localTime;if(M===OI&&(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&&Ho(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&&!_&&Nr(),Fe.default.trace?.(`Publishing message to id: ${g}, timestamp: ${new Date(B).toISOString()}`),y(g,v?.value??null,v,v?.version||B,0,!0,{user:C?.user,residencyId:A?.residencyId,expiresAt:C?.expiresAt,nodeId:A?.nodeId,tableToTrack:s},"message",!1,T)},"commit")})}validate(g,T){let A,N=a((C,B,v)=>{if(B.type&&C!=null)if(T&&C.__op__&&(C=C.value),B.properties){typeof C!="object"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an object${B.type?" ("+B.type+")":""}`);let k=B.properties;for(let K=0,M=k.length;K<M;K++){let q=k[K];if(q.relationship||q.computed){g.hasOwnProperty(q.name)&&(A||(A=[])).push(`Computed property ${v}.${q.name} may not be directly assigned a value`);continue}let O=N(C[q.name],q,v+"."+q.name);O&&(C[q.name]=O)}if(B.sealed&&C!=null&&typeof C=="object")for(let K in C)k.find(M=>M.name===K)||(A||(A=[])).push(`Property ${K} is not allowed within object in property ${v}`)}else switch(B.type){case"Int":(typeof C!="number"||C>>0!==C)&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an integer (from -2147483648 to 2147483647)`);break;case"Long":(typeof C!="number"||!(Math.floor(C)===C&&Math.abs(C)<=9007199254740992))&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be an integer (from -9007199254740992 to 9007199254740992)`);break;case"Float":typeof C!="number"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a number`);break;case"ID":typeof C=="string"||C?.length>0&&C.every?.(k=>typeof k=="string")||(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a string, or an array of strings`);break;case"String":typeof C!="string"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a string`);break;case"Boolean":typeof C!="boolean"&&(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a boolean`);break;case"Date":if(!(C instanceof Date)){if(typeof C=="string"||typeof C=="number")return new Date(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a Date`)}break;case"BigInt":if(typeof C!="bigint"){if(typeof C=="string"||typeof C=="number")return BigInt(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a bigint`)}break;case"Bytes":if(!(C instanceof Uint8Array)){if(typeof C=="string")return Buffer.from(C);(A||(A=[])).push(`Value ${Ks(C)} in property ${v} must be a Buffer or Uint8Array`)}break;case"Blob":if(!(C instanceof 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");xae(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=XN.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 gc(),!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 gc();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)"),Wa=!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(Gq)):O.filter(Gq):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=Ji(S,g);if(!A){console.error(`The attribute "${g}" does not exist in the table "${s}"`);return}if(!A.computed){console.error(`The attribute "${g}" is not defined as computed in the table "${s}"`);return}this.userResolvers[g]=T}static async deleteHistory(g=0,T=!1){let A;for(let{key:N,value:C}of l.getRange({start:0,end:g}))await gc(),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 gc(),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 gc();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 gc();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 __=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),J&&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)&&Uq){let V=O.concat(q).map(D=>({key:D,value:W}));C.prefetch(V,kq)}for(let V=0,D=O.length;V<D;V++)C.remove(O[V],W)}else q?.length>0&&Uq&&C.prefetch(q.map(G=>({key:G,value:W})),kq);if(q)for(let G=0,V=q.length;G<V;G++)C.put(q[G],W)}return A}a(Xc,"updateIndices");function Ho(W){switch(typeof W){case"number":return!0;case"string":if(W.length<659)return!0;if(W.length>Bq)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,$ae,0)>Bq)throw new Error("Primary key size is too large: "+W.length);return!0}a(Ho,"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)&&(Vq.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>E_&&(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 Go(W,g){let T=g?.checkPermission;if(typeof T!="object"){if(!W?.role)return;T=W.role.permission}if(T.super_user)return Vae;let A=T[c],N,C=A?.tables;if(C)return C[s];if(c==="data"&&(N=T[s])&&!N.tables)return N}a(Go,"getTablePermissions");function qo(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(qo,"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 Yo,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 Sc.SKIP;for(let O=0;O<C;O++)if(!v?.includes(O)&&!N[O](q,K))return Sc.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 Sc.SKIP;for(let q=0;q<C;q++){let G=N[q].idFilter;if(G){if(!G(M))return Sc.SKIP;v||(v=[]),v.push(q)}}return Zc(M,T,B,!1,k)});return Array.isArray(W)&&(K=K.filter(M=>M!==Sc.SKIP)),K.hasEntries=!0,K}return W}a(dm,"transformToEntries");function $o(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($o,"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)},Gae)});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 __(W,k,g),ne=A&Gn;let j=k.lastModified||ne&&N;j||(j=(0,Xp.getNextMonotonicTime)()),me=ne||j>N||!v;let Q=performance.now()-V;if(qe(Q,"cache-resolution",s,null,"success"),K&&Qp(K,"Server-Timing",`cache-resolve;dur=${Q.toFixed(2)}`,!0),G.timestamp=j,h&&k.expiresAt==null&&(k.expiresAt=Date.now()+h),D){if(typeof D!="object")throw new Error("Only objects can be cached and stored in tables");if(D.status>0&&D.headers)if(D.status>=300)if(D.status===304)D=v,j=N;else throw new ft.ServerError(D.body||"Error from source",D.status);else D=D.body;typeof D.toJSON=="function"&&(D=D.toJSON()),t&&D[t]!==W&&(D[t]=W)}O=!0,M({key:W,version:j,value:D})}catch(j){j.message+=` while resolving record ${W} for ${s}`,v&&((j.code==="ECONNRESET"||j.code==="ECONNREFUSED"||j.code==="EAI_AGAIN")&&!T?.mustRevalidate||T?.staleIfError&&(j.statusCode===500||j.statusCode===502||j.statusCode===503||j.statusCode===504))?(M({key:W,version:N,value:v}),Fe.default.trace?.(j.message,"(returned stale record)")):q(j);let Q=performance.now()-V;qe(Q,"cache-resolution",s,null,"fail"),K&&Qp(K,"Server-Timing",`cache-resolve;dur=${Q.toFixed(2)}`,!0),k.transaction.abort();return}if(T?.noCacheStore||k.noCacheStore){k.transaction.abort();return}Rt(k).addWrite({key:W,store:i,entry:g,nodeName:"source",before:rl(D),commit:a((j,Q)=>{if(Q?.version===N)if(Xc(W,v,D),D){De.put?.(k,W,D),Q&&(T.previousResidency=Be.getResidencyRecord(Q.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,Q,j,pe?Gn:0,_&&(me||pe)||null,{user:k?.user,expiresAt:k.expiresAt,residencyId:Pe,tableToTrack:s},"put",!!ne,le)}else Q&&(De.delete?.(k,W),Fe.default.trace?.(`Deleting resolved record from source with id: ${W}, timestamp: ${new Date(j).toISOString()}`),_||R?y(W,null,Q,j,0,_&&me||null,{user:k?.user,tableToTrack:s},"delete",!!ne):Rl(i,Q,N))},"commit")})}),()=>{i.unlock(W,N)},G=>{i.unlock(W,N),O&&Fe.default.error?.("Error committing cache update",G)})})}a(fm,"getFromSource");function za(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(za,"checkContextPermissions");function Nr(W){let g=!1;if(W&&(W-$e>1&&(g=!0),$e=W),!(Je===ns&&!g)&&(ns=Je,(0,Vl.getWorkerIndex)()===(0,Vl.getWorkerCount)()-1))return Pt&&clearTimeout(Pt),Je?new Promise(T=>{let A=new Date;A.setMonth(0),A.setDate(1),A.setHours(0),A.setMinutes(0),A.setSeconds(0);let N=Je/(1+$e),C=g?Date.now():Math.ceil((Date.now()-A.getTime())/N)*N+A.getTime(),B=a(v=>{Fe.default.trace?.(`Scheduled next cleanup scan at ${new Date(v)}`),Pt=setTimeout(()=>H=H.then(async()=>{if(B(Math.max(v+Je,Date.now())),i.rootStore.status!=="open"){clearTimeout(Pt);return}let k=50,K=new Array(k),M=0,q=Math.pow($e,8)*(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,Q=>{Q.size&&(j+=Q.size)}),Fe.default.trace?.(`shouldEvict adjusted ${Ee} ${j}, ${Ee*(V-D)/j} < ${q}`),Ee*(V-D)/j<q}return!1}a(G,"shouldEvict");try{let V=0;for(let D of i.getRange({start:!1,snapshot:!1,versions:!0,lazy:!0})){let{key:me,value:ne,version:Ee,expiresAt:j,metadataFlags:Q}=D,le;ne===null&&!_&&Ee+Hae<Date.now()?le=Rl(i,D,Ee):j!=null&&G(j,Ee,Q,ne)&&(le=Be.evict(me,ne,Ee),V++),le&&(await K[M],K[M]=le.catch(pe=>{Fe.default.error?.("Cleanup error",pe)}),++M>=k&&(M=0)),await gc()}Fe.default.debug?.(`Finished cleanup scan for ${s}, evicted ${V} entries`)}catch(V){Fe.default.warn?.(`Error in cleanup scan for ${s}:`,V)}T(void 0),$e=0}),Math.min(v-Date.now(),2147483647)).unref()},"startNextTimer");B(C)}):void 0}a(Nr,"scheduleCleanup");function Bu(){F=l?.addDeleteRemovalCallback(n,i,(W,g)=>{i.remove(W,g)})}a(Bu,"addDeleteRemoval");function mm(){(0,Vl.getWorkerIndex)()===0&&setInterval(async()=>{if(!Jc){Jc=!0;try{let W=J.name,g=r[W];if(!g)throw new Error(`expiresAt attribute ${J} must be indexed`);for(let T of g.getRange({start:!0,values:!1,end:Date.now(),snapshot:!1})){for(let A of g.getValues(T)){let N=i.getEntry(A);N?.value?N.value[W]<Date.now()&&Be.evict(A,N.value,N.version):i.ifVersion(A,N?.version,()=>g.remove(T,A))}await gc()}}catch(W){Fe.default.error?.("Error in evicting old records",W)}finally{Jc=!1}}},kae).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=sI(W,i.rootStore);if(T){let A=g;return A?async()=>{await A(),await T()}:()=>T()}return g}a(rl,"preCommitBlobsForRecordBefore")}function JN(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 kq(){}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;Kae.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 Hq(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 Gq(e){return e!=null}function Ks(e){try{return JSON.stringify(e)}catch{return e}}function Yae(e){let t=process.pid;return e.env.readerList().slice(1).some(r=>+r.match(/\d+/)?.[0]!=t)}var Sc,Xp,qq,$q,Pd,ft,Zp,eh,Fe,Kl,Vl,CS,XN,Vq,Uae,xae,Bae,Fae,kae,Hae,Uq,Gae,xq,qae,Gn,bl,$ae,Bq,Fq,Vae,Kae,gc,xg=ie(()=>{$();Sc=require("lmdb"),Xp=b(Us()),qq=b(require("lodash")),$q=b(xm());Xi();Fm();Pd=b(fe());qI();ft=b(ge()),Zp=b(oa()),eh=b(fs());Oe();Ug();Fe=b(hr());jw();tc();Kl=require("ordered-binary"),Vl=b(it());Yi();CS=b(ue());gl();Hn();rg();Jp();XN=b(require("node:fs"));cs();Tg();Vq=b(ee());QN();({sortBy:Uae}=qq.default),{validateAttribute:xae}=$q.default,Bae=new Uint8Array(9);Bae[8]=192;Fae=1/0,kae=6e4,Hae=864e5;Pd.initSync();Uq=Pd.get(U.STORAGE_PREFETCHWRITES),Gae=1e4,xq=1,qae=2,Gn=1,bl=8,$ae=Buffer.allocUnsafeSlow(8192),Bq=1978,Fq=100,Vae={read:!0,insert:!0,update:!0,delete:!0,isSuperUser:!0};a(OS,"makeTable");a(JN,"attributesAsObject");a(kq,"noop");Kae=/[+-][0-9]{2}:[0-9]{2}|[a-zA-Z]$/;a(NS,"coerceType");a(wS,"rejectNaN");a(Hq,"isDescendantId");gc=a(()=>new Promise(setImmediate),"rest");a(Vs,"when");a(Gq,"exists");a(Ks,"stringify");a(Yae,"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 Yq=ie(()=>{a(PS,"euclideanDistance");a(LS,"cosineDistance")});var Wq,jq,Dd,lo,Ld,Wae,jae,DS,zq=ie(()=>{Yq();Wq=require("msgpackr"),jq=b(hr()),Dd=b(ge()),lo=(0,jq.loggerWithTag)("HNSW"),Ld=Symbol.for("entryPoint"),Wae=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=Wq.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"?[Wae,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);lo.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);lo.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&&lo.info?.("should not have zero connections for",l);let R=h[E];for(let S=0;S<_.length;S++){let{id:y,distance:I,node:w}=_[S];if(y===i)continue;let L=[];if(this.optimizeRouting){let X=!1,J=w[E],F=1+this.optimizeRouting*(1+.5*S/this.M);for(let de=0;de<J?.length;de++){let{id:oe,distance:ae}=J[de],he=1+this.optimizeRouting*(1+.5*de/this.M);for(let Te=0;Te<R.length;Te++){let{id:De,distance:Je}=R[Te];if(De===oe){I*F>Je+ae?X=!0:ae*he>I+Je&&(L.push({fromId:De,toId:y}),L.push({fromId:y,toId:De}));break}}if(X)break}if(X)continue}else if(S>=(E>0?this.M:this.M<<1))continue;R.push({id:y,distance:I});for(let{fromId:X,toId:J}of L){let F=d(X);F||(F=d(X,this.indexStore.get(X)));for(let de=0;de<F[E].length;de++)if(F[E][de].id===J){Object.isFrozen(F[E])&&(F[E]=F[E].slice()),F[E].splice(de,1);break}}let H=c[E],Z=H?.find(({id:X})=>X===y);if(Z){let X=H?.indexOf(Z);H.copied||(H=[...H],H.copied=!0,c[E]=H),H.splice(X,1)}else this.addConnection(y,d(y,w),i,E,I,d)}}this.indexStore.put(i,{vector:r,level:m,primaryKey:t,...h})}else{if(l===i){let f=c.level??0;for(let m=f;m>=0&&(l=c[m]?.[0]?.id,l===void 0);m--);if(l===void 0){let m=-1;for(let{key:p,value:h}of this.indexStore.getRange({start:0,end:1/0}))if(h.level>m){if(l=p,h.level===f)break;m=h.level}}if(l===void 0)this.indexStore.remove(Ld);else{if(typeof l!="number")throw new Error("Invalid nodeId: "+l);lo.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&&(lo.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){lo.info?.("could not find neighbor node",o);continue}o[n]?.find(({id:l})=>l==t)||lo.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)){lo.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&&lo.info?.("should not remove last connection",t,n))}}r[s].find(({id:l})=>l===n)?lo.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 ZN,Qq=ie(()=>{zq();ZN={HNSW:DS}});var Et={};Re(Et,{NON_REPLICATING_SYSTEM_TABLES:()=>vS,database:()=>gd,databaseEnvs:()=>fa,databaseEventsEmitter:()=>Rn,databases:()=>xe,dropDatabase:()=>Zw,dropTableMeta:()=>ece,getDatabases:()=>dt,getDefaultCompression:()=>HS,getTables:()=>Qae,onRemovedDB:()=>ih,onRemovedTable:()=>tce,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 Qae(){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")&&Lr.trace(`defined tables ${Array.from(n.keys())}`);for(let i in s)n.has(i)||(Lr.trace(`delete table class ${i}`),delete s[i])}else if(delete xe[r],r==="data"){for(let s in yn)delete yn[s];delete yn[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 fa)e.needsDeletion=!0;dt();for(let[e,t]of fa)if(t.needsDeletion&&!e.endsWith("system.mdb")){t.close(),fa.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=rC,n,s){let i=new eC.default(e,!1);try{let o=fa.get(e);o?o.needsDeletion=!1:(o=(0,xd.open)(i),fa.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=r$(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(!_){Lr.warn(`Unable to find a primary key attribute on table ${p}, with attributes: ${JSON.stringify(E)}`);continue}}let R=d[p],S={},y=[],I,w,L=typeof _.audit=="boolean"?_.audit:(0,nr.get)(U.LOGGING_AUDITLOG),H=_.trackDeletes,Z=_.expiration,X=_.eviction,J=_.sealed,F=_.splitSegments,de=_.replicate;if(R)S=R.indices,y=R.attributes,R.schemaVersion++;else{I=_.tableId,I?I>=(l.get(vd)||0)&&(l.putSync(vd,I+1),Lr.info(`Updating next table id (it was out of sync) to ${I+1} for ${p}`)):(_.tableId=I=l.get(vd),I||(I=1),Lr.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)||t$;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=s$(ae.key,o,ae);S[ae.name]=Te,S[ae.name].indexNulls=ae.indexNulls}let he=y.find(Te=>Te.name===ae.name);he?y.splice(y.indexOf(he),1,ae):y.push(ae),oe=!0}}catch(he){Lr.error("Error trying to update attribute",ae,y,S,he)}}for(let ae of y)if(!E.find(Te=>Te.name===ae.name)){if(ae.is_hash_attribute){Lr.error("Unable to remove existing primary key attribute",ae);continue}ae.indexed&&(y.splice(y.indexOf(ae),1),oe=!0)}R?oe&&(R.schemaVersion++,R.updatedAttributes()):(R=n$(d,p,OS({primaryStore:w,auditStore:u,audit:L,sealed:J,splitSegments:F,replicate:de,expirationMS:Z&&Z*1e3,evictionMS:X&&X*1e3,trackDeletes:H,tableName:p,tableId:I,primaryKey:_.name,databasePath:s?r+"/"+p:r,databaseName:r,indices:S,attributes:E,schemaDefined:_.schemaDefined,dbisDB:l})),R.schemaVersion=1,Rn.emit("updateTable",R))}return o}catch(o){throw o.message+=` opening database ${e}`,o}}function r$(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 n$(e,t,r){return e[t]=r,r}function gd({database:e,table:t}){e||(e=rC),dt(),r$(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=fa.get(i);if(!o||o.status==="closed"){let c=new eC.default(i,!1);o=(0,xd.open)(c),fa.set(i,o)}return o.auditStore||(o.auditStore=Eg(o)),o}async function Zw(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,fa.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 nI(r)}function s$(e,t,r){let n=r.is_hash_attribute||r.indexed.type&&ZN[r.indexed.type]?.useObjectStore,s=new sh(!n,n),i=t.openDB(e,s);if(r.indexed.type){let o=ZN[r.indexed.type];o?i.customIndex=new o(i,r.indexed):Lr.error(`The indexing type '${r.indexed.type}' is unknown`)}return i}function je(e){let{table:t,database:r,expiration:n,eviction:s,scanInterval:i,attributes:o,audit:c,sealed:l,splitSegments:u,replicate:d,trackDeletes:f,schemaDefined:m,origin:p}=e;r||(r=rC);let h=gd({database:r,table:t}),E=xe[r];Lr.trace(`Defining ${t} in ${r}`);let _=E?.[t];if(h.status==="closed")throw new Error(`Can not use a closed data store for ${t}`);let R,S,y;m==null&&(m=!0);let I=new 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]),Lr.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),J(),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),Lr.trace(`Assigning new table id ${ae.tableId} for ${t}`),ae.tableId||(ae.tableId=1),y.put(vd,ae.tableId+1),S.tableId=ae.tableId,_=n$(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)&&(J(),w=!0,he||y.remove(F),Te)){let De=_.indices[oe];De&&Z.push(De)}}let X=[];try{for(let F of o||[]){if((F.relationship||F.computed)&&(w=!0,F.relationship))continue;let de=t+"/"+(F.name||"");Object.defineProperty(F,"key",{value:de,configurable:!0});let oe=y.get(de);if(F.isPrimaryKey){if(oe=oe||y.get(de=t+"/")||{},c!==void 0&&c!==_.audit||l!==void 0&&l!==_.sealed||d!==void 0&&d!==_.replicate||(+n||void 0)!==(+oe.expiration||void 0)||(+s||void 0)!==(+oe.eviction||void 0)||F.type!==oe.type){let he={...oe};typeof c=="boolean"&&(c&&_.enableAuditing(c),he.audit=c),n&&(he.expiration=+n),s&&(he.eviction=+s),l!==void 0&&(he.sealed=l),d!==void 0&&(he.replicate=d),F.type&&(he.type=F.type),w=!0,J(),y.put(de,he)}continue}oe?.attribute&&!oe.name&&(oe.indexed=!0);let ae=!oe||oe.type!==F.type||JSON.stringify(oe.indexed)!==JSON.stringify(F.indexed)||oe.nullable!==F.nullable||oe.version!==F.version||oe.enumerable!==F.enumerable||JSON.stringify(oe.properties)!==JSON.stringify(F.properties)||JSON.stringify(oe.elements)!==JSON.stringify(F.elements);if(F.indexed){let he=s$(de,h,F);(ae||oe.indexingPID&&oe.indexingPID!==process.pid||oe.restartNumber<nh.workerData?.restartNumber)&&(w=!0,J(),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,J(),y.put(de,F))}}finally{L&&L()}return w&&(_.schemaVersion++,_.updatedAttributes()),Lr.trace(`${t} table loading, running index`),X.length>0||Z.length>0?_.indexingOperation=Zae(_,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}),Lr.trace(`${t} table loaded`),_;function J(){L||h.transactionSync(()=>({then(F){L=F}}))}a(J,"startTxn")}async function Zae(e,t,r){try{Lr.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,Xq.getIndexedValues)(S,_.indexNulls);if(y)for(let I=0,w=y.length;I<w;I++)_.put(y[I],d)}catch(R){i[E]||(i[E]=!0,Lr.error(`Error indexing attribute ${E}`,R))}}}),n.then(()=>u--,p=>{u--,Lr.error(p)}),nh.workerData&&nh.workerData.restartNumber!==e$.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>Jae?await n:u>Xae&&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)),Lr.info(`Finished indexing ${e.tableName} attributes`,t)}catch(n){Lr.error("Error in indexing",n)}}function ece({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 tce(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)||t$,n={startingOffset:32};return t&&(n.dictionary=rh.readFileSync(t)),r&&(n.threshold=r),e&&n}var Jq,nr,MS,xd,Yt,Ts,Md,eC,rh,tC,Xq,US,xS,nh,Zq,e$,FS,zae,Lr,rC,kS,t$,vS,Rn,yn,xe,vd,BS,fa,Ud,Jae,Xae,Oe=ie(()=>{Jq=require("node:events"),nr=b(fe()),MS=b(Cr()),xd=require("lmdb"),Yt=require("path"),Ts=require("fs"),Md=b(tr());xg();eC=b(hp());$();rh=b(require("fs-extra")),tC=b(fi()),Xq=b(Us()),US=b(oa()),xS=b(fs()),nh=require("worker_threads"),Zq=b(ee()),e$=b(it());Yi();gl();cs();Qq();FS=b(pp()),{forComponent:zae}=Zq.default;a(sh,"OpenDBIObject");Lr=zae("storage"),rC="data",kS=Symbol("defined-tables"),t$=((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 Jq.EventEmitter,yn=Object.create(null),xe=Object.create(null);(0,tC._assignPackageExport)("databases",xe);(0,tC._assignPackageExport)("tables",yn);vd=Symbol.for("next-table-id"),fa=new Map;a(Qae,"getTables");a(dt,"getDatabases");a(Bd,"resetDatabases");a(th,"readMetaDb");a(r$,"ensureDB");a(n$,"setTable");a(gd,"database");a(Zw,"dropDatabase");a(s$,"openIndex");a(je,"table");Jae=1e3,Xae=10;a(Zae,"runIndexing");a(ece,"dropTableMeta");a(Yl,"onUpdatedTable");a(tce,"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 o$(e){return i$.validateBySchema(e,ice)}var ah,i$,rce,nce,sce,ice,a$=ie(()=>{ah=b(require("joi")),i$=b(ht());$S();rce=qS,nce=Object.entries(GS).reduce((e,[t,r])=>(r.allowedValues&&(e[t]=`Status "${t}" only accepts these values: ${r.allowedValues.join(", ")}`),e),{}),sce=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":nce[t]})}))}),e.required()},"createStatusValidationSchema"),ice=ah.default.object({id:ah.default.string().valid(...rce).required(),status:sce()});a(o$,"validateStatus")});var aC={};Re(aC,{DEFAULT_STATUS_ID:()=>oh,STATUS_IDS:()=>qS,Status:()=>ma,clear:()=>sC,get:()=>iC,set:()=>oC});function lh(){return nC||(nC=je({database:"system",table:"hdb_status",replicate:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"status"},{name:"__createdtime__"},{name:"__updatedtime__"}]})),nC}function sC({id:e}){return ch.debug?.("clearStatus",e),lh().delete(e)}async function ace(){ch.debug?.("getAllStatus");let e=lh().get({}),t=await Kp.query.allThreads(),r=Array.from(t.entries()).map(([s,i])=>({name:s,...i})),n=cC();return{systemStatus:e,componentStatus:r,restartRequired:n}}function iC({id:e}){return e?(ch.debug?.("getStatus",e),lh().get(e)):(ch.debug?.("getStatus","all"),ace())}function oC({status:e,id:t=oh}){let r=o$({status:e,id:t});if(r)throw(0,VS.handleHDBError)(r,r.message,oce.BAD_REQUEST);return ch.debug?.("setStatus",t,e),lh().put(t,{status:e})}var VS,c$,oce,nC,ma,ch,uh=ie(()=>{Oe();VS=b(ge()),c$=b(hr());a$();$S();Yp();KS();$S();({HTTP_STATUS_CODES:oce}=VS.hdbErrors);a(lh,"getStatusTable");ma={get primaryStore(){return lh().primaryStore}},ch=(0,c$.loggerWithTag)("status");a(sC,"clearStatus");a(ace,"getAllStatus");a(iC,"getStatus");a(oC,"setStatus")});var l$={};Re(l$,{requestRestart:()=>dC,resetRestartNeeded:()=>cce,restartNeeded:()=>cC});function uC(){lC||(lC=ma.primaryStore.getUserSharedBuffer("restart-needed",new ArrayBuffer(1)),YS=new Uint8Array(lC))}function dC(){uC(),YS[0]=1}function cC(){return uC(),YS[0]===1}function cce(){uC(),YS[0]=0}var lC,YS,KS=ie(()=>{uh();a(uC,"ensureInitialized");a(dC,"requestRestart");a(cC,"restartNeeded");a(cce,"resetRestartNeeded")});var pC={};Re(pC,{loadGQLSchema:()=>dce,start:()=>mC,startOnMainThread:()=>uce});function mC({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 J of H.arguments||[])X[J.name.value]=J.value.value;L.indexed=X}else if(Z==="computed"){for(let X of H.arguments||[])if(X.name.value==="from"){let J=X.value.value;L.computed={from:p(J,X,I)},L.version==null&&(L.version=J)}else X.name.value==="version"&&(L.version=X.value.value);L.computed=L.computed||!0}else if(Z==="relationship"){let X={};for(let J of H.arguments)X[J.name.value]=J.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 J of H.arguments)J.name.value==="role"&&X.push(J.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):lce.includes(h.type)||(0,d$.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,fC.dirname)(n),h.tableClass):i.set((0,fC.dirname)(n)+"/"+(h.export.name||h.type),h.tableClass,h.export));function p(h,E,_){return new u$.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 fC,u$,d$,lce,uce,dce,f$=ie(()=>{fC=require("path"),u$=require("node:vm");Oe();d$=b(it());cc();lce=["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(mC,"start");uce=mC,dce=a(e=>mC({ensureTable:je}).handleFile(e,null,null,new ld),"loadGQLSchema")});var _C={};Re(_C,{start:()=>Tce});function fce(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 m$(e){if(typeof e!="object"||e===null)throw new uo("Request body must be an object.");if(!("query"in e))throw new uo("Request body must contain a `query` field.");if(typeof e.query!="string")throw new uo("Request body `query` field must be a string.");if("variables"in e&&(typeof e.variables!="object"||e.variables===null))throw new uo("Request body `variables` field must be an object.");if("operationName"in e&&typeof e.operationName!="string")throw new uo("Request body `operationName` field must be a string.")}function EC(e){return parseInt(e.value,10)}function h$(e){return parseFloat(e.value)}function E$(e,t,r){let n=r.get(e.name.value);return _$(n)?g$(n,t):{attribute:t,value:n}}function _$(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function g$(e,t){return t=typeof t=="string"?[t]:t,Object.entries(e).flatMap(([r,n])=>(t=[...t,r],_$(n)?g$(n,t):{attribute:t,value:n}))}function mce(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:EC(e.value)};case Ge.Kind.FLOAT:return{attribute:t,value:h$(e.value)};case Ge.Kind.BOOLEAN:case Ge.Kind.STRING:return{attribute:t,value:e.value.value};case Ge.Kind.VARIABLE:return E$(e.value,t,r);case Ge.Kind.OBJECT:return S$(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 S$(e,t,r){return e.fields.flatMap(n=>mce(n,t,r))}function pce(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:EC(e.value)};case Ge.Kind.FLOAT:return{attribute:e.name.value,value:h$(e.value)};case Ge.Kind.BOOLEAN:case Ge.Kind.STRING:return{attribute:e.name.value,value:e.value.value};case Ge.Kind.VARIABLE:return E$(e.value,e.name.value,t);case Ge.Kind.OBJECT:return S$(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 hce(e,t){return e.flatMap(r=>pce(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 T$(e,t){return WS(e,t).map(r=>r.selectionSet?.selections.length>0?{name:r.name.value,select:T$(r.selectionSet,t)}:r.name.value)}async function Ece(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:T$(e.selectionSet,r),conditions:hce(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 y$(e){switch(e.kind){case Ge.Kind.NULL:return null;case Ge.Kind.INT:return EC(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]:y$(r.value),...t}),{});case Ge.Kind.LIST:case Ge.Kind.ENUM:default:throw new Yr(`Value type, ${e.kind}, is not supported.`)}}function _ce(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=y$(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 gce(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=_ce(e.variableDefinitions,t),i=await Promise.all(WS(e.selectionSet,r).map(c=>Ece(c,s,r,n))),o={data:{}};for(let[c,l]of i)o.data[c]=l;return o}async function p$({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(fce(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 gce(c,t,o,n);return{status:200,headers:{"Content-Type":"application/graphql-response+json; charset=utf-8"},body:JSON.stringify(l)}}async function Sce(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 m$(r),p$(r,e)}case"POST":{let r=await Qo(e.headers.get("content-type"),!0)(e._nodeRequest);return m$(r),p$(r,e)}default:throw new uo("Method Not Allowed",405,{Allow:"GET, POST"})}}function Tce(e){e.server.http(async(t,r)=>{if(!t.url.startsWith("/graphql"))return r(t);try{return await Sce(t)}catch(n){hC.default.error(n);let s=t.headers.get("accept")??"application/graphql-response+json";switch(s){case"application/json":{if(n instanceof uo)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:hC.default.info(`Unsupported accept header, ${s}, defaulting to application/graphql-response+json`);case"application/graphql-response+json":{if(n instanceof uo)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,hC,Yr,uo,R$=ie(()=>{Ge=b(require("graphql"));Jo();cc();hC=b(ee());a(fce,"assertExecutableDefinitionNode");a(m$,"assertRequestParams");a(EC,"processIntValueNode");a(h$,"processFloatValueNode");a(E$,"processVariableNode");a(_$,"isObject");a(g$,"transformObjectIntoQueryCondition");a(mce,"processObjectFieldNode");a(S$,"processObjectValueNode");a(pce,"processArgumentNode");a(hce,"buildConditionsQuery");a(WS,"fillInFragments");a(T$,"buildSelectQuery");a(Ece,"processFieldNode");a(y$,"processConstValueNode");a(_ce,"resolveVariables");a(gce,"executeOperation");a(p$,"resolver");Yr=class extends Error{static{a(this,"GraphQLQueryingError")}},uo=class extends Error{static{a(this,"HTTPError")}statusCode;headers;constructor(t,r=400,n={}){super(t),this.statusCode=r,this.headers=n}};a(Sce,"graphqlQueryingHandler");a(Tce,"start")});var C$=x((QUe,N$)=>{var Fd=require("validate.js"),A$=ht(),kd=($(),P(z)),{handleHDBError:yce,hdbErrors:Rce}=ge(),{HDB_ERROR_MSGS:cr,HTTP_STATUS_CODES:bce}=Rce,gC=a(()=>({role:{presence:!0,format:"[\\w\\-\\_]+"},id:{presence:!0,format:"[\\w\\-\\_]+"},permission:{presence:!0}}),"constraintsTemplate"),Ace={STRUCTURE_USER:"structure_user"},b$=Object.values(kd.ROLE_TYPES_ENUM),Ice="attribute_permissions",wce="attribute_name",{PERMS_CRUD_ENUM:Hd}=kd,Nce=[Ice,...Object.values(Hd)],I$=[Hd.READ,Hd.INSERT,Hd.UPDATE],Cce=[wce,...I$];function Oce(e){let t=gC();return t.role.presence=!0,t.id.presence=!1,t.permission.presence=!0,w$(e,t)}a(Oce,"addRoleValidation");function Pce(e){let t=gC();return t.role.presence=!1,t.id.presence=!0,t.permission.presence=!0,w$(e,t)}a(Pce,"alterRoleValidation");function Lce(e){let t=gC();return t.role.presence=!1,t.id.presence=!0,t.permission.presence=!1,A$.validateObject(e,t)}a(Lce,"dropRoleValidation");var Dce=["operation","role","id","permission","hdb_user","access"];function w$(e,t){let r={main_permissions:[],schema_permissions:{}},n=Object.keys(e),s=[];for(let o=0,c=n.length;o<c;o++)Dce.includes(n[o])||s.push(n[o]);s.length>0&&Sr(cr.INVALID_ROLE_JSON_KEYS(s),r);let i=A$.validateObject(e,t);if(i&&i.message.split(",").forEach(o=>{Sr(o,r)}),e.permission){let o=vce(e);o&&Sr(o,r),b$.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(b$.indexOf(o)<0){if(o===Ace.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=>{Nce.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=>{!Cce.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}I$.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 Mce(r)}a(w$,"customValidate");N$.exports={addRoleValidation:Oce,alterRoleValidation:Pce,dropRoleValidation:Lce};function vce(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(vce,"validateNoSUPerms");function Mce(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 yce(new Error,n,bce.BAD_REQUEST)}else return null}a(Mce,"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((XUe,D$)=>{"use strict";var O$=Es(),P$=Wn(),Uce=Hl(),TC=C$(),yC=oa(),xce=require("util"),jS=($(),P(z)),Bce=ue(),RC=P$.searchByValue,Fce=P$.searchByHash,kce=xce.promisify(Uce.delete),Hce=to(),Gce=Np(),{hdbErrors:qce,handleHDBError:Wl}=ge(),{HDB_ERROR_MSGS:L$,HTTP_STATUS_CODES:dh}=qce,{UserEventMsg:bC}=fs();D$.exports={addRole:$ce,alterRole:Vce,dropRole:Kce,listRoles:Yce};function SC(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(SC,"scrubRoleDetails");async function $ce(e){let t=TC.addRoleValidation(e);if(t)throw t;e=SC(e);let r={schema:"system",table:"hdb_role",attribute:"role",value:e.role,hash_attribute:"id",get_attributes:["*"]},n;try{n=Array.from(await RC(r)||[])}catch(i){throw Wl(i)}if(n&&n.length>0)throw Wl(new Error,L$.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 O$.insert(s),yC.signalUserChange(new bC(process.pid)),e=SC(e),e}a($ce,"addRole");async function Vce(e){let t=TC.alterRoleValidation(e);if(t)throw t;e=SC(e);let r={operation:"update",schema:"system",table:"hdb_role",records:[e]},n;try{n=await O$.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 yC.signalUserChange(new bC(process.pid)),e}a(Vce,"alterRole");async function Kce(e){let t=TC.dropRoleValidation(e);if(t)throw Wl(new Error,t,dh.BAD_REQUEST,void 0,void 0,!0);let r=new Gce(jS.SYSTEM_SCHEMA_NAME,jS.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME,[e.id],["role"]),n=Array.from(await Fce(r));if(n.length===0)throw Wl(new Error,L$.ROLE_NOT_FOUND,dh.NOT_FOUND,void 0,void 0,!0);let s=new Hce(jS.SYSTEM_SCHEMA_NAME,jS.SYSTEM_TABLE_NAMES.USER_TABLE_NAME,"role",e.id,void 0,["username","active"]),i=Array.from(await RC(s)),o=!1;if(Bce.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 kce(c),yC.signalUserChange(new bC(process.pid)),`${n[0].role} successfully deleted`}a(Kce,"dropRole");async function Yce(){return RC({table:"hdb_role",schema:"system",hash_attribute:"id",attribute:"id",value:"*",get_attributes:["*"]})}a(Yce,"listRoles")});var AC={};Re(AC,{start:()=>U$,startOnMainThread:()=>zce});function U$({ensureTable:e}){return{handleFile:t,setupFile:t};async function t(r){let n=(0,v$.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(Wce.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,M$.isEqual)(i,e)?void 0:(e.id=r.id,(0,zS.alterRole)(e))}return(0,zS.addRole)(e)}var zS,v$,M$,Wce,zce,x$=ie(()=>{Oe();zS=b(fh()),v$=require("yaml"),M$=require("lodash"),Wce=["super_user","cluster_user","structure_user"];a(U$,"start");a(jce,"ensureRole");zce=U$});async function QS(e){let t=(0,k$.pathToFileURL)(e).toString();if(Qce)return mh||(mh=Jce(Zce)),(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 Jce(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:Xce,...e()},{},{name:"h-dapp",resolveHook(r,n){return r==="harperdb"?"harperdb":(r=new URL(r,n).toString(),(0,F$.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,B$.readFile)(new URL(r),{encoding:"utf-8"});return new t(n,r)},"importHook")}),mh}function Xce(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 Zce(){return{Resource:Vt,tables:yn}}var B$,F$,k$,Qce,mh,IC=ie(()=>{Xi();Oe();B$=require("fs/promises"),F$=require("path"),k$=require("url"),Qce=!1;a(QS,"secureImport");a(Jce,"getCompartment");a(Xce,"secureOnlyFetch");a(Zce,"getGlobalVars")});var wC={};Re(wC,{ResourceLoadError:()=>JS,handleApplication:()=>ele,suppressHandleApplicationWarning:()=>tle});function G$(e){return typeof e=="function"&&("get"in e||"put"in e||"post"in e||"delete"in e)}async function ele(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 QS(r.absolutePath),s=(0,H$.dirname)(r.urlPath).replace(/\\/g,"/").replace(/^\/$/,"");G$(n.default)&&(e.resources.set(s,n.default),e.logger.debug(`Registered root resource: ${s}`)),q$(e,n,s)}catch(n){throw new JS(r.absolutePath,n)}},"handleResourceEntry"))}function q$(e,t,r){for(let n in t){let s=t[n],i=`${r}/${n}`;G$(s)?(e.resources.set(i,s),e.logger.debug(`Registered resource: ${i}`)):typeof s=="object"&&q$(e,s,i)}}var H$,JS,tle,$$=ie(()=>{IC();H$=require("path");a(G$,"isResource");JS=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(ele,"handleApplication");a(q$,"recurseForResources");tle=!0});var CC={};Re(CC,{start:()=>rle});function rle({resources:e}){e.set("login",NC),e.loginPath=t=>"/login?redirect="+encodeURIComponent(t.url)}var NC,V$=ie(()=>{Xi();a(rle,"start");NC=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:nle,info:{title:"HarperDB HTTP REST interface",version:Q$.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 PC(XS[l.type],l.type):l.properties?(o[l.name]=new X$(l.type),s(l)):l.elements?.properties&&(o[l.name]=new ale(l.elements.type),s(l.elements)),l.nullable===!1&&c.push(l.name);r.components.schemas[i.type]=new z$(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:J,elements:F,relationship:de,definition:oe,nullable:ae}of l){let he=oe??F?.definition;he&&s(he),ae===!1&&h.push(J),de?X==="array"?m[J]={type:"array",items:{$ref:Ys+F.type}}:m[J]={$ref:Ys+X}:he?X==="array"?m[J]={type:"array",items:{$ref:Ys+he.type}}:m[J]={$ref:Ys+he.type}:X==="array"?F.type==="Any"?m[J]={type:"array",items:{format:F.type}}:m[J]={type:"array",items:new PC(XS[F.type],F.type)}:X==="Any"?m[J]={format:X}:m[J]=new PC(XS[X],X),p.push(new LC(J,"query",m[J]))}let E=Object.keys(m),_=new LC(f,"path",{type:"string",format:"ID"});_.required=!0,_.description="primary key of record";let R=new LC("property","path",{enum:E});R.required=!0,r.components.schemas[c]=new z$(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 sle(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 K$(p,n,{200:new Y$},"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 OC(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 W$}));let Z="/"+o+"/{"+f+"}";if(r.paths[Z]||(r.paths[Z]={}),r.paths[Z].options=new K$(p,n,{200:new Y$},"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 OC([_],n,{200:new Gd({$ref:Ys+c})},"retrieve a record by its primary key")),y&&(r.paths[Z].put=new ile([_],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 ole([_],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 W$})),I&&R.schema.enum.length>0){let X=`/${o}/{${f}}.{property}`;r.paths[X]||(r.paths[X]={}),r.paths[X].get=new OC([_,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 sle(e,t,r,n){this.description=n,this.requestBody={content:{"application/json":{schema:{$ref:Ys+e}}}},this.security=t,this.responses=r}function OC(e,t,r,n){this.description=n,this.parameters=e,this.security=t,this.responses=r}function K$(e,t,r,n){this.description=n,this.parameters=e,this.security=t,this.responses=r}function Y$(){this.description=J$,this.headers={},this.content={}}function Gd(e,t){this.description=J$,this.content={"application/json":{schema:e}},this.headers=t}function W$(){this.description="successfully processed request, no content returned to client"}function ile(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 ole(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 z$(e,t,r){this.type="object",this.properties=e,this.additionalProperties=t,this.required=r}function PC(e,t){this.type=e,(e==="string"||e==="number"||e==="integer")&&t!=="String"&&(this.format=t)}function X$(e){this.$ref=`#/components/schemas/${e}`}function ale(e){this.type="array",this.items=new X$(e)}function LC(e,t,r){this.name=e,this.in=t,this.schema=r}var Q$,nle,XS,Ys,J$,DC=ie(()=>{Q$=b(Dt());Xi();nle="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/",J$="successful operation";a(ZS,"generateJsonApi");a(sle,"Post");a(OC,"Get");a(K$,"Options");a(Y$,"ResponseOptions200");a(Gd,"Response200");a(W$,"Response204");a(ile,"Put");a(ole,"Patch");a(j$,"Delete");a(z$,"ResourceSchema");a(PC,"Type");a(X$,"Ref");a(ale,"ArrayRef");a(LC,"Parameter")});var eV={};Re(eV,{Request:()=>Tc,createReuseportFd:()=>eT});var Z$,Tc,vC,MC,eT,ph=ie(()=>{Z$=require("os"),Tc=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 MC(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 vC(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)}},vC=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)}},MC=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,Z$.platform)()!="win32"&&(eT=require("node-unix-socket").createReuseportFd)});var rT={};Re(rT,{parseHeaderValue:()=>xC,start:()=>ule});async function lle(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!==tV){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=xC(_);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 _=xC(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=Qo(r["content-type"],!0)(e.body,e.headers)}catch(_){throw new qd.ClientError(_,400)}if(e.authorize=!0,o===tV&&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,UC.lastModified&&isFinite(p)&&i.setIfNone("Last-Modified",new Date(p).toUTCString());else if(f.status>0&&f.headers){let _=Lq(f.headers,i);return f.headers!==_&&(f.headers=_),f.data!==void 0&&(f.body=Vm(f.data,e,f)),f}else if(isFinite(p)){cle[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",_),UC.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?Ri.warn(o):Ri.info(o):Ri.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?sV(o):o,e,c),c}}function ule(e){UC=e,e.includeExpensiveRecordCountEstimates&&(Tc.prototype.includeExpensiveRecordCountEstimates=!0),!rV&&(rV=!0,tT=e.resources,e.server.http(async(t,r)=>{if(!t.isWebSocket)return lle(t,r)},e),e.webSocket!==!1&&e.server.ws(async(t,r,n)=>{hh++;let s=new as;nV||(nV=!0,ap(l=>{hh>0&&l.push({metric:"ws-connections",connections:hh,byThread:!0})}));let i;t.on("error",l=>{i=!0,Ri.warn(l)});let o;t.on("message",a(function(u){o||(o=Qo(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 zo(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?Ri.warn(l):Ri.info(l):Ri.error(l),t.close(dle[l.statusCode]||1011,sV(l))}t.close()},e))}function xC(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 Ri,qd,sV,on,cle,UC,tV,rV,tT,nV,hh,dle,iV=ie(()=>{Jo();Hn();Ri=b(ee()),qd=b(ge());Ug();Wu();tc();Jp();DC();ph();Bg();({errorToString:sV}=Ri),on=new Uint8Array(8),cle=new Float64Array(on.buffer,0,1),UC={},tV="openapi";a(lle,"http");hh=0;a(ule,"start");dle={401:3e3,403:3003};a(xC,"parseHeaderValue")});var BC=x((Axe,aV)=>{var{recordAction:nT,recordActionBinary:oV}=(Hn(),P(Ig)),fle=require("fastify-plugin"),mle=200;aV.exports=fle(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),oV(s.raw.statusCode<400,"success",u,f,d),oV(1,"response_"+s.raw.statusCode,u,f,d);let m=mle;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 lV=x((Ixe,cV)=>{var ple=ht(),hle={user:{presence:!0},schema:{presence:!0},table:{presence:!0},operation:{presence:!0}};cV.exports=function(e){return ple.validateObject(e,hle)}});var sT=x((wxe,uV)=>{"use strict";var Ele=($(),P(z)).OPERATIONS_ENUM,FC=class{static{a(this,"UpdateObject")}constructor(t,r,n,s=void 0){this.operation=Ele.UPDATE,this.schema=t,this.table=r,this.records=n,this.__origin=s}};uV.exports=FC});var gh={};Re(gh,{createTokens:()=>HC,getJWTRSAKeys:()=>lT,refreshOperationToken:()=>GC,validateOperationToken:()=>qC,validateRefreshToken:()=>uT});async function lT(){if(iT)return iT;try{let e=Eh.default.join(_h.default.getHdbBasePath(),pA),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 bi.ClientError(Vd.NO_ENCRYPTION_KEYS,$d.INTERNAL_SERVER_ERROR)}}async function HC(e){let t=(0,kC.validateBySchema)(e,fo.default.object({username:fo.default.string().optional(),password:fo.default.string().optional(),role:fo.default.string().optional(),expires_in:fo.default.alternatives(fo.default.string(),fo.default.number()).optional()}));if(t)throw new bi.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 bi.ClientError(Vd.INVALID_CREDENTIALS,$d.UNAUTHORIZED)}if(!r)throw new bi.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??hV,algorithm:aT,subject:Yd.OPERATION}),l=await Kd.default.sign(i,{key:o.privateKey,passphrase:o.passphrase},{expiresIn:_le,algorithm:aT,subject:Yd.REFRESH}),u=dN(l,Kr.SHA256);if((await(0,dV.update)(new fV.default(gm,ku.USER_TABLE_NAME,[{username:e.username,refresh_token:u}]))).skipped_hashes.length>0)throw new bi.ClientError(Vd.REFRESH_TOKEN_SAVE_FAILED,$d.INTERNAL_SERVER_ERROR);return mV.default.signalUserChange(new pV.UserEventMsg(process.pid)),{operation_token:c,refresh_token:l}}async function GC(e){let t=(0,kC.validateBySchema)(e,fo.default.object({refresh_token:fo.default.string().required()}).required());if(t)throw new bi.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:hV,algorithm:aT,subject:Yd.OPERATION})}}async function qC(e){return EV(e,Yd.OPERATION)}async function uT(e){return EV(e,Yd.REFRESH)}async function EV(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&&!fN(s.refresh_token,e))throw new Error("Invalid token");return s}catch(r){throw cT.default.warn(r),r?.name==="TokenExpiredError"?new bi.ClientError(Vd.TOKEN_EXPIRED,$d.FORBIDDEN):new bi.ClientError(Vd.INVALID_TOKEN,$d.UNAUTHORIZED)}}var Kd,oT,Eh,fo,kC,bi,cT,dV,fV,mV,pV,_h,$d,Vd,hV,_le,aT,Yd,iT,Wd=ie(()=>{Kd=b(require("jsonwebtoken")),oT=b(require("fs-extra")),Eh=b(require("node:path")),fo=b(require("joi")),kC=b(ht());$();bi=b(ge()),cT=b(ee());pN();gs();dV=b(Es()),fV=b(sT()),mV=b(oa()),pV=b(fs()),_h=b(fe()),{HTTP_STATUS_CODES:$d,AUTHENTICATION_ERROR_MSGS:Vd}=bi.hdbErrors;_h.default.initSync();hV=_h.default.get(U.AUTHENTICATION_OPERATIONTOKENTIMEOUT)||"1d",_le=_h.default.get(U.AUTHENTICATION_REFRESHTOKENTIMEOUT)||"30d",aT="RS256",Yd={OPERATION:"operation",REFRESH:"refresh"};a(lT,"getJWTRSAKeys");a(HC,"createTokens");a(GC,"refreshOperationToken");a(qC,"validateOperationToken");a(uT,"validateRefreshToken");a(EV,"validateToken")});var TV=x((Lxe,SV)=>{"use strict";var gle=lV(),jd=require("passport"),Sle=require("passport-local").Strategy,Tle=require("passport-http").BasicStrategy,yle=require("util"),Rle=(gs(),P(ao)),gV=yle.callbackify(Rle.findAndValidateUser),ble=($(),P(z)),_V=(Wd(),P(gh)),{AccessViolation:Ale}=ge();jd.use(new Sle(function(e,t,r){gV(e,t,r)}));jd.use(new Tle(function(e,t,r){gV(e,t,r)}));jd.serializeUser(function(e,t){t(null,e)});jd.deserializeUser(function(e,t){t(null,e)});function Ile(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 Ale)}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===ble.OPERATIONS_ENUM.REFRESH_OPERATION_TOKEN?_V.validateRefreshToken(s).then(o=>{e.body.refresh_token=s,r(null,o)}).catch(o=>{r(o)}):_V.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(Ile,"authorize");function wle(e,t){let r=gle(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(wle,"checkPermissions");SV.exports={authorize:Ile,checkPermissions:wle}});var jC=x((vxe,AV)=>{var pT=require("clone"),hT=ht(),Nle=ue(),fT=($(),P(z)),$C=require("fs"),KC=require("joi"),{string:mT}=KC.types(),{hdbErrors:Cle,handleHDBError:dT}=ge(),{HTTP_STATUS_CODES:VC}=Cle,{commonValidators:zd}=na(),yV=" is required",Ole=["insert","update","upsert"],YC={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:Ole,message:"is required and must be either insert, update, or upsert"}},file_path:{},csv_url:{url:{allowLocal:!0}},data:{},passthrough_headers:{}},Ple={schema:mT.required(),table:mT.required(),action:mT.valid("insert","update","upsert")},{AWS_ACCESS_KEY:Lle,AWS_SECRET:Dle,AWS_BUCKET:vle,AWS_FILE_KEY:Mle,REGION:Ule}=fT.S3_BUCKET_AUTH_KEYS,xle={s3:{presence:!0},[`s3.${Lle}`]:{presence:!0,type:"String"},[`s3.${Dle}`]:{presence:!0,type:"String"},[`s3.${vle}`]:{presence:!0,type:"String"},[`s3.${Mle}`]:{presence:!0,type:"String",hasValidFileExt:[".csv",".json"]},[`s3.${Ule}`]:{presence:!0,type:"String"}},RV=pT(YC);RV.data.presence={message:yV};var bV=pT(YC);bV.file_path.presence={message:yV};var Ble=Object.assign(pT(YC),xle),WC=pT(Ple);WC.csv_url=mT.uri().messages({"string.uri":"'csv_url' must be a valid url"}).required();WC.passthrough_headers=KC.object();function Fle(e){let t=hT.validateObject(e,RV);return ET(e,t)}a(Fle,"dataObject");function kle(e){let t=hT.validateBySchema(e,KC.object(WC));return ET(e,t)}a(kle,"urlObject");function Hle(e){let t=hT.validateObject(e,bV);return ET(e,t)}a(Hle,"fileObject");function Gle(e){let t=hT.validateObject(e,Ble);return ET(e,t)}a(Gle,"s3FileObject");function ET(e,t){if(!t){let r=Nle.checkGlobalSchemaTable(e.schema,e.table);if(r)return dT(new Error,r,VC.BAD_REQUEST);if(e.operation===fT.OPERATIONS_ENUM.CSV_FILE_LOAD)try{$C.accessSync(e.file_path,$C.constants.R_OK|$C.constants.F_OK)}catch(n){return n.code===fT.NODE_ERROR_CODES.ENOENT?dT(n,`No such file or directory ${n.path}`,VC.BAD_REQUEST):n.code===fT.NODE_ERROR_CODES.EACCES?dT(n,`Permission denied ${n.path}`,VC.BAD_REQUEST):dT(n)}}return t}a(ET,"postValidateChecks");AV.exports={dataObject:Fle,urlObject:kle,fileObject:Hle,s3FileObject:Gle}});var zC=x((Uxe,IV)=>{"use strict";var Sh=ee(),_T=($(),P(z));async function qle(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(qle,"callOperationFunctionAsAwait");IV.exports={callOperationFunctionAsAwait:qle}});var QC=x((Bxe,NV)=>{"use strict";var{S3:$le,GetObjectCommand:Vle}=require("@aws-sdk/client-s3");NV.exports={getFileStreamFromS3:Kle,getS3AuthObj:wV};async function Kle(e){let{s3:t}=e,r={Bucket:t.bucket,Key:t.key};return(await wV(t.aws_access_key_id,t.aws_secret_access_key,t.region).send(new Vle(r))).Body}a(Kle,"getFileStreamFromS3");function wV(e,t,r){return new $le({credentials:{accessKeyId:e,secretAccessKey:t},region:r})}a(wV,"getS3AuthObj")});var OV=x((kxe,CV)=>{"use strict";var JC=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}},XC=class{static{a(this,"BulkLoadDataObject")}constructor(t,r,n,s){this.action=t,this.schema=r,this.table=n,this.data=s}};CV.exports={BulkLoadFileObject:JC,BulkLoadDataObject:XC}});var LV=x((Gxe,PV)=>{"use strict";var ZC=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}};PV.exports=ZC});var vV=x(($xe,DV)=>{"use strict";var eO=class{static{a(this,"PermissionAttributeResponseObject")}constructor(t,r=[]){this.attribute_name=t,this.required_permissions=r}};DV.exports=eO});var rO=x((Kxe,UV)=>{"use strict";var MV=LV(),Yle=vV(),{HDB_ERROR_MSGS:Wle}=En(),tO=class{static{a(this,"PermissionResponseObject")}constructor(){this.error=Wle.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 MV(t,r,n),i=`${t}_${r}`;this.unauthorized_access[i]=s}addUnauthorizedAttributes(t,r,n,s){let i=[];t.forEach(c=>{let l=new Yle(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 MV(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}};UV.exports=tO});var Qd=x((Wxe,kV)=>{"use strict";var Th=ee(),{validateBySchema:xV}=ht(),pa=require("joi"),jle=ua(),gT=ue(),{handleHDBError:ST,hdbErrors:zle,ClientError:BV}=ge(),{HDB_ERROR_MSGS:TT,HTTP_STATUS_CODES:nO}=zle,FV=fe();FV.initSync();var{getDatabases:sO}=(Oe(),P(Et)),Qle=require("fs-extra"),Jle=($(),P(z));kV.exports={describeAll:Xle,describeTable:yT,describeSchema:Zle};async function Xle(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=sO(),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(Xle,"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=xV(e,pa.object({database:pa.string(),table:pa.string().required(),exact_count:pa.boolean().strict(),include_computed:pa.boolean().strict()}));if(i)throw new BV(i.message);let c=sO()[r];if(!c)throw ST(new Error,TT.SCHEMA_NOT_FOUND(e.schema),nO.NOT_FOUND);let l=c[n];if(!l)throw ST(new Error,TT.TABLE_NOT_FOUND(e.schema,e.table),nO.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 Qle.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")),FV.get(Jle.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 Zle(e){gT.transformReq(e);let t=xV(e,pa.object({database:pa.string(),exact_count:pa.boolean().strict(),include_computed:pa.boolean().strict()}));if(t)throw new BV(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=sO()[n];if(!i)throw ST(new Error,TT.SCHEMA_NOT_FOUND(e.schema),nO.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(Zle,"describeSchema")});var VV=x((zxe,$V)=>{"use strict";var eue=Qd(),{hdbErrors:HV}=ge(),{getDatabases:GV}=(Oe(),P(Et));$V.exports={checkSchemaExists:qV,checkSchemaTableExists:tue,schemaDescribe:eue};async function qV(e){if(!GV()[e])return HV.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}a(qV,"checkSchemaExists");async function tue(e,t){let r=await qV(e);if(r)return r;if(!GV()[e][t])return HV.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}a(tue,"checkSchemaTableExists")});var YV=x((Jxe,KV)=>{"use strict";var rue=hs();KV.exports={writeTransaction:nue};function nue(e,t,r){return rue.writeTransaction(e,t,r)}a(nue,"writeTransaction")});var lO=x((Zxe,s1)=>{"use strict";var{decode:sue}=require("msgpackr"),AT=Dr(),Jd=_r(),aO=($(),P(z)),bn=ee(),oO=fe(),iue=($(),P(z)),{onMessageByType:oue}=it(),QV=ua(),{recordAction:WV,recordActionBinary:aue}=(Hn(),P(Ig)),{publishToStream:cue}=AT,{ConsumerEvents:jV}=require("nats"),lue=Wn(),{promisify:uue}=require("util"),{decodeBlobsWithWrites:due}=(cs(),P(mg)),JV=uue(setTimeout),IT=1e4,wT,bT,XV,yh=new Map,Xd=new Map;s1.exports={initialize:ZV,ingestConsumer:cO,setSubscription:fue,setIgnoreOrigin:hue,getDatabaseSubscriptions:pue,updateConsumer:e1};async function ZV(){oue(aO.ITC_EVENT_TYPES.NATS_CONSUMER_UPDATE,async t=>{await e1(t)}),XV=!0,bn.notify("Initializing clustering ingest service.");let{connection:e}=await AT.getNATSReferences();wT=e,bT=e.info.server_name}a(ZV,"initialize");async function e1(e){if(e.status==="start"){let{js:t,jsm:r}=await t1(e.node_domain_name);cO(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(e1,"updateConsumer");var NT=new Map;function fue(e,t,r){let n=NT.get(e);n||NT.set(e,n=new Map),n.set(t,r),XV||ZV().then(mue)}a(fue,"setSubscription");async function mue(){let e=await lue.searchByValue({database:"system",table:"hdb_nodes",attribute:"name",value:"*"});for await(let t of e){let r=t.name+Jd.SERVER_SUFFIX.LEAF,n,s;for(let i of t.subscriptions||[])if(i.subscribe===!0){if(!n&&({js:n,jsm:s}=await t1(r),!n))break;let{schema:o,table:c}=i,l=QV.createNatsTableStreamName(o,c);cO(l,n,s,r)}}}a(mue,"accessConsumers");async function t1(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 JV(i)}return{js:t,jsm:r}}a(t1,"connectToRemoteJS");function pue(){return NT}a(pue,"getDatabaseSubscriptions");var r1;function hue(e){r1=e}a(hue,"setIgnoreOrigin");var n1=100,zV=new Array(n1),RT=0;async function cO(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 JV(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:oO.get(aO.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 zV[RT],zV[RT]=Eue(d).catch(f=>{bn.error(f)}),++RT>=n1&&(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(cO,"ingestConsumer");async function Eue(e){let t;await due(()=>{t=sue(e.data)}),WV(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=oO.get(aO.CONFIG_PARAMS.CLUSTERING_NODENAME);r.has(Jd.MSG_HEADERS.TRANSACTED_NODES)&&r.values(Jd.MSG_HEADERS.TRANSACTED_NODES).indexOf(s)>-1&&(n=!0);let i=r.get(Jd.MSG_HEADERS.ORIGIN);if(n||(n=i===s&&!r1),aue(n,"echo",e.subject,t.operation,"ingest"),n){e.ack();return}r.append(Jd.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(Jd.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:iO(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:iO(o),value:L,expiresAt:p,id:f?.[H],table:u}));for(;l;)w.push({type:iO(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})}oO.get(iue.CONFIG_PARAMS.CLUSTERING_REPUBLISHMESSAGES)!==!1&&cue(e.subject.split(".").slice(0,-1).join("."),QV.createNatsTableStreamName(c,u),e.headers,e.data),await E;let I=Date.now()-_;_&&WV(I,"replication-latency",e.subject,o,"ingest")}catch(o){bn.error(o)}e.ack()}a(Eue,"messageProcessor");function iO(e){switch(e){case"insert":case"upsert":case"update":return"put"}return e}a(iO,"convertOperation")});var Dr=x((t0e,y1)=>{"use strict";var Wr=fe();Wr.initSync();var _ue=require("fs-extra"),gue=require("semver"),Ah=require("path"),{monotonicFactory:Sue}=require("ulidx"),o1=Sue(),Tue=require("util"),a1=require("child_process"),yue=Tue.promisify(a1.exec),Rue=a1.spawn,an=_r(),nt=($(),P(z)),{packageJson:bue,PACKAGE_ROOT:Aue}=Dt(),CT=ue(),Ai=ee(),OT=ua(),Iue=YV(),Rh=It(),{broadcast:wue,onMessageByType:Nue,getWorkerIndex:Cue}=it(),{isMainThread:c1}=require("worker_threads"),{Encoder:Oue,decode:mO}=require("msgpackr"),l1=new Oue,{isEmpty:Jl}=CT,u1=(gs(),P(ao));c1&&Nue(nt.ITC_EVENT_TYPES.RESTART,()=>{An=void 0,Ql=void 0});var{connect:Pue,StorageType:Lue,RetentionPolicy:Due,AckPolicy:pO,DeliverPolicy:hO,DiscardPolicy:vue,JSONCodec:Mue,createInbox:EO,headers:Uue,ErrorCode:i1}=require("nats"),{recordAction:xue}=(Hn(),P(Ig)),{encodeBlobsAsBuffers:Bue}=(cs(),P(mg)),d1=Mue(),Fue="clustering",kue=bue.engines[an.NATS_SERVER_NAME],Hue=Ah.join(Aue,"dependencies"),fO=Ah.join(Hue,`${process.platform}-${process.arch}`,an.NATS_BINARY_NAME),uO,dO,bh,jl,zl;y1.exports={runCommand:f1,checkNATSServerInstalled:Gue,createConnection:_O,getConnection:Ih,getJetStreamManager:wh,getJetStream:p1,getNATSReferences:mo,getServerList:$ue,createLocalStream:gO,listStreams:h1,deleteLocalStream:Vue,getServerConfig:Zd,listRemoteStreams:Kue,viewStream:Yue,viewStreamIterator:Wue,publishToStream:jue,request:Jue,reloadNATS:SO,reloadNATSHub:Xue,reloadNATSLeaf:Zue,extractServerName:Que,requestErrorHandler:ede,createLocalTableStream:S1,createTableStreams:nde,purgeTableStream:T1,purgeSchemaTableStreams:sde,getStreamInfo:ide,updateLocalStreams:ade,closeConnection:que,getJsmServerName:PT,addNatsMsgHeader:E1,clearClientCache:m1,updateRemoteConsumer:tde,createConsumer:_1,updateConsumerIterator:rde};async function f1(e,t=void 0){let{stdout:r,stderr:n}=await yue(e,{cwd:t});if(n)throw new Error(n.replace(`
|
|
14
14
|
`,""));return r.replace(`
|