harperdb 4.5.39 → 4.5.40
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 +284 -282
- package/package.json +2 -2
- package/server/jobs/jobProcess.js +1 -1
- package/server/threads/threadServer.js +1 -1
- package/studio/build-local/asset-manifest.json +2 -2
- package/studio/build-local/index.html +1 -1
- package/studio/build-local/static/js/{main.0a0bf640.js → main.e3c003ec.js} +2 -2
- package/utility/scripts/restartHdb.js +1 -1
- /package/studio/build-local/static/js/{main.0a0bf640.js.LICENSE.txt → main.e3c003ec.js.LICENSE.txt} +0 -0
|
@@ -13,7 +13,7 @@ Caused by:`));else if(typeof u=="object")try{n+=JSON.stringify(u)}catch{n+="Obje
|
|
|
13
13
|
|
|
14
14
|
`:`data: ${e}
|
|
15
15
|
|
|
16
|
-
`},"serialize"),compressible:!1,q:.8});Yr.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()}});BL={type:"application/json",serializeStream:Lf,serialize:Bf,deserialize:V4,q:.5};Yr.set("*/*",BL);Yr.set("",BL);a(V4,"tryJSONParse");a(kf,"registerContentHandlers");K4=require("fastify-plugin"),Y4=K4(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=Rp(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 f=l.getColumns;l=l.mapError(d=>(d.toJSON=()=>({error:d.name,message:d.message,...d.partialObject}),d)),l.getColumns=f}u=o.serializeStream}else u=o.serialize;return u(l,{headers:{set:a((f,d)=>{s.header(f,d)},"set")}})})}),r()},{name:"content-type-negotiation"});a(Rp,"findBestSerializer");LL=hR.default.get(x.HTTP_COMPRESSIONTHRESHOLD);a(Ff,"serialize");a(ca,"serializeMessage");a(fR,"asyncSerialization");a(_R,"hasAsyncSerialization");a(W4,"streamToBuffer");z4=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(j4,"isBufferEncoding");a(Q4,"parseContentType");a(co,"getDeserializer");a(J4,"deserializerUnknownType");a(X4,"transformIterable");a(Ap,"toCsvStream")});var SR={};Ue(SR,{start:()=>a3});function Z4(e){if(e.kind!==Le.Kind.OPERATION_DEFINITION&&e.kind!==Le.Kind.FRAGMENT_DEFINITION)throw new Or(`Unexpected non-executable definition type ${e.kind}.`)}function kL(e){if(typeof e!="object"||e===null)throw new yi("Request body must be an object.");if(!("query"in e))throw new yi("Request body must contain a `query` field.");if(typeof e.query!="string")throw new yi("Request body `query` field must be a string.");if("variables"in e&&(typeof e.variables!="object"||e.variables===null))throw new yi("Request body `variables` field must be an object.");if("operationName"in e&&typeof e.operationName!="string")throw new yi("Request body `operationName` field must be a string.")}function gR(e){return parseInt(e.value,10)}function qL(e){return parseFloat(e.value)}function GL(e,t,r){let n=r.get(e.name.value);return $L(n)?VL(n,t):{attribute:t,value:n}}function $L(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function VL(e,t){return t=typeof t=="string"?[t]:t,Object.entries(e).flatMap(([r,n])=>(t=[...t,r],$L(n)?VL(n,t):{attribute:t,value:n}))}function e3(e,t,r){switch(t=[...t,e.name.value],e.value.kind){case Le.Kind.NULL:return{attribute:t,value:null};case Le.Kind.INT:return{attribute:t,value:gR(e.value)};case Le.Kind.FLOAT:return{attribute:t,value:qL(e.value)};case Le.Kind.BOOLEAN:case Le.Kind.STRING:return{attribute:t,value:e.value.value};case Le.Kind.VARIABLE:return GL(e.value,t,r);case Le.Kind.OBJECT:return KL(e.value,t,r);case Le.Kind.LIST:case Le.Kind.ENUM:default:throw new Or(`Value type, ${e.value.kind}, is not supported.`)}}function KL(e,t,r){return e.fields.flatMap(n=>e3(n,t,r))}function t3(e,t){switch(e.value.kind){case Le.Kind.NULL:return{attribute:e.name.value,value:null};case Le.Kind.INT:return{attribute:e.name.value,value:gR(e.value)};case Le.Kind.FLOAT:return{attribute:e.name.value,value:qL(e.value)};case Le.Kind.BOOLEAN:case Le.Kind.STRING:return{attribute:e.name.value,value:e.value.value};case Le.Kind.VARIABLE:return GL(e.value,e.name.value,t);case Le.Kind.OBJECT:return KL(e.value,[e.name.value],t);case Le.Kind.LIST:case Le.Kind.ENUM:default:throw new Or(`Argument type, ${e.value.kind}, is not supported.`)}}function r3(e,t){return e.flatMap(r=>t3(r,t))}function yp(e,t){return e.selections.flatMap(r=>{switch(r.kind){case Le.Kind.FIELD:return r;case Le.Kind.FRAGMENT_SPREAD:{let n=r.name.value,s=t.get(n);if(s==null)throw new Or(`Fragment \`${n}\` not found.`);return yp(s.selectionSet,t)}case Le.Kind.INLINE_FRAGMENT:return yp(r.selectionSet,t)}})}function YL(e,t){return yp(e,t).map(r=>r.selectionSet?.selections.length>0?{name:r.name.value,select:YL(r.selectionSet,t)}:r.name.value)}async function n3(e,t,r,n){let s=fs.getMatch(e.name.value,"graphql");if(s===void 0)throw new Or(`Resource \`${e.name.value}\` not found.`);let i=s.Resource,o={select:YL(e.selectionSet,r),conditions:r3(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 WL(e){switch(e.kind){case Le.Kind.NULL:return null;case Le.Kind.INT:return gR(e);case Le.Kind.FLOAT:return parseFloat(e.value);case Le.Kind.STRING:case Le.Kind.BOOLEAN:return e.value;case Le.Kind.OBJECT:return e.fields.reduce((t,r)=>({[r.name.value]:WL(r.value),...t}),{});case Le.Kind.LIST:case Le.Kind.ENUM:default:throw new Or(`Value type, ${e.kind}, is not supported.`)}}function s3(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=WL(n.defaultValue)),n.type.kind===Le.Kind.NON_NULL_TYPE&&!(s in t)&&i===void 0)throw new Or(`Variable $${s} is required, but not provided.`);r.set(n.variable.name.value,i??null)}return r}async function i3(e,t,r,n){if(e.operation===Le.OperationTypeNode.SUBSCRIPTION)throw new Or("Subscriptions are not supported.");if(e.operation===Le.OperationTypeNode.MUTATION)throw new Or("Mutations are not supported yet.");let s=s3(e.variableDefinitions,t),i=await Promise.all(yp(e.selectionSet,r).map(c=>n3(c,s,r,n))),o={data:{}};for(let[c,l]of i)o.data[c]=l;return o}async function FL({query:e,variables:t={},operationName:r},n){let s=Le.parse(e),i=new Map,o=new Map;for(let u of s.definitions)if(Z4(u),u.kind===Le.Kind.FRAGMENT_DEFINITION)o.set(u.name.value,u);else{if(u.name===void 0&&s.definitions.length>1)throw new Or("Unnamed operations are only allowed when there is a single operation in the document.");let f=u.name?.value??"Unnamed Query";if(i.has(f))throw new Or(`Duplicate operation definition: ${f}`);i.set(f,u)}let c;if(r==null)if(i.size===1)c=i.entries().next().value[1];else throw new Or("Operation name is required when there are multiple operations in the document.");else if(c=i.get(r),c==null)throw new Or(`Operation \`${r}\` not found.`);let l=await i3(c,t,o,n);return{status:200,headers:{"Content-Type":"application/graphql-response+json; charset=utf-8"},body:JSON.stringify(l)}}async function o3(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 kL(r),FL(r,e)}case"POST":{let r=await co(e.headers.get("content-type"),!0)(e._nodeRequest);return kL(r),FL(r,e)}default:throw new yi("Method Not Allowed",405,{Allow:"GET, POST"})}}function a3(e){e.server.http(async(t,r)=>{if(!t.url.startsWith("/graphql"))return r(t);try{return await o3(t)}catch(n){logger.error(n);let s=t.headers.get("accept")??"application/graphql-response+json";switch(s){case"application/json":{if(n instanceof yi)return{status:n.statusCode,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/json",...n.headers}};if(n instanceof Le.GraphQLError)return{status:200,body:JSON.stringify({errors:[n]}),headers:{"Content-Type":"application/json"}};if(n instanceof Or)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:logger.info(`Unsupported accept header, ${s}, defaulting to application/graphql-response+json`);case"application/graphql-response+json":{if(n instanceof yi)return{status:n.statusCode,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/graphql-response+json",...n.headers}};if(n instanceof Le.GraphQLError)return{status:400,body:JSON.stringify({errors:[n]}),headers:{"Content-Type":"application/graphql-response+json"}};if(n instanceof Or)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 Le,Or,yi,zL=Re(()=>{Le=v(require("graphql"));io();su();a(Z4,"assertExecutableDefinitionNode");a(kL,"assertRequestParams");a(gR,"processIntValueNode");a(qL,"processFloatValueNode");a(GL,"processVariableNode");a($L,"isObject");a(VL,"transformObjectIntoQueryCondition");a(e3,"processObjectFieldNode");a(KL,"processObjectValueNode");a(t3,"processArgumentNode");a(r3,"buildConditionsQuery");a(yp,"fillInFragments");a(YL,"buildSelectQuery");a(n3,"processFieldNode");a(WL,"processConstValueNode");a(s3,"resolveVariables");a(i3,"executeOperation");a(FL,"resolver");Or=class extends Error{static{a(this,"GraphQLQueryingError")}},yi=class extends Error{static{a(this,"HTTPError")}statusCode;headers;constructor(t,r=400,n={}){super(t),this.statusCode=r,this.headers=n}};a(o3,"graphqlQueryingHandler");a(a3,"start")});var Oi=C((lbe,JL)=>{"use strict";var QL=ie(),jL=(k(),P(q)),du=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,bi=require("joi"),la={schema_format:{pattern:du,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},c3=bi.alternatives(bi.string().min(1).max(la.schema_length.maximum).pattern(du).messages({"string.pattern.base":"{:#label} "+la.schema_format.message}),bi.number(),bi.array()).required(),l3=bi.alternatives(bi.string().min(1).max(la.schema_length.maximum).pattern(du).messages({"string.pattern.base":"{:#label} "+la.schema_format.message}),bi.number()),u3=bi.alternatives(bi.string().min(1).max(la.schema_length.maximum).pattern(du).messages({"string.pattern.base":"{:#label} "+la.schema_format.message}),bi.number()).required();function d3(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>la.schema_length.maximum?`'${e}' maximum of 250 characters`:du.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(d3,"checkValidTable");function f3(e,t){return QL.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(f3,"validateSchemaExists");function _3(e,t){let r=t.state.ancestors[0].schema;return QL.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(_3,"validateTableExists");function h3(e,t){return e.toLowerCase()===jL.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${jL.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(h3,"validateSchemaName");JL.exports={common_validators:la,schema_regex:du,hdb_schema_table:c3,validateSchemaExists:f3,validateTableExists:_3,validateSchemaName:h3,checkValidTable:d3,hdb_database:l3,hdb_table:u3}});var tt=C((dbe,XL)=>{"use strict";var gn=require("validate.js");gn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||gn.validators.type.checks[t](e)?null:` must be a '${t}' value`};gn.validators.type.checks={Object:a(function(e){return gn.isObject(e)&&!gn.isArray(e)},"Object"),Array:gn.isArray,Integer:gn.isInteger,Number:gn.isNumber,String:gn.isString,Date:gn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};gn.validators.hasValidFileExt=function(e,t){return gn.isString(e)?e===""?"can't be blank":t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`:null};XL.exports={validateObject:m3,validateObjectAsync:p3,validateBySchema:E3};function m3(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=gn(e,t,{format:"flat"});return r?new Error(r):null}a(m3,"validateObject");async function p3(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await gn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(p3,"validateObjectAsync");function E3(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(E3,"validateBySchema")});var AR=C((_be,eM)=>{var{hdb_table:g3,hdb_database:ZL}=Oi(),S3=tt(),TR=require("joi"),T3={undefined:"undefined",null:"null"},A3=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||T3[o]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${o}'`:s+=`. Invalid attribute name: '${o}'`)}return s?t.message(s):e},"custom_records_val"),R3=TR.object({database:ZL,schema:ZL,table:g3,records:TR.array().items(TR.object().custom(A3)).required()});eM.exports=function(e){return S3.validateBySchema(e,R3)}});var rM=C((mbe,tM)=>{"use strict";var RR=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")}};tM.exports=RR});var sM=C((Ebe,nM)=>{"use strict";var yR=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};nM.exports=yR});var lM={};Ue(lM,{HAS_EXPIRATION:()=>wp,HAS_RESIDENCY_ID:()=>CR,HAS_STRUCTURE_UPDATE:()=>Cp,LAST_TIMESTAMP_PLACEHOLDER:()=>Vf,LOCAL_TIMESTAMP:()=>y3,METADATA:()=>Cc,NEW_TIMESTAMP_PLACEHOLDER:()=>oM,NO_TIMESTAMP:()=>Op,PENDING_LOCAL_TIME:()=>PR,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>IR,RecordEncoder:()=>wR,TIMESTAMP_ASSIGN_LAST:()=>O3,TIMESTAMP_ASSIGN_NEW:()=>aM,TIMESTAMP_ASSIGN_PREVIOUS:()=>cM,TIMESTAMP_PLACEHOLDER:()=>bp,TIMESTAMP_RECORD_PREVIOUS:()=>bR,handleLocalTimeForGets:()=>Pp,recordUpdater:()=>DR,removeEntry:()=>Dc});function w3(){return $f[0]=$f[0]^64,b3.getFloat64(0)}function Pp(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++;let l=r.call(this,o,c),u=l?.value,f=u?.[Cc];return f>=0&&(l.metadataFlags=f,l.localTime=u.localTime,l.value=u.value,l.residencyId=u.residencyId,u.expiresAt>=0&&(l.expiresAt=u.expiresAt)),l&&(l.key=o),l};let n=e.get;e.get=function(o,c){let l=n.call(this,o,c);return l?.[Cc]>=0?l.value: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=>{let u=l.value,f=u[Cc];return f>=0&&(l.metadataFlags=f,l.localTime=u.localTime,l.value=u.value,l.residencyId=u.residencyId,u.expiresAt>=0&&(l.expiresAt=u.expiresAt)),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,Ic.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<Ic.length;u++){let f=Ic[u].deref();(!f||f.isDone||f.isCommitted)&&Ic.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function DR(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){l==null?wc=Op:d?wc=i?.localTime?bR|cM:Op:wc=l?i?.localTime?bR|16384:aM|16384:Op;let h=u?.expiresAt;if(h>=0&&(c|=wp),Gf=c,OR=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:wc>0},S,g=0;try{let A=i?.residencyId,E=u?.residencyId;E&&(NR=E,Gf|=CR,g|=Lc),A!==E&&(g|=Mc,A||(A=0)),c&wp&&(g|=Yf),u?.originatingOperation&&(g|=Kf),d&&(m.ifVersion=S=i?.version??null),i&&i.value&&f!=="message"&&i.metadataFlags&Ur&&(!i.localTime||!r.getBinaryFast(i.localTime))&&aa(i.value);let T;if(s!==void 0&&(T=Sp(()=>e.put(n,s,m),n,e.rootStore),bc&&(g|=Ur)),l){let N=u?.user?.username;if(_&&(Sp(()=>e.encoder.encode(_),n,e.rootStore),bc&&(g|=Ur)),e.encoder.hasStructureUpdate&&(g|=Cp,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let M=i?.localTime,H=r.get(M);if(H){let Z=Tt(H).previousLocalTime;return T=r.put(M,Pc(o,t,n,Z,u?.nodeId??server.replication.getThisNodeId(r)??0,N,f,qf,g,E,A,h),{ifVersion:S}),T}}T=r.put(s===void 0?oM:Vf,Pc(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,f,qf,g,E,A,h,u?.originatingOperation),{instructedWrite:!0,ifVersion:S})}return T}catch(A){throw A.message+=" id: "+n+" options: "+m,A}}}function Dc(e,t,r){if(t)return t.value&&t.metadataFlags&Ur&&!e.auditStore?.getBinaryFast(t.localTime)&&aa(t.value),e.remove(t.key,r)}var iM,Np,bp,Vf,IR,oM,y3,Cc,$f,b3,Op,aM,O3,cM,bR,wp,CR,PR,Cp,N3,qf,wc,Gf,OR,NR,wR,Ic,fu=Re(()=>{iM=require("msgpackr");Ai();Np=v(X());En();En();bp=new Uint8Array([1,1,1,1,4,64,0,0]),Vf=new Uint8Array([1,1,1,1,1,0,0,0]),IR=new Uint8Array([1,1,1,1,3,64,0,0]),oM=new Uint8Array([1,1,1,1,0,64,0,0]),y3=Symbol("local-timestamp"),Cc=Symbol("metadata"),$f=new Uint8Array(8),b3=new DataView($f.buffer,0,8),Op=0,aM=0,O3=1,cM=3,bR=4,wp=16,CR=32,PR=1,Cp=256,wc=0,Gf=-1,OR=-1,NR=0,wR=class extends iM.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(wc||Gf>=0){let o=0,c=wc;c&&(o+=8,wc=0);let l=Gf,u=OR,f=NR;l>=0&&(o+=4,Gf=-1,u>=0&&(o+=8,OR=-1),f&&(o+=4,NR=0));let d=N3=r.call(this,s,i|2048|o);qf=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(bp[4]=c,bp[5]=c>>8,d.set(bp,_),_+=8),bc&&(l|=Ur),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|Ip<<24),_+=4,u>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setFloat64(_,u),_+=8),f&&(d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,f)),d}else return qf=r.call(this,s,i),qf};let n=this.saveStructures;this.saveStructures=function(s,i){let o=n.call(this,s,i);return this.hasStructureUpdate=!0,o}}decode(t,r){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($f,0,c),c+=8;else for(let _=0;_<8;_++)$f[_]=t[c++];l=w3(),i=t[c]}let u,f;i<32&&(i===Ip?(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&wp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&CR&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=so(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[Cc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:so(()=>super.decode(t,r),this.rootStore)}catch(c){return Np.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(w3,"getTimestamp");a(Pp,"handleLocalTimeForGets");Ic=[];setInterval(()=>{for(let e=0;e<Ic.length;e++){let t=Ic[e].deref();!t||t.isDone||t.isCommitted?Ic.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(Np.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):Np.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(DR,"recordUpdater");a(Dc,"removeEntry")});var Wf=C((ybe,dM)=>{"use strict";var uM=oe(),I3=(k(),P(q)),{RecordEncoder:C3}=(fu(),P(lM));uM.initSync();var P3=uM.get(I3.CONFIG_PARAMS.STORAGE_CACHING)!==!1,LR=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=P3&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:C3})}};dM.exports=LR});var zf=C((Obe,fM)=>{"use strict";var kn=oe(),_s=(k(),P(q));kn.initSync();var Dp=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=kn.get(_s.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||kn.get(_s.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||kn.get(_s.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",kn.get(_s.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=kn.get(_s.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),kn.get(_s.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=kn.get(_s.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),kn.get(_s.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=kn.get(_s.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),kn.get(_s.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=kn.get(_s.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=kn.get(_s.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};fM.exports=Dp;Dp.MAX_DBS=1e4});var ht=C((wbe,RM)=>{"use strict";var vR=require("lmdb"),Gs=require("fs-extra"),Fn=require("path"),Lp=dn(),mM=X(),Sn=Un().LMDB_ERRORS_ENUM,Mp=sM(),UR=Wf(),pM=zf(),ua=Ft(),_M=(k(),P(q)),{table:D3,resetDatabases:L3}=(xe(),P(ct)),hM=oe(),$s=ua.INTERNAL_DBIS_NAME,EM=ua.DBI_DEFINITION_NAME,M3="data.mdb",v3="lock.mdb",jf=".mdb",U3="-lock",MR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=hs(t,r),this.key_type=this.dbi[ua.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[ua.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new vR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function vp(e,t){if(e===void 0)throw new Error(Sn.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(Sn.ENV_NAME_REQUIRED)}a(vp,"pathEnvNameValidation");async function xR(e,t,r=!0){try{await Gs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(Sn.INVALID_BASE_PATH):n}try{let n=Fn.join(e,t+jf);return await Gs.access(n,Gs.constants.R_OK|Gs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Gs.access(Fn.join(e,t,M3),Gs.constants.R_OK|Gs.constants.F_OK),Fn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(Sn.INVALID_ENVIRONMENT)}else throw new Error(Sn.INVALID_ENVIRONMENT);throw n}}a(xR,"validateEnvironmentPath");function Up(e,t){if(Lp.validateEnv(e),t===void 0)throw new Error(Sn.DBI_NAME_REQUIRED)}a(Up,"validateEnvDBIName");async function x3(e,t,r=!1,n=!1){vp(e,t);let s=Fn.basename(e);t=t.toString();let i=hM.get(_M.CONFIG_PARAMS.DATABASES);i||hM.setProperty(_M.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await xR(e,t,n),gM(e,t,r)}catch(o){if(o.message===Sn.INVALID_ENVIRONMENT){let c=Fn.join(e,t);await Gs.mkdirp(n?c:e);let l=new pM(n?c:c+jf,!1),u=vR.open(l);u.dbis=Object.create(null);let f=new UR(!1);u.openDB($s,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=BR(e,t,r);return u[ua.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(x3,"createEnvironment");async function B3(e,t,r,n=!0){vp(e,t),t=t.toString();let s=Fn.join(e,t);return D3({table:t,database:Fn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(B3,"copyEnvironment");async function gM(e,t,r=!1){vp(e,t),t=t.toString();let n=BR(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 xR(e,t),i=Fn.join(e,t+jf),o=s!=i,c=new pM(s,o),l=vR.open(c);l.dbis=Object.create(null);let u=TM(l);for(let f=0;f<u.length;f++)hs(l,u[f]);return l[ua.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(gM,"openEnvironment");async function H3(e,t,r=!1){vp(e,t),t=t.toString();let n=Fn.join(e,t+jf),s=await xR(e,t);if(global.lmdb_map!==void 0){let i=BR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await SM(o),delete global.lmdb_map[i]}}await Gs.remove(s),await Gs.remove(s===n?s+U3:Fn.join(Fn.dirname(s),v3))}a(H3,"deleteEnvironment");async function SM(e){Lp.validateEnv(e);let t=e[ua.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(SM,"closeEnvironment");function BR(e,t,r=!1){let s=`${Fn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(BR,"getCachedEnvironmentName");function k3(e){Lp.validateEnv(e);let t=Object.create(null),r=hs(e,$s);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==$s)try{t[n]=Object.assign(new Mp,s)}catch{mM.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(k3,"listDBIDefinitions");function TM(e){Lp.validateEnv(e);let t=[],r=hs(e,$s);for(let{key:n}of r.getRange({start:!1}))n!==$s&&t.push(n);return t}a(TM,"listDBIs");function F3(e,t){let n=hs(e,$s).getEntry(t),s=new Mp;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{mM.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(F3,"getDBIDefinition");function AM(e,t,r,n=!r){if(Up(e,t),t=t.toString(),t===$s)throw new Error(Sn.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return hs(e,t)}catch(s){if(s.message===Sn.DBI_DOES_NOT_EXIST){let i=new UR(r,n===!0),o=e.openDB(t,i),c=new Mp(r===!0,n);return o[EM]=c,hs(e,$s).putSync(t,c),e.dbis[t]=o,o}throw s}}a(AM,"createDBI");function hs(e,t){if(Up(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==$s?r=F3(e,t):r=new Mp,r===void 0)throw new Error(Sn.DBI_DOES_NOT_EXIST);let n;try{let s=new UR(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(Sn.DBI_DOES_NOT_EXIST):s}return n[EM]=r,e.dbis[t]=n,n}a(hs,"openDBI");function q3(e,t){Up(e,t),t=t.toString();let r=hs(e,t),n=r.getStats();return r[ua.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(q3,"statDBI");async function G3(e,t){try{let r=Fn.join(e,t+jf);return(await Gs.stat(r)).size}catch{throw new Error(Sn.INVALID_ENVIRONMENT)}}a(G3,"environmentDataSize");function $3(e,t){if(Up(e,t),t=t.toString(),t===$s)throw new Error(Sn.CANNOT_DROP_INTERNAL_DBIS_NAME);hs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],hs(e,$s).removeSync(t)}a($3,"dropDBI");function V3(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{hs(e,i)}catch(o){if(o.message===Sn.DBI_DOES_NOT_EXIST)AM(e,i,i!==t,i===t),n=!0;else throw o}}n&&L3()}a(V3,"initializeDBIs");RM.exports={openDBI:hs,openEnvironment:gM,createEnvironment:x3,listDBIs:TM,listDBIDefinitions:k3,createDBI:AM,dropDBI:$3,statDBI:q3,deleteEnvironment:H3,initializeDBIs:V3,TransactionCursor:MR,environmentDataSize:G3,copyEnvironment:B3,closeEnvironment:SM}});var bM=C((Cbe,yM)=>{"use strict";var HR=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};yM.exports=HR});var NM=C((Dbe,OM)=>{"use strict";var kR=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}};OM.exports=kR});var IM=C((Mbe,wM)=>{"use strict";var FR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};wM.exports=FR});var Uc=C((Hbe,DM)=>{"use strict";var K3=ht(),Y3=bM(),W3=NM(),z3=IM(),Ni=dn(),Qf=Un().LMDB_ERRORS_ENUM,j3=Ft(),lo=(k(),P(q)),Q3=ie(),J3=require("uuid"),Ube=require("lmdb"),{handleHDBError:X3,hdb_errors:Z3}=he(),{OVERFLOW_MARKER:xbe,MAX_SEARCH_KEY_LENGTH:Bbe}=j3,CM=oe();CM.initSync();var xp=CM.get(lo.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),qR=lo.TIME_STAMP_NAMES_ENUM.CREATED_TIME,vc=lo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function eX(e,t,r,n,s=Ni.getNextMonotonicTime()){KR(e,t,r,n),GR(e,t,r);let i=new Y3,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];PM(u,!0,s);let f=tX(e,t,r,u),d=u[t];o.push(f),c.push(d)}return $R(o,c,n,i,s)}a(eX,"insertRecords");function tX(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 f=c([[{}]]);Array.isArray(f)&&(c=f[0][lo.FUNC_VAL],n[o]=c)}let l=Ni.getIndexedValues(c),u=e.dbis[o];if(l){xp&&u.prefetch(l.map(f=>({key:f,value:s})),Bp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}xp&&e.dbis[t].prefetch([s],Bp),e.dbis[t].put(s,n,n[vc])})}a(tX,"insertRecord");function rX(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(rX,"removeSkippedRecords");function PM(e,t,r){let n=r>0;(n||!Number.isInteger(e[vc]))&&(e[vc]=r||(r=Ni.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[qR]))&&(e[qR]=r||Ni.getNextMonotonicTime()):delete e[qR]}a(PM,"setTimestamps");function GR(e,t,r){r.indexOf(lo.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(lo.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(lo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(lo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),K3.initializeDBIs(e,t,r)}a(GR,"initializeTransaction");async function nX(e,t,r,n,s=Ni.getNextMonotonicTime()){KR(e,t,r,n),GR(e,t,r);let i=new W3,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let f=n[u],d=f[t],_;try{_=VR(e,t,f,d,i,!0,s)}catch{i.skipped_hashes.push(d),o.push(u);continue}c.push(_),l.push(d)}return $R(c,l,n,i,s,o)}a(nX,"updateRecords");async function sX(e,t,r,n,s=Ni.getNextMonotonicTime()){try{KR(e,t,r,n)}catch(l){throw X3(l,l.message,Z3.HTTP_STATUS_CODES.BAD_REQUEST)}GR(e,t,r);let i=new z3,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;Q3.isEmpty(u[t])?(f=J3.v4(),u[t]=f):f=u[t];let d=VR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return $R(o,c,n,i,s)}a(sX,"upsertRecords");async function $R(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||Ni.getNextMonotonicTime(),rX(r,i),n}a($R,"finalizeWrite");function VR(e,t,r,n,s,i=!1,o){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,f=u;if(!u){if(i)return!1;u={}}if(PM(r,!f,o),Number.isInteger(r[vc])&&u[vc]>r[vc])return!1;f&&s.original_records.push(u);let d,_=a(()=>{for(let m in r){if(!r.hasOwnProperty(m)||m===t)continue;let S=r[m],g=e.dbis[m];if(g===void 0)continue;let A=u[m];if(typeof S=="function"){let T=S([[u]]);Array.isArray(T)&&(S=T[0][lo.FUNC_VAL],r[m]=S)}if(S===A)continue;let E=Ni.getIndexedValues(A);if(E){xp&&g.prefetch(E.map(T=>({key:T,value:n})),Bp);for(let T=0,N=E.length;T<N;T++)g.remove(E[T],n)}if(E=Ni.getIndexedValues(S),E){xp&&g.prefetch(E.map(T=>({key:T,value:n})),Bp);for(let T=0,N=E.length;T<N;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[vc])},"do_put");return l?d=c.ifVersion(n,l.version,_):d=c.ifNoExists(n,_),d.then(h=>h?!0:VR(e,t,r,n,s,i,o))}a(VR,"updateUpsertRecord");function iX(e,t,r){if(Ni.validateEnv(e),t===void 0)throw new Error(Qf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Qf.WRITE_ATTRIBUTES_REQUIRED):new Error(Qf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(iX,"validateBasic");function KR(e,t,r,n){if(iX(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Qf.RECORDS_REQUIRED):new Error(Qf.RECORDS_MUST_BE_ARRAY)}a(KR,"validateWrite");function Bp(){}a(Bp,"noop");DM.exports={insertRecords:eX,updateRecords:nX,upsertRecords:sX}});var uo=C((Fbe,oX)=>{oX.exports={hdb_user:{hash_attribute:"username",name:"hdb_user",schema:"system",residence:["*"],attributes:[{attribute:"username"},{attribute:"password"},{attribute:"role"},{attribute:"active"},{attribute:"hash"},{attribute:"refresh_token"},{attribute:"hash_function"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_role:{hash_attribute:"id",name:"hdb_role",schema:"system",attributes:[{attribute:"id"},{attribute:"role"},{attribute:"permission"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}],residence:["*"]},hdb_job:{hash_attribute:"id",name:"hdb_job",schema:"system",attributes:[{attribute:"id"},{attribute:"user"},{attribute:"type"},{attribute:"status"},{attribute:"start_datetime"},{attribute:"end_datetime"},{attribute:"message"},{attribute:"created_datetime"},{attribute:"request"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_license:{hash_attribute:"license_key",name:"hdb_license",schema:"system",attributes:[{attribute:"license_key"},{attribute:"company"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_info:{hash_attribute:"info_id",name:"hdb_info",schema:"system",attributes:[{attribute:"info_id"},{attribute:"data_version_num"},{attribute:"hdb_version_num"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_nodes:{hash_attribute:"name",name:"hdb_nodes",schema:"system",attributes:[{attribute:"name"},{attribute:"subscriptions"},{attribute:"system_info"},{attribute:"url"},{attribute:"routes"},{attribute:"revoked_certificates"},{attribute:"shard"}]},hdb_certificate:{hash_attribute:"name",name:"hdb_certificate",schema:"system",attributes:[{attribute:"name"},{attribute:"uses"},{attribute:"certificate"},{attribute:"is_authority"},{attribute:"private_key_name"},{attribute:"details"},{attribute:"is_self_signed"},{attribute:"__updatedtime__"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]},hdb_raw_analytics:{hash_attribute:"id",name:"hdb_raw_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{attribute:"time"},{attribute:"metrics"}]},hdb_temp:{hash_attribute:"id",name:"hdb_temp",schema:"system",attributes:[{attribute:"id"}]},hdb_durable_session:{hash_attribute:"id",name:"hdb_durable_session",schema:"system",attributes:[{attribute:"id"}]},hdb_session_will:{hash_attribute:"id",name:"hdb_session_will",schema:"system",attributes:[{attribute:"id"}]}}});var MM=C((qbe,LM)=>{"use strict";var aX=require("uuid"),YR=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||aX.v4(),this.schema_table=`${this.schema}.${this.table}`}};LM.exports=YR});var Hp=C(($be,vM)=>{"use strict";var cX=MM(),WR=class extends cX{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}};vM.exports=WR});var xM=C((Kbe,UM)=>{"use strict";UM.exports=uX;var lX="inserted";function uX(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===lX?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(uX,"returnObject")});var kp=C((zbe,HM)=>{"use strict";var dX=(k(),P(q)),zR=ht(),fX=Uc(),{getSystemSchemaPath:_X,getSchemaPath:hX}=St(),Wbe=uo(),{validateBySchema:mX}=tt(),Jf=require("joi"),pX=Hp(),EX=xM(),{handleHDBError:gX,hdb_errors:SX,ClientError:TX}=he(),BM=ie(),{HTTP_STATUS_CODES:AX}=SX,RX="inserted";HM.exports=yX;async function yX(e){let t=mX(e,Jf.object({database:Jf.string(),schema:Jf.string(),table:Jf.string().required(),attribute:Jf.string().required()}));if(t)throw new TX(t.message);let r=!e.skip_table_check&&BM.checkGlobalSchemaTable(e.schema,e.table);if(r)throw gX(new Error,r,AX.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=BM.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 pX(e.schema,e.table,e.attribute,e.id);try{let i=await zR.openEnvironment(hX(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}`);zR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await zR.openEnvironment(_X(),dX.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await fX.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return EX(RX,c,{records:[s]},l)}catch(i){throw i}}a(yX,"lmdbCreateAttribute")});var Xf=C((Jbe,FM)=>{"use strict";var fo=ie(),kM=X(),Qbe=AR(),{getDatabases:bX}=(xe(),P(ct)),{ClientError:xc}=he();FM.exports=OX;function OX(e){if(fo.isEmpty(e))throw new xc("invalid update parameters defined.");if(fo.isEmptyOrZeroLength(e.schema))throw new xc("invalid schema specified.");if(fo.isEmptyOrZeroLength(e.table))throw new xc("invalid table specified.");if(!Array.isArray(e.records))throw new xc("records must be an array");let t=bX()[e.schema]?.[e.table];if(fo.isEmpty(t))throw new xc(`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&&fo.isEmptyOrZeroLength(o[r]))throw kM.error("a valid hash attribute must be provided with update record:",o),new xc("a valid hash attribute must be provided with update record, check log for more info");if(!fo.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw kM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new xc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!fo.isEmpty(o[r])&&o[r]!==""&&n.has(fo.autoCast(o[r]))&&(o.skip=!0),n.add(fo.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(OX,"insertUpdateValidate")});var GM=C((Zbe,qM)=>{"use strict";var jR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};qM.exports=jR});var KM=C((tOe,VM)=>{"use strict";var QR=ht(),NX=X(),$M=Un().LMDB_ERRORS_ENUM;VM.exports=wX;async function wX(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 QR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==$M.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await QR.closeEnvironment(global.lmdb_map[n]),await QR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==$M.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){NX.error(t)}}a(wX,"cleanLMDBMap")});var sv=C((sOe,nv)=>{"use strict";var JR=require("recursive-iterator"),IX=require("alasql"),XR=require("clone"),YM=ie(),{handleHDBError:WM,hdb_errors:CX}=he(),{HDB_ERROR_MSGS:zM,HTTP_STATUS_CODES:jM}=CX,{getDatabases:PX}=(xe(),P(ct)),DX=["DISTINCT_ARRAY"],QM=Symbol("validateTables"),ZR=Symbol("validateTable"),nOe=Symbol("getAllColumns"),JM=Symbol("validateAllColumns"),Fp=Symbol("findColumn"),XM=Symbol("validateOrderBy"),Zf=Symbol("validateSegment"),ey=Symbol("validateColumn"),ZM=Symbol("setColumnsForTable"),ev=Symbol("checkColumnsForAsterisk"),tv=Symbol("validateGroupBy"),rv=Symbol("hasColumns"),ty=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[QM](),this[ev](),this[JM]()}[QM](){if(this[rv]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[ZR](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[ZR](t.table)})}}[rv](){let t=!1,r=new JR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[ZR](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=PX();if(!r[t.databaseid])throw WM(new Error,zM.SCHEMA_NOT_FOUND(t.databaseid),jM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw WM(new Error,zM.TABLE_NOT_FOUND(t.databaseid,t.tableid),jM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=XR(s);i.table=XR(t),this.attributes.push(i)})}[Fp](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)}[ev](){let t=new JR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[ZM](r.tableid)}[ZM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new IX.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[JM](){this[Zf](this.statement.columns,!1),this[Zf](this.statement.joins,!1),this[Zf](this.statement.where,!1),this[tv](this.statement.group,!1),this[Zf](this.statement.order,!0)}[Zf](t,r){if(!t)return;let n=new JR(t),s=[];for(let{node:i,path:o}of n)!YM.isEmpty(i)&&!YM.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[XM](i):s.push(this[ey](i)));return s}[tv](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&DX.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=XR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Fp](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[Fp](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`}[XM](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[ey](t)}[ey](t){let r=this[Fp](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]}};nv.exports=ty});var cv=C((oOe,av)=>{"use strict";var iv=require("lodash"),e_=require("mathjs"),LX=require("jsonata"),ov=ie();av.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?iv.uniqWith(e,iv.isEqual):e,"distinct_array"),searchJSON:MX,mad:t_.bind(null,e_.mad),mean:t_.bind(null,e_.mean),mode:t_.bind(null,e_.mode),prod:t_.bind(null,e_.prod),median:t_.bind(null,e_.median)};function t_(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(t_,"aggregateFunction");function MX(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(ov.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),ov.isEmpty(this.__ala__.res[r])){let n=LX(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(MX,"searchJSON")});var uv=C((cOe,lv)=>{"use strict";var tr=require("moment"),ry="YYYY-MM-DDTHH:mm:ss.SSSZZ";tr.suppressDeprecationWarnings=!0;lv.exports={current_date:a(()=>tr().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>tr().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return tr(e).utc().format("YYYY");case"month":return tr(e).utc().format("MM");case"day":return tr(e).utc().format("DD");case"hour":return tr(e).utc().format("HH");case"minute":return tr(e).utc().format("mm");case"second":return tr(e).utc().format("ss");case"millisecond":return tr(e).utc().format("SSS");default:break}},"extract"),date:a(e=>tr(e).utc().format(ry),"date"),date_format:a((e,t)=>tr(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>tr(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>tr(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=tr(e).utc(),s=tr(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>tr().utc().valueOf(),"now"),get_server_time:a(()=>tr().format(ry),"get_server_time"),offset_utc:a((e,t)=>tr(e).utc().utcOffset(t).format(ry),"offset_utc")}});var hv=C((uOe,_v)=>{"use strict";var vX=require("@turf/area"),UX=require("@turf/length"),xX=require("@turf/circle"),BX=require("@turf/difference"),HX=require("@turf/distance"),kX=require("@turf/boolean-contains"),FX=require("@turf/boolean-equal"),qX=require("@turf/boolean-disjoint"),GX=require("@turf/helpers"),dv=(k(),P(q)),Ke=ie(),_o=X();_v.exports={geoArea:$X,geoLength:VX,geoCircle:KX,geoDifference:YX,geoDistance:fv,geoNear:WX,geoContains:zX,geoEqual:jX,geoCrosses:QX,geoConvert:JX};function $X(e){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return vX.default(e)}catch(t){return _o.trace(t,e),NaN}}a($X,"geoArea");function VX(e,t){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return UX.default(e,{units:t||"kilometers"})}catch(r){return _o.trace(r,e),NaN}}a(VX,"geoLength");function KX(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return xX.default(e,t,{units:r||"kilometers"})}catch(n){return _o.trace(n,e,t),NaN}}a(KX,"geoCircle");function YX(e,t){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return BX(e,t)}catch(r){return _o.trace(r,e,t),NaN}}a(YX,"geoDifference");function fv(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return HX.default(e,t,{units:r||"kilometers"})}catch(n){return _o.trace(n,e,t),NaN}}a(fv,"geoDistance");function WX(e,t,r,n){if(Ke.isEmpty(e)||Ke.isEmpty(t))return!1;if(Ke.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return fv(e,t,n)<=r}catch(s){return _o.trace(s,e,t),!1}}a(WX,"geoNear");function zX(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return kX.default(e,t)}catch(r){return _o.trace(r,e,t),!1}}a(zX,"geoContains");function jX(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return FX.default(e,t)}catch(r){return _o.trace(r,e,t),!1}}a(jX,"geoEqual");function QX(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return!qX.default(e,t)}catch(r){return _o.trace(r,e,t),!1}}a(QX,"geoCrosses");function JX(e,t,r){if(Ke.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ke.isEmpty(t))throw new Error("geo_type is required");if(Ke.isEmpty(dv.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(dv.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ke.autoCastJSON(e)),GX[t](e,r)}a(JX,"geoConvert")});var qp=C((fOe,mv)=>{var Bc=cv(),qn=uv(),wi=hv();mv.exports=e=>{e.aggr.mad=e.aggr.MAD=Bc.mad,e.aggr.mean=e.aggr.MEAN=Bc.mean,e.aggr.mode=e.aggr.MODE=Bc.mode,e.aggr.prod=e.aggr.PROD=Bc.prod,e.aggr.median=e.aggr.MEDIAN=Bc.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Bc.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Bc.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=qn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=qn.current_time,e.fn.extract=e.fn.EXTRACT=qn.extract,e.fn.date=e.fn.DATE=qn.date,e.fn.date_format=e.fn.DATE_FORMAT=qn.date_format,e.fn.date_add=e.fn.DATE_ADD=qn.date_add,e.fn.date_sub=e.fn.DATE_SUB=qn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=qn.date_diff,e.fn.now=e.fn.NOW=qn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=qn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=qn.get_server_time,e.fn.getdate=e.fn.GETDATE=qn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=qn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=wi.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=wi.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=wi.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=wi.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=wi.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=wi.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=wi.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=wi.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=wi.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=wi.geoNear}});var Sv=C((_Oe,gv)=>{"use strict";var r_=require("lodash"),Tn=require("alasql");Tn.options.cache=!1;var XX=qp(),pv=require("clone"),Gp=require("recursive-iterator"),ke=X(),Je=ie(),_u=Gn(),ZX=(k(),P(q)),{hdb_errors:e6}=he(),{getDatabases:Ev}=(xe(),P(ct)),t6="IS NULL",Vs="There was a problem performing this search. Please check the logs and try again.";XX(Tn);var ny=class{static{a(this,"SQLSearch")}constructor(t,r){if(Je.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(),Je.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!Je.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(Vs)}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(Vs)}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(Vs)}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(Vs)}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(Vs)}}_getColumns(){let t=new Gp(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(pv(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=r_.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].__hash_name=Ev()[r.databaseid][r.tableid].primaryKey,this.data[n].__merged_data={},this.data[n].__merged_attributes=[],this.data[n].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(Je.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new Gp(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!Je.isEmpty(r)&&r.right)if(Je.isNotEmptyAndHasValue(r.right.value)){let n=Je.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new Tn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=Je.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new Tn.yy.LogicValue({value:i}):n instanceof Tn.yy.StringValue&&Je.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Tn.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 Gp(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(!Je.isEmpty(ZX.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(Je.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(Je.isEmptyOrZeroLength(r.left.columnid)||Je.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,search_value:r.right.value})}continue}if(Je.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"=":!Je.isEmpty(r.right.value)||!Je.isEmpty(r.left.value)?n.add(Je.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(Je.isEmptyOrZeroLength(this.all_table_attributes)&&Je.isEmptyOrZeroLength(this.statement.from)&&Je.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&&r_.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(Je.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);Je.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(Je.isEmptyOrZeroLength(this.all_table_attributes)&&!Je.isEmptyOrZeroLength(this.columns.columns))return t;if(Je.isEmptyOrZeroLength(this.all_table_attributes)&&Je.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await Tn.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(pv(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__merged_attributes.push(r),this.data[t].__merged_attr_map[r]=this.data[t].__merged_attributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__merged_data[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__merged_attr_map[n];this.data[t].__merged_data[r].splice(i,1,s)}async _getFetchAttributeValues(){if(Je.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(t6)>-1&&this.tables.forEach(s=>{let i={columnid:Ev()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=r_.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].__hash_name;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].__hash_name,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),!Je.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!Je.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let f=await _u.getDataByHash(c);for(let d of c.hash_values)f.get(d)&&!this.data[i].__merged_data[d]&&(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Vs)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async f=>{let d={...c};d.search_value=f;let _=await _u.getDataByValue(d);for(let[h,m]of _)this.data[i].__merged_data[h]?this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]):(this.data[i].__merged_data[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Vs)}else if(!Je.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!Je.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let f=this.comparator_search_values[u].comparators;for(let d=0,_=f.length;d<_;d++){let h=f[d];c.search_attribute=h.attribute,c.search_value=h.search_value;let m=await _u.getDataByValue(c,h.operation);if(l)for(let[S]of m)this.data[i].__merged_data[S]||(this.data[i].__merged_data[S]=[...n[i]],this._setMergedHashAttribute(i,S));else for(let[S,g]of m)this.data[i].__merged_data[S]?this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]):(this.data[i].__merged_data[S]=[...n[i]],this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]),this._setMergedHashAttribute(i,S))}}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),ke.error(f),new Error(Vs)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await _u.getDataByValue(c);if(l)for(let[d]of f)this.data[i].__merged_data[d]||(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d));else for(let[d,_]of f)this.data[i].__merged_data[d]?this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]):(this.data[i].__merged_data[d]=[...n[i]],this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]),this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),ke.error(f),new Error(Vs)}}}_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 Tn.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 Tn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Tn.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 Tn.yy.FuncValue:new Tn.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}`].__merged_data)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let m=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(m+=" ON "+h.on.toString()),i.push(m),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__merged_data))});let o=[],c={};s.forEach(h=>{let m=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hash_name,S=h.as?h.as_orig:h.tableid_orig;o.push({key:`'${S}.${m}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${m}\` AS "${S}.${m}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__merged_attributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(h=>{h.is_func?r.push(h.initial_select_column.toString()):h.initial_select_column.tableid?r.push(`${h.initial_select_column.tableid}.${h.initial_select_column.columnid} AS ${h.expression.columnid}`):r.push(`${h.initial_select_column.columnid} AS ${h.expression.columnid}`)}));let f="",d="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(f=this.statement.limit?"LIMIT "+this.statement.limit:"",d=this.statement.offset?"OFFSET "+this.statement.offset:"");let _=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${f} ${d}`,m=this._convertColumnsToIndexes(h,s);_=await Tn.promise(m,t),t=null}catch(h){throw ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),ke.error(h),new Error("There was a problem processing the data.")}if(_&&_.length>0){for(let h=0,m=_.length;h<m;h++){let S=_[h];o.forEach(g=>{S[g.key]!==null&&S[g.key]!==void 0&&g.keys.add(S[g.key])})}o.forEach(h=>{let m=Object.keys(this.data[`${h.schema}_${h.table}`].__merged_data),S=r_.difference(m,[...h.keys].map(g=>g.toString()));for(let g=0,A=S.length;g<A;g++){let E=S[g];delete this.data[`${h.schema}_${h.table}`].__merged_data[E]}})}return{existing_attributes:c,joined_length:_?_.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new Gp(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=r_.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(Vs)}}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].__merged_data,o=[];for(let f in i)o.push(i[f][0]);this.data[n].__merged_attributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:o,get_attributes:s.columns},l=await _u.getDataByHash(c),u=s.columns.length;for(let f=0,d=o.length;f<d;f++){let _=o[f],h=l.get(_);for(let m=0;m<u;m++){let S=s.columns[m],g=h[S]===void 0?null:h[S];this.data[n].__merged_data[_].push(g)}}}}catch(r){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__merged_data)),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}`].__merged_data)),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 Tn.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(e6.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].__merged_attributes.forEach((o,c)=>{let l=s[i],u=new RegExp(`${l}.\`${o}\``,"g"),f=`${l}.[${c}]`;n=n.replace(u,f)});for(let i in this.data)this.data[i].__merged_attributes.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.search_attribute=n.attribute,i.search_value="*";let o=await _u.getDataByValue(i);for(let[c,l]of o)this.data[s].__merged_data[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__merged_data[c]={...r[s]}),this.data[s].__merged_data[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(Vs)}}return Object.values(Object.values(this.data)[0].__merged_data)}};gv.exports=ny});var Wr=C((mOe,Tv)=>{"use strict";var r6=sv();Tv.exports={searchByConditions:s6,searchByHash:i6,searchByValue:o6,search:a6};var sy=Gn(),{transformReq:iy}=ie(),n6=Sv();async function s6(e){return iy(e),sy.searchByConditions(e)}a(s6,"searchByConditions");async function i6(e){iy(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of sy.searchByHash(e))r&&t.push(r);return t}a(i6,"searchByHash");async function o6(e){iy(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of sy.searchByValue(e))t.push(r);return t}a(o6,"searchByValue");function a6(e,t){try{let r=new r6(e);r.validate(),new n6(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(a6,"search")});var ho=C((EOe,bv)=>{"use strict";var n_=require("crypto"),c6=oe(),{CONFIG_PARAMS:l6}=(k(),P(q)),Rv="aes-256-cbc",u6=32,d6=16,oy=64,yv=32,f6=oy+yv,Av=new Map;bv.exports={encrypt:_6,decrypt:h6,createNatsTableStreamName:m6};function _6(e){let t=n_.randomBytes(u6),r=n_.randomBytes(d6),n=n_.createCipheriv(Rv,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(_6,"encrypt");function h6(e){let t=e.substr(0,oy),r=e.substr(oy,yv),n=e.substr(f6,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=n_.createDecipheriv(Rv,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(h6,"decrypt");function m6(e,t){let r=c6.get(l6.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=Av.get(r);return n||(n=n_.createHash("md5").update(r).digest("hex"),Av.set(r,n)),n}a(m6,"createNatsTableStreamName")});var Ii=C((TOe,Iv)=>{"use strict";var SOe=Wr(),s_=X(),{validateBySchema:Ov}=tt(),Hc=require("joi"),p6=ho(),$p=ie(),{handleHDBError:Vp,hdb_errors:E6,ClientError:Nv}=he(),{HDB_ERROR_MSGS:Kp,HTTP_STATUS_CODES:ay}=E6,wv=oe();wv.initSync();var{getDatabases:cy}=(xe(),P(ct)),g6=require("fs-extra"),S6=(k(),P(q));Iv.exports={describeAll:T6,describeTable:Yp,describeSchema:A6};async function T6(e={}){try{let t=$p.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=cy(),o={},c={},l=[],u=e?.exact_count;for(let d in i){o[d]=!0,!t&&!s&&!r&&(c[d]=e.hdb_user?.role?.permission[d]?.describe);let _=i[d];for(let h in _)try{let m;if(t||s||r)m=await Yp({schema:d,table:h,exact_count:u});else if(n&&n[d].describe&&n[d].tables[h].describe){let S=n[d].tables[h].attribute_permissions;m=await Yp({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){s_.error(m)}}let f={};for(let d in l)t||s||r?(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]):c[l[d].schema]&&(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]);for(let d in o)t||s||r?f[d]={}:c[d]&&(f[d]={});return f}catch(t){return s_.error("Got an error in describeAll"),s_.error(t),Vp(new Error,Kp.DESCRIBE_ALL_ERR)}}a(T6,"describeAll");async function Yp(e,t){$p.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=Ov(e,Hc.object({database:Hc.string(),table:Hc.string().required(),exact_count:Hc.boolean().strict()}));if(i)throw new Nv(i.message);let c=cy()[r];if(!c)throw Vp(new Error,Kp.SCHEMA_NOT_FOUND(e.schema),ay.NOT_FOUND);let l=c[n];if(!l)throw Vp(new Error,Kp.TABLE_NOT_FOUND(e.schema,e.table),ay.NOT_FOUND);function u(h){f.push({attribute:h.attribute,type:h.type,elements:h.elements?.type,indexed:h.indexed,is_primary_key:h.isPrimaryKey,assigned_created_time:h.assignCreatedTime,assigned_updated_time:h.assignUpdatedTime,nullable:h.nullable,properties:h.properties?h.properties.map(m=>({type:m.type,name:m.name})):void 0})}a(u,"pushAtt");let f=[];if(s){let h={};s.forEach(m=>{m.describe&&(h[m.attribute_name]=!0)}),l.attributes.forEach(m=>{h[m.name]&&u(m)})}else l.attributes?.forEach(h=>u(h));let d;try{d=(await g6.stat(l.primaryStore.env.path)).size}catch(h){s_.warn("unable to get database size",h)}let _={schema:r,name:l.tableName,hash_attribute:l.attributes.find(h=>h.isPrimaryKey||h.is_hash_attribute)?.name,audit:l.audit,schema_defined:l.schemaDefined,attributes:f,db_size:d};l.replicate!==void 0&&(_.replicate=l.replicate),l.expirationMS!==void 0&&(_.expiration=l.expirationMS/1e3+"s"),l.sealed!==void 0&&(_.sealed=l.sealed),l.sources?.length>0&&(_.sources=l.sources.map(h=>h.name).filter(h=>h&&h!=="NATSReplicator"&&h!=="Replicator")),wv.get(S6.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=p6.createNatsTableStreamName(_.schema,_.name));try{let h=await l.getRecordCount({exactCount:!!e.exact_count});_.record_count=h.recordCount,_.table_size=l.getSize(),_.db_audit_size=l.getAuditSize(),_.estimated_record_range=h.estimatedRange;let m=l.auditStore;if(m)for(let S of m.getKeys({reverse:!0,limit:1}))_.last_updated_record=S[0];if(!_.last_updated_record&&l.indices.__updatedtime__)for(let S of l.indices.__updatedtime__.getKeys({reverse:!0,limit:1}))_.last_updated_record=S}catch(h){s_.warn(`unable to stat table dbi due to ${h}`)}return _}a(Yp,"descTable");async function A6(e){$p.transformReq(e);let t=Ov(e,Hc.object({database:Hc.string(),exact_count:Hc.boolean().strict()}));if(t)throw new Nv(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=cy()[n];if(!i)throw Vp(new Error,Kp.SCHEMA_NOT_FOUND(e.schema),ay.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),$p.isEmpty(l)||l.describe){let u=await Yp({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(A6,"describeSchema")});var ms=C((bOe,Mv)=>{var R6=uo(),{callbackify:Pv,promisify:y6}=require("util"),{getDatabases:Dv}=(xe(),P(ct));Mv.exports={setSchemaDataToGlobal:Cv,getTableSchema:b6,getSystemSchema:O6,setSchemaDataToGlobalAsync:y6(Cv)};var Lv=Ii(),ROe=Pv(Lv.describeAll),yOe=Pv(Lv.describeTable);function Cv(e){global.hdb_schema=Dv(),e&&e()}a(Cv,"setSchemaDataToGlobal");function b6(e,t,r){let n=Dv()[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(b6,"getTableSchema");function O6(){return R6}a(O6,"getSystemSchema")});var uy=C((NOe,xv)=>{var N6=tt(),ly=require("joi"),{hdb_table:w6,hdb_database:vv}=Oi(),Uv={schema:vv,database:vv,table:w6},I6={date:ly.date().iso().required()},C6={timestamp:ly.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};xv.exports=function(e,t){let r=t==="timestamp"?{...Uv,...C6}:{...Uv,...I6},n=ly.object(r);return N6.validateBySchema(e,n)}});var kv=C((wOe,Hv)=>{var P6=tt(),dy=require("joi"),{hdb_table:D6,hdb_database:Bv}=Oi(),L6=dy.object({schema:Bv,database:Bv,table:D6,hash_values:dy.array().required(),ids:dy.array()});Hv.exports=function(e){return P6.validateBySchema(e,L6)}});var my=C((IOe,Fv)=>{"use strict";var fy=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}},_y=class{static{a(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,o){this.schema=t,this.table=r,this.search_attribute=n,this.hash_attribute=s,this.get_attributes=i,this.search_value=o}},hy=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};Fv.exports={InsertObject:fy,NoSQLSeachObject:_y,DeleteResponseObject:hy}});var _a=C((POe,Kv)=>{"use strict";var Gv=uy(),M6=kv(),kc=ie(),qv=require("moment"),$v=X(),{promisify:v6,callbackify:U6}=require("util"),Fc=(k(),P(q)),x6=ms(),py=v6(x6.getTableSchema),Ey=Gn(),{DeleteResponseObject:B6}=my(),{handleHDBError:da,hdb_errors:H6}=he(),{HDB_ERROR_MSGS:Wp,HTTP_STATUS_CODES:fa}=H6,k6="records successfully deleted",F6=U6(Vv);Kv.exports={delete:F6,deleteRecord:Vv,deleteFilesBefore:q6,deleteAuditLogsBefore:G6};async function q6(e){let t=Gv(e,"date");if(t)throw da(t,t.message,fa.BAD_REQUEST,void 0,void 0,!0);if(kc.transformReq(e),!qv(e.date,qv.ISO_8601).isValid())throw da(new Error,Wp.INVALID_DATE,fa.BAD_REQUEST,Fc.LOG_LEVELS.ERROR,Wp.INVALID_DATE,!0);let n=kc.checkSchemaTableExist(e.schema,e.table);if(n)throw da(new Error,n,fa.NOT_FOUND,Fc.LOG_LEVELS.ERROR,n,!0);let s=await Ey.deleteRecordsBefore(e);if(await py(e.schema,e.table),$v.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(q6,"deleteFilesBefore");async function G6(e){let t=Gv(e,"timestamp");if(t)throw da(t,t.message,fa.BAD_REQUEST,void 0,void 0,!0);if(kc.transformReq(e),isNaN(e.timestamp))throw da(new Error,Wp.INVALID_VALUE("Timestamp"),fa.BAD_REQUEST,Fc.LOG_LEVELS.ERROR,Wp.INVALID_VALUE("Timestamp"),!0);let r=kc.checkSchemaTableExist(e.schema,e.table);if(r)throw da(new Error,r,fa.NOT_FOUND,Fc.LOG_LEVELS.ERROR,r,!0);let n=await Ey.deleteAuditLogsBefore(e);return await py(e.schema,e.table),$v.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(G6,"deleteAuditLogsBefore");async function Vv(e){e.ids&&(e.hash_values=e.ids);let t=M6(e);if(t)throw da(t,t.message,fa.BAD_REQUEST,void 0,void 0,!0);kc.transformReq(e);let r=kc.checkSchemaTableExist(e.schema,e.table);if(r)throw da(new Error,r,fa.NOT_FOUND,Fc.LOG_LEVELS.ERROR,r,!0);try{await py(e.schema,e.table);let n=await Ey.deleteRecords(e);return kc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${k6}`),n}catch(n){if(n.message===Fc.SEARCH_NOT_FOUND_MESSAGE){let s=new B6;return s.message=Fc.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(Vv,"deleteRecord")});var zp={};Ue(zp,{HASH_FUNCTION:()=>a_,hash:()=>Ty,validate:()=>Ay});function gy(e=o_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(i_.randomBytes(e)).map(r=>t[r%t.length]).join("")}function Ty(e,t=a_[Wv?.toUpperCase()]??"sha256"){return Sy[t](e)}function Ay(e,t,r=a_[Wv?.toUpperCase()]??"sha256"){return e?$6[r](e,t):!1}var i_,hu,Yv,Wv,o_,zv,a_,Sy,$6,jp=Re(()=>{i_=v(require("node:crypto")),hu=v(require("argon2")),Yv=v(oe());k();Wv=(0,Yv.get)(x.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),o_=16,zv=9,a_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(a_||{});a(gy,"generateSalt");Sy={md5:a((e,t=void 0)=>{t=t??gy(zv);let r=i_.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??gy(o_);let r=i_.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=gy(o_),r=await hu.hash(e,{type:hu.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},$6={md5:a((e,t)=>{let r=e.slice(0,zv);return e===Sy.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,o_);return e===Sy.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await hu.verify(e.slice(o_),t),"argon2id")};a(Ty,"hash");a(Ay,"validate")});var Qv=C((vOe,jv)=>{var Ry=tt(),zr={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 V6(e){return zr.password.presence=!0,zr.username.presence=!0,zr.role.presence=!0,zr.active.presence=!0,Ry.validateObject(e,zr)}a(V6,"addUserValidation");function K6(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,Ry.validateObject(e,zr)}a(K6,"alterUserValidation");function Y6(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,Ry.validateObject(e,zr)}a(Y6,"dropUserValidation");jv.exports={addUserValidation:V6,alterUserValidation:K6,dropUserValidation:Y6}});var lt=C((BOe,Xv)=>{"use strict";var{platform:xOe}=require("os"),W6="nats-server.zip",yy="nats-server",z6=process.platform==="win32"?`${yy}.exe`:yy,j6=/^[^\s.,*>]+$/,Jv="__request__",Q6=a(e=>`${e}.${Jv}`,"REQUEST_SUBJECT"),J6={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},X6={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Z6={HUB:"hub.pid",LEAF:"leaf.pid"},eZ={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},tZ={SUCCESS:"success",ERROR:"error"},rZ={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},nZ={TXN:"txn",MSGID:"msgid"},mu={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},sZ={[mu.ERR]:1,[mu.WRN]:2,[mu.INF]:3,[mu.DBG]:4,[mu.TRC]:5},iZ={debug:"-D",trace:"-DVV"};Xv.exports={NATS_SERVER_ZIP:W6,NATS_SERVER_NAME:yy,NATS_BINARY_NAME:z6,PID_FILES:Z6,NATS_CONFIG_FILES:X6,SERVER_SUFFIX:eZ,NATS_TERM_CONSTRAINTS_RX:j6,REQUEST_SUFFIX:Jv,UPDATE_REMOTE_RESPONSE_STATUSES:tZ,CLUSTER_STATUS_STATUSES:rZ,REQUEST_SUBJECT:Q6,SUBJECT_PREFIXES:nZ,MSG_HEADERS:J6,LOG_LEVELS:mu,LOG_LEVEL_FLAGS:iZ,LOG_LEVEL_HIERARCHY:sZ}});var by=C(Zv=>{"use strict";var oZ={cert:"-----BEGIN CERTIFICATE-----\rMIIDXDCCAkSgAwIBAgIFNTE4MzQwDQYJKoZIhvcNAQELBQAwXTEXMBUGA1UEAxMO\rSGFycGVyREIsIEluYy4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UE\rBxMGRGVudmVyMRcwFQYDVQQKEw5IYXJwZXJEQiwgSW5jLjAeFw0yMjAzMTEyMzAz\rNDlaFw0yNzAzMTAyMzAzNDlaMF0xFzAVBgNVBAMTDkhhcnBlckRCLCBJbmMuMQsw\rCQYDVQQGEwJVUzELMAkGA1UECBMCQ08xDzANBgNVBAcTBkRlbnZlcjEXMBUGA1UE\rChMOSGFycGVyREIsIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\rAQCsEUlBF8WImS78rCFXVKyntxfrW++4qZ3hGnoD2MHZAuDHyeP/5eGnaE9GQhKc\r4DwG4DGvh0wP2zIYnBfiQ3L2ZtnlDR9ZkKIQYGlVxTUn6T43krhK5nZKqDF43Yg3\rZEvO3cbJBjiKZx0eA2/toehdSsTAHHQx5gTDcggNe2tgoJHYPwi9YF/AxSBZrbgb\ryWlYgtYDmF32ytHP03GUCIdKOFuBPsHTGu4SkdEIdLIqO9oglW1YFH5qZ6NiwApW\rsP+GCuqOwDXXbdjr75iq9Tq/CDrjGFLaTPmvd2Q0qG/BtaCll0ghpG+yIHvt/iQs\rajS+LxEWAnVlGMaDdFErbDUtAgMBAAGjIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYD\rVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4IBAQASR4YW/rPK7PNArHVe9zzM\rb0rKNX/2T9/0nybRhmE/+hdlSgliTAeebmwkUS2APckmekYt/q2ZY2NS65Fo/jjp\rG8TJrtcF4h+ylVqUp0ZXQLFtIsr7r2JZA7hJ6njW6G4DHSZ0gxtECLi4CBlTjzm5\rNmnmIDObvGRTuqmcdAZmXeObbta/He2XIzietukPAYX062pNM+G5XT5UM1eG/Vlp\rN86vjhpyI+ffKy+C60SJqxmKM3ydgN7oLscE7+2wLPN25XqN4W99OwGsp5dTdu/f\r5lPtFayXdJ55e/sNQKmGN+UGLrL05c2MWgjb8U/LFilnupUianceoeSERZmVjzKX\r-----END CERTIFICATE-----\r".replace(/\r/g,`\r
|
|
16
|
+
`},"serialize"),compressible:!1,q:.8});Yr.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()}});BL={type:"application/json",serializeStream:Lf,serialize:Bf,deserialize:V4,q:.5};Yr.set("*/*",BL);Yr.set("",BL);a(V4,"tryJSONParse");a(kf,"registerContentHandlers");K4=require("fastify-plugin"),Y4=K4(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=Rp(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 f=l.getColumns;l=l.mapError(d=>(d.toJSON=()=>({error:d.name,message:d.message,...d.partialObject}),d)),l.getColumns=f}u=o.serializeStream}else u=o.serialize;return u(l,{headers:{set:a((f,d)=>{s.header(f,d)},"set")}})})}),r()},{name:"content-type-negotiation"});a(Rp,"findBestSerializer");LL=hR.default.get(x.HTTP_COMPRESSIONTHRESHOLD);a(Ff,"serialize");a(ca,"serializeMessage");a(fR,"asyncSerialization");a(_R,"hasAsyncSerialization");a(W4,"streamToBuffer");z4=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(j4,"isBufferEncoding");a(Q4,"parseContentType");a(co,"getDeserializer");a(J4,"deserializerUnknownType");a(X4,"transformIterable");a(Ap,"toCsvStream")});var SR={};Ue(SR,{start:()=>a3});function Z4(e){if(e.kind!==Le.Kind.OPERATION_DEFINITION&&e.kind!==Le.Kind.FRAGMENT_DEFINITION)throw new Or(`Unexpected non-executable definition type ${e.kind}.`)}function kL(e){if(typeof e!="object"||e===null)throw new yi("Request body must be an object.");if(!("query"in e))throw new yi("Request body must contain a `query` field.");if(typeof e.query!="string")throw new yi("Request body `query` field must be a string.");if("variables"in e&&(typeof e.variables!="object"||e.variables===null))throw new yi("Request body `variables` field must be an object.");if("operationName"in e&&typeof e.operationName!="string")throw new yi("Request body `operationName` field must be a string.")}function gR(e){return parseInt(e.value,10)}function qL(e){return parseFloat(e.value)}function GL(e,t,r){let n=r.get(e.name.value);return $L(n)?VL(n,t):{attribute:t,value:n}}function $L(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function VL(e,t){return t=typeof t=="string"?[t]:t,Object.entries(e).flatMap(([r,n])=>(t=[...t,r],$L(n)?VL(n,t):{attribute:t,value:n}))}function e3(e,t,r){switch(t=[...t,e.name.value],e.value.kind){case Le.Kind.NULL:return{attribute:t,value:null};case Le.Kind.INT:return{attribute:t,value:gR(e.value)};case Le.Kind.FLOAT:return{attribute:t,value:qL(e.value)};case Le.Kind.BOOLEAN:case Le.Kind.STRING:return{attribute:t,value:e.value.value};case Le.Kind.VARIABLE:return GL(e.value,t,r);case Le.Kind.OBJECT:return KL(e.value,t,r);case Le.Kind.LIST:case Le.Kind.ENUM:default:throw new Or(`Value type, ${e.value.kind}, is not supported.`)}}function KL(e,t,r){return e.fields.flatMap(n=>e3(n,t,r))}function t3(e,t){switch(e.value.kind){case Le.Kind.NULL:return{attribute:e.name.value,value:null};case Le.Kind.INT:return{attribute:e.name.value,value:gR(e.value)};case Le.Kind.FLOAT:return{attribute:e.name.value,value:qL(e.value)};case Le.Kind.BOOLEAN:case Le.Kind.STRING:return{attribute:e.name.value,value:e.value.value};case Le.Kind.VARIABLE:return GL(e.value,e.name.value,t);case Le.Kind.OBJECT:return KL(e.value,[e.name.value],t);case Le.Kind.LIST:case Le.Kind.ENUM:default:throw new Or(`Argument type, ${e.value.kind}, is not supported.`)}}function r3(e,t){return e.flatMap(r=>t3(r,t))}function yp(e,t){return e.selections.flatMap(r=>{switch(r.kind){case Le.Kind.FIELD:return r;case Le.Kind.FRAGMENT_SPREAD:{let n=r.name.value,s=t.get(n);if(s==null)throw new Or(`Fragment \`${n}\` not found.`);return yp(s.selectionSet,t)}case Le.Kind.INLINE_FRAGMENT:return yp(r.selectionSet,t)}})}function YL(e,t){return yp(e,t).map(r=>r.selectionSet?.selections.length>0?{name:r.name.value,select:YL(r.selectionSet,t)}:r.name.value)}async function n3(e,t,r,n){let s=fs.getMatch(e.name.value,"graphql");if(s===void 0)throw new Or(`Resource \`${e.name.value}\` not found.`);let i=s.Resource,o={select:YL(e.selectionSet,r),conditions:r3(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 WL(e){switch(e.kind){case Le.Kind.NULL:return null;case Le.Kind.INT:return gR(e);case Le.Kind.FLOAT:return parseFloat(e.value);case Le.Kind.STRING:case Le.Kind.BOOLEAN:return e.value;case Le.Kind.OBJECT:return e.fields.reduce((t,r)=>({[r.name.value]:WL(r.value),...t}),{});case Le.Kind.LIST:case Le.Kind.ENUM:default:throw new Or(`Value type, ${e.kind}, is not supported.`)}}function s3(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=WL(n.defaultValue)),n.type.kind===Le.Kind.NON_NULL_TYPE&&!(s in t)&&i===void 0)throw new Or(`Variable $${s} is required, but not provided.`);r.set(n.variable.name.value,i??null)}return r}async function i3(e,t,r,n){if(e.operation===Le.OperationTypeNode.SUBSCRIPTION)throw new Or("Subscriptions are not supported.");if(e.operation===Le.OperationTypeNode.MUTATION)throw new Or("Mutations are not supported yet.");let s=s3(e.variableDefinitions,t),i=await Promise.all(yp(e.selectionSet,r).map(c=>n3(c,s,r,n))),o={data:{}};for(let[c,l]of i)o.data[c]=l;return o}async function FL({query:e,variables:t={},operationName:r},n){let s=Le.parse(e),i=new Map,o=new Map;for(let u of s.definitions)if(Z4(u),u.kind===Le.Kind.FRAGMENT_DEFINITION)o.set(u.name.value,u);else{if(u.name===void 0&&s.definitions.length>1)throw new Or("Unnamed operations are only allowed when there is a single operation in the document.");let f=u.name?.value??"Unnamed Query";if(i.has(f))throw new Or(`Duplicate operation definition: ${f}`);i.set(f,u)}let c;if(r==null)if(i.size===1)c=i.entries().next().value[1];else throw new Or("Operation name is required when there are multiple operations in the document.");else if(c=i.get(r),c==null)throw new Or(`Operation \`${r}\` not found.`);let l=await i3(c,t,o,n);return{status:200,headers:{"Content-Type":"application/graphql-response+json; charset=utf-8"},body:JSON.stringify(l)}}async function o3(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 kL(r),FL(r,e)}case"POST":{let r=await co(e.headers.get("content-type"),!0)(e._nodeRequest);return kL(r),FL(r,e)}default:throw new yi("Method Not Allowed",405,{Allow:"GET, POST"})}}function a3(e){e.server.http(async(t,r)=>{if(!t.url.startsWith("/graphql"))return r(t);try{return await o3(t)}catch(n){logger.error(n);let s=t.headers.get("accept")??"application/graphql-response+json";switch(s){case"application/json":{if(n instanceof yi)return{status:n.statusCode,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/json",...n.headers}};if(n instanceof Le.GraphQLError)return{status:200,body:JSON.stringify({errors:[n]}),headers:{"Content-Type":"application/json"}};if(n instanceof Or)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:logger.info(`Unsupported accept header, ${s}, defaulting to application/graphql-response+json`);case"application/graphql-response+json":{if(n instanceof yi)return{status:n.statusCode,body:JSON.stringify({errors:[{message:n.message}]}),headers:{"Content-Type":"application/graphql-response+json",...n.headers}};if(n instanceof Le.GraphQLError)return{status:400,body:JSON.stringify({errors:[n]}),headers:{"Content-Type":"application/graphql-response+json"}};if(n instanceof Or)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 Le,Or,yi,zL=Re(()=>{Le=v(require("graphql"));io();su();a(Z4,"assertExecutableDefinitionNode");a(kL,"assertRequestParams");a(gR,"processIntValueNode");a(qL,"processFloatValueNode");a(GL,"processVariableNode");a($L,"isObject");a(VL,"transformObjectIntoQueryCondition");a(e3,"processObjectFieldNode");a(KL,"processObjectValueNode");a(t3,"processArgumentNode");a(r3,"buildConditionsQuery");a(yp,"fillInFragments");a(YL,"buildSelectQuery");a(n3,"processFieldNode");a(WL,"processConstValueNode");a(s3,"resolveVariables");a(i3,"executeOperation");a(FL,"resolver");Or=class extends Error{static{a(this,"GraphQLQueryingError")}},yi=class extends Error{static{a(this,"HTTPError")}statusCode;headers;constructor(t,r=400,n={}){super(t),this.statusCode=r,this.headers=n}};a(o3,"graphqlQueryingHandler");a(a3,"start")});var Oi=C((lbe,JL)=>{"use strict";var QL=ie(),jL=(k(),P(q)),du=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,bi=require("joi"),la={schema_format:{pattern:du,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},c3=bi.alternatives(bi.string().min(1).max(la.schema_length.maximum).pattern(du).messages({"string.pattern.base":"{:#label} "+la.schema_format.message}),bi.number(),bi.array()).required(),l3=bi.alternatives(bi.string().min(1).max(la.schema_length.maximum).pattern(du).messages({"string.pattern.base":"{:#label} "+la.schema_format.message}),bi.number()),u3=bi.alternatives(bi.string().min(1).max(la.schema_length.maximum).pattern(du).messages({"string.pattern.base":"{:#label} "+la.schema_format.message}),bi.number()).required();function d3(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>la.schema_length.maximum?`'${e}' maximum of 250 characters`:du.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(d3,"checkValidTable");function f3(e,t){return QL.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(f3,"validateSchemaExists");function _3(e,t){let r=t.state.ancestors[0].schema;return QL.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(_3,"validateTableExists");function h3(e,t){return e.toLowerCase()===jL.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${jL.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(h3,"validateSchemaName");JL.exports={common_validators:la,schema_regex:du,hdb_schema_table:c3,validateSchemaExists:f3,validateTableExists:_3,validateSchemaName:h3,checkValidTable:d3,hdb_database:l3,hdb_table:u3}});var tt=C((dbe,XL)=>{"use strict";var gn=require("validate.js");gn.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||gn.validators.type.checks[t](e)?null:` must be a '${t}' value`};gn.validators.type.checks={Object:a(function(e){return gn.isObject(e)&&!gn.isArray(e)},"Object"),Array:gn.isArray,Integer:gn.isInteger,Number:gn.isNumber,String:gn.isString,Date:gn.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};gn.validators.hasValidFileExt=function(e,t){return gn.isString(e)?e===""?"can't be blank":t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`:null};XL.exports={validateObject:m3,validateObjectAsync:p3,validateBySchema:E3};function m3(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=gn(e,t,{format:"flat"});return r?new Error(r):null}a(m3,"validateObject");async function p3(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await gn.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(p3,"validateObjectAsync");function E3(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(E3,"validateBySchema")});var AR=C((_be,eM)=>{var{hdb_table:g3,hdb_database:ZL}=Oi(),S3=tt(),TR=require("joi"),T3={undefined:"undefined",null:"null"},A3=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||T3[o]!==void 0)&&(s===void 0?s=`Invalid attribute name: '${o}'`:s+=`. Invalid attribute name: '${o}'`)}return s?t.message(s):e},"custom_records_val"),R3=TR.object({database:ZL,schema:ZL,table:g3,records:TR.array().items(TR.object().custom(A3)).required()});eM.exports=function(e){return S3.validateBySchema(e,R3)}});var rM=C((mbe,tM)=>{"use strict";var RR=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")}};tM.exports=RR});var sM=C((Ebe,nM)=>{"use strict";var yR=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};nM.exports=yR});var lM={};Ue(lM,{HAS_EXPIRATION:()=>wp,HAS_RESIDENCY_ID:()=>CR,HAS_STRUCTURE_UPDATE:()=>Cp,LAST_TIMESTAMP_PLACEHOLDER:()=>Vf,LOCAL_TIMESTAMP:()=>y3,METADATA:()=>Cc,NEW_TIMESTAMP_PLACEHOLDER:()=>oM,NO_TIMESTAMP:()=>Op,PENDING_LOCAL_TIME:()=>PR,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>IR,RecordEncoder:()=>wR,TIMESTAMP_ASSIGN_LAST:()=>O3,TIMESTAMP_ASSIGN_NEW:()=>aM,TIMESTAMP_ASSIGN_PREVIOUS:()=>cM,TIMESTAMP_PLACEHOLDER:()=>bp,TIMESTAMP_RECORD_PREVIOUS:()=>bR,handleLocalTimeForGets:()=>Pp,recordUpdater:()=>DR,removeEntry:()=>Dc});function w3(){return $f[0]=$f[0]^64,b3.getFloat64(0)}function Pp(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++;let l=r.call(this,o,c),u=l?.value,f=u?.[Cc];return f>=0&&(l.metadataFlags=f,l.localTime=u.localTime,l.value=u.value,l.residencyId=u.residencyId,u.expiresAt>=0&&(l.expiresAt=u.expiresAt)),l&&(l.key=o),l};let n=e.get;e.get=function(o,c){let l=n.call(this,o,c);return l?.[Cc]>=0?l.value: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=>{let u=l.value,f=u?.[Cc];return f>=0&&(l.metadataFlags=f,l.localTime=u.localTime,l.value=u.value,l.residencyId=u.residencyId,u.expiresAt>=0&&(l.expiresAt=u.expiresAt)),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,Ic.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<Ic.length;u++){let f=Ic[u].deref();(!f||f.isDone||f.isCommitted)&&Ic.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function DR(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){l==null?wc=Op:d?wc=i?.localTime?bR|cM:Op:wc=l?i?.localTime?bR|16384:aM|16384:Op;let h=u?.expiresAt;if(h>=0&&(c|=wp),Gf=c,OR=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:wc>0},S,g=0;try{let A=i?.residencyId,E=u?.residencyId;E&&(NR=E,Gf|=CR,g|=Lc),A!==E&&(g|=Mc,A||(A=0)),c&wp&&(g|=Yf),u?.originatingOperation&&(g|=Kf),d&&(m.ifVersion=S=i?.version??null),i&&i.value&&f!=="message"&&i.metadataFlags&Ur&&(!i.localTime||!r.getBinaryFast(i.localTime))&&aa(i.value);let T;if(s!==void 0&&(T=Sp(()=>e.put(n,s,m),n,e.rootStore),bc&&(g|=Ur)),l){let N=u?.user?.username;if(_&&(Sp(()=>e.encoder.encode(_),n,e.rootStore),bc&&(g|=Ur)),e.encoder.hasStructureUpdate&&(g|=Cp,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let M=i?.localTime,H=r.get(M);if(H){let Z=Tt(H).previousLocalTime;return T=r.put(M,Pc(o,t,n,Z,u?.nodeId??server.replication.getThisNodeId(r)??0,N,f,qf,g,E,A,h),{ifVersion:S}),T}}T=r.put(s===void 0?oM:Vf,Pc(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,f,qf,g,E,A,h,u?.originatingOperation),{instructedWrite:!0,ifVersion:S})}return T}catch(A){throw A.message+=" id: "+n+" options: "+m,A}}}function Dc(e,t,r){if(t)return t.value&&t.metadataFlags&Ur&&!e.auditStore?.getBinaryFast(t.localTime)&&aa(t.value),e.remove(t.key,r)}var iM,Np,bp,Vf,IR,oM,y3,Cc,$f,b3,Op,aM,O3,cM,bR,wp,CR,PR,Cp,N3,qf,wc,Gf,OR,NR,wR,Ic,fu=Re(()=>{iM=require("msgpackr");Ai();Np=v(X());En();En();bp=new Uint8Array([1,1,1,1,4,64,0,0]),Vf=new Uint8Array([1,1,1,1,1,0,0,0]),IR=new Uint8Array([1,1,1,1,3,64,0,0]),oM=new Uint8Array([1,1,1,1,0,64,0,0]),y3=Symbol("local-timestamp"),Cc=Symbol("metadata"),$f=new Uint8Array(8),b3=new DataView($f.buffer,0,8),Op=0,aM=0,O3=1,cM=3,bR=4,wp=16,CR=32,PR=1,Cp=256,wc=0,Gf=-1,OR=-1,NR=0,wR=class extends iM.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(wc||Gf>=0){let o=0,c=wc;c&&(o+=8,wc=0);let l=Gf,u=OR,f=NR;l>=0&&(o+=4,Gf=-1,u>=0&&(o+=8,OR=-1),f&&(o+=4,NR=0));let d=N3=r.call(this,s,i|2048|o);qf=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(bp[4]=c,bp[5]=c>>8,d.set(bp,_),_+=8),bc&&(l|=Ur),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|Ip<<24),_+=4,u>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setFloat64(_,u),_+=8),f&&(d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,f)),d}else return qf=r.call(this,s,i),qf};let n=this.saveStructures;this.saveStructures=function(s,i){let o=n.call(this,s,i);return this.hasStructureUpdate=!0,o}}decode(t,r){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($f,0,c),c+=8;else for(let _=0;_<8;_++)$f[_]=t[c++];l=w3(),i=t[c]}let u,f;i<32&&(i===Ip?(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&wp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&CR&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=so(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[Cc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:so(()=>super.decode(t,r),this.rootStore)}catch(c){return Np.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(w3,"getTimestamp");a(Pp,"handleLocalTimeForGets");Ic=[];setInterval(()=>{for(let e=0;e<Ic.length;e++){let t=Ic[e].deref();!t||t.isDone||t.isCommitted?Ic.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(Np.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):Np.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(DR,"recordUpdater");a(Dc,"removeEntry")});var Wf=C((ybe,dM)=>{"use strict";var uM=oe(),I3=(k(),P(q)),{RecordEncoder:C3}=(fu(),P(lM));uM.initSync();var P3=uM.get(I3.CONFIG_PARAMS.STORAGE_CACHING)!==!1,LR=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=P3&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:C3})}};dM.exports=LR});var zf=C((Obe,fM)=>{"use strict";var kn=oe(),_s=(k(),P(q));kn.initSync();var Dp=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=kn.get(_s.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||kn.get(_s.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||kn.get(_s.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",kn.get(_s.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)!==void 0&&(this.overlappingSync=kn.get(_s.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC)),kn.get(_s.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)&&(this.maxFreeSpaceToLoad=kn.get(_s.CONFIG_PARAMS.STORAGE_MAXFREESPACETOLOAD)),kn.get(_s.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)&&(this.maxFreeSpaceToRetain=kn.get(_s.CONFIG_PARAMS.STORAGE_MAXFREESPACETORETAIN)),kn.get(_s.CONFIG_PARAMS.STORAGE_PAGESIZE)&&(this.pageSize=kn.get(_s.CONFIG_PARAMS.STORAGE_PAGESIZE)),this.noReadAhead=kn.get(_s.CONFIG_PARAMS.STORAGE_NOREADAHEAD)}};fM.exports=Dp;Dp.MAX_DBS=1e4});var ht=C((wbe,RM)=>{"use strict";var vR=require("lmdb"),Gs=require("fs-extra"),Fn=require("path"),Lp=dn(),mM=X(),Sn=Un().LMDB_ERRORS_ENUM,Mp=sM(),UR=Wf(),pM=zf(),ua=Ft(),_M=(k(),P(q)),{table:D3,resetDatabases:L3}=(xe(),P(ct)),hM=oe(),$s=ua.INTERNAL_DBIS_NAME,EM=ua.DBI_DEFINITION_NAME,M3="data.mdb",v3="lock.mdb",jf=".mdb",U3="-lock",MR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=hs(t,r),this.key_type=this.dbi[ua.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[ua.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new vR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function vp(e,t){if(e===void 0)throw new Error(Sn.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(Sn.ENV_NAME_REQUIRED)}a(vp,"pathEnvNameValidation");async function xR(e,t,r=!0){try{await Gs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(Sn.INVALID_BASE_PATH):n}try{let n=Fn.join(e,t+jf);return await Gs.access(n,Gs.constants.R_OK|Gs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Gs.access(Fn.join(e,t,M3),Gs.constants.R_OK|Gs.constants.F_OK),Fn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(Sn.INVALID_ENVIRONMENT)}else throw new Error(Sn.INVALID_ENVIRONMENT);throw n}}a(xR,"validateEnvironmentPath");function Up(e,t){if(Lp.validateEnv(e),t===void 0)throw new Error(Sn.DBI_NAME_REQUIRED)}a(Up,"validateEnvDBIName");async function x3(e,t,r=!1,n=!1){vp(e,t);let s=Fn.basename(e);t=t.toString();let i=hM.get(_M.CONFIG_PARAMS.DATABASES);i||hM.setProperty(_M.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await xR(e,t,n),gM(e,t,r)}catch(o){if(o.message===Sn.INVALID_ENVIRONMENT){let c=Fn.join(e,t);await Gs.mkdirp(n?c:e);let l=new pM(n?c:c+jf,!1),u=vR.open(l);u.dbis=Object.create(null);let f=new UR(!1);u.openDB($s,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=BR(e,t,r);return u[ua.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(x3,"createEnvironment");async function B3(e,t,r,n=!0){vp(e,t),t=t.toString();let s=Fn.join(e,t);return D3({table:t,database:Fn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(B3,"copyEnvironment");async function gM(e,t,r=!1){vp(e,t),t=t.toString();let n=BR(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 xR(e,t),i=Fn.join(e,t+jf),o=s!=i,c=new pM(s,o),l=vR.open(c);l.dbis=Object.create(null);let u=TM(l);for(let f=0;f<u.length;f++)hs(l,u[f]);return l[ua.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(gM,"openEnvironment");async function H3(e,t,r=!1){vp(e,t),t=t.toString();let n=Fn.join(e,t+jf),s=await xR(e,t);if(global.lmdb_map!==void 0){let i=BR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await SM(o),delete global.lmdb_map[i]}}await Gs.remove(s),await Gs.remove(s===n?s+U3:Fn.join(Fn.dirname(s),v3))}a(H3,"deleteEnvironment");async function SM(e){Lp.validateEnv(e);let t=e[ua.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(SM,"closeEnvironment");function BR(e,t,r=!1){let s=`${Fn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(BR,"getCachedEnvironmentName");function k3(e){Lp.validateEnv(e);let t=Object.create(null),r=hs(e,$s);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==$s)try{t[n]=Object.assign(new Mp,s)}catch{mM.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(k3,"listDBIDefinitions");function TM(e){Lp.validateEnv(e);let t=[],r=hs(e,$s);for(let{key:n}of r.getRange({start:!1}))n!==$s&&t.push(n);return t}a(TM,"listDBIs");function F3(e,t){let n=hs(e,$s).getEntry(t),s=new Mp;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{mM.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(F3,"getDBIDefinition");function AM(e,t,r,n=!r){if(Up(e,t),t=t.toString(),t===$s)throw new Error(Sn.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return hs(e,t)}catch(s){if(s.message===Sn.DBI_DOES_NOT_EXIST){let i=new UR(r,n===!0),o=e.openDB(t,i),c=new Mp(r===!0,n);return o[EM]=c,hs(e,$s).putSync(t,c),e.dbis[t]=o,o}throw s}}a(AM,"createDBI");function hs(e,t){if(Up(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==$s?r=F3(e,t):r=new Mp,r===void 0)throw new Error(Sn.DBI_DOES_NOT_EXIST);let n;try{let s=new UR(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(Sn.DBI_DOES_NOT_EXIST):s}return n[EM]=r,e.dbis[t]=n,n}a(hs,"openDBI");function q3(e,t){Up(e,t),t=t.toString();let r=hs(e,t),n=r.getStats();return r[ua.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(q3,"statDBI");async function G3(e,t){try{let r=Fn.join(e,t+jf);return(await Gs.stat(r)).size}catch{throw new Error(Sn.INVALID_ENVIRONMENT)}}a(G3,"environmentDataSize");function $3(e,t){if(Up(e,t),t=t.toString(),t===$s)throw new Error(Sn.CANNOT_DROP_INTERNAL_DBIS_NAME);hs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],hs(e,$s).removeSync(t)}a($3,"dropDBI");function V3(e,t,r){let n;for(let s=0;s<r.length;s++){let i=r[s];if(!e.dbis[i])try{hs(e,i)}catch(o){if(o.message===Sn.DBI_DOES_NOT_EXIST)AM(e,i,i!==t,i===t),n=!0;else throw o}}n&&L3()}a(V3,"initializeDBIs");RM.exports={openDBI:hs,openEnvironment:gM,createEnvironment:x3,listDBIs:TM,listDBIDefinitions:k3,createDBI:AM,dropDBI:$3,statDBI:q3,deleteEnvironment:H3,initializeDBIs:V3,TransactionCursor:MR,environmentDataSize:G3,copyEnvironment:B3,closeEnvironment:SM}});var bM=C((Cbe,yM)=>{"use strict";var HR=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};yM.exports=HR});var NM=C((Dbe,OM)=>{"use strict";var kR=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}};OM.exports=kR});var IM=C((Mbe,wM)=>{"use strict";var FR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};wM.exports=FR});var Uc=C((Hbe,DM)=>{"use strict";var K3=ht(),Y3=bM(),W3=NM(),z3=IM(),Ni=dn(),Qf=Un().LMDB_ERRORS_ENUM,j3=Ft(),lo=(k(),P(q)),Q3=ie(),J3=require("uuid"),Ube=require("lmdb"),{handleHDBError:X3,hdb_errors:Z3}=he(),{OVERFLOW_MARKER:xbe,MAX_SEARCH_KEY_LENGTH:Bbe}=j3,CM=oe();CM.initSync();var xp=CM.get(lo.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),qR=lo.TIME_STAMP_NAMES_ENUM.CREATED_TIME,vc=lo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function eX(e,t,r,n,s=Ni.getNextMonotonicTime()){KR(e,t,r,n),GR(e,t,r);let i=new Y3,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];PM(u,!0,s);let f=tX(e,t,r,u),d=u[t];o.push(f),c.push(d)}return $R(o,c,n,i,s)}a(eX,"insertRecords");function tX(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 f=c([[{}]]);Array.isArray(f)&&(c=f[0][lo.FUNC_VAL],n[o]=c)}let l=Ni.getIndexedValues(c),u=e.dbis[o];if(l){xp&&u.prefetch(l.map(f=>({key:f,value:s})),Bp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}xp&&e.dbis[t].prefetch([s],Bp),e.dbis[t].put(s,n,n[vc])})}a(tX,"insertRecord");function rX(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(rX,"removeSkippedRecords");function PM(e,t,r){let n=r>0;(n||!Number.isInteger(e[vc]))&&(e[vc]=r||(r=Ni.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[qR]))&&(e[qR]=r||Ni.getNextMonotonicTime()):delete e[qR]}a(PM,"setTimestamps");function GR(e,t,r){r.indexOf(lo.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(lo.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(lo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(lo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),K3.initializeDBIs(e,t,r)}a(GR,"initializeTransaction");async function nX(e,t,r,n,s=Ni.getNextMonotonicTime()){KR(e,t,r,n),GR(e,t,r);let i=new W3,o=[],c=[],l=[];for(let u=0;u<n.length;u++){let f=n[u],d=f[t],_;try{_=VR(e,t,f,d,i,!0,s)}catch{i.skipped_hashes.push(d),o.push(u);continue}c.push(_),l.push(d)}return $R(c,l,n,i,s,o)}a(nX,"updateRecords");async function sX(e,t,r,n,s=Ni.getNextMonotonicTime()){try{KR(e,t,r,n)}catch(l){throw X3(l,l.message,Z3.HTTP_STATUS_CODES.BAD_REQUEST)}GR(e,t,r);let i=new z3,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;Q3.isEmpty(u[t])?(f=J3.v4(),u[t]=f):f=u[t];let d=VR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return $R(o,c,n,i,s)}a(sX,"upsertRecords");async function $R(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||Ni.getNextMonotonicTime(),rX(r,i),n}a($R,"finalizeWrite");function VR(e,t,r,n,s,i=!1,o){let c=e.dbis[t],l=c.getEntry(n),u=l?.value,f=u;if(!u){if(i)return!1;u={}}if(PM(r,!f,o),Number.isInteger(r[vc])&&u[vc]>r[vc])return!1;f&&s.original_records.push(u);let d,_=a(()=>{for(let m in r){if(!r.hasOwnProperty(m)||m===t)continue;let S=r[m],g=e.dbis[m];if(g===void 0)continue;let A=u[m];if(typeof S=="function"){let T=S([[u]]);Array.isArray(T)&&(S=T[0][lo.FUNC_VAL],r[m]=S)}if(S===A)continue;let E=Ni.getIndexedValues(A);if(E){xp&&g.prefetch(E.map(T=>({key:T,value:n})),Bp);for(let T=0,N=E.length;T<N;T++)g.remove(E[T],n)}if(E=Ni.getIndexedValues(S),E){xp&&g.prefetch(E.map(T=>({key:T,value:n})),Bp);for(let T=0,N=E.length;T<N;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[vc])},"do_put");return l?d=c.ifVersion(n,l.version,_):d=c.ifNoExists(n,_),d.then(h=>h?!0:VR(e,t,r,n,s,i,o))}a(VR,"updateUpsertRecord");function iX(e,t,r){if(Ni.validateEnv(e),t===void 0)throw new Error(Qf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Qf.WRITE_ATTRIBUTES_REQUIRED):new Error(Qf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(iX,"validateBasic");function KR(e,t,r,n){if(iX(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Qf.RECORDS_REQUIRED):new Error(Qf.RECORDS_MUST_BE_ARRAY)}a(KR,"validateWrite");function Bp(){}a(Bp,"noop");DM.exports={insertRecords:eX,updateRecords:nX,upsertRecords:sX}});var uo=C((Fbe,oX)=>{oX.exports={hdb_user:{hash_attribute:"username",name:"hdb_user",schema:"system",residence:["*"],attributes:[{attribute:"username"},{attribute:"password"},{attribute:"role"},{attribute:"active"},{attribute:"hash"},{attribute:"refresh_token"},{attribute:"hash_function"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_role:{hash_attribute:"id",name:"hdb_role",schema:"system",attributes:[{attribute:"id"},{attribute:"role"},{attribute:"permission"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}],residence:["*"]},hdb_job:{hash_attribute:"id",name:"hdb_job",schema:"system",attributes:[{attribute:"id"},{attribute:"user"},{attribute:"type"},{attribute:"status"},{attribute:"start_datetime"},{attribute:"end_datetime"},{attribute:"message"},{attribute:"created_datetime"},{attribute:"request"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_license:{hash_attribute:"license_key",name:"hdb_license",schema:"system",attributes:[{attribute:"license_key"},{attribute:"company"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_info:{hash_attribute:"info_id",name:"hdb_info",schema:"system",attributes:[{attribute:"info_id"},{attribute:"data_version_num"},{attribute:"hdb_version_num"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_nodes:{hash_attribute:"name",name:"hdb_nodes",schema:"system",attributes:[{attribute:"name"},{attribute:"subscriptions"},{attribute:"system_info"},{attribute:"url"},{attribute:"routes"},{attribute:"revoked_certificates"},{attribute:"shard"}]},hdb_certificate:{hash_attribute:"name",name:"hdb_certificate",schema:"system",attributes:[{attribute:"name"},{attribute:"uses"},{attribute:"certificate"},{attribute:"is_authority"},{attribute:"private_key_name"},{attribute:"details"},{attribute:"is_self_signed"},{attribute:"__updatedtime__"}]},hdb_analytics:{hash_attribute:"id",name:"hdb_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]},hdb_raw_analytics:{hash_attribute:"id",name:"hdb_raw_analytics",schema:"system",audit:!1,attributes:[{attribute:"id"},{attribute:"time"},{attribute:"metrics"}]},hdb_temp:{hash_attribute:"id",name:"hdb_temp",schema:"system",attributes:[{attribute:"id"}]},hdb_durable_session:{hash_attribute:"id",name:"hdb_durable_session",schema:"system",attributes:[{attribute:"id"}]},hdb_session_will:{hash_attribute:"id",name:"hdb_session_will",schema:"system",attributes:[{attribute:"id"}]}}});var MM=C((qbe,LM)=>{"use strict";var aX=require("uuid"),YR=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||aX.v4(),this.schema_table=`${this.schema}.${this.table}`}};LM.exports=YR});var Hp=C(($be,vM)=>{"use strict";var cX=MM(),WR=class extends cX{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}};vM.exports=WR});var xM=C((Kbe,UM)=>{"use strict";UM.exports=uX;var lX="inserted";function uX(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===lX?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(uX,"returnObject")});var kp=C((zbe,HM)=>{"use strict";var dX=(k(),P(q)),zR=ht(),fX=Uc(),{getSystemSchemaPath:_X,getSchemaPath:hX}=St(),Wbe=uo(),{validateBySchema:mX}=tt(),Jf=require("joi"),pX=Hp(),EX=xM(),{handleHDBError:gX,hdb_errors:SX,ClientError:TX}=he(),BM=ie(),{HTTP_STATUS_CODES:AX}=SX,RX="inserted";HM.exports=yX;async function yX(e){let t=mX(e,Jf.object({database:Jf.string(),schema:Jf.string(),table:Jf.string().required(),attribute:Jf.string().required()}));if(t)throw new TX(t.message);let r=!e.skip_table_check&&BM.checkGlobalSchemaTable(e.schema,e.table);if(r)throw gX(new Error,r,AX.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=BM.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 pX(e.schema,e.table,e.attribute,e.id);try{let i=await zR.openEnvironment(hX(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}`);zR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await zR.openEnvironment(_X(),dX.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await fX.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return EX(RX,c,{records:[s]},l)}catch(i){throw i}}a(yX,"lmdbCreateAttribute")});var Xf=C((Jbe,FM)=>{"use strict";var fo=ie(),kM=X(),Qbe=AR(),{getDatabases:bX}=(xe(),P(ct)),{ClientError:xc}=he();FM.exports=OX;function OX(e){if(fo.isEmpty(e))throw new xc("invalid update parameters defined.");if(fo.isEmptyOrZeroLength(e.schema))throw new xc("invalid schema specified.");if(fo.isEmptyOrZeroLength(e.table))throw new xc("invalid table specified.");if(!Array.isArray(e.records))throw new xc("records must be an array");let t=bX()[e.schema]?.[e.table];if(fo.isEmpty(t))throw new xc(`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&&fo.isEmptyOrZeroLength(o[r]))throw kM.error("a valid hash attribute must be provided with update record:",o),new xc("a valid hash attribute must be provided with update record, check log for more info");if(!fo.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw kM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new xc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!fo.isEmpty(o[r])&&o[r]!==""&&n.has(fo.autoCast(o[r]))&&(o.skip=!0),n.add(fo.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(OX,"insertUpdateValidate")});var GM=C((Zbe,qM)=>{"use strict";var jR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};qM.exports=jR});var KM=C((tOe,VM)=>{"use strict";var QR=ht(),NX=X(),$M=Un().LMDB_ERRORS_ENUM;VM.exports=wX;async function wX(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 QR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==$M.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await QR.closeEnvironment(global.lmdb_map[n]),await QR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==$M.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){NX.error(t)}}a(wX,"cleanLMDBMap")});var sv=C((sOe,nv)=>{"use strict";var JR=require("recursive-iterator"),IX=require("alasql"),XR=require("clone"),YM=ie(),{handleHDBError:WM,hdb_errors:CX}=he(),{HDB_ERROR_MSGS:zM,HTTP_STATUS_CODES:jM}=CX,{getDatabases:PX}=(xe(),P(ct)),DX=["DISTINCT_ARRAY"],QM=Symbol("validateTables"),ZR=Symbol("validateTable"),nOe=Symbol("getAllColumns"),JM=Symbol("validateAllColumns"),Fp=Symbol("findColumn"),XM=Symbol("validateOrderBy"),Zf=Symbol("validateSegment"),ey=Symbol("validateColumn"),ZM=Symbol("setColumnsForTable"),ev=Symbol("checkColumnsForAsterisk"),tv=Symbol("validateGroupBy"),rv=Symbol("hasColumns"),ty=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[QM](),this[ev](),this[JM]()}[QM](){if(this[rv]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[ZR](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[ZR](t.table)})}}[rv](){let t=!1,r=new JR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[ZR](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=PX();if(!r[t.databaseid])throw WM(new Error,zM.SCHEMA_NOT_FOUND(t.databaseid),jM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw WM(new Error,zM.TABLE_NOT_FOUND(t.databaseid,t.tableid),jM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=XR(s);i.table=XR(t),this.attributes.push(i)})}[Fp](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)}[ev](){let t=new JR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[ZM](r.tableid)}[ZM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new IX.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[JM](){this[Zf](this.statement.columns,!1),this[Zf](this.statement.joins,!1),this[Zf](this.statement.where,!1),this[tv](this.statement.group,!1),this[Zf](this.statement.order,!0)}[Zf](t,r){if(!t)return;let n=new JR(t),s=[];for(let{node:i,path:o}of n)!YM.isEmpty(i)&&!YM.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[XM](i):s.push(this[ey](i)));return s}[tv](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&DX.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=XR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Fp](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[Fp](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`}[XM](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[ey](t)}[ey](t){let r=this[Fp](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]}};nv.exports=ty});var cv=C((oOe,av)=>{"use strict";var iv=require("lodash"),e_=require("mathjs"),LX=require("jsonata"),ov=ie();av.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?iv.uniqWith(e,iv.isEqual):e,"distinct_array"),searchJSON:MX,mad:t_.bind(null,e_.mad),mean:t_.bind(null,e_.mean),mode:t_.bind(null,e_.mode),prod:t_.bind(null,e_.prod),median:t_.bind(null,e_.median)};function t_(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(t_,"aggregateFunction");function MX(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(ov.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),ov.isEmpty(this.__ala__.res[r])){let n=LX(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(MX,"searchJSON")});var uv=C((cOe,lv)=>{"use strict";var tr=require("moment"),ry="YYYY-MM-DDTHH:mm:ss.SSSZZ";tr.suppressDeprecationWarnings=!0;lv.exports={current_date:a(()=>tr().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>tr().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return tr(e).utc().format("YYYY");case"month":return tr(e).utc().format("MM");case"day":return tr(e).utc().format("DD");case"hour":return tr(e).utc().format("HH");case"minute":return tr(e).utc().format("mm");case"second":return tr(e).utc().format("ss");case"millisecond":return tr(e).utc().format("SSS");default:break}},"extract"),date:a(e=>tr(e).utc().format(ry),"date"),date_format:a((e,t)=>tr(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>tr(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>tr(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=tr(e).utc(),s=tr(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>tr().utc().valueOf(),"now"),get_server_time:a(()=>tr().format(ry),"get_server_time"),offset_utc:a((e,t)=>tr(e).utc().utcOffset(t).format(ry),"offset_utc")}});var hv=C((uOe,_v)=>{"use strict";var vX=require("@turf/area"),UX=require("@turf/length"),xX=require("@turf/circle"),BX=require("@turf/difference"),HX=require("@turf/distance"),kX=require("@turf/boolean-contains"),FX=require("@turf/boolean-equal"),qX=require("@turf/boolean-disjoint"),GX=require("@turf/helpers"),dv=(k(),P(q)),Ke=ie(),_o=X();_v.exports={geoArea:$X,geoLength:VX,geoCircle:KX,geoDifference:YX,geoDistance:fv,geoNear:WX,geoContains:zX,geoEqual:jX,geoCrosses:QX,geoConvert:JX};function $X(e){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return vX.default(e)}catch(t){return _o.trace(t,e),NaN}}a($X,"geoArea");function VX(e,t){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return UX.default(e,{units:t||"kilometers"})}catch(r){return _o.trace(r,e),NaN}}a(VX,"geoLength");function KX(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return xX.default(e,t,{units:r||"kilometers"})}catch(n){return _o.trace(n,e,t),NaN}}a(KX,"geoCircle");function YX(e,t){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return BX(e,t)}catch(r){return _o.trace(r,e,t),NaN}}a(YX,"geoDifference");function fv(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return HX.default(e,t,{units:r||"kilometers"})}catch(n){return _o.trace(n,e,t),NaN}}a(fv,"geoDistance");function WX(e,t,r,n){if(Ke.isEmpty(e)||Ke.isEmpty(t))return!1;if(Ke.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");try{return fv(e,t,n)<=r}catch(s){return _o.trace(s,e,t),!1}}a(WX,"geoNear");function zX(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return kX.default(e,t)}catch(r){return _o.trace(r,e,t),!1}}a(zX,"geoContains");function jX(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return FX.default(e,t)}catch(r){return _o.trace(r,e,t),!1}}a(jX,"geoEqual");function QX(e,t){if(Ke.isEmpty(e)||Ke.isEmpty(t)||e.coordinates&&e.coordinates.includes?.(null)||t.coordinates&&t.coordinates.includes?.(null))return!1;typeof e=="string"&&(e=Ke.autoCastJSON(e)),typeof t=="string"&&(t=Ke.autoCastJSON(t));try{return!qX.default(e,t)}catch(r){return _o.trace(r,e,t),!1}}a(QX,"geoCrosses");function JX(e,t,r){if(Ke.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(Ke.isEmpty(t))throw new Error("geo_type is required");if(Ke.isEmpty(dv.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(dv.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ke.autoCastJSON(e)),GX[t](e,r)}a(JX,"geoConvert")});var qp=C((fOe,mv)=>{var Bc=cv(),qn=uv(),wi=hv();mv.exports=e=>{e.aggr.mad=e.aggr.MAD=Bc.mad,e.aggr.mean=e.aggr.MEAN=Bc.mean,e.aggr.mode=e.aggr.MODE=Bc.mode,e.aggr.prod=e.aggr.PROD=Bc.prod,e.aggr.median=e.aggr.MEDIAN=Bc.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Bc.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Bc.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=qn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=qn.current_time,e.fn.extract=e.fn.EXTRACT=qn.extract,e.fn.date=e.fn.DATE=qn.date,e.fn.date_format=e.fn.DATE_FORMAT=qn.date_format,e.fn.date_add=e.fn.DATE_ADD=qn.date_add,e.fn.date_sub=e.fn.DATE_SUB=qn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=qn.date_diff,e.fn.now=e.fn.NOW=qn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=qn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=qn.get_server_time,e.fn.getdate=e.fn.GETDATE=qn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=qn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=wi.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=wi.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=wi.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=wi.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=wi.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=wi.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=wi.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=wi.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=wi.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=wi.geoNear}});var Sv=C((_Oe,gv)=>{"use strict";var r_=require("lodash"),Tn=require("alasql");Tn.options.cache=!1;var XX=qp(),pv=require("clone"),Gp=require("recursive-iterator"),ke=X(),Je=ie(),_u=Gn(),ZX=(k(),P(q)),{hdb_errors:e6}=he(),{getDatabases:Ev}=(xe(),P(ct)),t6="IS NULL",Vs="There was a problem performing this search. Please check the logs and try again.";XX(Tn);var ny=class{static{a(this,"SQLSearch")}constructor(t,r){if(Je.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(),Je.backtickASTSchemaItems(this.statement)}async search(){let t;try{let n=await this._checkEmptySQL();if(!Je.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(Vs)}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(Vs)}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(Vs)}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(Vs)}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(Vs)}}_getColumns(){let t=new Gp(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(pv(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=r_.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].__hash_name=Ev()[r.databaseid][r.tableid].primaryKey,this.data[n].__merged_data={},this.data[n].__merged_attributes=[],this.data[n].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(Je.isEmpty(this.statement.where)){ke.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new Gp(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!Je.isEmpty(r)&&r.right)if(Je.isNotEmptyAndHasValue(r.right.value)){let n=Je.autoCast(r.right.value);[!0,!1].indexOf(n)>=0&&(r.right=new Tn.yy.LogicValue({value:n}))}else Array.isArray(r.right)&&r.right.forEach((n,s)=>{let i=Je.autoCast(n.value);[!0,!1].indexOf(i)>=0?r.right[s]=new Tn.yy.LogicValue({value:i}):n instanceof Tn.yy.StringValue&&Je.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Tn.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 Gp(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(!Je.isEmpty(ZX.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(Je.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(Je.isEmptyOrZeroLength(r.left.columnid)||Je.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,search_value:r.right.value})}continue}if(Je.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"=":!Je.isEmpty(r.right.value)||!Je.isEmpty(r.left.value)?n.add(Je.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(Je.isEmptyOrZeroLength(this.all_table_attributes)&&Je.isEmptyOrZeroLength(this.statement.from)&&Je.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&&r_.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(Je.isEmptyOrZeroLength(r)){let n=this.columns.columns.filter(s=>s.as?t.columnid===s.as:!1);Je.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(Je.isEmptyOrZeroLength(this.all_table_attributes)&&!Je.isEmptyOrZeroLength(this.columns.columns))return t;if(Je.isEmptyOrZeroLength(this.all_table_attributes)&&Je.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await Tn.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(pv(n))})}_addColumnToMergedAttributes(t,r){this.data[t].__merged_attributes.push(r),this.data[t].__merged_attr_map[r]=this.data[t].__merged_attributes.length-1}_setMergedHashAttribute(t,r){this.data[t].__merged_data[r].splice(0,1,r)}_updateMergedAttribute(t,r,n,s){let i=this.data[t].__merged_attr_map[n];this.data[t].__merged_data[r].splice(i,1,s)}async _getFetchAttributeValues(){if(Je.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(t6)>-1&&this.tables.forEach(s=>{let i={columnid:Ev()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=r_.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].__hash_name;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].__hash_name,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),!Je.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!Je.isEmptyOrZeroLength(this.exact_search_values[u].values))if(l)try{c.hash_values=Array.from(this.exact_search_values[u].values);let f=await _u.getDataByHash(c);for(let d of c.hash_values)f.get(d)&&!this.data[i].__merged_data[d]&&(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Vs)}else try{c.search_attribute=s.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async f=>{let d={...c};d.search_value=f;let _=await _u.getDataByValue(d);for(let[h,m]of _)this.data[i].__merged_data[h]?this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]):(this.data[i].__merged_data[h]=[...n[i]],this._updateMergedAttribute(i,h,s.attribute,m[s.attribute]),this._setMergedHashAttribute(i,h))}))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),ke.error(f),new Error(Vs)}else if(!Je.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!Je.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let f=this.comparator_search_values[u].comparators;for(let d=0,_=f.length;d<_;d++){let h=f[d];c.search_attribute=h.attribute,c.search_value=h.search_value;let m=await _u.getDataByValue(c,h.operation);if(l)for(let[S]of m)this.data[i].__merged_data[S]||(this.data[i].__merged_data[S]=[...n[i]],this._setMergedHashAttribute(i,S));else for(let[S,g]of m)this.data[i].__merged_data[S]?this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]):(this.data[i].__merged_data[S]=[...n[i]],this._updateMergedAttribute(i,S,s.attribute,g[s.attribute]),this._setMergedHashAttribute(i,S))}}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),ke.error(f),new Error(Vs)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await _u.getDataByValue(c);if(l)for(let[d]of f)this.data[i].__merged_data[d]||(this.data[i].__merged_data[d]=[...n[i]],this._setMergedHashAttribute(i,d));else for(let[d,_]of f)this.data[i].__merged_data[d]?this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]):(this.data[i].__merged_data[d]=[...n[i]],this._updateMergedAttribute(i,d,s.attribute,_[s.attribute]),this._setMergedHashAttribute(i,d))}catch(f){throw ke.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),ke.error(f),new Error(Vs)}}}_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 Tn.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 Tn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Tn.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 Tn.yy.FuncValue:new Tn.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}`].__merged_data)),this.statement.joins&&this.statement.joins.forEach(h=>{h.joinmode&&h.joinmode!=="INNER"&&(this.has_outer_join=!0),s.push(h.table);let m=h.joinmode+" JOIN ? AS "+(h.as?h.as:h.table.tableid);h.on&&(m+=" ON "+h.on.toString()),i.push(m),t.push(Object.values(this.data[`${h.table.databaseid_orig}_${h.table.as?h.table.as_orig:h.table.tableid_orig}`].__merged_data))});let o=[],c={};s.forEach(h=>{let m=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__hash_name,S=h.as?h.as_orig:h.tableid_orig;o.push({key:`'${S}.${m}'`,schema:h.databaseid_orig,table:h.as?h.as_orig:h.tableid_orig,keys:new Set}),r.push(`${h.as?h.as:h.tableid}.\`${m}\` AS "${S}.${m}"`),c[h.as?h.as_orig:h.tableid_orig]=this.data[`${h.databaseid_orig}_${h.as?h.as_orig:h.tableid_orig}`].__merged_attributes});let l=this.statement.where?"WHERE "+this.statement.where:"";l=l.replace(/NOT\(NULL\)/g,"NOT NULL");let u="";this.statement.order&&!this.has_ordinal&&!this.has_aggregator&&!this.statement.group&&this.statement.limit&&(u="ORDER BY "+this.statement.order.toString(),this.statement.order.forEach(h=>{h.is_func?r.push(h.initial_select_column.toString()):h.initial_select_column.tableid?r.push(`${h.initial_select_column.tableid}.${h.initial_select_column.columnid} AS ${h.expression.columnid}`):r.push(`${h.initial_select_column.columnid} AS ${h.expression.columnid}`)}));let f="",d="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&!this.statement.joins&&(f=this.statement.limit?"LIMIT "+this.statement.limit:"",d=this.statement.offset?"OFFSET "+this.statement.offset:"");let _=[];try{let h=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${l} ${u} ${f} ${d}`,m=this._convertColumnsToIndexes(h,s);_=await Tn.promise(m,t),t=null}catch(h){throw ke.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),ke.error(h),new Error("There was a problem processing the data.")}if(_&&_.length>0){for(let h=0,m=_.length;h<m;h++){let S=_[h];o.forEach(g=>{S[g.key]!==null&&S[g.key]!==void 0&&g.keys.add(S[g.key])})}o.forEach(h=>{let m=Object.keys(this.data[`${h.schema}_${h.table}`].__merged_data),S=r_.difference(m,[...h.keys].map(g=>g.toString()));for(let g=0,A=S.length;g<A;g++){let E=S[g];delete this.data[`${h.schema}_${h.table}`].__merged_data[E]}})}return{existing_attributes:c,joined_length:_?_.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let n=[],s=new Gp(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=r_.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(Vs)}}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].__merged_data,o=[];for(let f in i)o.push(i[f][0]);this.data[n].__merged_attributes.push(...s.columns);let c={schema:s.schema,table:s.table,hash_values:o,get_attributes:s.columns},l=await _u.getDataByHash(c),u=s.columns.length;for(let f=0,d=o.length;f<d;f++){let _=o[f],h=l.get(_);for(let m=0;m<u;m++){let S=s.columns[m],g=h[S]===void 0?null:h[S];this.data[n].__merged_data[_].push(g)}}}}catch(r){throw ke.error("Error thrown from getDataByHash function in SQLSearch class method getData."),ke.error(r),r}}async _finalSQL(){let t=[],r=this.statement.from[0];t.push(Object.values(this.data[`${r.databaseid_orig}_${r.as?r.as_orig:r.tableid_orig}`].__merged_data)),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}`].__merged_data)),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 Tn.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(e6.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].__merged_attributes.forEach((o,c)=>{let l=s[i],u=new RegExp(`${l}.\`${o}\``,"g"),f=`${l}.[${c}]`;n=n.replace(u,f)});for(let i in this.data)this.data[i].__merged_attributes.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.search_attribute=n.attribute,i.search_value="*";let o=await _u.getDataByValue(i);for(let[c,l]of o)this.data[s].__merged_data[c]||(l[n.attribute]===void 0&&(l[n.attribute]=null),this.data[s].__merged_data[c]={...r[s]}),this.data[s].__merged_data[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(Vs)}}return Object.values(Object.values(this.data)[0].__merged_data)}};gv.exports=ny});var Wr=C((mOe,Tv)=>{"use strict";var r6=sv();Tv.exports={searchByConditions:s6,searchByHash:i6,searchByValue:o6,search:a6};var sy=Gn(),{transformReq:iy}=ie(),n6=Sv();async function s6(e){return iy(e),sy.searchByConditions(e)}a(s6,"searchByConditions");async function i6(e){iy(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of sy.searchByHash(e))r&&t.push(r);return t}a(i6,"searchByHash");async function o6(e){iy(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of sy.searchByValue(e))t.push(r);return t}a(o6,"searchByValue");function a6(e,t){try{let r=new r6(e);r.validate(),new n6(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(a6,"search")});var ho=C((EOe,bv)=>{"use strict";var n_=require("crypto"),c6=oe(),{CONFIG_PARAMS:l6}=(k(),P(q)),Rv="aes-256-cbc",u6=32,d6=16,oy=64,yv=32,f6=oy+yv,Av=new Map;bv.exports={encrypt:_6,decrypt:h6,createNatsTableStreamName:m6};function _6(e){let t=n_.randomBytes(u6),r=n_.randomBytes(d6),n=n_.createCipheriv(Rv,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(_6,"encrypt");function h6(e){let t=e.substr(0,oy),r=e.substr(oy,yv),n=e.substr(f6,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=n_.createDecipheriv(Rv,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(h6,"decrypt");function m6(e,t){let r=c6.get(l6.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=Av.get(r);return n||(n=n_.createHash("md5").update(r).digest("hex"),Av.set(r,n)),n}a(m6,"createNatsTableStreamName")});var Ii=C((TOe,Iv)=>{"use strict";var SOe=Wr(),s_=X(),{validateBySchema:Ov}=tt(),Hc=require("joi"),p6=ho(),$p=ie(),{handleHDBError:Vp,hdb_errors:E6,ClientError:Nv}=he(),{HDB_ERROR_MSGS:Kp,HTTP_STATUS_CODES:ay}=E6,wv=oe();wv.initSync();var{getDatabases:cy}=(xe(),P(ct)),g6=require("fs-extra"),S6=(k(),P(q));Iv.exports={describeAll:T6,describeTable:Yp,describeSchema:A6};async function T6(e={}){try{let t=$p.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=cy(),o={},c={},l=[],u=e?.exact_count;for(let d in i){o[d]=!0,!t&&!s&&!r&&(c[d]=e.hdb_user?.role?.permission[d]?.describe);let _=i[d];for(let h in _)try{let m;if(t||s||r)m=await Yp({schema:d,table:h,exact_count:u});else if(n&&n[d].describe&&n[d].tables[h].describe){let S=n[d].tables[h].attribute_permissions;m=await Yp({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){s_.error(m)}}let f={};for(let d in l)t||s||r?(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]):c[l[d].schema]&&(f[l[d].schema]==null&&(f[l[d].schema]={}),f[l[d].schema][l[d].name]=l[d],o[l[d].schema]&&delete o[l[d].schema]);for(let d in o)t||s||r?f[d]={}:c[d]&&(f[d]={});return f}catch(t){return s_.error("Got an error in describeAll"),s_.error(t),Vp(new Error,Kp.DESCRIBE_ALL_ERR)}}a(T6,"describeAll");async function Yp(e,t){$p.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=Ov(e,Hc.object({database:Hc.string(),table:Hc.string().required(),exact_count:Hc.boolean().strict()}));if(i)throw new Nv(i.message);let c=cy()[r];if(!c)throw Vp(new Error,Kp.SCHEMA_NOT_FOUND(e.schema),ay.NOT_FOUND);let l=c[n];if(!l)throw Vp(new Error,Kp.TABLE_NOT_FOUND(e.schema,e.table),ay.NOT_FOUND);function u(h){f.push({attribute:h.attribute,type:h.type,elements:h.elements?.type,indexed:h.indexed,is_primary_key:h.isPrimaryKey,assigned_created_time:h.assignCreatedTime,assigned_updated_time:h.assignUpdatedTime,nullable:h.nullable,properties:h.properties?h.properties.map(m=>({type:m.type,name:m.name})):void 0})}a(u,"pushAtt");let f=[];if(s){let h={};s.forEach(m=>{m.describe&&(h[m.attribute_name]=!0)}),l.attributes.forEach(m=>{h[m.name]&&u(m)})}else l.attributes?.forEach(h=>u(h));let d;try{d=(await g6.stat(l.primaryStore.env.path)).size}catch(h){s_.warn("unable to get database size",h)}let _={schema:r,name:l.tableName,hash_attribute:l.attributes.find(h=>h.isPrimaryKey||h.is_hash_attribute)?.name,audit:l.audit,schema_defined:l.schemaDefined,attributes:f,db_size:d};l.replicate!==void 0&&(_.replicate=l.replicate),l.expirationMS!==void 0&&(_.expiration=l.expirationMS/1e3+"s"),l.sealed!==void 0&&(_.sealed=l.sealed),l.sources?.length>0&&(_.sources=l.sources.map(h=>h.name).filter(h=>h&&h!=="NATSReplicator"&&h!=="Replicator")),wv.get(S6.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=p6.createNatsTableStreamName(_.schema,_.name));try{let h=await l.getRecordCount({exactCount:!!e.exact_count});_.record_count=h.recordCount,_.table_size=l.getSize(),_.db_audit_size=l.getAuditSize(),_.estimated_record_range=h.estimatedRange;let m=l.auditStore;if(m)for(let S of m.getKeys({reverse:!0,limit:1}))_.last_updated_record=S[0];if(!_.last_updated_record&&l.indices.__updatedtime__)for(let S of l.indices.__updatedtime__.getKeys({reverse:!0,limit:1}))_.last_updated_record=S}catch(h){s_.warn(`unable to stat table dbi due to ${h}`)}return _}a(Yp,"descTable");async function A6(e){$p.transformReq(e);let t=Ov(e,Hc.object({database:Hc.string(),exact_count:Hc.boolean().strict()}));if(t)throw new Nv(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=cy()[n];if(!i)throw Vp(new Error,Kp.SCHEMA_NOT_FOUND(e.schema),ay.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),$p.isEmpty(l)||l.describe){let u=await Yp({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(A6,"describeSchema")});var ms=C((bOe,Mv)=>{var R6=uo(),{callbackify:Pv,promisify:y6}=require("util"),{getDatabases:Dv}=(xe(),P(ct));Mv.exports={setSchemaDataToGlobal:Cv,getTableSchema:b6,getSystemSchema:O6,setSchemaDataToGlobalAsync:y6(Cv)};var Lv=Ii(),ROe=Pv(Lv.describeAll),yOe=Pv(Lv.describeTable);function Cv(e){global.hdb_schema=Dv(),e&&e()}a(Cv,"setSchemaDataToGlobal");function b6(e,t,r){let n=Dv()[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(b6,"getTableSchema");function O6(){return R6}a(O6,"getSystemSchema")});var uy=C((NOe,xv)=>{var N6=tt(),ly=require("joi"),{hdb_table:w6,hdb_database:vv}=Oi(),Uv={schema:vv,database:vv,table:w6},I6={date:ly.date().iso().required()},C6={timestamp:ly.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};xv.exports=function(e,t){let r=t==="timestamp"?{...Uv,...C6}:{...Uv,...I6},n=ly.object(r);return N6.validateBySchema(e,n)}});var kv=C((wOe,Hv)=>{var P6=tt(),dy=require("joi"),{hdb_table:D6,hdb_database:Bv}=Oi(),L6=dy.object({schema:Bv,database:Bv,table:D6,hash_values:dy.array().required(),ids:dy.array()});Hv.exports=function(e){return P6.validateBySchema(e,L6)}});var my=C((IOe,Fv)=>{"use strict";var fy=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}},_y=class{static{a(this,"NoSQLSeachObject")}constructor(t,r,n,s,i,o){this.schema=t,this.table=r,this.search_attribute=n,this.hash_attribute=s,this.get_attributes=i,this.search_value=o}},hy=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};Fv.exports={InsertObject:fy,NoSQLSeachObject:_y,DeleteResponseObject:hy}});var _a=C((POe,Kv)=>{"use strict";var Gv=uy(),M6=kv(),kc=ie(),qv=require("moment"),$v=X(),{promisify:v6,callbackify:U6}=require("util"),Fc=(k(),P(q)),x6=ms(),py=v6(x6.getTableSchema),Ey=Gn(),{DeleteResponseObject:B6}=my(),{handleHDBError:da,hdb_errors:H6}=he(),{HDB_ERROR_MSGS:Wp,HTTP_STATUS_CODES:fa}=H6,k6="records successfully deleted",F6=U6(Vv);Kv.exports={delete:F6,deleteRecord:Vv,deleteFilesBefore:q6,deleteAuditLogsBefore:G6};async function q6(e){let t=Gv(e,"date");if(t)throw da(t,t.message,fa.BAD_REQUEST,void 0,void 0,!0);if(kc.transformReq(e),!qv(e.date,qv.ISO_8601).isValid())throw da(new Error,Wp.INVALID_DATE,fa.BAD_REQUEST,Fc.LOG_LEVELS.ERROR,Wp.INVALID_DATE,!0);let n=kc.checkSchemaTableExist(e.schema,e.table);if(n)throw da(new Error,n,fa.NOT_FOUND,Fc.LOG_LEVELS.ERROR,n,!0);let s=await Ey.deleteRecordsBefore(e);if(await py(e.schema,e.table),$v.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(q6,"deleteFilesBefore");async function G6(e){let t=Gv(e,"timestamp");if(t)throw da(t,t.message,fa.BAD_REQUEST,void 0,void 0,!0);if(kc.transformReq(e),isNaN(e.timestamp))throw da(new Error,Wp.INVALID_VALUE("Timestamp"),fa.BAD_REQUEST,Fc.LOG_LEVELS.ERROR,Wp.INVALID_VALUE("Timestamp"),!0);let r=kc.checkSchemaTableExist(e.schema,e.table);if(r)throw da(new Error,r,fa.NOT_FOUND,Fc.LOG_LEVELS.ERROR,r,!0);let n=await Ey.deleteAuditLogsBefore(e);return await py(e.schema,e.table),$v.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(G6,"deleteAuditLogsBefore");async function Vv(e){e.ids&&(e.hash_values=e.ids);let t=M6(e);if(t)throw da(t,t.message,fa.BAD_REQUEST,void 0,void 0,!0);kc.transformReq(e);let r=kc.checkSchemaTableExist(e.schema,e.table);if(r)throw da(new Error,r,fa.NOT_FOUND,Fc.LOG_LEVELS.ERROR,r,!0);try{await py(e.schema,e.table);let n=await Ey.deleteRecords(e);return kc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${k6}`),n}catch(n){if(n.message===Fc.SEARCH_NOT_FOUND_MESSAGE){let s=new B6;return s.message=Fc.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(Vv,"deleteRecord")});var zp={};Ue(zp,{HASH_FUNCTION:()=>a_,hash:()=>Ty,validate:()=>Ay});function gy(e=o_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(i_.randomBytes(e)).map(r=>t[r%t.length]).join("")}function Ty(e,t=a_[Wv?.toUpperCase()]??"sha256"){return Sy[t](e)}function Ay(e,t,r=a_[Wv?.toUpperCase()]??"sha256"){return e?$6[r](e,t):!1}var i_,hu,Yv,Wv,o_,zv,a_,Sy,$6,jp=Re(()=>{i_=v(require("node:crypto")),hu=v(require("argon2")),Yv=v(oe());k();Wv=(0,Yv.get)(x.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),o_=16,zv=9,a_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(a_||{});a(gy,"generateSalt");Sy={md5:a((e,t=void 0)=>{t=t??gy(zv);let r=i_.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??gy(o_);let r=i_.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=gy(o_),r=await hu.hash(e,{type:hu.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},$6={md5:a((e,t)=>{let r=e.slice(0,zv);return e===Sy.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,o_);return e===Sy.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await hu.verify(e.slice(o_),t),"argon2id")};a(Ty,"hash");a(Ay,"validate")});var Qv=C((vOe,jv)=>{var Ry=tt(),zr={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 V6(e){return zr.password.presence=!0,zr.username.presence=!0,zr.role.presence=!0,zr.active.presence=!0,Ry.validateObject(e,zr)}a(V6,"addUserValidation");function K6(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,Ry.validateObject(e,zr)}a(K6,"alterUserValidation");function Y6(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,Ry.validateObject(e,zr)}a(Y6,"dropUserValidation");jv.exports={addUserValidation:V6,alterUserValidation:K6,dropUserValidation:Y6}});var lt=C((BOe,Xv)=>{"use strict";var{platform:xOe}=require("os"),W6="nats-server.zip",yy="nats-server",z6=process.platform==="win32"?`${yy}.exe`:yy,j6=/^[^\s.,*>]+$/,Jv="__request__",Q6=a(e=>`${e}.${Jv}`,"REQUEST_SUBJECT"),J6={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},X6={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Z6={HUB:"hub.pid",LEAF:"leaf.pid"},eZ={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},tZ={SUCCESS:"success",ERROR:"error"},rZ={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},nZ={TXN:"txn",MSGID:"msgid"},mu={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},sZ={[mu.ERR]:1,[mu.WRN]:2,[mu.INF]:3,[mu.DBG]:4,[mu.TRC]:5},iZ={debug:"-D",trace:"-DVV"};Xv.exports={NATS_SERVER_ZIP:W6,NATS_SERVER_NAME:yy,NATS_BINARY_NAME:z6,PID_FILES:Z6,NATS_CONFIG_FILES:X6,SERVER_SUFFIX:eZ,NATS_TERM_CONSTRAINTS_RX:j6,REQUEST_SUFFIX:Jv,UPDATE_REMOTE_RESPONSE_STATUSES:tZ,CLUSTER_STATUS_STATUSES:rZ,REQUEST_SUBJECT:Q6,SUBJECT_PREFIXES:nZ,MSG_HEADERS:J6,LOG_LEVELS:mu,LOG_LEVEL_FLAGS:iZ,LOG_LEVEL_HIERARCHY:sZ}});var by=C(Zv=>{"use strict";var oZ={cert:"-----BEGIN CERTIFICATE-----\rMIIDXDCCAkSgAwIBAgIFNTE4MzQwDQYJKoZIhvcNAQELBQAwXTEXMBUGA1UEAxMO\rSGFycGVyREIsIEluYy4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UE\rBxMGRGVudmVyMRcwFQYDVQQKEw5IYXJwZXJEQiwgSW5jLjAeFw0yMjAzMTEyMzAz\rNDlaFw0yNzAzMTAyMzAzNDlaMF0xFzAVBgNVBAMTDkhhcnBlckRCLCBJbmMuMQsw\rCQYDVQQGEwJVUzELMAkGA1UECBMCQ08xDzANBgNVBAcTBkRlbnZlcjEXMBUGA1UE\rChMOSGFycGVyREIsIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\rAQCsEUlBF8WImS78rCFXVKyntxfrW++4qZ3hGnoD2MHZAuDHyeP/5eGnaE9GQhKc\r4DwG4DGvh0wP2zIYnBfiQ3L2ZtnlDR9ZkKIQYGlVxTUn6T43krhK5nZKqDF43Yg3\rZEvO3cbJBjiKZx0eA2/toehdSsTAHHQx5gTDcggNe2tgoJHYPwi9YF/AxSBZrbgb\ryWlYgtYDmF32ytHP03GUCIdKOFuBPsHTGu4SkdEIdLIqO9oglW1YFH5qZ6NiwApW\rsP+GCuqOwDXXbdjr75iq9Tq/CDrjGFLaTPmvd2Q0qG/BtaCll0ghpG+yIHvt/iQs\rajS+LxEWAnVlGMaDdFErbDUtAgMBAAGjIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYD\rVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4IBAQASR4YW/rPK7PNArHVe9zzM\rb0rKNX/2T9/0nybRhmE/+hdlSgliTAeebmwkUS2APckmekYt/q2ZY2NS65Fo/jjp\rG8TJrtcF4h+ylVqUp0ZXQLFtIsr7r2JZA7hJ6njW6G4DHSZ0gxtECLi4CBlTjzm5\rNmnmIDObvGRTuqmcdAZmXeObbta/He2XIzietukPAYX062pNM+G5XT5UM1eG/Vlp\rN86vjhpyI+ffKy+C60SJqxmKM3ydgN7oLscE7+2wLPN25XqN4W99OwGsp5dTdu/f\r5lPtFayXdJ55e/sNQKmGN+UGLrL05c2MWgjb8U/LFilnupUianceoeSERZmVjzKX\r-----END CERTIFICATE-----\r".replace(/\r/g,`\r
|
|
17
17
|
`),key:"-----BEGIN RSA PRIVATE KEY-----\rMIIEowIBAAKCAQEArBFJQRfFiJku/KwhV1Ssp7cX61vvuKmd4Rp6A9jB2QLgx8nj\r/+Xhp2hPRkISnOA8BuAxr4dMD9syGJwX4kNy9mbZ5Q0fWZCiEGBpVcU1J+k+N5K4\rSuZ2SqgxeN2IN2RLzt3GyQY4imcdHgNv7aHoXUrEwBx0MeYEw3IIDXtrYKCR2D8I\rvWBfwMUgWa24G8lpWILWA5hd9srRz9NxlAiHSjhbgT7B0xruEpHRCHSyKjvaIJVt\rWBR+amejYsAKVrD/hgrqjsA1123Y6++YqvU6vwg64xhS2kz5r3dkNKhvwbWgpZdI\rIaRvsiB77f4kLGo0vi8RFgJ1ZRjGg3RRK2w1LQIDAQABAoIBAQCEOmh78EOpnGZC\rYBjjHrvrysVD5gvLcfVUtl8Ls7gMB60re1eOIF+PoZZCHKZnDd6zPfiQtj1adg0C\rYnnsM/8VoaZS4gm0b3RLd3ubIQifWhuo40RissY2yxfxlPSH9LhZCY8ojnJG0cTL\resK579E8WCfopjUY33XLqEbN7Ylv39J+DSqInjqV3efJZUa+HqUJ98VxxzodcKMD\rP3bwUU4gHoSSp4pAsOFH5sQhaIWH1IcNjrAwpee2cJQuh4G157RRIuuUpagtaEG/\rXJIiAyBguJyu3JQFnIBQF01N5+omJgXYJ1L0m54543/iIRThmF3zDCDgCyUzmOk+\rH6As9fv1AoGBANOpOtOZLSAScjGsgJamT3ceJ2wCa86g2j8Oxu8lJUmUp5s3tA0v\rBFW5O3S4KR1EXwkLMBUMrfFM8YvzHWxsXBI6XV8azGLvyqPHxr65OhmpGYkGZMXu\rn9okgjkqlewnY2I073gvyK7ppX51UL5y9fF1vlsk+UlW+Rgx/vMHbdcjAoGBANAc\rxRUsxs4QJpbS4zD3JOkHjr24a97TrS3kCybAHUMpR2NrEHPZw9zex0/aphOJUHfL\rIMkOZdpfDqMfxWy4FAEmqBEMkO2SB+h0Wp4P+qp81ax4vGFiB0cD3wtixr11U1tt\rlZ/ZTdv4VDpDFNK1KaplhTDeyuCjeYfS3/GJia9vAoGAcOsAgjBevZR5rXx84WH6\rVO8WUu37u7FenXNxt9VWTinrPMh72uixZFY8nOk+rely1e1NCn3IMko9Ns9NbDFm\r8SaH95vhXArXTYbfxZIlp9jp0YtCqcHDL+p4Oq04bFMbFyJseu7rHj1x18QYfnHw\rOY/6LL/N6k1m+Hx7qgXVmIcCgYB/w0nTCBw84XlvWqSTqQaF8VfWbWP79mP5KmkW\rLxdH5g2noVEGbohqDnK6OXd/wusdwByukiJBf94Skyy25AOT+VFwthA7aU1ljhkb\rtJ+lDuJ28eBkwLPLCzthWBC+u0qjdJFJAzVjd/7tjcU43nNn4s90AzL12iaAFhvZ\rwyA+DQKBgGc/4cdyGJ3YkcA8150gQBawgJZ7q8V1JND87ggWA8wnK3cHn7rMZQl2\r3emDp9HEFXFex5dbGDDqZFAoesZCDxjknIn9oNfW4PvaWS8q7b6ZKLZG1p03Pu7/\rtYaD0kPbo0kysfFT/co+NgHbdykvIyboomfGdNLTUjYuy6lpwpvs\r-----END RSA PRIVATE KEY-----\r".replace(/\r/g,`\r
|
|
18
18
|
`)},aZ="certificate.pem",cZ="privateKey.pem",lZ="caCertificate.pem",uZ="natsCertificate.pem",dZ="natsCaCertificate.pem",yt={DEFAULT:"default","DEFAULT-CA":"default-ca",SERVER:"server",CA:"ca","OPERATIONS-API":"operations-api","OPERATIONS-CA":"operations-ca"},fZ={tls_certificate:yt.SERVER,tls_certificateAuthority:yt.CA,customFunctions_tls_certificate:yt.SERVER,customFunctions_tls_certificateAuthority:yt.CA,operationsApi_tls_certificate:yt["OPERATIONS-API"],operationsApi_tls_certificateAuthority:yt["OPERATIONS-CA"]},_Z={[yt.SERVER]:2,[yt.DEFAULT]:1},hZ={[yt["OPERATIONS-API"]]:3,[yt.SERVER]:2,[yt.DEFAULT]:1},mZ={[yt["OPERATIONS-API"]]:3,[yt.SERVER]:2,[yt.DEFAULT]:1},pZ={[yt["OPERATIONS-CA"]]:3,[yt.CA]:2,[yt["DEFAULT-CA"]]:1},EZ={[yt["OPERATIONS-CA"]]:3,[yt.CA]:2,[yt["DEFAULT-CA"]]:1},gZ={[yt.CA]:2,[yt["DEFAULT-CA"]]:1};Object.assign(Zv,{CERTIFICATE_PEM_NAME:aZ,PRIVATEKEY_PEM_NAME:cZ,CA_PEM_NAME:lZ,CERT_NAME:yt,CERT_CONFIG_NAME_MAP:fZ,CERT_PREFERENCE_APP:_Z,CERT_PREFERENCE_OPS:hZ,CERT_PREFERENCE_REP:mZ,CA_CERT_PREFERENCE_REP:pZ,CA_CERT_PREFERENCE_OPS:EZ,CA_CERT_PREFERENCE_APP:gZ,CERTIFICATE_VALUES:oZ,NATS_CERTIFICATE_PEM_NAME:uZ,NATS_CA_PEM_NAME:dZ})});var Ny=C((qOe,iU)=>{"use strict";var nU=require("fs-extra"),ge=require("joi"),SZ=require("os"),{boolean:qe,string:mt,number:rr,array:ha}=ge.types(),{totalmem:eU}=require("os"),qc=require("path"),TZ=X(),Oy=ie(),FOe=by(),tU=(k(),P(q)),AZ=tt(),rU="log",RZ="components",yZ="Invalid logging.rotation.maxSize unit. Available units are G, M or K",bZ="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",OZ="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",NZ="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",wZ="rootPath config parameter is undefined",An=ge.alternatives([rr.min(0),mt]).optional().empty(null),Qp=ge.alternatives([ha.items(mt,{host:mt.required(),port:An},{hostname:mt.required(),port:An}).empty(null),ha.items(mt)]),Ci,sU=!1;iU.exports={configValidator:IZ,routesValidator:vZ,route_constraints:Qp};function IZ(e,t=!1){if(sU=t,Ci=e.rootPath,Oy.isEmpty(Ci))throw wZ;let r=qe.optional(),n=rr.min(0).max(1e3).empty(null).default(MZ),s=mt.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(c_),i=mt.optional().empty(null),o=mt.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),c=ge.string().empty(null).default(c_),l=ge.custom(PZ).empty(null).default(c_),u=e.clustering?.enabled,f=ge.object({certificate:i,certificateAuthority:i,privateKey:i}),d;return u===!0?d=ge.object({enabled:r,hubServer:ge.object({cluster:ge.object({name:ge.required().empty(null),network:ge.object({port:An,routes:Qp}).required()}).required(),leafNodes:ge.object({network:ge.object({port:An}).required()}).required(),network:ge.object({port:An}).required()}).required(),leafServer:ge.object({network:ge.object({port:An,routes:Qp}).required(),streams:ge.object({maxAge:rr.min(120).allow(null).optional(),maxBytes:rr.min(1).allow(null).optional(),maxMsgs:rr.min(1).allow(null).optional(),path:c}).required()}).required(),logLevel:ge.valid("error","warn","info","debug","trace"),nodeName:o,republishMessages:qe.optional(),databaseLevel:qe.optional(),tls:ge.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:qe.required(),verify:qe.optional()}),user:mt.optional().empty(null)}).optional():d=ge.object({enabled:r,tls:ge.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:qe.optional()})}).optional(),ge.object({authentication:ge.alternatives(ge.object({authorizeLocal:qe,cacheTTL:rr.required(),cookie:ge.object({domains:ha.items(mt).optional(),expires:mt.optional()}),enableSessions:qe,hashFunction:mt.valid("md5","sha256","argon2id").optional().empty(null)}),qe).optional(),analytics:ge.object({aggregatePeriod:rr}),replication:ge.object({hostname:ge.alternatives(mt,rr).optional().empty(null),url:mt.optional().empty(null),port:An,securePort:An,routes:ha.optional().empty(null),databases:ge.alternatives(mt,ha),enableRootCAs:qe.optional(),copyTablesToCatchUp:qe.optional()}).optional(),componentsRoot:s.optional(),clustering:d,localStudio:ge.object({enabled:r}).required(),logging:ge.object({auditAuthEvents:ge.object({logFailed:qe,logSuccessful:qe}),file:qe.required(),level:ge.valid("notify","fatal","error","warn","info","debug","trace"),rotation:ge.object({enabled:qe.optional(),compress:qe.optional(),interval:mt.custom(LZ).optional().empty(null),maxSize:mt.custom(DZ).optional().empty(null),path:mt.optional().empty(null).default(c_)}).required(),root:s,stdStreams:qe.required(),auditLog:qe.required()}).required(),operationsApi:ge.object({network:ge.object({cors:qe.optional(),corsAccessList:ha.optional(),headersTimeout:rr.min(1).optional(),keepAliveTimeout:rr.min(1).optional(),port:An,domainSocket:ge.optional().empty("hdb/operations-server").default(c_),securePort:An,timeout:rr.min(1).optional()}).optional(),tls:ge.alternatives([ge.array().items(f),f])}).required(),rootPath:mt.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").required(),mqtt:ge.object({network:ge.object({port:An,securePort:An,mtls:ge.alternatives([qe.optional(),ge.object({user:mt.optional(),certificateAuthority:i,required:qe.optional()})])}).required(),webSocket:qe.optional(),requireAuthentication:qe.optional()}),http:ge.object({compressionThreshold:rr.optional(),cors:qe.optional(),corsAccessList:ha.optional(),headersTimeout:rr.min(1).optional(),port:An,securePort:An,maxHeaderSize:rr.optional(),mtls:ge.alternatives([qe.optional(),ge.object({user:mt.optional(),certificateAuthority:i,required:qe.optional()})]),threadRange:ge.alternatives([ha.optional(),mt.optional()])}).required(),threads:ge.alternatives(n.optional(),ge.object({count:n.optional(),debug:ge.alternatives(qe.optional(),ge.object({startingPort:rr.min(1).optional(),host:mt.optional(),waitForDebugger:qe.optional()})),maxHeapMemory:rr.min(0).optional()})),storage:ge.object({writeAsync:qe.required(),overlappingSync:qe.optional(),caching:qe.optional(),compression:ge.alternatives([qe.optional(),ge.object({dictionary:mt.optional(),threshold:rr.optional()})]),compactOnStart:qe.optional(),compactOnStartKeepBackup:qe.optional(),noReadAhead:qe.optional(),path:l,prefetchWrites:qe.optional(),maxFreeSpaceToLoad:rr.optional(),maxFreeSpaceToRetain:rr.optional()}).required(),ignoreScripts:qe.optional(),tls:ge.alternatives([ge.array().items(f),f])}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}a(IZ,"configValidator");function CZ(e){return sU||nU.existsSync(e)?null:`Specified path ${e} does not exist.`}a(CZ,"doesPathExist");function PZ(e,t){ge.assert(e,mt.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=CZ(e);if(r)return t.message(r)}a(PZ,"validatePath");function DZ(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(yZ);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(OZ):e}a(DZ,"validateRotationMaxSize");function LZ(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(bZ);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(NZ):e}a(LZ,"validateRotationInterval");function MZ(e,t){let r=t.state.path.join("."),n=SZ.cpus().length,s=n-1;s<=2&&(s=2);let i=process.constrainedMemory?.()||eU();return i=Math.round(Math.min(i,eU())/1e6),s=Math.max(Math.min(s,Math.round((i-750)/300)),1),TZ.info(`Detected ${n} cores and ${i}MB on this machine, defaulting ${r} to ${s}`),s}a(MZ,"setDefaultThreads");function c_(e,t){let r=t.state.path.join(".");if(!Oy.isEmpty(t.original)&&r!=="operationsApi.network.domainSocket")return t.original;if(Oy.isEmpty(Ci))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"componentsRoot":return qc.join(Ci,RZ);case"logging.root":return qc.join(Ci,rU);case"clustering.leafServer.streams.path":return qc.join(Ci,"clustering","leaf");case"storage.path":let n=qc.join(Ci,tU.LEGACY_DATABASES_DIR_NAME);return nU.existsSync(n)?n:qc.join(Ci,tU.DATABASES_DIR_NAME);case"logging.rotation.path":return qc.join(Ci,rU);case"operationsApi.network.domainSocket":return r==null?null:qc.join(Ci,"operations-server");default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(c_,"setDefaultRoot");function vZ(e){let t=ge.object({routes:Qp});return AZ.validateBySchema({routes:e},t)}a(vZ,"routesValidator")});var Lt=C(pU=>{"use strict";var ps=(k(),P(q)),Er=ie(),nr=X(),{configValidator:UZ,routesValidator:oU}=Ny(),jr=require("fs-extra"),cU=require("yaml"),Vn=require("path"),xZ=require("is-number"),lU=require("properties-reader"),BZ=require("lodash"),{handleHDBError:HZ}=he(),{HTTP_STATUS_CODES:kZ,HDB_ERROR_MSGS:pu}=Un(),{server:FZ}=(Mr(),P(ru)),{PACKAGE_ROOT:uU}=gt(),{DATABASES_PARAM_CONFIG:l_,CONFIG_PARAMS:$n,CONFIG_PARAM_MAP:Ks}=ps,qZ="Unable to get config value because config is uninitialized",GZ="Config successfully initialized",$Z="Error backing up config file",VZ="Empty parameter sent to getConfigValue",dU=Vn.join(uU,"config","yaml",ps.HDB_DEFAULT_CONFIG_FILE),KZ=Vn.join(uU,"config","yaml","defaultNatsConfig.yaml"),YZ="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",aU={logging_rotation_retain:"logging.rotation.retain",logging_rotation_rotate:"logging.rotation.rotate",logging_rotation_rotateinterval:"logging.rotation.rotateInterval",logging_rotation_rotatemodule:"logging.rotation.rotateModule",logging_rotation_timezone:"logging.rotation.timezone",logging_rotation_workerinterval:"logging.rotation.workerInterval"},Jp,Dt,Xp;Object.assign(pU,{createConfigFile:WZ,getDefaultConfig:zZ,getConfigValue:_U,initConfig:Zp,flattenConfig:Eu,updateConfigValue:hU,updateConfigObject:QZ,getConfiguration:ZZ,setConfiguration:e8,readConfigFile:Py,getClusteringRoutes:t8,initOldConfig:mU,getConfigFromFile:r8,getConfigFilePath:Gc,addConfig:n8,deleteConfigFromFile:s8,getConfigObj:i8,resolvePath:wy,getFlatConfigObj:o8});function wy(e){if(e?.startsWith("~/"))return Vn.join(Er.getHomeDir(),e.slice(1));let t=oe();try{return Vn.resolve(t.getHdbBasePath(),e)}catch(r){return console.error("Unable to resolve path",e,r),e}}a(wy,"resolvePath");function WZ(e,t=!1){let r=ma(dU);if(e.clustering_enabled||e.CLUSTERING_ENABLED||e.clustering){let c=cU.parseDocument(jr.readFileSync(KZ,"utf8"),{simpleKeys:!0});r.addIn(["clustering"],c.toJSON().clustering)}Jp=Eu(r.toJSON());let n;for(let c in e){let l=Ks[c.toLowerCase()];if(l===$n.DATABASES){Array.isArray(e[c])?n=e[c]:n=Object.keys(e[c]).map(u=>({[u]:e[c][u]}));continue}if(!l&&(c.endsWith("_package")||c.endsWith("_port"))&&(l=c),l!==void 0){let u=l.split("_"),f=Iy(l,e[c]);l==="rootPath"&&f?.endsWith("/")&&(f=f.slice(0,-1));try{r.setIn([...u],f)}catch(d){nr.error(d)}}}n&&fU(r,n),Cy(r,t);let s=r.toJSON();Dt=Eu(s);let i=r.getIn(["rootPath"]),o=Vn.join(i,ps.HDB_CONFIG_FILE);if(jr.createFileSync(o),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);jr.writeFileSync(o,String(r)),nr.trace(`Config file written to ${o}`)}a(WZ,"createConfigFile");function fU(e,t){let r;try{try{r=JSON.parse(t)}catch(n){if(!Er.isObject(t))throw n;r=t}for(let n of r){let s=Object.keys(n)[0];if(n[s].hasOwnProperty(l_.TABLES))for(let i in n[s][l_.TABLES])for(let o in n[s][l_.TABLES][i]){let c=n[s][l_.TABLES][i][o],l=[$n.DATABASES,s,l_.TABLES,i,o];e.hasIn(l)?e.setIn(l,c):e.addIn(l,c)}else for(let i in n[s]){let o=n[s][i],c=[$n.DATABASES,s,i];e.hasIn(c)?e.setIn(c,o):e.addIn(c,o)}}}catch(n){nr.error("Error parsing schemas CLI/env config arguments",n)}}a(fU,"setSchemasConfig");function zZ(e){if(Jp===void 0){let r=ma(dU);Jp=Eu(r.toJSON())}let t=Ks[e.toLowerCase()];if(t!==void 0)return Jp[t.toLowerCase()]}a(zZ,"getDefaultConfig");function _U(e){if(e==null){nr.info(VZ);return}if(Dt===void 0){nr.trace(qZ);return}let t=Ks[e.toLowerCase()];if(t!==void 0)return Dt[t.toLowerCase()]}a(_U,"getConfigValue");function Gc(e=Er.getPropsFilePath()){let t=Er.getEnvCliRootPath();if(t)return wy(Vn.join(t,ps.HDB_CONFIG_FILE));let r=lU(e);return wy(r.get(ps.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY))}a(Gc,"getConfigFilePath");function Zp(e=!1){if(Dt===void 0||e){let t;if(!Er.noBootFile()){t=Er.getPropsFilePath();try{jr.accessSync(t,jr.constants.F_OK|jr.constants.R_OK)}catch(i){throw nr.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}}let r=Gc(t),n;if(r.includes("config/settings.js"))try{mU(r);return}catch(i){if(i.code!==ps.NODE_ERROR_CODES.ENOENT)throw i}try{n=ma(r)}catch(i){if(i.code===ps.NODE_ERROR_CODES.ENOENT){nr.trace(`HarperDB config file not found at ${r}.
|
|
19
19
|
This can occur during early stages of install where the config file has not yet been created`);return}else throw nr.error(i),new Error(`Error reading HarperDB config file at ${r}`)}jZ(n,r),Cy(n);let s=n.toJSON();if(FZ.config=s,Dt=Eu(s),Dt.logging_rotation_rotate)for(let i in aU)Dt[i]&&nr.error(`Config ${aU[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);nr.trace(GZ)}}a(Zp,"initConfig");function jZ(e,t){let r=e.getIn(["rootPath"]),n=!1;if(e.hasIn(["storage","path"])||(e.setIn(["storage","path"],Vn.join(r,"database")),n=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],Vn.join(r,"log")),n=!0),e.hasIn(["authentication"])||(e.addIn(["authentication"],{cacheTTL:3e4,enableSessions:!0,operationTokenTimeout:e.getIn(["operationsApi","authentication","operationTokenTimeout"])??"1d",refreshTokenTimeout:e.getIn(["operationsApi","authentication","refreshTokenTimeout"])??"30d"}),n=!0),e.hasIn(["analytics"])||(e.addIn(["analytics"],{aggregatePeriod:60}),n=!0),n){if(nr.trace("Updating config file with missing config params"),e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${e.errors}`);jr.writeFileSync(t,String(e))}}a(jZ,"checkForUpdatedConfig");function Cy(e,t=!1){let r=e.toJSON();if(r.componentsRoot=r.componentsRoot??r?.customFunctions?.root,r?.http?.threads&&(r.threads=r?.http?.threads),r.http?.port&&r.http?.port===r.http?.securePort)throw pu.CONFIG_VALIDATION("http.port and http.securePort cannot be the same value");if(r.operationsApi?.network?.port&&r.operationsApi?.network?.port===r.operationsApi?.network?.securePort)throw pu.CONFIG_VALIDATION("operationsApi.network.port and operationsApi.network.securePort cannot be the same value");let n=UZ(r,t);if(n.error)throw pu.CONFIG_VALIDATION(n.error.message);typeof n.value.threads=="object"?e.setIn(["threads","count"],n.value.threads.count):e.setIn(["threads"],n.value.threads),e.setIn(["componentsRoot"],n.value.componentsRoot),e.setIn(["logging","root"],n.value.logging.root),e.setIn(["storage","path"],n.value.storage.path),e.setIn(["logging","rotation","path"],n.value.logging.rotation.path),e.setIn(["operationsApi","network","domainSocket"],n.value?.operationsApi?.network?.domainSocket),r?.clustering?.enabled&&e.setIn(["clustering","leafServer","streams","path"],n.value.clustering.leafServer.streams?.path)}a(Cy,"validateConfig");function QZ(e,t){Dt===void 0&&(Dt={});let r=Ks[e.toLowerCase()];if(r===void 0){nr.trace(`Unable to update config object because config param '${e}' does not exist`);return}Dt[r.toLowerCase()]=t}a(QZ,"updateConfigObject");function hU(e,t,r=void 0,n=!1,s=!1,i=!1){Dt===void 0&&Zp();let o=_U(Ks.hdb_root),c=Vn.join(o,ps.HDB_CONFIG_FILE),l=ma(c),u;if(r&&Dt){let _=!1;for(let h in r)if(r[h]!=Dt[h.toLowerCase()]){_=!0;break}if(!_){nr.trace("No changes detected in config parameters, skipping update");return}}if(r===void 0&&e.toLowerCase()===$n.DATABASES)u=t;else if(r===void 0){let _;if(i)_=e;else if(_=Ks[e.toLowerCase()],_===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let h=_.split("_"),m=Iy(_,t);l.setIn([...h],m)}else for(let _ in r){let h=Ks[_.toLowerCase()];if(h===$n.HTTP_SECUREPORT&&r[_]===Dt[$n.HTTP_PORT]?.toString()&&l.setIn(["http","port"],null),h===$n.OPERATIONSAPI_NETWORK_SECUREPORT&&r[_]===Dt[$n.OPERATIONSAPI_NETWORK_PORT.toLowerCase()]?.toString()&&l.setIn(["operationsApi","network","port"],null),h===$n.DATABASES){u=r[_];continue}if(h?.startsWith("threads_")){let m=l.getIn(["threads"]);m>=0&&(l.deleteIn(["threads"]),l.setIn(["threads","count"],m))}if(!h&&(_.endsWith("_package")||_.endsWith("_port"))&&(h=_),h!==void 0){let m=h.split("_"),S=ps.LEGACY_CONFIG_PARAMS[_.toUpperCase()];S&&S.startsWith("customFunctions")&&l.hasIn(S.split("_"))&&(h=S,m=S.split("_"));let g=Iy(h,r[_]);h==="rootPath"&&g?.endsWith("/")&&(g=g.slice(0,-1));try{m.length>1&&typeof l.getIn(m.slice(0,-1))=="boolean"&&l.deleteIn(m.slice(0,-1)),l.setIn([...m],g)}catch(A){nr.error(A)}}}u&&fU(l,u),Cy(l);let f=l.getIn(["rootPath"]),d=Vn.join(f,ps.HDB_CONFIG_FILE);if(n===!0&&JZ(c,f),l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${l.errors}`);jr.writeFileSync(d,String(l)),s&&(Dt=Eu(l.toJSON())),nr.trace(`Config parameter: ${e} updated with value: ${t}`)}a(hU,"updateConfigValue");function JZ(e,t){try{let r=Vn.join(t,"backup",`${new Date(Date.now()).toISOString().replaceAll(":","-")}-${ps.HDB_CONFIG_FILE}.bak`);jr.copySync(e,r),nr.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){nr.error($Z),nr.error(r)}}a(JZ,"backupConfigFile");var XZ=["databases"];function Eu(e){return e.http&&Object.assign(e.http,e?.customFunctions?.network),e?.operationsApi?.network&&(e.operationsApi.network={...e.http,...e.operationsApi.network}),e?.operationsApi&&(e.operationsApi.tls={...e.tls,...e.operationsApi.tls}),Xp=e,r(e);function r(n){let s={};for(let i in n)if(n.hasOwnProperty(i)){if(typeof n[i]=="object"&&n[i]!==null&&!Array.isArray(n[i])&&!XZ.includes(i)){let o=r(n[i]);for(let c in o){if(!o.hasOwnProperty(c))continue;c!=="package"&&(i=i.toLowerCase());let l=i+"_"+c;!$n[l.toUpperCase()]&&Ks[l]&&(s[Ks[l].toLowerCase()]=o[c]),s[l]=o[c]}}n[i]!==void 0&&(s[i.toLowerCase()]=n[i])}return s}a(r,"squashObj")}a(Eu,"flattenConfig");function Iy(e,t){if(e===$n.CLUSTERING_NODENAME||e===$n.CLUSTERING_USER){if(t==null)return t;if(!isNaN(t))return t.toString();if(typeof t=="string"&&t.toLowerCase()==="true"||typeof t=="string"&&t.toLowerCase()==="false")return t}else{if(xZ(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||Er.isObject(t)||t===null)return t;if(typeof t=="string"&&t.toLowerCase()==="true")return!0;if(typeof t=="string"&&t.toLowerCase()==="false")return!1}if(t===void 0||t.toLowerCase()==="undefined")return null;if(typeof t=="string"&&(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")))try{return JSON.parse(t)}catch{}return Er.autoCast(t)}a(Iy,"castConfigValue");function ZZ(){let e=Er.getPropsFilePath(),t=Gc(e);return ma(t).toJSON()}a(ZZ,"getConfiguration");async function e8(e){let{operation:t,hdb_user:r,hdb_auth_header:n,...s}=e;try{return hU(void 0,void 0,s,!0),YZ}catch(i){throw typeof i=="string"||i instanceof String?HZ(i,i,kZ.BAD_REQUEST,void 0,void 0,!0):i}}a(e8,"setConfiguration");function Py(){let e=Er.getPropsFilePath();try{jr.accessSync(e,jr.constants.F_OK|jr.constants.R_OK)}catch(n){if(!Er.noBootFile())throw nr.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=Gc(e);return ma(t).toJSON()}a(Py,"readConfigFile");function ma(e){return cU.parseDocument(jr.readFileSync(e,"utf8"),{simpleKeys:!0})}a(ma,"parseYamlDoc");function t8(){let e=Py(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=Er.isEmptyOrZeroLength(t)?[]:t;let r=oU(t);if(r)throw pu.CONFIG_VALIDATION(r.message);let n=e?.clustering?.leafServer?.network?.routes;n=Er.isEmptyOrZeroLength(n)?[]:n;let s=oU(n);if(s)throw pu.CONFIG_VALIDATION(s.message);if(!Er.isEmptyOrZeroLength(n)&&!Er.isEmptyOrZeroLength(t)){let i=t.filter(o=>n.some(c=>c.host===o.host&&c.port===o.port));if(!Er.isEmptyOrZeroLength(i)){let o=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw pu.CONFIG_VALIDATION(o)}}return{hub_routes:t,leaf_routes:n}}a(t8,"getClusteringRoutes");function mU(e){let t=lU(e);Dt={};for(let r in Ks){let n=t.get(r.toUpperCase());if(Er.isEmpty(n)||typeof n=="string"&&n.trim().length===0)continue;let s=Ks[r].toLowerCase();s===$n.LOGGING_ROOT?Dt[s]=Vn.dirname(n):Dt[s]=n}return Dt}a(mU,"initOldConfig");function r8(e){let t=Py();return BZ.get(t,e.replaceAll("_","."))}a(r8,"getConfigFromFile");async function n8(e,t){let r=ma(Gc());if(r.hasIn([e])?r.setIn([e],t):r.addIn([e],t),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);await jr.writeFile(Gc(),String(r))}a(n8,"addConfig");function s8(e){let t=Gc(Er.getPropsFilePath()),r=ma(t);r.deleteIn(e);let n=r.getIn(["rootPath"]),s=Vn.join(n,ps.HDB_CONFIG_FILE);jr.writeFileSync(s,String(r))}a(s8,"deleteConfigFromFile");function i8(){return Xp||(Zp(),Xp)}a(i8,"getConfigObj");function o8(){return Dt||Zp(),Dt}a(o8,"getFlatConfigObj")});var Kn=C((KOe,Nr)=>{"use strict";var SU="username is required",TU="nothing to update, must supply active, role or password to update",AU="password cannot be an empty string",RU="If role is specified, it cannot be empty.",yU="active must be true or false";Nr.exports.addUser=m8;Nr.exports.alterUser=p8;Nr.exports.dropUser=g8;Nr.exports.getSuperUser=y8;Nr.exports.userInfo=S8;Nr.exports.listUsers=tE;Nr.exports.listUsersExternal=T8;Nr.exports.setUsersWithRolesCache=$c;Nr.exports.findAndValidateUser=ky;Nr.exports.getClusterUser=b8;Nr.exports.getUsersWithRolesCache=R8;Nr.exports.USERNAME_REQUIRED=SU;Nr.exports.ALTERUSER_NOTHING_TO_UPDATE=TU;Nr.exports.EMPTY_PASSWORD=AU;Nr.exports.EMPTY_ROLE=RU;Nr.exports.ACTIVE_BOOLEAN=yU;var bU=Qr(),a8=_a(),u_=(jp(),P(zp)),OU=Qv(),d_=Wr(),Uy=po(),Pi=ie(),NU=require("validate.js"),xy=X(),{promisify:c8}=require("util"),By=ho(),Ly=(k(),P(q)),EU=lt(),l8=Lt(),u8=oe(),d8=uo(),{hdb_errors:f8,ClientError:Ys}=he(),{HTTP_STATUS_CODES:mo,AUTHENTICATION_ERROR_MSGS:Dy,HDB_ERROR_MSGS:gu}=f8,{UserEventMsg:Hy}=Ws(),My=require("lodash"),{server:eE}=(Mr(),P(ru)),_8=X();eE.getUser=(e,t)=>ky(e,t,t!=null);eE.authenticateUser=(e,t)=>ky(e,t);var wU={username:!0,active:!0,role:!0,password:!0},gU=new Map,h8=c8(a8.delete),vy=u8.get(Ly.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??u_.HASH_FUNCTION.SHA256,Di;async function m8(e){let t=NU.cleanAttributes(e,wU),r=OU.addUserValidation(t);if(r)throw new Ys(r.message);let n=await d_.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["id","permission","role"]});if(!n||n.length<1)throw new Ys(gu.ROLE_NAME_NOT_FOUND(t.role),mo.NOT_FOUND);if(n.length>1)throw new Ys(gu.DUP_ROLES_FOUND(t.role),mo.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=By.encrypt(t.password)),t.password=await u_.hash(t.password,vy),t.hash_function=vy,t.role=n[0].id;let s=await bU.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(xy.debug(s),await $c(),s.skipped_hashes.length===1)throw new Ys(gu.USER_ALREADY_EXISTS(t.username),mo.CONFLICT);return Uy.signalUserChange(new Hy(process.pid)),`${t.username} successfully added`}a(m8,"addUser");async function p8(e){let t=NU.cleanAttributes(e,wU);if(Pi.isEmptyOrZeroLength(t.username))throw new Error(SU);if(Pi.isEmptyOrZeroLength(t.password)&&Pi.isEmptyOrZeroLength(t.role)&&Pi.isEmptyOrZeroLength(t.active))throw new Error(TU);if(!Pi.isEmpty(t.password)&&Pi.isEmptyOrZeroLength(t.password.trim()))throw new Error(AU);if(!Pi.isEmpty(t.active)&&!Pi.isBoolean(t.active))throw new Error(yU);if(!Pi.isEmpty(t.password)&&!Pi.isEmptyOrZeroLength(t.password.trim())&&(E8(t.username)&&(t.hash=By.encrypt(t.password)),t.password=await u_.hash(t.password,vy)),t.role==="")throw new Error(RU);if(t.role){let n=await d_.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new Ys(gu.ALTER_USER_ROLE_NOT_FOUND(t.role),mo.NOT_FOUND);if(n.length>1)throw new Ys(gu.DUP_ROLES_FOUND(t.role),mo.CONFLICT);t.role=n[0].id}let r=await bU.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await $c(),Uy.signalUserChange(new Hy(process.pid)),r}a(p8,"alterUser");function E8(e){let t=!1,r=Di.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}a(E8,"isClusterUser");async function g8(e){let t=OU.dropUserValidation(e);if(t)throw new Ys(t.message);if(Di.get(e.username)===void 0)throw new Ys(gu.USER_NOT_EXIST(e.username),mo.NOT_FOUND);let r=await h8({table:"hdb_user",schema:"system",hash_values:[e.username]});return xy.debug(r),await $c(),Uy.signalUserChange(new Hy(process.pid)),`${e.username} successfully deleted`}a(g8,"dropUser");async function S8(e){let t={};if(!e||!e.hdb_user)return"There was no user info in the body";t=My.cloneDeep(e.hdb_user);let r=await d_.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}a(S8,"userInfo");async function T8(){let e=await tE();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}a(T8,"listUsersExternal");async function tE(){let e=await d_.searchByValue({schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=My.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await d_.searchByValue({schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=My.cloneDeep(s),s.role=t[s.role],A8(s.role),n.set(s.username,s);return n}a(tE,"listUsers");function A8(e){if(!e){xy.error("invalid user role found.");return}e.permission.system||(e.permission.system={}),e.permission.system.tables||(e.permission.system.tables={});for(let t of Object.keys(d8)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}a(A8,"appendSystemTablesToRole");async function $c(e=void 0){e?Di=e:Di=await tE()}a($c,"setUsersWithRolesCache");async function R8(){return Di||await $c(),Di}a(R8,"getUsersWithRolesCache");async function ky(e,t,r=!0){Di||await $c();let n=Di.get(e);if(!n){if(!r)return{username:e};throw new Ys(Dy.GENERIC_AUTH_FAIL,mo.UNAUTHORIZED)}if(n&&!n.active)throw new Ys(Dy.USER_INACTIVE,mo.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(gU.get(t)===n.password)return s;{let i=u_.validate(n.password,t,n.hash_function||u_.HASH_FUNCTION.MD5);if(i?.then&&(i=await i),i===!0)gU.set(t,n.password);else throw new Ys(Dy.GENERIC_AUTH_FAIL,mo.UNAUTHORIZED)}}return s}a(ky,"findAndValidateUser");async function y8(){Di||await $c();for(let[,e]of Di)if(e.role.role==="super_user")return e}a(y8,"getSuperUser");async function b8(){let e=await tE(),t=l8.getConfigFromFile(Ly.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!(r==null||r?.role?.role!==Ly.ROLE_TYPES_ENUM.CLUSTER_USER))return r.decrypt_hash=By.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+EU.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+EU.SERVER_SUFFIX.ADMIN,r}a(b8,"getClusterUser");var IU=[];eE.invalidateUser=function(e){for(let t of IU)try{t(e)}catch(r){_8.error("Error invalidating user",r)}};eE.onInvalidatedUser=function(e){IU.push(e)}});var __=C((jOe,LU)=>{"use strict";var Vc=X(),Yn=(k(),P(q)),O8=KM(),WOe=ms(),zOe=Ii(),N8=Kn(),{validateEvent:CU}=Ws(),f_=Gn(),w8=require("process"),{resetDatabases:I8}=(xe(),P(ct)),C8={[Yn.ITC_EVENT_TYPES.SCHEMA]:P8,[Yn.ITC_EVENT_TYPES.USER]:DU};async function P8(e){let t=CU(e);if(t){Vc.error(t);return}Vc.trace("ITC schemaHandler received schema event:",e),await O8(e.message),await D8(e.message)}a(P8,"schemaHandler");async function D8(e){try{f_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),f_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),f_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=I8();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){Vc.error(t)}}a(D8,"syncSchemaMetadata");var PU=[];async function DU(e){try{try{f_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),f_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){Vc.warn(r)}let t=CU(e);if(t){Vc.error(t);return}Vc.trace(`ITC userHandler ${Yn.HDB_ITC_CLIENT_PREFIX}${w8.pid} received user event:`,e),await N8.setUsersWithRolesCache();for(let r of PU)r()}catch(t){Vc.error(t)}}a(DU,"userHandler");DU.addListener=function(e){PU.push(e)};LU.exports=C8});var Ws=C((tNe,vU)=>{"use strict";var JOe=X(),Fy=ie(),L8=(k(),P(q)),{ITC_ERRORS:h_}=Un(),{parentPort:XOe,threadId:M8,isMainThread:v8,workerData:ZOe}=require("worker_threads"),{onMessageFromWorkers:U8,broadcast:eNe,broadcastWithAcknowledgement:x8}=et();vU.exports={sendItcEvent:B8,validateEvent:MU,SchemaEventMsg:H8,UserEventMsg:k8};var rE;U8(async(e,t)=>{rE=rE||__(),MU(e),rE[e.type]&&await rE[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function B8(e){return!v8&&e.message&&(e.message.originator=M8),x8(e)}a(B8,"sendItcEvent");function MU(e){if(typeof e!="object")return h_.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||Fy.isEmpty(e.type))return h_.MISSING_TYPE;if(!e.hasOwnProperty("message")||Fy.isEmpty(e.message))return h_.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||Fy.isEmpty(e.message.originator))return h_.MISSING_ORIGIN;if(L8.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return h_.INVALID_EVENT(e.type)}a(MU,"validateEvent");function H8(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(H8,"SchemaEventMsg");function k8(e){this.originator=e}a(k8,"UserEventMsg")});var po=C((sNe,HU)=>{"use strict";var UU=(k(),P(q)),nNe=ie(),nE=X(),xU=GM(),Su,{sendItcEvent:BU}=Ws();function F8(e){try{nE.info("signalSchemaChange called with message:",e),Su=Su||__();let t=new xU(UU.ITC_EVENT_TYPES.SCHEMA,e);return Su.schema(t),BU(t)}catch(t){nE.error(t)}}a(F8,"signalSchemaChange");function q8(e){try{nE.trace("signalUserChange called with message:",e),Su=Su||__();let t=new xU(UU.ITC_EVENT_TYPES.USER,e);return Su.user(t),BU(t)}catch(t){nE.error(t)}}a(q8,"signalUserChange");HU.exports={signalSchemaChange:F8,signalUserChange:q8}});var sE=C((oNe,FU)=>{"use strict";var kU=ie(),G8=(k(),P(q)),$8=X(),V8=kp(),K8=Hp(),Y8=po(),{SchemaEventMsg:W8}=Ws(),z8="already exists in";FU.exports=j8;async function j8(e,t,r){if(kU.isEmptyOrZeroLength(r))return r;let n=[];kU.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 Q8(e,t.schema,t.name,i)})),s}a(j8,"lmdbCheckForNewAttributes");async function Q8(e,t,r,n){let s=new K8(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await J8(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(z8))$8.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a(Q8,"createNewAttribute");async function J8(e){let t;return t=await V8(e),Y8.signalSchemaChange(new W8(process.pid,G8.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(J8,"createAttribute")});var Tu=C((cNe,qU)=>{"use strict";var qy=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}};qU.exports=qy});var $U=C((uNe,GU)=>{"use strict";var X8=Tu(),Z8=(k(),P(q)).OPERATIONS_ENUM,Gy=class extends X8{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(Z8.INSERT,r,n,s,i),this.records=t}};GU.exports=Gy});var KU=C((fNe,VU)=>{"use strict";var e5=Tu(),t5=(k(),P(q)).OPERATIONS_ENUM,$y=class extends e5{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(t5.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};VU.exports=$y});var WU=C((hNe,YU)=>{"use strict";var r5=Tu(),n5=(k(),P(q)).OPERATIONS_ENUM,Vy=class extends r5{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(n5.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};YU.exports=Vy});var jU=C((pNe,zU)=>{"use strict";var s5=Tu(),i5=(k(),P(q)).OPERATIONS_ENUM,Ky=class extends s5{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(i5.DELETE,n,s,t,i),this.original_records=r}};zU.exports=Ky});var m_=C((SNe,ZU)=>{"use strict";var gNe=require("path"),QU=ht(),o5=$U(),a5=KU(),c5=WU(),l5=jU(),Au=Ft(),JU=ie(),{CONFIG_PARAMS:u5}=(k(),P(q)),XU=oe();XU.initSync();var iE=(k(),P(q)).OPERATIONS_ENUM,{getTransactionAuditStorePath:d5}=St();ZU.exports=f5;async function f5(e,t){if(XU.get(u5.LOGGING_AUDITLOG)===!1)return;let r=d5(e.schema,e.table),n=await QU.openEnvironment(r,e.table,!0),s=_5(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){QU.initializeDBIs(n,Au.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Au.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[Au.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[Au.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),JU.isEmpty(s.user_name)||n.dbis[Au.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[Au.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a(f5,"writeTransaction");function _5(e,t){let r=JU.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===iE.INSERT)return new o5(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===iE.UPDATE)return new a5(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===iE.UPSERT)return new c5(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===iE.DELETE)return new l5(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(_5,"createTransactionObject")});var Yy=C((RNe,e0)=>{"use strict";var h5=Xf(),ANe=bf(),p_=(k(),P(q)),m5=Of(),p5=Uc().insertRecords,E5=ht(),g5=X(),S5=sE(),{getSchemaPath:T5}=St(),A5=m_();e0.exports=R5;async function R5(e){try{let{schema_table:t,attributes:r}=h5(e);m5(e,r,t.hash_attribute),e.schema!==p_.SYSTEM_SCHEMA_NAME&&(r.includes(p_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(p_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(p_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(p_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await S5(e.hdb_auth_header,t,r),s=T5(e.schema,e.table),i=await E5.openEnvironment(s,e.table),o=await p5(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await A5(e,o)}catch(c){g5.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(R5,"lmdbCreateRecords")});var n0=C((bNe,r0)=>{"use strict";var t0=(k(),P(q)),y5=Yy(),b5=bf(),O5=require("fs-extra"),{getSchemaPath:N5}=St();r0.exports=w5;async function w5(e){let t=[{name:e.schema,createddate:Date.now()}],r=new b5(t0.SYSTEM_SCHEMA_NAME,t0.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await y5(r),await O5.mkdirp(N5(e.schema))}a(w5,"lmdbCreateSchema")});var i0=C((NNe,s0)=>{"use strict";var Wy=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}};s0.exports=Wy});var l0=C((DNe,c0)=>{"use strict";var o0=ht(),zy=dn(),jy=Un().LMDB_ERRORS_ENUM,I5=Ft(),a0=X(),INe=ie(),C5=require("lmdb"),P5=i0(),D5=(k(),P(q)),{OVERFLOW_MARKER:CNe,MAX_SEARCH_KEY_LENGTH:PNe}=I5,L5=D5.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function M5(e,t,r,n){if(zy.validateEnv(e),t===void 0)throw new Error(jy.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(jy.IDS_REQUIRED):new Error(jy.IDS_MUST_BE_ITERABLE);try{let s=o0.listDBIs(e);o0.initializeDBIs(e,t,s);let i=new P5,o,c=[],l=[];for(let _=0,h=r.length;_<h;_++)try{o=r[_];let m=e.dbis[t].get(o);if(!m||n&&m[L5]>n){i.skipped.push(o);continue}let S=e.dbis[t].ifVersion(o,C5.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let g=0;g<s.length;g++){let A=s[g];if(!m.hasOwnProperty(A)||A===t)continue;let E=e.dbis[A],T=m[A];if(T!=null)try{let N=zy.getIndexedValues(T);if(N)for(let M=0,H=N.length;M<H;M++)E.remove(N[M],o)}catch{a0.warn(`cannot delete from attribute: ${A}, ${T}:${o}`)}}});c.push(S),l.push(o),i.original_records.push(m)}catch(m){a0.warn(m),i.skipped.push(o)}let u=[],f=await Promise.all(c);for(let _=0,h=f.length;_<h;_++)f[_]===!0?i.deleted.push(l[_]):(i.skipped.push(l[_]),u.push(_));let d=0;for(let _=0;_<u.length;_++){let h=u[_];i.original_records.splice(h-d,1),d++}return i.txn_time=zy.getNextMonotonicTime(),i}catch(s){throw s}}a(M5,"deleteRecords");c0.exports={deleteRecords:M5}});var E_=C((MNe,d0)=>{"use strict";var Ru=ie(),v5=l0(),U5=ht(),{getSchemaPath:x5}=St(),B5=m_(),H5=X();d0.exports=k5;async function k5(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(Ru.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(Ru.isEmptyOrZeroLength(e.hash_values)&&!Ru.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];Ru.isEmpty(l)||e.hash_values.push(l)}}if(Ru.isEmptyOrZeroLength(e.hash_values))return u0([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(Ru.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=x5(e.schema,e.table),i=await U5.openEnvironment(s,e.table),o=await v5.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await B5(e,o)}catch(c){H5.error(`unable to write transaction due to ${c.message}`)}return u0(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(k5,"lmdbDeleteRecords");function u0(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(u0,"createDeleteResponse")});var Jy=C((xNe,f0)=>{"use strict";var F5=(k(),P(q)),UNe=dn();function Qy(e,t){let r=Object.create(null);if(t.length===1&&F5.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(Qy,"parseRow");function q5(e,t,r,n){let s=Qy(r,e);n.push(s)}a(q5,"searchAll");function G5(e,t,r,n){let s=Qy(r,e);n[t]=s}a(G5,"searchAllToMap");function $5(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a($5,"iterateDBI");function Kc(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(Kc,"pushResults");function V5(e,t,r,n,s,i){t.toString().endsWith(e)&&Kc(t,r,n,s,i)}a(V5,"endsWith");function K5(e,t,r,n,s,i){t.toString().includes(e)&&Kc(t,r,n,s,i)}a(K5,"contains");function Y5(e,t,r,n,s,i){t>e&&Kc(t,r,n,s,i)}a(Y5,"greaterThanCompare");function W5(e,t,r,n,s,i){t>=e&&Kc(t,r,n,s,i)}a(W5,"greaterThanEqualCompare");function z5(e,t,r,n,s,i){t<e&&Kc(t,r,n,s,i)}a(z5,"lessThanCompare");function j5(e,t,r,n,s,i){t<=e&&Kc(t,r,n,s,i)}a(j5,"lessThanEqualCompare");f0.exports={parseRow:Qy,searchAll:q5,searchAllToMap:G5,iterateDBI:$5,endsWith:V5,contains:K5,greaterThanCompare:Y5,greaterThanEqualCompare:W5,lessThanCompare:z5,lessThanEqualCompare:j5,pushResults:Kc}});var yu=C((qNe,S0)=>{"use strict";var pa=ht(),HNe=X(),Wn=dn(),oE=Ft(),jt=Un().LMDB_ERRORS_ENUM,kNe=ie(),Q5=(k(),P(q)),aE=Jy(),{parseRow:J5}=aE,FNe=require("lmdb"),{OVERFLOW_MARKER:_0,MAX_SEARCH_KEY_LENGTH:X5}=oE;function h0(e,t,r,n=!1,s=void 0,i=void 0){return Yc(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(h0,"iterateFullIndex");function g_(e,t,r,n,s,i=!1,o=void 0,c=void 0,l=!1,u=!1){return Yc(e,t,r,(f,d,_,h)=>{let E={transaction:f,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 h===r?(E.values=!1,d.getRange(E).map(T=>({value:T}))):d.getRange(E)})}a(g_,"iterateRangeBetween");function Yc(e,t,r,n){let s=e.database||e,i=pa.openDBI(s,r);i[oE.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&pa.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(Yc,"setupTransaction");function m0(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(_0)){if(!s)if(r)s=pa.openDBI(e,r);else{let l=pa.listDBIs(e);for(let u=0,f=l.length;u<f&&(s=pa.openDBI(e,l[u]),!s[oE.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(m0,"getOverflowCheck");function Z5(e,t,r,n=!1,s=void 0,i=void 0){if(Wn.validateEnv(e),t===void 0)throw new Error(jt.HASH_ATTRIBUTE_REQUIRED);return Yc(e,t,t,(o,c,l)=>(cE(r),r=S_(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>J5(u.value,r))))}a(Z5,"searchAll");function e9(e,t,r,n=!1,s=void 0,i=void 0){if(Wn.validateEnv(e),t===void 0)throw new Error(jt.HASH_ATTRIBUTE_REQUIRED);cE(r),r=S_(e.database||e,r);let o=new Map;for(let{key:c,value:l}of h0(e,t,t,n,s,i))o.set(c,aE.parseRow(l,r));return o}a(e9,"searchAllToMap");function t9(e,t,r=!1,n=void 0,s=void 0){if(Wn.validateEnv(e),t===void 0)throw new Error(jt.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=h0(e,void 0,t,r,n,s),c=o.transaction,l=m0(c.database,c,void 0,t);for(let{key:u,value:f}of o){let d=l(u,f);i[d]===void 0&&(i[d]=[]),i[d].push(f)}return i}a(t9,"iterateDBI");function r9(e,t){if(Wn.validateEnv(e),t===void 0)throw new Error(jt.HASH_ATTRIBUTE_REQUIRED);return pa.statDBI(e,t).entryCount}a(r9,"countAll");function n9(e,t,r,n,s=!1,i=void 0,o=void 0){return Ea(e,r,n),Yc(e,t,r,(c,l,u,f)=>(n=Wn.convertKeyValueToWrite(n),f===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(d=>({key:n,value:d}))))}a(n9,"equals");function s9(e,t,r){return Ea(e,t,r),pa.openDBI(e,t).getValuesCount(r)}a(s9,"count");function i9(e,t,r,n,s=!1,i=void 0,o=void 0){return Ea(e,r,n),Yc(e,null,r,(c,l)=>{n=Wn.convertKeyValueToWrite(n);let u=!0;typeof n=="number"&&(u=!1);let f;if(s===!0){let d;for(let _ of l.getKeys({transaction:c,start:n}))if(!_.startsWith(n)){d=_;break}return d!==void 0&&(Number.isInteger(o)?o++:i++),f=l.getRange({transaction:c,start:d,end:void 0,reverse:s,limit:i,offset:o}).map(_=>{let{key:h}=_;if(h!==d){if(h.toString().startsWith(n))return _;if(u===!0)return f.DONE}}),f.filter(_=>_)}else return f=l.getRange({transaction:c,start:n,reverse:s,limit:i,offset:o}).map(d=>{if(d.key.toString().startsWith(n))return d;if(u===!0)return f.DONE}),u?f:f.filter(d=>d)})}a(i9,"startsWith");function o9(e,t,r,n,s=!1,i=void 0,o=void 0){return p0(e,t,r,n,s,i,o,!0)}a(o9,"endsWith");function p0(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return Ea(e,r,n),Yc(e,null,r,(l,u,f,d)=>{let _=m0(f,l,d,r);return o=Number.isInteger(o)?o:0,u.getKeys({transaction:l,end:s?!1:void 0,reverse:s}).flatMap(h=>{let m=h.toString();return m.endsWith(_0)?u.getValues(h,{transaction:l}).map(S=>{let g=_(h,S);if(c?g.endsWith(n):g.includes(n))return{key:g,value:S}}).filter(S=>S):(c?m.endsWith(n):m.includes(n))?u[oE.DBI_DEFINITION_NAME].is_hash_attribute?{key:h,value:h}:u.getValues(h,{transaction:l}).map(S=>({key:h,value:S})):[]}).slice(o,i===void 0?void 0:i+(o||0))})}a(p0,"contains");function a9(e,t,r,n,s=!1,i=void 0,o=void 0){Ea(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),g_(e,t,r,n,l,s,i,o,!0,!1)}a(a9,"greaterThan");function c9(e,t,r,n,s=!1,i=void 0,o=void 0){Ea(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),g_(e,t,r,n,l,s,i,o,!1,!1)}a(c9,"greaterThanEqual");function l9(e,t,r,n,s=!1,i=void 0,o=void 0){Ea(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),g_(e,t,r,l,n,s,i,o,!1,!0)}a(l9,"lessThan");function u9(e,t,r,n,s=!1,i=void 0,o=void 0){Ea(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),g_(e,t,r,l,n,s,i,o,!1,!1)}a(u9,"lessThanEqual");function d9(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(Wn.validateEnv(e),r===void 0)throw new Error(jt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(jt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(jt.END_VALUE_REQUIRED);if(n=Wn.convertKeyValueToWrite(n),s=Wn.convertKeyValueToWrite(s),n>s)throw new Error(jt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return g_(e,t,r,n,s,i,o,c)}a(d9,"between");function f9(e,t,r,n){Wn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(jt.HASH_ATTRIBUTE_REQUIRED);if(cE(r),r=S_(s,r),n===void 0)throw new Error(jt.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=aE.parseRow(c,r)),o}a(f9,"searchByHash");function _9(e,t,r){Wn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(jt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(jt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(_9,"checkHashExists");function h9(e,t,r,n,s=[]){return g0(e,t,r,n,s),E0(e,t,r,n,s).map(i=>i[1])}a(h9,"batchSearchByHash");function m9(e,t,r,n,s=[]){g0(e,t,r,n,s);let i=new Map;for(let[o,c]of E0(e,t,r,n,s))i.set(o,c);return i}a(m9,"batchSearchByHashToMap");function E0(e,t,r,n,s=[]){return Yc(e,t,t,(i,o,c)=>{r=S_(c,r);let l=r.length<3;return n.map(u=>{let f=c.dbis[t].get(u,{transaction:i,lazy:l});if(f)return[u,aE.parseRow(f,r)];s.push(u)}).filter(u=>u)})}a(E0,"batchHashSearch");function g0(e,t,r,n,s){if(Wn.validateEnv(e),t===void 0)throw new Error(jt.HASH_ATTRIBUTE_REQUIRED);if(cE(r),n==null)throw new Error(jt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(jt.IDS_MUST_BE_ITERABLE)}a(g0,"initializeBatchSearchByHash");function cE(e){if(!Array.isArray(e))throw e===void 0?new Error(jt.FETCH_ATTRIBUTES_REQUIRED):new Error(jt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(cE,"validateFetchAttributes");function Ea(e,t,r){if(Wn.validateEnv(e),t===void 0)throw new Error(jt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(jt.SEARCH_VALUE_REQUIRED);if(r?.length>X5)throw new Error(jt.SEARCH_VALUE_TOO_LARGE)}a(Ea,"validateComparisonFunctions");function S_(e,t){return t.length===1&&Q5.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=pa.listDBIs(e)),t}a(S_,"setGetWholeRowAttributes");S0.exports={searchAll:Z5,searchAllToMap:e9,count:s9,countAll:r9,equals:n9,startsWith:i9,endsWith:o9,contains:p0,searchByHash:f9,setGetWholeRowAttributes:S_,batchSearchByHash:h9,batchSearchByHashToMap:m9,checkHashExists:_9,iterateDBI:t9,greaterThan:a9,greaterThanEqual:c9,lessThan:l9,lessThanEqual:u9,between:d9}});var bu=C(($Ne,b0)=>{var T0=require("lodash"),A0=tt(),Ge=require("joi"),p9=ie(),{hdb_schema_table:T_,checkValidTable:R0,hdb_table:y0,hdb_database:lE}=Oi(),{handleHDBError:E9,hdb_errors:g9}=he(),{getDatabases:S9}=(xe(),P(ct)),{HTTP_STATUS_CODES:T9}=g9,A9=Ge.object({database:lE,schema:lE,table:y0,search_attribute:T_,search_value:Ge.any().required(),get_attributes:Ge.array().min(1).items(Ge.alternatives(T_,Ge.object())).optional(),desc:Ge.bool(),limit:Ge.number().integer().min(1),offset:Ge.number().integer().min(0)}),R9=Ge.object({database:lE,schema:lE,table:y0,operator:Ge.string().valid("and","or").default("and").lowercase(),offset:Ge.number().integer().min(0),limit:Ge.number().integer().min(1),get_attributes:Ge.array().min(1).items(Ge.alternatives(T_,Ge.object())).optional(),sort:Ge.object({attribute:Ge.alternatives(T_,Ge.array().min(1)),descending:Ge.bool().optional()}).optional(),conditions:Ge.array().min(1).items(Ge.alternatives(Ge.object({operator:Ge.string().valid("and","or").default("and").lowercase(),conditions:Ge.array()}),Ge.object({search_attribute:Ge.alternatives(T_,Ge.array().min(1)),search_type:Ge.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:Ge.when("search_type",{switch:[{is:"equals",then:Ge.any()},{is:"between",then:Ge.array().items(Ge.alternatives([Ge.string(),Ge.number()])).length(2)}],otherwise:Ge.alternatives(Ge.string(),Ge.number())}).required()}))).required()});b0.exports=function(e,t){let r=null;switch(t){case"value":r=A0.validateBySchema(e,A9);break;case"hashes":let i=function(o){s?s+=". "+o:s=o};var n=i;a(i,"addError");let s;i(R0("database",e.schema)),i(R0("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=A0.validateBySchema(e,R9);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=p9.checkGlobalSchemaTable(e.schema,e.table);if(s)return E9(new Error,s,T9.NOT_FOUND);let o=S9()[e.schema][e.table].attributes,c=e.get_attributes?[...e.get_attributes]:[];t==="value"&&c.push(e.search_attribute);let l=a(f=>{for(let d=0,_=f.conditions.length;d<_;d++){let h=f.conditions[d];h.conditions?l(h):c.push(h.search_attribute)}},"addConditions");t==="conditions"&&l(e);let u=T0.filter(c,f=>f!=="*"&&!f.startsWith?.("$")&&f.attribute!=="*"&&!Array.isArray(f)&&!f.name&&!T0.some(o,d=>d===f||d.attribute===f||d.attribute===f.attribute));if(u&&u.length>0){let f=u.join(", ");return f=f.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${f}'`)}}return r}});var Xy=C((KNe,O0)=>{"use strict";var y9=ht(),b9=bu(),{getSchemaPath:O9}=St();O0.exports=N9;function N9(e){let t=b9(e,"hashes");if(t)throw t;let r=O9(e.schema,e.table);return y9.openEnvironment(r,e.table)}a(N9,"initialize")});var Zy=C((WNe,N0)=>{"use strict";var w9=yu(),I9=Xy();N0.exports=C9;async function C9(e){let t=await I9(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return w9.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(C9,"lmdbGetDataByHash")});var Ou=C((jNe,w0)=>{"use strict";var eb=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};w0.exports=eb});var C0=C((XNe,I0)=>{"use strict";var JNe=Ou(),P9=yu(),D9=Xy();I0.exports=L9;async function L9(e){let t=await D9(e),r=global.hdb_schema[e.schema][e.table];return P9.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(L9,"lmdbSearchByHash")});var zs=C((ewe,P0)=>{"use strict";var tb=class{static{a(this,"SearchObject")}constructor(t,r,n,s,i,o,c,l=!1,u=void 0,f=void 0){this.schema=t,this.table=r,this.search_attribute=n,this.search_value=s,this.hash_attribute=i,this.get_attributes=o,this.end_value=c,this.reverse=l,this.limit=u,this.offset=f}};P0.exports=tb});var uE=C((rwe,x0)=>{"use strict";var Jr=yu(),M9=ht(),v9=ie(),$e=Ft(),Wc=(k(),P(q)),U9=uo(),D0=Un().LMDB_ERRORS_ENUM,{getSchemaPath:x9}=St(),Eo=Wc.SEARCH_WILDCARDS;async function B9(e,t,r){let n;e.schema===Wc.SYSTEM_SCHEMA_NAME?n=U9[e.table]:n=global.hdb_schema[e.schema][e.table];let s=U0(e,n.hash_attribute,r,t);return M0(e,s,n.hash_attribute,r)}a(B9,"prepSearch");async function M0(e,t,r,n){let s=x9(e.schema,e.table),i=await M9.openEnvironment(s,e.table),o=v0(i,e,t,r),c=o.transaction||i;if([$e.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,$e.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,$e.SEARCH_TYPES.SEARCH_ALL,$e.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(H9(e,r)===!1){let f=e.search_attribute;if(f===r)return n?L0(o,()=>!0):o.map(_=>({[r]:_.key}));let d=a(_=>({[r]:_.value,[f]:_.key}),"toObject");return n?L0(o,d):o.map(d)}let u=e.search_attribute===r?o.map(f=>f.key):o.map(f=>f.value);return n===!0?Jr.batchSearchByHashToMap(c,r,e.get_attributes,u):Jr.batchSearchByHash(c,r,e.get_attributes,u)}a(M0,"executeSearch");function v0(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 $e.SEARCH_TYPES.EQUALS:s=Jr.equals(e,i,t.search_attribute,t.search_value,o,c,l);break;case $e.SEARCH_TYPES.CONTAINS:s=Jr.contains(e,i,t.search_attribute,t.search_value,o,c,l);break;case $e.SEARCH_TYPES.ENDS_WITH:case $e.SEARCH_TYPES._ENDS_WITH:s=Jr.endsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case $e.SEARCH_TYPES.STARTS_WITH:case $e.SEARCH_TYPES._STARTS_WITH:s=Jr.startsWith(e,i,t.search_attribute,t.search_value,o,c,l);break;case $e.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return Jr.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case $e.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return Jr.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case $e.SEARCH_TYPES.SEARCH_ALL:return Jr.searchAll(e,n,t.get_attributes,o,c,l);case $e.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return Jr.searchAllToMap(e,n,t.get_attributes,o,c,l);case $e.SEARCH_TYPES.BETWEEN:s=Jr.between(e,i,t.search_attribute,t.search_value,t.end_value,o,c,l);break;case $e.SEARCH_TYPES.GREATER_THAN:case $e.SEARCH_TYPES._GREATER_THAN:s=Jr.greaterThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case $e.SEARCH_TYPES.GREATER_THAN_EQUAL:case $e.SEARCH_TYPES._GREATER_THAN_EQUAL:s=Jr.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;case $e.SEARCH_TYPES.LESS_THAN:case $e.SEARCH_TYPES._LESS_THAN:s=Jr.lessThan(e,i,t.search_attribute,t.search_value,o,c,l);break;case $e.SEARCH_TYPES.LESS_THAN_EQUAL:case $e.SEARCH_TYPES._LESS_THAN_EQUAL:s=Jr.lessThanEqual(e,i,t.search_attribute,t.search_value,o,c,l);break;default:return Object.create(null)}return s}a(v0,"searchByType");function L0(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(L0,"createMapFromIterable");function H9(e,t){if(e.get_attributes.length===1&&e.get_attributes[0]==="*")return!0;let r=[e.search_attribute];e.get_attributes.indexOf(t)>=0&&r.push(t);let n=!1;for(let s=0;s<e.get_attributes.length;s++)if(r.indexOf(e.get_attributes[s])<0){n=!0;break}return n}a(H9,"checkToFetchMore");function U0(e,t,r,n){if(v9.isEmpty(n)){let s=e.search_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.search_attribute===t&&(c=!0),Eo.indexOf(s)>-1)return r===!0?$e.SEARCH_TYPES.SEARCH_ALL_TO_MAP:$e.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(Eo[0])<0&&s.indexOf(Eo[1])<0)return c===!0?r===!0?$e.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:$e.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:$e.SEARCH_TYPES.EQUALS;if(Eo.indexOf(i)>=0&&Eo.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),$e.SEARCH_TYPES.CONTAINS;if(Eo.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),$e.SEARCH_TYPES.ENDS_WITH;if(Eo.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),$e.SEARCH_TYPES.STARTS_WITH;if(s.includes(Eo[0])||s.includes(Eo[1]))return $e.SEARCH_TYPES.EQUALS;throw new Error(D0.UNKNOWN_SEARCH_TYPE)}else switch(n){case Wc.VALUE_SEARCH_COMPARATORS.BETWEEN:return $e.SEARCH_TYPES.BETWEEN;case Wc.VALUE_SEARCH_COMPARATORS.GREATER:return $e.SEARCH_TYPES.GREATER_THAN;case Wc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return $e.SEARCH_TYPES.GREATER_THAN_EQUAL;case Wc.VALUE_SEARCH_COMPARATORS.LESS:return $e.SEARCH_TYPES.LESS_THAN;case Wc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return $e.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(D0.UNKNOWN_SEARCH_TYPE)}}a(U0,"createSearchTypeFromSearchObject");x0.exports={executeSearch:M0,createSearchTypeFromSearchObject:U0,prepSearch:B9,searchByType:v0}});var H0=C((iwe,B0)=>{"use strict";var swe=zs(),k9=bu(),F9=ie(),q9=(k(),P(q)),G9=uE();B0.exports=$9;function $9(e,t){if(!F9.isEmpty(t)&&q9.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=k9(e,"value");if(n)throw n;return G9.prepSearch(e,t,!0)}a($9,"lmdbGetDataByValue")});var A_=C((cwe,k0)=>{"use strict";var awe=zs(),V9=bu(),K9=ie(),Y9=(k(),P(q)),W9=uE();k0.exports=z9;async function z9(e,t){if(!K9.isEmpty(t)&&Y9.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=V9(e,"value");if(n)throw n;return W9.prepSearch(e,t,!1)}a(z9,"lmdbSearchByValue")});var q0=C((dwe,F0)=>{"use strict";var uwe=Ft(),rb=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}},nb=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},sb=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};F0.exports={SearchByConditionsObject:rb,SearchCondition:nb,SortAttribute:sb}});var Y0=C((mwe,K0)=>{"use strict";var _we=q0().SearchByConditionsObject,j9=zs(),Q9=bu(),ib=yu(),dE=Ft(),{Resource:hwe}=(sa(),P(JA)),V0=uE(),J9=Jy(),X9=require("lodash"),{getSchemaPath:Z9}=St(),G0=ht(),{handleHDBError:e7,hdb_errors:t7}=he(),{HTTP_STATUS_CODES:r7}=t7,n7=1e8;K0.exports=s7;async function s7(e){let t=Q9(e,"conditions");if(t)throw e7(t,t.message,r7.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=Z9(e.schema,e.table),n=await G0.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)G0.openDBI(n,u.search_attribute);let i=X9.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let f=u.search_type;f===dE.SEARCH_TYPES.EQUALS?u.estimated_count=ib.count(n,u.search_attribute,u.search_value):f===dE.SEARCH_TYPES.CONTAINS||f===dE.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=n7}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await $0(o,e,i[0],s.hash_attribute),l;if(!e.operator||e.operator.toLowerCase()==="and"){let u=n.dbis[s.hash_attribute],f=i.slice(1).map(V0.filterByType),d=f.length,_=ib.setGetWholeRowAttributes(n,e.get_attributes);l=c.map(h=>u.get(h,{transaction:o,lazy:!0})),d>0&&(l=l.filter(h=>{for(let m=0;m<d;m++)if(!f[m](h))return!1;return!0})),(e.offset||e.limit!==void 0)&&(l=l.slice(e.offset,e.limit!==void 0?(e.offset||0)+e.limit:void 0)),l=l.map(h=>J9.parseRow(h,_))}else{for(let d=1;d<i.length;d++){let _=i[d],h=await $0(o,e,_,s.hash_attribute);c=c.concat(h)}let u=new Set,f=e.offset||0;c=c.filter(d=>u.has(d)?!1:(u.add(d),!0)).slice(f,e.limit&&e.limit+f),l=ib.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(s7,"lmdbSearchByConditions");async function $0(e,t,r,n){let s=new j9(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===dE.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,V0.searchByType(e,s,i,n).map(o=>o.value)}a($0,"executeConditionSearch")});var Nu=C((Ewe,W0)=>{"use strict";var i7=(k(),P(q)).OPERATIONS_ENUM,ob=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=i7.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};W0.exports=ob});var ab=C((Swe,tx)=>{"use strict";var J0=zs(),X0=Nu(),Z0=A_(),ex=E_(),Rn=(k(),P(q)),z0=ie(),j0=ht(),{getTransactionAuditStorePath:o7,getSchemaPath:a7}=St(),Q0=X();tx.exports=c7;async function c7(e){try{if(z0.isEmpty(global.hdb_schema[e.schema])||z0.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await l7(e),await u7(e);let t=a7(e.schema,e.table);try{await j0.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")Q0.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=o7(e.schema,e.table);await j0.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")Q0.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(c7,"lmdbDropTable");async function l7(e){let t=new J0(Rn.SYSTEM_SCHEMA_NAME,Rn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Rn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Rn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await Z0(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 X0(Rn.SYSTEM_SCHEMA_NAME,Rn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await ex(s)}a(l7,"deleteAttributesFromSystem");async function u7(e){let t=new J0(Rn.SYSTEM_SCHEMA_NAME,Rn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Rn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Rn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Rn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Rn.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,n;try{r=Array.from(await Z0(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 X0(Rn.SYSTEM_SCHEMA_NAME,Rn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await ex(s)}catch(i){throw i}}a(u7,"dropTableFromSystem")});var nx=C((Awe,rx)=>{"use strict";var d7=require("fs-extra"),f7=zs(),_7=Ou(),h7=Nu(),m7=ab(),p7=E_(),E7=Zy(),g7=A_(),go=(k(),P(q)),{getSchemaPath:S7}=St(),{handleHDBError:T7,hdb_errors:A7}=he(),{HDB_ERROR_MSGS:R7,HTTP_STATUS_CODES:y7}=A7;rx.exports=b7;async function b7(e){let t;try{t=await O7(e.schema);let r=new f7(go.SYSTEM_SCHEMA_NAME,go.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,go.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[go.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await g7(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await m7(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new h7(go.SYSTEM_SCHEMA_NAME,go.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await p7(s);let i=S7(t);await d7.remove(i)}catch(r){throw r}}a(b7,"lmdbDropSchema");async function O7(e){let t=new _7(go.SYSTEM_SCHEMA_NAME,go.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[go.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await E7(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw T7(new Error,R7.SCHEMA_NOT_FOUND(e),y7.NOT_FOUND,void 0,void 0,!0);return n}a(O7,"validateDropSchema")});var wu=C((ywe,sx)=>{"use strict";var cb=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};sx.exports=cb});var ub=C((Nwe,ix)=>{"use strict";var N7=require("fs-extra"),fE=ht(),{getTransactionAuditStorePath:w7}=St(),lb=Ft(),Owe=wu();ix.exports=I7;async function I7(e){let t;try{let r=w7(e.schema,e.table);await N7.mkdirp(r),t=await fE.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{fE.createDBI(t,lb.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),fE.createDBI(t,lb.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),fE.createDBI(t,lb.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(I7,"createTransactionsAuditEnvironment")});var cx=C((Cwe,ax)=>{"use strict";var db=(k(),P(q)),ox=ht(),C7=Uc(),{getSystemSchemaPath:P7,getSchemaPath:D7}=St(),Iwe=uo(),L7=kp(),fb=Hp(),M7=X(),v7=ub();ax.exports=U7;async function U7(e,t){let r=D7(t.schema,t.table),n=new fb(t.schema,t.table,db.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new fb(t.schema,t.table,db.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new fb(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await ox.createEnvironment(r,t.table),e!==void 0){let o=await ox.openEnvironment(P7(),db.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await C7.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_table_attributes,[e]),n.skip_table_check=!0,s.skip_table_check=!0,i.skip_table_check=!0,await _b(n),await _b(s),await _b(i)}await v7(t)}catch(o){throw o}}a(U7,"lmdbCreateTable");async function _b(e){try{await L7(e)}catch(t){M7.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(_b,"createAttribute")});var ux=C((Dwe,lx)=>{"use strict";var x7=Xf(),B7=Of(),H7=sE(),R_=(k(),P(q)),k7=Uc().updateRecords,F7=ht(),{getSchemaPath:q7}=St(),G7=m_(),$7=X();lx.exports=V7;async function V7(e){try{let{schema_table:t,attributes:r}=x7(e);B7(e,r,t.hash_attribute),e.schema!==R_.SYSTEM_SCHEMA_NAME&&(r.includes(R_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(R_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(R_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(R_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await H7(e.hdb_auth_header,t,r),s=q7(e.schema,e.table),i=await F7.openEnvironment(s,e.table),o=await k7(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await G7(e,o)}catch(c){$7.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:n,txn_time:o.txn_time}}catch(t){throw t}}a(V7,"lmdbUpdateRecords")});var fx=C((Mwe,dx)=>{"use strict";var K7=(k(),P(q)).OPERATIONS_ENUM,hb=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=K7.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};dx.exports=hb});var hx=C((xwe,_x)=>{"use strict";var Uwe=fx(),Y7=Xf(),W7=Of(),z7=sE(),y_=(k(),P(q)),j7=Uc().upsertRecords,Q7=ht(),{getSchemaPath:J7}=St(),X7=m_(),Z7=X(),{handleHDBError:eee,hdb_errors:tee}=he();_x.exports=ree;async function ree(e){let t;try{t=Y7(e)}catch(l){throw eee(l,l.message,tee.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:n}=t;W7(e,n,r.hash_attribute),e.schema!==y_.SYSTEM_SCHEMA_NAME&&(n.includes(y_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(y_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(y_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(y_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await z7(e.hdb_auth_header,r,n),i=J7(e.schema,e.table),o=await Q7.openEnvironment(i,e.table),c=await j7(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await X7(e,c)}catch(l){Z7.error(`unable to write transaction due to ${l.message}`)}return{written_hashes:c.written_hashes,schema_table:r,new_attributes:s,txn_time:c.txn_time}}a(ree,"lmdbUpsertRecords")});var px=C((Hwe,mx)=>{"use strict";var mb=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};mx.exports=mb});var gx=C((Fwe,Ex)=>{"use strict";var pb=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}};Ex.exports=pb});var Ax=C(($we,Tx)=>{"use strict";var Eb=ht(),{getTransactionAuditStorePath:nee}=St(),Gwe=px(),b_=Ft(),see=ie(),Sx=gx(),iee=require("util").promisify,oee=iee(setTimeout),aee=1e4,cee=100;Tx.exports=lee;async function lee(e){let t=nee(e.schema,e.table),r=await Eb.openEnvironment(t,e.table,!0),n=Eb.listDBIs(r);Eb.initializeDBIs(r,b_.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new Sx;do s=await uee(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 oee(cee);while(s.transactions_deleted>0);return i}a(lee,"deleteAuditLogsBefore");async function uee(e,t){let r=new Sx;try{let n=e.dbis[b_.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[b_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];see.isEmpty(c)||(s=e.dbis[b_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[b_.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>aee)break}return await s,r}catch(n){throw n}}a(uee,"deleteTransactions")});var yx=C((Kwe,Rx)=>{"use strict";var gb=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};Rx.exports=gb});var Ox=C((zwe,bx)=>{"use strict";var dee=zs(),fee=Nu(),Wwe=yx(),Li=(k(),P(q)),_ee=ie(),Sb=ht(),hee=uo(),mee=A_(),pee=E_(),{getSchemaPath:Eee}=St();bx.exports=gee;async function gee(e,t=!0){let r;e.schema===Li.SYSTEM_SCHEMA_NAME?r=hee[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await Tee(e),s=Eee(e.schema,e.table),i=await Sb.openEnvironment(s,e.table);return t===!0&&await See(e,i,r.hash_attribute),Sb.dropDBI(i,e.attribute),n}a(gee,"lmdbDropAttribute");async function See(e,t,r){let n=Sb.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 f in c)f!==i&&(u[f]=c[f]);s=t.dbis[r].put(o,u,l)}await s}a(See,"removeAttributeFromAllObjects");async function Tee(e){let t=new dee(Li.SYSTEM_SCHEMA_NAME,Li.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Li.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Li.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Li.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await mee(t)).filter(o=>o[Li.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(_ee.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Li.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new fee(Li.SYSTEM_SCHEMA_NAME,Li.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return pee(i)}a(Tee,"dropAttributeFromSystem")});var Dx=C((Jwe,Px)=>{"use strict";var Tb=ht(),Iu=Ft(),Qwe=dn(),Ab=(k(),P(q)),Nx=ie(),{getTransactionAuditStorePath:Aee}=St(),Ree=yu(),_E=Tu(),yee=X();Px.exports=bee;async function bee(e){let t=Aee(e.schema,e.table),r=await Tb.openEnvironment(t,e.table,!0),n=Tb.listDBIs(r);Tb.initializeDBIs(r,Iu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case Ab.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return wx(r,e.search_values);case Ab.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,Nee(r,e.search_values,s);case Ab.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return Oee(r,e.search_values);default:return wx(r)}}a(bee,"readAuditLog");function wx(e,t=[0,Date.now()]){Nx.isEmpty(t[0])&&(t[0]=0),Nx.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[Iu.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 _E,s))}a(wx,"searchTransactionsByTimestamp");function Oee(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[Iu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,Cx(e,i))}return Object.fromEntries(r)}a(Oee,"searchTransactionsByUsername");function Nee(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],f=Ree.equals(e,Iu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Iu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let{value:d}of f){let _=Number(d);n.has(_)?n.get(_).push(u.toString()):n.set(_,[u.toString()])}}let s=Array.from(n.keys()),i=Cx(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,f=n.get(u);Ix(l,"records",r,f,o),Ix(l,"original_records",r,f,o)}return Object.fromEntries(o)}a(Nee,"searchTransactionsByHashValues");function Ix(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),f=u[u.length-1];if(f.timestamp===i)f[t]=[c];else{let d=new _E(e.operation,e.user_name,i,void 0);d[t]=[c],u.push(d)}}else{let u=new _E(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(Ix,"loopRecords");function Cx(e,t){let r=[];try{let n=e.dbis[Iu.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 _E,i);r.push(o)}}catch(i){yee.warn(i)}return r}catch(n){throw n}}a(Cx,"batchSearchTransactions")});var Mx=C((tIe,Lx)=>{"use strict";var{getSchemaPath:Zwe}=St(),eIe=ht(),{database:wee}=(xe(),P(ct));Lx.exports={writeTransaction:Iee};async function Iee(e,t,r){return wee({database:e,table:t}).transaction(r)}a(Iee,"writeTransaction")});var Bx=C((nIe,xx)=>{"use strict";var{getSchemaPath:vx}=St(),Ux=ht();xx.exports={flush:Cee,resetReadTxn:Pee};async function Cee(e,t){return(await Ux.openEnvironment(vx(e,t),t.toString())).flushed}a(Cee,"flush");async function Pee(e,t){try{(await Ux.openEnvironment(vx(e,t),t.toString())).resetReadTxn()}catch{}}a(Pee,"resetReadTxn")});var qx=C((iIe,Fx)=>{"use strict";var{Readable:Dee}=require("stream"),{getDatabases:Lee}=(xe(),P(ct)),{readSync:Mee,openSync:vee,createReadStream:Hx}=require("fs"),{open:Uee}=require("lmdb"),kx=Wf(),xee=zf(),{AUDIT_STORE_OPTIONS:Bee}=(Ai(),P(Gx)),{INTERNAL_DBIS_NAME:Hee,AUDIT_STORE_NAME:kee}=Ft();Fx.exports=qee;var Rb=32768,Fee=100;async function qee(e){let t=e.database||e.schema||"data",r=Lee()[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 f=u.dbisDB,d=Uee({noSync:!0,maxDbs:xee.MAX_DBS}),_,h=d.openDB(Hee,new kx(!1)),m=f.useReadTransaction(),S=0,g=a(async function(E,T){T.encoding="binary",T.encoder=void 0;let N=d.openDB(E,T),M=f.openDB(E,T);for(let{key:H,version:Z,value:W}of M.getRange({start:null,transaction:m,versions:M.useVersions}))_=N.put(H,W,Z),S++%Fee===0&&(await new Promise($=>setTimeout($,20)),m.openTimer&&(m.openTimer=0))},"copyDatabase");for(let{key:E,value:T}of f.getRange({transaction:m,start:!1}))if(s.some(N=>E.startsWith?.(N+"/"))){h.put(E,T);let[,N]=E.split("/"),M=!N,H=new kx(!M,M);await g(E,H)}e.include_audit&&await g(kee,{...Bee}),await _;let A=Hx(d.path);return A.headers=l(),A.on("close",()=>{m.done(),d.close()}),A}let o=r[Object.keys(r)[0]].primaryStore,c=vee(o.path);return o.transaction(()=>{let u=Buffer.alloc(Rb);Mee(c,u,0,Rb),o.resetReadTxn();let f=o.useReadTransaction();f.renew();let d=Hx(null,{fd:c,start:Rb}),_=new Dee.from(async function*(){yield u;for await(let h of d)f.openTimer&&(f.openTimer=0),yield h;f.done()}());return _.headers=l(),_});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(qee,"getBackup")});var Kx=C((aIe,Vx)=>{"use strict";var Gee=X(),{handleHDBError:$ee}=he(),Vee=rM(),Kee=kp(),Yee=Yy(),Wee=n0(),zee=E_(),jee=Zy(),Qee=C0(),Jee=H0(),Xee=A_(),Zee=Y0(),ete=nx(),tte=cx(),rte=ux(),nte=hx(),ste=Ax(),ite=ab(),ote=Ox(),ate=Dx(),cte=Mx(),$x=Bx(),lte=qx(),yb=class extends Vee{static{a(this,"LMDBBridge")}async searchByConditions(t){return Zee(t)}async getDataByHash(t){return await jee(t)}async searchByHash(t){return await Qee(t)}async getDataByValue(t,r){return await Jee(t,r)}async searchByValue(t){return await Xee(t)}async createSchema(t){return await Wee(t)}async dropSchema(t){return await ete(t)}async createTable(t,r){return await tte(t,r)}async dropTable(t){return await ite(t)}async createAttribute(t){return await Kee(t)}async createRecords(t){return await Yee(t)}async updateRecords(t){return await rte(t)}async upsertRecords(t){try{return await nte(t)}catch(r){throw $ee(r,null,null,Gee.ERR,r)}}async deleteRecords(t){return await zee(t)}async dropAttribute(t){return await ote(t)}async deleteAuditLogsBefore(t){return await ste(t)}async readAuditLog(t){return await ate(t)}writeTransaction(t,r,n){return cte.writeTransaction(t,r,n)}flush(t,r){return $x.flush(t,r)}resetReadTxn(t,r){return $x.resetReadTxn(t,r)}getBackup(t){return lte(t)}};Vx.exports=yb});var Ob={};Ue(Ob,{add:()=>hE,applyReverse:()=>Yx,getRecordAtTime:()=>bb,rebuildUpdateBefore:()=>mE});function hE(e,t,r){let n=e[t];typeof n=="bigint"?e[t]=n+BigInt(r.value):isNaN(e[t])?e[t]=r.value:e[t]=n+r.value}function mE(e,t,r){let n=null;for(let s in e)if(s in t){let i=t[s];if(i?.__op__){let o=e[s];if(o?.__op__)if(o.__op__===i.__op__)n||(n={}),n[s]=o;else throw new Error("Can not merge updates with different operations");else n||(n={}),n[s]=o,hE(n,s,i)}else r&&(n||(n={}),n[s]=i)}else n||(n={}),n[s]=e[s];return n}function Yx(e,t){for(let r in t){let n=t[r];if(n?.__op__){let s=ute[n.__op__]?.reverse;if(s)s(e,r,{value:n.value});else throw new Error(`Unsupported operation ${n.__op__}`)}else e[r]=Wx}}function bb(e,t,r){let n=r.rootStore.auditStore,s={...e.value},i=e.localTime;for(;i>t;){let l=n.get(i),u=Tt(l);switch(u.type){case"put":s=u.getValue(r);break;case"patch":Yx(s,u.getValue(r));break;case"delete":s=null}i=u.previousLocalTime}let o={},c=0;for(let l in s)s[l]===Wx&&(o[l]=!0,c++);for(;c>0&&i>0;){let l=n.get(i),u=Tt(l),f;switch(u.type){case"put":f=u.getValue(r);break;case"patch":f=u.getValue(r);break}for(let d in f)o[d]&&(s[d]=f[d],o[d]=!1,c--);i=u.previousLocalTime}if(c>0)for(let l in o)s[l]=null;return s}var ute,Wx,pE=Re(()=>{Ai();a(hE,"add");hE.reverse=function(e,t,r){let n=e[t];typeof n=="bigint"?e[t]=n-BigInt(r.value):isNaN(e[t])||(e[t]=n-r.value)};ute={add:hE};a(mE,"rebuildUpdateBefore");a(Yx,"applyReverse");Wx={};a(bb,"getRecordAtTime")});function yn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function TE(e,t){let r=e.prototype,n={},s=t.attributes||t.properties||[];for(let c of s){let l=c.name,u,f;if(c.resolve)f={get(){return c.resolve(this,this.getContext?.())},set(d){return c.set(this,d)},configurable:!0};else{switch(c.type){case"String":u=a(function(d){if(!(typeof d=="string"||d==null&&c.nullable!==!1))throw new zn.ClientError(`${l} must be a string, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"ID":u=a(function(d){if(!(typeof d=="string"||d?.length>0&&d.every?.(_=>typeof _=="string")||d==null&&c.nullable!==!1))throw new zn.ClientError(`${l} must be a string, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"Float":case"Number":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="number"||d==null&&c.nullable!==!1))throw new zn.ClientError(`${l} must be a number, attempt to assign ${_}`);yn(this)[l]=d},"set");break;case"Int":u=a(function(d){let _=d?.__op__?d.value:d;if(!(_>>0===_||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs((_>>0)-_)<=1)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new zn.ClientError(`${l} must be an integer between -2147483648 and 2147483647, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"Long":u=a(function(d){let _=d?.__op__?d.value:d;if(!(Math.round(_)===d&&Math.abs(_)<=9007199254740992||d==null&&c.nullable!==!1))if(typeof _=="number"&&Math.abs(_)<=9007199254740992)_=Math.round(_),d?.__op__?d.value=_:d=_;else throw new zn.ClientError(`${l} must be an integer between -9007199254740992 and 9007199254740992, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"BigInt":u=a(function(d){let _=d?.__op__?d.value:d;if(!(typeof _=="bigint"||d==null&&c.nullable!==!1))if(typeof _=="string"||typeof _=="number")_=BigInt(_),d?.__op__?d.value=_:d=_;else throw new zn.ClientError(`${l} must be a number, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"Boolean":u=a(function(d){if(!(typeof d=="boolean"||d==null&&c.nullable!==!1))throw new zn.ClientError(`${l} must be a boolean, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"Date":u=a(function(d){if(!(d instanceof Date||d==null&&c.nullable!==!1))if(typeof d=="string"||typeof d=="number")d=new Date(d);else throw new zn.ClientError(`${l} must be a Date, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"Bytes":u=a(function(d){if(!(d instanceof Uint8Array||d==null&&c.nullable!==!1))throw new zn.ClientError(`${l} must be a Buffer or Uint8Array, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"Blob":u=a(function(d){if(!(d instanceof Ti||d==null&&c.nullable!==!1))throw new zn.ClientError(`${l} must be a Blob, attempt to assign ${d}`);yn(this)[l]=d},"set");break;case"Any":case void 0:u=a(function(d){yn(this)[l]=d},"set");break;default:u=a(function(d){if(!(typeof d=="object"||d==null&&c.nullable!==!1))throw new zn.ClientError(`${l} must be an object, attempt to assign ${d}`);yn(this)[l]=d},"set")}f={get(){let d=this.getChanges?.();if(d&&l in d){let h=d[l];if(h?.__op__){let m=this.getRecord()?.[l];return h.update(m)}return h}let _=this.getRecord()?.[l];if(_&&typeof _=="object"){let h=Nb(_,c);if(h)return d||this._setChanges(d=Object.create(null)),d[l]=h}return _},set:u,enumerable:!0,configurable:!0}}f.get.isAttribute=!0,n[l]=f,(!(l in r)||Object.getOwnPropertyDescriptor(r,l)?.get?.isAttribute)&&Object.defineProperty(r,l,f)}i("getProperty",function(c){let l=n[c];if(l)return l.get.call(this);let u=this.getChanges();return u?.[c]!==void 0?u[c]:this.getRecord()?.[c]}),i("set",function(c,l){let u=n[c];if(u)return u.set.call(this,l);if(t.sealed)throw new zn.ClientError("Can not add a property to a sealed table schema");yn(this)[c]=l}),i("deleteProperty",function(c){yn(this)[c]=void 0}),i("toJSON",function(){let c=this.getChanges?.(),l;for(let f in c){l||(l={...this.getRecord()});let d=c[f];if(d?.__op__){let _=l[f];d=d.update(_)}l[f]=d}return Object.keys(this).length>0&&(l||(l={...this.getRecord()}),Object.assign(l,this)),l||this.getRecord()}),r.get||i("get",r.getProperty),r.delete||i("delete",r.deleteProperty),r.then||i("then",null);function i(c,l){Object.defineProperty(r,c,{value:l,configurable:!0})}a(i,"setMethod");let o=r;do{let c=Object.getPrototypeOf(o);if(c===Object.prototype){Object.setPrototypeOf(o,jx);break}o=c}while(o&&o!==jx)}function Nb(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends O_{static{a(this,"TrackedObject")}},TE(r,t)),new r(e)):new O_(e);case Array:let n=new gE(e.length,e);for(let s=0,i=e.length;s<i;s++){let o=e[s];o&&typeof o=="object"&&(o=Nb(o,t?.elements)),n[s]=o}return n;default:return e}}function AE(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=AE(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 Cu(e,t=e.getChanges?.()){let r;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=Cu(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?.()});let s=t[n];if(s&&typeof s=="object")if(s.__op__){let i=Ob[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=Cu(s);r[n]=s}if(!Array.isArray(e))for(let n in e)dte.call(e,n)&&(r||(r={...e.getRecord?.()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?.()??e}function EE(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[zc]||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(EE(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(EE(s))return!0}else return!0}else return!0}}return!1}var zn,zx,jx,O_,dte,zc,gE,SE,wb=Re(()=>{zn=v(he());pE();En();a(yn,"getChanges");a(TE,"assignTrackedAccessors");zx=Object.prototype,jx=new Proxy({},{get(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(zx[t])return zx[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=Nb(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}});a(Nb,"trackObject");O_=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}};TE(O_,{});a(AE,"collapseData");dte=Object.prototype.hasOwnProperty;a(Cu,"updateAndFreeze");a(EE,"hasChanges");zc=Symbol.for("has-array-changes"),gE=class extends Array{static{a(this,"TrackedArray")}#e;[zc];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[zc]=!0,super.splice(...t)}push(...t){return this[zc]=!0,super.push(...t)}pop(){return this[zc]=!0,super.pop()}unshift(...t){return this[zc]=!0,super.unshift(...t)}shift(){return this[zc]=!0,super.shift()}};gE.prototype.constructor=Array;SE=class{constructor(t){this.value=t}static{a(this,"Addition")}__op__="add";update(t){return(+t||0)+this.value}}});var nB={};Ue(nB,{ResourceBridge:()=>Pb});function Db({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 Jx(e,t){let r=Mi(e),n=Db(e,r);if(!r)throw new js.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;Ct(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++],f;try{f=await r.get({id:u,lazy:s,select:n},i),f=f&&AE(f)}catch(d){f={message:d.toString()}}return t?{value:{key:u,value:f}}:{value:f}}else return o(),{done:!0}},return(u){return o(),{value:u,done:!0}},throw(u){return o(),{done:!0}}}}}}function Mi(e){let t=e.database||e.schema||_te,r=Xe()[t];if(!r)throw(0,js.handleHDBError)(new Error,fte.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function Xx(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*Zx(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:f}=o;if(s?.timestamp===u)s.hash_values.push(l),s.records.push(f);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:[f]}}}s&&(yield s)}var eB,RE,js,tB,Ib,Cb,rB,fte,_te,hte,mte,Qx,Pb,sB=Re(()=>{"use strict";eB=v(Kx()),RE=v(bu()),js=v(he());xe();tB=v(Xf());k();Ib=v(po()),Cb=v(Ws()),rB=v(ie());gc();wb();({HDB_ERROR_MSGS:fte}=js.hdb_errors),_te="data",hte=1e4,mte=10,Pb=class extends eB.default{static{a(this,"ResourceBridge")}constructor(t){super(t),Qx=this}async searchByConditions(t){t.select!==void 0&&(t.get_attributes=t.select);for(let o of t.conditions||[])o?.attribute!==void 0&&(o.search_attribute=o.attribute),o?.comparator!==void 0&&(o.search_type=o.comparator),o?.value!==void 0&&(o.search_value=o.value);let r=(0,RE.default)(t,"conditions");if(r)throw(0,js.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=Mi(t);if(!n)throw new js.ClientError(`Table ${t.table} not found`);let s=t.conditions.map(i);function i(o){return o.conditions?(o.conditions=o.conditions.map(i),o):{attribute:o.search_attribute??o.attribute,comparator:o.search_type??o.comparator,value:o.search_value!==void 0?o.search_value:o.value}}return a(i,"mapCondition"),n.search({conditions:s,operator:t.operator?t.operator.toLowerCase():void 0,limit:t.limit,offset:t.offset,reverse:t.reverse,select:Db(t,n),sort:t.sort,allowFullScan:!0},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async createTable(t,r){let n=r.attributes,s=!!n,i=r.primary_key||r.hash_attribute;if(n)for(let 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 js.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}]}_t({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await Mi(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=Mi(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:f,version:d}=r.primaryStore.getEntry(o);return i(o,f,d)}})),"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){Mi(t).dropTable()}createSchema(t){return Pu({database:t.schema,table:null}),Ib.signalSchemaChange(new Cb.SchemaEventMsg(process.pid,Wt.CREATE_SCHEMA,t.schema))}async dropSchema(t){await Lb(t.schema),Ib.signalSchemaChange(new Cb.SchemaEventMsg(process.pid,Wt.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,Qx.upsertRecords(t)}async upsertRecords(t){let{schema_table:r,attributes:n}=(0,tB.default)(t),s,i=Xe()[t.schema][t.table],o={user:t.hdb_user,expiresAt:t.expiresAt,originatingOperation:t.operation};return t.replicateTo&&(o.replicateTo=t.replicateTo),t.replicatedConfirmation&&(o.replicatedConfirmation=t.replicatedConfirmation),Ct(o,async c=>{if(!i.schemaDefined){s=[];for(let f of n)i.attributes.find(_=>_.name==f)||s.push(f);s.length>0&&await i.addAttributes(s.map(f=>({name:f,indexed:!0})))}let l=[],u=[];for(let f of t.records){let d=f[i.primaryKey],_=d!=null&&await i.get(d,o);if(t.requires_existing&&!_||t.requires_no_existing&&_){u.push(f[i.primaryKey]);continue}_&&(_=AE(_));for(let h in f)if(Object.prototype.hasOwnProperty.call(f,h)){let m=f[h];if(typeof m=="function")try{let S=m([[_]]);Array.isArray(S)&&(m=S[0].func_val,f[h]=m)}catch(S){throw S.message+="Trying to set key "+h+" on object"+JSON.stringify(f),S}}if(_)for(let h in _)Object.prototype.hasOwnProperty.call(f,h)||(f[h]=_[h]);await(d==null?i.create(f,o):i.put(f,o)),l.push(f[i.primaryKey])}return{txn_time:c.timestamp,written_hashes:l,new_attributes:s,skipped_hashes:u}})}async deleteRecords(t){let r=Xe()[t.schema][t.table],n={user:t.hdb_user};return t.replicateTo&&(n.replicateTo=t.replicateTo),t.replicatedConfirmation&&(n.replicatedConfirmation=t.replicatedConfirmation),Ct(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 Xx(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=Xe()[t.schema][t.table];if(!r.createdTimeProperty)throw new js.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:$m.LESS}]}),s=!1,i=[],o=[],c=0,l=[],u=a(async()=>{let f=await this.deleteRecords({schema:t.schema,table:t.table,hash_values:l});i.push(...f.deleted_hashes),o.push(...f.skipped_hashes),await(0,rB.async_set_timeout)(mte),l=[],s=!0},"chunkDelete");for await(let f of n)l.push(f[r.primaryKey]),c++,c%hte===0&&await u();return l.length>0&&await u(),s?Xx(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,RE.default)(t,"hashes");if(r)throw r;return Jx(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of Jx(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&PA[r]===void 0)throw new Error(`Value search comparator - ${r} - is not valid`);t.select!==void 0&&(t.get_attributes=t.select),t.attribute!==void 0&&(t.search_attribute=condition.attribute),t.value!==void 0&&(t.search_value=condition.value);let n=(0,RE.default)(t,"value");if(n)throw n;let s=Mi(t);if(!s)throw new js.ClientError(`Table ${t.table} not found`);let i=t.search_value;i.includes?.("*")&&(i.startsWith("*")?i.endsWith("*")?i!=="*"&&(r="contains",i=i.slice(1,-1)):(r="ends_with",i=i.slice(1)):i.endsWith("*")&&(r="starts_with",i=i.slice(0,-1))),r===$m.BETWEEN&&(i=[i,t.end_value]);let o=i==="*"?[]:[{attribute:t.search_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:Db(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=Mi(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){Mi({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return Mi(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=Mi(t),n={};switch(t.search_type){case Vm.HASH_VALUE:for(let i of t.search_values)n[i]=(await r.getHistoryOfRecord(i)).map(o=>{let c=o.operation??o.type;return c==="put"&&(c="upsert"),{operation:c,timestamp:o.version,user_name:o.user,hash_values:[i],records:[o.value]}});return n;case Vm.USERNAME:let s=t.search_values;for await(let i of Zx(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n;default:return Zx(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(Db,"getSelect");a(Jx,"getRecords");a(Mi,"getTable");a(Xx,"createDeleteResponse");a(Zx,"groupRecordsInHistory")});var Gn=C((TIe,iB)=>{"use strict";var{ResourceBridge:pte}=(sB(),P(nB)),Ete=oe();Ete.initSync();var yE;function gte(){return yE||(yE=new pte,yE)}a(gte,"getBridge");iB.exports=gte()});var Qr=C((RIe,lB)=>{"use strict";var OE=AR(),xr=ie(),Ste=require("util"),NE=Gn(),Tte=ms(),oB=X(),{handleHDBError:jc,hdb_errors:Ate}=he(),{HTTP_STATUS_CODES:Qc}=Ate,Rte=Ste.promisify(Tte.getTableSchema),yte="updated",aB="inserted",cB="upserted";lB.exports={insert:Ote,update:Nte,upsert:wte,validation:bte,flush:Ite};async function bte(e){if(xr.isEmpty(e))throw new Error("invalid update parameters defined.");if(xr.isEmptyOrZeroLength(e.schema))throw new Error("invalid database specified.");if(xr.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await Rte(e.schema,e.table),r=OE(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&&xr.isEmptyOrZeroLength(c[n]))throw oB.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(!xr.isEmptyOrZeroLength(c[n])&&(c[n]==="null"||c[n]==="undefined"))throw oB.error(`a valid hash value must be provided with ${e.operation} record:`,c),new Error(`"${c[n]}" is not a valid hash attribute value`);!xr.isEmpty(c[n])&&c[n]!==""&&s.has(xr.autoCast(c[n]))&&(c.skip=!0),s.add(xr.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(bte,"validation");async function Ote(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=OE(e);if(t)throw jc(new Error,t.message,Qc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw jc(new Error,r,Qc.BAD_REQUEST);let n=await NE.createRecords(e);return bE(aB,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(Ote,"insertData");async function Nte(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=OE(e);if(t)throw jc(new Error,t.message,Qc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw jc(new Error,r,Qc.BAD_REQUEST);let n=await NE.updateRecords(e);return xr.isEmpty(n.existing_rows)?bE(yte,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):bE(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(Nte,"updateData");async function wte(e){if(e.operation!=="upsert")throw jc(new Error,"invalid operation, must be upsert",Qc.INTERNAL_SERVER_ERROR);let t=OE(e);if(t)throw jc(new Error,t.message,Qc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw jc(new Error,r,Qc.BAD_REQUEST);let n=await NE.upsertRecords(e);return bE(cB,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(wte,"upsertData");function bE(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===aB?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===cB?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(bE,"returnObject");function Ite(e){return xr.transformReq(e),NE.flush(e.schema,e.table)}a(Ite,"flush")});var mB=C((bIe,hB)=>{var Du=require("validate.js"),dB=tt(),Lu=(k(),P(q)),{handleHDBError:Cte,hdb_errors:Pte}=he(),{HDB_ERROR_MSGS:Qt,HTTP_STATUS_CODES:Dte}=Pte,Mb=a(()=>({role:{presence:!0,format:"[\\w\\-\\_]+"},id:{presence:!0,format:"[\\w\\-\\_]+"},permission:{presence:!0}}),"constraintsTemplate"),Lte={STRUCTURE_USER:"structure_user"},uB=Object.values(Lu.ROLE_TYPES_ENUM),Mte="attribute_permissions",vte="attribute_name",{PERMS_CRUD_ENUM:Mu}=Lu,Ute=[Mte,...Object.values(Mu)],fB=[Mu.READ,Mu.INSERT,Mu.UPDATE],xte=[vte,...fB];function Bte(e){let t=Mb();return t.role.presence=!0,t.id.presence=!1,t.permission.presence=!0,_B(e,t)}a(Bte,"addRoleValidation");function Hte(e){let t=Mb();return t.role.presence=!1,t.id.presence=!0,t.permission.presence=!0,_B(e,t)}a(Hte,"alterRoleValidation");function kte(e){let t=Mb();return t.role.presence=!1,t.id.presence=!0,t.permission.presence=!1,dB.validateObject(e,t)}a(kte,"dropRoleValidation");var Fte=["operation","role","id","permission","hdb_user","access"];function _B(e,t){let r={main_permissions:[],schema_permissions:{}},n=Object.keys(e),s=[];for(let o=0,c=n.length;o<c;o++)Fte.includes(n[o])||s.push(n[o]);s.length>0&&sr(Qt.INVALID_ROLE_JSON_KEYS(s),r);let i=dB.validateObject(e,t);if(i&&i.message.split(",").forEach(o=>{sr(o,r)}),e.permission){let o=qte(e);o&&sr(o,r),uB.forEach(c=>{e.permission[c]&&!Du.isBoolean(e.permission[c])&&sr(Qt.SU_CU_ROLE_BOOLEAN_ERROR(c),r)})}for(let o in e.permission)if(uB.indexOf(o)<0){if(o===Lte.STRUCTURE_USER){let l=e.permission[o];if(typeof l=="boolean")continue;if(Array.isArray(l)){for(let u=0,f=l.length;u<f;u++){let d=l[u];global.hdb_schema[d]||sr(Qt.SCHEMA_NOT_FOUND(d),r)}continue}sr(Qt.STRUCTURE_USER_ROLE_TYPE_ERROR(o),r);continue}let c=e.permission[o];if(!o||!global.hdb_schema[o]){sr(Qt.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(Qt.TABLE_NOT_FOUND(o,l),r);continue}if(Object.keys(u).forEach(f=>{Ute.includes(f)||sr(Qt.INVALID_PERM_KEY(f),r,o,l)}),Object.values(Mu).forEach(f=>{Du.isDefined(u[f])?Du.isBoolean(u[f])||sr(Qt.TABLE_PERM_NOT_BOOLEAN(f),r,o,l):sr(Qt.TABLE_PERM_MISSING(f),r,o,l)}),u.attribute_permissions===void 0){sr(Qt.ATTR_PERMS_ARRAY_MISSING,r,o,l);continue}else if(!(Array.isArray(u.attribute_permissions)||u.attribute_permissions===null)){sr(Qt.ATTR_PERMS_NOT_ARRAY,r,o,l);continue}if(u.attribute_permissions){let f=global.hdb_schema[o][l].attributes.map(({attribute:_})=>_),d={read:!1,insert:!1,update:!1};for(let _ in u.attribute_permissions){let h=u.attribute_permissions[_];if(Object.keys(h).forEach(S=>{!xte.includes(S)&&S!==Mu.DELETE&&sr(Qt.INVALID_ATTR_PERM_KEY(S),r,o,l)}),!Du.isDefined(h.attribute_name)){sr(Qt.ATTR_PERM_MISSING_NAME,r,o,l);continue}let m=h.attribute_name;if(!f.includes(m)){sr(Qt.INVALID_ATTRIBUTE_IN_PERMS(m),r,o,l);continue}fB.forEach(S=>{Du.isDefined(h[S])?Du.isBoolean(h[S])||sr(Qt.ATTR_PERM_NOT_BOOLEAN(S,m),r,o,l):sr(Qt.ATTR_PERM_MISSING(S,m),r,o,l)}),!d.read&&h.read===!0&&(d.read=!0),!d.insert&&h.insert===!0&&(d.insert=!0),!d.update&&h.update===!0&&(d.update=!0)}if(u.read===!1&&d.read===!0||u.insert===!1&&d.insert===!0||u.update===!1&&d.update===!0){let _=`${o}.${l}`;sr(Qt.MISMATCHED_TABLE_ATTR_PERMS(_),r,o,l)}}}}return Gte(r)}a(_B,"customValidate");hB.exports={addRoleValidation:Bte,alterRoleValidation:Hte,dropRoleValidation:kte};function qte(e){let{operation:t,permission:r}=e;if(t===Lu.OPERATIONS_ENUM.ADD_ROLE||t===Lu.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 Qt.SU_CU_ROLE_COMBINED_ERROR;{let o=r.super_user?Lu.ROLE_TYPES_ENUM.SUPER_USER:Lu.ROLE_TYPES_ENUM.CLUSTER_USER;return Qt.SU_CU_ROLE_NO_PERMS_ALLOWED(o)}}}return null}a(qte,"validateNoSUPerms");function Gte(e){let{main_permissions:t,schema_permissions:r}=e;if(t.length>0||Object.keys(r).length>0){let n={error:Qt.ROLE_PERMS_ERROR,...e};return Cte(new Error,n,Dte.BAD_REQUEST)}else return null}a(Gte,"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 w_=C((wIe,SB)=>{"use strict";var pB=Qr(),EB=Wr(),$te=_a(),Ub=mB(),xb=po(),NIe=require("uuid").v4,Vte=require("util"),wE=(k(),P(q)),Kte=ie(),Bb=EB.searchByValue,Yte=EB.searchByHash,Wte=Vte.promisify($te.delete),zte=zs(),jte=Ou(),{hdb_errors:Qte,handleHDBError:Jc}=he(),{HDB_ERROR_MSGS:gB,HTTP_STATUS_CODES:N_}=Qte,{UserEventMsg:Hb}=Ws();SB.exports={addRole:Jte,alterRole:Xte,dropRole:Zte,listRoles:ere};function vb(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(vb,"scrubRoleDetails");async function Jte(e){let t=Ub.addRoleValidation(e);if(t)throw t;e=vb(e);let r={schema:"system",table:"hdb_role",search_attribute:"role",search_value:e.role,hash_attribute:"id",get_attributes:["*"]},n;try{n=Array.from(await Bb(r)||[])}catch(i){throw Jc(i)}if(n&&n.length>0)throw Jc(new Error,gB.ROLE_ALREADY_EXISTS(e.role),N_.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 pB.insert(s),xb.signalUserChange(new Hb(process.pid)),e=vb(e),e}a(Jte,"addRole");async function Xte(e){let t=Ub.alterRoleValidation(e);if(t)throw t;e=vb(e);let r={operation:"update",schema:"system",table:"hdb_role",records:[e]},n;try{n=await pB.update(r)}catch(s){throw Jc(s)}if(n&&n?.message==="updated 0 of 1 records")throw Jc(new Error,"Invalid role id",N_.BAD_REQUEST,void 0,void 0,!0);return await xb.signalUserChange(new Hb(process.pid)),e}a(Xte,"alterRole");async function Zte(e){let t=Ub.dropRoleValidation(e);if(t)throw Jc(new Error,t,N_.BAD_REQUEST,void 0,void 0,!0);let r=new jte(wE.SYSTEM_SCHEMA_NAME,wE.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME,[e.id],["role"]),n=Array.from(await Yte(r));if(n.length===0)throw Jc(new Error,gB.ROLE_NOT_FOUND,N_.NOT_FOUND,void 0,void 0,!0);let s=new zte(wE.SYSTEM_SCHEMA_NAME,wE.SYSTEM_TABLE_NAMES.USER_TABLE_NAME,"role",e.id,void 0,["username","active"]),i=Array.from(await Bb(s)),o=!1;if(Kte.isEmptyOrZeroLength(i)===!1){for(let l=0;l<i.length;l++)if(i[l].active===!0){o=!0;break}}if(o===!0)throw Jc(new Error,`Cannot drop role ${n[0].role} as it has active user(s) tied to this role`,N_.CONFLICT,void 0,void 0,!0);let c={table:"hdb_role",schema:"system",hash_values:[e.id]};return await Wte(c),xb.signalUserChange(new Hb(process.pid)),`${n[0].role} successfully deleted`}a(Zte,"dropRole");async function ere(){return Bb({table:"hdb_role",schema:"system",hash_attribute:"id",search_attribute:"id",search_value:"*",get_attributes:["*"]})}a(ere,"listRoles")});var kb={};Ue(kb,{start:()=>RB,startOnMainThread:()=>nre});function RB({ensureTable:e}){return{handleFile:t,setupFile:t};async function t(r){let n=(0,TB.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(tre.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 f=[];for(let d in u.attributes){let _=u.attributes[d];_.attribute_name=d,f.push(_)}u.attribute_permissions=f,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 f of u.attribute_permissions)f.read=!!f.read,f.insert=!!f.insert,f.update=!!f.update}else u.attribute_permissions=null}}i.role=i.id=s,await rre(i)}}}async function rre(e){let t=Xe().system.hdb_role;for await(let r of t.search([{attribute:"role",value:e.role}])){let{__createdtime__:n,__updatedtime__:s,...i}=r;return(0,AB.isEqual)(i,e)?void 0:(e.id=r.id,(0,IE.alterRole)(e))}return(0,IE.addRole)(e)}var IE,TB,AB,tre,nre,yB=Re(()=>{xe();IE=v(w_()),TB=require("yaml"),AB=require("lodash"),tre=["super_user","cluster_user","structure_user"];a(RB,"start");a(rre,"ensureRole");nre=RB});async function CE(e){let t=(0,NB.pathToFileURL)(e).toString();if(sre)return I_||(I_=ire(are)),(await(await I_).import(t)).namespace;try{return await import(t)}catch(r){try{(await import("internal/util")).default.decorateErrorStack(r)}catch{}throw r}}async function ire(e){let{StaticModuleRecord:t}=await import("@endo/static-module-record");return require("ses"),lockdown({domainTaming:"unsafe",consoleTaming:"unsafe",errorTaming:"unsafe",errorTrapping:"none",stackFiltering:"verbose"}),I_=new Compartment({console,Math,Date,fetch:ore,...e()},{},{name:"h-dapp",resolveHook(r,n){return r==="harperdb"?"harperdb":(r=new URL(r,n).toString(),(0,OB.extname)(r)||(r+=".js"),r)},importHook:a(async r=>{if(r==="harperdb")return{imports:[],exports:["Resource","tables","databases"],execute(s){Object.assign(s,{Resource:Kr,tables:jn,databases:We})}};let n=await(0,bB.readFile)(new URL(r),{encoding:"utf-8"});return new t(n,r)},"importHook")}),I_}function ore(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 are(){return{Resource:Kr,tables:jn}}var bB,OB,NB,sre,I_,Fb=Re(()=>{sa();xe();bB=require("fs/promises"),OB=require("path"),NB=require("url"),sre=!1;a(CE,"secureImport");a(ire,"getCompartment");a(ore,"secureOnlyFetch");a(are,"getGlobalVars")});var Gb={};Ue(Gb,{handleFile:()=>cre});async function cre(e,t,r,n){let s=new Map,i=await CE(r);c(i.default)&&n.set((0,qb.dirname)(t),i.default),o(i,(0,qb.dirname)(t));function o(l,u){for(let f in l){let d=l[f];c(d)?n.set(u+"/"+f,d):typeof d=="object"&&o(d,u+"/"+f)}}a(o,"recurseForResources");function c(l){return typeof l=="function"&&(l.get||l.put||l.post||l.delete)}return a(c,"isResource"),s}var qb,wB=Re(()=>{Fb();qb=require("path");a(cre,"handleFile")});var Vb={};Ue(Vb,{start:()=>lre});function lre({resources:e}){e.set("login",$b),e.loginPath=t=>"/login?redirect="+encodeURIComponent(t.url)}var $b,IB=Re(()=>{sa();a(lre,"start");$b=class extends Kr{static{a(this,"Login")}static async get(t,r,n){}static async post(t,r,n){let{username:s,password:i,redirect:o}=r;return{data:await n.login(s,i)}}}});var v_={};Ue(v_,{addAnalyticsListener:()=>M_,calculateCPUUtilization:()=>WB,diffResourceUsage:()=>zB,recordAction:()=>Mt,recordActionBinary:()=>Qn,setAnalyticsEnabled:()=>ure});function ure(e){GB=e}function dre(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 fre(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},DE.set(e,o)}function Mt(e,t,r,n,s){if(!GB)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=DE.get(i);o?dre(e,o):fre(i,e,t,r,n,s),PE||_re()}function Qn(e,t,r,n,s){Mt(!!e,t,r,n,s)}function M_(e){KB.push(e)}function _re(){PE=performance.now(),setTimeout(async()=>{let e=performance.now()-PE;PE=0;let t=[],r={time:Date.now(),period:e,threadId:Xc.threadId,metrics:t};for(let[s,i]of DE){if(i.values){let o=i.values.subarray(0,i.values.index);o.sort();let c=o.length,l=0,u=[],f;for(let d of YB){let _=Math.floor(c*d),h=o[_-1];if(_>l){let m=_-l;if(h===f){let S=u[u.length-1];typeof S=="number"?u[u.length-1]={value:S,count:1+m}:S.count+=m}else u.push(m>1?{value:h,count:m}:h),f=h;l=_}}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 jB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:Xc.threadId,byThread:!0,...n});for(let s of KB)s(t);DE=new Map,Xc.parentPort?Xc.parentPort.postMessage({type:VB,report:r}):XB({report:r})},$B).unref()}function LE(e,t,r){let n={id:(0,D_.getNextMonotonicTime)(),metric:t,...r};e.primaryStore.put(n.id,n,{append:!0}).then(s=>{s||e.primaryStore.put(n.id,n)})}function WB(e,t){let r=e.userCPUTime+e.systemCPUTime;return Math.round(r/t*100)/100}function zB(e,t){return{userCPUTime:t.userCPUTime/1e3-(e?.userCPUTime??0),systemCPUTime:t.systemCPUTime/1e3-(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 hre(e,t,r){let n=0;for(let[s,i]of Object.entries(r)){let o=`${t}.${s}`,c=i.getSize(),l={database:t,table:s,size:c};LE(e,"table-size",l),Zc.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),n+=c}return n}function CB(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=qB.default.statSync(s.primaryStore.env.path).size,c=hre(e,r,n),l=o-c,u={database:r,size:o,used:c,free:l,audit:i};LE(e,"database-size",u),Zc.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){Zc.warn?.("Error getting DB size metrics",s)}}function PB(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getStorageStats();if(!i)return;let o={database:r,...i};LE(e,"storage-volume",o),Zc.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){Zc.warn?.("Error getting DB volume metrics",s)}}async function mre(e,t=6e4){let r=Yb(),n=QB(),s=new Promise(E=>{let T=performance.now();setImmediate(()=>{let N=performance.now();N-T>5e3&&Zc.warn?.("Unusually high event queue latency on the main thread of "+Math.round(N-T)+"ms"),T=performance.now()}),n.primaryStore.prefetch([1],()=>{let N=performance.now();N-T>5e3&&Zc.warn?.("Unusually high task queue latency on the main thread of "+Math.round(N-T)+"ms"),E(N-T)})}),i;for(let E of n.primaryStore.getRange({start:1/0,end:!1,reverse:!0}))if(E.value?.time){i=E.value.time;break}if(Date.now()-t<i)return;let o,c=new Map,l=new Map,u=[],f;for(let{key:E,value:T}of r.primaryStore.getRange({start:i||!1,exclusiveStart:!0,end:1/0})){if(!T)continue;if(o){if(E>o+t)break}else o=E;f=E;let{metrics:N,threadId:M}=T;for(let H of N||[]){let{path:Z,method:W,type:$,metric:se,count:z,total:fe,distribution:ue,threads:ee,...Ae}=H;z||(z=1);let me=se+(Z?"-"+Z:"");W!==void 0&&(me+="-"+W),$!==void 0&&(me+="-"+$);let ye=c.get(me);if(ye){if(ye.threads){let ft=ye.threads[M];if(ft)ye=ft;else{ye.threads[M]={...Ae};continue}}ye.count||(ye.count=1);let Ht=ye.count;for(let ft in Ae){let Ln=Ae[ft];typeof Ln=="number"&&(ye[ft]=(ye[ft]*Ht+Ln*z)/(Ht+z))}ye.count+=z,fe>=0&&(ye.total+=fe,ye.ratio=ye.total/ye.count)}else ye={period:t,...H},delete ye.distribution,c.set(me,ye),ye.byThread&&(ye.threads=[],ye.threads[M]={...Ae},u.push(ye));if(ue){ue=ue.map(ft=>typeof ft=="number"?{value:ft,count:1}:ft);let Ht=l.get(me);Ht?Ht.push(...ue):l.set(me,ue)}}await jB()}for(let E of u){let{path:T,method:N,type:M,metric:H,count:Z,total:W,distribution:$,threads:se,...z}=E;se=se.filter(fe=>fe);for(let fe in z){if(typeof E[fe]!="number")continue;let ue=0;for(let ee of se){let Ae=ee[fe];typeof Ae=="number"&&(ue+=Ae)}E[fe]=ue}E.count=se.length,delete E.threads,delete E.byThread}for(let[E,T]of l){let N=c.get(E);T.sort((ft,Ln)=>ft.value>Ln.value?1:-1);let M=N.count-1,H=[],Z=0,W=0,$;for(let ft of YB){let Ln=M*ft;for(;Z<Ln;)$=T[W++],Z+=$.count,W===1&&Z--;let Vr=T[W>1?W-2:0];$||($=T[0]),H.push($.value-($.value-Vr.value)*(Z-Ln)/$.count)}let[se,z,fe,ue,ee,Ae,me,ye,Ht]=H;Object.assign(N,{p1:se,p10:z,p25:fe,median:ue,p75:ee,p90:Ae,p95:me,p99:ye,p999:Ht})}let d;for(let[E,T]of c)T.id=(0,D_.getNextMonotonicTime)(),T.time=f,n.primaryStore.put(T.id,T,{append:!0}).then(N=>{N||n.primaryStore.put(T.id,T)}),d=!0;let _=Date.now(),{idle:h,active:m}=performance.eventLoopUtilization();if(d||m*10>h){let E=(0,D_.getNextMonotonicTime)(),T={id:E,metric:"main-thread-utilization",idle:h-DB,active:m-LB,taskQueueLatency:await s,time:_,...process.memoryUsage()};n.primaryStore.put(E,T,{append:!0}).then(N=>{N||n.primaryStore.put(E,T)})}DB=h,LB=m;let S=process.resourceUsage(),g=zB(C_,S);g.time=_,g.period=C_.time?_-C_.time:t,g.cpuUtilization=WB(C_,g.period),LE(n,"resource-usage",g),C_=g;let A=Xe();CB(n,A),CB(n,{system:A.system}),PB(n,A),PB(n,{system:A.system})}async function MB(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function Yb(){return vB||(vB=_t({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function QB(){return UB||(UB=_t({table:"hdb_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function gre(){JB=!0;let e=(0,L_.get)(x.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await mre($B,e),await MB(Yb(),pre),await MB(QB(),Ere)},Math.min(e/2,2147483647)).unref()}function XB(e,t){let r=e.report;r.threadId=t?.threadId||Xc.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(xB+=n.mean*n.count);r.totalBytesProcessed=xB,t&&(r.metrics.push({metric:"utilization",...t.performance.eventLoopUtilization(BB.get(t))}),BB.set(t,t.performance.eventLoopUtilization())),r.id=(0,D_.getNextMonotonicTime)(),Yb().primaryStore.put(r.id,r),JB||gre(),Sre&&(ZB=Are(r))}async function Are(e){if(await ZB,!ga){let r=(0,P_.dirname)((0,kB.getLogFilePath)());try{ga=await(0,Kb.open)((0,P_.join)(r,"analytics.log"),"r+")}catch{ga=await(0,Kb.open)((0,P_.join)(r,"analytics.log"),"w+")}}let t=(await ga.stat()).size;if(t>Tre){let r=Buffer.alloc(t);await ga.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await ga.write(r,{position:0}),await ga.truncate(r.length),t=r.length}await ga.write(JSON.stringify(e)+`
|