harperdb 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -59,4 +59,4 @@ HarperDB will prompt you for configuration options during install, and then auto
59
59
 
60
60
  ***
61
61
 
62
- 478ec2b63c168ab9c063c626c063749b8e05ecae
62
+ 5028ebe6c2c697d3628b7b23b1867a653f5762f6
package/bin/harperdb.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";var ug=Object.defineProperty;var o=(e,t)=>ug(e,"name",{value:t,configurable:!0});var d=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var T=d((I0,ml)=>{"use strict";var be=require("path"),lg=require("fs");function Eg(){let e=__dirname;for(;!lg.existsSync(be.join(e,"package.json"));){let t=be.dirname(e);if(t===e)throw new Error("Could not find package root");e=t}return e}o(Eg,"getHDBPackageRoot");var Et=Eg(),_l="js",_n=_l,dg="harperdb-config.yaml",Sg="defaultConfig.yaml",hg="hdb",cl=`hdbServer.${_n}`,ul=`customFunctionsServer.${_n}`,ll=`hdbIpcServer.${_n}`,fg=`restartHdb.${_n}`,t_="HarperDB",di="Custom Functions",Si="Clustering Hub",hi="Clustering Leaf",r_="Clustering Ingest Service",s_="Clustering Reply Service",Tg="foreground.pid",e_={HDB:t_,IPC:"IPC",CLUSTERING_HUB:Si,CLUSTERING_LEAF:hi,CLUSTERING_INGEST_SERVICE:r_,CLUSTERING_REPLY_SERVICE:s_,CUSTOM_FUNCTIONS:di,RESTART_HDB:"Restart HDB",INSTALL:"Install",RUN:"Run",STOP:"Stop",UPGRADE:"Upgrade",REGISTER:"Register",JOB:"Job",PM2_LOGROTATE:"pm2-logrotate",CLUSTERING_UPGRADE_4_0_0:"Upgrade-4-0-0"},Rg={HDB:"hdb.log",IPC:"ipc.log",CLUSTERING_HUB:"clustering_hub.log",CLUSTERING_LEAF:"clustering_leaf.log",CLUSTERING_INGEST_SERVICE:"clustering_ingest_service.log",CLUSTERING_REPLY_SERVICE:"clustering_reply_service.log",CUSTOM_FUNCTIONS:"custom_functions.log",INSTALL:"install.log",CLI:"cli.log",PM2:"pm2.log",CLUSTERING_UPGRADE:"clustering_upgrade.log",JOBS:"jobs.log"},Ag={NOTIFY:"notify",FATAL:"fatal",ERROR:"error",WARN:"warn",INFO:"info",DEBUG:"debug",TRACE:"trace"},mg={harperdb:t_,ipc:"IPC","clustering hub":Si,"clustering leaf":hi,"clustering ingest service":r_,"clustering reply service":s_,"custom functions":di,custom_functions:di,"pm2-logrotate":e_.PM2_LOGROTATE,logrotate:e_.PM2_LOGROTATE,clustering:"clustering","clustering config":"clustering config"},gg={CLUSTERING_HUB_PROC_DESCRIPTOR:Si,CLUSTERING_LEAF_PROC_DESCRIPTOR:hi,CLUSTERING_INGEST_PROC_DESCRIPTOR:r_,CLUSTERING_REPLY_SERVICE_DESCRIPTOR:s_},Ei={HDB:be.join(Et,"server/harperdb"),IPC:be.join(Et,"server/ipc"),CUSTOM_FUNCTIONS:be.join(Et,"server/customFunctions"),CLUSTERING_HUB:be.join(Et,"server/nats"),CLUSTERING_LEAF:be.join(Et,"server/nats")},pg={HDB:be.join(Ei.HDB,cl),IPC:be.join(Ei.IPC,ll),CUSTOM_FUNCTIONS:be.join(Ei.CUSTOM_FUNCTIONS,ul)},Ng={HDB:be.join(Et,"launchServiceScripts/launchHarperDB.js"),CUSTOM_FUNCTIONS:be.join(Et,"launchServiceScripts/launchCustomFunctions.js"),NATS_INGEST_SERVICE:be.join(Et,"launchServiceScripts/launchNatsIngestService.js"),NATS_REPLY_SERVICE:be.join(Et,"launchServiceScripts/launchNatsReplyService.js"),NODES_UPGRADE_4_0_0:be.resolve(Et,"launchServiceScripts/launchUpdateNodes4-0-0.js")},Og={SUPER_USER:"super_user",CLUSTER_USER:"cluster_user"},El="support@harperdb.io",Ig="customer-success@harperdb.io",dl=1,Cg=4141,Sl="https://harperdbhelp.zendesk.com/hc/en-us/requests/new",bg="https://www.harperdb.io/product",Lg=`For support, please submit a request at ${Sl} or contact ${El}`,hl=`For license support, please contact ${Ig}`,yg="None of the specified records were found.",wg="hash attribute not found",Dg=`Your current license only supports ${dl} role. ${hl}`,Mg="Your current license only supports 3 connections to a node.",Ug="127.0.0.1",Pg=1,Bg=/^\.$/,Hg=/^\.\.$/,vg="U+002E",Gg=/\//g,qg="U+002F",Fg=/U\+002F/g,Vg=/^U\+002E$/,xg=/^U\+002EU\+002E$/,kg="d",$g=999999,Yg="*",Kg="--max-old-space-size=",Wg="system",Qg="__hdb_hash",jg=".harperdb",Jg=".hdb",Zg="keys",Xg="hdb_boot_properties.file",zg=".updateConfig.json",ep="SIGTSTP",tp=24,rp=6e4,sp=448,np="blob",ip="trash",op="schema",ap="transactions",_p=".count",cp="id",up="install_log.log",lp="run_log.log",Ep="PROCESS_NAME",dp={SETTINGS_PATH_KEY:"settings_path"},fl=require("lodash"),Sp={TC_AGREEMENT:"TC_AGREEMENT",CLUSTERING_USER:"CLUSTERING_USER",CLUSTERING_PASSWORD:"CLUSTERING_PASSWORD",HDB_ADMIN_USERNAME:"HDB_ADMIN_USERNAME",HDB_ADMIN_PASSWORD:"HDB_ADMIN_PASSWORD",OPERATIONSAPI_ROOT:"OPERATIONSAPI_ROOT",ROOTPATH:"ROOTPATH",OPERATIONSAPI_NETWORK_PORT:"OPERATIONSAPI_NETWORK_PORT",CLUSTERING_NODENAME:"CLUSTERING_NODENAME",CLUSTERING_ENABLED:"CLUSTERING_ENABLED",CLUSTERING_PORT:"CLUSTERING_PORT",HDB_ROOT:"HDB_ROOT",SERVER_PORT:"SERVER_PORT",NODE_NAME:"NODE_NAME",CLUSTERING:"CLUSTERING"},hp={HDB_PATH_KEY:"HDB_INTERNAL_PATH",HDB_AUTH_HEADER:"hdb_auth_header",HDB_USER_DATA_KEY:"hdb_user",CHUNK_SIZE:1e3,MAX_CHARACTER_SIZE:250},fp={DATA_VERSION:"data_version",UPGRADE_VERSION:"upgrade_version"},Tp={JOB_TABLE_NAME:"hdb_job",NODE_TABLE_NAME:"hdb_nodes",ATTRIBUTE_TABLE_NAME:"hdb_attribute",LICENSE_TABLE_NAME:"hdb_license",ROLE_TABLE_NAME:"hdb_role",SCHEMA_TABLE_NAME:"hdb_schema",TABLE_TABLE_NAME:"hdb_table",USER_TABLE_NAME:"hdb_user",INFO_TABLE_NAME:"hdb_info"},Rp={JOB_TABLE_HASH_ATTRIBUTE:"id",NODE_TABLE_HASH_ATTRIBUTE:"name",ATTRIBUTE_TABLE_HASH_ATTRIBUTE:"id",LICENSE_TABLE_HASH_ATTRIBUTE:"license_key",ROLE_TABLE_HASH_ATTRIBUTE:"id",SCHEMA_TABLE_HASH_ATTRIBUTE:"name",TABLE_TABLE_HASH_ATTRIBUTE:"id",USER_TABLE_HASH_ATTRIBUTE:"username",INFO_TABLE_ATTRIBUTE:"info_id"},Ke="hdb_internal:",Ap={CREATE_SCHEMA:Ke+"create_schema",CREATE_TABLE:Ke+"create_table",CREATE_ATTRIBUTE:Ke+"create_attribute",ADD_USER:Ke+"add_user",ALTER_USER:Ke+"alter_user",DROP_USER:Ke+"drop_user",HDB_NODES:Ke+"hdb_nodes",HDB_USERS:Ke+"hdb_users",HDB_WORKERS:Ke+"hdb_workers",CATCHUP:Ke+"catchup",SCHEMA_CATCHUP:Ke+"schema_catchup",WORKER_ROOM:Ke+"cluster_workers"},mp={ATTR_ATTRIBUTE_KEY:"attribute",ATTR_CREATEDDATE_KEY:"createddate",ATTR_HASH_ATTRIBUTE_KEY:"hash_attribute",ATTR_ID_KEY:"id",ATTR_NAME_KEY:"name",ATTR_PASSWORD_KEY:"password",ATTR_RESIDENCE_KEY:"residence",ATTR_ROLE_KEY:"role",ATTR_SCHEMA_KEY:"schema",ATTR_SCHEMA_TABLE_KEY:"schema_table",ATTR_TABLE_KEY:"table",ATTR_USERNAME_KEY:"username"},gp="060493.ks",pp=".license",Np={CREATED:"CREATED",IN_PROGRESS:"IN_PROGRESS",COMPLETE:"COMPLETE",ERROR:"ERROR"},m={INSERT:"insert",UPDATE:"update",UPSERT:"upsert",SEARCH_BY_CONDITIONS:"search_by_conditions",SEARCH_BY_HASH:"search_by_hash",SEARCH_BY_VALUE:"search_by_value",SEARCH:"search",SQL:"sql",CSV_DATA_LOAD:"csv_data_load",CSV_FILE_LOAD:"csv_file_load",CSV_URL_LOAD:"csv_url_load",CREATE_SCHEMA:"create_schema",CREATE_TABLE:"create_table",CREATE_ATTRIBUTE:"create_attribute",DROP_SCHEMA:"drop_schema",DROP_TABLE:"drop_table",DESCRIBE_SCHEMA:"describe_schema",DESCRIBE_TABLE:"describe_table",DESCRIBE_ALL:"describe_all",DELETE:"delete",ADD_USER:"add_user",ALTER_USER:"alter_user",DROP_USER:"drop_user",LIST_USERS:"list_users",LIST_ROLES:"list_roles",ADD_ROLE:"add_role",ALTER_ROLE:"alter_role",DROP_ROLE:"drop_role",USER_INFO:"user_info",READ_LOG:"read_log",ADD_NODE:"add_node",UPDATE_NODE:"update_node",EXPORT_TO_S3:"export_to_s3",IMPORT_FROM_S3:"import_from_s3",DELETE_FILES_BEFORE:"delete_files_before",DELETE_RECORDS_BEFORE:"delete_records_before",EXPORT_LOCAL:"export_local",SEARCH_JOBS_BY_START_DATE:"search_jobs_by_start_date",GET_JOB:"get_job",DELETE_JOB:"delete_job",UPDATE_JOB:"update_job",GET_FINGERPRINT:"get_fingerprint",SET_LICENSE:"set_license",GET_REGISTRATION_INFO:"registration_info",CONFIGURE_CLUSTER:"configure_cluster",SET_CONFIGURATION:"set_configuration",CLUSTER_STATUS:"cluster_status",DROP_ATTRIBUTE:"drop_attribute",REMOVE_NODE:"remove_node",RESTART:"restart",RESTART_SERVICE:"restart_service",CATCHUP:"catchup",SYSTEM_INFORMATION:"system_information",DELETE_AUDIT_LOGS_BEFORE:"delete_audit_logs_before",READ_AUDIT_LOG:"read_audit_log",CREATE_AUTHENTICATION_TOKENS:"create_authentication_tokens",REFRESH_OPERATION_TOKEN:"refresh_operation_token",GET_CONFIGURATION:"get_configuration",CUSTOM_FUNCTIONS_STATUS:"custom_functions_status",GET_CUSTOM_FUNCTIONS:"get_custom_functions",GET_CUSTOM_FUNCTION:"get_custom_function",SET_CUSTOM_FUNCTION:"set_custom_function",DROP_CUSTOM_FUNCTION:"drop_custom_function",ADD_CUSTOM_FUNCTION_PROJECT:"add_custom_function_project",DROP_CUSTOM_FUNCTION_PROJECT:"drop_custom_function_project",PACKAGE_CUSTOM_FUNCTION_PROJECT:"package_custom_function_project",DEPLOY_CUSTOM_FUNCTION_PROJECT:"deploy_custom_function_project",CLUSTER_SET_ROUTES:"cluster_set_routes",CLUSTER_DELETE_ROUTES:"cluster_delete_routes",CLUSTER_GET_ROUTES:"cluster_get_routes",READ_TRANSACTION_LOG:"read_transaction_log",DELETE_TRANSACTION_LOGS_BEFORE:"delete_transaction_logs_before",INSTALL_NODE_MODULES:"install_node_modules",AUDIT_NODE_MODULES:"audit_node_modules"},Op={CSV:".csv",JSON:".json"},Ip={AWS_ACCESS_KEY:"aws_access_key_id",AWS_SECRET:"aws_secret_access_key",AWS_BUCKET:"bucket",AWS_FILE_KEY:"key"},Cp={SELECT:"select",INSERT:"insert",UPDATE:"update",DELETE:"delete"},ur={};ur[m.CREATE_SCHEMA]=m.CREATE_SCHEMA;ur[m.CREATE_TABLE]=m.CREATE_TABLE;ur[m.CREATE_ATTRIBUTE]=m.CREATE_ATTRIBUTE;ur[m.INSERT]=m.INSERT;ur[m.UPDATE]=m.UPDATE;ur[m.UPSERT]=m.UPSERT;ur[m.DELETE]=m.DELETE;var x=Object.create(null);x[m.DESCRIBE_ALL]=m.DESCRIBE_ALL;x[m.DESCRIBE_TABLE]=m.DESCRIBE_TABLE;x[m.DESCRIBE_SCHEMA]=m.DESCRIBE_SCHEMA;x[m.READ_LOG]=m.READ_LOG;x[m.ADD_NODE]=m.ADD_NODE;x[m.LIST_USERS]=m.LIST_USERS;x[m.LIST_ROLES]=m.LIST_ROLES;x[m.USER_INFO]=m.USER_INFO;x[m.SQL]=m.SQL;x[m.GET_JOB]=m.GET_JOB;x[m.SEARCH_JOBS_BY_START_DATE]=m.SEARCH_JOBS_BY_START_DATE;x[m.DELETE_FILES_BEFORE]=m.DELETE_FILES_BEFORE;x[m.EXPORT_LOCAL]=m.EXPORT_LOCAL;x[m.EXPORT_TO_S3]=m.EXPORT_TO_S3;x[m.CLUSTER_STATUS]=m.CLUSTER_STATUS;x[m.REMOVE_NODE]=m.REMOVE_NODE;x[m.RESTART]=m.RESTART;x[m.CUSTOM_FUNCTIONS_STATUS]=m.CUSTOM_FUNCTIONS_STATUS;x[m.GET_CUSTOM_FUNCTIONS]=m.GET_CUSTOM_FUNCTIONS;x[m.GET_CUSTOM_FUNCTION]=m.GET_CUSTOM_FUNCTION;x[m.SET_CUSTOM_FUNCTION]=m.SET_CUSTOM_FUNCTION;x[m.DROP_CUSTOM_FUNCTION]=m.DROP_CUSTOM_FUNCTION;x[m.ADD_CUSTOM_FUNCTION_PROJECT]=m.ADD_CUSTOM_FUNCTION_PROJECT;x[m.DROP_CUSTOM_FUNCTION_PROJECT]=m.DROP_CUSTOM_FUNCTION_PROJECT;x[m.PACKAGE_CUSTOM_FUNCTION_PROJECT]=m.PACKAGE_CUSTOM_FUNCTION_PROJECT;x[m.DEPLOY_CUSTOM_FUNCTION_PROJECT]=m.DEPLOY_CUSTOM_FUNCTION_PROJECT;var bp={RUN:"run",INSTALL:"install",REGISTER:"register",STOP:"stop",RESTART:"restart",VERSION:"version",UPGRADE:"upgrade"},Lp={point:"point",lineString:"lineString",multiLineString:"multiLineString",multiPoint:"multiPoint",multiPolygon:"multiPolygon",polygon:"polygon"},Tl={HDB_ROOT_KEY:"HDB_ROOT",SERVER_PORT_KEY:"SERVER_PORT",CERT_KEY:"CERTIFICATE",PRIVATE_KEY_KEY:"PRIVATE_KEY",HTTP_SECURE_ENABLED_KEY:"HTTPS_ON",CORS_ENABLED_KEY:"CORS_ON",CORS_WHITELIST_KEY:"CORS_WHITELIST",LOG_LEVEL_KEY:"LOG_LEVEL",LOGGER_KEY:"LOGGER",LOG_PATH_KEY:"LOG_PATH",LOG_ROTATE:"LOG_ROTATE",LOG_ROTATE_MAX_SIZE:"LOG_ROTATE_MAX_SIZE",LOG_ROTATE_RETAIN:"LOG_ROTATE_RETAIN",LOG_ROTATE_COMPRESS:"LOG_ROTATE_COMPRESS",LOG_ROTATE_DATE_FORMAT:"LOG_ROTATE_DATE_FORMAT",LOG_ROTATE_ROTATE_MODULE:"LOG_ROTATE_ROTATE_MODULE",LOG_ROTATE_WORKER_INTERVAL:"LOG_ROTATE_WORKER_INTERVAL",LOG_ROTATE_ROTATE_INTERVAL:"LOG_ROTATE_ROTATE_INTERVAL",LOG_ROTATE_TIMEZONE:"LOG_ROTATE_TIMEZONE",LOG_DAILY_ROTATE_KEY:"LOG_DAILY_ROTATE",LOG_MAX_DAILY_FILES_KEY:"LOG_MAX_DAILY_FILES",PROPS_ENV_KEY:"NODE_ENV",SETTINGS_PATH_KEY:"settings_path",CLUSTERING_PORT_KEY:"CLUSTERING_PORT",CLUSTERING_NODE_NAME_KEY:"NODE_NAME",CLUSTERING_ENABLED_KEY:"CLUSTERING",ALLOW_SELF_SIGNED_SSL_CERTS:"ALLOW_SELF_SIGNED_SSL_CERTS",MAX_HDB_PROCESSES:"MAX_HDB_PROCESSES",INSTALL_USER:"install_user",CLUSTERING_USER_KEY:"CLUSTERING_USER",MAX_CLUSTERING_PROCESSES:"MAX_CLUSTERING_PROCESSES",SERVER_TIMEOUT_KEY:"SERVER_TIMEOUT_MS",SERVER_KEEP_ALIVE_TIMEOUT_KEY:"SERVER_KEEP_ALIVE_TIMEOUT",SERVER_HEADERS_TIMEOUT_KEY:"SERVER_HEADERS_TIMEOUT",DISABLE_TRANSACTION_LOG_KEY:"DISABLE_TRANSACTION_LOG",OPERATION_TOKEN_TIMEOUT_KEY:"OPERATION_TOKEN_TIMEOUT",REFRESH_TOKEN_TIMEOUT_KEY:"REFRESH_TOKEN_TIMEOUT",IPC_SERVER_PORT:"IPC_SERVER_PORT",CUSTOM_FUNCTIONS_ENABLED_KEY:"CUSTOM_FUNCTIONS",CUSTOM_FUNCTIONS_PORT_KEY:"CUSTOM_FUNCTIONS_PORT",CUSTOM_FUNCTIONS_DIRECTORY_KEY:"CUSTOM_FUNCTIONS_DIRECTORY",MAX_CUSTOM_FUNCTION_PROCESSES:"MAX_CUSTOM_FUNCTION_PROCESSES",LOG_TO_FILE:"LOG_TO_FILE",LOG_TO_STDSTREAMS:"LOG_TO_STDSTREAMS",RUN_IN_FOREGROUND:"RUN_IN_FOREGROUND",LOCAL_STUDIO_ON:"LOCAL_STUDIO_ON",STORAGE_WRITE_ASYNC:"STORAGE_WRITE_ASYNC"},yp=fl.invert(Tl),f={CLUSTERING_USER:"clustering_user",CLUSTERING_ENABLED:"clustering_enabled",CLUSTERING_HUBSERVER_CLUSTER_NAME:"clustering_hubServer_cluster_name",CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT:"clustering_hubServer_cluster_network_port",CLUSTERING_HUBSERVER_CLUSTER_NETWORK_ROUTES:"clustering_hubServer_cluster_network_routes",CLUSTERING_HUBSERVER_LEAFNODES_NETWORK_PORT:"clustering_hubServer_leafNodes_network_port",CLUSTERING_HUBSERVER_NETWORK_PORT:"clustering_hubServer_network_port",CLUSTERING_LEAFSERVER_NETWORK_PORT:"clustering_leafServer_network_port",CLUSTERING_LEAFSERVER_NETWORK_ROUTES:"clustering_leafServer_network_routes",CLUSTERING_NODENAME:"clustering_nodeName",CLUSTERING_TLS_CERTIFICATE:"clustering_tls_certificate",CLUSTERING_TLS_PRIVATEKEY:"clustering_tls_privateKey",CLUSTERING_TLS_CERT_AUTH:"clustering_tls_certificateAuthority",CLUSTERING_TLS_INSECURE:"clustering_tls_insecure",CUSTOMFUNCTIONS_ENABLED:"customFunctions_enabled",CUSTOMFUNCTIONS_NETWORK_PORT:"customFunctions_network_port",CUSTOMFUNCTIONS_TLS_CERTIFICATE:"customFunctions_tls_certificate",CUSTOMFUNCTIONS_NETWORK_CORS:"customFunctions_network_cors",CUSTOMFUNCTIONS_NETWORK_CORSACCESSLIST:"customFunctions_network_corsAccessList",CUSTOMFUNCTIONS_NETWORK_HEADERSTIMEOUT:"customFunctions_network_headersTimeout",CUSTOMFUNCTIONS_NETWORK_HTTPS:"customFunctions_network_https",CUSTOMFUNCTIONS_NETWORK_KEEPALIVETIMEOUT:"customFunctions_network_keepAliveTimeout",CUSTOMFUNCTIONS_TLS_PRIVATEKEY:"customFunctions_tls_privateKey",CUSTOMFUNCTIONS_TLS_CERT_AUTH:"customFunctions_tls_certificateAuthority",CUSTOMFUNCTIONS_NETWORK_TIMEOUT:"customFunctions_network_timeout",CUSTOMFUNCTIONS_NODEENV:"customFunctions_nodeEnv",CUSTOMFUNCTIONS_ROOT:"customFunctions_root",HTTP_THREADS:"http_threads",IPC_NETWORK_PORT:"ipc_network_port",LOCALSTUDIO_ENABLED:"localStudio_enabled",LOGGING_FILE:"logging_file",LOGGING_LEVEL:"logging_level",LOGGING_ROOT:"logging_root",LOGGING_ROTATION_COMPRESS:"logging_rotation_compress",LOGGING_ROTATION_DATEFORMAT:"logging_rotation_dateFormat",LOGGING_ROTATION_MAXSIZE:"logging_rotation_maxSize",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",LOGGING_STDSTREAMS:"logging_stdStreams",LOGGING_AUDITLOG:"logging_auditLog",OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT:"operationsApi_authentication_operationTokenTimeout",OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT:"operationsApi_authentication_refreshTokenTimeout",OPERATIONSAPI_FOREGROUND:"operationsApi_foreground",OPERATIONSAPI_TLS_CERTIFICATE:"operationsApi_tls_certificate",OPERATIONSAPI_NETWORK_CORS:"operationsApi_network_cors",OPERATIONSAPI_NETWORK_CORSACCESSLIST:"operationsApi_network_corsAccessList",OPERATIONSAPI_NETWORK_HEADERSTIMEOUT:"operationsApi_network_headersTimeout",OPERATIONSAPI_NETWORK_HTTPS:"operationsApi_network_https",OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT:"operationsApi_network_keepAliveTimeout",OPERATIONSAPI_NETWORK_PORT:"operationsApi_network_port",OPERATIONSAPI_TLS_PRIVATEKEY:"operationsApi_tls_privateKey",OPERATIONSAPI_TLS_CERT_AUTH:"operationsApi_tls_certificateAuthority",OPERATIONSAPI_NETWORK_TIMEOUT:"operationsApi_network_timeout",OPERATIONSAPI_NODEENV:"operationsApi_nodeEnv",ROOTPATH:"rootPath",STORAGE_WRITEASYNC:"storage_writeAsync",STORAGE_OVERLAPPINGSYNC:"storage_overlappingSync"},wp={hdb_root_key:f.ROOTPATH,hdb_root:f.ROOTPATH,server_port_key:f.OPERATIONSAPI_NETWORK_PORT,server_port:f.OPERATIONSAPI_NETWORK_PORT,cert_key:f.OPERATIONSAPI_TLS_CERTIFICATE,certificate:f.OPERATIONSAPI_TLS_CERTIFICATE,private_key_key:f.OPERATIONSAPI_TLS_PRIVATEKEY,private_key:f.OPERATIONSAPI_TLS_PRIVATEKEY,http_secure_enabled_key:f.OPERATIONSAPI_NETWORK_HTTPS,https_on:f.OPERATIONSAPI_NETWORK_HTTPS,cors_enabled_key:f.OPERATIONSAPI_NETWORK_CORS,cors_on:f.OPERATIONSAPI_NETWORK_CORS,cors_whitelist_key:f.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_whitelist:f.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_accesslist_key:f.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_accesslist:f.OPERATIONSAPI_NETWORK_CORSACCESSLIST,log_level_key:f.LOGGING_LEVEL,log_level:f.LOGGING_LEVEL,log_path_key:f.LOGGING_ROOT,log_path:f.LOGGING_ROOT,log_daily_rotate:f.LOGGING_ROTATION_ROTATE,log_rotate:f.LOGGING_ROTATION_ROTATE,log_rotate_max_size:f.LOGGING_ROTATION_MAXSIZE,log_rotate_retain:f.LOGGING_ROTATION_RETAIN,log_rotate_compress:f.LOGGING_ROTATION_COMPRESS,log_rotate_date_format:f.LOGGING_ROTATION_DATEFORMAT,log_rotate_rotate_module:f.LOGGING_ROTATION_ROTATEMODULE,log_rotate_worker_interval:f.LOGGING_ROTATION_WORKERINTERVAL,log_rotate_rotate_interval:f.LOGGING_ROTATION_ROTATEINTERVAL,log_rotate_timezone:f.LOGGING_ROTATION_TIMEZONE,props_env_key:f.OPERATIONSAPI_NODEENV,node_env:f.OPERATIONSAPI_NODEENV,clustering_node_name_key:f.CLUSTERING_NODENAME,node_name:f.CLUSTERING_NODENAME,clustering_enabled_key:f.CLUSTERING_ENABLED,clustering:f.CLUSTERING_ENABLED,max_http_threads:f.HTTP_THREADS,max_hdb_processes:f.HTTP_THREADS,server_timeout_key:f.OPERATIONSAPI_NETWORK_TIMEOUT,server_timeout_ms:f.OPERATIONSAPI_NETWORK_TIMEOUT,server_keep_alive_timeout_key:f.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,server_keep_alive_timeout:f.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,server_headers_timeout_key:f.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,server_headers_timeout:f.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,disable_transaction_log_key:f.LOGGING_AUDITLOG,disable_transaction_log:f.LOGGING_AUDITLOG,operation_token_timeout_key:f.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,operation_token_timeout:f.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,refresh_token_timeout_key:f.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,refresh_token_timeout:f.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,ipc_server_port:f.IPC_NETWORK_PORT,custom_functions_enabled_key:f.CUSTOMFUNCTIONS_ENABLED,custom_functions:f.CUSTOMFUNCTIONS_ENABLED,custom_functions_port_key:f.CUSTOMFUNCTIONS_NETWORK_PORT,custom_functions_port:f.CUSTOMFUNCTIONS_NETWORK_PORT,custom_functions_directory_key:f.CUSTOMFUNCTIONS_ROOT,custom_functions_directory:f.CUSTOMFUNCTIONS_ROOT,max_custom_function_processes:f.HTTP_THREADS,log_to_file:f.LOGGING_FILE,log_to_stdstreams:f.LOGGING_STDSTREAMS,run_in_foreground:f.OPERATIONSAPI_FOREGROUND,local_studio_on:f.LOCALSTUDIO_ENABLED,clustering_port:f.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT,clustering_user:f.CLUSTERING_USER,clustering_enabled:f.CLUSTERING_ENABLED,clustering_hubserver_cluster_name:f.CLUSTERING_HUBSERVER_CLUSTER_NAME,clustering_hubserver_cluster_network_port:f.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT,clustering_hubserver_cluster_network_routes:f.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_ROUTES,clustering_hubserver_leafnodes_network_port:f.CLUSTERING_HUBSERVER_LEAFNODES_NETWORK_PORT,clustering_hubserver_network_port:f.CLUSTERING_HUBSERVER_NETWORK_PORT,clustering_leafserver_network_port:f.CLUSTERING_LEAFSERVER_NETWORK_PORT,clustering_leafserver_network_routes:f.CLUSTERING_LEAFSERVER_NETWORK_ROUTES,clustering_nodename:f.CLUSTERING_NODENAME,clustering_tls_certificate:f.CLUSTERING_TLS_CERTIFICATE,clustering_tls_privatekey:f.CLUSTERING_TLS_PRIVATEKEY,clustering_tls_certificateauthority:f.CLUSTERING_TLS_CERT_AUTH,clustering_tls_insecure:f.CLUSTERING_TLS_INSECURE,customfunctions_enabled:f.CUSTOMFUNCTIONS_ENABLED,customfunctions_network_port:f.CUSTOMFUNCTIONS_NETWORK_PORT,customfunctions_tls_certificate:f.CUSTOMFUNCTIONS_TLS_CERTIFICATE,customfunctions_network_cors:f.CUSTOMFUNCTIONS_NETWORK_CORS,customfunctions_network_corsaccesslist:f.CUSTOMFUNCTIONS_NETWORK_CORSACCESSLIST,customfunctions_network_headerstimeout:f.CUSTOMFUNCTIONS_NETWORK_HEADERSTIMEOUT,customfunctions_network_https:f.CUSTOMFUNCTIONS_NETWORK_HTTPS,customfunctions_network_keepalivetimeout:f.CUSTOMFUNCTIONS_NETWORK_KEEPALIVETIMEOUT,customfunctions_tls_privatekey:f.CUSTOMFUNCTIONS_TLS_PRIVATEKEY,customfunctions_tls_certificateauthority:f.CUSTOMFUNCTIONS_TLS_CERT_AUTH,customfunctions_network_timeout:f.CUSTOMFUNCTIONS_NETWORK_TIMEOUT,customfunctions_nodeenv:f.CUSTOMFUNCTIONS_NODEENV,http_threads:f.HTTP_THREADS,customfunctions_processes:f.HTTP_THREADS,customfunctions_root:f.CUSTOMFUNCTIONS_ROOT,ipc_network_port:f.IPC_NETWORK_PORT,localstudio_enabled:f.LOCALSTUDIO_ENABLED,logging_file:f.LOGGING_FILE,logging_level:f.LOGGING_LEVEL,logging_root:f.LOGGING_ROOT,logging_rotation_compress:f.LOGGING_ROTATION_COMPRESS,logging_rotation_dateformat:f.LOGGING_ROTATION_DATEFORMAT,logging_rotation_maxsize:f.LOGGING_ROTATION_MAXSIZE,logging_rotation_retain:f.LOGGING_ROTATION_RETAIN,logging_rotation_rotate:f.LOGGING_ROTATION_ROTATE,logging_rotation_rotateinterval:f.LOGGING_ROTATION_ROTATEINTERVAL,logging_rotation_rotatemodule:f.LOGGING_ROTATION_ROTATEMODULE,logging_rotation_timezone:f.LOGGING_ROTATION_TIMEZONE,logging_rotation_workerinterval:f.LOGGING_ROTATION_WORKERINTERVAL,logging_stdstreams:f.LOGGING_STDSTREAMS,logging_auditlog:f.LOGGING_AUDITLOG,operationsapi_authentication_operationtokentimeout:f.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,operationsapi_authentication_refreshtokentimeout:f.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,operationsapi_foreground:f.OPERATIONSAPI_FOREGROUND,operationsapi_tls_certificate:f.OPERATIONSAPI_TLS_CERTIFICATE,operationsapi_network_cors:f.OPERATIONSAPI_NETWORK_CORS,operationsapi_network_corsaccesslist:f.OPERATIONSAPI_NETWORK_CORSACCESSLIST,operationsapi_network_headerstimeout:f.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,operationsapi_network_https:f.OPERATIONSAPI_NETWORK_HTTPS,operationsapi_network_keepalivetimeout:f.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,operationsapi_network_port:f.OPERATIONSAPI_NETWORK_PORT,operationsapi_tls_privatekey:f.OPERATIONSAPI_TLS_PRIVATEKEY,operationsapi_network_timeout:f.OPERATIONSAPI_NETWORK_TIMEOUT,operationsapi_nodeenv:f.OPERATIONSAPI_NODEENV,operationsapi_root:f.ROOTPATH,rootpath:f.ROOTPATH,storage_writeasync:f.STORAGE_WRITEASYNC,storage_overlappingsync:f.STORAGE_OVERLAPPINGSYNC},Dp={csv_file_load:"csv_file_load",csv_data_load:m.CSV_DATA_LOAD,csv_url_load:m.CSV_URL_LOAD,delete_files_before:"delete_files_before",delete_records_before:"delete_records_before",delete_audit_logs_before:"delete_audit_logs_before",delete_transaction_logs_before:"delete_transaction_logs_before",empty_trash:"empty_trash",export_local:"export_local",export_to_s3:"export_to_s3",import_from_s3:"import_from_s3"},Mp={CLUSTERING_PAYLOAD:"clustering_payload",DELEGATE_THREAD_RESPONSE:"delegate_thread_response",CLUSTERING:"clustering",SCHEMA:"schema",CLUSTER_STATUS:"cluster_status",JOB:"job",CHILD_STARTED:"child_started",CHILD_STOPPED:"child_stopped",USER:"user",RESTART:"restart"},Up={BIDIRECTIONAL:"BIDIRECTIONAL",OUTBOUND:"OUTBOUND",INBOUND:"INBOUND"},Pp={FILE_SYSTEM:"fs",LMDB:"lmdb"},Bp={API_CALL_DEFAULT:1e4,VERSION_DEFAULT:"2.2.0"},Hp={DEVELOPMENT:8192,DEFAULT:512},vp={IDENTIFY:"identify",AUTHENTICATE:"authenticate",AUTHENTICATE_OK:"authenticated",AUTHENTICATE_FAIL:"authenticate_fail",CONNECTION:"connection",CONNECT:"connect",CATCHUP_REQUEST:"catchup_request",CATCHUP_RESPONSE:"catchup",CONFIRM_MSG:"confirm_msg",ERROR:"error",DISCONNECT:"disconnect",SCHEMA_UPDATE_REQ:"schema_update_request",SCHEMA_UPDATE_RES:"schema_update_response",RECONNECT_ATTEMPT:"reconnect_attempt",CONNECT_ERROR:"connect_error",MESSAGE:"msg",VERSION_MISMATCH:"version_mismatch",DIRECTION_CHANGE:"direction_change"},Gp={1e3:"SUCCESSFUL_SHUTDOWN",1001:"CLOSE_GOING_AWAY",1002:"CLOSE_PROTOCOL_ERROR",1003:"CLOSE_UNSUPPORTED",1005:"CLOSE_NO_STATUS",1006:"CLOSE_ABNORMAL",1007:"UNSUPPORTED_PAYLOAD",1008:"POLICY_VIOLATION",1009:"CLOSE_TOO_LARGE",1010:"MANDATORY_EXTENSION",1011:"SERVER_ERROR",1012:"SERVICE_RESTART",1013:"SERVER_BUSY",1014:"BAD_GATEWAY",1015:"HANDSHAKE_FAIL",4141:"LICENSE_LIMIT_REACHED"},qp={ENOENT:"ENOENT",EACCES:"EACCES"},Rl={CREATED_TIME:"__createdtime__",UPDATED_TIME:"__updatedtime__"},Fp="__clustering__",Vp=Object.values(Rl),xp=15984864e5,Al={LESS:"<",LESS_OR_EQ:"<=",GREATER:">",GREATER_OR_EQ:">=",BETWEEN:"..."},kp=fl.invert(Al),$p={GET_CLUSTER_STATUS:"GET_CLUSTER_STATUS",CLUSTER_STATUS_RESPONSE:"CLUSTER_STATUS_RESPONSE",ERROR_RESPONSE:"ERROR",ADD_USER:"ADD_USER",ALTER_USER:"ALTER_USER",DROP_USER:"DROP_USER",HDB_OPERATION:"HDB_OPERATION",ADD_NODE:"ADD_NODE",UPDATE_NODE:"UPDATE_NODE",REMOVE_NODE:"REMOVE_NODE",HDB_USERS_MSG:"HDB_USERS_MSG",HDB_WORKERS:"HDB_WORKERS",HDB_TRANSACTION:"HDB_TRANSACTION"},Yp=111,Kp=`\r
3
3
  `,Wp={READ:"read",INSERT:"insert",UPDATE:"update",DELETE:"delete"},Qp=["*","%"],jp="unauthorized_access",Jp="func_val",Zp={HASH_VALUE:"hash_value",TIMESTAMP:"timestamp",USERNAME:"username"},Xp={JWT_PRIVATE_KEY_NAME:".jwtPrivate.key",JWT_PUBLIC_KEY_NAME:".jwtPublic.key",JWT_PASSPHRASE_NAME:".jwtPass"},zp="hdb_ipc_server",eN="hdb_ipc_client_",tN={RESTART:"restart",CHILD_STARTED:"child_started",CHILD_STOPPED:"child_stopped",SCHEMA:"schema",USER:"user",CLUSTER_STATUS_RESPONSE:"cluster_status_response",CLUSTER_STATUS_REQUEST:"cluster_status_request"},rN={HDB_CORE:"hdb_core",CUSTOM_FUNCTIONS:"custom_functions"},sN={STOPPED:"stopped",ONLINE:"online"},nN="3.x.x";ml.exports={LOCAL_HARPERDB_OPERATIONS:x,HDB_SUPPORT_ADDRESS:El,HDB_SUPPORT_URL:Sl,HDB_PRICING_URL:bg,SUPPORT_HELP_MSG:Lg,LICENSE_HELP_MSG:hl,HDB_PROC_NAME:cl,HDB_PROC_DESCRIPTOR:t_,CLUSTERING_LEAF_PROC_DESCRIPTOR:hi,CLUSTERING_HUB_PROC_DESCRIPTOR:Si,SYSTEM_SCHEMA_NAME:Wg,HASH_FOLDER_NAME:Qg,HDB_HOME_DIR_NAME:jg,UPDATE_FILE_NAME:zg,LICENSE_KEY_DIR_NAME:Zg,BOOT_PROPS_FILE_NAME:Xg,JOB_TYPE_ENUM:Dp,JOB_STATUS_ENUM:Np,SYSTEM_TABLE_NAMES:Tp,SYSTEM_TABLE_HASH_ATTRIBUTES:Rp,OPERATIONS_ENUM:m,VALID_S3_FILE_TYPES:Op,S3_BUCKET_AUTH_KEYS:Ip,VALID_SQL_OPS_ENUM:Cp,GEO_CONVERSION_ENUM:Lp,HDB_SETTINGS_NAMES:Tl,HDB_SETTINGS_NAMES_REVERSE_LOOKUP:yp,SERVICE_ACTIONS_ENUM:bp,CLUSTER_MESSAGE_TYPE_ENUM:Mp,CLUSTER_CONNECTION_DIRECTION_ENUM:Up,CLUSTER_EVENTS_DEFS_ENUM:vp,PERIOD_REGEX:Bg,DOUBLE_PERIOD_REGEX:Hg,UNICODE_PERIOD:vg,FORWARD_SLASH_REGEX:Gg,UNICODE_FORWARD_SLASH:qg,ESCAPED_FORWARD_SLASH_REGEX:Fg,ESCAPED_PERIOD_REGEX:Vg,ESCAPED_DOUBLE_PERIOD_REGEX:xg,REG_KEY_FILE_NAME:gp,RESTART_TIMEOUT_MS:rp,HDB_FILE_PERMISSIONS:sp,SCHEMA_DIR_NAME:op,TRANSACTIONS_DIR_NAME:ap,LIMIT_COUNT_NAME:_p,ID_ATTRIBUTE_STRING:cp,INSERT_MODULE_ENUM:hp,UPGRADE_JSON_FIELD_NAMES_ENUM:fp,RESTART_CODE:ep,RESTART_CODE_NUM:tp,CLUSTER_OPERATIONS:ur,SYSTEM_DEFAULT_ATTRIBUTE_NAMES:mp,HDB_INTERNAL_SC_CHANNEL_PREFIX:Ke,INTERNAL_SC_CHANNELS:Ap,CLUSTERING_MESSAGE_TYPES:$p,HDB_FILE_SUFFIX:Jg,BLOB_FOLDER_NAME:np,HDB_TRASH_DIR:ip,ORIGINATOR_SET_VALUE:Yp,LICENSE_VALUES:Bp,RAM_ALLOCATION_ENUM:Hp,STORAGE_TYPES_ENUM:Pp,TIME_STAMP_NAMES_ENUM:Rl,TIME_STAMP_NAMES:Vp,PERMS_UPDATE_RELEASE_TIMESTAMP:xp,SEARCH_NOT_FOUND_MESSAGE:yg,SEARCH_ATTRIBUTE_NOT_FOUND:wg,LICENSE_ROLE_DENIED_RESPONSE:Dg,LICENSE_MAX_CONNS_REACHED:Mg,BASIC_LICENSE_MAX_NON_CU_ROLES:dl,BASIC_LICENSE_CLUSTER_CONNECTION_LIMIT_WS_ERROR_CODE:Cg,VALUE_SEARCH_COMPARATORS:Al,VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP:kp,LICENSE_FILE_NAME:pp,WEBSOCKET_CLOSE_CODE_DESCRIPTION_LOOKUP:Gp,NEW_LINE:Kp,BASIC_LICENSE_MAX_CLUSTER_USER_ROLES:Pg,MOMENT_DAYS_TAG:kg,API_TURNOVER_SEC:$g,LOOPBACK:Ug,CODE_EXTENSION:_n,WILDCARD_SEARCH_VALUE:Yg,NODE_ERROR_CODES:qp,JAVASCRIPT_EXTENSION:_l,PERMS_CRUD_ENUM:Wp,UNAUTHORIZED_PERMISSION_NAME:jp,SEARCH_WILDCARDS:Qp,FUNC_VAL:Jp,READ_AUDIT_LOG_SEARCH_TYPES_ENUM:Zp,JWT_ENUM:Xp,CLUSTERING_FLAG:Fp,RUN_LOG:lp,INSTALL_LOG:up,IPC_SERVER_MODULE:ll,HDB_IPC_SERVER:zp,IPC_EVENT_TYPES:tN,HDB_IPC_CLIENT_PREFIX:eN,CUSTOM_FUNCTION_PROC_NAME:ul,CUSTOM_FUNCTION_PROC_DESCRIPTOR:di,SERVICES:rN,MEM_SETTING_KEY:Kg,HDB_RESTART_SCRIPT:fg,PROCESS_DESCRIPTORS:e_,SERVICE_SERVERS:pg,SERVICE_SERVERS_CWD:Ei,PROCESS_DESCRIPTORS_VALIDATE:mg,LAUNCH_SERVICE_SCRIPTS:Ng,LOG_LEVELS:Ag,PROCESS_NAME_ENV_PROP:Ep,PROCESS_LOG_NAMES:Rg,PM2_PROCESS_STATUSES:sN,CONFIG_PARAM_MAP:wp,CONFIG_PARAMS:f,HDB_CONFIG_FILE:dg,HDB_DEFAULT_CONFIG_FILE:Sg,ROLE_TYPES_ENUM:Og,BOOT_PROP_PARAMS:dp,INSTALL_PROMPTS:Sp,HDB_ROOT_DIR_NAME:hg,CLUSTERING_PROCESSES:gg,FOREGROUND_PID_FILE:Tg,PACKAGE_ROOT:Et,PRE_4_0_0_VERSION:nN}});var ds=d((C0,Nl)=>{"use strict";var gl=require("minimist");Nl.exports=iN;function iN(e=[],t=!1){if(!Array.isArray(e))return{};let r,s;t?(r=pl(process.env),s=pl(gl(process.argv))):(r=process.env,s=gl(process.argv));let n={};for(let i=0,a=e.length;i<a;i++){let _=e[i];s[_]!==void 0?n[_]=s[_].toString().trim():r[_]!==void 0&&(n[_]=r[_].toString().trim())}return n}o(iN,"assignCMDENVVariables");function pl(e){let t,r=Object.keys(e),s=r.length,n={};for(;s--;)t=r[s],n[t.toLowerCase()]=e[t];return n}o(pl,"objKeysToLowerCase")});var O=d((b0,wl)=>{"use strict";var Fr=require("fs-extra"),Vr=require("path"),Il=require("yaml"),Cl=require("properties-reader"),_e=T(),oN=ds(),aN=require("os"),{PACKAGE_ROOT:o_}=T(),Be={notify:7,fatal:6,error:5,warn:4,info:3,debug:2,trace:1},fi=Vr.join(o_,"logs"),lr=process.env.pm_id===void 0,_N=Vr.join(o_,"config/yaml/",_e.HDB_DEFAULT_CONFIG_FILE),a_=process.env.PROCESS_NAME===void 0?_e.PROCESS_DESCRIPTORS.INSTALL:process.env.PROCESS_NAME,Ss,Ot,xt,Pe,n_,hs;hs===void 0&&bl();wl.exports={createLogFile:cN,notify:EN,fatal:dN,error:i_,warn:SN,info:uN,debug:lN,trace:yl,setLogLevel:fN,log_level:Pe};function bl(){try{if(hs===void 0){let e=hN();hs=Cl(e),{level:Pe,config_log_path:n_,to_file:Ot,to_stream:xt}=TN(hs.get("settings_path"))}}catch(e){if(hs=void 0,e.code===_e.NODE_ERROR_CODES.ENOENT){let t=oN(Object.keys(_e.CONFIG_PARAM_MAP),!0);for(let i in t){let a=_e.CONFIG_PARAM_MAP[i];a&&a.toLowerCase();let _=t[i];if(a===_e.CONFIG_PARAMS.LOGGING_LEVEL){Pe=_;continue}if(a===_e.CONFIG_PARAMS.LOGGING_STDSTREAMS){xt=_;continue}a===_e.CONFIG_PARAMS.LOGGING_FILE&&(Ot=a)}let{default_level:r,default_to_file:s,default_to_stream:n}=RN();Ot=Ot===void 0?s:Ot,Ot=Ol(Ot),xt=xt===void 0?n:xt,xt=Ol(xt),Pe=Pe===void 0?r:Pe,n_=fi;return}throw i_("Error initializing log settings"),i_(e),e}}o(bl,"initLogSettings");function cN(e,t){if(!lr){yl("createLogFile should only be used if the process is not being managed by pm2");return}hs===void 0&&bl(),a_=t;let r;e===_e.PROCESS_LOG_NAMES.INSTALL?r=fi:r=n_,Ot&&(Ss=Vr.join(r,e),Fr.ensureFileSync(Ss))}o(cN,"createLogFile");function xr(e,t){let r=new Date(Date.now()).toISOString(),s="",n=t.length,i=n-1;for(let a=0;a<n;a++){let _=t[a];_ instanceof Error&&_.stack?s+=_.stack:typeof _=="object"?s+=JSON.stringify(_):s+=_,a<i&&(s+=" ")}return`{"process_name": "${a_}", "level": "${e}", "timestamp": "${r}", "message": "${s}"}
