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.
@@ -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()}});EL={type:"application/json",serializeStream:Nf,serialize:Df,deserialize:ZJ,q:.5};Yr.set("*/*",EL);Yr.set("",EL);a(ZJ,"tryJSONParse");a(Mf,"registerContentHandlers");e4=require("fastify-plugin"),t4=e4(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=hp(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(hp,"findBestSerializer");fL=sR.default.get(x.HTTP_COMPRESSIONTHRESHOLD);a(vf,"serialize");a(aa,"serializeMessage");a(rR,"asyncSerialization");a(nR,"hasAsyncSerialization");a(r4,"streamToBuffer");n4=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(s4,"isBufferEncoding");a(i4,"parseContentType");a(oo,"getDeserializer");a(o4,"deserializerUnknownType");a(a4,"transformIterable");a(_p,"toCsvStream")});var lR={};Ue(lR,{start:()=>p4});function c4(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 SL(e){if(typeof e!="object"||e===null)throw new Ri("Request body must be an object.");if(!("query"in e))throw new Ri("Request body must contain a `query` field.");if(typeof e.query!="string")throw new Ri("Request body `query` field must be a string.");if("variables"in e&&(typeof e.variables!="object"||e.variables===null))throw new Ri("Request body `variables` field must be an object.");if("operationName"in e&&typeof e.operationName!="string")throw new Ri("Request body `operationName` field must be a string.")}function cR(e){return parseInt(e.value,10)}function AL(e){return parseFloat(e.value)}function RL(e,t,r){let n=r.get(e.name.value);return yL(n)?bL(n,t):{attribute:t,value:n}}function yL(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function bL(e,t){return t=typeof t=="string"?[t]:t,Object.entries(e).flatMap(([r,n])=>(t=[...t,r],yL(n)?bL(n,t):{attribute:t,value:n}))}function l4(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:cR(e.value)};case Le.Kind.FLOAT:return{attribute:t,value:AL(e.value)};case Le.Kind.BOOLEAN:case Le.Kind.STRING:return{attribute:t,value:e.value.value};case Le.Kind.VARIABLE:return RL(e.value,t,r);case Le.Kind.OBJECT:return OL(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 OL(e,t,r){return e.fields.flatMap(n=>l4(n,t,r))}function u4(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:cR(e.value)};case Le.Kind.FLOAT:return{attribute:e.name.value,value:AL(e.value)};case Le.Kind.BOOLEAN:case Le.Kind.STRING:return{attribute:e.name.value,value:e.value.value};case Le.Kind.VARIABLE:return RL(e.value,e.name.value,t);case Le.Kind.OBJECT:return OL(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 d4(e,t){return e.flatMap(r=>u4(r,t))}function mp(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 mp(s.selectionSet,t)}case Le.Kind.INLINE_FRAGMENT:return mp(r.selectionSet,t)}})}function NL(e,t){return mp(e,t).map(r=>r.selectionSet?.selections.length>0?{name:r.name.value,select:NL(r.selectionSet,t)}:r.name.value)}async function f4(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:NL(e.selectionSet,r),conditions:d4(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 cR(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 _4(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 h4(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=_4(e.variableDefinitions,t),i=await Promise.all(mp(e.selectionSet,r).map(c=>f4(c,s,r,n))),o={data:{}};for(let[c,l]of i)o.data[c]=l;return o}async function TL({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(c4(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 h4(c,t,o,n);return{status:200,headers:{"Content-Type":"application/graphql-response+json; charset=utf-8"},body:JSON.stringify(l)}}async function m4(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 SL(r),TL(r,e)}case"POST":{let r=await oo(e.headers.get("content-type"),!0)(e._nodeRequest);return SL(r),TL(r,e)}default:throw new Ri("Method Not Allowed",405,{Allow:"GET, POST"})}}function p4(e){e.server.http(async(t,r)=>{if(!t.url.startsWith("/graphql"))return r(t);try{return await m4(t)}catch(n){logger.error(n);let s=t.headers.get("accept")??"application/graphql-response+json";switch(s){case"application/json":{if(n instanceof Ri)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 Ri)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,Ri,IL=Re(()=>{Le=v(require("graphql"));no();tu();a(c4,"assertExecutableDefinitionNode");a(SL,"assertRequestParams");a(cR,"processIntValueNode");a(AL,"processFloatValueNode");a(RL,"processVariableNode");a(yL,"isObject");a(bL,"transformObjectIntoQueryCondition");a(l4,"processObjectFieldNode");a(OL,"processObjectValueNode");a(u4,"processArgumentNode");a(d4,"buildConditionsQuery");a(mp,"fillInFragments");a(NL,"buildSelectQuery");a(f4,"processFieldNode");a(wL,"processConstValueNode");a(_4,"resolveVariables");a(h4,"executeOperation");a(TL,"resolver");Or=class extends Error{static{a(this,"GraphQLQueryingError")}},Ri=class extends Error{static{a(this,"HTTPError")}statusCode;headers;constructor(t,r=400,n={}){super(t),this.statusCode=r,this.headers=n}};a(m4,"graphqlQueryingHandler");a(p4,"start")});var bi=C((NRe,DL)=>{"use strict";var PL=ie(),CL=(k(),P(q)),cu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,yi=require("joi"),ca={schema_format:{pattern:cu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},E4=yi.alternatives(yi.string().min(1).max(ca.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ca.schema_format.message}),yi.number(),yi.array()).required(),g4=yi.alternatives(yi.string().min(1).max(ca.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ca.schema_format.message}),yi.number()),S4=yi.alternatives(yi.string().min(1).max(ca.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ca.schema_format.message}),yi.number()).required();function T4(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>ca.schema_length.maximum?`'${e}' maximum of 250 characters`:cu.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(T4,"checkValidTable");function A4(e,t){return PL.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(A4,"validateSchemaExists");function R4(e,t){let r=t.state.ancestors[0].schema;return PL.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(R4,"validateTableExists");function y4(e,t){return e.toLowerCase()===CL.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${CL.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(y4,"validateSchemaName");DL.exports={common_validators:ca,schema_regex:cu,hdb_schema_table:E4,validateSchemaExists:A4,validateTableExists:R4,validateSchemaName:y4,checkValidTable:T4,hdb_database:g4,hdb_table:S4}});var ot=C((IRe,LL)=>{"use strict";var En=require("validate.js");En.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||En.validators.type.checks[t](e)?null:` must be a '${t}' value`};En.validators.type.checks={Object:a(function(e){return En.isObject(e)&&!En.isArray(e)},"Object"),Array:En.isArray,Integer:En.isInteger,Number:En.isNumber,String:En.isString,Date:En.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};En.validators.hasValidFileExt=function(e,t){return En.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};LL.exports={validateObject:b4,validateObjectAsync:O4,validateBySchema:N4};function b4(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=En(e,t,{format:"flat"});return r?new Error(r):null}a(b4,"validateObject");async function O4(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await En.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(O4,"validateObjectAsync");function N4(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(N4,"validateBySchema")});var dR=C((PRe,vL)=>{var{hdb_table:w4,hdb_database:ML}=bi(),I4=ot(),uR=require("joi"),C4={undefined:"undefined",null:"null"},P4=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||C4[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"),D4=uR.object({database:ML,schema:ML,table:w4,records:uR.array().items(uR.object().custom(P4)).required()});vL.exports=function(e){return I4.validateBySchema(e,D4)}});var xL=C((LRe,UL)=>{"use strict";var fR=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")}};UL.exports=fR});var HL=C((vRe,BL)=>{"use strict";var _R=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};BL.exports=_R});var $L={};Ue($L,{HAS_EXPIRATION:()=>Sp,HAS_RESIDENCY_ID:()=>SR,HAS_STRUCTURE_UPDATE:()=>Ap,LAST_TIMESTAMP_PLACEHOLDER:()=>Hf,LOCAL_TIMESTAMP:()=>L4,METADATA:()=>Nc,NEW_TIMESTAMP_PLACEHOLDER:()=>FL,NO_TIMESTAMP:()=>Ep,PENDING_LOCAL_TIME:()=>TR,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>gR,RecordEncoder:()=>ER,TIMESTAMP_ASSIGN_LAST:()=>v4,TIMESTAMP_ASSIGN_NEW:()=>GL,TIMESTAMP_ASSIGN_PREVIOUS:()=>qL,TIMESTAMP_PLACEHOLDER:()=>pp,TIMESTAMP_RECORD_PREVIOUS:()=>hR,handleLocalTimeForGets:()=>Rp,recordUpdater:()=>AR,removeEntry:()=>Ic});function x4(){return Bf[0]=Bf[0]^64,M4.getFloat64(0)}function Rp(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?.[Nc];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?.[Nc]>=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[Nc];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,Oc.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<Oc.length;u++){let f=Oc[u].deref();(!f||f.isDone||f.isCommitted)&&Oc.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function AR(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){l==null?bc=Ep:d?bc=i?.localTime?hR|qL:Ep:bc=l?i?.localTime?hR|16384:GL|16384:Ep;let h=u?.expiresAt;if(h>=0&&(c|=Sp),xf=c,mR=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:bc>0},S,g=0;try{let R=i?.residencyId,E=u?.residencyId;E&&(pR=E,xf|=SR,g|=Cc),R!==E&&(g|=Pc,R||(R=0)),c&Sp&&(g|=Ff),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))&&oa(i.value);let T;if(s!==void 0&&(T=dp(()=>e.put(n,s,m),n,e.rootStore),Ac&&(g|=Ur)),l){let N=u?.user?.username;if(_&&(dp(()=>e.encoder.encode(_),n,e.rootStore),Ac&&(g|=Ur)),e.encoder.hasStructureUpdate&&(g|=Ap,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let M=i?.localTime,H=r.get(M);if(H){let X=St(H).previousLocalTime;return T=r.put(M,wc(o,t,n,X,u?.nodeId??server.replication.getThisNodeId(r)??0,N,f,Uf,g,E,R,h),{ifVersion:S}),T}}T=r.put(s===void 0?FL:Hf,wc(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,f,Uf,g,E,R,h,u?.originatingOperation),{instructedWrite:!0,ifVersion:S})}return T}catch(R){throw R.message+=" id: "+n+" options: "+m,R}}}function Ic(e,t,r){if(t)return t.value&&t.metadataFlags&Ur&&!e.auditStore?.getBinaryFast(t.localTime)&&oa(t.value),e.remove(t.key,r)}var kL,gp,pp,Hf,gR,FL,L4,Nc,Bf,M4,Ep,GL,v4,qL,hR,Sp,SR,TR,Ap,U4,Uf,bc,xf,mR,pR,ER,Oc,lu=Re(()=>{kL=require("msgpackr");Ti();gp=v(ee());pn();pn();pp=new Uint8Array([1,1,1,1,4,64,0,0]),Hf=new Uint8Array([1,1,1,1,1,0,0,0]),gR=new Uint8Array([1,1,1,1,3,64,0,0]),FL=new Uint8Array([1,1,1,1,0,64,0,0]),L4=Symbol("local-timestamp"),Nc=Symbol("metadata"),Bf=new Uint8Array(8),M4=new DataView(Bf.buffer,0,8),Ep=0,GL=0,v4=1,qL=3,hR=4,Sp=16,SR=32,TR=1,Ap=256,bc=0,xf=-1,mR=-1,pR=0,ER=class extends kL.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(bc||xf>=0){let o=0,c=bc;c&&(o+=8,bc=0);let l=xf,u=mR,f=pR;l>=0&&(o+=4,xf=-1,u>=0&&(o+=8,mR=-1),f&&(o+=4,pR=0));let d=U4=r.call(this,s,i|2048|o);Uf=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(pp[4]=c,pp[5]=c>>8,d.set(pp,_),_+=8),Ac&&(l|=Ur),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|Tp<<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 Uf=r.call(this,s,i),Uf};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(Bf,0,c),c+=8;else for(let _=0;_<8;_++)Bf[_]=t[c++];l=x4(),i=t[c]}let u,f;i<32&&(i===Tp?(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&Sp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&SR&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=ro(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[Nc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:ro(()=>super.decode(t,r),this.rootStore)}catch(c){return gp.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(x4,"getTimestamp");a(Rp,"handleLocalTimeForGets");Oc=[];setInterval(()=>{for(let e=0;e<Oc.length;e++){let t=Oc[e].deref();!t||t.isDone||t.isCommitted?Oc.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(gp.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):gp.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(AR,"recordUpdater");a(Ic,"removeEntry")});var Gf=C((FRe,KL)=>{"use strict";var VL=le(),B4=(k(),P(q)),{RecordEncoder:H4}=(lu(),P($L));VL.initSync();var k4=VL.get(B4.CONFIG_PARAMS.STORAGE_CACHING)!==!1,RR=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=k4&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:H4})}};KL.exports=RR});var qf=C((qRe,YL)=>{"use strict";var kn=le(),_s=(k(),P(q));kn.initSync();var yp=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)}};YL.exports=yp;yp.MAX_DBS=1e4});var _t=C((VRe,rM)=>{"use strict";var bR=require("lmdb"),Fs=require("fs-extra"),Fn=require("path"),bp=un(),QL=ee(),gn=Un().LMDB_ERRORS_ENUM,Op=HL(),OR=Gf(),jL=qf(),la=Ft(),WL=(k(),P(q)),{table:F4,resetDatabases:G4}=(xe(),P(ct)),zL=le(),Gs=la.INTERNAL_DBIS_NAME,JL=la.DBI_DEFINITION_NAME,q4="data.mdb",$4="lock.mdb",$f=".mdb",V4="-lock",yR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=hs(t,r),this.key_type=this.dbi[la.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[la.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new bR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Np(e,t){if(e===void 0)throw new Error(gn.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(gn.ENV_NAME_REQUIRED)}a(Np,"pathEnvNameValidation");async function NR(e,t,r=!0){try{await Fs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(gn.INVALID_BASE_PATH):n}try{let n=Fn.join(e,t+$f);return await Fs.access(n,Fs.constants.R_OK|Fs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Fs.access(Fn.join(e,t,q4),Fs.constants.R_OK|Fs.constants.F_OK),Fn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(gn.INVALID_ENVIRONMENT)}else throw new Error(gn.INVALID_ENVIRONMENT);throw n}}a(NR,"validateEnvironmentPath");function wp(e,t){if(bp.validateEnv(e),t===void 0)throw new Error(gn.DBI_NAME_REQUIRED)}a(wp,"validateEnvDBIName");async function K4(e,t,r=!1,n=!1){Np(e,t);let s=Fn.basename(e);t=t.toString();let i=zL.get(WL.CONFIG_PARAMS.DATABASES);i||zL.setProperty(WL.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await NR(e,t,n),XL(e,t,r)}catch(o){if(o.message===gn.INVALID_ENVIRONMENT){let c=Fn.join(e,t);await Fs.mkdirp(n?c:e);let l=new jL(n?c:c+$f,!1),u=bR.open(l);u.dbis=Object.create(null);let f=new OR(!1);u.openDB(Gs,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=wR(e,t,r);return u[la.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(K4,"createEnvironment");async function Y4(e,t,r,n=!0){Np(e,t),t=t.toString();let s=Fn.join(e,t);return F4({table:t,database:Fn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(Y4,"copyEnvironment");async function XL(e,t,r=!1){Np(e,t),t=t.toString();let n=wR(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 NR(e,t),i=Fn.join(e,t+$f),o=s!=i,c=new jL(s,o),l=bR.open(c);l.dbis=Object.create(null);let u=eM(l);for(let f=0;f<u.length;f++)hs(l,u[f]);return l[la.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(XL,"openEnvironment");async function W4(e,t,r=!1){Np(e,t),t=t.toString();let n=Fn.join(e,t+$f),s=await NR(e,t);if(global.lmdb_map!==void 0){let i=wR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await ZL(o),delete global.lmdb_map[i]}}await Fs.remove(s),await Fs.remove(s===n?s+V4:Fn.join(Fn.dirname(s),$4))}a(W4,"deleteEnvironment");async function ZL(e){bp.validateEnv(e);let t=e[la.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(ZL,"closeEnvironment");function wR(e,t,r=!1){let s=`${Fn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(wR,"getCachedEnvironmentName");function z4(e){bp.validateEnv(e);let t=Object.create(null),r=hs(e,Gs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Gs)try{t[n]=Object.assign(new Op,s)}catch{QL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(z4,"listDBIDefinitions");function eM(e){bp.validateEnv(e);let t=[],r=hs(e,Gs);for(let{key:n}of r.getRange({start:!1}))n!==Gs&&t.push(n);return t}a(eM,"listDBIs");function Q4(e,t){let n=hs(e,Gs).getEntry(t),s=new Op;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{QL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(Q4,"getDBIDefinition");function tM(e,t,r,n=!r){if(wp(e,t),t=t.toString(),t===Gs)throw new Error(gn.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return hs(e,t)}catch(s){if(s.message===gn.DBI_DOES_NOT_EXIST){let i=new OR(r,n===!0),o=e.openDB(t,i),c=new Op(r===!0,n);return o[JL]=c,hs(e,Gs).putSync(t,c),e.dbis[t]=o,o}throw s}}a(tM,"createDBI");function hs(e,t){if(wp(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Gs?r=Q4(e,t):r=new Op,r===void 0)throw new Error(gn.DBI_DOES_NOT_EXIST);let n;try{let s=new OR(r.dup_sort,r.useVersions);if(n=e.openDB(t,s),n.db===void 0)throw new Error("MDB_NOTFOUND")}catch(s){throw s.message.includes("MDB_NOTFOUND")===!0?new Error(gn.DBI_DOES_NOT_EXIST):s}return n[JL]=r,e.dbis[t]=n,n}a(hs,"openDBI");function j4(e,t){wp(e,t),t=t.toString();let r=hs(e,t),n=r.getStats();return r[la.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(j4,"statDBI");async function J4(e,t){try{let r=Fn.join(e,t+$f);return(await Fs.stat(r)).size}catch{throw new Error(gn.INVALID_ENVIRONMENT)}}a(J4,"environmentDataSize");function X4(e,t){if(wp(e,t),t=t.toString(),t===Gs)throw new Error(gn.CANNOT_DROP_INTERNAL_DBIS_NAME);hs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],hs(e,Gs).removeSync(t)}a(X4,"dropDBI");function Z4(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===gn.DBI_DOES_NOT_EXIST)tM(e,i,i!==t,i===t),n=!0;else throw o}}n&&G4()}a(Z4,"initializeDBIs");rM.exports={openDBI:hs,openEnvironment:XL,createEnvironment:K4,listDBIs:eM,listDBIDefinitions:z4,createDBI:tM,dropDBI:X4,statDBI:j4,deleteEnvironment:W4,initializeDBIs:Z4,TransactionCursor:yR,environmentDataSize:J4,copyEnvironment:Y4,closeEnvironment:ZL}});var sM=C((YRe,nM)=>{"use strict";var IR=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};nM.exports=IR});var oM=C((zRe,iM)=>{"use strict";var CR=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}};iM.exports=CR});var cM=C((jRe,aM)=>{"use strict";var PR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};aM.exports=PR});var Lc=C((tye,dM)=>{"use strict";var e3=_t(),t3=sM(),r3=oM(),n3=cM(),Oi=un(),Vf=Un().LMDB_ERRORS_ENUM,s3=Ft(),ao=(k(),P(q)),i3=ie(),o3=require("uuid"),XRe=require("lmdb"),{handleHDBError:a3,hdb_errors:c3}=he(),{OVERFLOW_MARKER:ZRe,MAX_SEARCH_KEY_LENGTH:eye}=s3,lM=le();lM.initSync();var Ip=lM.get(ao.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),DR=ao.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Dc=ao.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function l3(e,t,r,n,s=Oi.getNextMonotonicTime()){UR(e,t,r,n),LR(e,t,r);let i=new t3,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];uM(u,!0,s);let f=u3(e,t,r,u),d=u[t];o.push(f),c.push(d)}return MR(o,c,n,i,s)}a(l3,"insertRecords");function u3(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][ao.FUNC_VAL],n[o]=c)}let l=Oi.getIndexedValues(c),u=e.dbis[o];if(l){Ip&&u.prefetch(l.map(f=>({key:f,value:s})),Cp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}Ip&&e.dbis[t].prefetch([s],Cp),e.dbis[t].put(s,n,n[Dc])})}a(u3,"insertRecord");function d3(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(d3,"removeSkippedRecords");function uM(e,t,r){let n=r>0;(n||!Number.isInteger(e[Dc]))&&(e[Dc]=r||(r=Oi.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[DR]))&&(e[DR]=r||Oi.getNextMonotonicTime()):delete e[DR]}a(uM,"setTimestamps");function LR(e,t,r){r.indexOf(ao.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(ao.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(ao.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(ao.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),e3.initializeDBIs(e,t,r)}a(LR,"initializeTransaction");async function f3(e,t,r,n,s=Oi.getNextMonotonicTime()){UR(e,t,r,n),LR(e,t,r);let i=new r3,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 MR(c,l,n,i,s,o)}a(f3,"updateRecords");async function _3(e,t,r,n,s=Oi.getNextMonotonicTime()){try{UR(e,t,r,n)}catch(l){throw a3(l,l.message,c3.HTTP_STATUS_CODES.BAD_REQUEST)}LR(e,t,r);let i=new n3,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;i3.isEmpty(u[t])?(f=o3.v4(),u[t]=f):f=u[t];let d=vR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return MR(o,c,n,i,s)}a(_3,"upsertRecords");async function MR(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||Oi.getNextMonotonicTime(),d3(r,i),n}a(MR,"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(uM(r,!f,o),Number.isInteger(r[Dc])&&u[Dc]>r[Dc])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 R=u[m];if(typeof S=="function"){let T=S([[u]]);Array.isArray(T)&&(S=T[0][ao.FUNC_VAL],r[m]=S)}if(S===R)continue;let E=Oi.getIndexedValues(R);if(E){Ip&&g.prefetch(E.map(T=>({key:T,value:n})),Cp);for(let T=0,N=E.length;T<N;T++)g.remove(E[T],n)}if(E=Oi.getIndexedValues(S),E){Ip&&g.prefetch(E.map(T=>({key:T,value:n})),Cp);for(let T=0,N=E.length;T<N;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[Dc])},"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 h3(e,t,r){if(Oi.validateEnv(e),t===void 0)throw new Error(Vf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Vf.WRITE_ATTRIBUTES_REQUIRED):new Error(Vf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(h3,"validateBasic");function UR(e,t,r,n){if(h3(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Vf.RECORDS_REQUIRED):new Error(Vf.RECORDS_MUST_BE_ARRAY)}a(UR,"validateWrite");function Cp(){}a(Cp,"noop");dM.exports={insertRecords:l3,updateRecords:f3,upsertRecords:_3}});var co=C((nye,m3)=>{m3.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 _M=C((sye,fM)=>{"use strict";var p3=require("uuid"),xR=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||p3.v4(),this.schema_table=`${this.schema}.${this.table}`}};fM.exports=xR});var Pp=C((oye,hM)=>{"use strict";var E3=_M(),BR=class extends E3{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}};hM.exports=BR});var pM=C((cye,mM)=>{"use strict";mM.exports=S3;var g3="inserted";function S3(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===g3?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(S3,"returnObject")});var Dp=C((dye,gM)=>{"use strict";var T3=(k(),P(q)),HR=_t(),A3=Lc(),{getSystemSchemaPath:R3,getSchemaPath:y3}=gt(),uye=co(),{validateBySchema:b3}=ot(),Kf=require("joi"),O3=Pp(),N3=pM(),{handleHDBError:w3,hdb_errors:I3,ClientError:C3}=he(),EM=ie(),{HTTP_STATUS_CODES:P3}=I3,D3="inserted";gM.exports=L3;async function L3(e){let t=b3(e,Kf.object({database:Kf.string(),schema:Kf.string(),table:Kf.string().required(),attribute:Kf.string().required()}));if(t)throw new C3(t.message);let r=!e.skip_table_check&&EM.checkGlobalSchemaTable(e.schema,e.table);if(r)throw w3(new Error,r,P3.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=EM.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 O3(e.schema,e.table,e.attribute,e.id);try{let i=await HR.openEnvironment(y3(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}`);HR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await HR.openEnvironment(R3(),T3.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await A3.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return N3(D3,c,{records:[s]},l)}catch(i){throw i}}a(L3,"lmdbCreateAttribute")});var Yf=C((hye,TM)=>{"use strict";var lo=ie(),SM=ee(),_ye=dR(),{getDatabases:M3}=(xe(),P(ct)),{ClientError:Mc}=he();TM.exports=v3;function v3(e){if(lo.isEmpty(e))throw new Mc("invalid update parameters defined.");if(lo.isEmptyOrZeroLength(e.schema))throw new Mc("invalid schema specified.");if(lo.isEmptyOrZeroLength(e.table))throw new Mc("invalid table specified.");if(!Array.isArray(e.records))throw new Mc("records must be an array");let t=M3()[e.schema]?.[e.table];if(lo.isEmpty(t))throw new Mc(`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&&lo.isEmptyOrZeroLength(o[r]))throw SM.error("a valid hash attribute must be provided with update record:",o),new Mc("a valid hash attribute must be provided with update record, check log for more info");if(!lo.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw SM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Mc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!lo.isEmpty(o[r])&&o[r]!==""&&n.has(lo.autoCast(o[r]))&&(o.skip=!0),n.add(lo.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(v3,"insertUpdateValidate")});var RM=C((pye,AM)=>{"use strict";var kR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};AM.exports=kR});var OM=C((gye,bM)=>{"use strict";var FR=_t(),U3=ee(),yM=Un().LMDB_ERRORS_ENUM;bM.exports=x3;async function x3(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 FR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==yM.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await FR.closeEnvironment(global.lmdb_map[n]),await FR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==yM.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){U3.error(t)}}a(x3,"cleanLMDBMap")});var HM=C((Aye,BM)=>{"use strict";var GR=require("recursive-iterator"),B3=require("alasql"),qR=require("clone"),NM=ie(),{handleHDBError:wM,hdb_errors:H3}=he(),{HDB_ERROR_MSGS:IM,HTTP_STATUS_CODES:CM}=H3,{getDatabases:k3}=(xe(),P(ct)),F3=["DISTINCT_ARRAY"],PM=Symbol("validateTables"),$R=Symbol("validateTable"),Tye=Symbol("getAllColumns"),DM=Symbol("validateAllColumns"),Lp=Symbol("findColumn"),LM=Symbol("validateOrderBy"),Wf=Symbol("validateSegment"),VR=Symbol("validateColumn"),MM=Symbol("setColumnsForTable"),vM=Symbol("checkColumnsForAsterisk"),UM=Symbol("validateGroupBy"),xM=Symbol("hasColumns"),KR=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[PM](),this[vM](),this[DM]()}[PM](){if(this[xM]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[$R](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[$R](t.table)})}}[xM](){let t=!1,r=new GR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[$R](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=k3();if(!r[t.databaseid])throw wM(new Error,IM.SCHEMA_NOT_FOUND(t.databaseid),CM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw wM(new Error,IM.TABLE_NOT_FOUND(t.databaseid,t.tableid),CM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=qR(s);i.table=qR(t),this.attributes.push(i)})}[Lp](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)}[vM](){let t=new GR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[MM](r.tableid)}[MM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new B3.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[DM](){this[Wf](this.statement.columns,!1),this[Wf](this.statement.joins,!1),this[Wf](this.statement.where,!1),this[UM](this.statement.group,!1),this[Wf](this.statement.order,!0)}[Wf](t,r){if(!t)return;let n=new GR(t),s=[];for(let{node:i,path:o}of n)!NM.isEmpty(i)&&!NM.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[LM](i):s.push(this[VR](i)));return s}[UM](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&F3.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=qR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Lp](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[Lp](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`}[LM](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[VR](t)}[VR](t){let r=this[Lp](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]}};BM.exports=KR});var qM=C((yye,GM)=>{"use strict";var kM=require("lodash"),zf=require("mathjs"),G3=require("jsonata"),FM=ie();GM.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?kM.uniqWith(e,kM.isEqual):e,"distinct_array"),searchJSON:q3,mad:Qf.bind(null,zf.mad),mean:Qf.bind(null,zf.mean),mode:Qf.bind(null,zf.mode),prod:Qf.bind(null,zf.prod),median:Qf.bind(null,zf.median)};function Qf(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(Qf,"aggregateFunction");function q3(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(FM.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),FM.isEmpty(this.__ala__.res[r])){let n=G3(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(q3,"searchJSON")});var VM=C((Oye,$M)=>{"use strict";var er=require("moment"),YR="YYYY-MM-DDTHH:mm:ss.SSSZZ";er.suppressDeprecationWarnings=!0;$M.exports={current_date:a(()=>er().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>er().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return er(e).utc().format("YYYY");case"month":return er(e).utc().format("MM");case"day":return er(e).utc().format("DD");case"hour":return er(e).utc().format("HH");case"minute":return er(e).utc().format("mm");case"second":return er(e).utc().format("ss");case"millisecond":return er(e).utc().format("SSS");default:break}},"extract"),date:a(e=>er(e).utc().format(YR),"date"),date_format:a((e,t)=>er(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>er(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>er(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=er(e).utc(),s=er(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>er().utc().valueOf(),"now"),get_server_time:a(()=>er().format(YR),"get_server_time"),offset_utc:a((e,t)=>er(e).utc().utcOffset(t).format(YR),"offset_utc")}});var zM=C((wye,WM)=>{"use strict";var $3=require("@turf/area"),V3=require("@turf/length"),K3=require("@turf/circle"),Y3=require("@turf/difference"),W3=require("@turf/distance"),z3=require("@turf/boolean-contains"),Q3=require("@turf/boolean-equal"),j3=require("@turf/boolean-disjoint"),J3=require("@turf/helpers"),KM=(k(),P(q)),Ke=ie(),uo=ee();WM.exports={geoArea:X3,geoLength:Z3,geoCircle:eX,geoDifference:tX,geoDistance:YM,geoNear:rX,geoContains:nX,geoEqual:sX,geoCrosses:iX,geoConvert:oX};function X3(e){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return $3.default(e)}catch(t){return uo.trace(t,e),NaN}}a(X3,"geoArea");function Z3(e,t){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return V3.default(e,{units:t||"kilometers"})}catch(r){return uo.trace(r,e),NaN}}a(Z3,"geoLength");function eX(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return K3.default(e,t,{units:r||"kilometers"})}catch(n){return uo.trace(n,e,t),NaN}}a(eX,"geoCircle");function tX(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 Y3(e,t)}catch(r){return uo.trace(r,e,t),NaN}}a(tX,"geoDifference");function YM(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 W3.default(e,t,{units:r||"kilometers"})}catch(n){return uo.trace(n,e,t),NaN}}a(YM,"geoDistance");function rX(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 YM(e,t,n)<=r}catch(s){return uo.trace(s,e,t),!1}}a(rX,"geoNear");function nX(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 z3.default(e,t)}catch(r){return uo.trace(r,e,t),!1}}a(nX,"geoContains");function sX(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 Q3.default(e,t)}catch(r){return uo.trace(r,e,t),!1}}a(sX,"geoEqual");function iX(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!j3.default(e,t)}catch(r){return uo.trace(r,e,t),!1}}a(iX,"geoCrosses");function oX(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(KM.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(KM.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ke.autoCastJSON(e)),J3[t](e,r)}a(oX,"geoConvert")});var Mp=C((Cye,QM)=>{var vc=qM(),Gn=VM(),Ni=zM();QM.exports=e=>{e.aggr.mad=e.aggr.MAD=vc.mad,e.aggr.mean=e.aggr.MEAN=vc.mean,e.aggr.mode=e.aggr.MODE=vc.mode,e.aggr.prod=e.aggr.PROD=vc.prod,e.aggr.median=e.aggr.MEDIAN=vc.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=vc.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=vc.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=Gn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=Gn.current_time,e.fn.extract=e.fn.EXTRACT=Gn.extract,e.fn.date=e.fn.DATE=Gn.date,e.fn.date_format=e.fn.DATE_FORMAT=Gn.date_format,e.fn.date_add=e.fn.DATE_ADD=Gn.date_add,e.fn.date_sub=e.fn.DATE_SUB=Gn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=Gn.date_diff,e.fn.now=e.fn.NOW=Gn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=Gn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=Gn.get_server_time,e.fn.getdate=e.fn.GETDATE=Gn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=Gn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=Ni.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=Ni.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=Ni.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=Ni.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=Ni.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=Ni.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=Ni.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=Ni.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=Ni.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=Ni.geoNear}});var ZM=C((Pye,XM)=>{"use strict";var jf=require("lodash"),Sn=require("alasql");Sn.options.cache=!1;var aX=Mp(),jM=require("clone"),vp=require("recursive-iterator"),ke=ee(),Je=ie(),uu=qn(),cX=(k(),P(q)),{hdb_errors:lX}=he(),{getDatabases:JM}=(xe(),P(ct)),uX="IS NULL",qs="There was a problem performing this search. Please check the logs and try again.";aX(Sn);var WR=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(qs)}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(qs)}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(qs)}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(qs)}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(qs)}}_getColumns(){let t=new vp(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(jM(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=jf.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=JM()[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 vp(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 Sn.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 Sn.yy.LogicValue({value:i}):n instanceof Sn.yy.StringValue&&Je.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Sn.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 vp(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(cX.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&&jf.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 Sn.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(jM(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(uX)>-1&&this.tables.forEach(s=>{let i={columnid:JM()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=jf.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 uu.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(qs)}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 uu.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(qs)}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 uu.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(qs)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await uu.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(qs)}}}_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 Sn.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 Sn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Sn.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 Sn.yy.FuncValue:new Sn.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 Sn.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=jf.difference(m,[...h.keys].map(g=>g.toString()));for(let g=0,R=S.length;g<R;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 vp(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=jf.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(qs)}}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 uu.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 Sn.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(lX.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 uu.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(qs)}}return Object.values(Object.values(this.data)[0].__merged_data)}};XM.exports=WR});var Wr=C((Lye,ev)=>{"use strict";var dX=HM();ev.exports={searchByConditions:_X,searchByHash:hX,searchByValue:mX,search:pX};var zR=qn(),{transformReq:QR}=ie(),fX=ZM();async function _X(e){return QR(e),zR.searchByConditions(e)}a(_X,"searchByConditions");async function hX(e){QR(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of zR.searchByHash(e))r&&t.push(r);return t}a(hX,"searchByHash");async function mX(e){QR(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of zR.searchByValue(e))t.push(r);return t}a(mX,"searchByValue");function pX(e,t){try{let r=new dX(e);r.validate(),new fX(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(pX,"search")});var fo=C((vye,sv)=>{"use strict";var Jf=require("crypto"),EX=le(),{CONFIG_PARAMS:gX}=(k(),P(q)),rv="aes-256-cbc",SX=32,TX=16,jR=64,nv=32,AX=jR+nv,tv=new Map;sv.exports={encrypt:RX,decrypt:yX,createNatsTableStreamName:bX};function RX(e){let t=Jf.randomBytes(SX),r=Jf.randomBytes(TX),n=Jf.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(RX,"encrypt");function yX(e){let t=e.substr(0,jR),r=e.substr(jR,nv),n=e.substr(AX,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=Jf.createDecipheriv(rv,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(yX,"decrypt");function bX(e,t){let r=EX.get(gX.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=tv.get(r);return n||(n=Jf.createHash("md5").update(r).digest("hex"),tv.set(r,n)),n}a(bX,"createNatsTableStreamName")});var _o=C((Bye,cv)=>{"use strict";var xye=Wr(),Xf=ee(),{validateBySchema:iv}=ot(),Uc=require("joi"),OX=fo(),Up=ie(),{handleHDBError:xp,hdb_errors:NX,ClientError:ov}=he(),{HDB_ERROR_MSGS:Bp,HTTP_STATUS_CODES:JR}=NX,av=le();av.initSync();var{getDatabases:XR}=(xe(),P(ct)),wX=require("fs-extra"),IX=(k(),P(q));cv.exports={describeAll:CX,describeTable:Hp,describeSchema:PX};async function CX(e={}){try{let t=Up.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=XR(),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 Hp({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 Hp({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){Xf.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 Xf.error("Got an error in describeAll"),Xf.error(t),xp(new Error,Bp.DESCRIBE_ALL_ERR)}}a(CX,"describeAll");async function Hp(e,t){Up.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=iv(e,Uc.object({database:Uc.string(),table:Uc.string().required(),exact_count:Uc.boolean().strict()}));if(i)throw new ov(i.message);let c=XR()[r];if(!c)throw xp(new Error,Bp.SCHEMA_NOT_FOUND(e.schema),JR.NOT_FOUND);let l=c[n];if(!l)throw xp(new Error,Bp.TABLE_NOT_FOUND(e.schema,e.table),JR.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 wX.stat(l.primaryStore.env.path)).size}catch(h){Xf.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")),av.get(IX.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=OX.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){Xf.warn(`unable to stat table dbi due to ${h}`)}return _}a(Hp,"descTable");async function PX(e){Up.transformReq(e);let t=iv(e,Uc.object({database:Uc.string(),exact_count:Uc.boolean().strict()}));if(t)throw new ov(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=XR()[n];if(!i)throw xp(new Error,Bp.SCHEMA_NOT_FOUND(e.schema),JR.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),Up.isEmpty(l)||l.describe){let u=await Hp({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(PX,"describeSchema")});var $s=C((Gye,_v)=>{var DX=co(),{callbackify:uv,promisify:LX}=require("util"),{getDatabases:dv}=(xe(),P(ct));_v.exports={setSchemaDataToGlobal:lv,getTableSchema:MX,getSystemSchema:vX,setSchemaDataToGlobalAsync:LX(lv)};var fv=_o(),kye=uv(fv.describeAll),Fye=uv(fv.describeTable);function lv(e){global.hdb_schema=dv(),e&&e()}a(lv,"setSchemaDataToGlobal");function MX(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(MX,"getTableSchema");function vX(){return DX}a(vX,"getSystemSchema")});var ey=C(($ye,pv)=>{var UX=ot(),ZR=require("joi"),{hdb_table:xX,hdb_database:hv}=bi(),mv={schema:hv,database:hv,table:xX},BX={date:ZR.date().iso().required()},HX={timestamp:ZR.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};pv.exports=function(e,t){let r=t==="timestamp"?{...mv,...HX}:{...mv,...BX},n=ZR.object(r);return UX.validateBySchema(e,n)}});var Sv=C((Vye,gv)=>{var kX=ot(),ty=require("joi"),{hdb_table:FX,hdb_database:Ev}=bi(),GX=ty.object({schema:Ev,database:Ev,table:FX,hash_values:ty.array().required(),ids:ty.array()});gv.exports=function(e){return kX.validateBySchema(e,GX)}});var iy=C((Kye,Tv)=>{"use strict";var ry=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}},ny=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}},sy=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};Tv.exports={InsertObject:ry,NoSQLSeachObject:ny,DeleteResponseObject:sy}});var Hc=C((Wye,Ov)=>{"use strict";var Rv=ey(),qX=Sv(),xc=ie(),Av=require("moment"),yv=ee(),{promisify:$X,callbackify:VX}=require("util"),Bc=(k(),P(q)),KX=$s(),oy=$X(KX.getTableSchema),ay=qn(),{DeleteResponseObject:YX}=iy(),{handleHDBError:ua,hdb_errors:WX}=he(),{HDB_ERROR_MSGS:kp,HTTP_STATUS_CODES:da}=WX,zX="records successfully deleted",QX=VX(bv);Ov.exports={delete:QX,deleteRecord:bv,deleteFilesBefore:jX,deleteAuditLogsBefore:JX};async function jX(e){let t=Rv(e,"date");if(t)throw ua(t,t.message,da.BAD_REQUEST,void 0,void 0,!0);if(xc.transformReq(e),!Av(e.date,Av.ISO_8601).isValid())throw ua(new Error,kp.INVALID_DATE,da.BAD_REQUEST,Bc.LOG_LEVELS.ERROR,kp.INVALID_DATE,!0);let n=xc.checkSchemaTableExist(e.schema,e.table);if(n)throw ua(new Error,n,da.NOT_FOUND,Bc.LOG_LEVELS.ERROR,n,!0);let s=await ay.deleteRecordsBefore(e);if(await oy(e.schema,e.table),yv.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(jX,"deleteFilesBefore");async function JX(e){let t=Rv(e,"timestamp");if(t)throw ua(t,t.message,da.BAD_REQUEST,void 0,void 0,!0);if(xc.transformReq(e),isNaN(e.timestamp))throw ua(new Error,kp.INVALID_VALUE("Timestamp"),da.BAD_REQUEST,Bc.LOG_LEVELS.ERROR,kp.INVALID_VALUE("Timestamp"),!0);let r=xc.checkSchemaTableExist(e.schema,e.table);if(r)throw ua(new Error,r,da.NOT_FOUND,Bc.LOG_LEVELS.ERROR,r,!0);let n=await ay.deleteAuditLogsBefore(e);return await oy(e.schema,e.table),yv.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(JX,"deleteAuditLogsBefore");async function bv(e){e.ids&&(e.hash_values=e.ids);let t=qX(e);if(t)throw ua(t,t.message,da.BAD_REQUEST,void 0,void 0,!0);xc.transformReq(e);let r=xc.checkSchemaTableExist(e.schema,e.table);if(r)throw ua(new Error,r,da.NOT_FOUND,Bc.LOG_LEVELS.ERROR,r,!0);try{await oy(e.schema,e.table);let n=await ay.deleteRecords(e);return xc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${zX}`),n}catch(n){if(n.message===Bc.SEARCH_NOT_FOUND_MESSAGE){let s=new YX;return s.message=Bc.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(bv,"deleteRecord")});var Fp={};Ue(Fp,{HASH_FUNCTION:()=>t_,hash:()=>uy,validate:()=>dy});function cy(e=e_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(Zf.randomBytes(e)).map(r=>t[r%t.length]).join("")}function uy(e,t=t_[wv?.toUpperCase()]??"sha256"){return ly[t](e)}function dy(e,t,r=t_[wv?.toUpperCase()]??"sha256"){return e?XX[r](e,t):!1}var Zf,du,Nv,wv,e_,Iv,t_,ly,XX,Gp=Re(()=>{Zf=v(require("node:crypto")),du=v(require("argon2")),Nv=v(le());k();wv=(0,Nv.get)(x.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),e_=16,Iv=9,t_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(t_||{});a(cy,"generateSalt");ly={md5:a((e,t=void 0)=>{t=t??cy(Iv);let r=Zf.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??cy(e_);let r=Zf.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=cy(e_),r=await du.hash(e,{type:du.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},XX={md5:a((e,t)=>{let r=e.slice(0,Iv);return e===ly.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,e_);return e===ly.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await du.verify(e.slice(e_),t),"argon2id")};a(uy,"hash");a(dy,"validate")});var Pv=C((Jye,Cv)=>{var fy=ot(),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 ZX(e){return zr.password.presence=!0,zr.username.presence=!0,zr.role.presence=!0,zr.active.presence=!0,fy.validateObject(e,zr)}a(ZX,"addUserValidation");function e6(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,fy.validateObject(e,zr)}a(e6,"alterUserValidation");function t6(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,fy.validateObject(e,zr)}a(t6,"dropUserValidation");Cv.exports={addUserValidation:ZX,alterUserValidation:e6,dropUserValidation:t6}});var Pt=C((ebe,Lv)=>{"use strict";var{platform:Zye}=require("os"),r6="nats-server.zip",_y="nats-server",n6=process.platform==="win32"?`${_y}.exe`:_y,s6=/^[^\s.,*>]+$/,Dv="__request__",i6=a(e=>`${e}.${Dv}`,"REQUEST_SUBJECT"),o6={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},a6={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},c6={HUB:"hub.pid",LEAF:"leaf.pid"},l6={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},u6={SUCCESS:"success",ERROR:"error"},d6={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},f6={TXN:"txn",MSGID:"msgid"},fu={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},_6={[fu.ERR]:1,[fu.WRN]:2,[fu.INF]:3,[fu.DBG]:4,[fu.TRC]:5},h6={debug:"-D",trace:"-DVV"};Lv.exports={NATS_SERVER_ZIP:r6,NATS_SERVER_NAME:_y,NATS_BINARY_NAME:n6,PID_FILES:c6,NATS_CONFIG_FILES:a6,SERVER_SUFFIX:l6,NATS_TERM_CONSTRAINTS_RX:s6,REQUEST_SUFFIX:Dv,UPDATE_REMOTE_RESPONSE_STATUSES:u6,CLUSTER_STATUS_STATUSES:d6,REQUEST_SUBJECT:i6,SUBJECT_PREFIXES:f6,MSG_HEADERS:o6,LOG_LEVELS:fu,LOG_LEVEL_FLAGS:h6,LOG_LEVEL_HIERARCHY:_6}});var hy=C(Mv=>{"use strict";var m6={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()}});EL={type:"application/json",serializeStream:Nf,serialize:Df,deserialize:ZJ,q:.5};Yr.set("*/*",EL);Yr.set("",EL);a(ZJ,"tryJSONParse");a(Mf,"registerContentHandlers");e4=require("fastify-plugin"),t4=e4(function(e,t,r){e.addHook("preSerialization",async(n,s)=>{if(s.raw.getHeader("content-type"))return;let{serializer:o,type:c}=hp(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(hp,"findBestSerializer");fL=sR.default.get(x.HTTP_COMPRESSIONTHRESHOLD);a(vf,"serialize");a(aa,"serializeMessage");a(rR,"asyncSerialization");a(nR,"hasAsyncSerialization");a(r4,"streamToBuffer");n4=["ascii","utf8","utf-8","utf16le","utf-16le","ucs2","ucs-2","base64","base64url","latin1","binary","hex"];a(s4,"isBufferEncoding");a(i4,"parseContentType");a(oo,"getDeserializer");a(o4,"deserializerUnknownType");a(a4,"transformIterable");a(_p,"toCsvStream")});var lR={};Ue(lR,{start:()=>p4});function c4(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 SL(e){if(typeof e!="object"||e===null)throw new Ri("Request body must be an object.");if(!("query"in e))throw new Ri("Request body must contain a `query` field.");if(typeof e.query!="string")throw new Ri("Request body `query` field must be a string.");if("variables"in e&&(typeof e.variables!="object"||e.variables===null))throw new Ri("Request body `variables` field must be an object.");if("operationName"in e&&typeof e.operationName!="string")throw new Ri("Request body `operationName` field must be a string.")}function cR(e){return parseInt(e.value,10)}function AL(e){return parseFloat(e.value)}function RL(e,t,r){let n=r.get(e.name.value);return yL(n)?bL(n,t):{attribute:t,value:n}}function yL(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function bL(e,t){return t=typeof t=="string"?[t]:t,Object.entries(e).flatMap(([r,n])=>(t=[...t,r],yL(n)?bL(n,t):{attribute:t,value:n}))}function l4(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:cR(e.value)};case Le.Kind.FLOAT:return{attribute:t,value:AL(e.value)};case Le.Kind.BOOLEAN:case Le.Kind.STRING:return{attribute:t,value:e.value.value};case Le.Kind.VARIABLE:return RL(e.value,t,r);case Le.Kind.OBJECT:return OL(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 OL(e,t,r){return e.fields.flatMap(n=>l4(n,t,r))}function u4(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:cR(e.value)};case Le.Kind.FLOAT:return{attribute:e.name.value,value:AL(e.value)};case Le.Kind.BOOLEAN:case Le.Kind.STRING:return{attribute:e.name.value,value:e.value.value};case Le.Kind.VARIABLE:return RL(e.value,e.name.value,t);case Le.Kind.OBJECT:return OL(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 d4(e,t){return e.flatMap(r=>u4(r,t))}function mp(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 mp(s.selectionSet,t)}case Le.Kind.INLINE_FRAGMENT:return mp(r.selectionSet,t)}})}function NL(e,t){return mp(e,t).map(r=>r.selectionSet?.selections.length>0?{name:r.name.value,select:NL(r.selectionSet,t)}:r.name.value)}async function f4(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:NL(e.selectionSet,r),conditions:d4(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 cR(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 _4(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 h4(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=_4(e.variableDefinitions,t),i=await Promise.all(mp(e.selectionSet,r).map(c=>f4(c,s,r,n))),o={data:{}};for(let[c,l]of i)o.data[c]=l;return o}async function TL({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(c4(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 h4(c,t,o,n);return{status:200,headers:{"Content-Type":"application/graphql-response+json; charset=utf-8"},body:JSON.stringify(l)}}async function m4(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 SL(r),TL(r,e)}case"POST":{let r=await oo(e.headers.get("content-type"),!0)(e._nodeRequest);return SL(r),TL(r,e)}default:throw new Ri("Method Not Allowed",405,{Allow:"GET, POST"})}}function p4(e){e.server.http(async(t,r)=>{if(!t.url.startsWith("/graphql"))return r(t);try{return await m4(t)}catch(n){logger.error(n);let s=t.headers.get("accept")??"application/graphql-response+json";switch(s){case"application/json":{if(n instanceof Ri)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 Ri)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,Ri,IL=Re(()=>{Le=v(require("graphql"));no();tu();a(c4,"assertExecutableDefinitionNode");a(SL,"assertRequestParams");a(cR,"processIntValueNode");a(AL,"processFloatValueNode");a(RL,"processVariableNode");a(yL,"isObject");a(bL,"transformObjectIntoQueryCondition");a(l4,"processObjectFieldNode");a(OL,"processObjectValueNode");a(u4,"processArgumentNode");a(d4,"buildConditionsQuery");a(mp,"fillInFragments");a(NL,"buildSelectQuery");a(f4,"processFieldNode");a(wL,"processConstValueNode");a(_4,"resolveVariables");a(h4,"executeOperation");a(TL,"resolver");Or=class extends Error{static{a(this,"GraphQLQueryingError")}},Ri=class extends Error{static{a(this,"HTTPError")}statusCode;headers;constructor(t,r=400,n={}){super(t),this.statusCode=r,this.headers=n}};a(m4,"graphqlQueryingHandler");a(p4,"start")});var bi=C((NRe,DL)=>{"use strict";var PL=ie(),CL=(k(),P(q)),cu=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,yi=require("joi"),ca={schema_format:{pattern:cu,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},E4=yi.alternatives(yi.string().min(1).max(ca.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ca.schema_format.message}),yi.number(),yi.array()).required(),g4=yi.alternatives(yi.string().min(1).max(ca.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ca.schema_format.message}),yi.number()),S4=yi.alternatives(yi.string().min(1).max(ca.schema_length.maximum).pattern(cu).messages({"string.pattern.base":"{:#label} "+ca.schema_format.message}),yi.number()).required();function T4(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>ca.schema_length.maximum?`'${e}' maximum of 250 characters`:cu.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(T4,"checkValidTable");function A4(e,t){return PL.doesSchemaExist(e)?e:t.message(`Database '${e}' does not exist`)}a(A4,"validateSchemaExists");function R4(e,t){let r=t.state.ancestors[0].schema;return PL.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(R4,"validateTableExists");function y4(e,t){return e.toLowerCase()===CL.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid database name, '${CL.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(y4,"validateSchemaName");DL.exports={common_validators:ca,schema_regex:cu,hdb_schema_table:E4,validateSchemaExists:A4,validateTableExists:R4,validateSchemaName:y4,checkValidTable:T4,hdb_database:g4,hdb_table:S4}});var ot=C((IRe,LL)=>{"use strict";var En=require("validate.js");En.validators.type=function(e,t,r,n){return e===null||typeof e>"u"||En.validators.type.checks[t](e)?null:` must be a '${t}' value`};En.validators.type.checks={Object:a(function(e){return En.isObject(e)&&!En.isArray(e)},"Object"),Array:En.isArray,Integer:En.isInteger,Number:En.isNumber,String:En.isString,Date:En.isDate,Boolean:a(function(e){return typeof e=="boolean"},"Boolean")};En.validators.hasValidFileExt=function(e,t){return En.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};LL.exports={validateObject:b4,validateObjectAsync:O4,validateBySchema:N4};function b4(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=En(e,t,{format:"flat"});return r?new Error(r):null}a(b4,"validateObject");async function O4(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await En.async(e,t,{format:"flat"})}catch(r){let n=r.join(",");return new Error(n)}return null}a(O4,"validateObjectAsync");function N4(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(N4,"validateBySchema")});var dR=C((PRe,vL)=>{var{hdb_table:w4,hdb_database:ML}=bi(),I4=ot(),uR=require("joi"),C4={undefined:"undefined",null:"null"},P4=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||C4[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"),D4=uR.object({database:ML,schema:ML,table:w4,records:uR.array().items(uR.object().custom(P4)).required()});vL.exports=function(e){return I4.validateBySchema(e,D4)}});var xL=C((LRe,UL)=>{"use strict";var fR=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")}};UL.exports=fR});var HL=C((vRe,BL)=>{"use strict";var _R=class{static{a(this,"DBIDefinition")}constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};BL.exports=_R});var $L={};Ue($L,{HAS_EXPIRATION:()=>Sp,HAS_RESIDENCY_ID:()=>SR,HAS_STRUCTURE_UPDATE:()=>Ap,LAST_TIMESTAMP_PLACEHOLDER:()=>Hf,LOCAL_TIMESTAMP:()=>L4,METADATA:()=>Nc,NEW_TIMESTAMP_PLACEHOLDER:()=>FL,NO_TIMESTAMP:()=>Ep,PENDING_LOCAL_TIME:()=>TR,PREVIOUS_TIMESTAMP_PLACEHOLDER:()=>gR,RecordEncoder:()=>ER,TIMESTAMP_ASSIGN_LAST:()=>v4,TIMESTAMP_ASSIGN_NEW:()=>GL,TIMESTAMP_ASSIGN_PREVIOUS:()=>qL,TIMESTAMP_PLACEHOLDER:()=>pp,TIMESTAMP_RECORD_PREVIOUS:()=>hR,handleLocalTimeForGets:()=>Rp,recordUpdater:()=>AR,removeEntry:()=>Ic});function x4(){return Bf[0]=Bf[0]^64,M4.getFloat64(0)}function Rp(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?.[Nc];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?.[Nc]>=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?.[Nc];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,Oc.push(new WeakRef(this))),c.call(this)},o.prototype.done=function(){if(l.call(this),this.isDone)for(let u=0;u<Oc.length;u++){let f=Oc[u].deref();(!f||f.isDone||f.isCommitted)&&Oc.splice(u--,1)}},o.prototype.done.isTracked=!0}return e}function AR(e,t,r){return function(n,s,i,o,c=-1,l,u,f="put",d,_){l==null?bc=Ep:d?bc=i?.localTime?hR|qL:Ep:bc=l?i?.localTime?hR|16384:GL|16384:Ep;let h=u?.expiresAt;if(h>=0&&(c|=Sp),xf=c,mR=h,i?.version===o&&l===!1)throw new Error("Must retain local time if version is not changed");let m={version:o,instructedWrite:bc>0},S,g=0;try{let R=i?.residencyId,E=u?.residencyId;E&&(pR=E,xf|=SR,g|=Cc),R!==E&&(g|=Pc,R||(R=0)),c&Sp&&(g|=Ff),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))&&oa(i.value);let T;if(s!==void 0&&(T=dp(()=>e.put(n,s,m),n,e.rootStore),Ac&&(g|=Ur)),l){let N=u?.user?.username;if(_&&(dp(()=>e.encoder.encode(_),n,e.rootStore),Ac&&(g|=Ur)),e.encoder.hasStructureUpdate&&(g|=Ap,e.encoder.hasStructureUpdate=!1),d&&i?.localTime){let M=i?.localTime,H=r.get(M);if(H){let X=St(H).previousLocalTime;return T=r.put(M,wc(o,t,n,X,u?.nodeId??server.replication.getThisNodeId(r)??0,N,f,Uf,g,E,R,h),{ifVersion:S}),T}}T=r.put(s===void 0?FL:Hf,wc(o,t,n,i?.localTime?1:0,u?.nodeId??server.replication?.getThisNodeId(r)??0,N,f,Uf,g,E,R,h,u?.originatingOperation),{instructedWrite:!0,ifVersion:S})}return T}catch(R){throw R.message+=" id: "+n+" options: "+m,R}}}function Ic(e,t,r){if(t)return t.value&&t.metadataFlags&Ur&&!e.auditStore?.getBinaryFast(t.localTime)&&oa(t.value),e.remove(t.key,r)}var kL,gp,pp,Hf,gR,FL,L4,Nc,Bf,M4,Ep,GL,v4,qL,hR,Sp,SR,TR,Ap,U4,Uf,bc,xf,mR,pR,ER,Oc,lu=Re(()=>{kL=require("msgpackr");Ti();gp=v(ee());pn();pn();pp=new Uint8Array([1,1,1,1,4,64,0,0]),Hf=new Uint8Array([1,1,1,1,1,0,0,0]),gR=new Uint8Array([1,1,1,1,3,64,0,0]),FL=new Uint8Array([1,1,1,1,0,64,0,0]),L4=Symbol("local-timestamp"),Nc=Symbol("metadata"),Bf=new Uint8Array(8),M4=new DataView(Bf.buffer,0,8),Ep=0,GL=0,v4=1,qL=3,hR=4,Sp=16,SR=32,TR=1,Ap=256,bc=0,xf=-1,mR=-1,pR=0,ER=class extends kL.Encoder{static{a(this,"RecordEncoder")}constructor(t){t.useBigIntExtension=!0,super(t);let r=this.encode;this.encode=function(s,i){if(bc||xf>=0){let o=0,c=bc;c&&(o+=8,bc=0);let l=xf,u=mR,f=pR;l>=0&&(o+=4,xf=-1,u>=0&&(o+=8,mR=-1),f&&(o+=4,pR=0));let d=U4=r.call(this,s,i|2048|o);Uf=d.subarray((d.start||0)+o,d.end);let _=d.start||0;return c&&(pp[4]=c,pp[5]=c>>8,d.set(pp,_),_+=8),Ac&&(l|=Ur),l>=0&&((d.dataView||(d.dataView=new DataView(d.buffer,d.byteOffset,d.byteLength))).setUint32(_,l|Tp<<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 Uf=r.call(this,s,i),Uf};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(Bf,0,c),c+=8;else for(let _=0;_<8;_++)Bf[_]=t[c++];l=x4(),i=t[c]}let u,f;i<32&&(i===Tp?(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&Sp&&(u=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getFloat64(c),c+=8),o&SR&&(f=(t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))).getUint32(c),c+=4));let d=ro(()=>r?.valueAsBuffer?t.subarray(c,s):super.decode(t.subarray(c,s),s-c),this.rootStore);return{localTime:l,value:d,[Nc]:o,expiresAt:u,residencyId:f}}return r?.valueAsBuffer?t:ro(()=>super.decode(t,r),this.rootStore)}catch(c){return gp.error("Error decoding record",c,"data: "+t.slice(0,40).toString("hex")),null}}};a(x4,"getTimestamp");a(Rp,"handleLocalTimeForGets");Oc=[];setInterval(()=>{for(let e=0;e<Oc.length;e++){let t=Oc[e].deref();!t||t.isDone||t.isCommitted?Oc.splice(e--,1):t.notCurrent&&(t.openTimer?(t.openTimer>3&&(t.openTimer>60?(gp.error("Read transaction detected that has been open too long (over 15 minutes), ending transaction",t),t.done()):gp.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(AR,"recordUpdater");a(Ic,"removeEntry")});var Gf=C((FRe,KL)=>{"use strict";var VL=le(),B4=(k(),P(q)),{RecordEncoder:H4}=(lu(),P($L));VL.initSync();var k4=VL.get(B4.CONFIG_PARAMS.STORAGE_CACHING)!==!1,RR=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=k4&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0,this.encoder={Encoder:H4})}};KL.exports=RR});var qf=C((qRe,YL)=>{"use strict";var kn=le(),_s=(k(),P(q));kn.initSync();var yp=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)}};YL.exports=yp;yp.MAX_DBS=1e4});var _t=C((VRe,rM)=>{"use strict";var bR=require("lmdb"),Fs=require("fs-extra"),Fn=require("path"),bp=un(),QL=ee(),gn=Un().LMDB_ERRORS_ENUM,Op=HL(),OR=Gf(),jL=qf(),la=Ft(),WL=(k(),P(q)),{table:F4,resetDatabases:G4}=(xe(),P(ct)),zL=le(),Gs=la.INTERNAL_DBIS_NAME,JL=la.DBI_DEFINITION_NAME,q4="data.mdb",$4="lock.mdb",$f=".mdb",V4="-lock",yR=class{static{a(this,"TransactionCursor")}constructor(t,r,n=!1){this.dbi=hs(t,r),this.key_type=this.dbi[la.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[la.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:n===!1}),this.cursor=new bR.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};function Np(e,t){if(e===void 0)throw new Error(gn.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(gn.ENV_NAME_REQUIRED)}a(Np,"pathEnvNameValidation");async function NR(e,t,r=!0){try{await Fs.access(e)}catch(n){throw n.code==="ENOENT"?new Error(gn.INVALID_BASE_PATH):n}try{let n=Fn.join(e,t+$f);return await Fs.access(n,Fs.constants.R_OK|Fs.constants.F_OK),n}catch(n){if(n.code==="ENOENT")if(r)try{return await Fs.access(Fn.join(e,t,q4),Fs.constants.R_OK|Fs.constants.F_OK),Fn.join(e,t)}catch(s){if(s.code==="ENOENT")throw new Error(gn.INVALID_ENVIRONMENT)}else throw new Error(gn.INVALID_ENVIRONMENT);throw n}}a(NR,"validateEnvironmentPath");function wp(e,t){if(bp.validateEnv(e),t===void 0)throw new Error(gn.DBI_NAME_REQUIRED)}a(wp,"validateEnvDBIName");async function K4(e,t,r=!1,n=!1){Np(e,t);let s=Fn.basename(e);t=t.toString();let i=zL.get(WL.CONFIG_PARAMS.DATABASES);i||zL.setProperty(WL.CONFIG_PARAMS.DATABASES,i={}),i[s]||(i[s]={}),i[s].path=e;try{return await NR(e,t,n),XL(e,t,r)}catch(o){if(o.message===gn.INVALID_ENVIRONMENT){let c=Fn.join(e,t);await Fs.mkdirp(n?c:e);let l=new jL(n?c:c+$f,!1),u=bR.open(l);u.dbis=Object.create(null);let f=new OR(!1);u.openDB(Gs,f),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let d=wR(e,t,r);return u[la.ENVIRONMENT_NAME_KEY]=d,global.lmdb_map[d]=u,u}throw o}}a(K4,"createEnvironment");async function Y4(e,t,r,n=!0){Np(e,t),t=t.toString();let s=Fn.join(e,t);return F4({table:t,database:Fn.parse(e).name,path:s,attributes:[{name:"id",isPrimaryKey:!0}]})}a(Y4,"copyEnvironment");async function XL(e,t,r=!1){Np(e,t),t=t.toString();let n=wR(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 NR(e,t),i=Fn.join(e,t+$f),o=s!=i,c=new jL(s,o),l=bR.open(c);l.dbis=Object.create(null);let u=eM(l);for(let f=0;f<u.length;f++)hs(l,u[f]);return l[la.ENVIRONMENT_NAME_KEY]=n,global.lmdb_map[n]=l,l}a(XL,"openEnvironment");async function W4(e,t,r=!1){Np(e,t),t=t.toString();let n=Fn.join(e,t+$f),s=await NR(e,t);if(global.lmdb_map!==void 0){let i=wR(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await ZL(o),delete global.lmdb_map[i]}}await Fs.remove(s),await Fs.remove(s===n?s+V4:Fn.join(Fn.dirname(s),$4))}a(W4,"deleteEnvironment");async function ZL(e){bp.validateEnv(e);let t=e[la.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(ZL,"closeEnvironment");function wR(e,t,r=!1){let s=`${Fn.basename(e)}.${t}`;return r===!0&&(s=`txn.${s}`),s}a(wR,"getCachedEnvironmentName");function z4(e){bp.validateEnv(e);let t=Object.create(null),r=hs(e,Gs);for(let{key:n,value:s}of r.getRange({start:!1}))if(n!==Gs)try{t[n]=Object.assign(new Op,s)}catch{QL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return t}a(z4,"listDBIDefinitions");function eM(e){bp.validateEnv(e);let t=[],r=hs(e,Gs);for(let{key:n}of r.getRange({start:!1}))n!==Gs&&t.push(n);return t}a(eM,"listDBIs");function Q4(e,t){let n=hs(e,Gs).getEntry(t),s=new Op;if(n!==void 0){try{s=Object.assign(s,n.value)}catch{QL.warn(`an internal error occurred: unable to parse DBI Definition for ${n}`)}return s}}a(Q4,"getDBIDefinition");function tM(e,t,r,n=!r){if(wp(e,t),t=t.toString(),t===Gs)throw new Error(gn.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return hs(e,t)}catch(s){if(s.message===gn.DBI_DOES_NOT_EXIST){let i=new OR(r,n===!0),o=e.openDB(t,i),c=new Op(r===!0,n);return o[JL]=c,hs(e,Gs).putSync(t,c),e.dbis[t]=o,o}throw s}}a(tM,"createDBI");function hs(e,t){if(wp(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Gs?r=Q4(e,t):r=new Op,r===void 0)throw new Error(gn.DBI_DOES_NOT_EXIST);let n;try{let s=new OR(r.dup_sort,r.useVersions);if(n=e.openDB(t,s),n.db===void 0)throw new Error("MDB_NOTFOUND")}catch(s){throw s.message.includes("MDB_NOTFOUND")===!0?new Error(gn.DBI_DOES_NOT_EXIST):s}return n[JL]=r,e.dbis[t]=n,n}a(hs,"openDBI");function j4(e,t){wp(e,t),t=t.toString();let r=hs(e,t),n=r.getStats();return r[la.DBI_DEFINITION_NAME].is_hash_attribute&&n.entryCount>0&&n.entryCount--,n}a(j4,"statDBI");async function J4(e,t){try{let r=Fn.join(e,t+$f);return(await Fs.stat(r)).size}catch{throw new Error(gn.INVALID_ENVIRONMENT)}}a(J4,"environmentDataSize");function X4(e,t){if(wp(e,t),t=t.toString(),t===Gs)throw new Error(gn.CANNOT_DROP_INTERNAL_DBIS_NAME);hs(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],hs(e,Gs).removeSync(t)}a(X4,"dropDBI");function Z4(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===gn.DBI_DOES_NOT_EXIST)tM(e,i,i!==t,i===t),n=!0;else throw o}}n&&G4()}a(Z4,"initializeDBIs");rM.exports={openDBI:hs,openEnvironment:XL,createEnvironment:K4,listDBIs:eM,listDBIDefinitions:z4,createDBI:tM,dropDBI:X4,statDBI:j4,deleteEnvironment:W4,initializeDBIs:Z4,TransactionCursor:yR,environmentDataSize:J4,copyEnvironment:Y4,closeEnvironment:ZL}});var sM=C((YRe,nM)=>{"use strict";var IR=class{static{a(this,"InsertRecordsResponseObject")}constructor(t=[],r=[],n=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=n}};nM.exports=IR});var oM=C((zRe,iM)=>{"use strict";var CR=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}};iM.exports=CR});var cM=C((jRe,aM)=>{"use strict";var PR=class{static{a(this,"UpsertRecordsResponseObject")}constructor(t=[],r=void 0,n=[]){this.written_hashes=t,this.txn_time=r,this.original_records=n}};aM.exports=PR});var Lc=C((tye,dM)=>{"use strict";var e3=_t(),t3=sM(),r3=oM(),n3=cM(),Oi=un(),Vf=Un().LMDB_ERRORS_ENUM,s3=Ft(),ao=(k(),P(q)),i3=ie(),o3=require("uuid"),XRe=require("lmdb"),{handleHDBError:a3,hdb_errors:c3}=he(),{OVERFLOW_MARKER:ZRe,MAX_SEARCH_KEY_LENGTH:eye}=s3,lM=le();lM.initSync();var Ip=lM.get(ao.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),DR=ao.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Dc=ao.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function l3(e,t,r,n,s=Oi.getNextMonotonicTime()){UR(e,t,r,n),LR(e,t,r);let i=new t3,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l];uM(u,!0,s);let f=u3(e,t,r,u),d=u[t];o.push(f),c.push(d)}return MR(o,c,n,i,s)}a(l3,"insertRecords");function u3(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][ao.FUNC_VAL],n[o]=c)}let l=Oi.getIndexedValues(c),u=e.dbis[o];if(l){Ip&&u.prefetch(l.map(f=>({key:f,value:s})),Cp);for(let f=0,d=l.length;f<d;f++)u.put(l[f],s)}}Ip&&e.dbis[t].prefetch([s],Cp),e.dbis[t].put(s,n,n[Dc])})}a(u3,"insertRecord");function d3(e,t=[]){let r=0;for(let n=0;n<t.length;n++){let s=t[n];e.splice(s-r,1),r++}}a(d3,"removeSkippedRecords");function uM(e,t,r){let n=r>0;(n||!Number.isInteger(e[Dc]))&&(e[Dc]=r||(r=Oi.getNextMonotonicTime())),t===!0?(n||!Number.isInteger(e[DR]))&&(e[DR]=r||Oi.getNextMonotonicTime()):delete e[DR]}a(uM,"setTimestamps");function LR(e,t,r){r.indexOf(ao.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(ao.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(ao.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(ao.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),e3.initializeDBIs(e,t,r)}a(LR,"initializeTransaction");async function f3(e,t,r,n,s=Oi.getNextMonotonicTime()){UR(e,t,r,n),LR(e,t,r);let i=new r3,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 MR(c,l,n,i,s,o)}a(f3,"updateRecords");async function _3(e,t,r,n,s=Oi.getNextMonotonicTime()){try{UR(e,t,r,n)}catch(l){throw a3(l,l.message,c3.HTTP_STATUS_CODES.BAD_REQUEST)}LR(e,t,r);let i=new n3,o=[],c=[];for(let l=0;l<n.length;l++){let u=n[l],f;i3.isEmpty(u[t])?(f=o3.v4(),u[t]=f):f=u[t];let d=vR(e,t,u,f,i,!1,s);o.push(d),c.push(f)}return MR(o,c,n,i,s)}a(_3,"upsertRecords");async function MR(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||Oi.getNextMonotonicTime(),d3(r,i),n}a(MR,"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(uM(r,!f,o),Number.isInteger(r[Dc])&&u[Dc]>r[Dc])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 R=u[m];if(typeof S=="function"){let T=S([[u]]);Array.isArray(T)&&(S=T[0][ao.FUNC_VAL],r[m]=S)}if(S===R)continue;let E=Oi.getIndexedValues(R);if(E){Ip&&g.prefetch(E.map(T=>({key:T,value:n})),Cp);for(let T=0,N=E.length;T<N;T++)g.remove(E[T],n)}if(E=Oi.getIndexedValues(S),E){Ip&&g.prefetch(E.map(T=>({key:T,value:n})),Cp);for(let T=0,N=E.length;T<N;T++)g.put(E[T],n)}}let h={...u,...r};c.put(n,h,h[Dc])},"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 h3(e,t,r){if(Oi.validateEnv(e),t===void 0)throw new Error(Vf.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Vf.WRITE_ATTRIBUTES_REQUIRED):new Error(Vf.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(h3,"validateBasic");function UR(e,t,r,n){if(h3(e,t,r),!Array.isArray(n))throw n===void 0?new Error(Vf.RECORDS_REQUIRED):new Error(Vf.RECORDS_MUST_BE_ARRAY)}a(UR,"validateWrite");function Cp(){}a(Cp,"noop");dM.exports={insertRecords:l3,updateRecords:f3,upsertRecords:_3}});var co=C((nye,m3)=>{m3.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 _M=C((sye,fM)=>{"use strict";var p3=require("uuid"),xR=class{static{a(this,"CreateAttributeObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.attribute=n,this.id=s||p3.v4(),this.schema_table=`${this.schema}.${this.table}`}};fM.exports=xR});var Pp=C((oye,hM)=>{"use strict";var E3=_M(),BR=class extends E3{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}};hM.exports=BR});var pM=C((cye,mM)=>{"use strict";mM.exports=S3;var g3="inserted";function S3(e,t,r,n){let s={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:n};return e===g3?(s.inserted_hashes=t,s):(s.update_hashes=t,s)}a(S3,"returnObject")});var Dp=C((dye,gM)=>{"use strict";var T3=(k(),P(q)),HR=_t(),A3=Lc(),{getSystemSchemaPath:R3,getSchemaPath:y3}=gt(),uye=co(),{validateBySchema:b3}=ot(),Kf=require("joi"),O3=Pp(),N3=pM(),{handleHDBError:w3,hdb_errors:I3,ClientError:C3}=he(),EM=ie(),{HTTP_STATUS_CODES:P3}=I3,D3="inserted";gM.exports=L3;async function L3(e){let t=b3(e,Kf.object({database:Kf.string(),schema:Kf.string(),table:Kf.string().required(),attribute:Kf.string().required()}));if(t)throw new C3(t.message);let r=!e.skip_table_check&&EM.checkGlobalSchemaTable(e.schema,e.table);if(r)throw w3(new Error,r,P3.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=EM.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 O3(e.schema,e.table,e.attribute,e.id);try{let i=await HR.openEnvironment(y3(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}`);HR.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await HR.openEnvironment(R3(),T3.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:c,skipped_hashes:l}=await A3.insertRecords(o,HDB_TABLE_INFO.hash_attribute,hdb_attribute_attributes,[s]);return N3(D3,c,{records:[s]},l)}catch(i){throw i}}a(L3,"lmdbCreateAttribute")});var Yf=C((hye,TM)=>{"use strict";var lo=ie(),SM=ee(),_ye=dR(),{getDatabases:M3}=(xe(),P(ct)),{ClientError:Mc}=he();TM.exports=v3;function v3(e){if(lo.isEmpty(e))throw new Mc("invalid update parameters defined.");if(lo.isEmptyOrZeroLength(e.schema))throw new Mc("invalid schema specified.");if(lo.isEmptyOrZeroLength(e.table))throw new Mc("invalid table specified.");if(!Array.isArray(e.records))throw new Mc("records must be an array");let t=M3()[e.schema]?.[e.table];if(lo.isEmpty(t))throw new Mc(`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&&lo.isEmptyOrZeroLength(o[r]))throw SM.error("a valid hash attribute must be provided with update record:",o),new Mc("a valid hash attribute must be provided with update record, check log for more info");if(!lo.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw SM.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Mc(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!lo.isEmpty(o[r])&&o[r]!==""&&n.has(lo.autoCast(o[r]))&&(o.skip=!0),n.add(lo.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(v3,"insertUpdateValidate")});var RM=C((pye,AM)=>{"use strict";var kR=class{static{a(this,"ITCEventObject")}constructor(t,r){this.type=t,this.message=r}};AM.exports=kR});var OM=C((gye,bM)=>{"use strict";var FR=_t(),U3=ee(),yM=Un().LMDB_ERRORS_ENUM;bM.exports=x3;async function x3(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 FR.closeEnvironment(global.lmdb_map[o])}catch(c){if(c.message!==yM.ENV_REQUIRED)throw c}}break;case"drop_table":let n=`${e.schema}.${e.table}`,s=`txn.${n}`;try{await FR.closeEnvironment(global.lmdb_map[n]),await FR.closeEnvironment(global.lmdb_map[s])}catch(i){if(i.message!==yM.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){U3.error(t)}}a(x3,"cleanLMDBMap")});var HM=C((Aye,BM)=>{"use strict";var GR=require("recursive-iterator"),B3=require("alasql"),qR=require("clone"),NM=ie(),{handleHDBError:wM,hdb_errors:H3}=he(),{HDB_ERROR_MSGS:IM,HTTP_STATUS_CODES:CM}=H3,{getDatabases:k3}=(xe(),P(ct)),F3=["DISTINCT_ARRAY"],PM=Symbol("validateTables"),$R=Symbol("validateTable"),Tye=Symbol("getAllColumns"),DM=Symbol("validateAllColumns"),Lp=Symbol("findColumn"),LM=Symbol("validateOrderBy"),Wf=Symbol("validateSegment"),VR=Symbol("validateColumn"),MM=Symbol("setColumnsForTable"),vM=Symbol("checkColumnsForAsterisk"),UM=Symbol("validateGroupBy"),xM=Symbol("hasColumns"),KR=class{static{a(this,"SelectValidator")}constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[PM](),this[vM](),this[DM]()}[PM](){if(this[xM]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[$R](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[$R](t.table)})}}[xM](){let t=!1,r=new GR(this.statement);for(let{node:n,path:s}of r)if(n&&n.columnid){t=!0;break}return t}[$R](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;let r=k3();if(!r[t.databaseid])throw wM(new Error,IM.SCHEMA_NOT_FOUND(t.databaseid),CM.NOT_FOUND);if(!r[t.databaseid][t.tableid])throw wM(new Error,IM.TABLE_NOT_FOUND(t.databaseid,t.tableid),CM.NOT_FOUND);r[t.databaseid][t.tableid].attributes.forEach(s=>{let i=qR(s);i.table=qR(t),this.attributes.push(i)})}[Lp](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)}[vM](){let t=new GR(this.statement.columns);for(let{node:r,path:n}of t)r&&r.columnid==="*"&&n.indexOf("expression")<0&&this[MM](r.tableid)}[MM](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&!r.relation&&this.statement.columns.push(new B3.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[DM](){this[Wf](this.statement.columns,!1),this[Wf](this.statement.joins,!1),this[Wf](this.statement.where,!1),this[UM](this.statement.group,!1),this[Wf](this.statement.order,!0)}[Wf](t,r){if(!t)return;let n=new GR(t),s=[];for(let{node:i,path:o}of n)!NM.isEmpty(i)&&!NM.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[LM](i):s.push(this[VR](i)));return s}[UM](t){if(!t)return;let r=[];if(this.statement.columns.forEach(n=>{if(!(n.funcid&&F3.indexOf(n.funcid.toUpperCase())>=0)){if(!n.aggregatorid&&!n.columnid){let s=qR(n);delete s.as,r.push(s)}else if(n.columnid){let s=this[Lp](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[Lp](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`}[LM](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[VR](t)}[VR](t){let r=this[Lp](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]}};BM.exports=KR});var qM=C((yye,GM)=>{"use strict";var kM=require("lodash"),zf=require("mathjs"),G3=require("jsonata"),FM=ie();GM.exports={distinct_array:a(e=>Array.isArray(e)&&e.length>1?kM.uniqWith(e,kM.isEqual):e,"distinct_array"),searchJSON:q3,mad:Qf.bind(null,zf.mad),mean:Qf.bind(null,zf.mean),mode:Qf.bind(null,zf.mode),prod:Qf.bind(null,zf.prod),median:Qf.bind(null,zf.median)};function Qf(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(Qf,"aggregateFunction");function q3(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(FM.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),FM.isEmpty(this.__ala__.res[r])){let n=G3(e);this.__ala__.res[r]=n}return this.__ala__.res[r].evaluate(t)}a(q3,"searchJSON")});var VM=C((Oye,$M)=>{"use strict";var er=require("moment"),YR="YYYY-MM-DDTHH:mm:ss.SSSZZ";er.suppressDeprecationWarnings=!0;$M.exports={current_date:a(()=>er().utc().format("YYYY-MM-DD"),"current_date"),current_time:a(()=>er().utc().format("HH:mm:ss.SSS"),"current_time"),extract:a((e,t)=>{switch(t.toLowerCase()){case"year":return er(e).utc().format("YYYY");case"month":return er(e).utc().format("MM");case"day":return er(e).utc().format("DD");case"hour":return er(e).utc().format("HH");case"minute":return er(e).utc().format("mm");case"second":return er(e).utc().format("ss");case"millisecond":return er(e).utc().format("SSS");default:break}},"extract"),date:a(e=>er(e).utc().format(YR),"date"),date_format:a((e,t)=>er(e).utc().format(t),"date_format"),date_add:a((e,t,r)=>er(e).utc().add(t,r).valueOf(),"date_add"),date_sub:a((e,t,r)=>er(e).utc().subtract(t,r).valueOf(),"date_sub"),date_diff:a((e,t,r)=>{let n=er(e).utc(),s=er(t).utc();return r?n.diff(s,r,!0):n.diff(s)},"date_diff"),now:a(()=>er().utc().valueOf(),"now"),get_server_time:a(()=>er().format(YR),"get_server_time"),offset_utc:a((e,t)=>er(e).utc().utcOffset(t).format(YR),"offset_utc")}});var zM=C((wye,WM)=>{"use strict";var $3=require("@turf/area"),V3=require("@turf/length"),K3=require("@turf/circle"),Y3=require("@turf/difference"),W3=require("@turf/distance"),z3=require("@turf/boolean-contains"),Q3=require("@turf/boolean-equal"),j3=require("@turf/boolean-disjoint"),J3=require("@turf/helpers"),KM=(k(),P(q)),Ke=ie(),uo=ee();WM.exports={geoArea:X3,geoLength:Z3,geoCircle:eX,geoDifference:tX,geoDistance:YM,geoNear:rX,geoContains:nX,geoEqual:sX,geoCrosses:iX,geoConvert:oX};function X3(e){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return $3.default(e)}catch(t){return uo.trace(t,e),NaN}}a(X3,"geoArea");function Z3(e,t){if(Ke.isEmpty(e))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return V3.default(e,{units:t||"kilometers"})}catch(r){return uo.trace(r,e),NaN}}a(Z3,"geoLength");function eX(e,t,r){if(Ke.isEmpty(e))return NaN;if(Ke.isEmpty(t))return NaN;typeof e=="string"&&(e=Ke.autoCastJSON(e));try{return K3.default(e,t,{units:r||"kilometers"})}catch(n){return uo.trace(n,e,t),NaN}}a(eX,"geoCircle");function tX(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 Y3(e,t)}catch(r){return uo.trace(r,e,t),NaN}}a(tX,"geoDifference");function YM(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 W3.default(e,t,{units:r||"kilometers"})}catch(n){return uo.trace(n,e,t),NaN}}a(YM,"geoDistance");function rX(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 YM(e,t,n)<=r}catch(s){return uo.trace(s,e,t),!1}}a(rX,"geoNear");function nX(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 z3.default(e,t)}catch(r){return uo.trace(r,e,t),!1}}a(nX,"geoContains");function sX(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 Q3.default(e,t)}catch(r){return uo.trace(r,e,t),!1}}a(sX,"geoEqual");function iX(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!j3.default(e,t)}catch(r){return uo.trace(r,e,t),!1}}a(iX,"geoCrosses");function oX(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(KM.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(KM.GEO_CONVERSION_ENUM).join(",")}`);return typeof e=="string"&&(e=Ke.autoCastJSON(e)),J3[t](e,r)}a(oX,"geoConvert")});var Mp=C((Cye,QM)=>{var vc=qM(),Gn=VM(),Ni=zM();QM.exports=e=>{e.aggr.mad=e.aggr.MAD=vc.mad,e.aggr.mean=e.aggr.MEAN=vc.mean,e.aggr.mode=e.aggr.MODE=vc.mode,e.aggr.prod=e.aggr.PROD=vc.prod,e.aggr.median=e.aggr.MEDIAN=vc.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=vc.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=vc.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=Gn.current_date,e.fn.current_time=e.fn.CURRENT_TIME=Gn.current_time,e.fn.extract=e.fn.EXTRACT=Gn.extract,e.fn.date=e.fn.DATE=Gn.date,e.fn.date_format=e.fn.DATE_FORMAT=Gn.date_format,e.fn.date_add=e.fn.DATE_ADD=Gn.date_add,e.fn.date_sub=e.fn.DATE_SUB=Gn.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=Gn.date_diff,e.fn.now=e.fn.NOW=Gn.now,e.fn.offset_utc=e.fn.OFFSET_UTC=Gn.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=Gn.get_server_time,e.fn.getdate=e.fn.GETDATE=Gn.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=Gn.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=Ni.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=Ni.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=Ni.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=Ni.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=Ni.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=Ni.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=Ni.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=Ni.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=Ni.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=Ni.geoNear}});var ZM=C((Pye,XM)=>{"use strict";var jf=require("lodash"),Sn=require("alasql");Sn.options.cache=!1;var aX=Mp(),jM=require("clone"),vp=require("recursive-iterator"),ke=ee(),Je=ie(),uu=qn(),cX=(k(),P(q)),{hdb_errors:lX}=he(),{getDatabases:JM}=(xe(),P(ct)),uX="IS NULL",qs="There was a problem performing this search. Please check the logs and try again.";aX(Sn);var WR=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(qs)}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(qs)}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(qs)}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(qs)}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(qs)}}_getColumns(){let t=new vp(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(jM(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=jf.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=JM()[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 vp(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 Sn.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 Sn.yy.LogicValue({value:i}):n instanceof Sn.yy.StringValue&&Je.autoCasterIsNumberCheck(i.toString())&&(r.right[s]=new Sn.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 vp(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(cX.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&&jf.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 Sn.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(jM(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(uX)>-1&&this.tables.forEach(s=>{let i={columnid:JM()[s.databaseid][s.tableid].primaryKey,tableid:s.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=jf.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 uu.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(qs)}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 uu.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(qs)}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 uu.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(qs)}else try{c.search_attribute=s.attribute,c.search_value="*";let f=await uu.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(qs)}}}_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 Sn.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 Sn.yy.Column;s.columnid=n.as,s.columnid_orig=n.as_orig,t.expression=s}else{t.initial_select_column=Object.assign(new Sn.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 Sn.yy.FuncValue:new Sn.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 Sn.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=jf.difference(m,[...h.keys].map(g=>g.toString()));for(let g=0,R=S.length;g<R;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 vp(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=jf.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(qs)}}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 uu.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 Sn.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(lX.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 uu.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(qs)}}return Object.values(Object.values(this.data)[0].__merged_data)}};XM.exports=WR});var Wr=C((Lye,ev)=>{"use strict";var dX=HM();ev.exports={searchByConditions:_X,searchByHash:hX,searchByValue:mX,search:pX};var zR=qn(),{transformReq:QR}=ie(),fX=ZM();async function _X(e){return QR(e),zR.searchByConditions(e)}a(_X,"searchByConditions");async function hX(e){QR(e),e.ids&&(e.hash_values=e.ids);let t=[];for await(let r of zR.searchByHash(e))r&&t.push(r);return t}a(hX,"searchByHash");async function mX(e){QR(e),e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc);let t=[];for await(let r of zR.searchByValue(e))t.push(r);return t}a(mX,"searchByValue");function pX(e,t){try{let r=new dX(e);r.validate(),new fX(r.statement,r.attributes).search().then(s=>{t(null,s)}).catch(s=>{t(s,null)})}catch(r){return t(r)}}a(pX,"search")});var fo=C((vye,sv)=>{"use strict";var Jf=require("crypto"),EX=le(),{CONFIG_PARAMS:gX}=(k(),P(q)),rv="aes-256-cbc",SX=32,TX=16,jR=64,nv=32,AX=jR+nv,tv=new Map;sv.exports={encrypt:RX,decrypt:yX,createNatsTableStreamName:bX};function RX(e){let t=Jf.randomBytes(SX),r=Jf.randomBytes(TX),n=Jf.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(RX,"encrypt");function yX(e){let t=e.substr(0,jR),r=e.substr(jR,nv),n=e.substr(AX,e.length),s=Buffer.from(r,"hex"),i=Buffer.from(n,"hex"),o=Jf.createDecipheriv(rv,Buffer.from(t,"hex"),s),c=o.update(i);return c=Buffer.concat([c,o.final()]),c.toString()}a(yX,"decrypt");function bX(e,t){let r=EX.get(gX.CLUSTERING_DATABASELEVEL)?e:`${e}.${t}`,n=tv.get(r);return n||(n=Jf.createHash("md5").update(r).digest("hex"),tv.set(r,n)),n}a(bX,"createNatsTableStreamName")});var _o=C((Bye,cv)=>{"use strict";var xye=Wr(),Xf=ee(),{validateBySchema:iv}=ot(),Uc=require("joi"),OX=fo(),Up=ie(),{handleHDBError:xp,hdb_errors:NX,ClientError:ov}=he(),{HDB_ERROR_MSGS:Bp,HTTP_STATUS_CODES:JR}=NX,av=le();av.initSync();var{getDatabases:XR}=(xe(),P(ct)),wX=require("fs-extra"),IX=(k(),P(q));cv.exports={describeAll:CX,describeTable:Hp,describeSchema:PX};async function CX(e={}){try{let t=Up.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=XR(),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 Hp({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 Hp({schema:d,table:h,exact_count:u},S)}m&&l.push(m)}catch(m){Xf.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 Xf.error("Got an error in describeAll"),Xf.error(t),xp(new Error,Bp.DESCRIBE_ALL_ERR)}}a(CX,"describeAll");async function Hp(e,t){Up.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=iv(e,Uc.object({database:Uc.string(),table:Uc.string().required(),exact_count:Uc.boolean().strict()}));if(i)throw new ov(i.message);let c=XR()[r];if(!c)throw xp(new Error,Bp.SCHEMA_NOT_FOUND(e.schema),JR.NOT_FOUND);let l=c[n];if(!l)throw xp(new Error,Bp.TABLE_NOT_FOUND(e.schema,e.table),JR.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 wX.stat(l.primaryStore.env.path)).size}catch(h){Xf.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")),av.get(IX.CONFIG_PARAMS.CLUSTERING_ENABLED)&&(_.clustering_stream_name=OX.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){Xf.warn(`unable to stat table dbi due to ${h}`)}return _}a(Hp,"descTable");async function PX(e){Up.transformReq(e);let t=iv(e,Uc.object({database:Uc.string(),exact_count:Uc.boolean().strict()}));if(t)throw new ov(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=XR()[n];if(!i)throw xp(new Error,Bp.SCHEMA_NOT_FOUND(e.schema),JR.NOT_FOUND);let o={};for(let c in i){let l;if(r&&r.tables[c]&&(l=r.tables[c]),Up.isEmpty(l)||l.describe){let u=await Hp({schema:e.schema,table:c,exact_count:e.exact_count},l?l.attribute_permissions:null);u&&(o[u.name]=u)}}return o}a(PX,"describeSchema")});var $s=C((Gye,_v)=>{var DX=co(),{callbackify:uv,promisify:LX}=require("util"),{getDatabases:dv}=(xe(),P(ct));_v.exports={setSchemaDataToGlobal:lv,getTableSchema:MX,getSystemSchema:vX,setSchemaDataToGlobalAsync:LX(lv)};var fv=_o(),kye=uv(fv.describeAll),Fye=uv(fv.describeTable);function lv(e){global.hdb_schema=dv(),e&&e()}a(lv,"setSchemaDataToGlobal");function MX(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(MX,"getTableSchema");function vX(){return DX}a(vX,"getSystemSchema")});var ey=C(($ye,pv)=>{var UX=ot(),ZR=require("joi"),{hdb_table:xX,hdb_database:hv}=bi(),mv={schema:hv,database:hv,table:xX},BX={date:ZR.date().iso().required()},HX={timestamp:ZR.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};pv.exports=function(e,t){let r=t==="timestamp"?{...mv,...HX}:{...mv,...BX},n=ZR.object(r);return UX.validateBySchema(e,n)}});var Sv=C((Vye,gv)=>{var kX=ot(),ty=require("joi"),{hdb_table:FX,hdb_database:Ev}=bi(),GX=ty.object({schema:Ev,database:Ev,table:FX,hash_values:ty.array().required(),ids:ty.array()});gv.exports=function(e){return kX.validateBySchema(e,GX)}});var iy=C((Kye,Tv)=>{"use strict";var ry=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}},ny=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}},sy=class{static{a(this,"DeleteResponseObject")}constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};Tv.exports={InsertObject:ry,NoSQLSeachObject:ny,DeleteResponseObject:sy}});var Hc=C((Wye,Ov)=>{"use strict";var Rv=ey(),qX=Sv(),xc=ie(),Av=require("moment"),yv=ee(),{promisify:$X,callbackify:VX}=require("util"),Bc=(k(),P(q)),KX=$s(),oy=$X(KX.getTableSchema),ay=qn(),{DeleteResponseObject:YX}=iy(),{handleHDBError:ua,hdb_errors:WX}=he(),{HDB_ERROR_MSGS:kp,HTTP_STATUS_CODES:da}=WX,zX="records successfully deleted",QX=VX(bv);Ov.exports={delete:QX,deleteRecord:bv,deleteFilesBefore:jX,deleteAuditLogsBefore:JX};async function jX(e){let t=Rv(e,"date");if(t)throw ua(t,t.message,da.BAD_REQUEST,void 0,void 0,!0);if(xc.transformReq(e),!Av(e.date,Av.ISO_8601).isValid())throw ua(new Error,kp.INVALID_DATE,da.BAD_REQUEST,Bc.LOG_LEVELS.ERROR,kp.INVALID_DATE,!0);let n=xc.checkSchemaTableExist(e.schema,e.table);if(n)throw ua(new Error,n,da.NOT_FOUND,Bc.LOG_LEVELS.ERROR,n,!0);let s=await ay.deleteRecordsBefore(e);if(await oy(e.schema,e.table),yv.info(`Finished deleting files before ${e.date}`),s&&s.message)return s.message}a(jX,"deleteFilesBefore");async function JX(e){let t=Rv(e,"timestamp");if(t)throw ua(t,t.message,da.BAD_REQUEST,void 0,void 0,!0);if(xc.transformReq(e),isNaN(e.timestamp))throw ua(new Error,kp.INVALID_VALUE("Timestamp"),da.BAD_REQUEST,Bc.LOG_LEVELS.ERROR,kp.INVALID_VALUE("Timestamp"),!0);let r=xc.checkSchemaTableExist(e.schema,e.table);if(r)throw ua(new Error,r,da.NOT_FOUND,Bc.LOG_LEVELS.ERROR,r,!0);let n=await ay.deleteAuditLogsBefore(e);return await oy(e.schema,e.table),yv.info(`Finished deleting audit logs before ${e.timestamp}`),n}a(JX,"deleteAuditLogsBefore");async function bv(e){e.ids&&(e.hash_values=e.ids);let t=qX(e);if(t)throw ua(t,t.message,da.BAD_REQUEST,void 0,void 0,!0);xc.transformReq(e);let r=xc.checkSchemaTableExist(e.schema,e.table);if(r)throw ua(new Error,r,da.NOT_FOUND,Bc.LOG_LEVELS.ERROR,r,!0);try{await oy(e.schema,e.table);let n=await ay.deleteRecords(e);return xc.isEmptyOrZeroLength(n.message)&&(n.message=`${n.deleted_hashes.length} of ${e.hash_values.length} ${zX}`),n}catch(n){if(n.message===Bc.SEARCH_NOT_FOUND_MESSAGE){let s=new YX;return s.message=Bc.SEARCH_NOT_FOUND_MESSAGE,s.skipped_hashes=e.hash_values.length,s.deleted_hashes=0,s}throw n}}a(bv,"deleteRecord")});var Fp={};Ue(Fp,{HASH_FUNCTION:()=>t_,hash:()=>uy,validate:()=>dy});function cy(e=e_){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return Array.from(Zf.randomBytes(e)).map(r=>t[r%t.length]).join("")}function uy(e,t=t_[wv?.toUpperCase()]??"sha256"){return ly[t](e)}function dy(e,t,r=t_[wv?.toUpperCase()]??"sha256"){return e?XX[r](e,t):!1}var Zf,du,Nv,wv,e_,Iv,t_,ly,XX,Gp=Re(()=>{Zf=v(require("node:crypto")),du=v(require("argon2")),Nv=v(le());k();wv=(0,Nv.get)(x.AUTHENTICATION_HASHFUNCTION)?.toLowerCase(),e_=16,Iv=9,t_=(n=>(n.MD5="md5",n.SHA256="sha256",n.ARGON2ID="argon2id",n))(t_||{});a(cy,"generateSalt");ly={md5:a((e,t=void 0)=>{t=t??cy(Iv);let r=Zf.createHash("md5").update(e+t).digest("hex");return t+r},"md5"),sha256:a((e,t=void 0)=>{t=t??cy(e_);let r=Zf.createHash("sha256").update(e+t).digest("hex");return t+r},"sha256"),argon2id:a(async e=>{let t=cy(e_),r=await du.hash(e,{type:du.argon2id,salt:Buffer.from(t)});return t+r},"argon2id")},XX={md5:a((e,t)=>{let r=e.slice(0,Iv);return e===ly.md5(t,r)},"md5"),sha256:a((e,t)=>{let r=e.slice(0,e_);return e===ly.sha256(t,r)},"sha256"),argon2id:a(async(e,t)=>await du.verify(e.slice(e_),t),"argon2id")};a(uy,"hash");a(dy,"validate")});var Pv=C((Jye,Cv)=>{var fy=ot(),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 ZX(e){return zr.password.presence=!0,zr.username.presence=!0,zr.role.presence=!0,zr.active.presence=!0,fy.validateObject(e,zr)}a(ZX,"addUserValidation");function e6(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,fy.validateObject(e,zr)}a(e6,"alterUserValidation");function t6(e){return zr.password.presence=!1,zr.username.presence=!0,zr.role.presence=!1,zr.active.presence=!1,fy.validateObject(e,zr)}a(t6,"dropUserValidation");Cv.exports={addUserValidation:ZX,alterUserValidation:e6,dropUserValidation:t6}});var Pt=C((ebe,Lv)=>{"use strict";var{platform:Zye}=require("os"),r6="nats-server.zip",_y="nats-server",n6=process.platform==="win32"?`${_y}.exe`:_y,s6=/^[^\s.,*>]+$/,Dv="__request__",i6=a(e=>`${e}.${Dv}`,"REQUEST_SUBJECT"),o6={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},a6={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},c6={HUB:"hub.pid",LEAF:"leaf.pid"},l6={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},u6={SUCCESS:"success",ERROR:"error"},d6={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},f6={TXN:"txn",MSGID:"msgid"},fu={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},_6={[fu.ERR]:1,[fu.WRN]:2,[fu.INF]:3,[fu.DBG]:4,[fu.TRC]:5},h6={debug:"-D",trace:"-DVV"};Lv.exports={NATS_SERVER_ZIP:r6,NATS_SERVER_NAME:_y,NATS_BINARY_NAME:n6,PID_FILES:c6,NATS_CONFIG_FILES:a6,SERVER_SUFFIX:l6,NATS_TERM_CONSTRAINTS_RX:s6,REQUEST_SUFFIX:Dv,UPDATE_REMOTE_RESPONSE_STATUSES:u6,CLUSTER_STATUS_STATUSES:d6,REQUEST_SUBJECT:i6,SUBJECT_PREFIXES:f6,MSG_HEADERS:o6,LOG_LEVELS:fu,LOG_LEVEL_FLAGS:h6,LOG_LEVEL_HIERARCHY:_6}});var hy=C(Mv=>{"use strict";var m6={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
  `)},p6="certificate.pem",E6="privateKey.pem",g6="caCertificate.pem",S6="natsCertificate.pem",T6="natsCaCertificate.pem",Rt={DEFAULT:"default","DEFAULT-CA":"default-ca",SERVER:"server",CA:"ca","OPERATIONS-API":"operations-api","OPERATIONS-CA":"operations-ca"},A6={tls_certificate:Rt.SERVER,tls_certificateAuthority:Rt.CA,customFunctions_tls_certificate:Rt.SERVER,customFunctions_tls_certificateAuthority:Rt.CA,operationsApi_tls_certificate:Rt["OPERATIONS-API"],operationsApi_tls_certificateAuthority:Rt["OPERATIONS-CA"]},R6={[Rt.SERVER]:2,[Rt.DEFAULT]:1},y6={[Rt["OPERATIONS-API"]]:3,[Rt.SERVER]:2,[Rt.DEFAULT]:1},b6={[Rt["OPERATIONS-API"]]:3,[Rt.SERVER]:2,[Rt.DEFAULT]:1},O6={[Rt["OPERATIONS-CA"]]:3,[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1},N6={[Rt["OPERATIONS-CA"]]:3,[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1},w6={[Rt.CA]:2,[Rt["DEFAULT-CA"]]:1};Object.assign(Mv,{CERTIFICATE_PEM_NAME:p6,PRIVATEKEY_PEM_NAME:E6,CA_PEM_NAME:g6,CERT_NAME:Rt,CERT_CONFIG_NAME_MAP:A6,CERT_PREFERENCE_APP:R6,CERT_PREFERENCE_OPS:y6,CERT_PREFERENCE_REP:b6,CA_CERT_PREFERENCE_REP:O6,CA_CERT_PREFERENCE_OPS:N6,CA_CERT_PREFERENCE_APP:w6,CERTIFICATE_VALUES:m6,NATS_CERTIFICATE_PEM_NAME:S6,NATS_CA_PEM_NAME:T6})});var py=C((sbe,kv)=>{"use strict";var Bv=require("fs-extra"),ge=require("joi"),I6=require("os"),{boolean:Ge,string:ht,number:tr,array:fa}=ge.types(),{totalmem:vv}=require("os"),kc=require("path"),C6=ee(),my=ie(),nbe=hy(),Uv=(k(),P(q)),P6=ot(),xv="log",D6="components",L6="Invalid logging.rotation.maxSize unit. Available units are G, M or K",M6="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",v6="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",U6="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",x6="rootPath config parameter is undefined",Tn=ge.alternatives([tr.min(0),ht]).optional().empty(null),qp=ge.alternatives([fa.items(ht,{host:ht.required(),port:Tn},{hostname:ht.required(),port:Tn}).empty(null),fa.items(ht)]),wi,Hv=!1;kv.exports={configValidator:B6,routesValidator:$6,route_constraints:qp};function B6(e,t=!1){if(Hv=t,wi=e.rootPath,my.isEmpty(wi))throw x6;let r=Ge.optional(),n=tr.min(0).max(1e3).empty(null).default(q6),s=ht.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(r_),i=ht.optional().empty(null),o=ht.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),c=ge.string().empty(null).default(r_),l=ge.custom(k6).empty(null).default(r_),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:Tn,routes:qp}).required()}).required(),leafNodes:ge.object({network:ge.object({port:Tn}).required()}).required(),network:ge.object({port:Tn}).required()}).required(),leafServer:ge.object({network:ge.object({port:Tn,routes:qp}).required(),streams:ge.object({maxAge:tr.min(120).allow(null).optional(),maxBytes:tr.min(1).allow(null).optional(),maxMsgs:tr.min(1).allow(null).optional(),path:c}).required()}).required(),logLevel:ge.valid("error","warn","info","debug","trace"),nodeName:o,republishMessages:Ge.optional(),databaseLevel:Ge.optional(),tls:ge.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:Ge.required(),verify:Ge.optional()}),user:ht.optional().empty(null)}).optional():d=ge.object({enabled:r,tls:ge.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:Ge.optional()})}).optional(),ge.object({authentication:ge.alternatives(ge.object({authorizeLocal:Ge,cacheTTL:tr.required(),cookie:ge.object({domains:fa.items(ht).optional(),expires:ht.optional()}),enableSessions:Ge,hashFunction:ht.valid("md5","sha256","argon2id").optional().empty(null)}),Ge).optional(),analytics:ge.object({aggregatePeriod:tr}),replication:ge.object({hostname:ge.alternatives(ht,tr).optional().empty(null),url:ht.optional().empty(null),port:Tn,securePort:Tn,routes:fa.optional().empty(null),databases:ge.alternatives(ht,fa),enableRootCAs:Ge.optional(),copyTablesToCatchUp:Ge.optional()}).optional(),componentsRoot:s.optional(),clustering:d,localStudio:ge.object({enabled:r}).required(),logging:ge.object({auditAuthEvents:ge.object({logFailed:Ge,logSuccessful:Ge}),file:Ge.required(),level:ge.valid("notify","fatal","error","warn","info","debug","trace"),rotation:ge.object({enabled:Ge.optional(),compress:Ge.optional(),interval:ht.custom(G6).optional().empty(null),maxSize:ht.custom(F6).optional().empty(null),path:ht.optional().empty(null).default(r_)}).required(),root:s,stdStreams:Ge.required(),auditLog:Ge.required()}).required(),operationsApi:ge.object({network:ge.object({cors:Ge.optional(),corsAccessList:fa.optional(),headersTimeout:tr.min(1).optional(),keepAliveTimeout:tr.min(1).optional(),port:Tn,domainSocket:ge.optional().empty("hdb/operations-server").default(r_),securePort:Tn,timeout:tr.min(1).optional()}).optional(),tls:ge.alternatives([ge.array().items(f),f])}).required(),rootPath:ht.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path").required(),mqtt:ge.object({network:ge.object({port:Tn,securePort:Tn,mtls:ge.alternatives([Ge.optional(),ge.object({user:ht.optional(),certificateAuthority:i,required:Ge.optional()})])}).required(),webSocket:Ge.optional(),requireAuthentication:Ge.optional()}),http:ge.object({compressionThreshold:tr.optional(),cors:Ge.optional(),corsAccessList:fa.optional(),headersTimeout:tr.min(1).optional(),port:Tn,securePort:Tn,maxHeaderSize:tr.optional(),mtls:ge.alternatives([Ge.optional(),ge.object({user:ht.optional(),certificateAuthority:i,required:Ge.optional()})]),threadRange:ge.alternatives([fa.optional(),ht.optional()])}).required(),threads:ge.alternatives(n.optional(),ge.object({count:n.optional(),debug:ge.alternatives(Ge.optional(),ge.object({startingPort:tr.min(1).optional(),host:ht.optional(),waitForDebugger:Ge.optional()})),maxHeapMemory:tr.min(0).optional()})),storage:ge.object({writeAsync:Ge.required(),overlappingSync:Ge.optional(),caching:Ge.optional(),compression:ge.alternatives([Ge.optional(),ge.object({dictionary:ht.optional(),threshold:tr.optional()})]),compactOnStart:Ge.optional(),compactOnStartKeepBackup:Ge.optional(),noReadAhead:Ge.optional(),path:l,prefetchWrites:Ge.optional(),maxFreeSpaceToLoad:tr.optional(),maxFreeSpaceToRetain:tr.optional()}).required(),ignoreScripts:Ge.optional(),tls:ge.alternatives([ge.array().items(f),f])}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}a(B6,"configValidator");function H6(e){return Hv||Bv.existsSync(e)?null:`Specified path ${e} does not exist.`}a(H6,"doesPathExist");function k6(e,t){ge.assert(e,ht.pattern(/^[\\\/]$|([\\\/a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=H6(e);if(r)return t.message(r)}a(k6,"validatePath");function F6(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(L6);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(v6):e}a(F6,"validateRotationMaxSize");function G6(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(M6);let n=e.slice(0,-1);return isNaN(parseInt(n))?t.message(U6):e}a(G6,"validateRotationInterval");function q6(e,t){let r=t.state.path.join("."),n=I6.cpus().length,s=n-1;s<=2&&(s=2);let i=process.constrainedMemory?.()||vv();return i=Math.round(Math.min(i,vv())/1e6),s=Math.max(Math.min(s,Math.round((i-750)/300)),1),C6.info(`Detected ${n} cores and ${i}MB on this machine, defaulting ${r} to ${s}`),s}a(q6,"setDefaultThreads");function r_(e,t){let r=t.state.path.join(".");if(!my.isEmpty(t.original)&&r!=="operationsApi.network.domainSocket")return t.original;if(my.isEmpty(wi))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"componentsRoot":return kc.join(wi,D6);case"logging.root":return kc.join(wi,xv);case"clustering.leafServer.streams.path":return kc.join(wi,"clustering","leaf");case"storage.path":let n=kc.join(wi,Uv.LEGACY_DATABASES_DIR_NAME);return Bv.existsSync(n)?n:kc.join(wi,Uv.DATABASES_DIR_NAME);case"logging.rotation.path":return kc.join(wi,xv);case"operationsApi.network.domainSocket":return r==null?null:kc.join(wi,"operations-server");default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(r_,"setDefaultRoot");function $6(e){let t=ge.object({routes:qp});return P6.validateBySchema({routes:e},t)}a($6,"routesValidator")});var Lt=C(jv=>{"use strict";var ms=(k(),P(q)),pr=ie(),rr=ee(),{configValidator:V6,routesValidator:Fv}=py(),Qr=require("fs-extra"),qv=require("yaml"),Vn=require("path"),K6=require("is-number"),$v=require("properties-reader"),Y6=require("lodash"),{handleHDBError:W6}=he(),{HTTP_STATUS_CODES:z6,HDB_ERROR_MSGS:_u}=Un(),{server:Q6}=(Mr(),P(Zl)),{PACKAGE_ROOT:Vv}=Et(),{DATABASES_PARAM_CONFIG:n_,CONFIG_PARAMS:$n,CONFIG_PARAM_MAP:Vs}=ms,j6="Unable to get config value because config is uninitialized",J6="Config successfully initialized",X6="Error backing up config file",Z6="Empty parameter sent to getConfigValue",Kv=Vn.join(Vv,"config","yaml",ms.HDB_DEFAULT_CONFIG_FILE),e8=Vn.join(Vv,"config","yaml","defaultNatsConfig.yaml"),t8="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",Gv={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"},$p,Dt,Vp;Object.assign(jv,{createConfigFile:r8,getDefaultConfig:n8,getConfigValue:Wv,initConfig:Kp,flattenConfig:hu,updateConfigValue:zv,updateConfigObject:i8,getConfiguration:c8,setConfiguration:l8,readConfigFile:Ty,getClusteringRoutes:u8,initOldConfig:Qv,getConfigFromFile:d8,getConfigFilePath:Fc,addConfig:f8,deleteConfigFromFile:_8,getConfigObj:h8,resolvePath:Ey,getFlatConfigObj:m8});function Ey(e){if(e?.startsWith("~/"))return Vn.join(pr.getHomeDir(),e.slice(1));let t=le();try{return Vn.resolve(t.getHdbBasePath(),e)}catch(r){return console.error("Unable to resolve path",e,r),e}}a(Ey,"resolvePath");function r8(e,t=!1){let r=_a(Kv);if(e.clustering_enabled||e.CLUSTERING_ENABLED||e.clustering){let c=qv.parseDocument(Qr.readFileSync(e8,"utf8"),{simpleKeys:!0});r.addIn(["clustering"],c.toJSON().clustering)}$p=hu(r.toJSON());let n;for(let c in e){let l=Vs[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=gy(l,e[c]);l==="rootPath"&&f?.endsWith("/")&&(f=f.slice(0,-1));try{r.setIn([...u],f)}catch(d){rr.error(d)}}}n&&Yv(r,n),Sy(r,t);let s=r.toJSON();Dt=hu(s);let i=r.getIn(["rootPath"]),o=Vn.join(i,ms.HDB_CONFIG_FILE);if(Qr.createFileSync(o),r.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${r.errors}`);Qr.writeFileSync(o,String(r)),rr.trace(`Config file written to ${o}`)}a(r8,"createConfigFile");function Yv(e,t){let r;try{try{r=JSON.parse(t)}catch(n){if(!pr.isObject(t))throw n;r=t}for(let n of r){let s=Object.keys(n)[0];if(n[s].hasOwnProperty(n_.TABLES))for(let i in n[s][n_.TABLES])for(let o in n[s][n_.TABLES][i]){let c=n[s][n_.TABLES][i][o],l=[$n.DATABASES,s,n_.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){rr.error("Error parsing schemas CLI/env config arguments",n)}}a(Yv,"setSchemasConfig");function n8(e){if($p===void 0){let r=_a(Kv);$p=hu(r.toJSON())}let t=Vs[e.toLowerCase()];if(t!==void 0)return $p[t.toLowerCase()]}a(n8,"getDefaultConfig");function Wv(e){if(e==null){rr.info(Z6);return}if(Dt===void 0){rr.trace(j6);return}let t=Vs[e.toLowerCase()];if(t!==void 0)return Dt[t.toLowerCase()]}a(Wv,"getConfigValue");function Fc(e=pr.getPropsFilePath()){let t=pr.getEnvCliRootPath();if(t)return Ey(Vn.join(t,ms.HDB_CONFIG_FILE));let r=$v(e);return Ey(r.get(ms.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY))}a(Fc,"getConfigFilePath");function Kp(e=!1){if(Dt===void 0||e){let t;if(!pr.noBootFile()){t=pr.getPropsFilePath();try{Qr.accessSync(t,Qr.constants.F_OK|Qr.constants.R_OK)}catch(i){throw rr.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}}let r=Fc(t),n;if(r.includes("config/settings.js"))try{Qv(r);return}catch(i){if(i.code!==ms.NODE_ERROR_CODES.ENOENT)throw i}try{n=_a(r)}catch(i){if(i.code===ms.NODE_ERROR_CODES.ENOENT){rr.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 rr.error(i),new Error(`Error reading HarperDB config file at ${r}`)}s8(n,r),Sy(n);let s=n.toJSON();if(Q6.config=s,Dt=hu(s),Dt.logging_rotation_rotate)for(let i in Gv)Dt[i]&&rr.error(`Config ${Gv[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);rr.trace(J6)}}a(Kp,"initConfig");function s8(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(rr.trace("Updating config file with missing config params"),e.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${e.errors}`);Qr.writeFileSync(t,String(e))}}a(s8,"checkForUpdatedConfig");function Sy(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 _u.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 _u.CONFIG_VALIDATION("operationsApi.network.port and operationsApi.network.securePort cannot be the same value");let n=V6(r,t);if(n.error)throw _u.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(Sy,"validateConfig");function i8(e,t){Dt===void 0&&(Dt={});let r=Vs[e.toLowerCase()];if(r===void 0){rr.trace(`Unable to update config object because config param '${e}' does not exist`);return}Dt[r.toLowerCase()]=t}a(i8,"updateConfigObject");function zv(e,t,r=void 0,n=!1,s=!1,i=!1){Dt===void 0&&Kp();let o=Wv(Vs.hdb_root),c=Vn.join(o,ms.HDB_CONFIG_FILE),l=_a(c),u;if(r&&Dt){let _=!1;for(let h in r)if(r[h]!=Dt[h.toLowerCase()]){_=!0;break}if(!_){rr.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(_=Vs[e.toLowerCase()],_===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let h=_.split("_"),m=gy(_,t);l.setIn([...h],m)}else for(let _ in r){let h=Vs[_.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=ms.LEGACY_CONFIG_PARAMS[_.toUpperCase()];S&&S.startsWith("customFunctions")&&l.hasIn(S.split("_"))&&(h=S,m=S.split("_"));let g=gy(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(R){rr.error(R)}}}u&&Yv(l,u),Sy(l);let f=l.getIn(["rootPath"]),d=Vn.join(f,ms.HDB_CONFIG_FILE);if(n===!0&&o8(c,f),l.errors?.length>0)throw new Error(`Error parsing harperdb-config.yaml ${l.errors}`);Qr.writeFileSync(d,String(l)),s&&(Dt=hu(l.toJSON())),rr.trace(`Config parameter: ${e} updated with value: ${t}`)}a(zv,"updateConfigValue");function o8(e,t){try{let r=Vn.join(t,"backup",`${new Date(Date.now()).toISOString().replaceAll(":","-")}-${ms.HDB_CONFIG_FILE}.bak`);Qr.copySync(e,r),rr.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){rr.error(X6),rr.error(r)}}a(o8,"backupConfigFile");var a8=["databases"];function hu(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}),Vp=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])&&!a8.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()]&&Vs[l]&&(s[Vs[l].toLowerCase()]=o[c]),s[l]=o[c]}}n[i]!==void 0&&(s[i.toLowerCase()]=n[i])}return s}a(r,"squashObj")}a(hu,"flattenConfig");function gy(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(K6(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||pr.isObject(t)||t===null)return t;if(typeof t=="string"&&t.toLowerCase()==="true")return!0;if(typeof t=="string"&&t.toLowerCase()==="false")return!1}if(t===void 0||t.toLowerCase()==="undefined")return null;if(typeof t=="string"&&(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")))try{return JSON.parse(t)}catch{}return pr.autoCast(t)}a(gy,"castConfigValue");function c8(){let e=pr.getPropsFilePath(),t=Fc(e);return _a(t).toJSON()}a(c8,"getConfiguration");async function l8(e){let{operation:t,hdb_user:r,hdb_auth_header:n,...s}=e;try{return zv(void 0,void 0,s,!0),t8}catch(i){throw typeof i=="string"||i instanceof String?W6(i,i,z6.BAD_REQUEST,void 0,void 0,!0):i}}a(l8,"setConfiguration");function Ty(){let e=pr.getPropsFilePath();try{Qr.accessSync(e,Qr.constants.F_OK|Qr.constants.R_OK)}catch(n){if(!pr.noBootFile())throw rr.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=Fc(e);return _a(t).toJSON()}a(Ty,"readConfigFile");function _a(e){return qv.parseDocument(Qr.readFileSync(e,"utf8"),{simpleKeys:!0})}a(_a,"parseYamlDoc");function u8(){let e=Ty(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=pr.isEmptyOrZeroLength(t)?[]:t;let r=Fv(t);if(r)throw _u.CONFIG_VALIDATION(r.message);let n=e?.clustering?.leafServer?.network?.routes;n=pr.isEmptyOrZeroLength(n)?[]:n;let s=Fv(n);if(s)throw _u.CONFIG_VALIDATION(s.message);if(!pr.isEmptyOrZeroLength(n)&&!pr.isEmptyOrZeroLength(t)){let i=t.filter(o=>n.some(c=>c.host===o.host&&c.port===o.port));if(!pr.isEmptyOrZeroLength(i)){let o=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw _u.CONFIG_VALIDATION(o)}}return{hub_routes:t,leaf_routes:n}}a(u8,"getClusteringRoutes");function Qv(e){let t=$v(e);Dt={};for(let r in Vs){let n=t.get(r.toUpperCase());if(pr.isEmpty(n)||typeof n=="string"&&n.trim().length===0)continue;let s=Vs[r].toLowerCase();s===$n.LOGGING_ROOT?Dt[s]=Vn.dirname(n):Dt[s]=n}return Dt}a(Qv,"initOldConfig");function d8(e){let t=Ty();return Y6.get(t,e.replaceAll("_","."))}a(d8,"getConfigFromFile");async function f8(e,t){let r=_a(Fc());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 Qr.writeFile(Fc(),String(r))}a(f8,"addConfig");function _8(e){let t=Fc(pr.getPropsFilePath()),r=_a(t);r.deleteIn(e);let n=r.getIn(["rootPath"]),s=Vn.join(n,ms.HDB_CONFIG_FILE);Qr.writeFileSync(s,String(r))}a(_8,"deleteConfigFromFile");function h8(){return Vp||(Kp(),Vp)}a(h8,"getConfigObj");function m8(){return Dt||Kp(),Dt}a(m8,"getFlatConfigObj")});var Kn=C((cbe,Nr)=>{"use strict";var Zv="username is required",eU="nothing to update, must supply active, role or password to update",tU="password cannot be an empty string",rU="If role is specified, it cannot be empty.",nU="active must be true or false";Nr.exports.addUser=b8;Nr.exports.alterUser=O8;Nr.exports.dropUser=w8;Nr.exports.getSuperUser=L8;Nr.exports.userInfo=I8;Nr.exports.listUsers=Wp;Nr.exports.listUsersExternal=C8;Nr.exports.setUsersWithRolesCache=Gc;Nr.exports.findAndValidateUser=Cy;Nr.exports.getClusterUser=M8;Nr.exports.getUsersWithRolesCache=D8;Nr.exports.USERNAME_REQUIRED=Zv;Nr.exports.ALTERUSER_NOTHING_TO_UPDATE=eU;Nr.exports.EMPTY_PASSWORD=tU;Nr.exports.EMPTY_ROLE=rU;Nr.exports.ACTIVE_BOOLEAN=nU;var sU=An(),p8=Hc(),s_=(Gp(),P(Fp)),iU=Pv(),i_=Wr(),Oy=mo(),Ii=ie(),oU=require("validate.js"),Ny=ee(),{promisify:E8}=require("util"),wy=fo(),Ry=(k(),P(q)),Jv=Pt(),g8=Lt(),S8=le(),T8=co(),{hdb_errors:A8,ClientError:Ks}=he(),{HTTP_STATUS_CODES:ho,AUTHENTICATION_ERROR_MSGS:Ay,HDB_ERROR_MSGS:mu}=A8,{UserEventMsg:Iy}=Ys(),yy=require("lodash"),{server:Yp}=(Mr(),P(Zl)),R8=ee();Yp.getUser=(e,t)=>Cy(e,t,t!=null);Yp.authenticateUser=(e,t)=>Cy(e,t);var aU={username:!0,active:!0,role:!0,password:!0},Xv=new Map,y8=E8(p8.delete),by=S8.get(Ry.CONFIG_PARAMS.AUTHENTICATION_HASHFUNCTION)??s_.HASH_FUNCTION.SHA256,Ci;async function b8(e){let t=oU.cleanAttributes(e,aU),r=iU.addUserValidation(t);if(r)throw new Ks(r.message);let n=await i_.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 Ks(mu.ROLE_NAME_NOT_FOUND(t.role),ho.NOT_FOUND);if(n.length>1)throw new Ks(mu.DUP_ROLES_FOUND(t.role),ho.CONFLICT);n[0].permission.cluster_user===!0&&(t.hash=wy.encrypt(t.password)),t.password=await s_.hash(t.password,by),t.hash_function=by,t.role=n[0].id;let s=await sU.insert({operation:"insert",schema:"system",table:"hdb_user",records:[t]});if(Ny.debug(s),await Gc(),s.skipped_hashes.length===1)throw new Ks(mu.USER_ALREADY_EXISTS(t.username),ho.CONFLICT);return Oy.signalUserChange(new Iy(process.pid)),`${t.username} successfully added`}a(b8,"addUser");async function O8(e){let t=oU.cleanAttributes(e,aU);if(Ii.isEmptyOrZeroLength(t.username))throw new Error(Zv);if(Ii.isEmptyOrZeroLength(t.password)&&Ii.isEmptyOrZeroLength(t.role)&&Ii.isEmptyOrZeroLength(t.active))throw new Error(eU);if(!Ii.isEmpty(t.password)&&Ii.isEmptyOrZeroLength(t.password.trim()))throw new Error(tU);if(!Ii.isEmpty(t.active)&&!Ii.isBoolean(t.active))throw new Error(nU);if(!Ii.isEmpty(t.password)&&!Ii.isEmptyOrZeroLength(t.password.trim())&&(N8(t.username)&&(t.hash=wy.encrypt(t.password)),t.password=await s_.hash(t.password,by)),t.role==="")throw new Error(rU);if(t.role){let n=await i_.searchByValue({schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]});if(!n||n.length===0)throw new Ks(mu.ALTER_USER_ROLE_NOT_FOUND(t.role),ho.NOT_FOUND);if(n.length>1)throw new Ks(mu.DUP_ROLES_FOUND(t.role),ho.CONFLICT);t.role=n[0].id}let r=await sU.update({operation:"update",schema:"system",table:"hdb_user",records:[t]});return await Gc(),Oy.signalUserChange(new Iy(process.pid)),r}a(O8,"alterUser");function N8(e){let t=!1,r=Ci.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}a(N8,"isClusterUser");async function w8(e){let t=iU.dropUserValidation(e);if(t)throw new Ks(t.message);if(Ci.get(e.username)===void 0)throw new Ks(mu.USER_NOT_EXIST(e.username),ho.NOT_FOUND);let r=await y8({table:"hdb_user",schema:"system",hash_values:[e.username]});return Ny.debug(r),await Gc(),Oy.signalUserChange(new Iy(process.pid)),`${e.username} successfully deleted`}a(w8,"dropUser");async function I8(e){let t={};if(!e||!e.hdb_user)return"There was no user info in the body";t=yy.cloneDeep(e.hdb_user);let r=await i_.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(I8,"userInfo");async function C8(){let e=await Wp();return e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token,delete t.hash_function}),[...e.values()]}a(C8,"listUsersExternal");async function Wp(){let e=await i_.searchByValue({schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]}),t={};for(let s of e)t[s.id]=yy.cloneDeep(s);if(Object.keys(t).length===0)return null;let r=await i_.searchByValue({schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]}),n=new Map;for(let s of r)s=yy.cloneDeep(s),s.role=t[s.role],P8(s.role),n.set(s.username,s);return n}a(Wp,"listUsers");function P8(e){if(!e){Ny.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(T8)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}a(P8,"appendSystemTablesToRole");async function Gc(e=void 0){e?Ci=e:Ci=await Wp()}a(Gc,"setUsersWithRolesCache");async function D8(){return Ci||await Gc(),Ci}a(D8,"getUsersWithRolesCache");async function Cy(e,t,r=!0){Ci||await Gc();let n=Ci.get(e);if(!n){if(!r)return{username:e};throw new Ks(Ay.GENERIC_AUTH_FAIL,ho.UNAUTHORIZED)}if(n&&!n.active)throw new Ks(Ay.USER_INACTIVE,ho.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(Xv.get(t)===n.password)return s;{let i=s_.validate(n.password,t,n.hash_function||s_.HASH_FUNCTION.MD5);if(i?.then&&(i=await i),i===!0)Xv.set(t,n.password);else throw new Ks(Ay.GENERIC_AUTH_FAIL,ho.UNAUTHORIZED)}}return s}a(Cy,"findAndValidateUser");async function L8(){Ci||await Gc();for(let[,e]of Ci)if(e.role.role==="super_user")return e}a(L8,"getSuperUser");async function M8(){let e=await Wp(),t=g8.getConfigFromFile(Ry.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!(r==null||r?.role?.role!==Ry.ROLE_TYPES_ENUM.CLUSTER_USER))return r.decrypt_hash=wy.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+Jv.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+Jv.SERVER_SUFFIX.ADMIN,r}a(M8,"getClusterUser");var cU=[];Yp.invalidateUser=function(e){for(let t of cU)try{t(e)}catch(r){R8.error("Error invalidating user",r)}};Yp.onInvalidatedUser=function(e){cU.push(e)}});var a_=C((fbe,fU)=>{"use strict";var qc=ee(),Yn=(k(),P(q)),v8=OM(),ube=$s(),dbe=_o(),U8=Kn(),{validateEvent:lU}=Ys(),o_=qn(),x8=require("process"),{resetDatabases:B8}=(xe(),P(ct)),H8={[Yn.ITC_EVENT_TYPES.SCHEMA]:k8,[Yn.ITC_EVENT_TYPES.USER]:dU};async function k8(e){let t=lU(e);if(t){qc.error(t);return}qc.trace("ITC schemaHandler received schema event:",e),await v8(e.message),await F8(e.message)}a(k8,"schemaHandler");async function F8(e){try{o_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),o_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),o_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);let t=B8();e.table&&e.database&&await t[e.database][e.table].put(Symbol.for("write-verify"),null)}catch(t){qc.error(t)}}a(F8,"syncSchemaMetadata");var uU=[];async function dU(e){try{try{o_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),o_.resetReadTxn(Yn.SYSTEM_SCHEMA_NAME,Yn.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME)}catch(r){qc.warn(r)}let t=lU(e);if(t){qc.error(t);return}qc.trace(`ITC userHandler ${Yn.HDB_ITC_CLIENT_PREFIX}${x8.pid} received user event:`,e),await U8.setUsersWithRolesCache();for(let r of uU)r()}catch(t){qc.error(t)}}a(dU,"userHandler");dU.addListener=function(e){uU.push(e)};fU.exports=H8});var Ys=C((gbe,hU)=>{"use strict";var hbe=ee(),Py=ie(),G8=(k(),P(q)),{ITC_ERRORS:c_}=Un(),{parentPort:mbe,threadId:q8,isMainThread:$8,workerData:pbe}=require("worker_threads"),{onMessageFromWorkers:V8,broadcast:Ebe,broadcastWithAcknowledgement:K8}=it();hU.exports={sendItcEvent:Y8,validateEvent:_U,SchemaEventMsg:W8,UserEventMsg:z8};var zp;V8(async(e,t)=>{zp=zp||a_(),_U(e),zp[e.type]&&await zp[e.type](e),e.requestId&&t&&t.postMessage({type:"ack",id:e.requestId})});function Y8(e){return!$8&&e.message&&(e.message.originator=q8),K8(e)}a(Y8,"sendItcEvent");function _U(e){if(typeof e!="object")return c_.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||Py.isEmpty(e.type))return c_.MISSING_TYPE;if(!e.hasOwnProperty("message")||Py.isEmpty(e.message))return c_.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||Py.isEmpty(e.message.originator))return c_.MISSING_ORIGIN;if(G8.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return c_.INVALID_EVENT(e.type)}a(_U,"validateEvent");function W8(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(W8,"SchemaEventMsg");function z8(e){this.originator=e}a(z8,"UserEventMsg")});var mo=C((Abe,gU)=>{"use strict";var mU=(k(),P(q)),Tbe=ie(),Qp=ee(),pU=RM(),pu,{sendItcEvent:EU}=Ys();function Q8(e){try{Qp.info("signalSchemaChange called with message:",e),pu=pu||a_();let t=new pU(mU.ITC_EVENT_TYPES.SCHEMA,e);return pu.schema(t),EU(t)}catch(t){Qp.error(t)}}a(Q8,"signalSchemaChange");function j8(e){try{Qp.trace("signalUserChange called with message:",e),pu=pu||a_();let t=new pU(mU.ITC_EVENT_TYPES.USER,e);return pu.user(t),EU(t)}catch(t){Qp.error(t)}}a(j8,"signalUserChange");gU.exports={signalSchemaChange:Q8,signalUserChange:j8}});var jp=C((ybe,TU)=>{"use strict";var SU=ie(),J8=(k(),P(q)),X8=ee(),Z8=Dp(),eZ=Pp(),tZ=mo(),{SchemaEventMsg:rZ}=Ys(),nZ="already exists in";TU.exports=sZ;async function sZ(e,t,r){if(SU.isEmptyOrZeroLength(r))return r;let n=[];SU.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 iZ(e,t.schema,t.name,i)})),s}a(sZ,"lmdbCheckForNewAttributes");async function iZ(e,t,r,n){let s=new eZ(t,r,n,void 0,!0);e&&(s.hdb_auth_header=e);try{await oZ(s)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(nZ))X8.warn(`attribute ${t}.${r}.${n} already exists`);else throw i}}a(iZ,"createNewAttribute");async function oZ(e){let t;return t=await Z8(e),tZ.signalSchemaChange(new rZ(process.pid,J8.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(oZ,"createAttribute")});var Eu=C((Obe,AU)=>{"use strict";var Dy=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}};AU.exports=Dy});var yU=C((wbe,RU)=>{"use strict";var aZ=Eu(),cZ=(k(),P(q)).OPERATIONS_ENUM,Ly=class extends aZ{static{a(this,"LMDBInsertTransactionObject")}constructor(t,r,n,s,i=void 0){super(cZ.INSERT,r,n,s,i),this.records=t}};RU.exports=Ly});var OU=C((Cbe,bU)=>{"use strict";var lZ=Eu(),uZ=(k(),P(q)).OPERATIONS_ENUM,My=class extends lZ{static{a(this,"LMDBUpdateTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(uZ.UPDATE,n,s,i,o),this.records=t,this.original_records=r}};bU.exports=My});var wU=C((Dbe,NU)=>{"use strict";var dZ=Eu(),fZ=(k(),P(q)).OPERATIONS_ENUM,vy=class extends dZ{static{a(this,"LMDBUpsertTransactionObject")}constructor(t,r,n,s,i,o=void 0){super(fZ.UPSERT,n,s,i,o),this.records=t,this.original_records=r}};NU.exports=vy});var CU=C((Mbe,IU)=>{"use strict";var _Z=Eu(),hZ=(k(),P(q)).OPERATIONS_ENUM,Uy=class extends _Z{static{a(this,"LMDBDeleteTransactionObject")}constructor(t,r,n,s,i=void 0){super(hZ.DELETE,n,s,t,i),this.original_records=r}};IU.exports=Uy});var l_=C((xbe,MU)=>{"use strict";var Ube=require("path"),PU=_t(),mZ=yU(),pZ=OU(),EZ=wU(),gZ=CU(),gu=Ft(),DU=ie(),{CONFIG_PARAMS:SZ}=(k(),P(q)),LU=le();LU.initSync();var Jp=(k(),P(q)).OPERATIONS_ENUM,{getTransactionAuditStorePath:TZ}=gt();MU.exports=AZ;async function AZ(e,t){if(LU.get(SZ.LOGGING_AUDITLOG)===!1)return;let r=TZ(e.schema,e.table),n=await PU.openEnvironment(r,e.table,!0),s=RZ(e,t);if(!(s===void 0||s.hash_values.length===0)&&n!==void 0){PU.initializeDBIs(n,gu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,gu.TRANSACTIONS_DBIS);let i=s.timestamp;return await n.dbis[gu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{n.dbis[gu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,s),DU.isEmpty(s.user_name)||n.dbis[gu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(s.user_name,i);for(let o=0;o<s.hash_values.length;o++)n.dbis[gu.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(s.hash_values[o],i)})}}a(AZ,"writeTransaction");function RZ(e,t){let r=DU.isEmpty(e.hdb_user)?void 0:e.hdb_user?.username;if(e.operation===Jp.INSERT)return new mZ(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Jp.UPDATE)return new pZ(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Jp.UPSERT)return new EZ(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===Jp.DELETE)return new gZ(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(RZ,"createTransactionObject")});var xy=C((kbe,vU)=>{"use strict";var yZ=Yf(),Hbe=gf(),u_=(k(),P(q)),bZ=Sf(),OZ=Lc().insertRecords,NZ=_t(),wZ=ee(),IZ=jp(),{getSchemaPath:CZ}=gt(),PZ=l_();vU.exports=DZ;async function DZ(e){try{let{schema_table:t,attributes:r}=yZ(e);bZ(e,r,t.hash_attribute),e.schema!==u_.SYSTEM_SCHEMA_NAME&&(r.includes(u_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(u_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(u_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(u_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await IZ(e.hdb_auth_header,t,r),s=CZ(e.schema,e.table),i=await NZ.openEnvironment(s,e.table),o=await OZ(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await PZ(e,o)}catch(c){wZ.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(DZ,"lmdbCreateRecords")});var BU=C((Gbe,xU)=>{"use strict";var UU=(k(),P(q)),LZ=xy(),MZ=gf(),vZ=require("fs-extra"),{getSchemaPath:UZ}=gt();xU.exports=xZ;async function xZ(e){let t=[{name:e.schema,createddate:Date.now()}],r=new MZ(UU.SYSTEM_SCHEMA_NAME,UU.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await LZ(r),await vZ.mkdirp(UZ(e.schema))}a(xZ,"lmdbCreateSchema")});var kU=C(($be,HU)=>{"use strict";var By=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}};HU.exports=By});var $U=C((zbe,qU)=>{"use strict";var FU=_t(),Hy=un(),ky=Un().LMDB_ERRORS_ENUM,BZ=Ft(),GU=ee(),Kbe=ie(),HZ=require("lmdb"),kZ=kU(),FZ=(k(),P(q)),{OVERFLOW_MARKER:Ybe,MAX_SEARCH_KEY_LENGTH:Wbe}=BZ,GZ=FZ.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function qZ(e,t,r,n){if(Hy.validateEnv(e),t===void 0)throw new Error(ky.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(ky.IDS_REQUIRED):new Error(ky.IDS_MUST_BE_ITERABLE);try{let s=FU.listDBIs(e);FU.initializeDBIs(e,t,s);let i=new kZ,o,c=[],l=[];for(let _=0,h=r.length;_<h;_++)try{o=r[_];let m=e.dbis[t].get(o);if(!m||n&&m[GZ]>n){i.skipped.push(o);continue}let S=e.dbis[t].ifVersion(o,HZ.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let g=0;g<s.length;g++){let R=s[g];if(!m.hasOwnProperty(R)||R===t)continue;let E=e.dbis[R],T=m[R];if(T!=null)try{let N=Hy.getIndexedValues(T);if(N)for(let M=0,H=N.length;M<H;M++)E.remove(N[M],o)}catch{GU.warn(`cannot delete from attribute: ${R}, ${T}:${o}`)}}});c.push(S),l.push(o),i.original_records.push(m)}catch(m){GU.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=Hy.getNextMonotonicTime(),i}catch(s){throw s}}a(qZ,"deleteRecords");qU.exports={deleteRecords:qZ}});var d_=C((jbe,KU)=>{"use strict";var Su=ie(),$Z=$U(),VZ=_t(),{getSchemaPath:KZ}=gt(),YZ=l_(),WZ=ee();KU.exports=zZ;async function zZ(e,t=!0){let n=global.hdb_schema[e.schema][e.table].hash_attribute;if(Su.isEmpty(n))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(Su.isEmptyOrZeroLength(e.hash_values)&&!Su.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let c=0;c<e.records.length;c++){let l=e.records[c][n];Su.isEmpty(l)||e.hash_values.push(l)}}if(Su.isEmptyOrZeroLength(e.hash_values))return VU([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(Su.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=KZ(e.schema,e.table),i=await VZ.openEnvironment(s,e.table),o=await $Z.deleteRecords(i,n,e.hash_values,e.__origin?.timestamp);try{t===!0&&await YZ(e,o)}catch(c){WZ.error(`unable to write transaction due to ${c.message}`)}return VU(o.deleted,o.skipped,o.txn_time)}catch(s){throw s}}a(zZ,"lmdbDeleteRecords");function VU(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(VU,"createDeleteResponse")});var Gy=C((Zbe,YU)=>{"use strict";var QZ=(k(),P(q)),Xbe=un();function Fy(e,t){let r=Object.create(null);if(t.length===1&&QZ.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(Fy,"parseRow");function jZ(e,t,r,n){let s=Fy(r,e);n.push(s)}a(jZ,"searchAll");function JZ(e,t,r,n){let s=Fy(r,e);n[t]=s}a(JZ,"searchAllToMap");function XZ(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(XZ,"iterateDBI");function $c(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($c,"pushResults");function ZZ(e,t,r,n,s,i){t.toString().endsWith(e)&&$c(t,r,n,s,i)}a(ZZ,"endsWith");function e5(e,t,r,n,s,i){t.toString().includes(e)&&$c(t,r,n,s,i)}a(e5,"contains");function t5(e,t,r,n,s,i){t>e&&$c(t,r,n,s,i)}a(t5,"greaterThanCompare");function r5(e,t,r,n,s,i){t>=e&&$c(t,r,n,s,i)}a(r5,"greaterThanEqualCompare");function n5(e,t,r,n,s,i){t<e&&$c(t,r,n,s,i)}a(n5,"lessThanCompare");function s5(e,t,r,n,s,i){t<=e&&$c(t,r,n,s,i)}a(s5,"lessThanEqualCompare");YU.exports={parseRow:Fy,searchAll:jZ,searchAllToMap:JZ,iterateDBI:XZ,endsWith:ZZ,contains:e5,greaterThanCompare:t5,greaterThanEqualCompare:r5,lessThanCompare:n5,lessThanEqualCompare:s5,pushResults:$c}});var Tu=C((sOe,ZU)=>{"use strict";var ha=_t(),tOe=ee(),Wn=un(),Xp=Ft(),zt=Un().LMDB_ERRORS_ENUM,rOe=ie(),i5=(k(),P(q)),Zp=Gy(),{parseRow:o5}=Zp,nOe=require("lmdb"),{OVERFLOW_MARKER:WU,MAX_SEARCH_KEY_LENGTH:a5}=Xp;function zU(e,t,r,n=!1,s=void 0,i=void 0){return Vc(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(zU,"iterateFullIndex");function f_(e,t,r,n,s,i=!1,o=void 0,c=void 0,l=!1,u=!1){return Vc(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(f_,"iterateRangeBetween");function Vc(e,t,r,n){let s=e.database||e,i=ha.openDBI(s,r);i[Xp.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&ha.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(Vc,"setupTransaction");function QU(e,t,r,n){let s;return function(i,o){if(typeof i=="string"&&i.endsWith(WU)){if(!s)if(r)s=ha.openDBI(e,r);else{let l=ha.listDBIs(e);for(let u=0,f=l.length;u<f&&(s=ha.openDBI(e,l[u]),!s[Xp.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=s.get(o,{transaction:t,lazy:!0})[n]}return i}}a(QU,"getOverflowCheck");function c5(e,t,r,n=!1,s=void 0,i=void 0){if(Wn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return Vc(e,t,t,(o,c,l)=>(eE(r),r=__(l,r),c.getRange({transaction:o,start:n?void 0:!1,end:n?!1:void 0,limit:s,offset:i,reverse:n}).map(u=>o5(u.value,r))))}a(c5,"searchAll");function l5(e,t,r,n=!1,s=void 0,i=void 0){if(Wn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);eE(r),r=__(e.database||e,r);let o=new Map;for(let{key:c,value:l}of zU(e,t,t,n,s,i))o.set(c,Zp.parseRow(l,r));return o}a(l5,"searchAllToMap");function u5(e,t,r=!1,n=void 0,s=void 0){if(Wn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=zU(e,void 0,t,r,n,s),c=o.transaction,l=QU(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(u5,"iterateDBI");function d5(e,t){if(Wn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);return ha.statDBI(e,t).entryCount}a(d5,"countAll");function f5(e,t,r,n,s=!1,i=void 0,o=void 0){return ma(e,r,n),Vc(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(f5,"equals");function _5(e,t,r){return ma(e,t,r),ha.openDBI(e,t).getValuesCount(r)}a(_5,"count");function h5(e,t,r,n,s=!1,i=void 0,o=void 0){return ma(e,r,n),Vc(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(h5,"startsWith");function m5(e,t,r,n,s=!1,i=void 0,o=void 0){return jU(e,t,r,n,s,i,o,!0)}a(m5,"endsWith");function jU(e,t,r,n,s=!1,i=void 0,o=void 0,c=!1){return ma(e,r,n),Vc(e,null,r,(l,u,f,d)=>{let _=QU(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(WU)?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[Xp.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(jU,"contains");function p5(e,t,r,n,s=!1,i=void 0,o=void 0){ma(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),f_(e,t,r,n,l,s,i,o,!0,!1)}a(p5,"greaterThan");function E5(e,t,r,n,s=!1,i=void 0,o=void 0){ma(e,r,n);let c=typeof n,l;return c==="string"?l="\uFFFF":c==="number"?l=1/0:c==="boolean"&&(l=!0),f_(e,t,r,n,l,s,i,o,!1,!1)}a(E5,"greaterThanEqual");function g5(e,t,r,n,s=!1,i=void 0,o=void 0){ma(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),f_(e,t,r,l,n,s,i,o,!1,!0)}a(g5,"lessThan");function S5(e,t,r,n,s=!1,i=void 0,o=void 0){ma(e,r,n);let c=typeof n,l;return c==="string"?l="\0":c==="number"?l=-1/0:c==="boolean"&&(l=!1),f_(e,t,r,l,n,s,i,o,!1,!1)}a(S5,"lessThanEqual");function T5(e,t,r,n,s,i=!1,o=void 0,c=void 0){if(Wn.validateEnv(e),r===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(n===void 0)throw new Error(zt.START_VALUE_REQUIRED);if(s===void 0)throw new Error(zt.END_VALUE_REQUIRED);if(n=Wn.convertKeyValueToWrite(n),s=Wn.convertKeyValueToWrite(s),n>s)throw new Error(zt.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return f_(e,t,r,n,s,i,o,c)}a(T5,"between");function A5(e,t,r,n){Wn.validateEnv(e);let s=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(eE(r),r=__(s,r),n===void 0)throw new Error(zt.ID_REQUIRED);let o=null,c=s.dbis[t].get(n,{transaction:i,lazy:r.length<3});return c&&(o=Zp.parseRow(c,r)),o}a(A5,"searchByHash");function R5(e,t,r){Wn.validateEnv(e);let n=e.database||e,s=e.database?e:null;if(t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.ID_REQUIRED);let i=!0;return n.dbis[t].get(r,{transaction:s,lazy:!0})===void 0&&(i=!1),i}a(R5,"checkHashExists");function y5(e,t,r,n,s=[]){return XU(e,t,r,n,s),JU(e,t,r,n,s).map(i=>i[1])}a(y5,"batchSearchByHash");function b5(e,t,r,n,s=[]){XU(e,t,r,n,s);let i=new Map;for(let[o,c]of JU(e,t,r,n,s))i.set(o,c);return i}a(b5,"batchSearchByHashToMap");function JU(e,t,r,n,s=[]){return Vc(e,t,t,(i,o,c)=>{r=__(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,Zp.parseRow(f,r)];s.push(u)}).filter(u=>u)})}a(JU,"batchHashSearch");function XU(e,t,r,n,s){if(Wn.validateEnv(e),t===void 0)throw new Error(zt.HASH_ATTRIBUTE_REQUIRED);if(eE(r),n==null)throw new Error(zt.IDS_REQUIRED);if(!n[Symbol.iterator])throw new Error(zt.IDS_MUST_BE_ITERABLE)}a(XU,"initializeBatchSearchByHash");function eE(e){if(!Array.isArray(e))throw e===void 0?new Error(zt.FETCH_ATTRIBUTES_REQUIRED):new Error(zt.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a(eE,"validateFetchAttributes");function ma(e,t,r){if(Wn.validateEnv(e),t===void 0)throw new Error(zt.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(zt.SEARCH_VALUE_REQUIRED);if(r?.length>a5)throw new Error(zt.SEARCH_VALUE_TOO_LARGE)}a(ma,"validateComparisonFunctions");function __(e,t){return t.length===1&&i5.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=ha.listDBIs(e)),t}a(__,"setGetWholeRowAttributes");ZU.exports={searchAll:c5,searchAllToMap:l5,count:_5,countAll:d5,equals:f5,startsWith:h5,endsWith:m5,contains:jU,searchByHash:A5,setGetWholeRowAttributes:__,batchSearchByHash:y5,batchSearchByHashToMap:b5,checkHashExists:R5,iterateDBI:u5,greaterThan:p5,greaterThanEqual:E5,lessThan:g5,lessThanEqual:S5,between:T5}});var Au=C((oOe,s0)=>{var e0=require("lodash"),t0=ot(),qe=require("joi"),O5=ie(),{hdb_schema_table:h_,checkValidTable:r0,hdb_table:n0,hdb_database:tE}=bi(),{handleHDBError:N5,hdb_errors:w5}=he(),{getDatabases:I5}=(xe(),P(ct)),{HTTP_STATUS_CODES:C5}=w5,P5=qe.object({database:tE,schema:tE,table:n0,search_attribute:h_,search_value:qe.any().required(),get_attributes:qe.array().min(1).items(qe.alternatives(h_,qe.object())).optional(),desc:qe.bool(),limit:qe.number().integer().min(1),offset:qe.number().integer().min(0)}),D5=qe.object({database:tE,schema:tE,table:n0,operator:qe.string().valid("and","or").default("and").lowercase(),offset:qe.number().integer().min(0),limit:qe.number().integer().min(1),get_attributes:qe.array().min(1).items(qe.alternatives(h_,qe.object())).optional(),sort:qe.object({attribute:qe.alternatives(h_,qe.array().min(1)),descending:qe.bool().optional()}).optional(),conditions:qe.array().min(1).items(qe.alternatives(qe.object({operator:qe.string().valid("and","or").default("and").lowercase(),conditions:qe.array()}),qe.object({search_attribute:qe.alternatives(h_,qe.array().min(1)),search_type:qe.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between","not_equal").optional(),search_value:qe.when("search_type",{switch:[{is:"equals",then:qe.any()},{is:"between",then:qe.array().items(qe.alternatives([qe.string(),qe.number()])).length(2)}],otherwise:qe.alternatives(qe.string(),qe.number())}).required()}))).required()});s0.exports=function(e,t){let r=null;switch(t){case"value":r=t0.validateBySchema(e,P5);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=t0.validateBySchema(e,D5);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let s=O5.checkGlobalSchemaTable(e.schema,e.table);if(s)return N5(new Error,s,C5.NOT_FOUND);let o=I5()[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=e0.filter(c,f=>f!=="*"&&!f.startsWith?.("$")&&f.attribute!=="*"&&!Array.isArray(f)&&!f.name&&!e0.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 qy=C((cOe,i0)=>{"use strict";var L5=_t(),M5=Au(),{getSchemaPath:v5}=gt();i0.exports=U5;function U5(e){let t=M5(e,"hashes");if(t)throw t;let r=v5(e.schema,e.table);return L5.openEnvironment(r,e.table)}a(U5,"initialize")});var $y=C((uOe,o0)=>{"use strict";var x5=Tu(),B5=qy();o0.exports=H5;async function H5(e){let t=await B5(e),r=t.useReadTransaction();r.database=t;let n=global.hdb_schema[e.schema][e.table];try{return x5.batchSearchByHashToMap(r,n.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(H5,"lmdbGetDataByHash")});var Ru=C((fOe,a0)=>{"use strict";var Vy=class{static{a(this,"SearchByHashObject")}constructor(t,r,n,s){this.schema=t,this.table=r,this.hash_values=n,this.get_attributes=s}};a0.exports=Vy});var l0=C((mOe,c0)=>{"use strict";var hOe=Ru(),k5=Tu(),F5=qy();c0.exports=G5;async function G5(e){let t=await F5(e),r=global.hdb_schema[e.schema][e.table];return k5.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(G5,"lmdbSearchByHash")});var Ws=C((EOe,u0)=>{"use strict";var Ky=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}};u0.exports=Ky});var rE=C((SOe,p0)=>{"use strict";var jr=Tu(),q5=_t(),$5=ie(),$e=Ft(),Kc=(k(),P(q)),V5=co(),d0=Un().LMDB_ERRORS_ENUM,{getSchemaPath:K5}=gt(),po=Kc.SEARCH_WILDCARDS;async function Y5(e,t,r){let n;e.schema===Kc.SYSTEM_SCHEMA_NAME?n=V5[e.table]:n=global.hdb_schema[e.schema][e.table];let s=m0(e,n.hash_attribute,r,t);return _0(e,s,n.hash_attribute,r)}a(Y5,"prepSearch");async function _0(e,t,r,n){let s=K5(e.schema,e.table),i=await q5.openEnvironment(s,e.table),o=h0(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(W5(e,r)===!1){let f=e.search_attribute;if(f===r)return n?f0(o,()=>!0):o.map(_=>({[r]:_.key}));let d=a(_=>({[r]:_.value,[f]:_.key}),"toObject");return n?f0(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(_0,"executeSearch");function h0(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(h0,"searchByType");function f0(e,t){let r=new Map;for(let n of e)r.set(n.value,t(n));return r}a(f0,"createMapFromIterable");function W5(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(W5,"checkToFetchMore");function m0(e,t,r,n){if($5.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),po.indexOf(s)>-1)return r===!0?$e.SEARCH_TYPES.SEARCH_ALL_TO_MAP:$e.SEARCH_TYPES.SEARCH_ALL;if(s.indexOf(po[0])<0&&s.indexOf(po[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(po.indexOf(i)>=0&&po.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),$e.SEARCH_TYPES.CONTAINS;if(po.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),$e.SEARCH_TYPES.ENDS_WITH;if(po.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),$e.SEARCH_TYPES.STARTS_WITH;if(s.includes(po[0])||s.includes(po[1]))return $e.SEARCH_TYPES.EQUALS;throw new Error(d0.UNKNOWN_SEARCH_TYPE)}else switch(n){case Kc.VALUE_SEARCH_COMPARATORS.BETWEEN:return $e.SEARCH_TYPES.BETWEEN;case Kc.VALUE_SEARCH_COMPARATORS.GREATER:return $e.SEARCH_TYPES.GREATER_THAN;case Kc.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return $e.SEARCH_TYPES.GREATER_THAN_EQUAL;case Kc.VALUE_SEARCH_COMPARATORS.LESS:return $e.SEARCH_TYPES.LESS_THAN;case Kc.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return $e.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(d0.UNKNOWN_SEARCH_TYPE)}}a(m0,"createSearchTypeFromSearchObject");p0.exports={executeSearch:_0,createSearchTypeFromSearchObject:m0,prepSearch:Y5,searchByType:h0}});var g0=C((ROe,E0)=>{"use strict";var AOe=Ws(),z5=Au(),Q5=ie(),j5=(k(),P(q)),J5=rE();E0.exports=X5;function X5(e,t){if(!Q5.isEmpty(t)&&j5.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=z5(e,"value");if(n)throw n;return J5.prepSearch(e,t,!0)}a(X5,"lmdbGetDataByValue")});var m_=C((OOe,S0)=>{"use strict";var bOe=Ws(),Z5=Au(),e9=ie(),t9=(k(),P(q)),r9=rE();S0.exports=n9;async function n9(e,t){if(!e9.isEmpty(t)&&t9.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let n=Z5(e,"value");if(n)throw n;return r9.prepSearch(e,t,!1)}a(n9,"lmdbSearchByValue")});var A0=C((IOe,T0)=>{"use strict";var wOe=Ft(),Yy=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}},Wy=class{static{a(this,"SearchCondition")}constructor(t,r,n){this.search_attribute=t,this.search_type=r,this.search_value=n}},zy=class{static{a(this,"SortAttribute")}constructor(t,r){this.attribute=t,this.desc=r}};T0.exports={SearchByConditionsObject:Yy,SearchCondition:Wy,SortAttribute:zy}});var N0=C((LOe,O0)=>{"use strict";var POe=A0().SearchByConditionsObject,s9=Ws(),i9=Au(),Qy=Tu(),nE=Ft(),{Resource:DOe}=(na(),P(GA)),b0=rE(),o9=Gy(),a9=require("lodash"),{getSchemaPath:c9}=gt(),R0=_t(),{handleHDBError:l9,hdb_errors:u9}=he(),{HTTP_STATUS_CODES:d9}=u9,f9=1e8;O0.exports=_9;async function _9(e){let t=i9(e,"conditions");if(t)throw l9(t,t.message,d9.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=c9(e.schema,e.table),n=await R0.openEnvironment(r,e.table),s=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)R0.openDBI(n,u.search_attribute);let i=a9.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let f=u.search_type;f===nE.SEARCH_TYPES.EQUALS?u.estimated_count=Qy.count(n,u.search_attribute,u.search_value):f===nE.SEARCH_TYPES.CONTAINS||f===nE.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=f9}return u.estimated_count}),o=n.useReadTransaction();o.database=n;let c=await y0(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(b0.filterByType),d=f.length,_=Qy.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=>o9.parseRow(h,_))}else{for(let d=1;d<i.length;d++){let _=i[d],h=await y0(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=Qy.batchSearchByHash(o,s.hash_attribute,e.get_attributes,c)}return l.onDone=()=>{o.done()},l}a(_9,"lmdbSearchByConditions");async function y0(e,t,r,n){let s=new s9(t.schema,t.table,void 0,void 0,n,t.get_attributes),i=r.search_type;return s.search_attribute=r.search_attribute,i===nE.SEARCH_TYPES.BETWEEN?(s.search_value=r.search_value[0],s.end_value=r.search_value[1]):s.search_value=r.search_value,b0.searchByType(e,s,i,n).map(o=>o.value)}a(y0,"executeConditionSearch")});var p_=C((vOe,w0)=>{"use strict";var h9=(k(),P(q)).OPERATIONS_ENUM,jy=class{static{a(this,"DeleteObject")}constructor(t,r,n,s=void 0){this.operation=h9.DELETE,this.schema=t,this.table=r,this.hash_values=n,this.__origin=s}};w0.exports=jy});var Jy=C((xOe,U0)=>{"use strict";var D0=Ws(),L0=p_(),M0=m_(),v0=d_(),Rn=(k(),P(q)),I0=ie(),C0=_t(),{getTransactionAuditStorePath:m9,getSchemaPath:p9}=gt(),P0=ee();U0.exports=E9;async function E9(e){try{if(I0.isEmpty(global.hdb_schema[e.schema])||I0.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await g9(e),await S9(e);let t=p9(e.schema,e.table);try{await C0.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")P0.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=m9(e.schema,e.table);await C0.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")P0.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(E9,"lmdbDropTable");async function g9(e){let t=new D0(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 M0(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 L0(Rn.SYSTEM_SCHEMA_NAME,Rn.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);await v0(s)}a(g9,"deleteAttributesFromSystem");async function S9(e){let t=new D0(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 M0(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 L0(Rn.SYSTEM_SCHEMA_NAME,Rn.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[n.id]);try{await v0(s)}catch(i){throw i}}a(S9,"dropTableFromSystem")});var B0=C((HOe,x0)=>{"use strict";var T9=require("fs-extra"),A9=Ws(),R9=Ru(),y9=p_(),b9=Jy(),O9=d_(),N9=$y(),w9=m_(),Eo=(k(),P(q)),{getSchemaPath:I9}=gt(),{handleHDBError:C9,hdb_errors:P9}=he(),{HDB_ERROR_MSGS:D9,HTTP_STATUS_CODES:L9}=P9;x0.exports=M9;async function M9(e){let t;try{t=await v9(e.schema);let r=new A9(Eo.SYSTEM_SCHEMA_NAME,Eo.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Eo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[Eo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),n=Array.from(await w9(r));for(let o=0;o<n.length;o++){let c={schema:t,table:n[o].name};try{await b9(c)}catch(l){if(l.message!=="invalid environment")throw l}}let s=new y9(Eo.SYSTEM_SCHEMA_NAME,Eo.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await O9(s);let i=I9(t);await T9.remove(i)}catch(r){throw r}}a(M9,"lmdbDropSchema");async function v9(e){let t=new R9(Eo.SYSTEM_SCHEMA_NAME,Eo.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[Eo.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,n;try{r=Array.from(await N9(t))}catch(s){throw s}for(let[,s]of r)s.name===e&&(n=e);if(!n)throw C9(new Error,D9.SCHEMA_NOT_FOUND(e),L9.NOT_FOUND,void 0,void 0,!0);return n}a(v9,"validateDropSchema")});var E_=C((FOe,H0)=>{"use strict";var Xy=class{static{a(this,"CreateTableObject")}constructor(t,r,n){this.schema=t,this.table=r,this.hash_attribute=n}};H0.exports=Xy});var eb=C(($Oe,k0)=>{"use strict";var U9=require("fs-extra"),sE=_t(),{getTransactionAuditStorePath:x9}=gt(),Zy=Ft(),qOe=E_();k0.exports=B9;async function B9(e){let t;try{let r=x9(e.schema,e.table);await U9.mkdirp(r),t=await sE.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{sE.createDBI(t,Zy.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),sE.createDBI(t,Zy.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),sE.createDBI(t,Zy.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(B9,"createTransactionsAuditEnvironment")});var q0=C((YOe,G0)=>{"use strict";var tb=(k(),P(q)),F0=_t(),H9=Lc(),{getSystemSchemaPath:k9,getSchemaPath:F9}=gt(),KOe=co(),G9=Dp(),rb=Pp(),q9=ee(),$9=eb();G0.exports=V9;async function V9(e,t){let r=F9(t.schema,t.table),n=new rb(t.schema,t.table,tb.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),s=new rb(t.schema,t.table,tb.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new rb(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await F0.createEnvironment(r,t.table),e!==void 0){let o=await F0.openEnvironment(k9(),tb.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await H9.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 nb(n),await nb(s),await nb(i)}await $9(t)}catch(o){throw o}}a(V9,"lmdbCreateTable");async function nb(e){try{await G9(e)}catch(t){q9.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(nb,"createAttribute")});var V0=C((zOe,$0)=>{"use strict";var K9=Yf(),Y9=Sf(),W9=jp(),g_=(k(),P(q)),z9=Lc().updateRecords,Q9=_t(),{getSchemaPath:j9}=gt(),J9=l_(),X9=ee();$0.exports=Z9;async function Z9(e){try{let{schema_table:t,attributes:r}=K9(e);Y9(e,r,t.hash_attribute),e.schema!==g_.SYSTEM_SCHEMA_NAME&&(r.includes(g_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(g_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(g_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(g_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await W9(e.hdb_auth_header,t,r),s=j9(e.schema,e.table),i=await Q9.openEnvironment(s,e.table),o=await z9(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await J9(e,o)}catch(c){X9.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(Z9,"lmdbUpdateRecords")});var Y0=C((jOe,K0)=>{"use strict";var e7=(k(),P(q)).OPERATIONS_ENUM,sb=class{static{a(this,"UpsertObject")}constructor(t,r,n,s=void 0){this.operation=e7.UPSERT,this.schema=t,this.table=r,this.records=n,this.__origin=s}};K0.exports=sb});var z0=C((ZOe,W0)=>{"use strict";var XOe=Y0(),t7=Yf(),r7=Sf(),n7=jp(),S_=(k(),P(q)),s7=Lc().upsertRecords,i7=_t(),{getSchemaPath:o7}=gt(),a7=l_(),c7=ee(),{handleHDBError:l7,hdb_errors:u7}=he();W0.exports=d7;async function d7(e){let t;try{t=t7(e)}catch(l){throw l7(l,l.message,u7.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:n}=t;r7(e,n,r.hash_attribute),e.schema!==S_.SYSTEM_SCHEMA_NAME&&(n.includes(S_.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||n.push(S_.TIME_STAMP_NAMES_ENUM.CREATED_TIME),n.includes(S_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||n.push(S_.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await n7(e.hdb_auth_header,r,n),i=o7(e.schema,e.table),o=await i7.openEnvironment(i,e.table),c=await s7(o,r.hash_attribute,n,e.records,e.__origin?.timestamp);try{await a7(e,c)}catch(l){c7.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(d7,"lmdbUpsertRecords")});var j0=C((tNe,Q0)=>{"use strict";var ib=class{static{a(this,"DeleteBeforeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.timestamp=n}};Q0.exports=ib});var X0=C((nNe,J0)=>{"use strict";var ob=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}};J0.exports=ob});var tx=C((oNe,ex)=>{"use strict";var ab=_t(),{getTransactionAuditStorePath:f7}=gt(),iNe=j0(),T_=Ft(),_7=ie(),Z0=X0(),h7=require("util").promisify,m7=h7(setTimeout),p7=1e4,E7=100;ex.exports=g7;async function g7(e){let t=f7(e.schema,e.table),r=await ab.openEnvironment(t,e.table,!0),n=ab.listDBIs(r);ab.initializeDBIs(r,T_.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s,i=new Z0;do s=await S7(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 m7(E7);while(s.transactions_deleted>0);return i}a(g7,"deleteAuditLogsBefore");async function S7(e,t){let r=new Z0;try{let n=e.dbis[T_.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[T_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];_7.isEmpty(c)||(s=e.dbis[T_.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(c,i));for(let l=0;l<o.hash_values.length;l++)s=e.dbis[T_.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[l],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>p7)break}return await s,r}catch(n){throw n}}a(S7,"deleteTransactions")});var nx=C((cNe,rx)=>{"use strict";var cb=class{static{a(this,"DropAttributeObject")}constructor(t,r,n){this.schema=t,this.table=r,this.attribute=n}};rx.exports=cb});var ix=C((dNe,sx)=>{"use strict";var T7=Ws(),A7=p_(),uNe=nx(),Pi=(k(),P(q)),R7=ie(),lb=_t(),y7=co(),b7=m_(),O7=d_(),{getSchemaPath:N7}=gt();sx.exports=w7;async function w7(e,t=!0){let r;e.schema===Pi.SYSTEM_SCHEMA_NAME?r=y7[e.table]:r=global.hdb_schema[e.schema][e.table];let n=await C7(e),s=N7(e.schema,e.table),i=await lb.openEnvironment(s,e.table);return t===!0&&await I7(e,i,r.hash_attribute),lb.dropDBI(i,e.attribute),n}a(w7,"lmdbDropAttribute");async function I7(e,t,r){let n=lb.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(I7,"removeAttributeFromAllObjects");async function C7(e){let t=new T7(Pi.SYSTEM_SCHEMA_NAME,Pi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Pi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Pi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Pi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),n=Array.from(await b7(t)).filter(o=>o[Pi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(R7.isEmptyOrZeroLength(n))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let s=n.map(o=>o[Pi.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new A7(Pi.SYSTEM_SCHEMA_NAME,Pi.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);return O7(i)}a(C7,"dropAttributeFromSystem")});var dx=C((hNe,ux)=>{"use strict";var ub=_t(),yu=Ft(),_Ne=un(),db=(k(),P(q)),ox=ie(),{getTransactionAuditStorePath:P7}=gt(),D7=Tu(),iE=Eu(),L7=ee();ux.exports=M7;async function M7(e){let t=P7(e.schema,e.table),r=await ub.openEnvironment(t,e.table,!0),n=ub.listDBIs(r);ub.initializeDBIs(r,yu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,n);let s;switch(e.search_type){case db.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return ax(r,e.search_values);case db.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return s=global.hdb_schema[e.schema][e.table].hash_attribute,U7(r,e.search_values,s);case db.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return v7(r,e.search_values);default:return ax(r)}}a(M7,"readAuditLog");function ax(e,t=[0,Date.now()]){ox.isEmpty(t[0])&&(t[0]=0),ox.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[yu.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 iE,s))}a(ax,"searchTransactionsByTimestamp");function v7(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[yu.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(s))i.push(o);r.set(s,lx(e,i))}return Object.fromEntries(r)}a(v7,"searchTransactionsByUsername");function U7(e,t,r){let n=new Map;for(let c=0,l=t.length;c<l;c++){let u=t[c],f=D7.equals(e,yu.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,yu.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=lx(e,s),o=new Map;for(let c=0;c<i.length;c++){let l=i[c],u=l.timestamp,f=n.get(u);cx(l,"records",r,f,o),cx(l,"original_records",r,f,o)}return Object.fromEntries(o)}a(U7,"searchTransactionsByHashValues");function cx(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 iE(e.operation,e.user_name,i,void 0);d[t]=[c],u.push(d)}}else{let u=new iE(e.operation,e.user_name,i,void 0);u[t]=[c],s.set(l,[u])}}}a(cx,"loopRecords");function lx(e,t){let r=[];try{let n=e.dbis[yu.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 iE,i);r.push(o)}}catch(i){L7.warn(i)}return r}catch(n){throw n}}a(lx,"batchSearchTransactions")});var _x=C((gNe,fx)=>{"use strict";var{getSchemaPath:pNe}=gt(),ENe=_t(),{database:x7}=(xe(),P(ct));fx.exports={writeTransaction:B7};async function B7(e,t,r){return x7({database:e,table:t}).transaction(r)}a(B7,"writeTransaction")});var Ex=C((TNe,px)=>{"use strict";var{getSchemaPath:hx}=gt(),mx=_t();px.exports={flush:H7,resetReadTxn:k7};async function H7(e,t){return(await mx.openEnvironment(hx(e,t),t.toString())).flushed}a(H7,"flush");async function k7(e,t){try{(await mx.openEnvironment(hx(e,t),t.toString())).resetReadTxn()}catch{}}a(k7,"resetReadTxn")});var Ax=C((RNe,Tx)=>{"use strict";var{Readable:F7}=require("stream"),{getDatabases:G7}=(xe(),P(ct)),{readSync:q7,openSync:$7,createReadStream:gx}=require("fs"),{open:V7}=require("lmdb"),Sx=Gf(),K7=qf(),{AUDIT_STORE_OPTIONS:Y7}=(Ti(),P(Rx)),{INTERNAL_DBIS_NAME:W7,AUDIT_STORE_NAME:z7}=Ft();Tx.exports=j7;var fb=32768,Q7=100;async function j7(e){let t=e.database||e.schema||"data",r=G7()[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=V7({noSync:!0,maxDbs:K7.MAX_DBS}),_,h=d.openDB(W7,new Sx(!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:X,value:W}of M.getRange({start:null,transaction:m,versions:M.useVersions}))_=N.put(H,W,X),S++%Q7===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 Sx(!M,M);await g(E,H)}e.include_audit&&await g(z7,{...Y7}),await _;let R=gx(d.path);return R.headers=l(),R.on("close",()=>{m.done(),d.close()}),R}let o=r[Object.keys(r)[0]].primaryStore,c=$7(o.path);return o.transaction(()=>{let u=Buffer.alloc(fb);q7(c,u,0,fb),o.resetReadTxn();let f=o.useReadTransaction();f.renew();let d=gx(null,{fd:c,start:fb}),_=new F7.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(j7,"getBackup")});var Ox=C((bNe,bx)=>{"use strict";var J7=ee(),{handleHDBError:X7}=he(),Z7=xL(),eee=Dp(),tee=xy(),ree=BU(),nee=d_(),see=$y(),iee=l0(),oee=g0(),aee=m_(),cee=N0(),lee=B0(),uee=q0(),dee=V0(),fee=z0(),_ee=tx(),hee=Jy(),mee=ix(),pee=dx(),Eee=_x(),yx=Ex(),gee=Ax(),_b=class extends Z7{static{a(this,"LMDBBridge")}async searchByConditions(t){return cee(t)}async getDataByHash(t){return await see(t)}async searchByHash(t){return await iee(t)}async getDataByValue(t,r){return await oee(t,r)}async searchByValue(t){return await aee(t)}async createSchema(t){return await ree(t)}async dropSchema(t){return await lee(t)}async createTable(t,r){return await uee(t,r)}async dropTable(t){return await hee(t)}async createAttribute(t){return await eee(t)}async createRecords(t){return await tee(t)}async updateRecords(t){return await dee(t)}async upsertRecords(t){try{return await fee(t)}catch(r){throw X7(r,null,null,J7.ERR,r)}}async deleteRecords(t){return await nee(t)}async dropAttribute(t){return await mee(t)}async deleteAuditLogsBefore(t){return await _ee(t)}async readAuditLog(t){return await pee(t)}writeTransaction(t,r,n){return Eee.writeTransaction(t,r,n)}flush(t,r){return yx.flush(t,r)}resetReadTxn(t,r){return yx.resetReadTxn(t,r)}getBackup(t){return gee(t)}};bx.exports=_b});var mb={};Ue(mb,{add:()=>oE,applyReverse:()=>Nx,getRecordAtTime:()=>hb,rebuildUpdateBefore:()=>aE});function oE(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 aE(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,oE(n,s,i)}else r&&(n||(n={}),n[s]=i)}else n||(n={}),n[s]=e[s];return n}function Nx(e,t){for(let r in t){let n=t[r];if(n?.__op__){let s=See[n.__op__]?.reverse;if(s)s(e,r,{value:n.value});else throw new Error(`Unsupported operation ${n.__op__}`)}else e[r]=wx}}function hb(e,t,r){let n=r.rootStore.auditStore,s={...e.value},i=e.localTime;for(;i>t;){let l=n.get(i),u=St(l);switch(u.type){case"put":s=u.getValue(r);break;case"patch":Nx(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=St(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 See,wx,cE=Re(()=>{Ti();a(oE,"add");oE.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)};See={add:oE};a(aE,"rebuildUpdateBefore");a(Nx,"applyReverse");wx={};a(hb,"getRecordAtTime")});function yn(e){let t=e.getChanges();return t||(t=Object.create(null),e._setChanges(t)),t}function fE(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 Si||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=pb(_,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,Cx);break}o=c}while(o&&o!==Cx)}function pb(e,t){let r;switch(e.constructor){case Object:return t?(r=t.TrackedObject,r||(t.TrackedObject=r=class extends A_{static{a(this,"TrackedObject")}},fE(r,t)),new r(e)):new A_(e);case Array:let n=new uE(e.length,e);for(let s=0,i=e.length;s<i;s++){let o=e[s];o&&typeof o=="object"&&(o=pb(o,t?.elements)),n[s]=o}return n;default:return e}}function _E(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=_E(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 bu(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=bu(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=mb[s?.__op__];if(i)i(r,n,s);else throw new Error("Invalid CRDT operation "+s.__op__);continue}else s=bu(s);r[n]=s}if(!Array.isArray(e))for(let n in e)Tee.call(e,n)&&(r||(r={...e.getRecord?.()}),r[n]=e[n]);return r?Object.freeze(r):e.getRecord?.()??e}function lE(e){let t=e.getRecord?.();if(t===void 0)return!0;if(e.constructor===Array){if(!t||e[Yc]||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(lE(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(lE(s))return!0}else return!0}else return!0}}return!1}var zn,Ix,Cx,A_,Tee,Yc,uE,dE,Eb=Re(()=>{zn=v(he());cE();pn();a(yn,"getChanges");a(fE,"assignTrackedAccessors");Ix=Object.prototype,Cx=new Proxy({},{get(e,t,r){if(typeof t=="string"){if(t==="then"||t==="getRecord"||t==="getChanges")return;if(Ix[t])return Ix[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=pb(s);if(i)return n||(n=Object.create(null),r._setChanges(n)),n[t]=i,i}return s}}});a(pb,"trackObject");A_=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}};fE(A_,{});a(_E,"collapseData");Tee=Object.prototype.hasOwnProperty;a(bu,"updateAndFreeze");a(lE,"hasChanges");Yc=Symbol.for("has-array-changes"),uE=class extends Array{static{a(this,"TrackedArray")}#e;[Yc];constructor(t,r){super(t),this.#e=r}getRecord(){return this.#e}splice(...t){return this[Yc]=!0,super.splice(...t)}push(...t){return this[Yc]=!0,super.push(...t)}pop(){return this[Yc]=!0,super.pop()}unshift(...t){return this[Yc]=!0,super.unshift(...t)}shift(){return this[Yc]=!0,super.shift()}};uE.prototype.constructor=Array;dE=class{constructor(t){this.value=t}static{a(this,"Addition")}__op__="add";update(t){return(+t||0)+this.value}}});var Bx={};Ue(Bx,{ResourceBridge:()=>Tb});function Ab({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 Dx(e,t){let r=Di(e),n=Ab(e,r);if(!r)throw new zs.ClientError(`Table ${e.table} not found`);let s;n&&r.attributes.length-n.length>2&&n.length<5&&(s=!0);let i={user:e.hdb_user,onlyIfCached:e.onlyIfCached,noCacheStore:e.noCacheStore,noCache:e.noCache,replicateFrom:e.replicateFrom},o;It(i,()=>new Promise(u=>o=u));let c=e.ids||e.hash_values,l=0;return{[Symbol.asyncIterator](){return{async next(){if(l<c.length){let u=c[l++],f;try{f=await r.get({id:u,lazy:s,select:n},i),f=f&&_E(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 Di(e){let t=e.database||e.schema||Ree,r=Xe()[t];if(!r)throw(0,zs.handleHDBError)(new Error,Aee.SCHEMA_NOT_FOUND(t),404);return r[e.table]}function Lx(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*Mx(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 vx,hE,zs,Ux,gb,Sb,xx,Aee,Ree,yee,bee,Px,Tb,Hx=Re(()=>{"use strict";vx=v(Ox()),hE=v(Au()),zs=v(he());xe();Ux=v(Yf());k();gb=v(mo()),Sb=v(Ys()),xx=v(ie());mc();Eb();({HDB_ERROR_MSGS:Aee}=zs.hdb_errors),Ree="data",yee=1e4,bee=10,Tb=class extends vx.default{static{a(this,"ResourceBridge")}constructor(t){super(t),Px=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,hE.default)(t,"conditions");if(r)throw(0,zs.handleHDBError)(r,r.message,400,void 0,void 0,!0);let n=Di(t);if(!n)throw new zs.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:Ab(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 zs.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}]}ft({database:r.database??r.schema,table:r.table,attributes:n,schemaDefined:s,expiration:r.expiration,audit:r.audit})}async createAttribute(t){return await Di(t).addAttributes([{name:t.attribute,indexed:t.indexed??!0}]),`attribute ${t.schema}.${t.table}.${t.attribute} successfully created.`}async dropAttribute(t){let r=Di(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){Di(t).dropTable()}createSchema(t){return Ou({database:t.schema,table:null}),gb.signalSchemaChange(new Sb.SchemaEventMsg(process.pid,Yt.CREATE_SCHEMA,t.schema))}async dropSchema(t){await Rb(t.schema),gb.signalSchemaChange(new Sb.SchemaEventMsg(process.pid,Yt.DROP_SCHEMA,t.schema))}async updateRecords(t){return t.requires_existing=!0,this.upsertRecords(t)}async createRecords(t){return t.requires_no_existing=!0,Px.upsertRecords(t)}async upsertRecords(t){let{schema_table:r,attributes:n}=(0,Ux.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),It(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}_&&(_=_E(_));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),It(n,async s=>{let i=t.hash_values||t.records.map(l=>l[r.primaryKey]),o=[],c=[];for(let l of i)await r.delete(l,n)?o.push(l):c.push(l);return Lx(o,c,s.timestamp)})}async deleteRecordsBefore(t){let r=Xe()[t.schema][t.table];if(!r.createdTimeProperty)throw new zs.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:Um.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,xx.async_set_timeout)(bee),l=[],s=!0},"chunkDelete");for await(let f of n)l.push(f[r.primaryKey]),c++,c%yee===0&&await u();return l.length>0&&await u(),s?Lx(i,o,void 0):{message:"No records found to delete"}}searchByHash(t){t.select!==void 0&&(t.get_attributes=t.select);let r=(0,hE.default)(t,"hashes");if(r)throw r;return Dx(t)}async getDataByHash(t){let r=new Map;t._returnKeyValue=!0;for await(let{key:n,value:s}of Dx(t,!0))r.set(n,s);return r}searchByValue(t,r){if(r&&TA[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,hE.default)(t,"value");if(n)throw n;let s=Di(t);if(!s)throw new zs.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===Um.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:Ab(t,s)},{onlyIfCached:t.onlyIfCached,noCacheStore:t.noCacheStore,noCache:t.noCache,replicateFrom:t.replicateFrom})}async getDataByValue(t,r){let n=new Map,s=Di(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){Di({schema:t,table:r})?.primaryStore.resetReadTxn()}async deleteAuditLogsBefore(t){return Di(t).deleteHistory(t.timestamp,t.cleanup_deleted_records)}async readAuditLog(t){let r=Di(t),n={};switch(t.search_type){case xm.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 xm.USERNAME:let s=t.search_values;for await(let i of Mx(r))s.includes(i.user_name)&&(n[i.user_name]||(n[i.user_name]=[])).push(i);return n;default:return Mx(r,t.search_values?.[0],t.search_values?.[1],t.limit)}}};a(Ab,"getSelect");a(Dx,"getRecords");a(Di,"getTable");a(Lx,"createDeleteResponse");a(Mx,"groupRecordsInHistory")});var qn=C((BNe,kx)=>{"use strict";var{ResourceBridge:Oee}=(Hx(),P(Bx)),Nee=le();Nee.initSync();var mE;function wee(){return mE||(mE=new Oee,mE)}a(wee,"getBridge");kx.exports=wee()});var An=C((kNe,$x)=>{"use strict";var EE=dR(),xr=ie(),Iee=require("util"),gE=qn(),Cee=$s(),Fx=ee(),{handleHDBError:Wc,hdb_errors:Pee}=he(),{HTTP_STATUS_CODES:zc}=Pee,Dee=Iee.promisify(Cee.getTableSchema),Lee="updated",Gx="inserted",qx="upserted";$x.exports={insert:vee,update:Uee,upsert:xee,validation:Mee,flush:Bee};async function Mee(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 Dee(e.schema,e.table),r=EE(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 Fx.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 Fx.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(Mee,"validation");async function vee(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=EE(e);if(t)throw Wc(new Error,t.message,zc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Wc(new Error,r,zc.BAD_REQUEST);let n=await gE.createRecords(e);return pE(Gx,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time)}a(vee,"insertData");async function Uee(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=EE(e);if(t)throw Wc(new Error,t.message,zc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Wc(new Error,r,zc.BAD_REQUEST);let n=await gE.updateRecords(e);return xr.isEmpty(n.existing_rows)?pE(Lee,n.written_hashes,e,n.skipped_hashes,n.new_attributes,n.txn_time):pE(n.update_action,[],e,n.hashes,void 0,n.txn_time)}a(Uee,"updateData");async function xee(e){if(e.operation!=="upsert")throw Wc(new Error,"invalid operation, must be upsert",zc.INTERNAL_SERVER_ERROR);let t=EE(e);if(t)throw Wc(new Error,t.message,zc.BAD_REQUEST);xr.transformReq(e);let r=xr.checkSchemaTableExist(e.schema,e.table);if(r)throw Wc(new Error,r,zc.BAD_REQUEST);let n=await gE.upsertRecords(e);return pE(qx,n.written_hashes,e,[],n.new_attributes,n.txn_time)}a(xee,"upsertData");function pE(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===Gx?(o.inserted_hashes=t,o.skipped_hashes=n,o):e===qx?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=n,o)}a(pE,"returnObject");function Bee(e){return xr.transformReq(e),gE.flush(e.schema,e.table)}a(Bee,"flush")});var Qx=C((GNe,zx)=>{var Nu=require("validate.js"),Kx=ot(),wu=(k(),P(q)),{handleHDBError:Hee,hdb_errors:kee}=he(),{HDB_ERROR_MSGS:Qt,HTTP_STATUS_CODES:Fee}=kee,yb=a(()=>({role:{presence:!0,format:"[\\w\\-\\_]+"},id:{presence:!0,format:"[\\w\\-\\_]+"},permission:{presence:!0}}),"constraintsTemplate"),Gee={STRUCTURE_USER:"structure_user"},Vx=Object.values(wu.ROLE_TYPES_ENUM),qee="attribute_permissions",$ee="attribute_name",{PERMS_CRUD_ENUM:Iu}=wu,Vee=[qee,...Object.values(Iu)],Yx=[Iu.READ,Iu.INSERT,Iu.UPDATE],Kee=[$ee,...Yx];function Yee(e){let t=yb();return t.role.presence=!0,t.id.presence=!1,t.permission.presence=!0,Wx(e,t)}a(Yee,"addRoleValidation");function Wee(e){let t=yb();return t.role.presence=!1,t.id.presence=!0,t.permission.presence=!0,Wx(e,t)}a(Wee,"alterRoleValidation");function zee(e){let t=yb();return t.role.presence=!1,t.id.presence=!0,t.permission.presence=!1,Kx.validateObject(e,t)}a(zee,"dropRoleValidation");var Qee=["operation","role","id","permission","hdb_user","access"];function Wx(e,t){let r={main_permissions:[],schema_permissions:{}},n=Object.keys(e),s=[];for(let o=0,c=n.length;o<c;o++)Qee.includes(n[o])||s.push(n[o]);s.length>0&&nr(Qt.INVALID_ROLE_JSON_KEYS(s),r);let i=Kx.validateObject(e,t);if(i&&i.message.split(",").forEach(o=>{nr(o,r)}),e.permission){let o=jee(e);o&&nr(o,r),Vx.forEach(c=>{e.permission[c]&&!Nu.isBoolean(e.permission[c])&&nr(Qt.SU_CU_ROLE_BOOLEAN_ERROR(c),r)})}for(let o in e.permission)if(Vx.indexOf(o)<0){if(o===Gee.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]||nr(Qt.SCHEMA_NOT_FOUND(d),r)}continue}nr(Qt.STRUCTURE_USER_ROLE_TYPE_ERROR(o),r);continue}let c=e.permission[o];if(!o||!global.hdb_schema[o]){nr(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]){nr(Qt.TABLE_NOT_FOUND(o,l),r);continue}if(Object.keys(u).forEach(f=>{Vee.includes(f)||nr(Qt.INVALID_PERM_KEY(f),r,o,l)}),Object.values(Iu).forEach(f=>{Nu.isDefined(u[f])?Nu.isBoolean(u[f])||nr(Qt.TABLE_PERM_NOT_BOOLEAN(f),r,o,l):nr(Qt.TABLE_PERM_MISSING(f),r,o,l)}),u.attribute_permissions===void 0){nr(Qt.ATTR_PERMS_ARRAY_MISSING,r,o,l);continue}else if(!(Array.isArray(u.attribute_permissions)||u.attribute_permissions===null)){nr(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=>{!Kee.includes(S)&&S!==Iu.DELETE&&nr(Qt.INVALID_ATTR_PERM_KEY(S),r,o,l)}),!Nu.isDefined(h.attribute_name)){nr(Qt.ATTR_PERM_MISSING_NAME,r,o,l);continue}let m=h.attribute_name;if(!f.includes(m)){nr(Qt.INVALID_ATTRIBUTE_IN_PERMS(m),r,o,l);continue}Yx.forEach(S=>{Nu.isDefined(h[S])?Nu.isBoolean(h[S])||nr(Qt.ATTR_PERM_NOT_BOOLEAN(S,m),r,o,l):nr(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}`;nr(Qt.MISMATCHED_TABLE_ATTR_PERMS(_),r,o,l)}}}}return Jee(r)}a(Wx,"customValidate");zx.exports={addRoleValidation:Yee,alterRoleValidation:Wee,dropRoleValidation:zee};function jee(e){let{operation:t,permission:r}=e;if(t===wu.OPERATIONS_ENUM.ADD_ROLE||t===wu.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?wu.ROLE_TYPES_ENUM.SUPER_USER:wu.ROLE_TYPES_ENUM.CLUSTER_USER;return Qt.SU_CU_ROLE_NO_PERMS_ALLOWED(o)}}}return null}a(jee,"validateNoSUPerms");function Jee(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 Hee(new Error,n,Fee.BAD_REQUEST)}else return null}a(Jee,"generateRolePermResponse");function nr(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(nr,"addPermError")});var y_=C((VNe,Zx)=>{"use strict";var jx=An(),Jx=Wr(),Xee=Hc(),Ob=Qx(),Nb=mo(),$Ne=require("uuid").v4,Zee=require("util"),SE=(k(),P(q)),ete=ie(),wb=Jx.searchByValue,tte=Jx.searchByHash,rte=Zee.promisify(Xee.delete),nte=Ws(),ste=Ru(),{hdb_errors:ite,handleHDBError:Qc}=he(),{HDB_ERROR_MSGS:Xx,HTTP_STATUS_CODES:R_}=ite,{UserEventMsg:Ib}=Ys();Zx.exports={addRole:ote,alterRole:ate,dropRole:cte,listRoles:lte};function bb(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(bb,"scrubRoleDetails");async function ote(e){let t=Ob.addRoleValidation(e);if(t)throw t;e=bb(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 wb(r)||[])}catch(i){throw Qc(i)}if(n&&n.length>0)throw Qc(new Error,Xx.ROLE_ALREADY_EXISTS(e.role),R_.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 jx.insert(s),Nb.signalUserChange(new Ib(process.pid)),e=bb(e),e}a(ote,"addRole");async function ate(e){let t=Ob.alterRoleValidation(e);if(t)throw t;e=bb(e);let r={operation:"update",schema:"system",table:"hdb_role",records:[e]},n;try{n=await jx.update(r)}catch(s){throw Qc(s)}if(n&&n?.message==="updated 0 of 1 records")throw Qc(new Error,"Invalid role id",R_.BAD_REQUEST,void 0,void 0,!0);return await Nb.signalUserChange(new Ib(process.pid)),e}a(ate,"alterRole");async function cte(e){let t=Ob.dropRoleValidation(e);if(t)throw Qc(new Error,t,R_.BAD_REQUEST,void 0,void 0,!0);let r=new ste(SE.SYSTEM_SCHEMA_NAME,SE.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME,[e.id],["role"]),n=Array.from(await tte(r));if(n.length===0)throw Qc(new Error,Xx.ROLE_NOT_FOUND,R_.NOT_FOUND,void 0,void 0,!0);let s=new nte(SE.SYSTEM_SCHEMA_NAME,SE.SYSTEM_TABLE_NAMES.USER_TABLE_NAME,"role",e.id,void 0,["username","active"]),i=Array.from(await wb(s)),o=!1;if(ete.isEmptyOrZeroLength(i)===!1){for(let l=0;l<i.length;l++)if(i[l].active===!0){o=!0;break}}if(o===!0)throw Qc(new Error,`Cannot drop role ${n[0].role} as it has active user(s) tied to this role`,R_.CONFLICT,void 0,void 0,!0);let c={table:"hdb_role",schema:"system",hash_values:[e.id]};return await rte(c),Nb.signalUserChange(new Ib(process.pid)),`${n[0].role} successfully deleted`}a(cte,"dropRole");async function lte(){return wb({table:"hdb_role",schema:"system",hash_attribute:"id",search_attribute:"id",search_value:"*",get_attributes:["*"]})}a(lte,"listRoles")});var Cb={};Ue(Cb,{start:()=>rB,startOnMainThread:()=>fte});function rB({ensureTable:e}){return{handleFile:t,setupFile:t};async function t(r){let n=(0,eB.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(ute.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 dte(i)}}}async function dte(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,tB.isEqual)(i,e)?void 0:(e.id=r.id,(0,TE.alterRole)(e))}return(0,TE.addRole)(e)}var TE,eB,tB,ute,fte,nB=Re(()=>{xe();TE=v(y_()),eB=require("yaml"),tB=require("lodash"),ute=["super_user","cluster_user","structure_user"];a(rB,"start");a(dte,"ensureRole");fte=rB});async function AE(e){let t=(0,oB.pathToFileURL)(e).toString();if(_te)return b_||(b_=hte(pte)),(await(await b_).import(t)).namespace;try{return await import(t)}catch(r){try{(await import("internal/util")).default.decorateErrorStack(r)}catch{}throw r}}async function hte(e){let{StaticModuleRecord:t}=await import("@endo/static-module-record");return require("ses"),lockdown({domainTaming:"unsafe",consoleTaming:"unsafe",errorTaming:"unsafe",errorTrapping:"none",stackFiltering:"verbose"}),b_=new Compartment({console,Math,Date,fetch:mte,...e()},{},{name:"h-dapp",resolveHook(r,n){return r==="harperdb"?"harperdb":(r=new URL(r,n).toString(),(0,iB.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:Qn,databases:We})}};let n=await(0,sB.readFile)(new URL(r),{encoding:"utf-8"});return new t(n,r)},"importHook")}),b_}function mte(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 pte(){return{Resource:Kr,tables:Qn}}var sB,iB,oB,_te,b_,Pb=Re(()=>{na();xe();sB=require("fs/promises"),iB=require("path"),oB=require("url"),_te=!1;a(AE,"secureImport");a(hte,"getCompartment");a(mte,"secureOnlyFetch");a(pte,"getGlobalVars")});var Lb={};Ue(Lb,{handleFile:()=>Ete});async function Ete(e,t,r,n){let s=new Map,i=await AE(r);c(i.default)&&n.set((0,Db.dirname)(t),i.default),o(i,(0,Db.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 Db,aB=Re(()=>{Pb();Db=require("path");a(Ete,"handleFile")});var vb={};Ue(vb,{start:()=>gte});function gte({resources:e}){e.set("login",Mb),e.loginPath=t=>"/login?redirect="+encodeURIComponent(t.url)}var Mb,cB=Re(()=>{na();a(gte,"start");Mb=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 P_={};Ue(P_,{addAnalyticsListener:()=>C_,calculateCPUUtilization:()=>wB,diffResourceUsage:()=>IB,recordAction:()=>Mt,recordActionBinary:()=>jn,setAnalyticsEnabled:()=>Ste});function Ste(e){RB=e}function Tte(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 Ate(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},yE.set(e,o)}function Mt(e,t,r,n,s){if(!RB)return;let i=t+(r?"-"+r:"");n!==void 0&&(i+="-"+n),s!==void 0&&(i+="-"+s);let o=yE.get(i);o?Tte(e,o):Ate(i,e,t,r,n,s),RE||Rte()}function jn(e,t,r,n,s){Mt(!!e,t,r,n,s)}function C_(e){OB.push(e)}function Rte(){RE=performance.now(),setTimeout(async()=>{let e=performance.now()-RE;RE=0;let t=[],r={time:Date.now(),period:e,threadId:jc.threadId,metrics:t};for(let[s,i]of yE){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 NB){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 CB()}let n=process.memoryUsage();t.push({metric:"memory",threadId:jc.threadId,byThread:!0,...n});for(let s of OB)s(t);yE=new Map,jc.parentPort?jc.parentPort.postMessage({type:bB,report:r}):LB({report:r})},yB).unref()}function bE(e,t,r){let n={id:(0,w_.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 IB(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 yte(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};bE(e,"table-size",l),Jc.trace?.(`table ${o} size metric: ${JSON.stringify(l)}`),n+=c}return n}function lB(e,t){for(let[r,n]of Object.entries(t))try{let[s]=Object.values(n),i=s?.getAuditSize();if(!i)return;let o=AB.default.statSync(s.primaryStore.env.path).size,c=yte(e,r,n),l=o-c,u={database:r,size:o,used:c,free:l,audit:i};bE(e,"database-size",u),Jc.trace?.(`database ${r} size metric: ${JSON.stringify(u)}`)}catch(s){Jc.warn?.("Error getting DB size metrics",s)}}function uB(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};bE(e,"storage-volume",o),Jc.trace?.(`db ${r} storage volume metrics: ${JSON.stringify(o)}`)}catch(s){Jc.warn?.("Error getting DB volume metrics",s)}}async function bte(e,t=6e4){let r=xb(),n=PB(),s=new Promise(E=>{let T=performance.now();setImmediate(()=>{let N=performance.now();N-T>5e3&&Jc.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&&Jc.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:X,method:W,type:$,metric:se,count:z,total:fe,distribution:ue,threads:Z,...Ae}=H;z||(z=1);let me=se+(X?"-"+X:"");W!==void 0&&(me+="-"+W),$!==void 0&&(me+="-"+$);let ye=c.get(me);if(ye){if(ye.threads){let dt=ye.threads[M];if(dt)ye=dt;else{ye.threads[M]={...Ae};continue}}ye.count||(ye.count=1);let Ht=ye.count;for(let dt in Ae){let Ln=Ae[dt];typeof Ln=="number"&&(ye[dt]=(ye[dt]*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(dt=>typeof dt=="number"?{value:dt,count:1}:dt);let Ht=l.get(me);Ht?Ht.push(...ue):l.set(me,ue)}}await CB()}for(let E of u){let{path:T,method:N,type:M,metric:H,count:X,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 Z of se){let Ae=Z[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((dt,Ln)=>dt.value>Ln.value?1:-1);let M=N.count-1,H=[],X=0,W=0,$;for(let dt of NB){let Ln=M*dt;for(;X<Ln;)$=T[W++],X+=$.count,W===1&&X--;let Vr=T[W>1?W-2:0];$||($=T[0]),H.push($.value-($.value-Vr.value)*(X-Ln)/$.count)}let[se,z,fe,ue,Z,Ae,me,ye,Ht]=H;Object.assign(N,{p1:se,p10:z,p25:fe,median:ue,p75:Z,p90:Ae,p95:me,p99:ye,p999:Ht})}let d;for(let[E,T]of c)T.id=(0,w_.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,w_.getNextMonotonicTime)(),T={id:E,metric:"main-thread-utilization",idle:h-dB,active:m-fB,taskQueueLatency:await s,time:_,...process.memoryUsage()};n.primaryStore.put(E,T,{append:!0}).then(N=>{N||n.primaryStore.put(E,T)})}dB=h,fB=m;let S=process.resourceUsage(),g=IB(O_,S);g.time=_,g.period=O_.time?_-O_.time:t,g.cpuUtilization=wB(O_,g.period),bE(n,"resource-usage",g),O_=g;let R=Xe();lB(n,R),lB(n,{system:R.system}),uB(n,R),uB(n,{system:R.system})}async function _B(e,t){let r=Date.now()-t;for(let n of e.primaryStore.getKeys({start:!1,end:r}))e.primaryStore.remove(n)}function xb(){return hB||(hB=ft({table:"hdb_raw_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"action"},{name:"metrics"}]}))}function PB(){return mB||(mB=ft({table:"hdb_analytics",database:"system",audit:!1,trackDeletes:!1,attributes:[{name:"id",isPrimaryKey:!0},{name:"metric"},{name:"path"},{name:"method"},{name:"type"}]}))}function wte(){DB=!0;let e=(0,I_.get)(x.ANALYTICS_AGGREGATEPERIOD)*1e3;e&&setInterval(async()=>{await bte(yB,e),await _B(xb(),Ote),await _B(PB(),Nte)},Math.min(e/2,2147483647)).unref()}function LB(e,t){let r=e.report;r.threadId=t?.threadId||jc.threadId;for(let n of r.metrics)n.metric==="bytes-sent"&&(pB+=n.mean*n.count);r.totalBytesProcessed=pB,t&&(r.metrics.push({metric:"utilization",...t.performance.eventLoopUtilization(EB.get(t))}),EB.set(t,t.performance.eventLoopUtilization())),r.id=(0,w_.getNextMonotonicTime)(),xb().primaryStore.put(r.id,r),DB||wte(),Ite&&(MB=Pte(r))}async function Pte(e){if(await MB,!pa){let r=(0,N_.dirname)((0,SB.getLogFilePath)());try{pa=await(0,Ub.open)((0,N_.join)(r,"analytics.log"),"r+")}catch{pa=await(0,Ub.open)((0,N_.join)(r,"analytics.log"),"w+")}}let t=(await pa.stat()).size;if(t>Cte){let r=Buffer.alloc(t);await pa.read(r,{position:0}),r=r.subarray(r.indexOf(10,r.length/2)+1),await pa.write(r,{position:0}),await pa.truncate(r.length),t=r.length}await pa.write(JSON.stringify(e)+`