4
- `}o(xr,"createLogRecord");function Ll(e){Ss===void 0&&(a_=_e.PROCESS_DESCRIPTORS.INSTALL,Fr.ensureDirSync(fi),Ss=Vr.join(fi,_e.PROCESS_LOG_NAMES.INSTALL),Fr.ensureFileSync(Ss)),Fr.appendFileSync(Ss,e)}o(Ll,"writeToLogFile");function Ti(e){Ot&&Ll(e),xt&&process.stdout.write(e)}o(Ti,"nonPm2LogStdOut");function __(e){Ot&&Ll(e),xt&&process.stderr.write(e)}o(__,"nonPm2LogStdErr");function uN(...e){if(Be[Pe]<=Be.info){let t=xr("info",e);if(lr){Ti(t);return}process.stdout.write(t)}}o(uN,"info");function yl(...e){if(Be[Pe]<=Be.trace){let t=xr("trace",e);if(lr){Ti(t);return}process.stdout.write(t)}}o(yl,"trace");function i_(...e){if(Be[Pe]<=Be.error){let t=xr("error",e);if(lr){__(t);return}process.stderr.write(t)}}o(i_,"error");function lN(...e){if(Be[Pe]<=Be.debug){let t=xr("debug",e);if(lr){Ti(t);return}process.stdout.write(t)}}o(lN,"debug");function EN(...e){if(Be[Pe]<=Be.notify){let t=xr("notify",e);if(lr){Ti(t);return}process.stdout.write(t)}}o(EN,"notify");function dN(...e){if(Be[Pe]<=Be.fatal){let t=xr("fatal",e);if(lr){__(t);return}process.stderr.write(t)}}o(dN,"fatal");function SN(...e){if(Be[Pe]<=Be.warn){let t=xr("warn",e);if(lr){__(t);return}process.stderr.write(t)}}o(SN,"warn");function hN(){let e;try{e=aN.homedir()}catch{e=process.env.HOME}e||(e="~/");let t=Vr.join(e,_e.HDB_HOME_DIR_NAME,_e.BOOT_PROPS_FILE_NAME);return Fr.existsSync(t)||(t=Vr.join(o_,"utility/hdb_boot_properties.file")),t}o(hN,"getPropsFilePath");function fN(e){Pe=e}o(fN,"setLogLevel");function Ol(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}o(Ol,"autoCastBoolean");function TN(e){try{if(e.includes("config/settings.js")){let a=Cl(e);return{level:a.get(_e.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY),config_log_path:Vr.dirname(a.get(_e.HDB_SETTINGS_NAMES.LOG_PATH_KEY)),to_file:a.get(_e.HDB_SETTINGS_NAMES.LOG_TO_FILE),to_stream:a.get(_e.HDB_SETTINGS_NAMES.LOG_TO_STDSTREAMS)}}let t=Il.parseDocument(Fr.readFileSync(e,"utf8")),r=t.getIn(["logging","level"]),s=t.getIn(["logging","root"]),n=t.getIn(["logging","file"]),i=t.getIn(["logging","stdStreams"]);return{level:r,config_log_path:s,to_file:n,to_stream:i}}catch(t){if(t.code===_e.NODE_ERROR_CODES.ENOENT)throw t;console.error("Error accessing config file for logging"),console.error(t)}}o(TN,"getLogConfig");function RN(){try{let e=Il.parseDocument(Fr.readFileSync(_N,"utf8")),t=e.getIn(["logging","level"]),r=e.getIn(["logging","file"]),s=e.getIn(["logging","stdStreams"]);return{default_level:t,default_to_file:r,default_to_stream:s}}catch(e){console.error("Error accessing default config file for logging"),console.error(e)}}o(RN,"getDefaultConfig")});var cn=d((L0,AN)=>{AN.exports={name:"harperdb",version:"4.0.0",description:"HarperDB is a distributed SQL & NoSQL data platform focused on speed, flexibility, and ease of use.",keywords:["database","sql","nosql","api","distributed","cloud","enterprise","Fastify","NATS"],main:"harperdb.js",bin:{harperdb:"./bin/harperdb.js"},engines:{node:">=14.0.0","preferred-node":"18.13.0","go-lang":"1.19.3","nats-server":"2.9.8"},homepage:"https://www.harperdb.io/",bugs:"support@harperdb.io",author:{name:"HarperDB",email:"support@harperdb.io"},license:"See License in ./license/Community+Edition+and+Evaluation+End+User+License+Agreement.pdf",scripts:{submodules:"git submodule update --init --recursive",build:"eslint -c ./.eslintbuild bin/ data_layer/ security/ server/ sqlTranslator/ upgrade/ utility/ validation/",pretty:"eslint --fix bin/ data_layer/ security/ server/ sqlTranslator/ upgrade/ utility/ validation/",test:"rimraf ./.nyc_output/* && node utility/devops/register.js --reset_license --storage_type=lmdb && npm run cover:upgrade && npm run cover:nats && npm run cover:cfserver && npm run cover:lmdbbridge && npm run cover:lmdbutility && npm run cover:hdbserver && npm run cover:main && nyc merge .nyc_output coverage.json && node ./utility/devops/register.js --reset_license --storage_type=lmdb","cover:main":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/**/*.js' --config '../unitTests/.mocharc-main.json'","cover:lmdbbridge":"cd bin/ && nyc --no-clean --reporter=lcovonly --retries 3 ../node_modules/mocha/bin/_mocha '../unitTests/data_layer/harperBridge/lmdbBridge/**/*.js' --parallel --config '../unitTests/.mocharc.json'","cover:lmdbutility":"cd bin/ && nyc --no-clean --reporter=lcovonly --retries 3 ../node_modules/mocha/bin/_mocha '../unitTests/utility/lmdb/**/*.js' --parallel --config '../unitTests/.mocharc.json'","cover:hdbserver":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/server/harperdb/hdbServer-test.js' --parallel --config '../unitTests/.mocharc.json'","cover:cfserver":"npm run submodules && cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/server/customFunctions/customFunctionsServer-test.js' --config '../unitTests/.mocharc.json'","cover:nats":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/server/nats/**/*.js' --config '../unitTests/.mocharc.json'","cover:upgrade":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/upgrade/**/*.js' --config '../unitTests/.mocharc.json'","test:ci":" cd bin/ && ../node_modules/mocha/bin/_mocha '../unitTests/**/*.js' --retries 3 --config '../unitTests/.mocharc-main.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/data_layer/harperBridge/lmdbBridge/**/*.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/utility/lmdb/**/*.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/server/harperdb/hdbServer-test.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/server/customFunctions/customFunctionsServer-test.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/upgrade/**/*.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/server/nats/**/*.js' --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter","hdb-check":"./utility/devops/hdb-check.sh","download-prebuilds":"node ./utility/devops/build/download-prebuilds.js",prebuild:"date",postinstall:"node ./launchServiceScripts/launchInstallNATSServer.js",build_nats_dependency:"node ./utility/devops/nats/builder.js",coverage:"nyc --reporter=lcov npm test"},dependencies:{"@fastify/accepts-serializer":"5.1.0","@fastify/autoload":"5.4.0","@fastify/compress":"6.1.1","@fastify/cors":"8.1.0","@fastify/static":"6.5.0","@turf/area":"6.5.0","@turf/boolean-contains":"6.5.0","@turf/boolean-disjoint":"6.5.0","@turf/boolean-equal":"6.5.0","@turf/circle":"6.5.0","@turf/difference":"6.5.0","@turf/distance":"6.5.0","@turf/helpers":"6.5.0","@turf/length":"6.5.0",alasql:"1.7.4",async:"3.2.3","aws-sdk":"2.1096.0",chalk:"4.1.2","cli-progress":"3.10.0",clone:"2.1.2",esbuild:"^0.14.49","fast-glob":"3.2.11",fastify:"4.8.1","fastify-plugin":"4.2.1","fill-range":"7.0.1","fs-extra":"10.0.1","human-readable-ids":"1.0.4",inquirer:"8.2.2","is-number":"7.0.0",joi:"17.6.0",json2csv:"5.0.7",jsonata:"1.8.6",jsonwebtoken:"8.5.1",lmdb:"2.7.3",lodash:"4.17.21",mathjs:"10.4.0",microtime:"3.1.1",minimist:"1.2.6",mkcert:"1.5.0",moment:"2.29.4",msgpackr:"1.7.0",nats:"2.9.2",needle:"3.1.0","node-ipc":"9.1.4","node-stream-zip":"1.15.0","normalize-path":"^3.0.0",ora:"5.4.1","ordered-binary":"1.3.0",papaparse:"5.3.2",passport:"0.6.0","passport-http":"0.3.0","passport-local":"1.0.0",pino:"8.3.1",pm2:"5.2.0",prompt:"1.2.2","properties-reader":"2.2.0","recursive-iterator":"3.3.0",semver:"7.3.5","stream-chain":"2.2.5","stream-json":"1.7.4",systeminformation:"5.12.4","tar-fs":"2.1.1","truncate-utf8-bytes":"1.0.2",ulidx:"0.3.0",uuid:"9.0.0","validate.js":"0.11.1",yaml:"1.10.2"},devDependencies:{axios:"0.27.2",chai:"4.3.4","chai-integer":"0.1.0",eslint:"8.22.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"3.4.1","eslint-plugin-radar":"0.2.1","hook-std":"2.0.0","intercept-stdout":"0.1.2",mocha:"8.3.2","mocha-teamcity-reporter":"3.0.0","mock-require":"3.0.3","mock-stdin":"1.0.0",newman:"5.2.3","newman-reporter-html":"1.0.5","newman-reporter-htmlextra":"1.21.0","newman-reporter-teamcity":"0.1.11","node-fetch":"2.6.7",nyc:"15.1.0",prettier:"2.3.2",rewire:"5.0.0",rimraf:"3.0.2",sinon:"10.0.0","sinon-chai":"3.7.0"},overrides:{"eslint-plugin-radar":{eslint:"8.22.0"},"newman-reporter-html":{newman:"5.2.3"}}}});var kr=d((D0,Dl)=>{"use strict";var y0=require("fs-extra"),w0=O();Dl.exports={version:mN,printVersion:pN,nodeVersion:gN};var Er=cn();function mN(){if(Er)return Er.version}o(mN,"version");function gN(){if(Er&&Er.engines&&Er.engines["preferred-node"])return Er.engines["preferred-node"]}o(gN,"nodeVersion");function pN(){Er&&console.log(`HarperDB Version ${Er.version}`)}o(pN,"printVersion")});var Bl=d((M0,Pl)=>{"use strict";var Ml=require("semver/functions/major"),NN=require("semver/functions/satisfies"),Ul=cn(),un=process.versions&&process.versions.node?process.versions.node:void 0;Pl.exports=ON;function ON(){let e=Ul.engines.node,t=Ul.engines["preferred-node"];if(un){if(e&&!NN(un,e))return{error:`This version of HarperDB supports Node.js versions: ${e}, the currently installed Node.js version is: ${un}. Please install a version of Node.js that is withing the defined range.`};if(t&&Ml(un)!==Ml(t))return{warn:`This version of HarperDB is tested against Node.js version ${t}, the currently installed Node.js version is: ${un}. Some issues may occur with untested versions of Node.js.`}}}o(ON,"checkNodeVersion")});var c_=d((U0,Hl)=>{"use strict";var IN=require("util"),CN=require("path"),bN=require("child_process"),LN=IN.promisify(bN.execFile),yN=1e3*1e3*10;Hl.exports={findPs:wN};async function wN(e){let t={};try{await Promise.all(["comm","args","ppid","uid","%cpu","%mem"].map(async r=>{let{stdout:s}=await LN("ps",["wwxo",`pid,${r}`],{maxBuffer:yN});for(let n of s.trim().split(`
4
+ `}o(xr,"createLogRecord");function Ll(e){Ss===void 0&&(a_=_e.PROCESS_DESCRIPTORS.INSTALL,Fr.ensureDirSync(fi),Ss=Vr.join(fi,_e.PROCESS_LOG_NAMES.INSTALL),Fr.ensureFileSync(Ss)),Fr.appendFileSync(Ss,e)}o(Ll,"writeToLogFile");function Ti(e){Ot&&Ll(e),xt&&process.stdout.write(e)}o(Ti,"nonPm2LogStdOut");function __(e){Ot&&Ll(e),xt&&process.stderr.write(e)}o(__,"nonPm2LogStdErr");function uN(...e){if(Be[Pe]<=Be.info){let t=xr("info",e);if(lr){Ti(t);return}process.stdout.write(t)}}o(uN,"info");function yl(...e){if(Be[Pe]<=Be.trace){let t=xr("trace",e);if(lr){Ti(t);return}process.stdout.write(t)}}o(yl,"trace");function i_(...e){if(Be[Pe]<=Be.error){let t=xr("error",e);if(lr){__(t);return}process.stderr.write(t)}}o(i_,"error");function lN(...e){if(Be[Pe]<=Be.debug){let t=xr("debug",e);if(lr){Ti(t);return}process.stdout.write(t)}}o(lN,"debug");function EN(...e){if(Be[Pe]<=Be.notify){let t=xr("notify",e);if(lr){Ti(t);return}process.stdout.write(t)}}o(EN,"notify");function dN(...e){if(Be[Pe]<=Be.fatal){let t=xr("fatal",e);if(lr){__(t);return}process.stderr.write(t)}}o(dN,"fatal");function SN(...e){if(Be[Pe]<=Be.warn){let t=xr("warn",e);if(lr){__(t);return}process.stderr.write(t)}}o(SN,"warn");function hN(){let e;try{e=aN.homedir()}catch{e=process.env.HOME}e||(e="~/");let t=Vr.join(e,_e.HDB_HOME_DIR_NAME,_e.BOOT_PROPS_FILE_NAME);return Fr.existsSync(t)||(t=Vr.join(o_,"utility/hdb_boot_properties.file")),t}o(hN,"getPropsFilePath");function fN(e){Pe=e}o(fN,"setLogLevel");function Ol(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}o(Ol,"autoCastBoolean");function TN(e){try{if(e.includes("config/settings.js")){let a=Cl(e);return{level:a.get(_e.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY),config_log_path:Vr.dirname(a.get(_e.HDB_SETTINGS_NAMES.LOG_PATH_KEY)),to_file:a.get(_e.HDB_SETTINGS_NAMES.LOG_TO_FILE),to_stream:a.get(_e.HDB_SETTINGS_NAMES.LOG_TO_STDSTREAMS)}}let t=Il.parseDocument(Fr.readFileSync(e,"utf8")),r=t.getIn(["logging","level"]),s=t.getIn(["logging","root"]),n=t.getIn(["logging","file"]),i=t.getIn(["logging","stdStreams"]);return{level:r,config_log_path:s,to_file:n,to_stream:i}}catch(t){if(t.code===_e.NODE_ERROR_CODES.ENOENT)throw t;console.error("Error accessing config file for logging"),console.error(t)}}o(TN,"getLogConfig");function RN(){try{let e=Il.parseDocument(Fr.readFileSync(_N,"utf8")),t=e.getIn(["logging","level"]),r=e.getIn(["logging","file"]),s=e.getIn(["logging","stdStreams"]);return{default_level:t,default_to_file:r,default_to_stream:s}}catch(e){console.error("Error accessing default config file for logging"),console.error(e)}}o(RN,"getDefaultConfig")});var cn=d((L0,AN)=>{AN.exports={name:"harperdb",version:"4.0.1",description:"HarperDB is a distributed SQL & NoSQL data platform focused on speed, flexibility, and ease of use.",keywords:["database","sql","nosql","api","distributed","cloud","enterprise","Fastify","NATS"],main:"harperdb.js",bin:{harperdb:"./bin/harperdb.js"},engines:{node:">=14.0.0","preferred-node":"18.13.0","go-lang":"1.19.3","nats-server":"2.9.8"},homepage:"https://www.harperdb.io/",bugs:"support@harperdb.io",author:{name:"HarperDB",email:"support@harperdb.io"},license:"See License in ./license/Community+Edition+and+Evaluation+End+User+License+Agreement.pdf",scripts:{submodules:"git submodule update --init --recursive",build:"eslint -c ./.eslintbuild bin/ data_layer/ security/ server/ sqlTranslator/ upgrade/ utility/ validation/",pretty:"eslint --fix bin/ data_layer/ security/ server/ sqlTranslator/ upgrade/ utility/ validation/",test:"rimraf ./.nyc_output/* && node utility/devops/register.js --reset_license --storage_type=lmdb && npm run cover:upgrade && npm run cover:nats && npm run cover:cfserver && npm run cover:lmdbbridge && npm run cover:lmdbutility && npm run cover:hdbserver && npm run cover:main && nyc merge .nyc_output coverage.json && node ./utility/devops/register.js --reset_license --storage_type=lmdb","cover:main":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/**/*.js' --config '../unitTests/.mocharc-main.json'","cover:lmdbbridge":"cd bin/ && nyc --no-clean --reporter=lcovonly --retries 3 ../node_modules/mocha/bin/_mocha '../unitTests/data_layer/harperBridge/lmdbBridge/**/*.js' --parallel --config '../unitTests/.mocharc.json'","cover:lmdbutility":"cd bin/ && nyc --no-clean --reporter=lcovonly --retries 3 ../node_modules/mocha/bin/_mocha '../unitTests/utility/lmdb/**/*.js' --parallel --config '../unitTests/.mocharc.json'","cover:hdbserver":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/server/harperdb/hdbServer-test.js' --parallel --config '../unitTests/.mocharc.json'","cover:cfserver":"npm run submodules && cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/server/customFunctions/customFunctionsServer-test.js' --config '../unitTests/.mocharc.json'","cover:nats":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/server/nats/**/*.js' --config '../unitTests/.mocharc.json'","cover:upgrade":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/upgrade/**/*.js' --config '../unitTests/.mocharc.json'","test:ci":" cd bin/ && ../node_modules/mocha/bin/_mocha '../unitTests/**/*.js' --retries 3 --config '../unitTests/.mocharc-main.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/data_layer/harperBridge/lmdbBridge/**/*.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/utility/lmdb/**/*.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/server/harperdb/hdbServer-test.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/server/customFunctions/customFunctionsServer-test.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/upgrade/**/*.js' --parallel --retries 3 --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter && ../node_modules/mocha/bin/_mocha '../unitTests/server/nats/**/*.js' --config '../unitTests/.mocharc.json' --reporter mocha-teamcity-reporter","hdb-check":"./utility/devops/hdb-check.sh","download-prebuilds":"node ./utility/devops/build/download-prebuilds.js",prebuild:"date",postinstall:"node ./launchServiceScripts/launchInstallNATSServer.js",build_nats_dependency:"node ./utility/devops/nats/builder.js",coverage:"nyc --reporter=lcov npm test"},dependencies:{"@fastify/accepts-serializer":"5.1.0","@fastify/autoload":"5.4.0","@fastify/compress":"6.1.1","@fastify/cors":"8.1.0","@fastify/static":"6.5.0","@turf/area":"6.5.0","@turf/boolean-contains":"6.5.0","@turf/boolean-disjoint":"6.5.0","@turf/boolean-equal":"6.5.0","@turf/circle":"6.5.0","@turf/difference":"6.5.0","@turf/distance":"6.5.0","@turf/helpers":"6.5.0","@turf/length":"6.5.0",alasql:"1.7.4",async:"3.2.3","aws-sdk":"2.1096.0",chalk:"4.1.2","cli-progress":"3.10.0",clone:"2.1.2",esbuild:"^0.14.49","fast-glob":"3.2.11",fastify:"4.8.1","fastify-plugin":"4.2.1","fill-range":"7.0.1","fs-extra":"10.0.1","human-readable-ids":"1.0.4",inquirer:"8.2.2","is-number":"7.0.0",joi:"17.6.0",json2csv:"5.0.7",jsonata:"1.8.6",jsonwebtoken:"8.5.1",lmdb:"2.7.3",lodash:"4.17.21",mathjs:"10.4.0",microtime:"3.1.1",minimist:"1.2.6",mkcert:"1.5.0",moment:"2.29.4",msgpackr:"1.7.0",nats:"2.9.2",needle:"3.1.0","node-ipc":"9.1.4","node-stream-zip":"1.15.0","normalize-path":"^3.0.0",ora:"5.4.1","ordered-binary":"1.3.0",papaparse:"5.3.2",passport:"0.6.0","passport-http":"0.3.0","passport-local":"1.0.0",pino:"8.3.1",pm2:"5.2.0",prompt:"1.2.2","properties-reader":"2.2.0","recursive-iterator":"3.3.0",semver:"7.3.5","stream-chain":"2.2.5","stream-json":"1.7.4",systeminformation:"5.12.4","tar-fs":"2.1.1","truncate-utf8-bytes":"1.0.2",ulidx:"0.3.0",uuid:"9.0.0","validate.js":"0.11.1",yaml:"1.10.2"},devDependencies:{axios:"0.27.2",chai:"4.3.4","chai-integer":"0.1.0",eslint:"8.22.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"3.4.1","eslint-plugin-radar":"0.2.1","hook-std":"2.0.0","intercept-stdout":"0.1.2",mocha:"8.3.2","mocha-teamcity-reporter":"3.0.0","mock-require":"3.0.3","mock-stdin":"1.0.0",newman:"5.2.3","newman-reporter-html":"1.0.5","newman-reporter-htmlextra":"1.21.0","newman-reporter-teamcity":"0.1.11","node-fetch":"2.6.7",nyc:"15.1.0",prettier:"2.3.2",rewire:"5.0.0",rimraf:"3.0.2",sinon:"10.0.0","sinon-chai":"3.7.0"},overrides:{"eslint-plugin-radar":{eslint:"8.22.0"},"newman-reporter-html":{newman:"5.2.3"}}}});var kr=d((D0,Dl)=>{"use strict";var y0=require("fs-extra"),w0=O();Dl.exports={version:mN,printVersion:pN,nodeVersion:gN};var Er=cn();function mN(){if(Er)return Er.version}o(mN,"version");function gN(){if(Er&&Er.engines&&Er.engines["preferred-node"])return Er.engines["preferred-node"]}o(gN,"nodeVersion");function pN(){Er&&console.log(`HarperDB Version ${Er.version}`)}o(pN,"printVersion")});var Bl=d((M0,Pl)=>{"use strict";var Ml=require("semver/functions/major"),NN=require("semver/functions/satisfies"),Ul=cn(),un=process.versions&&process.versions.node?process.versions.node:void 0;Pl.exports=ON;function ON(){let e=Ul.engines.node,t=Ul.engines["preferred-node"];if(un){if(e&&!NN(un,e))return{error:`This version of HarperDB supports Node.js versions: ${e}, the currently installed Node.js version is: ${un}. Please install a version of Node.js that is withing the defined range.`};if(t&&Ml(un)!==Ml(t))return{warn:`This version of HarperDB is tested against Node.js version ${t}, the currently installed Node.js version is: ${un}. Some issues may occur with untested versions of Node.js.`}}}o(ON,"checkNodeVersion")});var c_=d((U0,Hl)=>{"use strict";var IN=require("util"),CN=require("path"),bN=require("child_process"),LN=IN.promisify(bN.execFile),yN=1e3*1e3*10;Hl.exports={findPs:wN};async function wN(e){let t={};try{await Promise.all(["comm","args","ppid","uid","%cpu","%mem"].map(async r=>{let{stdout:s}=await LN("ps",["wwxo",`pid,${r}`],{maxBuffer:yN});for(let n of s.trim().split(`
5
5
  `).slice(1)){n=n.trim();let[i]=n.split(" ",1),a=n.slice(i.length+1).trim();t[i]===void 0&&(t[i]={}),t[i][r]=a}}))}catch(r){throw r}return Object.entries(t).filter(([,r])=>r.comm&&r.args&&r.ppid&&r.uid&&r["%cpu"]&&r["%mem"]&&r.args.includes(e)).map(([r,s])=>({pid:Number.parseInt(r,10),name:CN.basename(s.comm),cmd:s.args,ppid:Number.parseInt(s.ppid,10),uid:Number.parseInt(s.uid,10),cpu:Number.parseFloat(s["%cpu"]),memory:Number.parseFloat(s["%mem"])}))}o(wN,"findPs")});var Te=d((P0,Gl)=>{"use strict";var DN="__dbis__",MN="__environment_name__",UN="__dbi_defintion__",PN={EQUALS:"equals",STARTS_WITH:"startsWith",_STARTS_WITH:"starts_with",ENDS_WITH:"endsWith",_ENDS_WITH:"ends_with",CONTAINS:"contains",SEARCH_ALL:"searchAll",SEARCH_ALL_TO_MAP:"searchAllToMap",BATCH_SEARCH_BY_HASH:"batchSearchByHash",BATCH_SEARCH_BY_HASH_TO_MAP:"batchSearchByHashToMap",GREATER_THAN:"greaterThan",_GREATER_THAN:"greater_than",GREATER_THAN_EQUAL:"greaterThanEqual",_GREATER_THAN_EQUAL:"greater_than_equal",LESS_THAN:"lessThan",_LESS_THAN:"less_than",LESS_THAN_EQUAL:"lessThanEqual",_LESS_THAN_EQUAL:"less_than_equal",BETWEEN:"between"},BN=["__createdtime__","__updatedtime__"],HN="\uFFFF",vl={TIMESTAMP:"timestamp",HASH_VALUE:"hash_value",USER_NAME:"user_name"},vN=Object.values(vl);Gl.exports={INTERNAL_DBIS_NAME:DN,DBI_DEFINITION_NAME:UN,SEARCH_TYPES:PN,TIMESTAMP_NAMES:BN,MAX_SEARCH_KEY_LENGTH:256,ENVIRONMENT_NAME_KEY:MN,TRANSACTIONS_DBI_NAMES_ENUM:vl,TRANSACTIONS_DBIS:vN,OVERFLOW_MARKER:HN}});var et=d((B0,Wl)=>{"use strict";var ql=T(),Fl=Te(),Vl={CONTINUE:100,OK:200,CREATED:201,BAD_REQUEST:400,UNAUTHORIZED:401,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,REQUEST_TIMEOUT:408,CONFLICT:409,TOO_MANY_REQUESTS:429,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,INSUFFICIENT_STORAGE:507,NETWORK_AUTHENTICATION_REQUIRED:511},xl=o(e=>`${e} Check logs and try again.`,"CHECK_LOGS_WRAPPER"),kl={500:xl("There was an error processing your request."),400:"Invalid request"},GN=kl[Vl.INTERNAL_SERVER_ERROR],qN={OP_NOT_SUPPORTED_FOR_FS:e=>`${e} is not available for this instance because it uses the File System data store.`,MISSING_VALUE:e=>`${e} is missing.`,INVALID_VALUE:e=>`${e} is invalid.`,NOT_FOUND:e=>`${e} not found.`},FN={CONFIG_VALIDATION:e=>`HarperDB config file validation error: ${e}`},VN={DEFAULT_BULK_LOAD_ERR:"There was an error during your bulk load into HarperDB.",DOWNLOAD_FILE_ERR:e=>`There was an error downloading '${e}'.`,INSERT_JSON_ERR:"There was an error inserting the downloaded JSON data.",INSERT_CSV_ERR:"There was an error inserting the downloaded CSV data.",INVALID_ACTION_PARAM_ERR:e=>`Bulk load operation failed - ${e} is not a valid 'action' parameter`,INVALID_FILE_EXT_ERR:e=>`Error selecting correct parser - valid file type not found in json - ${e}`,MAX_FILE_SIZE_ERR:(e,t)=>`File size is ${e} bytes, which exceeded the maximum size allowed of: ${t} bytes`,PAPA_PARSE_ERR:"There was an error parsing the downloaded CSV data.",S3_DOWNLOAD_ERR:e=>`There was an error downloading '${e}' from AWS.`,WRITE_TEMP_FILE_ERR:"Error writing temporary file to storage"},xN={BASE_PATH_REQUIRED:"base_path is required",DESTINATION_PATH_REQUIRED:"destination_path is required",ENV_NAME_REQUIRED:"env_name is required",INVALID_BASE_PATH:"invalid base_path",INVALID_DESTINATION_PATH:"invalid destination_path",INVALID_ENVIRONMENT:"invalid environment",ENV_REQUIRED:"env is required",DBI_NAME_REQUIRED:"dbi_name is required",DBI_DOES_NOT_EXIST:"dbi does not exist",HASH_ATTRIBUTE_REQUIRED:"hash_attribute is required",ID_REQUIRED:"id is required",IDS_REQUIRED:"ids is required",IDS_MUST_BE_ARRAY:"ids must be an array",FETCH_ATTRIBUTES_REQUIRED:"fetch_attributes is required",FETCH_ATTRIBUTES_MUST_BE_ARRAY:"fetch_attributes must be an array",ATTRIBUTE_REQUIRED:"attribute is required",SEARCH_VALUE_REQUIRED:"search_value is required",SEARCH_VALUE_TOO_LARGE:"search_value is too long",WRITE_ATTRIBUTES_REQUIRED:"write_attributes is required",WRITE_ATTRIBUTES_MUST_BE_ARRAY:"write_attributes must be an array",RECORDS_REQUIRED:"records is required",RECORDS_MUST_BE_ARRAY:"records must be an array",CANNOT_CREATE_INTERNAL_DBIS_NAME:`cannot create a dbi named ${Fl.INTERNAL_DBIS_NAME}`,CANNOT_DROP_INTERNAL_DBIS_NAME:`cannot drop a dbi named ${Fl.INTERNAL_DBIS_NAME}`,START_VALUE_REQUIRED:"start_value is required",END_VALUE_REQUIRED:"end_value is required",CANNOT_COMPARE_STRING_TO_NUMERIC_KEYS:"cannot compare a string to numeric keys",END_VALUE_MUST_BE_GREATER_THAN_START_VALUE:"end_value must be greater than or equal to start_value",UNKNOWN_SEARCH_TYPE:"unknown search type",CANNOT_DROP_TABLE_HASH_ATTRIBUTE:"cannot drop a table's hash attribute"},kN={ATTR_NAME_LENGTH_ERR:e=>`transaction aborted due to attribute name ${e} being too long. Attribute names cannot be longer than ${ql.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE} bytes.`,ATTR_NAME_NULLISH_ERR:"transaction aborted due to record(s) with an attribute name that is null, undefined or empty string",HASH_VAL_LENGTH_ERR:`transaction aborted due to record(s) with a hash value that exceeds ${ql.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE} bytes, check log for more info`,INVALID_FORWARD_SLASH_IN_HASH_ERR:"transaction aborted due to record(s) with a hash value that contains a forward slash, check log for more info",RECORD_MISSING_HASH_ERR:"transaction aborted due to record(s) with no hash value, check log for more info"},$l={GENERIC_AUTH_FAIL:"Login failed",USER_INACTIVE:"Cannot complete request: User is inactive",INVALID_TOKEN:"invalid token",NO_ENCRYPTION_KEYS:"unable to generate JWT as there are no encryption keys. please contact your administrator",INVALID_CREDENTIALS:"invalid credentials",PASSWORD_REQUIRED:"password is required",USERNAME_REQUIRED:"username is required",REFRESH_TOKEN_REQUIRED:"refresh_token is required",INVALID_AUTH_OBJECT:"invalid auth_object",INVALID_BODY:"invalid body",TOKEN_EXPIRED:"token expired",REFRESH_TOKEN_SAVE_FAILED:"unable to store refresh_token"},$N={DEFAULT_INVALID_REQUEST:"Invalid request",OP_AUTH_PERMS_ERROR:"This operation is not authorized due to role restrictions and/or invalid schema items",OP_IS_SU_ONLY:e=>`Operation '${e}' is restricted to 'super_user' roles`,OP_NOT_FOUND:e=>`Operation '${e}' not found`,SYSTEM_TIMESTAMP_PERMS_ERR:"Internal timestamp attributes - '__createdtime_' and '__updatedtime__' - cannot be inserted to or updated by HDB users.",UNKNOWN_OP_AUTH_ERROR:(e,t,r)=>`There was an error authorizing ${e} op on table '${t}.${r}'`,USER_HAS_NO_PERMS:e=>`User ${e} has no role or permissions. Please assign the user a valid role.`,DROP_SYSTEM:"The 'system' schema, tables and records are used internally by HarperDB and cannot be updated or removed."},YN={ATTR_PERM_MISSING:(e,t)=>`${e.toUpperCase()} attribute permission missing for '${t}'`,ATTR_PERM_MISSING_NAME:"Permission object in 'attribute_permission' missing an 'attribute_name'",ATTR_PERM_NOT_BOOLEAN:(e,t)=>`${e.toUpperCase()} attribute permission for '${t}' must be a boolean`,ATTR_PERMS_ARRAY_MISSING:"Missing 'attribute_permissions' array",ATTR_PERMS_NOT_ARRAY:"Value for 'attribute_permissions' must be an array",INVALID_ATTRIBUTE_IN_PERMS:e=>`Invalid attribute '${e}' in 'attribute_permissions'`,INVALID_PERM_KEY:e=>`Invalid table permission key value '${e}'`,INVALID_ATTR_PERM_KEY:e=>`Invalid attribute permission key value '${e}'`,INVALID_ROLE_JSON_KEYS:e=>`Invalid ${e.length>1?"keys":"key"} in JSON body - '${e.join("', '")}'`,MISMATCHED_TABLE_ATTR_PERMS:e=>`You have a conflict with TABLE permissions for '${e}' being false and ATTRIBUTE permissions being true`,OUTDATED_PERMS_TRANSLATION_ERROR:"This instance was recently upgraded and uses our new role permissions structure. Please login to this instance in HarperDB Studio, go to 'Roles', and click 'Update Role Permission' for all standard roles to migrate them to the new structure.",ROLE_ALREADY_EXISTS:e=>`A role with name '${e}' already exists`,ROLE_NOT_FOUND:"Role not found",ROLE_PERMS_ERROR:"Errors in the role permissions JSON provided",SCHEMA_PERM_ERROR:e=>`Your role does not have permission to view schema metadata for '${e}'`,SCHEMA_TABLE_PERM_ERROR:(e,t)=>`Your role does not have permission to view schema.table metadata for '${e}.${t}'`,SU_ROLE_MISSING_ERROR:"Missing 'super_user' key/value in permission set",SU_CU_ROLE_BOOLEAN_ERROR:e=>`Value for '${e}' permission must be a boolean`,STRUCTURE_USER_ROLE_TYPE_ERROR:e=>`Value for '${e}' permission must be a boolean or Array`,SU_CU_ROLE_NO_PERMS_ALLOWED:e=>`Roles with '${e}' set to true cannot have other permissions set.`,SU_CU_ROLE_COMBINED_ERROR:"Roles cannot have both 'super_user' and 'cluster_user' values included in their permissions set.",TABLE_PERM_MISSING:e=>`Missing table ${e.toUpperCase()} permission`,TABLE_PERM_NOT_BOOLEAN:e=>`Table ${e.toUpperCase()} permission must be a boolean`},KN={ATTR_NOT_FOUND:(e,t,r)=>`Attribute '${r}' does not exist on '${e}.${t}'`,ATTR_EXISTS_ERR:(e,t,r)=>`Attribute '${r}' already exists in ${e}.${t}'`,DESCRIBE_ALL_ERR:"There was an error during describeAll. Please check the logs and try again.",INVALID_TABLE_ERR:e=>`Invalid table ${JSON.stringify(e)}`,SCHEMA_NOT_FOUND:e=>`Schema '${e}' does not exist`,SCHEMA_EXISTS_ERR:e=>`Schema '${e}' already exists`,TABLE_EXISTS_ERR:(e,t)=>`Table '${t}' already exists in schema '${e}'`,SCHEMA_REQUIRED_ERR:"schema is required",TABLE_NOT_FOUND:(e,t)=>`Table '${e}.${t}' does not exist`,TABLE_REQUIRED_ERR:"table is required"},WN={OUTER_JOIN_TRANSLATION_ERROR:"There was an error translating the final SQL outer join data."},QN={ALTER_USER_DUP_ROLES:e=>`Update failed. There are duplicates for the '${e}' role which is not allowed. Update your roles and try again.`,ALTER_USER_ROLE_NOT_FOUND:e=>`Update failed. Requested '${e}' role not found.`,DUP_ROLES_FOUND:e=>`Multiple ${e} roles found. Roles must have unique 'role' value. Please update and try again.`,ROLE_NAME_NOT_FOUND:e=>`${e} role not found`,USER_ALREADY_EXISTS:e=>`User ${e} already exists`,USER_NOT_EXIST:e=>`User ${e} does not exist`},Yl={INVALID_DATE:"Invalid date, must be in ISO-8601 format (YYYY-MM-DD).",SEARCH_CONDITIONS_INVALID_SORT_ATTRIBUTE:e=>`invalid sort attribute '${e}', the attribute must either be the table's hash attribute or an attribute used in conditions.`},Kl={INVALID_IPC_DATA_TYPE:"Invalid IPC event data type, must be an object",MISSING_TYPE:"IPC event missing 'type'",MISSING_MSG:"IPC event missing 'message'",MISSING_ORIGIN:"IPC event message missing 'originator' property",INVALID_EVENT:e=>`IPC server received invalid event type: ${e}`},jN={FUNCTION_STATUS:"Error getting custom function status, check the log for more details",GET_FUNCTIONS:"Error getting custom functions, check the log for more details",GET_FUNCTION:"Error getting custom function, check the log for more details",SET_FUNCTION:"Error setting custom function, check the log for more details",NO_PROJECT:"Project does not exist. Create one using 'add_custom_function_project'",PROJECT_EXISTS:"Project already exists",VALIDATION_ERR:"Error validating request, check the log for more details",NO_FILE:"File does not exist",BAD_FILE_NAME:"File name can only contain alphanumeric, dash and underscore characters",BAD_PROJECT_NAME:"Project name can only contain alphanumeric, dash and underscores characters",BAD_PACKAGE:"Packaged project must be base64-encoded tar file of project directory",DROP_FUNCTION:"Error dropping custom function, check the log for more details",ADD_FUNCTION:"Error adding custom function project, check the log for more details",DROP_FUNCTION_PROJECT:"Error dropping custom function project, check the log for more details",BAD_FILE_PATH:"Filepath must be valid, and contain the name of the tarball you wish to write",NOT_ENABLED:"Custom functions is not enabled, to enable set customFunctions enabled to true in hdb/harperdb-config.yaml file."},JN={CLUSTERING_NOT_ENABLED:"Clustering must be enabled to perform this operation."},ZN={...$l,...VN,...qN,...$N,...YN,...KN,...WN,...QN,...kN,...Yl,...Kl,...jN,...JN,...FN};Wl.exports={CHECK_LOGS_WRAPPER:xl,HDB_ERROR_MSGS:ZN,DEFAULT_ERROR_MSGS:kl,DEFAULT_ERROR_RESP:GN,HTTP_STATUS_CODES:Vl,LMDB_ERRORS_ENUM:xN,AUTHENTICATION_ERROR_MSGS:$l,VALIDATION_ERROR_MSGS:Yl,IPC_ERRORS:Kl}});var J=d((H0,Jl)=>{"use strict";var fs=et(),XN=O(),zN=T(),ln=class extends Error{constructor(t,r,s,n,i){super(),Error.captureStackTrace(this,Ql),this.http_resp_code=s||fs.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR,this.http_resp_msg=r||(fs.DEFAULT_ERROR_MSGS[s]?fs.DEFAULT_ERROR_MSGS[s]:fs.DEFAULT_ERROR_MSGS[fs.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR]),this.message=t.message?t.message:this.http_resp_msg,this.type=t.name,typeof this.message!="string"&&(this.stack=t.stack),i&&XN[n](i)}};o(ln,"HdbError");function Ql(e,t,r,s=zN.LOG_LEVELS.ERROR,n=null,i=!1){if(jl(e))return e;let a=new ln(e,t,r,s,n);return i&&delete a.stack,a}o(Ql,"handleHDBError");function jl(e){return e.__proto__.constructor.name===ln.name}o(jl,"isHDBError");Jl.exports={isHDBError:jl,handleHDBError:Ql,hdb_errors:fs}});var I=d((G0,lE)=>{"use strict";var u_=require("path"),eO=require("fs-extra"),Se=O(),Zl=require("fs-extra"),tO=require("truncate-utf8-bytes"),En=require("os"),rO=require("net"),sO=require("recursive-iterator"),Re=T(),rE=c_(),Xl=require("papaparse"),Ri=require("moment"),{inspect:nO}=require("util"),zl=require("is-number"),v0=require("lodash"),{hdb_errors:Ai}=J(),sE=require("util").promisify(setTimeout),iO=100,oO=5,aO="",_O=4,eE=255,tE={true:!0,false:!1,undefined:null,null:null,NaN:NaN};lE.exports={isEmpty:We,isEmptyOrZeroLength:It,arrayHasEmptyValues:lO,arrayHasEmptyOrZeroLengthValues:EO,buildFolderPath:dO,isBoolean:nE,errorizeMessage:cO,stripFileExtension:hO,autoCast:fO,autoCastJSONDeep:l_,removeDir:RO,compareVersions:AO,isCompatibleDataVersion:mO,escapeRawValue:oE,unescapeValue:gO,stringifyProps:pO,valueConverter:NO,timeoutPromise:IO,isClusterOperation:bO,getClusterUser:wO,sendTransactionToSocketCluster:LO,checkGlobalSchemaTable:yO,getHomeDir:aE,getPropsFilePath:OO,promisifyPapaParse:DO,removeBOM:_E,createEventPromise:MO,checkProcessRunning:UO,checkSchemaTableExist:PO,checkSchemaExists:cE,checkTableExists:uE,getStartOfTomorrowInSeconds:BO,getLimitKey:HO,isObject:SO,isNotEmptyAndHasValue:uO,autoCasterIsNumberCheck:iE,backtickASTSchemaItems:vO,isPortTaken:CO,stopProcess:GO,createForkArgs:qO,autoCastBoolean:FO,async_set_timeout:sE,getTableHashAttribute:VO,doesSchemaExist:xO,doesTableExist:kO,stringifyObj:$O,ms_to_time:YO,PACKAGE_ROOT:Re.PACKAGE_ROOT};function cO(e){return e instanceof Error?e:new Error(e)}o(cO,"errorizeMessage");function We(e){return e==null}o(We,"isEmpty");function uO(e){return!We(e)&&(e||e===0||e===""||nE(e))}o(uO,"isNotEmptyAndHasValue");function It(e){return We(e)||e.length===0||e.size===0}o(It,"isEmptyOrZeroLength");function lO(e){if(We(e))return!0;for(let t=0;t<e.length;t++)if(We(e[t]))return!0;return!1}o(lO,"arrayHasEmptyValues");function EO(e){if(It(e))return!0;for(let t=0;t<e.length;t++)if(It(e[t]))return!0;return!1}o(EO,"arrayHasEmptyOrZeroLengthValues");function dO(...e){try{return e.join(u_.sep)}catch{console.error(e)}}o(dO,"buildFolderPath");function nE(e){return We(e)?!1:e===!0||e===!1}o(nE,"isBoolean");function SO(e){return We(e)?!1:typeof e=="object"}o(SO,"isObject");function hO(e){return It(e)?aO:e.slice(0,-_O)}o(hO,"stripFileExtension");function fO(e){return We(e)||e===""||typeof e!="string"?e:tE[e]!==void 0?tE[e]:iE(e)===!0?Number(e):e}o(fO,"autoCast");function TO(e){if(typeof e=="string"&&(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")))try{return JSON.parse(e)}catch{}return e}o(TO,"autoCastJSON");function l_(e){if(e&&typeof e=="object"){if(Array.isArray(e))for(let t=0,r=e.length;t<r;t++){let s=e[t],n=l_(s);n!==s&&(e[t]=n)}else for(let t in e){let r=e[t],s=l_(r);s!==r&&(e[t]=s)}return e}else return TO(e)}o(l_,"autoCastJSONDeep");function iE(e){if(e.startsWith("0.")&&zl(e))return!0;let t=e.toUpperCase().includes("E");return!!((e!=="0"&&e.startsWith("0"))===!1&&t===!1&&zl(e))}o(iE,"autoCasterIsNumberCheck");async function RO(e){if(It(e))throw new Error(`Directory path: ${e} does not exist`);try{await Zl.emptyDir(e),await Zl.remove(e)}catch(t){throw Se.error(`Error removing files in ${e} -- ${t}`),t}}o(RO,"removeDir");function AO(e,t){if(It(e)){Se.info("Invalid current version sent as parameter.");return}if(It(t)){Se.info("Invalid upgrade version sent as parameter.");return}let r,s=/(\.0+)+$/,n=e.version?e.version:e,i=t.version?t.version:t,a=n.replace(s,"").split("."),_=i.replace(s,"").split("."),c=Math.min(a.length,_.length);for(let u=0;u<c;u++)if(r=parseInt(a[u],10)-parseInt(_[u],10),r)return r;return a.length-_.length}o(AO,"compareVersions");function mO(e,t,r=!1){let s=e.toString().split("."),n=t.toString().split(".");return s[0]===n[0]&&(!r||s[1]===n[1])}o(mO,"isCompatibleDataVersion");function oE(e){if(We(e))return e;let t=String(e);return t==="."?Re.UNICODE_PERIOD:t===".."?Re.UNICODE_PERIOD+Re.UNICODE_PERIOD:t.replace(Re.FORWARD_SLASH_REGEX,Re.UNICODE_FORWARD_SLASH)}o(oE,"escapeRawValue");function gO(e){if(We(e))return e;let t=String(e);return t===Re.UNICODE_PERIOD?".":t===Re.UNICODE_PERIOD+Re.UNICODE_PERIOD?"..":String(e).replace(Re.ESCAPED_FORWARD_SLASH_REGEX,"/")}o(gO,"unescapeValue");function pO(e,t){if(We(e))return Se.info("Properties object is null"),"";let r="";return e.each(function(s,n){try{if(t&&t[s]){let i=t[s];for(let a of i)r+=";"+a+En.EOL}!It(s)&&s[0]===";"?r+=" "+s+n+En.EOL:It(s)||(r+=s+"="+n+En.EOL)}catch{Se.error(`Found bad property during upgrade with key ${s} and value: ${n}`)}}),r}o(pO,"stringifyProps");function NO(e){let t;try{t=typeof e=="object"?JSON.stringify(e):e}catch(n){Se.error(n),t=e}let r=String(oE(t)),s=Buffer.byteLength(r)>eE?tO(r,eE)+"/blob":r;return{value:t,value_stripped:r,value_path:s}}o(NO,"valueConverter");function aE(){let e;try{e=En.homedir()}catch{e=process.env.HOME}return e||(e="~/"),e}o(aE,"getHomeDir");function OO(){let e=u_.join(aE(),Re.HDB_HOME_DIR_NAME,Re.BOOT_PROPS_FILE_NAME);return eO.existsSync(e)||(e=u_.join(__dirname,"../","hdb_boot_properties.file")),e}o(OO,"getPropsFilePath");function IO(e,t){let r,s;return s=new Promise(function(n){r=setTimeout(function(){n(t)},e)}),{promise:s,cancel:function(){clearTimeout(r)}}}o(IO,"timeoutPromise");async function CO(e){if(!e)throw new Error("Invalid port passed as parameter");return new Promise((t,r)=>{let s=rO.createServer().once("error",n=>{n.code==="EADDRINUSE"?t(!0):r(n)}).once("listening",()=>s.once("close",()=>t(!1)).close()).listen(e)})}o(CO,"isPortTaken");function bO(e){try{return Re.CLUSTER_OPERATIONS[e.toLowerCase()]!==void 0}catch(t){Se.error(`Error checking operation against cluster ops ${t}`)}return!1}o(bO,"isClusterOperation");function LO(e,t,r){if(global.hdb_socket_client!==void 0){Se.trace(`Sending transaction to channel: ${e}`);let{hdb_user:s,hdb_auth_header:n,...i}=t;i.__originator||(i.__originator={}),i.__transacted=!0,r&&(i.__originator[r]=Re.ORIGINATOR_SET_VALUE),global.hdb_socket_client.publish(e,i)}}o(LO,"sendTransactionToSocketCluster");function yO(e,t){if(!global.hdb_schema[e])return Ai.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e);if(!global.hdb_schema[e]||!global.hdb_schema[e][t])return Ai.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}o(yO,"checkGlobalSchemaTable");function wO(e,t){if(We(t)){Se.warn("No CLUSTERING_USER defined, clustering disabled");return}if(We(e)||It(e)){Se.warn("No users to search.");return}let r;try{let s=e.get(t);s&&s.role.permission.cluster_user===!0&&s.active===!0&&(r=s)}catch(s){Se.error(`unable to find cluster_user due to: ${s.message}`);return}if(r===void 0){Se.warn(`CLUSTERING_USER: ${t} not found or is not active.`);return}return r}o(wO,"getClusterUser");function DO(){Xl.parsePromise=function(e,t){return new Promise(function(r,s){Xl.parse(e,{header:!0,transformHeader:_E,chunk:t.bind(null,s),skipEmptyLines:!0,dynamicTyping:!0,error:s,complete:r})})}}o(DO,"promisifyPapaParse");function _E(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.charCodeAt(0)===65279?e.slice(1):e}o(_E,"removeBOM");function MO(e,t,r){return new Promise(s=>{t.once(e,n=>{let i=r;Se.info(`Got cluster status event response: ${nO(n)}`);try{i.cancel()}catch{Se.error("Error trying to cancel timeout.")}s(n)})})}o(MO,"createEventPromise");async function UO(e){let t=!0,r=0;do await sE(iO*r++),(await rE.findPs(e)).length>0&&(t=!1);while(t&&r<oO);if(t)throw new Error(`process ${e} was not started`)}o(UO,"checkProcessRunning");function PO(e,t){let r=cE(e);if(r)return r;let s=uE(e,t);if(s)return s}o(PO,"checkSchemaTableExist");function cE(e){if(!global.hdb_schema[e])return Ai.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}o(cE,"checkSchemaExists");function uE(e,t){if(!global.hdb_schema[e][t])return Ai.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}o(uE,"checkTableExists");function BO(){let e=Ri().utc().add(1,Re.MOMENT_DAYS_TAG).startOf(Re.MOMENT_DAYS_TAG).unix(),t=Ri().utc().unix();return e-t}o(BO,"getStartOfTomorrowInSeconds");function HO(){return Ri().utc().format("DD-MM-YYYY")}o(HO,"getLimitKey");function vO(e){try{let t=new sO(e);for(let{node:r}of t)r&&(r.columnid&&typeof r.columnid!="string"&&(r.columnid=r.columnid.toString()),r.columnid&&!r.columnid.startsWith("`")&&(r.columnid_orig=r.columnid,r.columnid=`\`${r.columnid}\``),r.tableid&&!r.tableid.startsWith("`")&&(r.tableid_orig=r.tableid,r.tableid=`\`${r.tableid}\``),r.databaseid&&!r.databaseid.startsWith("`")&&(r.databaseid_orig=r.databaseid,r.databaseid=`\`${r.databaseid}\``),r.as&&typeof r.as=="string"&&!r.as.startsWith("[")&&(r.as_orig=r.as,r.as=`\`${r.as}\``))}catch(t){Se.error("Got an error back ticking items."),Se.error(t)}}o(vO,"backtickASTSchemaItems");async function GO(e){let t=En.userInfo();(await rE.findPs(e)).forEach(s=>{(t.uid==0||s.uid==t.uid)&&(process.kill(s.pid),Se.trace(`Following process was killed by stopProcess: ${s.cmd}`))})}o(GO,"stopProcess");function qO(e){return[e]}o(qO,"createForkArgs");function FO(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}o(FO,"autoCastBoolean");function VO(e,t){return global.hdb_schema?.[e]?.[t]?.hash_attribute}o(VO,"getTableHashAttribute");function xO(e){return global?.hdb_schema?.[e]!==void 0}o(xO,"doesSchemaExist");function kO(e,t){return global?.hdb_schema?.[e]?.[t]!==void 0}o(kO,"doesTableExist");function $O(e){try{return JSON.stringify(e)}catch{return e}}o($O,"stringifyObj");function YO(e){let t=Ri.duration(e),r=t.seconds()>0?t.seconds()+"s":"",s=t.minutes()>0?t.minutes()+"m ":"",n=t.hours()>0?t.hours()+"h ":"",i=t.days()>0?t.days()+"d ":"";return(t.years()>0?t.years()+"y ":"")+i+n+s+r}o(YO,"ms_to_time")});var E_=d((q0,EE)=>{"use strict";var KO={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,String.fromCharCode(13,10)),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,String.fromCharCode(13,10))},WO="certificate.pem",QO="privateKey.pem",jO="ca.pem";EE.exports={CERTIFICATE_VALUES:KO,CERTIFICATE_PEM_NAME:WO,PRIVATEKEY_PEM_NAME:QO,CA_PEM_NAME:jO}});var tt=d((F0,dE)=>{"use strict";var He=require("validate.js");He.validators.type=function(e,t,r,s){return e===null||typeof e>"u"||He.validators.type.checks[t](e)?null:` must be a '${t}' value`};He.validators.type.checks={Object:function(e){return He.isObject(e)&&!He.isArray(e)},Array:He.isArray,Integer:He.isInteger,Number:He.isNumber,String:He.isString,Date:He.isDate,Boolean:function(e){return typeof e=="boolean"}};He.validators.hasValidFileExt=function(e,t){return!He.isString(e)||e===""||t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`};dE.exports={validateObject:JO,validateObjectAsync:ZO,validateBySchema:XO};function JO(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=He(e,t,{format:"flat"});return r?new Error(r):null}o(JO,"validateObject");async function ZO(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await He.async(e,t,{format:"flat"})}catch(r){let s=r.join(",");return new Error(s)}return null}o(ZO,"validateObjectAsync");function XO(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}o(XO,"validateBySchema")});var S_=d((V0,hE)=>{"use strict";var zO=require("fs-extra"),H=require("joi"),eI=require("os"),{boolean:Ae,string:$t,number:Ct,array:d_}=H.types(),dt=require("path"),tI=O(),mi=I(),Yt=E_(),rI=tt(),kt="keys",sI=Yt.CERTIFICATE_PEM_NAME,nI=Yt.PRIVATEKEY_PEM_NAME,iI=Yt.CA_PEM_NAME,oI=Yt.CERTIFICATE_PEM_NAME,aI=Yt.PRIVATEKEY_PEM_NAME,_I=Yt.CA_PEM_NAME,cI=Yt.CERTIFICATE_PEM_NAME,uI=Yt.PRIVATEKEY_PEM_NAME,lI=Yt.CA_PEM_NAME,EI="log",dI="custom_functions",SI="Invalid logging.rotation.maxSize unit. Available units are G, M or K",hI="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",fI="rootPath config parameter is undefined",TI="clustering.enabled config parameter is undefined",dr=Ct.min(0).required(),gi=d_.items({host:$t.required(),port:dr}).empty(null),ve;hE.exports={configValidator:RI,routesValidator:NI,route_constraints:gi};function RI(e){if(ve=e.rootPath,mi.isEmpty(ve))throw fI;let t=Ae.required(),r=H.valid("production","development").required(),s=Ct.min(1).max(1e3).empty(null).default(pI),n=$t.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(SE),i=H.custom(mI).messages({"any.custom":"{:#label} {:#error}"}).empty(null).default(SE),a=$t.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null),_=e.clustering?.enabled;if(mi.isEmpty(_))throw TI;let c;return _===!0?c=H.object({enabled:t,hubServer:H.object({cluster:H.object({name:H.required().empty(null),network:H.object({port:dr,routes:gi}).required()}).required(),leafNodes:H.object({network:H.object({port:dr}).required()}).required(),network:H.object({port:dr}).required()}).required(),leafServer:H.object({network:H.object({port:dr,routes:gi}).required()}).required(),nodeName:a,tls:H.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:Ae.required()}),user:H.string().required()}).required():c=H.object({enabled:t,tls:H.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:Ae.required()})}).required(),H.object({clustering:c,customFunctions:H.object({enabled:t,network:H.object({cors:Ae.required(),corsAccessList:d_.required(),headersTimeout:Ct.min(1).required(),https:Ae.required(),keepAliveTimeout:Ct.min(1).required(),port:dr,timeout:Ct.min(1).required()}),nodeEnv:r,root:n,tls:H.object({certificate:i,certificateAuthority:i,privateKey:i})}).required(),ipc:H.object({network:H.object({port:dr})}).required(),localStudio:H.object({enabled:t}).required(),logging:H.object({file:Ae.required(),level:H.valid("notify","fatal","error","warn","info","debug","trace"),rotation:H.object({compress:Ae.required(),dateFormat:$t.required(),maxSize:$t.custom(gI).required(),retain:Ct.min(0).required(),rotate:Ae.required(),rotateInterval:$t.required(),rotateModule:Ae.required(),timezone:$t.required(),workerInterval:Ct.min(1).required()}).required(),root:n,stdStreams:Ae.required(),auditLog:Ae.required()}).required(),operationsApi:H.object({authentication:H.object({operationTokenTimeout:H.required(),refreshTokenTimeout:H.required()}).required(),foreground:Ae.required(),network:H.object({cors:Ae.required(),corsAccessList:d_.required(),headersTimeout:Ct.min(1).required(),https:Ae.required(),keepAliveTimeout:Ct.min(1).required(),port:dr,timeout:Ct.min(1).required()}).required(),nodeEnv:r,tls:H.object({certificate:i,certificateAuthority:i,privateKey:i})}).required(),rootPath:$t.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path").required(),http:H.object({threads:s}).required(),storage:H.object({writeAsync:Ae.required(),overlappingSync:Ae.optional()}).required()}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}o(RI,"configValidator");function AI(e){return zO.existsSync(e)?null:`Specified path ${e} does not exist.`}o(AI,"doesPathExist");function mI(e,t){H.assert(e,$t.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+\.pem+$/).messages({"string.pattern.base":"must be a valid directory path and specify a .pem file"}));let r=AI(e);if(r)return t.message(r)}o(mI,"validatePemFile");function gI(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(SI);let s=e.slice(0,-1);if(isNaN(parseInt(s)))return t.message(hI)}o(gI,"validateRotationMaxSize");function pI(e,t){let r=t.state.path.join("."),s=eI.cpus().length,n=s-1;return n===1&&s===2&&(n=s),tI.info(`Detected ${s} cores on this machine, defaulting ${r} to ${n}`),n}o(pI,"setDefaultThreads");function SE(e,t){if(!mi.isEmpty(t.original))return t.original;let r=t.state.path.join(".");if(mi.isEmpty(ve))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"customFunctions.root":return dt.join(ve,dI);case"logging.root":return dt.join(ve,EI);case"operationsApi.tls.certificate":return dt.join(ve,kt,sI);case"operationsApi.tls.privateKey":return dt.join(ve,kt,nI);case"operationsApi.tls.certificateAuthority":return dt.join(ve,kt,iI);case"customFunctions.tls.certificate":return dt.join(ve,kt,oI);case"customFunctions.tls.privateKey":return dt.join(ve,kt,aI);case"customFunctions.tls.certificateAuthority":return dt.join(ve,kt,_I);case"clustering.tls.certificate":return dt.join(ve,kt,cI);case"clustering.tls.privateKey":return dt.join(ve,kt,uI);case"clustering.tls.certificateAuthority":return dt.join(ve,kt,lI);default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}o(SE,"setDefaultRoot");function NI(e){let t=H.object({routes:gi});return rI.validateBySchema({routes:e},t)}o(NI,"routesValidator")});var st=d((x0,pE)=>{"use strict";var X=T(),rt=I(),Le=O(),{configValidator:OI,routesValidator:fE}=S_(),St=require("fs-extra"),II=require("yaml"),Ts=require("path"),CI=require("is-number"),Oi=require("properties-reader"),bI=require("lodash"),{handleHDBError:LI}=J(),{HTTP_STATUS_CODES:yI,HDB_ERROR_MSGS:pi}=et(),{PACKAGE_ROOT:wI}=T(),DI="Unable to get config value because config is uninitialized",MI="Config successfully initialized",UI="Error backing up config file",PI="Empty parameter sent to getConfigValue",TE=Ts.join(wI,"config","yaml",X.HDB_DEFAULT_CONFIG_FILE),BI="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",Ni,Ge;pE.exports={createConfigFile:HI,getDefaultConfig:vI,getConfigValue:RE,initConfig:AE,flattenConfig:$r,updateConfigValue:mE,updateConfigObject:GI,getConfiguration:qI,setConfiguration:FI,readConfigFile:T_,getClusteringRoutes:VI,initOldConfig:gE,getConfigFromFile:xI};function HI(e){let t=Rs(TE);Ni=$r(t.toJSON());for(let i in e){let a=X.CONFIG_PARAM_MAP[i.toLowerCase()];if(a!==void 0){let _=a.split("_"),c=h_(a,e[i]);try{t.setIn([..._],c)}catch(u){Le.error(u)}}}f_(t);let r=t.toJSON();Ge=$r(r);let s=t.getIn(["rootPath"]),n=Ts.join(s,X.HDB_CONFIG_FILE);St.createFileSync(n),St.writeFileSync(n,String(t)),Le.trace(`Config file written to ${n}`)}o(HI,"createConfigFile");function vI(e){if(Ni===void 0){let r=Rs(TE);Ni=$r(r.toJSON())}let t=X.CONFIG_PARAM_MAP[e.toLowerCase()];if(t!==void 0)return Ni[t.toLowerCase()]}o(vI,"getDefaultConfig");function RE(e){if(rt.isEmpty(e)){Le.error(PI);return}if(Ge===void 0){Le.trace(DI);return}let t=X.CONFIG_PARAM_MAP[e.toLowerCase()];if(t!==void 0)return Ge[t.toLowerCase()]}o(RE,"getConfigValue");function AE(e=!1){if(Ge===void 0||e){let t=rt.getPropsFilePath();try{St.accessSync(t,St.constants.F_OK|St.constants.R_OK)}catch(a){throw Le.error(a),new Error(`HarperDB properties file at path ${t} does not exist`)}let s=Oi(t).get(X.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY),n;if(s.includes("config/settings.js"))try{gE(s);return}catch(a){if(a.code!==X.NODE_ERROR_CODES.ENOENT)throw a}try{n=Rs(s)}catch(a){if(a.code===X.NODE_ERROR_CODES.ENOENT){Le.trace(`HarperDB config file not found at ${s}.
6
6
  This can occur during early stages of install where the config file has not yet been created`);return}else throw Le.error(a),new Error(`Error reading HarperDB config file at ${s}`)}f_(n);let i=n.toJSON();Ge=$r(i),Le.trace(MI)}}o(AE,"initConfig");function f_(e){let t=e.toJSON(),r=OI(t);if(r.error)throw pi.CONFIG_VALIDATION(r.error.message);e.setIn(["http","threads"],r.value.http.threads),e.setIn(["customFunctions","root"],r.value.customFunctions.root),e.setIn(["logging","root"],r.value.logging.root),e.setIn(["operationsApi","tls","certificate"],r.value.operationsApi.tls.certificate),e.setIn(["operationsApi","tls","privateKey"],r.value.operationsApi.tls.privateKey),e.setIn(["operationsApi","tls","certificateAuthority"],r.value.operationsApi.tls.certificateAuthority),e.setIn(["customFunctions","tls","certificate"],r.value.customFunctions.tls.certificate),e.setIn(["customFunctions","tls","privateKey"],r.value.customFunctions.tls.privateKey),e.setIn(["customFunctions","tls","certificateAuthority"],r.value.customFunctions.tls.certificateAuthority),e.setIn(["clustering","tls","certificate"],r.value.clustering.tls.certificate),e.setIn(["clustering","tls","privateKey"],r.value.clustering.tls.privateKey),e.setIn(["clustering","tls","certificateAuthority"],r.value.clustering.tls.certificateAuthority)}o(f_,"validateConfig");function GI(e,t){Ge===void 0&&(Ge={});let r=X.CONFIG_PARAM_MAP[e.toLowerCase()];if(r===void 0){Le.trace(`Unable to update config object because config param '${e}' does not exist`);return}Ge[r.toLowerCase()]=t}o(GI,"updateConfigObject");function mE(e,t,r=void 0,s=!1,n=!1){Ge===void 0&&AE();let i=RE(X.CONFIG_PARAM_MAP.hdb_root),a=Ts.join(i,X.HDB_CONFIG_FILE),_=Rs(a);if(r===void 0){let l=X.CONFIG_PARAM_MAP[e.toLowerCase()];if(l===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let E=l.split("_"),h=h_(l,t);_.setIn([...E],h)}else for(let l in r){let E=X.CONFIG_PARAM_MAP[l.toLowerCase()];if(E!==void 0){let h=E.split("_"),S=h_(E,r[l]);try{_.setIn([...h],S)}catch(A){Le.error(A)}}}f_(_);let c=_.getIn(["rootPath"]),u=Ts.join(c,X.HDB_CONFIG_FILE);if(s===!0)try{let l=Ts.join(c,"backup",`${X.HDB_CONFIG_FILE}.bak`);St.copySync(a,l),Le.trace(`Config file: ${a} backed up to: ${l}`)}catch(l){Le.error(UI),Le.error(l)}St.writeFileSync(u,String(_)),n&&(Ge=$r(_.toJSON())),Le.trace(`Config parameter: ${e} updated with value: ${t}`)}o(mE,"updateConfigValue");function $r(e){let t={};for(let r in e)if(!!e.hasOwnProperty(r))if(typeof e[r]=="object"&&e[r]!==null&&!Array.isArray(e[r])){let s=$r(e[r]);for(let n in s)!s.hasOwnProperty(n)||(t[r.toLowerCase()+"_"+n]=s[n])}else t[r.toLowerCase()]=e[r];return t}o($r,"flattenConfig");function h_(e,t){if(e===X.CONFIG_PARAMS.CLUSTERING_NODENAME||e===X.CONFIG_PARAMS.CLUSTERING_USER){if(!isNaN(t))return t.toString();if(typeof t=="string"&&t.toLowerCase()==="true"||typeof t=="string"&&t.toLowerCase()==="false")return t}else{if(CI(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||rt.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 rt.autoCast(t)}o(h_,"castConfigValue");function qI(){let e=rt.getPropsFilePath(),r=Oi(e).get(X.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY);return Rs(r).toJSON()}o(qI,"getConfiguration");async function FI(e){let{operation:t,hdb_user:r,hdb_auth_header:s,...n}=e;try{return mE(void 0,void 0,n,!0),BI}catch(i){throw typeof i=="string"||i instanceof String?LI(i,i,yI.BAD_REQUEST,void 0,void 0,!0):i}}o(FI,"setConfiguration");function T_(){let e=rt.getPropsFilePath();try{St.accessSync(e,St.constants.F_OK|St.constants.R_OK)}catch(n){throw Le.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let r=Oi(e).get(X.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY);return Rs(r).toJSON()}o(T_,"readConfigFile");function Rs(e){return II.parseDocument(St.readFileSync(e,"utf8"),{simpleKeys:!0})}o(Rs,"parseYamlDoc");function VI(){let e=T_(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=rt.isEmptyOrZeroLength(t)?[]:t;let r=fE(t);if(r)throw pi.CONFIG_VALIDATION(r.message);let s=e?.clustering?.leafServer?.network?.routes;s=rt.isEmptyOrZeroLength(s)?[]:s;let n=fE(s);if(n)throw pi.CONFIG_VALIDATION(n.message);if(!rt.isEmptyOrZeroLength(s)&&!rt.isEmptyOrZeroLength(t)){let i=t.filter(a=>s.some(_=>_.host===a.host&&_.port===a.port));if(!rt.isEmptyOrZeroLength(i)){let a=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw pi.CONFIG_VALIDATION(a)}}return{hub_routes:t,leaf_routes:s}}o(VI,"getClusteringRoutes");function gE(e){let t=Oi(e);Ge={};for(let r in X.CONFIG_PARAM_MAP){let s=t.get(r.toUpperCase());if(rt.isEmpty(s)||typeof s=="string"&&s.trim().length===0)continue;let n=X.CONFIG_PARAM_MAP[r].toLowerCase();n===X.CONFIG_PARAMS.LOGGING_ROOT?Ge[n]=Ts.dirname(s):Ge[n]=s}return Ge}o(gE,"initOldConfig");function xI(e){let t=T_();return bI.get(t,e.replaceAll("_","."))}o(xI,"getConfigFromFile")});var Y=d((k0,OE)=>{"use strict";var R_=require("fs-extra"),bt=require("path"),kI=require("os"),$I=require("properties-reader"),dn=O(),As=I(),w=T(),Ii=st(),YI="Error initializing environment manager",Ci="BOOT_PROPS_FILE_PATH",NE=!1,KI={[w.HDB_SETTINGS_NAMES.INSTALL_USER]:!0,[w.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]:!0,[w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]:!0,BOOT_PROPS_FILE_PATH:!0},Kt={};OE.exports={BOOT_PROPS_FILE_PATH:Ci,getHdbBasePath:WI,setHdbBasePath:QI,get:jI,initSync:ZI,setProperty:q,initTestEnvironment:XI};function WI(){return Kt[w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]}o(WI,"getHdbBasePath");function QI(e){Kt[w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=e}o(QI,"setHdbBasePath");function jI(e){let t=Ii.getConfigValue(e);return t===void 0?Kt[e]:t}o(jI,"get");function q(e,t){KI[e]&&(Kt[e]=t),Ii.updateConfigObject(e,t)}o(q,"setProperty");function JI(){let e;try{e=As.getPropsFilePath(),R_.accessSync(e,R_.constants.F_OK|R_.constants.R_OK),NE=!0;let t=$I(e);return Kt[w.HDB_SETTINGS_NAMES.INSTALL_USER]=t.get(w.HDB_SETTINGS_NAMES.INSTALL_USER),Kt[w.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]=t.get(w.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY),Kt[Ci]=e,!0}catch{return dn.trace(`Environment manager found no properties file at ${e}`),!1}}o(JI,"doesPropFileExist");function ZI(e=!1){try{(NE||JI())&&(Ii.initConfig(e),Kt[w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=Ii.getConfigValue(w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY))}catch(t){dn.error(YI),dn.error(t),console.error(t),process.exit(1)}}o(ZI,"initSync");function XI(e={}){try{let{keep_alive_timeout:t,headers_timeout:r,server_timeout:s,https_enabled:n,cors_enabled:i,cors_accesslist:a,local_studio_on:_}=e,c=bt.join(__dirname,"../../","unitTests");Kt[Ci]=bt.join(c,"hdb_boot_properties.file"),q(w.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY,bt.join(c,"settings.test")),q(w.HDB_SETTINGS_NAMES.INSTALL_USER,kI.userInfo().username),q(w.HDB_SETTINGS_NAMES.PRIVATE_KEY_KEY,bt.join(c,"envDir","utility","keys","privateKey.pem")),q(w.HDB_SETTINGS_NAMES.CERT_KEY,bt.join(c,"envDir","utility","keys","certificate.pem")),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_PRIVATEKEY,bt.join(c,"envDir","utility","keys","privateKey.pem")),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_CERTIFICATE,bt.join(c,"envDir","utility","keys","certificate.pem")),q(w.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY,"debug"),q(w.HDB_SETTINGS_NAMES.LOG_PATH_KEY,bt.join(c,"envDir","log")),q(w.HDB_SETTINGS_NAMES.LOG_DAILY_ROTATE_KEY,!1),q(w.HDB_SETTINGS_NAMES.CLUSTERING_ENABLED_KEY,!0),q(w.HDB_SETTINGS_NAMES.CLUSTERING_NODE_NAME_KEY,"1231412de213"),q(w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY,bt.join(c,"envDir")),q(w.HDB_SETTINGS_NAMES.HTTP_SECURE_ENABLED_KEY,As.isEmpty(n)?!0:n),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HTTPS,As.isEmpty(n)?!0:n),q(w.HDB_SETTINGS_NAMES.SERVER_PORT_KEY,9925),q(w.HDB_SETTINGS_NAMES.CORS_ENABLED_KEY,As.isEmpty(i)?!1:i),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORS,As.isEmpty(i)?!1:i),q(w.HDB_SETTINGS_NAMES.IPC_SERVER_PORT,9383),q(w.HDB_SETTINGS_NAMES.MAX_CUSTOM_FUNCTION_PROCESSES,2),q(w.HDB_SETTINGS_NAMES.MAX_HDB_PROCESSES,4),q(w.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_PORT_KEY,9926),q(w.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_ENABLED_KEY,!0),q(w.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_DIRECTORY_KEY,bt.resolve(__dirname,"../../unitTests/server/customFunctions/custom_functions")),q(w.HDB_SETTINGS_NAMES.LOCAL_STUDIO_ON,As.isEmpty(_)?!1:_),a&&(q("CORS_ACCESSLIST",a),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORSACCESSLIST,a)),s&&(q(w.HDB_SETTINGS_NAMES.SERVER_TIMEOUT_KEY,s),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_TIMEOUT,s)),t&&(q(w.HDB_SETTINGS_NAMES.SERVER_KEEP_ALIVE_TIMEOUT_KEY,t),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_KEEPALIVETIMEOUT,t)),r&&(q(w.HDB_SETTINGS_NAMES.SERVER_HEADERS_TIMEOUT_KEY,r),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HEADERSTIMEOUT,r))}catch(t){let r=`Error reading in HDB environment variables from path ${Ci}. Please check your boot props and settings files`;dn.fatal(r),dn.error(t)}}o(XI,"initTestEnvironment")});var m_=d(($0,IE)=>{"use strict";var Sn=Y();Sn.initSync();var ms=require("fs-extra"),A_=require("path"),gs=T(),zI=require("crypto"),eC=require("uuid").v4;IE.exports=tC;function tC(){if(Sn.getHdbBasePath()!==void 0){let e=A_.join(Sn.getHdbBasePath(),gs.LICENSE_KEY_DIR_NAME,gs.JWT_ENUM.JWT_PRIVATE_KEY_NAME),t=A_.join(Sn.getHdbBasePath(),gs.LICENSE_KEY_DIR_NAME,gs.JWT_ENUM.JWT_PUBLIC_KEY_NAME),r=A_.join(Sn.getHdbBasePath(),gs.LICENSE_KEY_DIR_NAME,gs.JWT_ENUM.JWT_PASSPHRASE_NAME);try{ms.accessSync(r),ms.accessSync(e),ms.accessSync(t)}catch(s){if(s.code==="ENOENT"){let n=eC(),i=zI.generateKeyPairSync("rsa",{modulusLength:4096,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem",cipher:"aes-256-cbc",passphrase:n}});ms.writeFileSync(r,n),ms.writeFileSync(e,i.privateKey),ms.writeFileSync(t,i.publicKey)}else throw s}}}o(tC,"checkJWTTokenExist")});var ps=d((Y0,LE)=>{"use strict";var bE=I(),CE=T(),Li=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,g_=require("joi"),bi={schema_format:{pattern:Li,message:"names cannot include backticks or forward slashes"},schema_length:{maximum:250,tooLong:"cannot exceed 250 characters"}},rC=g_.alternatives(g_.string().min(1).max(bi.schema_length.maximum).pattern(Li).messages({"string.pattern.base":"{:#label} "+bi.schema_format.message}),g_.number()).required();function sC(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>bi.schema_length.maximum?`'${e}' maximum of 250 characters`:Li.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}o(sC,"checkValidTable");function nC(e,t){return bE.doesSchemaExist(e)?e:t.message(`Schema '${e}' does not exist`)}o(nC,"validateSchemaExists");function iC(e,t){let r=t.state.ancestors[0].schema;return bE.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}o(iC,"validateTableExists");function oC(e,t){return e.toLowerCase()===CE.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid schema name, '${CE.SYSTEM_SCHEMA_NAME}' name is reserved`):e}o(oC,"validateSchemaName");LE.exports={common_validators:bi,schema_regex:Li,hdb_schema_table:rC,validateSchemaExists:nC,validateTableExists:iC,validateSchemaName:oC,checkValidTable:sC}});var N_=d((K0,wE)=>{var{hdb_schema_table:yE}=ps(),aC=tt(),p_=require("joi"),_C={undefined:"undefined",null:"null"},cC=o((e,t)=>{let r=Object.keys(e),s=r.length,n;for(let i=0;i<s;i++){let a=r[i];(!a||a.length===0||_C[a]!==void 0)&&(n===void 0?n=`Invalid attribute name: '${a}'`:n+=`. Invalid attribute name: '${a}'`)}return n?t.message(n):e},"custom_records_val"),uC=p_.object({schema:yE,table:yE,records:p_.array().items(p_.object().custom(cC)).required()});wE.exports=function(e){return aC.validateBySchema(e,uC)}});var O_=d((W0,DE)=>{"use strict";var yi=class{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")}};o(yi,"BridgeMethods");DE.exports=yi});var Sr=d((J0,BE)=>{"use strict";var ME=et().LMDB_ERRORS_ENUM,Q0=require("lmdb"),lC=Te(),j0=require("buffer").Buffer,EC=require("microtime"),{OVERFLOW_MARKER:UE,MAX_SEARCH_KEY_LENGTH:wi}=lC,PE=["number","string","symbol","boolean","bigint"];function dC(e){if(!e)throw new Error(ME.ENV_REQUIRED);if(e.constructor.name!=="LMDBStore")throw new Error(ME.INVALID_ENVIRONMENT)}o(dC,"validateEnv");function SC(e){if(e==null)return null;let t;try{t=typeof e=="object"?JSON.stringify(e):e.toString()}catch{t=e.toString()}return t}o(SC,"stringifyData");function hC(e){return e instanceof Date?e.valueOf():e}o(hC,"convertKeyValueToWrite");function fC(e){if(e==null)return;if(PE.includes(typeof e))return e.length>wi?[e.slice(0,wi)+UE]:[e];let t;if(Array.isArray(e)){t=[];for(let r=0,s=e.length;r<s;r++){let n=e[r];PE.includes(typeof n)&&(n.length>wi?t.push(n.slice(0,wi)+UE):t.push(n))}}return t}o(fC,"getIndexedValues");function TC(){let e=EC.now().toString(),t=e.length-3;return Number(e.slice(0,t)+"."+e.slice(t))}o(TC,"getMicroTime");BE.exports={validateEnv:dC,stringifyData:SC,convertKeyValueToWrite:hC,getMicroTime:TC,getIndexedValues:fC}});var vE=d((Z0,HE)=>{"use strict";var Di=class{constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};o(Di,"DBIDefinition");HE.exports=Di});var qE=d((X0,GE)=>{"use strict";var Mi=class{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={validated:!0},this.randomAccessStructure=!0,this.freezeData=!0)}};o(Mi,"OpenDBIObject");GE.exports=Mi});var VE=d((z0,FE)=>{"use strict";var Ui=class{constructor(t,r,s,n,i=!1,a=!1,_=void 0){this.path=t,this.mapSize=r,this.maxDbs=s,this.maxReaders=n,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=i,this.trackMetrics=!0,this.noSync=a,_!==void 0&&(this.overlappingSync=_)}};o(Ui,"OpenEnvironmentObject");FE.exports=Ui});var $=d((tV,zE)=>{"use strict";var I_=require("lmdb"),nt=require("fs-extra"),ht=require("path"),Bi=Sr(),xE=O(),me=et().LMDB_ERRORS_ENUM,Hi=vE(),C_=qE(),kE=VE(),hr=Te(),eV=T(),hn=Y();hn.initSync();var $E=hn.get("STORAGE_WRITEASYNC")===!0||hn.get("STORAGE_WRITEASYNC")==="true"||hn.get("STORAGE_WRITEASYNC")==="TRUE",YE=hn.get("STORAGE_OVERLAPPINGSYNC"),KE=1024*1024*1024,WE=1e4,QE=1e3,ft=hr.INTERNAL_DBIS_NAME,jE=hr.DBI_DEFINITION_NAME,RC="data.mdb",AC="lock.mdb",fn=".mdb",mC="-lock",Pi=class{constructor(t,r,s=!1){this.dbi=it(t,r),this.key_type=this.dbi[hr.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[hr.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:s===!1}),this.cursor=new I_.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};o(Pi,"TransactionCursor");function b_(e,t){if(e===void 0)throw new Error(me.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(me.ENV_NAME_REQUIRED)}o(b_,"pathEnvNameValidation");async function L_(e,t,r=!0){try{await nt.access(e)}catch(s){throw s.code==="ENOENT"?new Error(me.INVALID_BASE_PATH):s}try{let s=ht.join(e,t+fn);return await nt.access(s,nt.constants.R_OK|nt.constants.F_OK),s}catch(s){if(s.code==="ENOENT")if(r)try{return await nt.access(ht.join(e,t,RC),nt.constants.R_OK|nt.constants.F_OK),ht.join(e,t)}catch(n){if(n.code==="ENOENT")throw new Error(me.INVALID_ENVIRONMENT)}else throw new Error(me.INVALID_ENVIRONMENT);throw s}}o(L_,"validateEnvironmentPath");function vi(e,t){if(Bi.validateEnv(e),t===void 0)throw new Error(me.DBI_NAME_REQUIRED)}o(vi,"validateEnvDBIName");async function gC(e,t,r=!1,s=!1){b_(e,t),t=t.toString();try{return await L_(e,t,s),y_(e,t,r)}catch(n){if(n.message===me.INVALID_ENVIRONMENT){let i=ht.join(e,t);await nt.mkdirp(s?i:e);let a=new kE(s?i:i+fn,KE,WE,QE,!1,$E,YE),_=I_.open(a);_.dbis=Object.create(null);let c=new C_(!1);_.openDB(ft,c),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let u=w_(e,t,r);return _[hr.ENVIRONMENT_NAME_KEY]=u,global.lmdb_map[u]=_,_}throw n}}o(gC,"createEnvironment");async function pC(e,t,r,s=!0){let n=await y_(e,t);if(r===void 0)throw new Error(me.DESTINATION_PATH_REQUIRED);try{await nt.access(ht.dirname(r))}catch(i){throw i.code==="ENOENT"?new Error(me.INVALID_DESTINATION_PATH):i}await n.backup(r,s)}o(pC,"copyEnvironment");async function y_(e,t,r=!1){b_(e,t),t=t.toString();let s=w_(e,t,r);if(global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null)),global.lmdb_map[s]!==void 0)return global.lmdb_map[s];let n=await L_(e,t),i=ht.join(e,t+fn),a=n!=i,_=new kE(n,KE,WE,QE,a,$E,YE),c=I_.open(_);c.dbis=Object.create(null);let u=ZE(c);for(let l=0;l<u.length;l++)it(c,u[l]);return c[hr.ENVIRONMENT_NAME_KEY]=s,global.lmdb_map[s]=c,c}o(y_,"openEnvironment");async function NC(e,t,r=!1){b_(e,t),t=t.toString();let s=ht.join(e,t+fn),n=await L_(e,t);if(global.lmdb_map!==void 0){let i=w_(e,t,r);if(global.lmdb_map[i]){let a=global.lmdb_map[i];await JE(a),delete global.lmdb_map[i]}}await nt.remove(n),await nt.remove(n===s?n+mC:ht.join(ht.dirname(n),AC))}o(NC,"deleteEnvironment");async function JE(e){Bi.validateEnv(e);let t=e[hr.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}o(JE,"closeEnvironment");function w_(e,t,r=!1){let n=`${ht.basename(e)}.${t}`;return r===!0&&(n=`txn.${n}`),n}o(w_,"getCachedEnvironmentName");function OC(e){Bi.validateEnv(e);let t=Object.create(null),r=it(e,ft);for(let{key:s,value:n}of r.getRange({start:!1}))if(s!==ft)try{t[s]=Object.assign(new Hi,n)}catch{xE.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return t}o(OC,"listDBIDefinitions");function ZE(e){Bi.validateEnv(e);let t=[],r=it(e,ft);for(let{key:s}of r.getRange({start:!1}))s!==ft&&t.push(s);return t}o(ZE,"listDBIs");function IC(e,t){let s=it(e,ft).getEntry(t),n=new Hi;if(s!==void 0){try{n=Object.assign(n,s.value)}catch{xE.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return n}}o(IC,"getDBIDefinition");function XE(e,t,r,s=!1){if(vi(e,t),t=t.toString(),t===ft)throw new Error(me.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return it(e,t)}catch(n){if(n.message===me.DBI_DOES_NOT_EXIST){let i=new C_(r,s===!0),a=e.openDB(t,i),_=new Hi(r===!0,s);return a[jE]=_,it(e,ft).putSync(t,_),e.dbis[t]=a,a}throw n}}o(XE,"createDBI");function it(e,t){if(vi(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==ft?r=IC(e,t):r=new Hi,r===void 0)throw new Error(me.DBI_DOES_NOT_EXIST);let s;try{let n=new C_(r.dup_sort,r.useVersions);if(s=e.openDB(t,n),s.db===void 0)throw new Error("MDB_NOTFOUND")}catch(n){throw n.message.includes("MDB_NOTFOUND")===!0?new Error(me.DBI_DOES_NOT_EXIST):n}return s[jE]=r,e.dbis[t]=s,s}o(it,"openDBI");function CC(e,t){vi(e,t),t=t.toString();let r=it(e,t),s=r.getStats();return r[hr.DBI_DEFINITION_NAME].is_hash_attribute&&s.entryCount>0&&s.entryCount--,s}o(CC,"statDBI");async function bC(e,t){try{let r=ht.join(e,t+fn);return(await nt.stat(r)).size}catch{throw new Error(me.INVALID_ENVIRONMENT)}}o(bC,"environmentDataSize");function LC(e,t){if(vi(e,t),t=t.toString(),t===ft)throw new Error(me.CANNOT_DROP_INTERNAL_DBIS_NAME);it(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],it(e,ft).removeSync(t)}o(LC,"dropDBI");function yC(e,t,r){for(let s=0;s<r.length;s++){let n=r[s];if(!e.dbis[n])try{it(e,n)}catch(i){if(i.message===me.DBI_DOES_NOT_EXIST)XE(e,n,n!==t,n===t);else throw i}}}o(yC,"initializeDBIs");zE.exports={openDBI:it,openEnvironment:y_,createEnvironment:gC,listDBIs:ZE,listDBIDefinitions:OC,createDBI:XE,dropDBI:LC,statDBI:CC,deleteEnvironment:NC,initializeDBIs:yC,TransactionCursor:Pi,environmentDataSize:bC,copyEnvironment:pC,closeEnvironment:JE}});var td=d((rV,ed)=>{"use strict";var Gi=class{constructor(t=[],r=[],s=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=s}};o(Gi,"InsertRecordsResponseObject");ed.exports=Gi});var sd=d((sV,rd)=>{"use strict";var qi=class{constructor(t=[],r=[],s=void 0,n=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=s,this.original_records=n}};o(qi,"UpdateRecordsResponseObject");rd.exports=qi});var id=d((nV,nd)=>{"use strict";var Fi=class{constructor(t=[],r=void 0,s=[]){this.written_hashes=t,this.txn_time=r,this.original_records=s}};o(Fi,"UpsertRecordsResponseObject");nd.exports=Fi});var Kr=d((_V,ad)=>{"use strict";var wC=$(),DC=td(),MC=sd(),UC=id(),Rn=Sr(),Tn=et().LMDB_ERRORS_ENUM,PC=Te(),fr=T(),BC=I(),HC=require("uuid"),iV=require("lmdb"),{handleHDBError:vC,hdb_errors:GC}=J(),{OVERFLOW_MARKER:oV,MAX_SEARCH_KEY_LENGTH:aV}=PC,D_=fr.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Yr=fr.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function qC(e,t,r,s,n=!0){B_(e,t,r,s),M_(e,t,r);let i=new DC,a=[],_=[];for(let c=0;c<s.length;c++){let u=s[c];od(u,!0,n);let l=FC(e,t,r,u),E=u[t];a.push(l),_.push(E)}return U_(a,_,s,i)}o(qC,"insertRecords");function FC(e,t,r,s){let n=s[t];return e.dbis[t].ifNoExists(n,()=>{for(let i=0;i<r.length;i++){let a=r[i];if(a===t||s.hasOwnProperty(a)===!1)continue;let _=s[a];if(typeof _=="function"){let u=_([[{}]]);Array.isArray(u)&&(_=u[0][fr.FUNC_VAL],s[a]=_)}let c=Rn.getIndexedValues(_);if(c)for(let u=0,l=c.length;u<l;u++)e.dbis[a].put(c[u],n)}e.dbis[t].put(n,s,s[Yr])})}o(FC,"insertRecord");function VC(e,t=[]){let r=0;for(let s=0;s<t.length;s++){let n=t[s];e.splice(n-r,1),r++}}o(VC,"removeSkippedRecords");function od(e,t,r=!0){let s=Date.now();(r===!0||!Number.isInteger(e[Yr]))&&(e[Yr]=s),t===!0?(r===!0||!Number.isInteger(e[D_]))&&(e[D_]=s):delete e[D_]}o(od,"setTimestamps");function M_(e,t,r){r.indexOf(fr.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(fr.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(fr.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(fr.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),wC.initializeDBIs(e,t,r)}o(M_,"initializeTransaction");async function xC(e,t,r,s,n=!0){B_(e,t,r,s),M_(e,t,r);let i=new MC,a=[],_=[],c=[];for(let u=0;u<s.length;u++){let l=s[u],E=l[t],h;try{h=P_(e,t,l,E,i,!0,n)}catch{i.skipped_hashes.push(E),a.push(u);continue}_.push(h),c.push(E)}return U_(_,c,s,i,a)}o(xC,"updateRecords");async function kC(e,t,r,s,n=!0){try{B_(e,t,r,s)}catch(c){throw vC(c,c.message,GC.HTTP_STATUS_CODES.BAD_REQUEST)}M_(e,t,r);let i=new UC,a=[],_=[];for(let c=0;c<s.length;c++){let u=s[c],l;BC.isEmpty(u[t])?(l=HC.v4(),u[t]=l):l=u[t];let E=P_(e,t,u,l,i,!1,n);a.push(E),_.push(l)}return U_(a,_,s,i)}o(kC,"upsertRecords");async function U_(e,t,r,s,n=[]){let i=await Promise.all(e);for(let a=0,_=i.length;a<_;a++)i[a]===!0?s.written_hashes.push(t[a]):(s.skipped_hashes.push(t[a]),n.push(a));return s.txn_time=Rn.getMicroTime(),VC(r,n),s}o(U_,"finalizeWrite");function P_(e,t,r,s,n,i=!1,a=!0){let _=e.dbis[t],c=_.getEntry(s),u=c?.value,l=u;if(!u){if(i)return!1;u={}}if(od(r,!l,a),Number.isInteger(r[Yr])&&u[Yr]>r[Yr])return!1;l&&n.original_records.push(u);let E,h=o(()=>{for(let A in r){if(!r.hasOwnProperty(A)||A===t)continue;let R=r[A],L=e.dbis[A];if(L===void 0)continue;let de=u[A];if(typeof R=="function"){let k=R([[u]]);Array.isArray(k)&&(R=k[0][fr.FUNC_VAL],r[A]=R)}if(R===de)continue;let p=Rn.getIndexedValues(de);if(p)for(let k=0,Ie=p.length;k<Ie;k++)L.remove(p[k],s);if(p=Rn.getIndexedValues(R),p)for(let k=0,Ie=p.length;k<Ie;k++)L.put(p[k],s)}let S=Object.assign({},u,r);_.put(s,S,S[Yr])},"do_put");return c?E=_.ifVersion(s,c.version,h):E=_.ifNoExists(s,h),E.then(S=>S?!0:P_(e,t,r,s,n,i,a))}o(P_,"updateUpsertRecord");function $C(e,t,r){if(Rn.validateEnv(e),t===void 0)throw new Error(Tn.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(Tn.WRITE_ATTRIBUTES_REQUIRED):new Error(Tn.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}o($C,"validateBasic");function B_(e,t,r,s){if($C(e,t,r),!Array.isArray(s))throw s===void 0?new Error(Tn.RECORDS_REQUIRED):new Error(Tn.RECORDS_MUST_BE_ARRAY)}o(B_,"validateWrite");ad.exports={insertRecords:qC,updateRecords:xC,upsertRecords:kC}});var Z=d((cV,cd)=>{"use strict";var H_=T(),Ns=Y(),v_=require("path");Ns.initSync();var Vi,xi,ki;function _d(){if(Vi!==void 0)return Vi;if(Ns.getHdbBasePath()!==void 0)return Vi=v_.join(Ns.getHdbBasePath(),H_.SCHEMA_DIR_NAME),Vi}o(_d,"getBaseSchemaPath");function YC(){if(xi!==void 0)return xi;if(Ns.getHdbBasePath()!==void 0)return xi=v_.join(_d(),H_.SYSTEM_SCHEMA_NAME),xi}o(YC,"getSystemSchemaPath");function KC(){if(ki!==void 0)return ki;if(Ns.getHdbBasePath()!==void 0)return ki=v_.join(Ns.getHdbBasePath(),H_.TRANSACTIONS_DIR_NAME),ki}o(KC,"getTransactionAuditStorePath");cd.exports={getBaseSchemaPath:_d,getSystemSchemaPath:YC,getTransactionAuditStorePath:KC}});var Wt=d((uV,WC)=>{WC.exports={hdb_table:{hash_attribute:"id",name:"hdb_table",schema:"system",residence:["*"],attributes:[{attribute:"id"},{attribute:"name"},{attribute:"hash_attribute"},{attribute:"schema"},{attribute:"residence"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_attribute:{hash_attribute:"id",name:"hdb_attribute",schema:"system",residence:["*"],attributes:[{attribute:"id"},{attribute:"schema"},{attribute:"table"},{attribute:"attribute"},{attribute:"schema_table"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_schema:{hash_attribute:"name",name:"hdb_schema",schema:"system",residence:["*"],attributes:[{attribute:"name"},{attribute:"createddate"},{attribute:"__createdtime__"},{attribute:"__updatedtime__"}]},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:"__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:"__createdtime__"},{attribute:"__updatedtime__"}]},hdb_temp:{hash_attribute:"id",name:"hdb_temp",schema:"system",attributes:[{attribute:"id"}]}}});var G_=d((lV,ud)=>{var{common_validators:Tr}=ps(),An=tt(),Tt="is required",K={schema:{presence:!0,format:Tr.schema_format,length:Tr.schema_length},table:{presence:!0,format:Tr.schema_format,length:Tr.schema_length},attribute:{presence:!0,format:Tr.schema_format,length:Tr.schema_length},hash_attribute:{presence:!0,format:Tr.schema_format,length:Tr.schema_length}};function mn(e){for(let t in e)e[t]=e[t]===null||e[t]===void 0||typeof e[t]=="object"?e[t]:e[t].toString();return e}o(mn,"makeAttributesStrings");function QC(e){return e=mn(e),K.schema.presence={message:Tt},K.table.presence=!1,K.attribute.presence=!1,K.hash_attribute.presence=!1,An.validateObject(e,K)}o(QC,"schema_object");function jC(e){return e=mn(e),K.schema.presence={message:Tt},K.table.presence={message:Tt},K.attribute.presence=!1,K.hash_attribute.presence=!1,An.validateObject(e,K)}o(jC,"table_object");function JC(e){return e=mn(e),K.schema.presence={message:Tt},K.table.presence={message:Tt},K.attribute.presence=!1,K.hash_attribute.presence={message:Tt},An.validateObject(e,K)}o(JC,"create_table_object");function ZC(e){return e=mn(e),K.schema.presence={message:Tt},K.table.presence={message:Tt},K.attribute.presence={message:Tt},K.hash_attribute.presence=!1,An.validateObject(e,K)}o(ZC,"attribute_object");function XC(e){return e=mn(e),K.schema.presence={message:Tt},K.table.presence={message:Tt},K.attribute.presence=!1,K.hash_attribute.presence=!1,An.validateObject(e,K)}o(XC,"describe_table");function zC(e){if(!!e){if(!Array.isArray(e))throw new Error("residence must be a string array");if(e.length===0)throw new Error("residence cannot be an empty array");for(let t=0;t<e.length;t++)if(typeof e[t]!="string")throw new Error(`residence must be a string array, item '${e[t]}' is not a string`)}}o(zC,"validateTableResidence");ud.exports={schema_object:QC,create_table_object:JC,table_object:jC,attribute_object:ZC,describe_table:XC,validateTableResidence:zC}});var Ed=d((EV,ld)=>{"use strict";var eb=require("uuid"),$i=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.attribute=s,this.id=n||eb.v4(),this.schema_table=`${this.schema}.${this.table}`}};o($i,"CreateAttributeObject");ld.exports=$i});var Ki=d((dV,dd)=>{"use strict";var tb=Ed(),Yi=class extends tb{constructor(t,r,s,n,i=!0,a=!1){super(t,r,s,n),this.dup_sort=i,this.is_hash_attribute=a}};o(Yi,"LMDBCreateAttributeObject");dd.exports=Yi});var hd=d((SV,Sd)=>{"use strict";Sd.exports=sb;var rb="inserted";function sb(e,t,r,s){let n={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:s};return e===rb?(n.inserted_hashes=t,n):(n.update_hashes=t,n)}o(sb,"returnObject")});var Wi=d((hV,Td)=>{"use strict";var nb=T(),q_=$(),ib=Kr(),{getSystemSchemaPath:ob,getBaseSchemaPath:ab}=Z(),_b=require("path"),cb=Wt(),ub=G_(),lb=Ki(),Eb=hd(),{handleHDBError:db,hdb_errors:Sb}=J(),hb=I(),F_=cb.hdb_attribute,fd=[];for(let e=0;e<F_.attributes.length;e++)fd.push(F_.attributes[e].attribute);var fb="inserted";Td.exports=Tb;async function Tb(e){let t=ub.attribute_object(e);if(t)throw db(new Error,t.message,Sb.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=hb.isEmpty(e.dup_sort)||e.dup_sort=="true";let r=[];if(global.hdb_schema[e.schema]&&global.hdb_schema[e.schema][e.table]&&(r=global.hdb_schema[e.schema][e.table].attributes),Array.isArray(r)&&r.length>0){for(let n of r)if(n.attribute===e.attribute)throw new Error(`attribute '${n.attribute}' already exists in ${e.schema}.${e.table}`)}let s=new lb(e.schema,e.table,e.attribute,e.id);try{let n=await q_.openEnvironment(_b.join(ab(),e.schema.toString()),e.table);if(n.dbis[e.attribute]!==void 0)throw new Error(`attribute '${e.attribute}' already exists in ${e.schema}.${e.table}`);q_.createDBI(n,e.attribute,e.dup_sort,e.is_hash_attribute);let i=await q_.openEnvironment(ob(),nb.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:a,skipped_hashes:_}=await ib.insertRecords(i,F_.hash_attribute,fd,[s]);return Eb(fb,a,{records:[s]},_)}catch(n){throw n}}o(Tb,"lmdbCreateAttribute")});var Qi=d((TV,Ad)=>{"use strict";var Qt=I(),Rd=O(),fV=N_();Ad.exports=Rb;function Rb(e){if(Qt.isEmpty(e))throw new Error("invalid update parameters defined.");if(Qt.isEmptyOrZeroLength(e.schema))throw new Error("invalid schema specified.");if(Qt.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");if(!Array.isArray(e.records))throw new Error("records must be an array");let t=global.hdb_schema[e.schema][e.table];if(Qt.isEmpty(t))throw new Error(`could not retrieve schema:${e.schema} and table ${e.table}`);let r=t.hash_attribute,s=new Set,n={},i=!1;return e.operation==="update"&&(i=!0),e.records.forEach(a=>{if(i&&Qt.isEmptyOrZeroLength(a[r]))throw Rd.error("a valid hash attribute must be provided with update record:",a),new Error("a valid hash attribute must be provided with update record, check log for more info");if(!Qt.isEmptyOrZeroLength(a[r])&&(a[r]==="null"||a[r]==="undefined"))throw Rd.error(`a valid hash value must be provided with ${e.operation} record:`,a),new Error(`Invalid hash value: '${a[r]}' is not a valid hash attribute value, check log for more info`);!Qt.isEmpty(a[r])&&a[r]!==""&&s.has(Qt.autoCast(a[r]))&&(a.skip=!0),s.add(Qt.autoCast(a[r]));for(let _ in a)n[_]=1}),n[r]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(n)}}o(Rb,"insertUpdateValidate")});var Ji=d((RV,md)=>{"use strict";var Ab=T().OPERATIONS_ENUM,ji=class{constructor(t,r,s,n,i=void 0){this.operation=Ab.INSERT,this.schema=t,this.table=r,this.hash_attribute=s,this.records=n,this.__origin=i}};o(ji,"InsertObject");md.exports=ji});var Xi=d((mV,gd)=>{"use strict";var AV=Ji(),Zi=T(),x_=I(),V_=O(),mb=require("uuid"),{handleHDBError:gn,hdb_errors:gb}=J(),{HDB_ERROR_MSGS:pn,HTTP_STATUS_CODES:Nn}=gb;gd.exports=pb;function pb(e,t,r){for(let n=0;n<t.length;n++)Nb(t[n]);let{records:s}=e;for(let n=0;n<s.length;n++){let i=s[n];Ob(i,r,e.operation)}}o(pb,"processRows");function Nb(e){if(Buffer.byteLength(String(e))>Zi.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE)throw gn(new Error,pn.ATTR_NAME_LENGTH_ERR(e),Nn.BAD_REQUEST,void 0,void 0,!0);if(x_.isEmptyOrZeroLength(e)||x_.isEmpty(e.trim()))throw gn(new Error,pn.ATTR_NAME_NULLISH_ERR,Nn.BAD_REQUEST,void 0,void 0,!0)}o(Nb,"validateAttribute");function Ob(e,t,r){if(!e.hasOwnProperty(t)||x_.isEmptyOrZeroLength(e[t])){if(r===Zi.OPERATIONS_ENUM.INSERT||r===Zi.OPERATIONS_ENUM.UPSERT){e[t]=mb.v4();return}throw V_.error("Update transaction aborted due to record with no hash value:",e),gn(new Error,pn.RECORD_MISSING_HASH_ERR,Nn.BAD_REQUEST,void 0,void 0,!0)}if(Buffer.byteLength(String(e[t]))>Zi.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE)throw V_.error(e),gn(new Error,pn.HASH_VAL_LENGTH_ERR,Nn.BAD_REQUEST,void 0,void 0,!0);if(isNaN(e[t])&&e[t].includes("/"))throw V_.error(e),gn(new Error,pn.INVALID_FORWARD_SLASH_IN_HASH_ERR,Nn.BAD_REQUEST,void 0,void 0,!0)}o(Ob,"validateHash")});var Nd=d((gV,pd)=>{"use strict";var zi=class{constructor(t,r){this.type=t,this.message=r}};o(zi,"IPCEventObject");pd.exports=zi});var Os=d((pV,Od)=>{"use strict";var Ib=O(),k_=I(),Cb=T(),{IPC_ERRORS:On}=et();Od.exports={sendIpcEvent:bb,validateEvent:Lb,SchemaEventMsg:yb,UserEventMsg:wb};function bb(e){global.hdb_ipc?global.hdb_ipc.emitToServer(e):Ib.warn("Tried to send event:",e,"to HDB IPC client but it does not exist")}o(bb,"sendIpcEvent");function Lb(e){if(typeof e!="object")return On.INVALID_IPC_DATA_TYPE;if(!e.hasOwnProperty("type")||k_.isEmpty(e.type))return On.MISSING_TYPE;if(!e.hasOwnProperty("message")||k_.isEmpty(e.message))return On.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||k_.isEmpty(e.message.originator))return On.MISSING_ORIGIN;if(Cb.IPC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return On.INVALID_EVENT(e.type)}o(Lb,"validateEvent");function yb(e,t,r,s=void 0,n=void 0){this.originator=e,this.operation=t,this.schema=r,this.table=s,this.attribute=n}o(yb,"SchemaEventMsg");function wb(e){this.originator=e}o(wb,"UserEventMsg")});var In=d((OV,Ld)=>{"use strict";var Id=T(),NV=I(),eo=O(),Cd=Nd(),{sendIpcEvent:bd}=Os();function Db(e){try{eo.trace("signalSchemaChange called with message:",e);let t=new Cd(Id.IPC_EVENT_TYPES.SCHEMA,e);bd(t)}catch(t){eo.error(t)}}o(Db,"signalSchemaChange");function Mb(e){try{eo.trace("signalUserChange called with message:",e);let t=new Cd(Id.IPC_EVENT_TYPES.USER,e);bd(t)}catch(t){eo.error(t)}}o(Mb,"signalUserChange");Ld.exports={signalSchemaChange:Db,signalUserChange:Mb}});var to=d((IV,wd)=>{"use strict";var yd=I(),Ub=T(),Pb=O(),Bb=Wi(),Hb=Ki(),vb=In(),{SchemaEventMsg:Gb}=Os(),qb="already exists in";wd.exports=Fb;async function Fb(e,t,r){try{if(yd.isEmptyOrZeroLength(r))return r;let s=[];yd.isEmptyOrZeroLength(t.attributes)||t.attributes.forEach(i=>{s.push(i.attribute)});let n=r.filter(i=>s.indexOf(i)<0);return n.length===0||await Promise.all(n.map(async i=>{await Vb(e,t.schema,t.name,i)})),n}catch(s){throw s}}o(Fb,"lmdbCheckForNewAttributes");async function Vb(e,t,r,s){let n=new Hb(t,r,s,void 0,!0);e&&(n.hdb_auth_header=e);try{await xb(n)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(qb))Pb.warn(`attribute ${t}.${r}.${s} already exists`);else throw i}}o(Vb,"createNewAttribute");async function xb(e){let t;try{return t=await Bb(e),vb.signalSchemaChange(new Gb(process.pid,Ub.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}catch(r){throw r}}o(xb,"createAttribute")});var Is=d((CV,Dd)=>{"use strict";var ro=class{constructor(t,r,s,n,i=void 0){this.operation=t,this.user_name=r,this.timestamp=s,this.hash_values=n,this.origin=i}};o(ro,"LMDBTransactionObject");Dd.exports=ro});var Ud=d((bV,Md)=>{"use strict";var kb=Is(),$b=T().OPERATIONS_ENUM,so=class extends kb{constructor(t,r,s,n,i=void 0){super($b.INSERT,r,s,n,i),this.records=t}};o(so,"LMDBInsertTransactionObject");Md.exports=so});var Bd=d((LV,Pd)=>{"use strict";var Yb=Is(),Kb=T().OPERATIONS_ENUM,no=class extends Yb{constructor(t,r,s,n,i,a=void 0){super(Kb.UPDATE,s,n,i,a),this.records=t,this.original_records=r}};o(no,"LMDBUpdateTransactionObject");Pd.exports=no});var vd=d((yV,Hd)=>{"use strict";var Wb=Is(),Qb=T().OPERATIONS_ENUM,io=class extends Wb{constructor(t,r,s,n,i,a=void 0){super(Qb.UPSERT,s,n,i,a),this.records=t,this.original_records=r}};o(io,"LMDBUpsertTransactionObject");Hd.exports=io});var qd=d((wV,Gd)=>{"use strict";var jb=Is(),Jb=T().OPERATIONS_ENUM,oo=class extends jb{constructor(t,r,s,n,i=void 0){super(Jb.DELETE,s,n,t,i),this.original_records=r}};o(oo,"LMDBDeleteTransactionObject");Gd.exports=oo});var Cn=d((DV,kd)=>{"use strict";var Zb=require("path"),Fd=$(),Xb=Ud(),zb=Bd(),eL=vd(),tL=qd(),Cs=Te(),Vd=I(),{CONFIG_PARAMS:rL}=T(),xd=Y();xd.initSync();var ao=T().OPERATIONS_ENUM,{getTransactionAuditStorePath:sL}=Z();kd.exports=nL;async function nL(e,t){if(xd.get(rL.LOGGING_AUDITLOG)===!1)return;let r=Zb.join(sL(),e.schema.toString()),s=await Fd.openEnvironment(r,e.table,!0),n=iL(e,t);if(!(n===void 0||n.hash_values.length===0)&&s!==void 0){Fd.initializeDBIs(s,Cs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Cs.TRANSACTIONS_DBIS);try{let i=n.timestamp;return await s.dbis[Cs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{s.dbis[Cs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,n),Vd.isEmpty(n.user_name)||s.dbis[Cs.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(n.user_name,i);for(let a=0;a<n.hash_values.length;a++)s.dbis[Cs.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(n.hash_values[a],i)})}catch(i){throw i}}}o(nL,"writeTransaction");function iL(e,t){let r=Vd.isEmpty(e.hdb_user)?void 0:e.hdb_user.username;if(e.operation===ao.INSERT)return new Xb(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===ao.UPDATE)return new zb(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===ao.UPSERT)return new eL(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===ao.DELETE)return new tL(t.deleted,t.original_records,r,t.txn_time,e.__origin)}o(iL,"createTransactionObject")});var $_=d((UV,$d)=>{"use strict";var oL=Qi(),MV=Ji(),bs=T(),aL=Xi(),_L=Kr().insertRecords,cL=$(),uL=require("path"),lL=O(),EL=to(),{getBaseSchemaPath:dL}=Z(),SL=Cn();$d.exports=hL;async function hL(e){try{let{schema_table:t,attributes:r}=oL(e);aL(e,r,t.hash_attribute),e.schema!==bs.SYSTEM_SCHEMA_NAME&&(r.includes(bs.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(bs.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(bs.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(bs.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await EL(e.hdb_auth_header,t,r),n=uL.join(dL(),e.schema.toString()),i=await cL.openEnvironment(n,e.table),a=await _L(i,t.hash_attribute,r,e.records,e[bs.CLUSTERING_FLAG]!==!0);try{await SL(e,a)}catch(_){lL.error(`unable to write transaction due to ${_.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schema_table:t,new_attributes:s,txn_time:a.txn_time}}catch(t){throw t}}o(hL,"lmdbCreateRecords")});var Wd=d((PV,Kd)=>{"use strict";var Yd=T(),fL=$_(),TL=Ji(),RL=require("fs-extra"),AL=require("path"),{getBaseSchemaPath:mL}=Z();Kd.exports=gL;async function gL(e){let t=[{name:e.schema,createddate:Date.now()}],r=new TL(Yd.SYSTEM_SCHEMA_NAME,Yd.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await fL(r),await RL.mkdirp(AL.join(mL(),e.schema.toString()))}o(gL,"lmdbCreateSchema")});var jd=d((BV,Qd)=>{"use strict";var _o=class{constructor(t=[],r=[],s=void 0,n=[]){this.deleted=t,this.skipped=r,this.txn_time=s,this.original_records=n}};o(_o,"DeleteRecordsResponseObject");Qd.exports=_o});var W_=d((qV,Xd)=>{"use strict";var Jd=$(),Y_=Sr(),K_=et().LMDB_ERRORS_ENUM,pL=Te(),Zd=O(),HV=I(),NL=require("lmdb"),OL=jd(),{OVERFLOW_MARKER:vV,MAX_SEARCH_KEY_LENGTH:GV}=pL;async function IL(e,t,r){if(Y_.validateEnv(e),t===void 0)throw new Error(K_.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(K_.IDS_REQUIRED):new Error(K_.IDS_MUST_BE_ARRAY);try{let s=Jd.listDBIs(e);Jd.initializeDBIs(e,t,s);let n=new OL,i,a=[],_=[];for(let E=0,h=r.length;E<h;E++)try{i=r[E];let S=e.dbis[t].get(i);if(!S){n.skipped.push(i);continue}let A=e.dbis[t].ifVersion(i,NL.IF_EXISTS,()=>{e.dbis[t].remove(i);for(let R=0;R<s.length;R++){let L=s[R];if(!S.hasOwnProperty(L)||L===t)continue;let de=e.dbis[L],p=S[L];if(p!=null)try{let k=Y_.getIndexedValues(p);if(k)for(let Ie=0,Ce=k.length;Ie<Ce;Ie++)de.remove(k[Ie],i)}catch{Zd.warn(`cannot delete from attribute: ${L}, ${p}:${i}`)}}});a.push(A),_.push(i),n.original_records.push(S)}catch(S){Zd.warn(S),n.skipped.push(i)}let c=[],u=await Promise.all(a);for(let E=0,h=u.length;E<h;E++)u[E]===!0?n.deleted.push(_[E]):(n.skipped.push(_[E]),c.push(E));let l=0;for(let E=0;E<c.length;E++){let h=c[E];n.original_records.splice(h-l,1),l++}return n.txn_time=Y_.getMicroTime(),n}catch(s){throw s}}o(IL,"deleteRecords");Xd.exports={deleteRecords:IL}});var bn=d((FV,eS)=>{"use strict";var Ls=I(),CL=W_(),bL=$(),LL=require("path"),{getBaseSchemaPath:yL}=Z(),wL=Cn(),DL=O();eS.exports=ML;async function ML(e,t=!0){let s=global.hdb_schema[e.schema][e.table].hash_attribute;if(Ls.isEmpty(s))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(Ls.isEmptyOrZeroLength(e.hash_values)&&!Ls.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let _=0;_<e.records.length;_++){let c=e.records[_][s];Ls.isEmpty(c)||e.hash_values.push(c)}}if(Ls.isEmptyOrZeroLength(e.hash_values))return zd([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(Ls.isEmptyOrZeroLength(e.records)){e.records=[];for(let _=0;_<e.hash_values.length;_++)e.records[_]={[s]:e.hash_values[_]}}let n=LL.join(yL(),e.schema.toString()),i=await bL.openEnvironment(n,e.table),a=await CL.deleteRecords(i,s,e.hash_values);try{t===!0&&await wL(e,a)}catch(_){DL.error(`unable to write transaction due to ${_.message}`)}return zd(a.deleted,a.skipped,a.txn_time)}catch(n){throw n}}o(ML,"lmdbDeleteRecords");function zd(e,t,r){let s=e.length+t.length,n=s===1?"record":"records";return{message:`${e.length} of ${s} ${n} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}o(zd,"createDeleteResponse")});var j_=d((xV,tS)=>{"use strict";var UL=T(),VV=Sr();function Q_(e,t){let r=Object.create(null);if(t.length===1&&UL.SEARCH_WILDCARDS.indexOf(t[0])>=0)Object.assign(r,e);else for(let s=0;s<t.length;s++){let n=t[s],i=e[n];r[n]=i===void 0?null:i}return r}o(Q_,"parseRow");function PL(e,t,r,s){let n=Q_(r,e);s.push(n)}o(PL,"searchAll");function BL(e,t,r,s){let n=Q_(r,e);s[t]=n}o(BL,"searchAllToMap");function HL(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}o(HL,"iterateDBI");function Wr(e,t,r,s,n){let i=Object.create(null);i[n]=e;let a;s===n?a=e:(a=t,s!==void 0&&(i[s]=a)),r[0].push(a),r[1].push(i)}o(Wr,"pushResults");function vL(e,t,r,s,n,i){t.toString().endsWith(e)&&Wr(t,r,s,n,i)}o(vL,"endsWith");function GL(e,t,r,s,n,i){t.toString().includes(e)&&Wr(t,r,s,n,i)}o(GL,"contains");function qL(e,t,r,s,n,i){t>e&&Wr(t,r,s,n,i)}o(qL,"greaterThanCompare");function FL(e,t,r,s,n,i){t>=e&&Wr(t,r,s,n,i)}o(FL,"greaterThanEqualCompare");function VL(e,t,r,s,n,i){t<e&&Wr(t,r,s,n,i)}o(VL,"lessThanCompare");function xL(e,t,r,s,n,i){t<=e&&Wr(t,r,s,n,i)}o(xL,"lessThanEqualCompare");tS.exports={parseRow:Q_,searchAll:PL,searchAllToMap:BL,iterateDBI:HL,endsWith:vL,contains:GL,greaterThanCompare:qL,greaterThanEqualCompare:FL,lessThanCompare:VL,lessThanEqualCompare:xL,pushResults:Wr}});var ys=d((YV,aS)=>{"use strict";var ot=$(),kL=O(),Qe=Sr(),Rr=Te(),re=et().LMDB_ERRORS_ENUM,kV=I(),$L=T(),Rt=j_(),$V=require("lmdb"),{OVERFLOW_MARKER:rS,MAX_SEARCH_KEY_LENGTH:YL}=Rr,Ln={lazy:!0};function sS(e,t,r,s,n=!1,i=void 0,a=void 0){let _=Object.create(null),c=ot.openDBI(e,r);c[Rr.DBI_DEFINITION_NAME].is_hash_attribute&&(t=r);let u=J_(e,t,r);for(let{key:l,value:E}of c.getRange({start:n?void 0:!1,end:n?!1:void 0,limit:i,offset:a,reverse:n}))s(u(l,E),E,_,t,r);return _}o(sS,"iterateFullIndex");function yn(e,t,r,s,n,i=!1,a=void 0,_=void 0,c=!1,u=!1){let l=[[],[]],E=ot.openDBI(e,r),h=J_(e,t,r);E[Rr.DBI_DEFINITION_NAME].is_hash_attribute&&(t=r);let S=i===!0?s:n,A=i===!0?n:s,R=i===!0?!c:!u,L=i===!0?u:c;for(let{key:de,value:p}of E.getRange({start:A,end:S,reverse:i,limit:a,offset:_,inclusiveEnd:R,exclusiveStart:L}))Rt.pushResults(h(de,p),p,l,t,r);return l}o(yn,"iterateRangeBetween");function J_(e,t,r){let s;return function(n,i){if(typeof n=="string"&&n.endsWith(rS)){if(!s)if(t)s=ot.openDBI(e,t);else{let _=ot.listDBIs(e);for(let c=0,u=_.length;c<u&&(s=ot.openDBI(e,_[c]),!s[Rr.DBI_DEFINITION_NAME].is_hash_attribute);c++);}n=s.get(i,Ln)[r]}return n}}o(J_,"getOverflowCheck");function KL(e,t,r,s=!1,n=void 0,i=void 0){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);co(r),r=wn(e,r);let a=[],_=ot.openDBI(e,t);for(let{key:c,value:u}of _.getRange({start:s?void 0:!1,end:s?!1:void 0,limit:n,offset:i,reverse:s}))Rt.searchAll(r,c,u,a);return a}o(KL,"searchAll");function WL(e,t,r,s=!1,n=void 0,i=void 0){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);return co(r),r=wn(e,r),sS(e,t,t,Rt.searchAllToMap.bind(null,r),s,n,i)}o(WL,"searchAllToMap");function QL(e,t,r=!1,s=void 0,n=void 0){if(Qe.validateEnv(e),t===void 0)throw new Error(re.ATTRIBUTE_REQUIRED);return sS(e,void 0,t,Rt.iterateDBI,r,s,n)}o(QL,"iterateDBI");function jL(e,t){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);return ot.statDBI(e,t).entryCount}o(jL,"countAll");function JL(e,t,r,s,n=!1,i=void 0,a=void 0){Ar(e,r,s);let _=ot.openDBI(e,r);s=Qe.convertKeyValueToWrite(s);let c=[[],[]];if(_[Rr.DBI_DEFINITION_NAME].is_hash_attribute){t=r;let u=_.get(s,Ln);u!==void 0&&Rt.pushResults(s,u,c,t,r)}else for(let u of _.getValues(s,{reverse:n,limit:i,offset:a}))Rt.pushResults(s,u,c,t,r);return c}o(JL,"equals");function ZL(e,t,r){return Ar(e,t,r),ot.openDBI(e,t).getValuesCount(r)}o(ZL,"count");function XL(e,t,r,s,n=!1,i=void 0,a=void 0){Ar(e,r,s);let _=[[],[]],c=ot.openDBI(e,r);c[Rr.DBI_DEFINITION_NAME].is_hash_attribute&&(t=r),s=Qe.convertKeyValueToWrite(s);let u=!0;if(typeof s=="number"&&(u=!1),n===!0){let l;for(let E of c.getKeys({start:s}))if(!E.startsWith(s)){l=E;break}l!==void 0&&(Number.isInteger(a)?a++:i++);for(let{key:E,value:h}of c.getRange({start:l,end:void 0,reverse:n,limit:i,offset:a}))if(E!==l){if(E.toString().startsWith(s))Rt.pushResults(E,h,_,t,r);else if(u===!0)break}}else for(let{key:l,value:E}of c.getRange({start:s,reverse:n,limit:i,offset:a}))if(l.toString().startsWith(s))Rt.pushResults(l,E,_,t,r);else if(u===!0)break;return _}o(XL,"startsWith");function zL(e,t,r,s,n=!1,i=void 0,a=void 0){return nS(e,t,r,s,n,i,a,!0)}o(zL,"endsWith");function nS(e,t,r,s,n=!1,i=void 0,a=void 0,_=!1){Ar(e,r,s);let c=[[],[]],u=ot.openDBI(e,r);u[Rr.DBI_DEFINITION_NAME].is_hash_attribute&&(t=r);let l=J_(e,t,r);a=Number.isInteger(a)?a:0;for(let h of u.getKeys({end:n?!1:void 0,reverse:n})){if(i===0)break;let S=h.toString();if(S.endsWith(rS))for(let A of u.getValues(h)){let R=l(h,A);(_?R.endsWith(s):R.includes(s))&&E(R,A)}else if(_?S.endsWith(s):S.includes(s))if(u[Rr.DBI_DEFINITION_NAME].is_hash_attribute)E(h,h);else for(let A of u.getValues(h))E(h,A)}function E(h,S){if(a>0){a--;return}i!==0&&(Rt.pushResults(h,S,c,t,r),i--)}return o(E,"found_match"),c}o(nS,"contains");function ey(e,t,r,s,n=!1,i=void 0,a=void 0){Ar(e,r,s);let _=typeof s,c;return _==="string"?c="\uFFFF":_==="number"?c=1/0:_==="boolean"&&(c=!0),yn(e,t,r,s,c,n,i,a,!0,!1)}o(ey,"greaterThan");function ty(e,t,r,s,n=!1,i=void 0,a=void 0){Ar(e,r,s);let _=typeof s,c;return _==="string"?c="\uFFFF":_==="number"?c=1/0:_==="boolean"&&(c=!0),yn(e,t,r,s,c,n,i,a,!1,!1)}o(ty,"greaterThanEqual");function ry(e,t,r,s,n=!1,i=void 0,a=void 0){Ar(e,r,s);let _=typeof s,c;return _==="string"?c="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),yn(e,t,r,c,s,n,i,a,!1,!0)}o(ry,"lessThan");function sy(e,t,r,s,n=!1,i=void 0,a=void 0){Ar(e,r,s);let _=typeof s,c;return _==="string"?c="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),yn(e,t,r,c,s,n,i,a,!1,!1)}o(sy,"lessThanEqual");function ny(e,t,r,s,n,i=!1,a=void 0,_=void 0){if(Qe.validateEnv(e),r===void 0)throw new Error(re.ATTRIBUTE_REQUIRED);if(s===void 0)throw new Error(re.START_VALUE_REQUIRED);if(n===void 0)throw new Error(re.END_VALUE_REQUIRED);if(s=Qe.convertKeyValueToWrite(s),n=Qe.convertKeyValueToWrite(n),s>n)throw new Error(re.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return yn(e,t,r,s,n,i,a,_)}o(ny,"between");function iy(e,t,r,s){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);if(co(r),r=wn(e,r),s===void 0)throw new Error(re.ID_REQUIRED);let n=null,i=e.dbis[t].get(s,r.length<3?Ln:void 0);return i&&(n=Rt.parseRow(i,r)),n}o(iy,"searchByHash");function oy(e,t,r){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(re.ID_REQUIRED);let s=!0;return e.dbis[t].get(r,Ln)===void 0&&(s=!1),s}o(oy,"checkHashExists");function ay(e,t,r,s,n=[]){oS(e,t,r,s,n);let i=iS(e,t,r,s,n);return Object.values(i)}o(ay,"batchSearchByHash");function _y(e,t,r,s,n=[]){return oS(e,t,r,s,n),iS(e,t,r,s,n)}o(_y,"batchSearchByHashToMap");function iS(e,t,r,s,n=[]){r=wn(e,r);let i=Object.create(null),a=r.length<3?Ln:void 0;for(let _=0;_<s.length;_++){let c=s[_];try{let u=e.dbis[t].get(c,a);if(u){let l=Rt.parseRow(u,r);i[c]=l}else n.push(c)}catch(u){throw kL.warn(u),u}}return i}o(iS,"batchHashSearch");function oS(e,t,r,s,n){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);if(co(r),!Array.isArray(s))throw s===void 0?new Error(re.IDS_REQUIRED):new Error(re.IDS_MUST_BE_ARRAY);Array.isArray(n)||(n=[])}o(oS,"initializeBatchSearchByHash");function co(e){if(!Array.isArray(e))throw e===void 0?new Error(re.FETCH_ATTRIBUTES_REQUIRED):new Error(re.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}o(co,"validateFetchAttributes");function Ar(e,t,r){if(Qe.validateEnv(e),t===void 0)throw new Error(re.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(re.SEARCH_VALUE_REQUIRED);if(r?.length>YL)throw new Error(re.SEARCH_VALUE_TOO_LARGE)}o(Ar,"validateComparisonFunctions");function wn(e,t){return t.length===1&&$L.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=ot.listDBIs(e)),t}o(wn,"setGetWholeRowAttributes");aS.exports={searchAll:KL,searchAllToMap:WL,count:ZL,countAll:jL,equals:JL,startsWith:XL,endsWith:zL,contains:nS,searchByHash:iy,setGetWholeRowAttributes:wn,batchSearchByHash:ay,batchSearchByHashToMap:_y,checkHashExists:oy,iterateDBI:QL,greaterThan:ey,greaterThanEqual:ty,lessThan:ry,lessThanEqual:sy,between:ny}});var Dn=d((WV,lS)=>{var _S=require("lodash"),cS=tt(),V=require("joi"),cy=I(),{hdb_schema_table:At,checkValidTable:uS}=ps(),{handleHDBError:uy,hdb_errors:ly}=J(),{HTTP_STATUS_CODES:Ey}=ly,KV=V.object({schema:At,table:At,hash_values:V.array().min(1).items(V.alternatives(V.string(),V.number())).required(),get_attributes:V.array().min(1).items(At).required()}),dy=V.object({schema:At,table:At,search_attribute:At,search_value:V.any().required(),get_attributes:V.array().min(1).items(At).required(),desc:V.bool(),limit:V.number().integer().min(1),offset:V.number().integer().min(0)}),Sy=V.object({schema:At,table:At,operator:V.string().valid("and","or").default("and").lowercase(),offset:V.number().integer().min(0),limit:V.number().integer().min(1),get_attributes:V.array().min(1).items(At).required(),conditions:V.array().min(1).items(V.object({search_attribute:At,search_type:V.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between").required(),search_value:V.when("search_type",{switch:[{is:"equals",then:V.any()},{is:"between",then:V.array().items(V.alternatives([V.string(),V.number()])).length(2)}],otherwise:V.alternatives(V.string(),V.number())}).required()})).required()});lS.exports=function(e,t){let r=null;switch(t){case"value":r=cS.validateBySchema(e,dy);break;case"hashes":let i=function(a){n?n+=". "+a:n=a};var s=i;o(i,"addError");let n;i(uS("schema",e.schema)),i(uS("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(a=>typeof a=="string"||typeof a=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(a=>typeof a=="string"||typeof a=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),n&&(r=new Error(n.trim()));break;case"conditions":r=cS.validateBySchema(e,Sy);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let n=cy.checkGlobalSchemaTable(e.schema,e.table);if(n)return uy(new Error,n,Ey.NOT_FOUND);let a=global.hdb_schema[e.schema][e.table].attributes,_=[...e.get_attributes];if(t==="value"&&_.push(e.search_attribute),t==="conditions")for(let u=0,l=e.conditions.length;u<l;u++){let E=e.conditions[u];_.push(E.search_attribute)}let c=_S.filter(_,u=>u!=="*"&&u.attribute!=="*"&&!_S.some(a,l=>l===u||l.attribute===u||l.attribute===u.attribute));if(c&&c.length>0){let u=c.join(", ");return u=u.replace(/,([^,]*)$/," and$1"),new Error(`unknown attribute '${u}'`)}}return r}});var Z_=d((QV,ES)=>{"use strict";var hy=$(),fy=Dn(),Ty=require("path"),{getBaseSchemaPath:Ry}=Z();ES.exports=Ay;function Ay(e){let t=fy(e,"hashes");if(t)throw t;let r=Ty.join(Ry(),e.schema.toString());return hy.openEnvironment(r,e.table)}o(Ay,"initialize")});var X_=d((jV,dS)=>{"use strict";var my=ys(),gy=Z_();dS.exports=py;async function py(e){try{let t=await gy(e),r=global.hdb_schema[e.schema][e.table];return my.batchSearchByHashToMap(t,r.hash_attribute,e.get_attributes,e.hash_values)}catch(t){throw t}}o(py,"lmdbGetDataByHash")});var ws=d((JV,SS)=>{"use strict";var uo=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.hash_values=s,this.get_attributes=n}};o(uo,"SearchByHashObject");SS.exports=uo});var fS=d((XV,hS)=>{"use strict";var ZV=ws(),Ny=ys(),Oy=Z_();hS.exports=Iy;async function Iy(e){try{let t=await Oy(e),r=global.hdb_schema[e.schema][e.table];return Ny.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}catch(t){throw t}}o(Iy,"lmdbSearchByHash")});var mt=d((zV,TS)=>{"use strict";var lo=class{constructor(t,r,s,n,i,a,_,c=!1,u=void 0,l=void 0){this.schema=t,this.table=r,this.search_attribute=s,this.search_value=n,this.hash_attribute=i,this.get_attributes=a,this.end_value=_,this.reverse=c,this.limit=u,this.offset=l}};o(lo,"SearchObject");TS.exports=lo});var Eo=d((ex,pS)=>{"use strict";var ye=ys(),Cy=$(),by=require("path"),Ly=I(),C=Te(),Qr=T(),{getBaseSchemaPath:yy}=Z(),wy=Wt(),RS=et().LMDB_ERRORS_ENUM,{compareKeys:Ds}=require("ordered-binary"),jt=Qr.SEARCH_WILDCARDS;async function Dy(e,t,r){let s;e.schema===Qr.SYSTEM_SCHEMA_NAME?s=wy[e.table]:s=global.hdb_schema[e.schema][e.table];let n=gS(e,s.hash_attribute,r,t);return AS(e,n,s.hash_attribute,r)}o(Dy,"prepSearch");async function AS(e,t,r,s){let n=by.join(yy(),e.schema.toString()),i=await Cy.openEnvironment(n,e.table),a=mS(i,e,t,r);if([C.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,C.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,C.SEARCH_TYPES.SEARCH_ALL,C.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return a;if(Py(e,r)===!1)return s===!0?Uy(a):a[1];let c=a[0];return s===!0?ye.batchSearchByHashToMap(i,r,e.get_attributes,c):ye.batchSearchByHash(i,r,e.get_attributes,c)}o(AS,"executeSearch");function mS(e,t,r,s){let n,i=s;t.get_attributes.indexOf(s)<0&&(i=void 0);let{reverse:a,limit:_,offset:c}=t;switch(a=typeof a=="boolean"?a:!1,_=Number.isInteger(_)?_:void 0,c=Number.isInteger(c)?c:void 0,r){case C.SEARCH_TYPES.EQUALS:n=ye.equals(e,i,t.search_attribute,t.search_value,a,_,c);break;case C.SEARCH_TYPES.CONTAINS:n=ye.contains(e,i,t.search_attribute,t.search_value,a,_,c);break;case C.SEARCH_TYPES.ENDS_WITH:case C.SEARCH_TYPES._ENDS_WITH:n=ye.endsWith(e,i,t.search_attribute,t.search_value,a,_,c);break;case C.SEARCH_TYPES.STARTS_WITH:case C.SEARCH_TYPES._STARTS_WITH:n=ye.startsWith(e,i,t.search_attribute,t.search_value,a,_,c);break;case C.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return ye.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case C.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return ye.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case C.SEARCH_TYPES.SEARCH_ALL:return ye.searchAll(e,s,t.get_attributes,a,_,c);case C.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return ye.searchAllToMap(e,s,t.get_attributes,a,_,c);case C.SEARCH_TYPES.BETWEEN:n=ye.between(e,i,t.search_attribute,t.search_value,t.end_value,a,_,c);break;case C.SEARCH_TYPES.GREATER_THAN:case C.SEARCH_TYPES._GREATER_THAN:n=ye.greaterThan(e,i,t.search_attribute,t.search_value,a,_,c);break;case C.SEARCH_TYPES.GREATER_THAN_EQUAL:case C.SEARCH_TYPES._GREATER_THAN_EQUAL:n=ye.greaterThanEqual(e,i,t.search_attribute,t.search_value,a,_,c);break;case C.SEARCH_TYPES.LESS_THAN:case C.SEARCH_TYPES._LESS_THAN:n=ye.lessThan(e,i,t.search_attribute,t.search_value,a,_,c);break;case C.SEARCH_TYPES.LESS_THAN_EQUAL:case C.SEARCH_TYPES._LESS_THAN_EQUAL:n=ye.lessThanEqual(e,i,t.search_attribute,t.search_value,a,_,c);break;default:return Object.create(null)}return n}o(mS,"searchByType");function My(e){let t=e.search_type,r=e.search_attribute,s=e.search_value;switch(t){case C.SEARCH_TYPES.EQUALS:return n=>n[r]===s;case C.SEARCH_TYPES.CONTAINS:return n=>typeof n[r]=="string"&&n[r].includes(s);case C.SEARCH_TYPES.ENDS_WITH:case C.SEARCH_TYPES._ENDS_WITH:return n=>typeof n[r]=="string"&&n[r].endsWith(s);case C.SEARCH_TYPES.STARTS_WITH:case C.SEARCH_TYPES._STARTS_WITH:return n=>typeof n[r]=="string"&&n[r].startsWith(s);case C.SEARCH_TYPES.BETWEEN:return n=>{let i=n[r];return Ds(i,s[0])>=0&&Ds(i,s[1])<=0};case C.SEARCH_TYPES.GREATER_THAN:case C.SEARCH_TYPES._GREATER_THAN:return n=>Ds(n[r],s)>0;case C.SEARCH_TYPES.GREATER_THAN_EQUAL:case C.SEARCH_TYPES._GREATER_THAN_EQUAL:return n=>Ds(n[r],s)>=0;case C.SEARCH_TYPES.LESS_THAN:case C.SEARCH_TYPES._LESS_THAN:return n=>Ds(n[r],s)<0;case C.SEARCH_TYPES.LESS_THAN_EQUAL:case C.SEARCH_TYPES._LESS_THAN_EQUAL:return n=>Ds(n[r],s)<=0;default:return Object.create(null)}}o(My,"filterByType");function Uy(e){let t=Object.create(null);for(let r=0,s=e[0].length;r<s;r++)t[e[0][r]]=e[1][r];return t}o(Uy,"createMapFromArrays");function Py(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 s=!1;for(let n=0;n<e.get_attributes.length;n++)if(r.indexOf(e.get_attributes[n])<0){s=!0;break}return s}o(Py,"checkToFetchMore");function gS(e,t,r,s){if(Ly.isEmpty(s)){let n=e.search_value;typeof n=="object"?n=JSON.stringify(n):n=n.toString();let i=n.charAt(0),a=n.charAt(n.length-1),_=!1;if(e.search_attribute===t&&(_=!0),jt.indexOf(n)>-1)return r===!0?C.SEARCH_TYPES.SEARCH_ALL_TO_MAP:C.SEARCH_TYPES.SEARCH_ALL;if(n.indexOf(jt[0])<0&&n.indexOf(jt[1])<0)return _===!0?r===!0?C.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:C.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:C.SEARCH_TYPES.EQUALS;if(jt.indexOf(i)>=0&&jt.indexOf(a)>=0)return e.search_value=e.search_value.slice(1,-1),C.SEARCH_TYPES.CONTAINS;if(jt.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),C.SEARCH_TYPES.ENDS_WITH;if(jt.indexOf(a)>=0)return e.search_value=e.search_value.slice(0,-1),C.SEARCH_TYPES.STARTS_WITH;if(n.includes(jt[0])||n.includes(jt[1]))return C.SEARCH_TYPES.EQUALS;throw new Error(RS.UNKNOWN_SEARCH_TYPE)}else switch(s){case Qr.VALUE_SEARCH_COMPARATORS.BETWEEN:return C.SEARCH_TYPES.BETWEEN;case Qr.VALUE_SEARCH_COMPARATORS.GREATER:return C.SEARCH_TYPES.GREATER_THAN;case Qr.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return C.SEARCH_TYPES.GREATER_THAN_EQUAL;case Qr.VALUE_SEARCH_COMPARATORS.LESS:return C.SEARCH_TYPES.LESS_THAN;case Qr.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return C.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(RS.UNKNOWN_SEARCH_TYPE)}}o(gS,"createSearchTypeFromSearchObject");pS.exports={executeSearch:AS,createSearchTypeFromSearchObject:gS,prepSearch:Dy,searchByType:mS,filterByType:My}});var OS=d((rx,NS)=>{"use strict";var tx=mt(),By=Dn(),Hy=I(),vy=T(),Gy=Eo();NS.exports=qy;async function qy(e,t){if(!Hy.isEmpty(t)&&vy.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=By(e,"value");if(s)throw s;let n=!0;try{return await Gy.prepSearch(e,t,n)}catch(i){throw i}}o(qy,"lmdbGetDataByValue")});var Ms=d((nx,IS)=>{"use strict";var sx=mt(),Fy=Dn(),Vy=I(),xy=T(),ky=Eo();IS.exports=$y;async function $y(e,t){if(!Vy.isEmpty(t)&&xy.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=Fy(e,"value");if(s)throw s;let n=!1;try{return await ky.prepSearch(e,t,n)}catch(i){throw i}}o($y,"lmdbSearchByValue")});var bS=d((ox,CS)=>{"use strict";var ix=Te(),So=class{constructor(t,r,s,n,i=void 0,a=void 0,_="and"){this.schema=t,this.table=r,this.get_attributes=s,this.limit=i,this.offset=a,this.conditions=n,this.operator=_}};o(So,"SearchByConditionsObject");var ho=class{constructor(t,r,s){this.search_attribute=t,this.search_type=r,this.search_value=s}};o(ho,"SearchCondition");var fo=class{constructor(t,r){this.attribute=t,this.desc=r}};o(fo,"SortAttribute");CS.exports={SearchByConditionsObject:So,SearchCondition:ho,SortAttribute:fo}});var US=d((_x,MS)=>{"use strict";var ax=bS().SearchByConditionsObject,Yy=mt(),Ky=Dn(),z_=ys(),To=Te(),DS=Eo(),Wy=j_(),LS=require("lodash"),{getBaseSchemaPath:Qy}=Z(),jy=require("path"),Jy=$(),{handleHDBError:yS,hdb_errors:Zy}=J(),{HTTP_STATUS_CODES:Xy}=Zy,zy=1e8,ew={lazy:!0};MS.exports=tw;async function tw(e){try{let t=Ky(e,"conditions");if(t)throw yS(t,t.message,Xy.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=jy.join(Qy(),e.schema.toString()),s=await Jy.openEnvironment(r,e.table),n=global.hdb_schema[e.schema][e.table],i=LS.sortBy(e.conditions,a=>{if(a.estimated_count===void 0){let _=a.search_type;_===To.SEARCH_TYPES.EQUALS?a.estimated_count=z_.count(s,a.search_attribute,a.search_value):_===To.SEARCH_TYPES.CONTAINS||_===To.SEARCH_TYPES.ENDS_WITH?a.estimated_count=1/0:a.estimated_count=zy}return a.estimated_count});if(!e.operator||e.operator.toLowerCase()==="and"){let[a]=await wS(s,e,i[0],n.hash_attribute),_=s.dbis[n.hash_attribute],c=i.slice(1).map(DS.filterByType),u=c.length,l=[],E=z_.setGetWholeRowAttributes(s,e.get_attributes),h=e.offset>-1?e.offset:0,S=e.limit>-1?e.limit:1/0;e:for(let A of a){let R=_.get(A,ew);for(let L=0;L<u;L++)if(!c[L](R))continue e;if(h>0){h--;continue}if(S<=0)break;S--,l.push(Wy.parseRow(R,E))}return l}else{let a=[],_=[];for(let c of i){let[u]=await wS(s,e,c,n.hash_attribute);_.push(u)}if(a=LS.union(..._),e.limit>0||e.offset>0){let c=Number.isInteger(e.limit)?e.limit:a.length;a=a.splice(e.offset,c)}return z_.batchSearchByHash(s,n.hash_attribute,e.get_attributes,a)}}catch(t){throw yS(t)}}o(tw,"lmdbSearchByConditions");async function wS(e,t,r,s){let n=new Yy(t.schema,t.table,void 0,void 0,s,t.get_attributes),i=r.search_type;return n.search_attribute=r.search_attribute,i===To.SEARCH_TYPES.BETWEEN?(n.search_value=r.search_value[0],n.end_value=r.search_value[1]):n.search_value=r.search_value,DS.searchByType(e,n,i,s)}o(wS,"executeConditionSearch")});var Ao=d((cx,PS)=>{"use strict";var rw=T().OPERATIONS_ENUM,Ro=class{constructor(t,r,s,n=void 0){this.operation=rw.DELETE,this.schema=t,this.table=r,this.hash_values=s,this.__origin=n}};o(Ro,"DeleteObject");PS.exports=Ro});var ec=d((ux,BS)=>{"use strict";var mo=class{constructor(t,r,s){this.schema=t,this.table=r,this.attribute=s}};o(mo,"DropAttributeObject");BS.exports=mo});var rc=d((Ex,HS)=>{"use strict";var sw=mt(),nw=Ao(),lx=ec(),Lt=T(),iw=I(),tc=$(),ow=Wt(),aw=Ms(),_w=bn(),{getBaseSchemaPath:cw}=Z(),uw=require("path");HS.exports=lw;async function lw(e,t=!0){let r;e.schema===Lt.SYSTEM_SCHEMA_NAME?r=ow[e.table]:r=global.hdb_schema[e.schema][e.table];let s=await dw(e),n=uw.join(cw(),e.schema.toString()),i=await tc.openEnvironment(n,e.table);return t===!0&&await Ew(e,i,r.hash_attribute),tc.dropDBI(i,e.attribute),s}o(lw,"lmdbDropAttribute");async function Ew(e,t,r){let s=tc.openDBI(t,r),n,i=e.attribute;for(let{key:a,value:_,version:c}of s.getRange({start:!1,versions:!0})){let u={};for(let l in _)l!==i&&(u[l]=_[l]);n=t.dbis[r].put(a,u,c)}await n}o(Ew,"removeAttributeFromAllObjects");async function dw(e){let t=new sw(Lt.SYSTEM_SCHEMA_NAME,Lt.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Lt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Lt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Lt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),s=(await aw(t)).filter(a=>a[Lt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(iw.isEmptyOrZeroLength(s))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let n=s.map(a=>a[Lt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new nw(Lt.SYSTEM_SCHEMA_NAME,Lt.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);return _w(i)}o(dw,"dropAttributeFromSystem")});var FS=d((dx,qS)=>{"use strict";var Sw=rc(),hw=ec(),vS=I(),GS=O(),fw=et().LMDB_ERRORS_ENUM;qS.exports=Tw;async function Tw(e){if(vS.isEmpty(global.hdb_schema[e.schema])||vS.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);let t=global.hdb_schema[e.schema][e.table],r;try{for(let s=0;s<t.attributes.length;s++){r=t.attributes[s].attribute;let n=new hw(e.schema,e.table,r);try{await Sw(n,!1)}catch(i){i.message!==fw.DBI_DOES_NOT_EXIST&&GS.error(`unable to drop attribute ${e.schema}.${e.table}.${r}:`+i)}}}catch(s){throw GS.error(`Error dropping attribute ${r}`),s}}o(Tw,"lmdbDropAllAttributes")});var sc=d((hx,jS)=>{"use strict";var YS=mt(),KS=Ao(),WS=Ms(),QS=bn(),Sx=FS(),qe=T(),VS=I(),xS=$(),{getBaseSchemaPath:Rw,getTransactionAuditStorePath:Aw}=Z(),kS=require("path"),$S=O();jS.exports=mw;async function mw(e){try{if(VS.isEmpty(global.hdb_schema[e.schema])||VS.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await gw(e),await pw(e);let t=kS.join(Rw(),e.schema.toString());try{await xS.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")$S.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=kS.join(Aw(),e.schema.toString());await xS.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")$S.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}o(mw,"lmdbDropTable");async function gw(e){let t=new YS(qe.SYSTEM_SCHEMA_NAME,qe.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,qe.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[qe.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=await WS(t),s=[];for(let i=0;i<r.length;i++){let a=r[i];s.push(a.id)}if(s.length===0)return;let n=new KS(qe.SYSTEM_SCHEMA_NAME,qe.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);await QS(n)}o(gw,"deleteAttributesFromSystem");async function pw(e){let t=new YS(qe.SYSTEM_SCHEMA_NAME,qe.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,qe.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[qe.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,qe.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,qe.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,s;try{r=await WS(t)}catch(i){throw i}for(let i=0;i<r.length;i++){let a=r[i];a.name===e.table&&a.schema===e.schema&&(s=a)}if(!s)throw new Error(`${e.schema}.${e.table} was not found`);let n=new KS(qe.SYSTEM_SCHEMA_NAME,qe.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[s.id]);try{await QS(n)}catch(i){throw i}}o(pw,"dropTableFromSystem")});var ZS=d((Tx,JS)=>{"use strict";var Nw=require("fs-extra"),Ow=mt(),Iw=ws(),Cw=Ao(),bw=sc(),Lw=bn(),yw=X_(),ww=Ms(),Jt=T(),fx=I(),Dw=require("path"),{getBaseSchemaPath:Mw}=Z(),{handleHDBError:Uw,hdb_errors:Pw}=J(),{HDB_ERROR_MSGS:Bw,HTTP_STATUS_CODES:Hw}=Pw;JS.exports=vw;async function vw(e){let t;try{t=await Gw(e.schema);let r=new Ow(Jt.SYSTEM_SCHEMA_NAME,Jt.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Jt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[Jt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),s=await ww(r);for(let a=0;a<s.length;a++){let _={schema:t,table:s[a].name};try{await bw(_)}catch(c){if(c.message!=="invalid environment")throw c}}let n=new Cw(Jt.SYSTEM_SCHEMA_NAME,Jt.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await Lw(n);let i=Dw.join(Mw(),t.toString());await Nw.remove(i)}catch(r){throw r}}o(vw,"lmdbDropSchema");async function Gw(e){let t=new Iw(Jt.SYSTEM_SCHEMA_NAME,Jt.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[Jt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,s;try{r=await yw(t)}catch(n){throw n}for(let n in r)r[n].name===e&&(s=e);if(!s)throw Uw(new Error,Bw.SCHEMA_NOT_FOUND(e),Hw.NOT_FOUND,void 0,void 0,!0);return s}o(Gw,"validateDropSchema")});var po=d((Rx,XS)=>{"use strict";var go=class{constructor(t,r,s){this.schema=t,this.table=r,this.hash_attribute=s}};o(go,"CreateTableObject");XS.exports=go});var ic=d((mx,zS)=>{"use strict";var qw=require("path"),Fw=require("fs-extra"),No=$(),{getTransactionAuditStorePath:Vw}=Z(),nc=Te(),Ax=po();zS.exports=xw;async function xw(e){let t;try{let r=qw.join(Vw(),e.schema.toString());await Fw.mkdirp(r),t=await No.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{No.createDBI(t,nc.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),No.createDBI(t,nc.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),No.createDBI(t,nc.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}o(xw,"createTransactionsAuditEnvironment")});var uc=d((gx,rh)=>{"use strict";var oc=T(),eh=$(),kw=Kr(),$w=require("path"),{getSystemSchemaPath:Yw,getBaseSchemaPath:Kw}=Z(),Ww=Wt(),Qw=Wi(),ac=Ki(),jw=O(),Jw=ic(),cc=Ww.hdb_table,th=[];for(let e=0;e<cc.attributes.length;e++)th.push(cc.attributes[e].attribute);rh.exports=Zw;async function Zw(e,t){let r=$w.join(Kw(),t.schema.toString()),s=new ac(t.schema,t.table,oc.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),n=new ac(t.schema,t.table,oc.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new ac(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await eh.createEnvironment(r,t.table),e!==void 0){let a=await eh.openEnvironment(Yw(),oc.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await kw.insertRecords(a,cc.hash_attribute,th,[e]),await _c(s),await _c(n),await _c(i)}await Jw(t)}catch(a){throw a}}o(Zw,"lmdbCreateTable");async function _c(e){try{await Qw(e)}catch(t){jw.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}o(_c,"createAttribute")});var nh=d((px,sh)=>{"use strict";var Xw=Qi(),zw=Xi(),eD=to(),Us=T(),tD=Kr().updateRecords,rD=$(),sD=require("path"),{getBaseSchemaPath:nD}=Z(),iD=Cn(),oD=O();sh.exports=aD;async function aD(e){try{let{schema_table:t,attributes:r}=Xw(e);zw(e,r,t.hash_attribute),e.schema!==Us.SYSTEM_SCHEMA_NAME&&(r.includes(Us.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Us.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Us.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Us.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await eD(e.hdb_auth_header,t,r),n=sD.join(nD(),e.schema.toString()),i=await rD.openEnvironment(n,e.table),a=await tD(i,t.hash_attribute,r,e.records,e[Us.CLUSTERING_FLAG]!==!0);try{await iD(e,a)}catch(_){oD.error(`unable to write transaction due to ${_.message}`)}return{written_hashes:a.written_hashes,skipped_hashes:a.skipped_hashes,schema_table:t,new_attributes:s,txn_time:a.txn_time}}catch(t){throw t}}o(aD,"lmdbUpdateRecords")});var oh=d((Nx,ih)=>{"use strict";var _D=T().OPERATIONS_ENUM,Oo=class{constructor(t,r,s,n=void 0){this.operation=_D.UPSERT,this.schema=t,this.table=r,this.records=s,this.__origin=n}};o(Oo,"UpsertObject");ih.exports=Oo});var _h=d((Ix,ah)=>{"use strict";var Ox=oh(),cD=Qi(),uD=Xi(),lD=to(),Ps=T(),ED=Kr().upsertRecords,dD=$(),SD=require("path"),{getBaseSchemaPath:hD}=Z(),fD=Cn(),TD=O(),{handleHDBError:RD,hdb_errors:AD}=J();ah.exports=mD;async function mD(e){let t;try{t=cD(e)}catch(c){throw RD(c,c.message,AD.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:s}=t;uD(e,s,r.hash_attribute),e.schema!==Ps.SYSTEM_SCHEMA_NAME&&(s.includes(Ps.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||s.push(Ps.TIME_STAMP_NAMES_ENUM.CREATED_TIME),s.includes(Ps.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||s.push(Ps.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await lD(e.hdb_auth_header,r,s),i=SD.join(hD(),e.schema.toString()),a=await dD.openEnvironment(i,e.table),_=await ED(a,r.hash_attribute,s,e.records,e[Ps.CLUSTERING_FLAG]!==!0);try{await fD(e,_)}catch(c){TD.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:_.written_hashes,schema_table:r,new_attributes:n,txn_time:_.txn_time}}o(mD,"lmdbUpsertRecords")});var Sh=d((Cx,dh)=>{"use strict";var gD=mt(),ch=I(),uh=O(),pD=Ms(),lh=T(),ND=W_().deleteRecords,OD=$(),ID=require("path"),{getBaseSchemaPath:CD}=Z(),{promisify:bD}=require("util"),LD=bD(setTimeout),Eh=1e4,yD=10;dh.exports=wD;async function wD(e){let t=global.hdb_schema[e.schema][e.table].hash_attribute;if(ch.isEmptyOrZeroLength(t))throw new Error(`Could not retrieve hash attribute for schema: ${e.schema} table: ${e.table}`);let r=Date.parse(e.date),s;try{let n=new gD(e.schema,e.table,lh.TIME_STAMP_NAMES_ENUM.CREATED_TIME,r,void 0,[t]);s=await pD(n,lh.VALUE_SEARCH_COMPARATORS.LESS)}catch(n){throw uh.error(`Error searching for date: ${e.date} in schema: ${e.schema} table: ${e.table}`),n}return ch.isEmptyOrZeroLength(s)?(uh.trace("No records found to delete"),{message:"No records found to delete"}):await DD(e,s,t)}o(wD,"lmdbDeleteRecordsBefore");async function DD(e,t,r){let s=ID.join(CD(),e.schema.toString()),n=await OD.openEnvironment(s,e.table),i={message:"",deleted_hashes:[],skipped_hashes:[]};for(let a=0,_=t.length;a<_;a+=Eh){let c=t.slice(a,a+Eh),u=[];for(let l=0,E=c.length;l<E;l++)u.push(c[l][r]);try{let l=await ND(n,r,u);i.deleted_hashes=i.deleted_hashes.concat(l.deleted),i.skipped_hashes=i.skipped_hashes.concat(l.skipped)}catch(l){throw l}await LD(yD)}return i.message=`${i.deleted_hashes.length} of ${i.deleted_hashes.length+i.skipped_hashes.length} records successfully deleted`,i}o(DD,"chunkDeletes")});var fh=d((bx,hh)=>{"use strict";var Io=class{constructor(t,r,s){this.schema=t,this.table=r,this.timestamp=s}};o(Io,"DeleteBeforeObject");hh.exports=Io});var Rh=d((Lx,Th)=>{"use strict";var Co=class{constructor(t=void 0,r=void 0,s=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=s}};o(Co,"DeleteAuditLogsBeforeResults");Th.exports=Co});var gh=d((wx,mh)=>{"use strict";var lc=$(),{getTransactionAuditStorePath:MD}=Z(),yx=fh(),UD=require("path"),Mn=Te(),PD=I(),Ah=Rh(),BD=require("util").promisify,HD=BD(setTimeout),vD=1e4,GD=100;mh.exports=qD;async function qD(e){let t=UD.join(MD(),e.schema),r=await lc.openEnvironment(t,e.table,!0),s=lc.listDBIs(r);lc.initializeDBIs(r,Mn.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,s);let n,i=new Ah;do n=await FD(r,e.timestamp),i.start_timestamp===void 0&&(i.start_timestamp=n.start_timestamp),n.end_timestamp!==void 0&&(i.end_timestamp=n.end_timestamp),i.transactions_deleted+=n.transactions_deleted,await HD(GD);while(n.transactions_deleted>0);return i}o(qD,"deleteAuditLogsBefore");async function FD(e,t){let r=new Ah;try{let s=e.dbis[Mn.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],n;for(let{key:i,value:a}of s.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),n=s.remove(i);let _=a[Mn.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];PD.isEmpty(_)||(n=e.dbis[Mn.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(_,i));for(let c=0;c<a.hash_values.length;c++)n=e.dbis[Mn.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(a.hash_values[c],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>vD)break}return await n,r}catch(s){throw s}}o(FD,"deleteTransactions")});var Lh=d((Dx,bh)=>{"use strict";var Ec=$(),Bs=Te(),ph=Sr(),dc=T(),Nh=I(),{getTransactionAuditStorePath:VD}=Z(),xD=require("path"),kD=ys(),bo=Is(),$D=O();bh.exports=YD;async function YD(e){let t=xD.join(VD(),e.schema),r=await Ec.openEnvironment(t,e.table,!0),s=Ec.listDBIs(r);Ec.initializeDBIs(r,Bs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,s);let n;switch(e.search_type){case dc.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return Oh(r,e.search_values);case dc.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return n=global.hdb_schema[e.schema][e.table].hash_attribute,WD(r,e.search_values,n);case dc.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return KD(r,e.search_values);default:return Oh(r)}}o(YD,"readAuditLog");function Oh(e,t=[0,ph.getMicroTime()]){Nh.isEmpty(t[0])&&(t[0]=0),Nh.isEmpty(t[1])&&(t[1]=ph.getMicroTime());let r=[];try{let s=e.dbis[Bs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],n;for(let i of s.getKeys({start:t[1]}))if(i!==t[1]){n=i;break}for(let{value:i}of s.getRange({start:t[0],end:n})){let a=Object.assign(new bo,i);r.push(a)}return r}catch(s){throw s}}o(Oh,"searchTransactionsByTimestamp");function KD(e,t=[]){let r=new Map;for(let s=0;s<t.length;s++){let n=t[s],i=[];for(let a of e.dbis[Bs.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(n))i.push(a);r.set(n,Ch(e,i))}return Object.fromEntries(r)}o(KD,"searchTransactionsByUsername");function WD(e,t,r){let s=new Map;for(let _=0,c=t.length;_<c;_++){let u=t[_],l=kD.equals(e,Bs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Bs.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let E=0,h=l[0].length;E<h;E++){let S=l[0][E],A=Number(S);s.has(A)?s.get(A).push(u.toString()):s.set(A,[u.toString()])}}let n=Array.from(s.keys()),i=Ch(e,n),a=new Map;for(let _=0;_<i.length;_++){let c=i[_],u=c.timestamp,l=s.get(u);Ih(c,"records",r,l,a),Ih(c,"original_records",r,l,a)}return Object.fromEntries(a)}o(WD,"searchTransactionsByHashValues");function Ih(e,t,r,s,n){let i=e.timestamp;if(e[t])for(let a=0;a<e[t].length;a++){let _=e[t][a],c=_[r].toString();if(s.indexOf(c)>=0)if(n.has(c)){let u=n.get(c),l=u[u.length-1];if(l.timestamp===i)l[t]=[_];else{let E=new bo(e.operation,e.user_name,i,void 0);E[t]=[_],u.push(E)}}else{let u=new bo(e.operation,e.user_name,i,void 0);u[t]=[_],n.set(c,[u])}}}o(Ih,"loopRecords");function Ch(e,t){let r=[];try{let s=e.dbis[Bs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let n=0;n<t.length;n++)try{let i=s.get(t[n]);if(i){let a=Object.assign(new bo,i);r.push(a)}}catch(i){$D.warn(i)}return r}catch(s){throw s}}o(Ch,"batchSearchTransactions")});var wh=d((Mx,yh)=>{"use strict";var QD=require("path"),{getBaseSchemaPath:jD}=Z(),JD=$();yh.exports={writeTransaction:ZD};async function ZD(e,t,r){let s=QD.join(jD(),e);return(await JD.openEnvironment(s,t)).transaction(r)}o(ZD,"writeTransaction")});var Mh=d((Ux,Dh)=>{"use strict";var XD=require("path"),{getBaseSchemaPath:zD}=Z(),eM=$();Dh.exports={flush:tM};async function tM(e,t){let r=XD.join(zD(),e.toString());return(await eM.openEnvironment(r,t.toString())).flushed}o(tM,"flush")});var Ph=d((Px,Uh)=>{"use strict";var ce=O(),{handleHDBError:rM}=J(),sM=O_(),nM=Wi(),iM=$_(),oM=Wd(),aM=bn(),_M=X_(),cM=fS(),uM=OS(),lM=Ms(),EM=US(),dM=ZS(),SM=uc(),hM=nh(),fM=_h(),TM=Sh(),RM=gh(),AM=sc(),mM=rc(),gM=Lh(),pM=wh(),NM=Mh(),Lo=class extends sM{async searchByConditions(t){try{return EM(t)}catch(r){throw ce.error(r),r}}async getDataByHash(t){try{return await _M(t)}catch(r){throw ce.error(r),r}}async searchByHash(t){try{return await cM(t)}catch(r){throw ce.error(r),r}}async getDataByValue(t,r){try{return await uM(t,r)}catch(s){throw ce.error(s),s}}async searchByValue(t){try{return await lM(t)}catch(r){throw ce.error(r),r}}async createSchema(t){try{return await oM(t)}catch(r){throw ce.error(r),r}}async dropSchema(t){try{return await dM(t)}catch(r){throw ce.error(r),r}}async createTable(t,r){try{return await SM(t,r)}catch(s){throw ce.error(s),s}}async dropTable(t){try{return await AM(t)}catch(r){throw ce.error(r),r}}async createAttribute(t){try{return await nM(t)}catch(r){throw ce.error(r),r}}async createRecords(t){try{return await iM(t)}catch(r){throw ce.error(r),r}}async updateRecords(t){try{return await hM(t)}catch(r){throw ce.error(r),r}}async upsertRecords(t){try{return await fM(t)}catch(r){throw rM(r,null,null,ce.ERR,r)}}async deleteRecords(t){try{return await aM(t)}catch(r){throw ce.error(r),r}}async deleteRecordsBefore(t){try{return await TM(t)}catch(r){throw ce.error(r),r}}async dropAttribute(t){try{return await mM(t)}catch(r){throw ce.error(r),r}}async deleteAuditLogsBefore(t){try{return await RM(t)}catch(r){throw ce.error(r),r}}async readAuditLog(t){try{return await gM(t)}catch(r){throw ce.error(r),r}}writeTransaction(t,r,s){return pM.writeTransaction(t,r,s)}flush(t,r){return NM.flush(t,r)}};o(Lo,"LMDBBridge");Uh.exports=Lo});var Hs=d((Bx,Hh)=>{"use strict";var OM=Ph(),IM=O_(),CM=Y();CM.initSync();var Bh;function bM(){return Bh instanceof IM?Bh:new OM}o(bM,"getBridge");Hh.exports=bM()});var jh=d((vx,Qh)=>{"use strict";var Sc=require("recursive-iterator"),LM=require("alasql"),hc=require("clone"),vh=I(),{handleHDBError:Gh,hdb_errors:yM}=J(),{HDB_ERROR_MSGS:qh,HTTP_STATUS_CODES:Fh}=yM,wM=["DISTINCT_ARRAY"],Vh=Symbol("validateTables"),fc=Symbol("validateTable"),Hx=Symbol("getAllColumns"),xh=Symbol("validateAllColumns"),yo=Symbol("findColumn"),kh=Symbol("validateOrderBy"),Un=Symbol("validateSegment"),Tc=Symbol("validateColumn"),$h=Symbol("setColumnsForTable"),Yh=Symbol("checkColumnsForAsterisk"),Kh=Symbol("validateGroupBy"),Wh=Symbol("hasColumns"),wo=class{constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[Vh](),this[Yh](),this[xh]()}[Vh](){if(this[Wh]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[fc](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[fc](t.table)})}}[Wh](){let t=!1,r=new Sc(this.statement);for(let{node:s,path:n}of r)if(s&&s.columnid){t=!0;break}return t}[fc](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;if(!global.hdb_schema[t.databaseid])throw Gh(new Error,qh.SCHEMA_NOT_FOUND(t.databaseid),Fh.NOT_FOUND);if(!global.hdb_schema[t.databaseid][t.tableid])throw Gh(new Error,qh.TABLE_NOT_FOUND(t.databaseid,t.tableid),Fh.NOT_FOUND);global.hdb_schema[t.databaseid][t.tableid].attributes.forEach(s=>{let n=hc(s);n.table=hc(t),this.attributes.push(n)})}[yo](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)}[Yh](){let t=new Sc(this.statement.columns);for(let{node:r,path:s}of t)r&&r.columnid==="*"&&s.indexOf("expression")<0&&this[$h](r.tableid)}[$h](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&this.statement.columns.push(new LM.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[xh](){this[Un](this.statement.columns,!1),this[Un](this.statement.joins,!1),this[Un](this.statement.where,!1),this[Kh](this.statement.group,!1),this[Un](this.statement.order,!0)}[Un](t,r){if(!t)return;let s=new Sc(t),n=[];for(let{node:i,path:a}of s)!vh.isEmpty(i)&&!vh.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[kh](i):n.push(this[Tc](i)));return n}[Kh](t){if(!t)return;let r=[];if(this.statement.columns.forEach(s=>{if(!(s.funcid&&wM.indexOf(s.funcid.toUpperCase())>=0)){if(!s.aggregatorid&&!s.columnid){let n=hc(s);delete n.as,r.push(n)}else if(s.columnid){let n=this[yo](s)[0];n&&r.push(n)}}}),this.statement.group.forEach(s=>{let n=null;if(!s.columnid)r.forEach((i,a)=>{if(i.toString()===s.toString()){n=i,r.splice(a,1);return}});else{let i=this[yo](s);if(!i||i.length===0)throw`unknown column '${s.toString()}' in group by`;if(i.length>1)throw`ambiguously defined column '${s.toString()}' in group by`;r.forEach((a,_)=>{if(a.attribute===i[0].attribute&&a.table.tableid===i[0].table.tableid){n=a,r.splice(_,1);return}})}if(!n)throw`group by column '${s.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`}[kh](t){let r=this.statement.columns.filter(s=>s.as===t.columnid);if(r.length>1)throw`ambiguous column reference ${(t.tableid?t.tableid+".":"")+t.columnid} in order by`;r.length===0&&this[Tc](t)}[Tc](t){let r=this[yo](t),s=(t.tableid?t.tableid+".":"")+t.columnid;if(r.length===0)throw`unknown column ${s}`;if(r.length>1)throw`ambiguous column reference ${s}`;return r[0]}};o(wo,"SelectValidator");Qh.exports=wo});var zh=d((Gx,Xh)=>{"use strict";var Jh=require("lodash"),Pn=require("mathjs"),DM=require("jsonata"),Zh=I();Xh.exports={distinct_array:e=>Array.isArray(e)&&e.length>1?Jh.uniqWith(e,Jh.isEqual):e,searchJSON:MM,mad:Bn.bind(null,Pn.mad),mean:Bn.bind(null,Pn.mean),mode:Bn.bind(null,Pn.mode),prod:Bn.bind(null,Pn.prod),median:Bn.bind(null,Pn.median)};function Bn(e,t,r,s){return s===1?t==null?[]:[t]:s===2?(t!=null&&r.push(t),r):r!=null&&r.length>0?e(r):null}o(Bn,"aggregateFunction");function MM(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(Zh.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),Zh.isEmpty(this.__ala__.res[r])){let s=DM(e);this.__ala__.res[r]=s}return this.__ala__.res[r].evaluate(t)}o(MM,"searchJSON")});var tf=d((qx,ef)=>{"use strict";var ie=require("moment"),Rc="YYYY-MM-DDTHH:mm:ss.SSSZZ";ie.suppressDeprecationWarnings=!0;ef.exports={current_date:()=>ie().utc().format("YYYY-MM-DD"),current_time:()=>ie().utc().format("HH:mm:ss.SSS"),extract:(e,t)=>{switch(t.toLowerCase()){case"year":return ie(e).utc().format("YYYY");case"month":return ie(e).utc().format("MM");case"day":return ie(e).utc().format("DD");case"hour":return ie(e).utc().format("HH");case"minute":return ie(e).utc().format("mm");case"second":return ie(e).utc().format("ss");case"millisecond":return ie(e).utc().format("SSS");default:break}},date:e=>ie(e).utc().format(Rc),date_format:(e,t)=>ie(e).utc().format(t),date_add:(e,t,r)=>ie(e).utc().add(t,r).valueOf(),date_sub:(e,t,r)=>ie(e).utc().subtract(t,r).valueOf(),date_diff:(e,t,r)=>{let s=ie(e).utc(),n=ie(t).utc();return r?s.diff(n,r,!0):s.diff(n)},now:()=>ie().utc().valueOf(),get_server_time:()=>ie().format(Rc),offset_utc:(e,t)=>ie(e).utc().utcOffset(t).format(Rc)}});var of=d((Fx,nf)=>{"use strict";var UM=require("@turf/area"),PM=require("@turf/length"),BM=require("@turf/circle"),HM=require("@turf/difference"),vM=require("@turf/distance"),GM=require("@turf/boolean-contains"),qM=require("@turf/boolean-equal"),FM=require("@turf/boolean-disjoint"),VM=require("@turf/helpers"),rf=T(),v=I();nf.exports={geoArea:xM,geoLength:kM,geoCircle:$M,geoDifference:YM,geoDistance:sf,geoNear:KM,geoContains:WM,geoEqual:QM,geoCrosses:jM,geoConvert:JM};var Ac="geo1 is required",mc="geo2 is required";function xM(e){if(v.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=v.autoCast(e)),UM.default(e)}o(xM,"geoArea");function kM(e,t){if(v.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=v.autoCast(e)),PM.default(e,{units:t||"kilometers"})}o(kM,"geoLength");function $M(e,t,r){if(v.isEmpty(e))throw new Error("point is required");if(v.isEmpty(t))throw new Error("radius is required");return typeof e=="string"&&(e=v.autoCast(e)),BM.default(e,t,{units:r||"kilometers"})}o($M,"geoCircle");function YM(e,t){if(v.isEmpty(e))throw new Error("poly1 is required");if(v.isEmpty(t))throw new Error("poly2 is required");return typeof e=="string"&&(e=v.autoCast(e)),typeof t=="string"&&(t=v.autoCast(t)),HM(e,t)}o(YM,"geoDifference");function sf(e,t,r){if(v.isEmpty(e))throw new Error("point1 is required");if(v.isEmpty(t))throw new Error("point2 is required");return typeof e=="string"&&(e=v.autoCast(e)),typeof t=="string"&&(t=v.autoCast(t)),vM.default(e,t,{units:r||"kilometers"})}o(sf,"geoDistance");function KM(e,t,r,s){if(v.isEmpty(e))throw new Error("point1 is required");if(v.isEmpty(t))throw new Error("point2 is required");if(v.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=v.autoCast(e)),typeof t=="string"&&(t=v.autoCast(t)),isNaN(r))throw new Error("distance must be a number");return sf(e,t,s)<=r}o(KM,"geoNear");function WM(e,t){if(v.isEmpty(e))throw new Error(Ac);if(v.isEmpty(e))throw new Error(mc);return typeof e=="string"&&(e=v.autoCast(e)),typeof t=="string"&&(t=v.autoCast(t)),GM.default(e,t)}o(WM,"geoContains");function QM(e,t){if(v.isEmpty(e))throw new Error(Ac);if(v.isEmpty(e))throw new Error(mc);return typeof e=="string"&&(e=v.autoCast(e)),typeof t=="string"&&(t=v.autoCast(t)),qM.default(e,t)}o(QM,"geoEqual");function jM(e,t){if(v.isEmpty(e))throw new Error(Ac);if(v.isEmpty(e))throw new Error(mc);return typeof e=="string"&&(e=v.autoCast(e)),typeof t=="string"&&(t=v.autoCast(t)),!FM.default(e,t)}o(jM,"geoCrosses");function JM(e,t,r){if(v.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(v.isEmpty(t))throw new Error("geo_type is required");if(v.isEmpty(rf.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(rf.GEO_CONVERSION_ENUM).join(",")}`);return VM[t](e,r)}o(JM,"geoConvert")});var _f=d((Vx,af)=>{var jr=zh(),je=tf(),yt=of();af.exports=e=>{e.aggr.mad=e.aggr.MAD=jr.mad,e.aggr.mean=e.aggr.MEAN=jr.mean,e.aggr.mode=e.aggr.MODE=jr.mode,e.aggr.prod=e.aggr.PROD=jr.prod,e.aggr.median=e.aggr.MEDIAN=jr.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=jr.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=jr.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=je.current_date,e.fn.current_time=e.fn.CURRENT_TIME=je.current_time,e.fn.extract=e.fn.EXTRACT=je.extract,e.fn.date=e.fn.DATE=je.date,e.fn.date_format=e.fn.DATE_FORMAT=je.date_format,e.fn.date_add=e.fn.DATE_ADD=je.date_add,e.fn.date_sub=e.fn.DATE_SUB=je.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=je.date_diff,e.fn.now=e.fn.NOW=je.now,e.fn.offset_utc=e.fn.OFFSET_UTC=je.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=je.get_server_time,e.fn.getdate=e.fn.GETDATE=je.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=je.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=yt.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=yt.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=yt.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=yt.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=yt.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=yt.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=yt.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=yt.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=yt.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=yt.geoNear}});var lf=d((xx,uf)=>{"use strict";var Hn=require("lodash"),ge=require("alasql");ge.options.cache=!1;var ZM=_f(),cf=require("clone"),Do=require("recursive-iterator"),M=O(),P=I(),vs=Hs(),XM=T(),{hdb_errors:zM}=J(),eU="IS NULL",vn="There was a problem performing this search. Please check the logs and try again.";ZM(ge);var Mo=class{constructor(t,r){if(P.isEmpty(t))throw M.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(),P.backtickASTSchemaItems(this.statement)}async search(){let t;try{let s=await this._checkEmptySQL();if(!P.isEmptyOrZeroLength(s))return M.trace("No results returned from checkEmptySQL SQLSearch method."),s}catch(s){throw M.error("Error thrown from checkEmptySQL in SQLSearch class method search."),M.error(s),new Error(vn)}try{let s=await this._getFetchAttributeValues();if(s)return s}catch(s){throw M.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),M.error(s),new Error(vn)}if(Object.keys(this.data).length===0)return M.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(s){throw M.error("Error thrown from processJoins in SQLSearch class method search."),M.error(s),new Error(vn)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(s){throw M.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),M.error(s),new Error(vn)}try{return t=await this._finalSQL(),t}catch(s){throw M.error("Error thrown from finalSQL in SQLSearch class method search."),M.error(s),new Error(vn)}}_getColumns(){let t=new Do(this.statement);for(let{node:r,path:s}of t)r&&r.columnid&&(this.columns[s[0]]||(this.columns[s[0]]=[]),this.columns[s[0]].push(cf(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Hn.uniqBy(t,r=>[r.databaseid,r.tableid,r.as].join()),this.tables.forEach(r=>{let s=`${r.databaseid}_${r.as?r.as:r.tableid}`;this.data[s]={},this.data[s].__hash_name=global.hdb_schema[r.databaseid][r.tableid].hash_attribute,this.data[s].__merged_data={},this.data[s].__merged_attributes=[],this.data[s].__merged_attr_map={}})}_conditionsToFetchAttributeValues(){if(P.isEmpty(this.statement.where)){M.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new Do(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!P.isEmpty(r)&&r.right)if(P.isNotEmptyAndHasValue(r.right.value)){let s=P.autoCast(r.right.value);[!0,!1].indexOf(s)>=0?r.right=new ge.yy.LogicValue({value:s}):r.right instanceof ge.yy.StringValue&&!P.isEmpty(s)&&P.autoCasterIsNumberCheck(s.toString())&&(r.right=new ge.yy.NumValue({value:s}))}else Array.isArray(r.right)&&r.right.forEach((s,n)=>{let i=P.autoCast(s.value);[!0,!1].indexOf(i)>=0?r.right[n]=new ge.yy.LogicValue({value:i}):s instanceof ge.yy.StringValue&&P.autoCasterIsNumberCheck(i.toString())&&(r.right[n]=new ge.yy.NumValue({value:i}))});if(t){M.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new Do(this.statement.where))if(r&&r.left&&r.right&&(r.left.columnid||r.right.value)&&r.op){let s=new Set,n=r.left.columnid?r.left:r.right,i=this._findColumn(n);if(!i)continue;let a=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!P.isEmpty(XM.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(P.isEmpty(this.comparator_search_values[a])&&(this.comparator_search_values[a]={ignore:!1,comparators:[]}),!this.comparator_search_values[a].ignore){if(P.isEmptyOrZeroLength(r.left.columnid)||P.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[a].ignore=!0,this.comparator_search_values[a].comparators=[];continue}this.comparator_search_values[a].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(P.isEmpty(this.exact_search_values[a])&&(this.exact_search_values[a]={ignore:!1,values:new Set}),!this.exact_search_values[a].ignore){let _=!1;switch(r.op){case"=":!P.isEmpty(r.right.value)||!P.isEmpty(r.left.value)?s.add(P.isEmpty(r.right.value)?r.left.value:r.right.value):_=!0;break;case"IN":let c=Array.isArray(r.right)?r.right:r.left;for(let u=0;u<c.length;u++)if(c[u].value)s.add(c[u].value);else{_=!0;break}break;default:_=!0;break}this.exact_search_values[a].ignore=_,_?this.exact_search_values[a].values=new Set:this.exact_search_values[a].values=new Set([...this.exact_search_values[a].values,...s])}}}_setAliasesForColumns(){if(P.isEmptyOrZeroLength(this.all_table_attributes)&&P.isEmptyOrZeroLength(this.statement.from)&&P.isEmptyOrZeroLength(this.columns.columns))return;let t=[],r={};this.statement.columns.forEach((s,n)=>{if(s.columnid==="*"){t.push(n);return}if(s.aggregatorid&&(this.has_aggregator=!0),!s.aggregatorid&&!s.funcid)if(s.as_orig=s.as?s.as:s.columnid,this.statement.joins)if(r[s.as_orig]>=0){let i=r[s.as_orig]+1;s.as=`[${s.as_orig+i}]`,r[s.as_orig]=i}else s.as=`[${s.as_orig}]`,r[s.as_orig]=0;else s.as=`[${s.as_orig}]`;!s.aggregatorid&&s.funcid&&s.args&&(s.as_orig=s.as?s.as:s.toString().replace(/'/g,'"'),s.as=`[${s.as_orig}]`),s.aggregatorid&&s.expression.columnid!=="*"&&(s.as_orig=s.as?s.as:s.expression.tableid?`${s.aggregatorid}(${s.expression.tableid}.${s.expression.columnid})`:`${s.aggregatorid}(${s.expression.columnid})`,s.as=`[${s.as_orig}]`)}),this.statement.columns.length>1&&t.length>0&&Hn.pullAt(this.statement.columns,t)}_findColumn(t){let r=this.all_table_attributes.filter(s=>{if(t.columnid_orig&&t.tableid_orig)return(s.table.as===t.tableid_orig||s.table.tableid===t.tableid_orig)&&s.attribute===t.columnid_orig;if(t.tableid)return(s.table.as===t.tableid||s.table.tableid===t.tableid)&&s.attribute===t.columnid;let n=t.columnid_orig?t.columnid_orig:t.columnid;return s.attribute===n});if(P.isEmptyOrZeroLength(r)){let s=this.columns.columns.filter(n=>n.as?t.columnid===n.as:!1);P.isEmptyOrZeroLength(s)||(r=this.all_table_attributes.filter(n=>n.attribute===s[0].columnid&&s[0].tableid&&s[0].tableid===(n.table.as?n.table.as:n.table.tableid)))}return r[0]}async _checkEmptySQL(){let t=[];if(P.isEmptyOrZeroLength(this.all_table_attributes)&&!P.isEmptyOrZeroLength(this.columns.columns))return t;if(P.isEmptyOrZeroLength(this.all_table_attributes)&&P.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await ge.promise(r)}catch(r){throw M.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),M.error(r),new Error("There was a problem with the SQL statement")}return t}_addFetchColumns(t){t&&t.length>0&&t.forEach(r=>{let s=this._findColumn(r);s&&this.fetch_attributes.push(cf(s))})}_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,s,n){let i=this.data[t].__merged_attr_map[s];this.data[t].__merged_data[r].splice(i,1,n)}async _getFetchAttributeValues(){if(P.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(eU)>-1&&this.tables.forEach(n=>{let i={columnid:global.hdb_schema[n.databaseid][n.tableid].hash_attribute,tableid:n.tableid};this._addFetchColumns([i])}),this.statement.order&&(this._updateOrderByToAliases(),this._addNonAggregatorsToFetchColumns()),this.fetch_attributes=Hn.uniqBy(this.fetch_attributes,n=>[n.table.databaseid,n.table.as?n.table.as:n.table.tableid,n.attribute].join()),r)return await this._simpleSQLQuery();let s=this.fetch_attributes.reduce((n,i)=>{let a=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,_=this.data[a].__hash_name;return n[a]||(n[a]=[],n[a].push(null),this._addColumnToMergedAttributes(a,_)),i.attribute!==_&&(n[a].push(null),this._addColumnToMergedAttributes(a,i.attribute)),n},{});for(let n of this.fetch_attributes){let i=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,a=this.data[i].__hash_name,_={schema:n.table.databaseid,table:n.table.tableid,get_attributes:[n.attribute]},c=!1,u=[n.table.databaseid,n.table.tableid,n.attribute].join("/");if(n.attribute===a&&(c=!0),!P.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!P.isEmptyOrZeroLength(this.exact_search_values[u].values))if(c)try{_.hash_values=Array.from(this.exact_search_values[u].values);let l=await vs.getDataByHash(_);for(let E of _.hash_values)E in l&&!this.data[i].__merged_data[E]&&(this.data[i].__merged_data[E]=[...s[i]],this._setMergedHashAttribute(i,E))}catch(l){M.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),M.error(l)}else try{_.search_attribute=n.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async l=>{let E=Object.assign({},_);E.search_value=l;let h=await vs.getDataByValue(E);for(let S in h)this.data[i].__merged_data[S]?this._updateMergedAttribute(i,S,n.attribute,h[S][n.attribute]):(this.data[i].__merged_data[S]=[...s[i]],this._updateMergedAttribute(i,S,n.attribute,h[S][n.attribute]),this._setMergedHashAttribute(i,P.autoCast(S)))}))}catch(l){M.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),M.error(l)}else if(!P.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!P.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let l=this.comparator_search_values[u].comparators;for(let E=0,h=l.length;E<h;E++){let S=l[E];_.search_attribute=S.attribute,_.search_value=S.search_value;let A=await vs.getDataByValue(_,S.operation);if(c)for(let R in A)this.data[i].__merged_data[R]||(this.data[i].__merged_data[R]=[...s[i]],this._setMergedHashAttribute(i,P.autoCast(R)));else for(let R in A)this.data[i].__merged_data[R]?this._updateMergedAttribute(i,R,n.attribute,A[R][n.attribute]):(this.data[i].__merged_data[R]=[...s[i]],this._updateMergedAttribute(i,R,n.attribute,A[R][n.attribute]),this._setMergedHashAttribute(i,P.autoCast(R)))}}catch(l){M.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),M.error(l)}else try{_.search_attribute=n.attribute,_.search_value="*";let l=await vs.getDataByValue(_);if(c)for(let E in l)this.data[i].__merged_data[E]||(this.data[i].__merged_data[E]=[...s[i]],this._setMergedHashAttribute(i,P.autoCast(E)));else for(let E in l)this.data[i].__merged_data[E]?this._updateMergedAttribute(i,E,n.attribute,l[E][n.attribute]):(this.data[i].__merged_data[E]=[...s[i]],this._updateMergedAttribute(i,E,n.attribute,l[E][n.attribute]),this._setMergedHashAttribute(i,P.autoCast(E)))}catch(l){M.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),M.error(l)}}}_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 ge.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(n=>{let i=n.aggregatorid?n.expression:n,a=n.aggregatorid?n.as_orig:i.as_orig;return t.expression.tableid?i.columnid_orig===t.expression.columnid_orig&&i.tableid_orig===t.expression.tableid_orig:i.columnid_orig===t.expression.columnid_orig||t.expression.columnid_orig===a});r[0]||r.push(this._findColumn(t.expression));let s=r[0];if(t.is_func=!!s.funcid,t.is_aggregator=!!s.aggregatorid,s.as)if(s.as&&!t.expression.tableid)t.expression.columnid=s.as,t.expression.columnid_orig=s.as_orig;else{let n=new ge.yy.Column;n.columnid=s.as,n.columnid_orig=s.as_orig,t.expression=n}else{t.initial_select_column=Object.assign(new ge.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 n=t.is_func?new ge.yy.FuncValue:new ge.yy.Column;t.initial_select_column=Object.assign(n,s)}})}_addNonAggregatorsToFetchColumns(){let r=this.statement.order.filter(s=>!s.is_aggregator&&!s.is_ordinal).map(s=>s.is_func?{columnid:s.initial_select_column.args.filter(i=>!!i.columnid_orig)[0].columnid_orig}:{columnid:s.expression.columnid_orig});this._addFetchColumns(r)}async _processJoins(){let t=[],r=[],s=this.statement.from[0],n=[s],i=["? "+(s.as?" AS "+s.as:s.tableid)];t.push(Object.values(this.data[`${s.databaseid_orig}_${s.as?s.as_orig:s.tableid_orig}`].__merged_data)),this.statement.joins&&this.statement.joins.forEach(S=>{S.joinmode&&S.joinmode!=="INNER"&&(this.has_outer_join=!0),n.push(S.table);let A=S.joinmode+" JOIN ? AS "+(S.as?S.as:S.table.tableid);S.on&&(A+=" ON "+S.on.toString()),i.push(A),t.push(Object.values(this.data[`${S.table.databaseid_orig}_${S.table.as?S.table.as_orig:S.table.tableid_orig}`].__merged_data))});let a=[],_={};n.forEach(S=>{let A=this.data[`${S.databaseid_orig}_${S.as?S.as_orig:S.tableid_orig}`].__hash_name,R=S.as?S.as_orig:S.tableid_orig;a.push({key:`'${R}.${A}'`,schema:S.databaseid_orig,table:S.as?S.as_orig:S.tableid_orig,keys:new Set}),r.push(`${S.as?S.as:S.tableid}.\`${A}\` AS "${R}.${A}"`),_[S.as?S.as_orig:S.tableid_orig]=this.data[`${S.databaseid_orig}_${S.as?S.as_orig:S.tableid_orig}`].__merged_attributes});let c=this.statement.where?"WHERE "+this.statement.where:"",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(S=>{S.is_func?r.push(S.initial_select_column.toString()):S.initial_select_column.tableid?r.push(`${S.initial_select_column.tableid}.${S.initial_select_column.columnid} AS ${S.expression.columnid}`):r.push(`${S.initial_select_column.columnid} AS ${S.expression.columnid}`)}));let l="",E="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&(l=this.statement.limit?"LIMIT "+this.statement.limit:"",E=this.statement.offset?"OFFSET "+this.statement.offset:"");let h=[];try{let S=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${c} ${u} ${l} ${E}`,A=this._convertColumnsToIndexes(S,n);h=await ge.promise(A,t),t=null}catch(S){throw M.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),M.error(S),new Error("There was a problem processing the data.")}if(h&&h.length>0){for(let S=0,A=h.length;S<A;S++){let R=h[S];a.forEach(L=>{R[L.key]!==null&&R[L.key]!==void 0&&L.keys.add(R[L.key])})}a.forEach(S=>{let A=Object.keys(this.data[`${S.schema}_${S.table}`].__merged_data),R=Hn.difference(A,[...S.keys].map(L=>L.toString()));for(let L=0,de=R.length;L<de;L++){let p=R[L];delete this.data[`${S.schema}_${S.table}`].__merged_data[p]}})}return{existing_attributes:_,joined_length:h?h.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let s=[],n=new Do(this.columns);for(let{node:i}of n)if(i&&i.columnid){let a=this._findColumn(i);if(a){let _=a.table.as?a.table.as:a.table.tableid;(!t[_]||t[_].indexOf(a.attribute)<0)&&s.push(a)}}s=Hn.uniqBy(s,i=>[i.table.databaseid,i.table.as?i.table.as:i.table.tableid,i.attribute].join());try{await this._getData(s)}catch(i){M.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),M.error(i)}}async _getData(t){try{let r=t.reduce((s,n)=>{let i=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`;return s[i]?s[i].columns.push(n.attribute):s[i]={schema:n.table.databaseid,table:n.table.tableid,columns:[n.attribute]},s},{});for(let s in r){let n=r[s],i=this.data[s].__merged_data,a=[];for(let l in i)a.push(i[l][0]);this.data[s].__merged_attributes.push(...n.columns);let _={schema:n.schema,table:n.table,hash_values:a,get_attributes:n.columns},c=await vs.getDataByHash(_),u=n.columns.length;for(let l=0,E=a.length;l<E;l++){let h=a[l],S=c[h];for(let A=0;A<u;A++){let R=n.columns[A],L=S[R]===void 0?null:S[R];this.data[s].__merged_data[h].push(L)}}}}catch(r){throw M.error("Error thrown from getDataByHash function in SQLSearch class method getData."),M.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(n=>{n.as=n.as?n.as:n.table.tableid,t.push(Object.values(this.data[`${n.table.databaseid_orig}_${n.table.as?n.table.as_orig:n.table.tableid_orig}`].__merged_data)),n.table.databaseid="",n.table.tableid="?"}),this.statement.order&&this.statement.order.forEach(n=>{if(n.is_ordinal)return;this.statement.columns.filter(a=>{let _=a.aggregatorid?a.expression:a,c=a.aggregatorid?a.as_orig:_.as_orig;return n.expression.tableid?_.columnid_orig===n.expression.columnid_orig&&_.tableid_orig===n.expression.tableid_orig:_.columnid_orig===n.expression.columnid_orig||n.expression.columnid_orig===c}).length===0&&(n.expression.columnid=n.initial_select_column.columnid)}),!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&(this.statement.limit&&delete this.statement.limit,this.statement.offset&&delete this.statement.offset);let s;try{let n=this._buildSQL();M.trace(`Final SQL: ${n}`),s=await ge.promise(n,t),this.has_outer_join&&(s=this._translateUndefinedValues(s)),M.trace(`Final AlaSQL results data included ${s.length} rows`)}catch(n){throw M.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),M.error(n),new Error("There was a problem running the generated sql.")}return s}_translateUndefinedValues(t){try{let r=[];for(let s of t){let n=Object.create(null);Object.keys(s).forEach(i=>{s[i]===void 0?n[i]=null:n[i]=s[i]}),r.push(n)}return r}catch(r){return M.error(zM.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),M.trace(r.stack),t}}_buildSQL(t=!0){let r=this.statement.toString();return this.statement.columns.forEach(s=>{if(s.funcid&&s.as){let n=s.toString().replace(" AS "+s.as,"");r=r.replace(s.toString(),n)}}),t===!0?this._convertColumnsToIndexes(r,this.tables):r}_convertColumnsToIndexes(t,r){let s=t,n={};r.forEach(i=>{i.databaseid_orig?n[`${i.databaseid_orig}_${i.as?i.as_orig:i.tableid_orig}`]=i.as?i.as:i.tableid:n[`${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((a,_)=>{let c=n[i],u=new RegExp(`${c}.\`${a}\``,"g"),l=`${c}.[${_}]`;s=s.replace(u,l)});for(let i in this.data)this.data[i].__merged_attributes.forEach((a,_)=>{let c=new RegExp(`\`${a}\``,"g"),u=`[${_}]`;s=s.replace(c,u)});return s}async _simpleSQLQuery(){let t=this.statement.columns.reduce((s,n)=>(n.as_orig&&n.as_orig!=n.columnid_orig?s[n.columnid_orig]=n.as_orig:s[n.columnid_orig]||(s[n.columnid_orig]=n.columnid_orig),s),{}),r=this.fetch_attributes.reduce((s,n)=>{let i=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`;return s[i]||(s[i]={}),s[i][t[n.attribute]]=null,s},{});for(let s of this.fetch_attributes){let n=`${s.table.databaseid}_${s.table.as?s.table.as:s.table.tableid}`,i={schema:s.table.databaseid,table:s.table.tableid,get_attributes:[s.attribute]};try{i.search_attribute=s.attribute,i.search_value="*";let a=await vs.getDataByValue(i);for(let _ in a)this.data[n].__merged_data[_]||(this.data[n].__merged_data[_]=Object.assign({},r[n])),this.data[n].__merged_data[_][t[s.attribute]]=a[_][s.attribute]}catch(a){M.error("There was an error when processing this SQL operation. Check your logs"),M.error(a)}}return Object.values(Object.values(this.data)[0].__merged_data)}};o(Mo,"SQLSearch");uf.exports=Mo});var mr=d((kx,df)=>{"use strict";var tU=jh();df.exports={searchByConditions:iU,searchByHash:oU,searchByValue:aU,search:_U};var gc=Hs(),Ef=require("util"),rU=Ef.callbackify(gc.searchByHash),sU=Ef.callbackify(gc.searchByValue),nU=lf();async function iU(e){return gc.searchByConditions(e)}o(iU,"searchByConditions");function oU(e,t){try{rU(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}o(oU,"searchByHash");function aU(e,t){try{e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc),sU(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}o(aU,"searchByValue");function _U(e,t){try{let r=new tU(e);r.validate(),new nU(r.statement,r.attributes).search().then(n=>{t(null,n)}).catch(n=>{t(n,null)})}catch(r){return t(r)}}o(_U,"search")});var qn=d(($x,Tf)=>{"use strict";var Gn=require("crypto"),hf="aes-256-cbc",cU=32,uU=16,pc=64,ff=32,lU=pc+ff,Sf=new Map;Tf.exports={encrypt:EU,decrypt:dU,createNatsTableStreamName:SU};function EU(e){let t=Gn.randomBytes(cU),r=Gn.randomBytes(uU),s=Gn.createCipheriv(hf,Buffer.from(t),r),n=s.update(e);n=Buffer.concat([n,s.final()]);let i=t.toString("hex"),a=r.toString("hex"),_=n.toString("hex");return i+a+_}o(EU,"encrypt");function dU(e){let t=e.substr(0,pc),r=e.substr(pc,ff),s=e.substr(lU,e.length),n=Buffer.from(r,"hex"),i=Buffer.from(s,"hex"),a=Gn.createDecipheriv(hf,Buffer.from(t,"hex"),n),_=a.update(i);return _=Buffer.concat([_,a.final()]),_.toString()}o(dU,"decrypt");function SU(e,t){let r=`${e}.${t}`,s=Sf.get(r);return s||(s=Gn.createHash("md5").update(`${e}.${t}`).digest("hex"),Sf.set(r,s)),s}o(SU,"createNatsTableStreamName")});var Ho=d((Yx,Of)=>{"use strict";var Af=mr(),gr=O(),mf=G_(),hU=require("lodash"),fU=require("path"),TU=qn(),Nc=I(),{promisify:gf}=require("util"),Q=T(),{handleHDBError:Uo,hdb_errors:RU}=J(),{HDB_ERROR_MSGS:Po,HTTP_STATUS_CODES:pf}=RU,AU=Y();AU.initSync();var Rf=$(),mU=Z(),Fn=gf(Af.searchByValue),gU=gf(Af.searchByHash),Gs="name",Nf="hash_attribute",Oc="schema",pU="schema_table",NU="attribute";Of.exports={describeAll:OU,describeTable:Bo,describeSchema:CU};async function OU(e){try{let t=Nc.isEmptyOrZeroLength(e),r,s;t||(r=e.hdb_user.role.permission,s=r.super_user||r.cluster_user);let n={schema:Q.SYSTEM_SCHEMA_NAME,table:Q.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,search_attribute:Gs,search_value:Q.WILDCARD_SEARCH_VALUE,get_attributes:[Gs]},i=await Fn(n);if(Nc.isEmptyOrZeroLength(i))return{};let a={},_={};for(let h in i)a[i[h].name]=!0,!t&&!s&&(_[i[h].name]=r[i[h].name].describe);let c={schema:Q.SYSTEM_SCHEMA_NAME,table:Q.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,search_attribute:Q.ID_ATTRIBUTE_STRING,search_value:Q.WILDCARD_SEARCH_VALUE,get_attributes:[Nf,Q.ID_ATTRIBUTE_STRING,Gs,Oc]},u=await Fn(c),l=[];for(let h of u)try{let S;if(t||s)S=await Bo({schema:h.schema,table:h.name});else if(r&&r[h.schema].describe&&r[h.schema].tables[h.name].describe){let A=r[h.schema].tables[h.name].attribute_permissions;S=await Bo({schema:h.schema,table:h.name},A)}S&&l.push(S)}catch(S){gr.error(S)}let E={};for(let h in l)t||s?(E[l[h].schema]==null&&(E[l[h].schema]={}),E[l[h].schema][l[h].name]=l[h],a[l[h].schema]&&delete a[l[h].schema]):_[l[h].schema]&&(E[l[h].schema]==null&&(E[l[h].schema]={}),E[l[h].schema][l[h].name]=l[h],a[l[h].schema]&&delete a[l[h].schema]);for(let h in a)t||s?E[h]={}:_[h]&&(E[h]={});return E}catch(t){return gr.error("Got an error in describeAll"),gr.error(t),Uo(new Error,Po.DESCRIBE_ALL_ERR)}}o(OU,"describeAll");async function Bo(e,t){let{schema:r,table:s}=e;r=r.toString(),s=s.toString();let n=t;e.hdb_user&&!e.hdb_user.role.permission.super_user&&(n=e.hdb_user.role.permission[r].tables[s].attribute_permissions);let i={},a=mf.describe_table(e);if(a)throw a;if(r===Q.SYSTEM_SCHEMA_NAME)return global.hdb_schema[Q.SYSTEM_SCHEMA_NAME][s];let _={schema:Q.SYSTEM_SCHEMA_NAME,table:Q.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,hash_attribute:Q.SYSTEM_TABLE_HASH_ATTRIBUTES.TABLE_TABLE_HASH_ATTRIBUTE,search_attribute:Gs,search_value:s,hash_values:[],get_attributes:[Q.WILDCARD_SEARCH_VALUE]},c=await Fn(_);if(!c||c.length===0)throw Uo(new Error,Po.TABLE_NOT_FOUND(e.schema,e.table),pf.NOT_FOUND);for await(let u of c)try{if(u.schema!==r)continue;if(i=u,!i.hash_attribute)throw Uo(new Error,Po.INVALID_TABLE_ERR(i));let l={schema:Q.SYSTEM_SCHEMA_NAME,table:Q.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,hash_attribute:Q.SYSTEM_TABLE_HASH_ATTRIBUTES.ATTRIBUTE_TABLE_HASH_ATTRIBUTE,search_attribute:pU,search_value:r+"."+s,get_attributes:[NU]},E=await Fn(l);E=hU.uniqBy(E,h=>h.attribute),n&&n.length>0&&(E=IU(n)),i.attributes=E,i.clustering_stream_name=TU.createNatsTableStreamName(u.schema,u.name);try{let h=fU.join(mU.getBaseSchemaPath(),i.schema.toString()),S=await Rf.openEnvironment(h,i.name),A=Rf.statDBI(S,i.hash_attribute);i.record_count=A.entryCount}catch(h){gr.warn(`unable to stat table dbi due to ${h}`)}}catch(l){gr.error(`There was an error getting attributes for table '${u.name}'`),gr.error(l)}return i}o(Bo,"descTable");function IU(e){return e.reduce((t,r)=>(r.describe&&t.push({attribute:r.attribute_name}),t),[])}o(IU,"getAttrsByPerms");async function CU(e){let t=mf.schema_object(e);if(t)throw t;let r;e.hdb_user&&!e.hdb_user.role.permission.super_user&&(r=e.hdb_user.role.permission[e.schema]);let s=e.schema.toString(),n={schema:Q.SYSTEM_SCHEMA_NAME,table:Q.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,hash_attribute:Q.SYSTEM_TABLE_HASH_ATTRIBUTES.TABLE_TABLE_HASH_ATTRIBUTE,search_attribute:Oc,search_value:s,hash_values:[],get_attributes:[Nf,Q.ID_ATTRIBUTE_STRING,Gs,Oc]},i=await Fn(n);if(i&&i.length<1){let a={schema:Q.SYSTEM_SCHEMA_NAME,table:Q.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,hash_attribute:Q.SYSTEM_TABLE_HASH_ATTRIBUTES.SCHEMA_TABLE_HASH_ATTRIBUTE,hash_values:[s],get_attributes:[Gs]},_=await gU(a);if(_&&_.length<1)throw Uo(new Error,Po.SCHEMA_NOT_FOUND(e.schema),pf.NOT_FOUND);return{}}else{let a={};return await Promise.all(i.map(async _=>{try{let c;if(r&&r.tables[_.name]&&(c=r.tables[_.name]),Nc.isEmpty(c)||c.describe){let u=await Bo({schema:e.schema,table:_.name},c?c.attribute_permissions:null);u&&(a[u.name]=u)}}catch(c){gr.error(`Error describing schema table '${e.schema}.${_}'`),gr.error(c)}})),a}}o(CU,"describeSchema")});var Fs=d((Qx,yf)=>{var Kx=require("async"),qs=Wt(),Wx=O(),{callbackify:bf,promisify:bU}=require("util");yf.exports={setSchemaDataToGlobal:If,getTableSchema:wU,getSystemSchema:MU,setSchemaDataToGlobalAsync:bU(If)};var Lf=Ho(),LU=bf(Lf.describeAll),yU=bf(Lf.describeTable);function If(e){LU(null,(t,r)=>{if(t){e(t);return}r.system||(r.system=qs),global.hdb_schema=r,e(null,null)})}o(If,"setSchemaDataToGlobal");function Cf(e,t){return e==="system"?qs[t]:global.hdb_schema[e][t]}o(Cf,"returnSchema");function wU(e,t,r){!global.hdb_schema||!global.hdb_schema[e]||!global.hdb_schema[e][t]?DU(e,t,s=>{if(s)return r(s);if(!global.hdb_schema[e])return r(`schema ${e} does not exist`);if(!global.hdb_schema[e]||!global.hdb_schema[e][t])return r(`table ${e}.${t} does not exist`);r(null,Cf(e,t))}):r(null,Cf(e,t))}o(wU,"getTableSchema");function DU(e,t,r){let s={table:t,schema:e};if(e==="system"){global.hdb_schema?global.hdb_schema.system=qs:global.hdb_schema={system:qs},r();return}yU(s,(n,i)=>{if(n){r(n);return}if(!i.schema&&!i.name){r();return}global.hdb_schema||(global.hdb_schema={system:qs}),global.hdb_schema[e]||(global.hdb_schema[e]={}),global.hdb_schema[e][t]=i,r()})}o(DU,"setTableDataToGlobal");function MU(){return qs}o(MU,"getSystemSchema")});var Zr=d((jx,Mf)=>{"use strict";var Go=N_(),at=I(),UU=require("util"),qo=Hs(),PU=Fs(),Ic=O(),{handleHDBError:pr,hdb_errors:BU}=J(),{HTTP_STATUS_CODES:Jr}=BU,HU=UU.promisify(PU.getTableSchema),vU="updated",wf="inserted",Df="upserted";Mf.exports={insert:qU,update:FU,upsert:VU,validation:GU,flush:xU};async function GU(e){if(at.isEmpty(e))throw new Error("invalid update parameters defined.");if(at.isEmptyOrZeroLength(e.schema))throw new Error("invalid schema specified.");if(at.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await HU(e.schema,e.table),r=Go(e);if(r)throw r;if(!Array.isArray(e.records))throw new Error("records must be an array");let s=t.hash_attribute,n=new Set,i={},a=!1;return e.operation==="update"&&(a=!0),e.records.forEach(_=>{if(a&&at.isEmptyOrZeroLength(_[s]))throw Ic.error("a valid hash attribute must be provided with update record:",_),new Error("a valid hash attribute must be provided with update record");if(!at.isEmptyOrZeroLength(_[s])&&(_[s]==="null"||_[s]==="undefined"))throw Ic.error(`a valid hash value must be provided with ${e.operation} record:`,_),new Error(`"${_[s]}" is not a valid hash attribute value`);!at.isEmpty(_[s])&&_[s]!==""&&n.has(at.autoCast(_[s]))&&(_.skip=!0),n.add(at.autoCast(_[s]));for(let c in _)i[c]=1}),i[s]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(i)}}o(GU,"validation");async function qU(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=Go(e);if(t)throw pr(new Error,t.message,Jr.BAD_REQUEST);let r=at.checkSchemaTableExist(e.schema,e.table);if(r)throw pr(new Error,r,Jr.BAD_REQUEST);try{let s=await qo.createRecords(e);return vo(wf,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time)}catch(s){throw s}}o(qU,"insertData");async function FU(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=Go(e);if(t)throw pr(new Error,t.message,Jr.BAD_REQUEST);let r=at.checkSchemaTableExist(e.schema,e.table);if(r)throw pr(new Error,r,Jr.BAD_REQUEST);try{let s=await qo.updateRecords(e);return at.isEmpty(s.existing_rows)?vo(vU,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time):vo(s.update_action,[],e,s.hashes,void 0,s.txn_time)}catch(s){throw s}}o(FU,"updateData");async function VU(e){if(e.operation!=="upsert")throw pr(new Error,"invalid operation, must be upsert",Jr.INTERNAL_SERVER_ERROR);let t=Go(e);if(t)throw pr(new Error,t.message,Jr.BAD_REQUEST);let r=at.checkSchemaTableExist(e.schema,e.table);if(r)throw pr(new Error,r,Jr.BAD_REQUEST);try{let s=await qo.upsertRecords(e);return vo(Df,s.written_hashes,e,[],s.new_attributes,s.txn_time)}catch(s){let n=`There was an error during an upsert op: ${s}`;throw pr(s,null,null,Ic.ERR,n)}}o(VU,"upsertData");function vo(e,t,r,s,n,i){let a={message:`${e} ${t.length} of ${t.length+s.length} records`,new_attributes:n,txn_time:i};return e===wf?(a.inserted_hashes=t,a.skipped_hashes=s,a):e===Df?(a.upserted_hashes=t,a):(a.update_hashes=t,a.skipped_hashes=s,a)}o(vo,"returnObject");function xU(e){return qo.flush(e.schema,e.table)}o(xU,"flush")});var Pf=d((Jx,Uf)=>{"use strict";var Fo=class{constructor(t,r,s){this.info_id=t,this.data_version_num=r,this.hdb_version_num=s}};o(Fo,"HdbInfoInsertObject");Uf.exports={HdbInfoInsertObject:Fo}});var Cc=d((Zx,Bf)=>{"use strict";var Vo=class{constructor(t,r,s,n,i){this.operation=t,this.schema=r,this.table=s,this.hash_attribute=n,this.records=i}};o(Vo,"InsertObject");var xo=class{constructor(t,r,s,n,i,a){this.schema=t,this.table=r,this.search_attribute=s,this.hash_attribute=n,this.get_attributes=i,this.search_value=a}};o(xo,"NoSQLSeachObject");var ko=class{constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};o(ko,"DeleteResponseObject");Bf.exports={InsertObject:Vo,NoSQLSeachObject:xo,DeleteResponseObject:ko}});var Gf=d((Xx,vf)=>{"use strict";var Hf=T(),$o=class{constructor(t,r){this[Hf.UPGRADE_JSON_FIELD_NAMES_ENUM.DATA_VERSION]=t,this[Hf.UPGRADE_JSON_FIELD_NAMES_ENUM.UPGRADE_VERSION]=r}};o($o,"UpgradeObject");vf.exports={UpgradeObject:$o}});var bc=d((zx,xf)=>{"use strict";var Nr=require("prompt"),Yo=require("chalk"),qf=O(),Zt=require("os"),Ff=ds(),Vf=["yes","y"];async function kU(e){let t=`${Zt.EOL}`+Yo.bold.green("Your current HarperDB version requires that we complete an update process.")+`${Zt.EOL}If a backup of your data has not been created, we recommend you cancel this process and backup before proceeding.${Zt.EOL}${Zt.EOL}You can read more about the changes in this upgrade at https://harperdb.io/developers/release-notes/${Zt.EOL}`;Nr.override=Ff(["CONFIRM_UPGRADE"]),Nr.start(),Nr.message=t;let r={properties:{CONFIRM_UPGRADE:{description:Yo.magenta(`${Zt.EOL}[CONFIRM_UPGRADE] Do you want to upgrade your HDB instance now? (yes/no)`),pattern:/y(es)?$|n(o)?$/,message:"Must respond 'yes' or 'no'",default:"no",required:!0}}},s;try{s=await Nr.get([r])}catch(n){return qf.error("There was an error when prompting user about an upgrade."),qf.error(n),!1}return Vf.includes(s.CONFIRM_UPGRADE)}o(kU,"forceUpdatePrompt");async function $U(e){let t=`${Zt.EOL}`+Yo.bold.green(`Your installed HarperDB version is older than the version used to create your data. Downgrading is not recommended as it is not tested and guaranteed to work. However, if you need to downgrade, and a backup of your data has not been created, we recommend you cancel this process and backup before proceeding.${Zt.EOL}`);Nr.override=Ff(["CONFIRM_DOWNGRADE"]),Nr.start(),Nr.message=t;let r={properties:{CONFIRM_DOWNGRADE:{description:Yo.magenta(`${Zt.EOL}[CONFIRM_DOWNGRADE] Do you want to proceed with using your downgraded HDB instance now? (yes/no)`),pattern:/y(es)?$|n(o)?$/,message:"Must respond 'yes' or 'no'",default:"no",required:!0}}},s=await Nr.get([r]);return Vf.includes(s.CONFIRM_DOWNGRADE)}o($U,"forceDowngradePrompt");xf.exports={forceUpdatePrompt:kU,forceDowngradePrompt:$U}});var Lc=d((ek,kf)=>{"use strict";var Ko=class{constructor(t){this.version=t,this.sync_functions=[],this.async_functions=[]}};o(Ko,"UpgradeDirective");kf.exports=Ko});var Yf=d((ik,$f)=>{"use strict";var YU=I(),KU=st(),tk=O(),rk=require("path"),sk=require("fs"),nk=T();$f.exports={getOldPropsValue:WU};function WU(e,t,r=!1){let s=t.getRaw(e);return YU.isNotEmptyAndHasValue(s)?s:r?KU.getDefaultConfig(e):""}o(WU,"getOldPropsValue")});var jf=d((ok,Qf)=>{"use strict";var Or=require("path"),Ir=require("fs-extra"),QU=require("properties-reader"),jU=Lc(),oe=O(),{getOldPropsValue:W}=Yf(),{HDB_SETTINGS_NAMES:N,CONFIG_PARAMS:Xr}=T(),zr=st(),Wo=Y(),Kf=I(),wt=T(),yc=new jU("3.1.0"),Wf=[];function JU(){let e=QU(Wo.get(N.SETTINGS_PATH_KEY)),t="Updating settings file for version 3.1.0";console.log(t),oe.info(t);let r=` ;Settings for the HarperDB process.
7
7