harperdb 4.0.5 → 4.0.6

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
- f70250f779228059f3eb4a07109ac18dcbc2bc4b
62
+ 8a837b139c2f5ff3a6a3cc5c5735b50cae1e0f94
package/bin/harperdb.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";var Eg=Object.defineProperty;var o=(e,t)=>Eg(e,"name",{value:t,configurable:!0});var d=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var h=d((pV,pl)=>{"use strict";var be=require("path"),dg=require("fs");function Sg(){let e=__dirname;for(;!dg.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(Sg,"getHDBPackageRoot");var Et=Sg(),ul="js",on=ul,Tg="harperdb-config.yaml",fg="defaultConfig.yaml",hg="hdb",ll=`hdbServer.${on}`,El=`customFunctionsServer.${on}`,dl=`hdbIpcServer.${on}`,Rg=`restartHdb.${on}`,s_="HarperDB",Si="Custom Functions",Ti="Clustering Hub",fi="Clustering Leaf",n_="Clustering Ingest Service",i_="Clustering Reply Service",Ag="foreground.pid",r_={HDB:s_,IPC:"IPC",CLUSTERING_HUB:Ti,CLUSTERING_LEAF:fi,CLUSTERING_INGEST_SERVICE:n_,CLUSTERING_REPLY_SERVICE:i_,CUSTOM_FUNCTIONS:Si,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"},mg={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"},gg={NOTIFY:"notify",FATAL:"fatal",ERROR:"error",WARN:"warn",INFO:"info",DEBUG:"debug",TRACE:"trace"},pg={harperdb:s_,ipc:"IPC","clustering hub":Ti,"clustering leaf":fi,"clustering ingest service":n_,"clustering reply service":i_,"custom functions":Si,custom_functions:Si,"pm2-logrotate":r_.PM2_LOGROTATE,logrotate:r_.PM2_LOGROTATE,clustering:"clustering","clustering config":"clustering config"},Ng={CLUSTERING_HUB_PROC_DESCRIPTOR:Ti,CLUSTERING_LEAF_PROC_DESCRIPTOR:fi,CLUSTERING_INGEST_PROC_DESCRIPTOR:n_,CLUSTERING_REPLY_SERVICE_DESCRIPTOR:i_},di={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")},Og={HDB:be.join(di.HDB,ll),IPC:be.join(di.IPC,dl),CUSTOM_FUNCTIONS:be.join(di.CUSTOM_FUNCTIONS,El)},Ig={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")},Cg={SUPER_USER:"super_user",CLUSTER_USER:"cluster_user"},Sl="support@harperdb.io",bg="customer-success@harperdb.io",Tl=1,Lg=4141,fl="https://harperdbhelp.zendesk.com/hc/en-us/requests/new",yg="https://www.harperdb.io/product",wg=`For support, please submit a request at ${fl} or contact ${Sl}`,hl=`For license support, please contact ${bg}`,Dg="None of the specified records were found.",Mg="hash attribute not found",Ug=`Your current license only supports ${Tl} role. ${hl}`,Pg="Your current license only supports 3 connections to a node.",Bg="127.0.0.1",Hg=1,vg=/^\.$/,Gg=/^\.\.$/,qg="U+002E",Fg=/\//g,Vg="U+002F",xg=/U\+002F/g,kg=/^U\+002E$/,$g=/^U\+002EU\+002E$/,Yg="d",Kg=999999,Wg="*",Qg="--max-old-space-size=",jg="system",Jg="__hdb_hash",Zg=".harperdb",Xg=".hdb",zg="keys",ep="hdb_boot_properties.file",tp=".updateConfig.json",rp="SIGTSTP",sp=24,np=6e4,ip=448,op="blob",ap="trash",_p="schema",cp="transactions",up=".count",lp="id",Ep="install_log.log",dp="run_log.log",Sp="PROCESS_NAME",Tp={SETTINGS_PATH_KEY:"settings_path"},Rl=require("lodash"),fp={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},Rp={DATA_VERSION:"data_version",UPGRADE_VERSION:"upgrade_version"},Ap={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"},mp={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"},Ye="hdb_internal:",gp={CREATE_SCHEMA:Ye+"create_schema",CREATE_TABLE:Ye+"create_table",CREATE_ATTRIBUTE:Ye+"create_attribute",ADD_USER:Ye+"add_user",ALTER_USER:Ye+"alter_user",DROP_USER:Ye+"drop_user",HDB_NODES:Ye+"hdb_nodes",HDB_USERS:Ye+"hdb_users",HDB_WORKERS:Ye+"hdb_workers",CATCHUP:Ye+"catchup",SCHEMA_CATCHUP:Ye+"schema_catchup",WORKER_ROOM:Ye+"cluster_workers"},pp={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"},Np="060493.ks",Op=".license",Ip={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"},Cp={CSV:".csv",JSON:".json"},bp={AWS_ACCESS_KEY:"aws_access_key_id",AWS_SECRET:"aws_secret_access_key",AWS_BUCKET:"bucket",AWS_FILE_KEY:"key"},Lp={SELECT:"select",INSERT:"insert",UPDATE:"update",DELETE:"delete"},ar={};ar[m.CREATE_SCHEMA]=m.CREATE_SCHEMA;ar[m.CREATE_TABLE]=m.CREATE_TABLE;ar[m.CREATE_ATTRIBUTE]=m.CREATE_ATTRIBUTE;ar[m.INSERT]=m.INSERT;ar[m.UPDATE]=m.UPDATE;ar[m.UPSERT]=m.UPSERT;ar[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 yp={RUN:"run",INSTALL:"install",REGISTER:"register",STOP:"stop",RESTART:"restart",VERSION:"version",UPGRADE:"upgrade"},wp={point:"point",lineString:"lineString",multiLineString:"multiLineString",multiPoint:"multiPoint",multiPolygon:"multiPolygon",polygon:"polygon"},Al={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"},Dp=Rl.invert(Al),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"},Mp={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_tls_certificateauthority:f.OPERATIONSAPI_TLS_CERT_AUTH,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},Up={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"},Pp={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"},Bp={BIDIRECTIONAL:"BIDIRECTIONAL",OUTBOUND:"OUTBOUND",INBOUND:"INBOUND"},Hp={FILE_SYSTEM:"fs",LMDB:"lmdb"},vp={API_CALL_DEFAULT:1e4,VERSION_DEFAULT:"2.2.0"},Gp={DEVELOPMENT:8192,DEFAULT:512},qp={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"},Fp={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"},Vp={ENOENT:"ENOENT",EACCES:"EACCES"},ml={CREATED_TIME:"__createdtime__",UPDATED_TIME:"__updatedtime__"},xp="__clustering__",kp=Object.values(ml),$p=15984864e5,gl={LESS:"<",LESS_OR_EQ:"<=",GREATER:">",GREATER_OR_EQ:">=",BETWEEN:"..."},Yp=Rl.invert(gl),Kp={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"},Wp=111,Qp=`\r
3
3
  `,jp={READ:"read",INSERT:"insert",UPDATE:"update",DELETE:"delete"},Jp=["*","%"],Zp="unauthorized_access",Xp="func_val",zp={HASH_VALUE:"hash_value",TIMESTAMP:"timestamp",USERNAME:"username"},eN={JWT_PRIVATE_KEY_NAME:".jwtPrivate.key",JWT_PUBLIC_KEY_NAME:".jwtPublic.key",JWT_PASSPHRASE_NAME:".jwtPass"},tN="hdb_ipc_server",rN="hdb_ipc_client_",sN={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"},nN={HDB_CORE:"hdb_core",CUSTOM_FUNCTIONS:"custom_functions"},iN={STOPPED:"stopped",ONLINE:"online"},oN="3.x.x";pl.exports={LOCAL_HARPERDB_OPERATIONS:x,HDB_SUPPORT_ADDRESS:Sl,HDB_SUPPORT_URL:fl,HDB_PRICING_URL:yg,SUPPORT_HELP_MSG:wg,LICENSE_HELP_MSG:hl,HDB_PROC_NAME:ll,HDB_PROC_DESCRIPTOR:s_,CLUSTERING_LEAF_PROC_DESCRIPTOR:fi,CLUSTERING_HUB_PROC_DESCRIPTOR:Ti,SYSTEM_SCHEMA_NAME:jg,HASH_FOLDER_NAME:Jg,HDB_HOME_DIR_NAME:Zg,UPDATE_FILE_NAME:tp,LICENSE_KEY_DIR_NAME:zg,BOOT_PROPS_FILE_NAME:ep,JOB_TYPE_ENUM:Up,JOB_STATUS_ENUM:Ip,SYSTEM_TABLE_NAMES:Ap,SYSTEM_TABLE_HASH_ATTRIBUTES:mp,OPERATIONS_ENUM:m,VALID_S3_FILE_TYPES:Cp,S3_BUCKET_AUTH_KEYS:bp,VALID_SQL_OPS_ENUM:Lp,GEO_CONVERSION_ENUM:wp,HDB_SETTINGS_NAMES:Al,HDB_SETTINGS_NAMES_REVERSE_LOOKUP:Dp,SERVICE_ACTIONS_ENUM:yp,CLUSTER_MESSAGE_TYPE_ENUM:Pp,CLUSTER_CONNECTION_DIRECTION_ENUM:Bp,CLUSTER_EVENTS_DEFS_ENUM:qp,PERIOD_REGEX:vg,DOUBLE_PERIOD_REGEX:Gg,UNICODE_PERIOD:qg,FORWARD_SLASH_REGEX:Fg,UNICODE_FORWARD_SLASH:Vg,ESCAPED_FORWARD_SLASH_REGEX:xg,ESCAPED_PERIOD_REGEX:kg,ESCAPED_DOUBLE_PERIOD_REGEX:$g,REG_KEY_FILE_NAME:Np,RESTART_TIMEOUT_MS:np,HDB_FILE_PERMISSIONS:ip,SCHEMA_DIR_NAME:_p,TRANSACTIONS_DIR_NAME:cp,LIMIT_COUNT_NAME:up,ID_ATTRIBUTE_STRING:lp,INSERT_MODULE_ENUM:hp,UPGRADE_JSON_FIELD_NAMES_ENUM:Rp,RESTART_CODE:rp,RESTART_CODE_NUM:sp,CLUSTER_OPERATIONS:ar,SYSTEM_DEFAULT_ATTRIBUTE_NAMES:pp,HDB_INTERNAL_SC_CHANNEL_PREFIX:Ye,INTERNAL_SC_CHANNELS:gp,CLUSTERING_MESSAGE_TYPES:Kp,HDB_FILE_SUFFIX:Xg,BLOB_FOLDER_NAME:op,HDB_TRASH_DIR:ap,ORIGINATOR_SET_VALUE:Wp,LICENSE_VALUES:vp,RAM_ALLOCATION_ENUM:Gp,STORAGE_TYPES_ENUM:Hp,TIME_STAMP_NAMES_ENUM:ml,TIME_STAMP_NAMES:kp,PERMS_UPDATE_RELEASE_TIMESTAMP:$p,SEARCH_NOT_FOUND_MESSAGE:Dg,SEARCH_ATTRIBUTE_NOT_FOUND:Mg,LICENSE_ROLE_DENIED_RESPONSE:Ug,LICENSE_MAX_CONNS_REACHED:Pg,BASIC_LICENSE_MAX_NON_CU_ROLES:Tl,BASIC_LICENSE_CLUSTER_CONNECTION_LIMIT_WS_ERROR_CODE:Lg,VALUE_SEARCH_COMPARATORS:gl,VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP:Yp,LICENSE_FILE_NAME:Op,WEBSOCKET_CLOSE_CODE_DESCRIPTION_LOOKUP:Fp,NEW_LINE:Qp,BASIC_LICENSE_MAX_CLUSTER_USER_ROLES:Hg,MOMENT_DAYS_TAG:Yg,API_TURNOVER_SEC:Kg,LOOPBACK:Bg,CODE_EXTENSION:on,WILDCARD_SEARCH_VALUE:Wg,NODE_ERROR_CODES:Vp,JAVASCRIPT_EXTENSION:ul,PERMS_CRUD_ENUM:jp,UNAUTHORIZED_PERMISSION_NAME:Zp,SEARCH_WILDCARDS:Jp,FUNC_VAL:Xp,READ_AUDIT_LOG_SEARCH_TYPES_ENUM:zp,JWT_ENUM:eN,CLUSTERING_FLAG:xp,RUN_LOG:dp,INSTALL_LOG:Ep,IPC_SERVER_MODULE:dl,HDB_IPC_SERVER:tN,IPC_EVENT_TYPES:sN,HDB_IPC_CLIENT_PREFIX:rN,CUSTOM_FUNCTION_PROC_NAME:El,CUSTOM_FUNCTION_PROC_DESCRIPTOR:Si,SERVICES:nN,MEM_SETTING_KEY:Qg,HDB_RESTART_SCRIPT:Rg,PROCESS_DESCRIPTORS:r_,SERVICE_SERVERS:Og,SERVICE_SERVERS_CWD:di,PROCESS_DESCRIPTORS_VALIDATE:pg,LAUNCH_SERVICE_SCRIPTS:Ig,LOG_LEVELS:gg,PROCESS_NAME_ENV_PROP:Sp,PROCESS_LOG_NAMES:mg,PM2_PROCESS_STATUSES:iN,CONFIG_PARAM_MAP:Mp,CONFIG_PARAMS:f,HDB_CONFIG_FILE:Tg,HDB_DEFAULT_CONFIG_FILE:fg,ROLE_TYPES_ENUM:Cg,BOOT_PROP_PARAMS:Tp,INSTALL_PROMPTS:fp,HDB_ROOT_DIR_NAME:hg,CLUSTERING_PROCESSES:Ng,FOREGROUND_PID_FILE:Ag,PACKAGE_ROOT:Et,PRE_4_0_0_VERSION:oN}});var vr=d((NV,Il)=>{"use strict";var Nl=require("minimist");Il.exports=aN;function aN(e=[],t=!1){if(!Array.isArray(e))return{};let r,s;t?(r=Ol(process.env),s=Ol(Nl(process.argv))):(r=process.env,s=Nl(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(aN,"assignCMDENVVariables");function Ol(e){let t,r=Object.keys(e),s=r.length,n={};for(;s--;)t=r[s],n[t.toLowerCase()]=e[t];return n}o(Ol,"objKeysToLowerCase")});var O=d((OV,Ml)=>{"use strict";var Gr=require("fs-extra"),qr=require("path"),bl=require("yaml"),Ll=require("properties-reader"),_e=h(),_N=vr(),cN=require("os"),{PACKAGE_ROOT:__}=h(),Be={notify:7,fatal:6,error:5,warn:4,info:3,debug:2,trace:1},hi=qr.join(__,"logs"),_r=process.env.pm_id===void 0,uN=qr.join(__,"config/yaml/",_e.HDB_DEFAULT_CONFIG_FILE),c_=process.env.PROCESS_NAME===void 0?_e.PROCESS_DESCRIPTORS.INSTALL:process.env.PROCESS_NAME,Es,It,xt,Pe,o_,ds;ds===void 0&&yl();Ml.exports={createLogFile:lN,notify:SN,fatal:TN,error:a_,warn:fN,info:EN,debug:dN,trace:Dl,setLogLevel:RN,log_level:Pe};function yl(){try{if(ds===void 0){let e=hN();ds=Ll(e),{level:Pe,config_log_path:o_,to_file:It,to_stream:xt}=AN(ds.get("settings_path"))}}catch(e){if(ds=void 0,e.code===_e.NODE_ERROR_CODES.ENOENT){let t=_N(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&&(It=a)}let{default_level:r,default_to_file:s,default_to_stream:n}=mN();It=It===void 0?s:It,It=Cl(It),xt=xt===void 0?n:xt,xt=Cl(xt),Pe=Pe===void 0?r:Pe,o_=hi;return}throw a_("Error initializing log settings"),a_(e),e}}o(yl,"initLogSettings");function lN(e,t){if(!_r){Dl("createLogFile should only be used if the process is not being managed by pm2");return}ds===void 0&&yl(),c_=t;let r;e===_e.PROCESS_LOG_NAMES.INSTALL?r=hi:r=o_,It&&(Es=qr.join(r,e),Gr.ensureFileSync(Es))}o(lN,"createLogFile");function Fr(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": "${c_}", "level": "${e}", "timestamp": "${r}", "message": "${s}"}
4
- `}o(Fr,"createLogRecord");function wl(e){Es===void 0&&(c_=_e.PROCESS_DESCRIPTORS.INSTALL,Gr.ensureDirSync(hi),Es=qr.join(hi,_e.PROCESS_LOG_NAMES.INSTALL),Gr.ensureFileSync(Es)),Gr.appendFileSync(Es,e)}o(wl,"writeToLogFile");function Ri(e){It&&wl(e),xt&&process.stdout.write(e)}o(Ri,"nonPm2LogStdOut");function u_(e){It&&wl(e),xt&&process.stderr.write(e)}o(u_,"nonPm2LogStdErr");function EN(...e){if(Be[Pe]<=Be.info){let t=Fr("info",e);if(_r){Ri(t);return}process.stdout.write(t)}}o(EN,"info");function Dl(...e){if(Be[Pe]<=Be.trace){let t=Fr("trace",e);if(_r){Ri(t);return}process.stdout.write(t)}}o(Dl,"trace");function a_(...e){if(Be[Pe]<=Be.error){let t=Fr("error",e);if(_r){u_(t);return}process.stderr.write(t)}}o(a_,"error");function dN(...e){if(Be[Pe]<=Be.debug){let t=Fr("debug",e);if(_r){Ri(t);return}process.stdout.write(t)}}o(dN,"debug");function SN(...e){if(Be[Pe]<=Be.notify){let t=Fr("notify",e);if(_r){Ri(t);return}process.stdout.write(t)}}o(SN,"notify");function TN(...e){if(Be[Pe]<=Be.fatal){let t=Fr("fatal",e);if(_r){u_(t);return}process.stderr.write(t)}}o(TN,"fatal");function fN(...e){if(Be[Pe]<=Be.warn){let t=Fr("warn",e);if(_r){u_(t);return}process.stderr.write(t)}}o(fN,"warn");function hN(){let e;try{e=cN.homedir()}catch{e=process.env.HOME}e||(e="~/");let t=qr.join(e,_e.HDB_HOME_DIR_NAME,_e.BOOT_PROPS_FILE_NAME);return Gr.existsSync(t)||(t=qr.join(__,"utility/hdb_boot_properties.file")),t}o(hN,"getPropsFilePath");function RN(e){Pe=e}o(RN,"setLogLevel");function Cl(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}o(Cl,"autoCastBoolean");function AN(e){try{if(e.includes("config/settings.js")){let a=Ll(e);return{level:a.get(_e.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY),config_log_path:qr.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=bl.parseDocument(Gr.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(AN,"getLogConfig");function mN(){try{let e=bl.parseDocument(Gr.readFileSync(uN,"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(mN,"getDefaultConfig")});var an=d((IV,gN)=>{gN.exports={name:"harperdb",version:"4.0.5",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.6",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.8.2",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 Vr=d((LV,Ul)=>{"use strict";var CV=require("fs-extra"),bV=O();Ul.exports={version:pN,printVersion:ON,nodeVersion:NN};var cr=an();function pN(){if(cr)return cr.version}o(pN,"version");function NN(){if(cr&&cr.engines&&cr.engines["preferred-node"])return cr.engines["preferred-node"]}o(NN,"nodeVersion");function ON(){cr&&console.log(`HarperDB Version ${cr.version}`)}o(ON,"printVersion")});var vl=d((yV,Hl)=>{"use strict";var Pl=require("semver/functions/major"),IN=require("semver/functions/satisfies"),Bl=an(),_n=process.versions&&process.versions.node?process.versions.node:void 0;Hl.exports=CN;function CN(){let e=Bl.engines.node,t=Bl.engines["preferred-node"];if(_n){if(e&&!IN(_n,e))return{error:`This version of HarperDB supports Node.js versions: ${e}, the currently installed Node.js version is: ${_n}. Please install a version of Node.js that is withing the defined range.`};if(t&&Pl(_n)!==Pl(t))return{warn:`This version of HarperDB is tested against Node.js version ${t}, the currently installed Node.js version is: ${_n}. Some issues may occur with untested versions of Node.js.`}}}o(CN,"checkNodeVersion")});var l_=d((wV,Gl)=>{"use strict";var bN=require("util"),LN=require("path"),yN=require("child_process"),wN=bN.promisify(yN.execFile),DN=1e3*1e3*10;Gl.exports={findPs:MN};async function MN(e){let t={};try{await Promise.all(["comm","args","ppid","uid","%cpu","%mem"].map(async r=>{let{stdout:s}=await wN("ps",["wwxo",`pid,${r}`],{maxBuffer:DN});for(let n of s.trim().split(`
4
+ `}o(Fr,"createLogRecord");function wl(e){Es===void 0&&(c_=_e.PROCESS_DESCRIPTORS.INSTALL,Gr.ensureDirSync(hi),Es=qr.join(hi,_e.PROCESS_LOG_NAMES.INSTALL),Gr.ensureFileSync(Es)),Gr.appendFileSync(Es,e)}o(wl,"writeToLogFile");function Ri(e){It&&wl(e),xt&&process.stdout.write(e)}o(Ri,"nonPm2LogStdOut");function u_(e){It&&wl(e),xt&&process.stderr.write(e)}o(u_,"nonPm2LogStdErr");function EN(...e){if(Be[Pe]<=Be.info){let t=Fr("info",e);if(_r){Ri(t);return}process.stdout.write(t)}}o(EN,"info");function Dl(...e){if(Be[Pe]<=Be.trace){let t=Fr("trace",e);if(_r){Ri(t);return}process.stdout.write(t)}}o(Dl,"trace");function a_(...e){if(Be[Pe]<=Be.error){let t=Fr("error",e);if(_r){u_(t);return}process.stderr.write(t)}}o(a_,"error");function dN(...e){if(Be[Pe]<=Be.debug){let t=Fr("debug",e);if(_r){Ri(t);return}process.stdout.write(t)}}o(dN,"debug");function SN(...e){if(Be[Pe]<=Be.notify){let t=Fr("notify",e);if(_r){Ri(t);return}process.stdout.write(t)}}o(SN,"notify");function TN(...e){if(Be[Pe]<=Be.fatal){let t=Fr("fatal",e);if(_r){u_(t);return}process.stderr.write(t)}}o(TN,"fatal");function fN(...e){if(Be[Pe]<=Be.warn){let t=Fr("warn",e);if(_r){u_(t);return}process.stderr.write(t)}}o(fN,"warn");function hN(){let e;try{e=cN.homedir()}catch{e=process.env.HOME}e||(e="~/");let t=qr.join(e,_e.HDB_HOME_DIR_NAME,_e.BOOT_PROPS_FILE_NAME);return Gr.existsSync(t)||(t=qr.join(__,"utility/hdb_boot_properties.file")),t}o(hN,"getPropsFilePath");function RN(e){Pe=e}o(RN,"setLogLevel");function Cl(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}o(Cl,"autoCastBoolean");function AN(e){try{if(e.includes("config/settings.js")){let a=Ll(e);return{level:a.get(_e.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY),config_log_path:qr.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=bl.parseDocument(Gr.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(AN,"getLogConfig");function mN(){try{let e=bl.parseDocument(Gr.readFileSync(uN,"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(mN,"getDefaultConfig")});var an=d((IV,gN)=>{gN.exports={name:"harperdb",version:"4.0.6",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.6",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.8.5",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"},lmdb:{msgpackr:"1.8.5"},"newman-reporter-html":{newman:"5.2.3"}}}});var Vr=d((LV,Ul)=>{"use strict";var CV=require("fs-extra"),bV=O();Ul.exports={version:pN,printVersion:ON,nodeVersion:NN};var cr=an();function pN(){if(cr)return cr.version}o(pN,"version");function NN(){if(cr&&cr.engines&&cr.engines["preferred-node"])return cr.engines["preferred-node"]}o(NN,"nodeVersion");function ON(){cr&&console.log(`HarperDB Version ${cr.version}`)}o(ON,"printVersion")});var vl=d((yV,Hl)=>{"use strict";var Pl=require("semver/functions/major"),IN=require("semver/functions/satisfies"),Bl=an(),_n=process.versions&&process.versions.node?process.versions.node:void 0;Hl.exports=CN;function CN(){let e=Bl.engines.node,t=Bl.engines["preferred-node"];if(_n){if(e&&!IN(_n,e))return{error:`This version of HarperDB supports Node.js versions: ${e}, the currently installed Node.js version is: ${_n}. Please install a version of Node.js that is withing the defined range.`};if(t&&Pl(_n)!==Pl(t))return{warn:`This version of HarperDB is tested against Node.js version ${t}, the currently installed Node.js version is: ${_n}. Some issues may occur with untested versions of Node.js.`}}}o(CN,"checkNodeVersion")});var l_=d((wV,Gl)=>{"use strict";var bN=require("util"),LN=require("path"),yN=require("child_process"),wN=bN.promisify(yN.execFile),DN=1e3*1e3*10;Gl.exports={findPs:MN};async function MN(e){let t={};try{await Promise.all(["comm","args","ppid","uid","%cpu","%mem"].map(async r=>{let{stdout:s}=await wN("ps",["wwxo",`pid,${r}`],{maxBuffer:DN});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:LN.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(MN,"findPs")});var he=d((DV,Fl)=>{"use strict";var UN="__dbis__",PN="__environment_name__",BN="__dbi_defintion__",HN={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"},vN=["__createdtime__","__updatedtime__"],GN="\uFFFF",ql={TIMESTAMP:"timestamp",HASH_VALUE:"hash_value",USER_NAME:"user_name"},qN=Object.values(ql);Fl.exports={INTERNAL_DBIS_NAME:UN,DBI_DEFINITION_NAME:BN,SEARCH_TYPES:HN,TIMESTAMP_NAMES:vN,MAX_SEARCH_KEY_LENGTH:256,ENVIRONMENT_NAME_KEY:PN,TRANSACTIONS_DBI_NAMES_ENUM:ql,TRANSACTIONS_DBIS:qN,OVERFLOW_MARKER:GN}});var et=d((MV,jl)=>{"use strict";var Vl=h(),xl=he(),kl={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},$l=o(e=>`${e} Check logs and try again.`,"CHECK_LOGS_WRAPPER"),Yl={500:$l("There was an error processing your request."),400:"Invalid request"},FN=Yl[kl.INTERNAL_SERVER_ERROR],VN={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.`},xN={CONFIG_VALIDATION:e=>`HarperDB config file validation error: ${e}`},kN={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"},$N={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 ${xl.INTERNAL_DBIS_NAME}`,CANNOT_DROP_INTERNAL_DBIS_NAME:`cannot drop a dbi named ${xl.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"},YN={ATTR_NAME_LENGTH_ERR:e=>`transaction aborted due to attribute name ${e} being too long. Attribute names cannot be longer than ${Vl.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 ${Vl.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"},Kl={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"},KN={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."},WN={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`},QN={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"},jN={OUTER_JOIN_TRANSLATION_ERROR:"There was an error translating the final SQL outer join data."},JN={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`},Wl={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.`},Ql={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}`},ZN={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."},XN={CLUSTERING_NOT_ENABLED:"Clustering must be enabled to perform this operation."},zN={...Kl,...kN,...VN,...KN,...WN,...QN,...jN,...JN,...YN,...Wl,...Ql,...ZN,...XN,...xN};jl.exports={CHECK_LOGS_WRAPPER:$l,HDB_ERROR_MSGS:zN,DEFAULT_ERROR_MSGS:Yl,DEFAULT_ERROR_RESP:FN,HTTP_STATUS_CODES:kl,LMDB_ERRORS_ENUM:$N,AUTHENTICATION_ERROR_MSGS:Kl,VALIDATION_ERROR_MSGS:Wl,IPC_ERRORS:Ql}});var J=d((UV,Xl)=>{"use strict";var Ss=et(),eO=O(),tO=h(),cn=class extends Error{constructor(t,r,s,n,i){super(),Error.captureStackTrace(this,Jl),this.http_resp_code=s||Ss.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR,this.http_resp_msg=r||(Ss.DEFAULT_ERROR_MSGS[s]?Ss.DEFAULT_ERROR_MSGS[s]:Ss.DEFAULT_ERROR_MSGS[Ss.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&&eO[n](i)}};o(cn,"HdbError");function Jl(e,t,r,s=tO.LOG_LEVELS.ERROR,n=null,i=!1){if(Zl(e))return e;let a=new cn(e,t,r,s,n);return i&&delete a.stack,a}o(Jl,"handleHDBError");function Zl(e){return e.__proto__.constructor.name===cn.name}o(Zl,"isHDBError");Xl.exports={isHDBError:Zl,handleHDBError:Jl,hdb_errors:Ss}});var I=d((BV,dE)=>{"use strict";var xr=require("path"),rO=require("fs-extra"),Se=O(),zl=require("fs-extra"),sO=require("truncate-utf8-bytes"),un=require("os"),nO=require("net"),iO=require("recursive-iterator"),Re=h(),nE=l_(),eE=require("papaparse"),Ai=require("moment"),{inspect:oO}=require("util"),tE=require("is-number"),PV=require("lodash"),{hdb_errors:mi}=J(),iE=require("util").promisify(setTimeout),aO=100,_O=5,cO="",uO=4,rE=255,sE={true:!0,false:!1,undefined:null,null:null,NaN:NaN};dE.exports={isEmpty:Ke,isEmptyOrZeroLength:Ct,arrayHasEmptyValues:dO,arrayHasEmptyOrZeroLengthValues:SO,buildFolderPath:TO,isBoolean:oE,errorizeMessage:lO,stripFileExtension:hO,autoCast:RO,autoCastJSONDeep:E_,removeDir:mO,compareVersions:gO,isCompatibleDataVersion:pO,escapeRawValue:_E,unescapeValue:NO,stringifyProps:OO,valueConverter:IO,timeoutPromise:bO,isClusterOperation:yO,getClusterUser:MO,sendTransactionToSocketCluster:wO,checkGlobalSchemaTable:DO,getHomeDir:cE,getPropsFilePath:CO,promisifyPapaParse:UO,removeBOM:uE,createEventPromise:PO,checkProcessRunning:BO,checkSchemaTableExist:HO,checkSchemaExists:lE,checkTableExists:EE,getStartOfTomorrowInSeconds:vO,getLimitKey:GO,isObject:fO,isNotEmptyAndHasValue:EO,autoCasterIsNumberCheck:aE,backtickASTSchemaItems:qO,isPortTaken:LO,stopProcess:FO,createForkArgs:VO,autoCastBoolean:xO,async_set_timeout:iE,getTableHashAttribute:kO,doesSchemaExist:$O,doesTableExist:YO,stringifyObj:KO,ms_to_time:WO,changeExtension:QO,PACKAGE_ROOT:Re.PACKAGE_ROOT};function lO(e){return e instanceof Error?e:new Error(e)}o(lO,"errorizeMessage");function Ke(e){return e==null}o(Ke,"isEmpty");function EO(e){return!Ke(e)&&(e||e===0||e===""||oE(e))}o(EO,"isNotEmptyAndHasValue");function Ct(e){return Ke(e)||e.length===0||e.size===0}o(Ct,"isEmptyOrZeroLength");function dO(e){if(Ke(e))return!0;for(let t=0;t<e.length;t++)if(Ke(e[t]))return!0;return!1}o(dO,"arrayHasEmptyValues");function SO(e){if(Ct(e))return!0;for(let t=0;t<e.length;t++)if(Ct(e[t]))return!0;return!1}o(SO,"arrayHasEmptyOrZeroLengthValues");function TO(...e){try{return e.join(xr.sep)}catch{console.error(e)}}o(TO,"buildFolderPath");function oE(e){return Ke(e)?!1:e===!0||e===!1}o(oE,"isBoolean");function fO(e){return Ke(e)?!1:typeof e=="object"}o(fO,"isObject");function hO(e){return Ct(e)?cO:e.slice(0,-uO)}o(hO,"stripFileExtension");function RO(e){return Ke(e)||e===""||typeof e!="string"?e:sE[e]!==void 0?sE[e]:aE(e)===!0?Number(e):e}o(RO,"autoCast");function AO(e){if(typeof e=="string"&&(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")))try{return JSON.parse(e)}catch{}return e}o(AO,"autoCastJSON");function E_(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=E_(s);n!==s&&(e[t]=n)}else for(let t in e){let r=e[t],s=E_(r);s!==r&&(e[t]=s)}return e}else return AO(e)}o(E_,"autoCastJSONDeep");function aE(e){if(e.startsWith("0.")&&tE(e))return!0;let t=e.toUpperCase().includes("E");return!!((e!=="0"&&e.startsWith("0"))===!1&&t===!1&&tE(e))}o(aE,"autoCasterIsNumberCheck");async function mO(e){if(Ct(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(mO,"removeDir");function gO(e,t){if(Ct(e)){Se.info("Invalid current version sent as parameter.");return}if(Ct(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(gO,"compareVersions");function pO(e,t,r=!1){let s=e.toString().split("."),n=t.toString().split(".");return s[0]===n[0]&&(!r||s[1]===n[1])}o(pO,"isCompatibleDataVersion");function _E(e){if(Ke(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(_E,"escapeRawValue");function NO(e){if(Ke(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(NO,"unescapeValue");function OO(e,t){if(Ke(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+un.EOL}!Ct(s)&&s[0]===";"?r+=" "+s+n+un.EOL:Ct(s)||(r+=s+"="+n+un.EOL)}catch{Se.error(`Found bad property during upgrade with key ${s} and value: ${n}`)}}),r}o(OO,"stringifyProps");function IO(e){let t;try{t=typeof e=="object"?JSON.stringify(e):e}catch(n){Se.error(n),t=e}let r=String(_E(t)),s=Buffer.byteLength(r)>rE?sO(r,rE)+"/blob":r;return{value:t,value_stripped:r,value_path:s}}o(IO,"valueConverter");function cE(){let e;try{e=un.homedir()}catch{e=process.env.HOME}return e||(e="~/"),e}o(cE,"getHomeDir");function CO(){let e=xr.join(cE(),Re.HDB_HOME_DIR_NAME,Re.BOOT_PROPS_FILE_NAME);return rO.existsSync(e)||(e=xr.join(__dirname,"../","hdb_boot_properties.file")),e}o(CO,"getPropsFilePath");function bO(e,t){let r,s;return s=new Promise(function(n){r=setTimeout(function(){n(t)},e)}),{promise:s,cancel:function(){clearTimeout(r)}}}o(bO,"timeoutPromise");async function LO(e){if(!e)throw new Error("Invalid port passed as parameter");return new Promise((t,r)=>{let s=nO.createServer().once("error",n=>{n.code==="EADDRINUSE"?t(!0):r(n)}).once("listening",()=>s.once("close",()=>t(!1)).close()).listen(e)})}o(LO,"isPortTaken");function yO(e){try{return Re.CLUSTER_OPERATIONS[e.toLowerCase()]!==void 0}catch(t){Se.error(`Error checking operation against cluster ops ${t}`)}return!1}o(yO,"isClusterOperation");function wO(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(wO,"sendTransactionToSocketCluster");function DO(e,t){if(!global.hdb_schema[e])return mi.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e);if(!global.hdb_schema[e]||!global.hdb_schema[e][t])return mi.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}o(DO,"checkGlobalSchemaTable");function MO(e,t){if(Ke(t)){Se.warn("No CLUSTERING_USER defined, clustering disabled");return}if(Ke(e)||Ct(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(MO,"getClusterUser");function UO(){eE.parsePromise=function(e,t){return new Promise(function(r,s){eE.parse(e,{header:!0,transformHeader:uE,chunk:t.bind(null,s),skipEmptyLines:!0,dynamicTyping:!0,error:s,complete:r})})}}o(UO,"promisifyPapaParse");function uE(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.charCodeAt(0)===65279?e.slice(1):e}o(uE,"removeBOM");function PO(e,t,r){return new Promise(s=>{t.once(e,n=>{let i=r;Se.info(`Got cluster status event response: ${oO(n)}`);try{i.cancel()}catch{Se.error("Error trying to cancel timeout.")}s(n)})})}o(PO,"createEventPromise");async function BO(e){let t=!0,r=0;do await iE(aO*r++),(await nE.findPs(e)).length>0&&(t=!1);while(t&&r<_O);if(t)throw new Error(`process ${e} was not started`)}o(BO,"checkProcessRunning");function HO(e,t){let r=lE(e);if(r)return r;let s=EE(e,t);if(s)return s}o(HO,"checkSchemaTableExist");function lE(e){if(!global.hdb_schema[e])return mi.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}o(lE,"checkSchemaExists");function EE(e,t){if(!global.hdb_schema[e][t])return mi.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}o(EE,"checkTableExists");function vO(){let e=Ai().utc().add(1,Re.MOMENT_DAYS_TAG).startOf(Re.MOMENT_DAYS_TAG).unix(),t=Ai().utc().unix();return e-t}o(vO,"getStartOfTomorrowInSeconds");function GO(){return Ai().utc().format("DD-MM-YYYY")}o(GO,"getLimitKey");function qO(e){try{let t=new iO(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(qO,"backtickASTSchemaItems");async function FO(e){let t=un.userInfo();(await nE.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(FO,"stopProcess");function VO(e){return[e]}o(VO,"createForkArgs");function xO(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}o(xO,"autoCastBoolean");function kO(e,t){return global.hdb_schema?.[e]?.[t]?.hash_attribute}o(kO,"getTableHashAttribute");function $O(e){return global?.hdb_schema?.[e]!==void 0}o($O,"doesSchemaExist");function YO(e,t){return global?.hdb_schema?.[e]?.[t]!==void 0}o(YO,"doesTableExist");function KO(e){try{return JSON.stringify(e)}catch{return e}}o(KO,"stringifyObj");function WO(e){let t=Ai.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(WO,"ms_to_time");function QO(e,t){let r=xr.basename(e,xr.extname(e));return xr.join(xr.dirname(e),r+t)}o(QO,"changeExtension")});var tt=d((HV,SE)=>{"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("', '")}'`};SE.exports={validateObject:jO,validateObjectAsync:JO,validateBySchema:ZO};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 JO(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(JO,"validateObjectAsync");function ZO(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}o(ZO,"validateBySchema")});var S_=d((vV,fE)=>{"use strict";var XO=require("fs-extra"),H=require("joi"),zO=require("os"),{boolean:Ae,string:kt,number:bt,array:d_}=H.types(),TE=require("path"),eI=O(),gi=I(),tI=tt(),rI="log",sI="custom_functions",nI="Invalid logging.rotation.maxSize unit. Available units are G, M or K",iI="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",oI="rootPath config parameter is undefined",aI="clustering.enabled config parameter is undefined",ur=bt.min(0).required(),pi=d_.items({host:kt.required(),port:ur}).empty(null),ln;fE.exports={configValidator:_I,routesValidator:SI,route_constraints:pi};function _I(e){if(ln=e.rootPath,gi.isEmpty(ln))throw oI;let t=Ae.required(),r=H.valid("production","development").required(),s=bt.min(1).max(1e3).empty(null).default(EI),n=kt.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(dI),i=H.custom(uI).messages({"any.custom":"{:#label} {:#error}"}),a=kt.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null),_=e.clustering?.enabled;if(gi.isEmpty(_))throw aI;let c;return _===!0?c=H.object({enabled:t,hubServer:H.object({cluster:H.object({name:H.required().empty(null),network:H.object({port:ur,routes:pi}).required()}).required(),leafNodes:H.object({network:H.object({port:ur}).required()}).required(),network:H.object({port:ur}).required()}).required(),leafServer:H.object({network:H.object({port:ur,routes:pi}).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:bt.min(1).required(),https:Ae.required(),keepAliveTimeout:bt.min(1).required(),port:ur,timeout:bt.min(1).required()}),nodeEnv:r,root:n,tls:H.object({certificate:i,certificateAuthority:i,privateKey:i})}).required(),ipc:H.object({network:H.object({port:ur})}).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:kt.required(),maxSize:kt.custom(lI).required(),retain:bt.min(0).required(),rotate:Ae.required(),rotateInterval:kt.required(),rotateModule:Ae.required(),timezone:kt.required(),workerInterval:bt.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:bt.min(1).required(),https:Ae.required(),keepAliveTimeout:bt.min(1).required(),port:ur,timeout:bt.min(1).required()}).required(),nodeEnv:r,tls:H.object({certificate:i,certificateAuthority:i,privateKey:i})}).required(),rootPath:kt.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(_I,"configValidator");function cI(e){return XO.existsSync(e)?null:`Specified path ${e} does not exist.`}o(cI,"doesPathExist");function uI(e,t){if(e===null)return;H.assert(e,kt.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+\.pem+$/).messages({"string.pattern.base":"must be a valid directory path and specify a .pem file"}));let r=cI(e);return r?t.message(r):e}o(uI,"validatePemFile");function lI(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(nI);let s=e.slice(0,-1);if(isNaN(parseInt(s)))return t.message(iI)}o(lI,"validateRotationMaxSize");function EI(e,t){let r=t.state.path.join("."),s=zO.cpus().length,n=s-1;return n<=2&&(n=2),eI.info(`Detected ${s} cores on this machine, defaulting ${r} to ${n}`),n}o(EI,"setDefaultThreads");function dI(e,t){if(!gi.isEmpty(t.original))return t.original;let r=t.state.path.join(".");if(gi.isEmpty(ln))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"customFunctions.root":return TE.join(ln,sI);case"logging.root":return TE.join(ln,rI);default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}o(dI,"setDefaultRoot");function SI(e){let t=H.object({routes:pi});return tI.validateBySchema({routes:e},t)}o(SI,"routesValidator")});var We=d((GV,NE)=>{"use strict";var X=h(),rt=I(),Le=O(),{configValidator:TI,routesValidator:hE}=S_(),dt=require("fs-extra"),fI=require("yaml"),Ts=require("path"),hI=require("is-number"),Ii=require("properties-reader"),RI=require("lodash"),{handleHDBError:AI}=J(),{HTTP_STATUS_CODES:mI,HDB_ERROR_MSGS:Ni}=et(),{PACKAGE_ROOT:gI}=h(),pI="Unable to get config value because config is uninitialized",NI="Config successfully initialized",OI="Error backing up config file",II="Empty parameter sent to getConfigValue",RE=Ts.join(gI,"config","yaml",X.HDB_DEFAULT_CONFIG_FILE),CI="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",Oi,ve;NE.exports={createConfigFile:bI,getDefaultConfig:LI,getConfigValue:AE,initConfig:mE,flattenConfig:kr,updateConfigValue:gE,updateConfigObject:yI,getConfiguration:wI,setConfiguration:DI,readConfigFile:h_,getClusteringRoutes:MI,initOldConfig:pE,getConfigFromFile:UI};function bI(e){let t=fs(RE);Oi=kr(t.toJSON());for(let i in e){let a=X.CONFIG_PARAM_MAP[i.toLowerCase()];if(a!==void 0){let _=a.split("_"),c=T_(a,e[i]);try{t.setIn([..._],c)}catch(u){Le.error(u)}}}f_(t);let r=t.toJSON();ve=kr(r);let s=t.getIn(["rootPath"]),n=Ts.join(s,X.HDB_CONFIG_FILE);dt.createFileSync(n),dt.writeFileSync(n,String(t)),Le.trace(`Config file written to ${n}`)}o(bI,"createConfigFile");function LI(e){if(Oi===void 0){let r=fs(RE);Oi=kr(r.toJSON())}let t=X.CONFIG_PARAM_MAP[e.toLowerCase()];if(t!==void 0)return Oi[t.toLowerCase()]}o(LI,"getDefaultConfig");function AE(e){if(rt.isEmpty(e)){Le.error(II);return}if(ve===void 0){Le.trace(pI);return}let t=X.CONFIG_PARAM_MAP[e.toLowerCase()];if(t!==void 0)return ve[t.toLowerCase()]}o(AE,"getConfigValue");function mE(e=!1){if(ve===void 0||e){let t=rt.getPropsFilePath();try{dt.accessSync(t,dt.constants.F_OK|dt.constants.R_OK)}catch(a){throw Le.error(a),new Error(`HarperDB properties file at path ${t} does not exist`)}let s=Ii(t).get(X.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY),n;if(s.includes("config/settings.js"))try{pE(s);return}catch(a){if(a.code!==X.NODE_ERROR_CODES.ENOENT)throw a}try{n=fs(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();ve=kr(i),Le.trace(NI)}}o(mE,"initConfig");function f_(e){let t=e.toJSON(),r=TI(t);if(r.error)throw Ni.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 yI(e,t){ve===void 0&&(ve={});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}ve[r.toLowerCase()]=t}o(yI,"updateConfigObject");function gE(e,t,r=void 0,s=!1,n=!1){ve===void 0&&mE();let i=AE(X.CONFIG_PARAM_MAP.hdb_root),a=Ts.join(i,X.HDB_CONFIG_FILE),_=fs(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("_"),T=T_(l,t);_.setIn([...E],T)}else for(let l in r){let E=X.CONFIG_PARAM_MAP[l.toLowerCase()];if(E!==void 0){let T=E.split("_"),S=T_(E,r[l]);try{_.setIn([...T],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`);dt.copySync(a,l),Le.trace(`Config file: ${a} backed up to: ${l}`)}catch(l){Le.error(OI),Le.error(l)}dt.writeFileSync(u,String(_)),n&&(ve=kr(_.toJSON())),Le.trace(`Config parameter: ${e} updated with value: ${t}`)}o(gE,"updateConfigValue");function kr(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=kr(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(kr,"flattenConfig");function T_(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(hI(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(T_,"castConfigValue");function wI(){let e=rt.getPropsFilePath(),r=Ii(e).get(X.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY);return fs(r).toJSON()}o(wI,"getConfiguration");async function DI(e){let{operation:t,hdb_user:r,hdb_auth_header:s,...n}=e;try{return gE(void 0,void 0,n,!0),CI}catch(i){throw typeof i=="string"||i instanceof String?AI(i,i,mI.BAD_REQUEST,void 0,void 0,!0):i}}o(DI,"setConfiguration");function h_(){let e=rt.getPropsFilePath();try{dt.accessSync(e,dt.constants.F_OK|dt.constants.R_OK)}catch(n){throw Le.error(n),new Error(`HarperDB properties file at path ${e} does not exist`)}let r=Ii(e).get(X.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY);return fs(r).toJSON()}o(h_,"readConfigFile");function fs(e){return fI.parseDocument(dt.readFileSync(e,"utf8"),{simpleKeys:!0})}o(fs,"parseYamlDoc");function MI(){let e=h_(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=rt.isEmptyOrZeroLength(t)?[]:t;let r=hE(t);if(r)throw Ni.CONFIG_VALIDATION(r.message);let s=e?.clustering?.leafServer?.network?.routes;s=rt.isEmptyOrZeroLength(s)?[]:s;let n=hE(s);if(n)throw Ni.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 Ni.CONFIG_VALIDATION(a)}}return{hub_routes:t,leaf_routes:s}}o(MI,"getClusteringRoutes");function pE(e){let t=Ii(e);ve={};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?ve[n]=Ts.dirname(s):ve[n]=s}return ve}o(pE,"initOldConfig");function UI(e){let t=h_();return RI.get(t,e.replaceAll("_","."))}o(UI,"getConfigFromFile")});var Y=d((qV,IE)=>{"use strict";var R_=require("fs-extra"),Lt=require("path"),PI=require("os"),BI=require("properties-reader"),En=O(),hs=I(),w=h(),Ci=We(),HI="Error initializing environment manager",bi="BOOT_PROPS_FILE_PATH",OE=!1,vI={[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},$t={};IE.exports={BOOT_PROPS_FILE_PATH:bi,getHdbBasePath:GI,setHdbBasePath:qI,get:FI,initSync:xI,setProperty:q,initTestEnvironment:kI};function GI(){return $t[w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]}o(GI,"getHdbBasePath");function qI(e){$t[w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=e}o(qI,"setHdbBasePath");function FI(e){let t=Ci.getConfigValue(e);return t===void 0?$t[e]:t}o(FI,"get");function q(e,t){vI[e]&&($t[e]=t),Ci.updateConfigObject(e,t)}o(q,"setProperty");function VI(){let e;try{e=hs.getPropsFilePath(),R_.accessSync(e,R_.constants.F_OK|R_.constants.R_OK),OE=!0;let t=BI(e);return $t[w.HDB_SETTINGS_NAMES.INSTALL_USER]=t.get(w.HDB_SETTINGS_NAMES.INSTALL_USER),$t[w.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]=t.get(w.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY),$t[bi]=e,!0}catch{return En.trace(`Environment manager found no properties file at ${e}`),!1}}o(VI,"doesPropFileExist");function xI(e=!1){try{(OE||VI())&&(Ci.initConfig(e),$t[w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=Ci.getConfigValue(w.HDB_SETTINGS_NAMES.HDB_ROOT_KEY))}catch(t){En.error(HI),En.error(t),console.error(t),process.exit(1)}}o(xI,"initSync");function kI(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=Lt.join(__dirname,"../../","unitTests");$t[bi]=Lt.join(c,"hdb_boot_properties.file"),q(w.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY,Lt.join(c,"settings.test")),q(w.HDB_SETTINGS_NAMES.INSTALL_USER,PI.userInfo().username),q(w.HDB_SETTINGS_NAMES.PRIVATE_KEY_KEY,Lt.join(c,"envDir","utility","keys","privateKey.pem")),q(w.HDB_SETTINGS_NAMES.CERT_KEY,Lt.join(c,"envDir","utility","keys","certificate.pem")),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_PRIVATEKEY,Lt.join(c,"envDir","utility","keys","privateKey.pem")),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_CERTIFICATE,Lt.join(c,"envDir","utility","keys","certificate.pem")),q(w.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY,"debug"),q(w.HDB_SETTINGS_NAMES.LOG_PATH_KEY,Lt.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,Lt.join(c,"envDir")),q(w.HDB_SETTINGS_NAMES.HTTP_SECURE_ENABLED_KEY,hs.isEmpty(n)?!0:n),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HTTPS,hs.isEmpty(n)?!0:n),q(w.HDB_SETTINGS_NAMES.SERVER_PORT_KEY,9925),q(w.HDB_SETTINGS_NAMES.CORS_ENABLED_KEY,hs.isEmpty(i)?!1:i),q(w.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORS,hs.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,Lt.resolve(__dirname,"../../unitTests/server/customFunctions/custom_functions")),q(w.HDB_SETTINGS_NAMES.LOCAL_STUDIO_ON,hs.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 ${bi}. Please check your boot props and settings files`;En.fatal(r),En.error(t)}}o(kI,"initTestEnvironment")});var m_=d((FV,CE)=>{"use strict";var dn=Y();dn.initSync();var Rs=require("fs-extra"),A_=require("path"),As=h(),$I=require("crypto"),YI=require("uuid").v4;CE.exports=KI;function KI(){if(dn.getHdbBasePath()!==void 0){let e=A_.join(dn.getHdbBasePath(),As.LICENSE_KEY_DIR_NAME,As.JWT_ENUM.JWT_PRIVATE_KEY_NAME),t=A_.join(dn.getHdbBasePath(),As.LICENSE_KEY_DIR_NAME,As.JWT_ENUM.JWT_PUBLIC_KEY_NAME),r=A_.join(dn.getHdbBasePath(),As.LICENSE_KEY_DIR_NAME,As.JWT_ENUM.JWT_PASSPHRASE_NAME);try{Rs.accessSync(r),Rs.accessSync(e),Rs.accessSync(t)}catch(s){if(s.code==="ENOENT"){let n=YI(),i=$I.generateKeyPairSync("rsa",{modulusLength:4096,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem",cipher:"aes-256-cbc",passphrase:n}});Rs.writeFileSync(r,n),Rs.writeFileSync(e,i.privateKey),Rs.writeFileSync(t,i.publicKey)}else throw s}}}o(KI,"checkJWTTokenExist")});var ms=d((VV,yE)=>{"use strict";var LE=I(),bE=h(),yi=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,g_=require("joi"),Li={schema_format:{pattern:yi,message:"names cannot include backticks or forward slashes"},schema_length:{maximum:250,tooLong:"cannot exceed 250 characters"}},WI=g_.alternatives(g_.string().min(1).max(Li.schema_length.maximum).pattern(yi).messages({"string.pattern.base":"{:#label} "+Li.schema_format.message}),g_.number()).required();function QI(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>Li.schema_length.maximum?`'${e}' maximum of 250 characters`:yi.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}o(QI,"checkValidTable");function jI(e,t){return LE.doesSchemaExist(e)?e:t.message(`Schema '${e}' does not exist`)}o(jI,"validateSchemaExists");function JI(e,t){let r=t.state.ancestors[0].schema;return LE.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}o(JI,"validateTableExists");function ZI(e,t){return e.toLowerCase()===bE.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid schema name, '${bE.SYSTEM_SCHEMA_NAME}' name is reserved`):e}o(ZI,"validateSchemaName");yE.exports={common_validators:Li,schema_regex:yi,hdb_schema_table:WI,validateSchemaExists:jI,validateTableExists:JI,validateSchemaName:ZI,checkValidTable:QI}});var N_=d((xV,DE)=>{var{hdb_schema_table:wE}=ms(),XI=tt(),p_=require("joi"),zI={undefined:"undefined",null:"null"},eC=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||zI[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"),tC=p_.object({schema:wE,table:wE,records:p_.array().items(p_.object().custom(eC)).required()});DE.exports=function(e){return XI.validateBySchema(e,tC)}});var O_=d((kV,ME)=>{"use strict";var wi=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(wi,"BridgeMethods");ME.exports=wi});var lr=d((KV,HE)=>{"use strict";var UE=et().LMDB_ERRORS_ENUM,$V=require("lmdb"),rC=he(),YV=require("buffer").Buffer,sC=require("microtime"),{OVERFLOW_MARKER:PE,MAX_SEARCH_KEY_LENGTH:Di}=rC,BE=["number","string","symbol","boolean","bigint"];function nC(e){if(!e)throw new Error(UE.ENV_REQUIRED);if(e.constructor.name!=="LMDBStore")throw new Error(UE.INVALID_ENVIRONMENT)}o(nC,"validateEnv");function iC(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(iC,"stringifyData");function oC(e){return e instanceof Date?e.valueOf():e}o(oC,"convertKeyValueToWrite");function aC(e){if(e==null)return;if(BE.includes(typeof e))return e.length>Di?[e.slice(0,Di)+PE]:[e];let t;if(Array.isArray(e)){t=[];for(let r=0,s=e.length;r<s;r++){let n=e[r];BE.includes(typeof n)&&(n.length>Di?t.push(n.slice(0,Di)+PE):t.push(n))}}return t}o(aC,"getIndexedValues");function _C(){let e=sC.now().toString(),t=e.length-3;return Number(e.slice(0,t)+"."+e.slice(t))}o(_C,"getMicroTime");HE.exports={validateEnv:nC,stringifyData:iC,convertKeyValueToWrite:oC,getMicroTime:_C,getIndexedValues:aC}});var GE=d((WV,vE)=>{"use strict";var Mi=class{constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};o(Mi,"DBIDefinition");vE.exports=Mi});var FE=d((QV,qE)=>{"use strict";var Ui=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(Ui,"OpenDBIObject");qE.exports=Ui});var xE=d((jV,VE)=>{"use strict";var Pi=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(Pi,"OpenEnvironmentObject");VE.exports=Pi});var $=d((ZV,ed)=>{"use strict";var I_=require("lmdb"),st=require("fs-extra"),St=require("path"),Hi=lr(),kE=O(),me=et().LMDB_ERRORS_ENUM,vi=GE(),C_=FE(),$E=xE(),Er=he(),JV=h(),Sn=Y();Sn.initSync();var YE=Sn.get("STORAGE_WRITEASYNC")===!0||Sn.get("STORAGE_WRITEASYNC")==="true"||Sn.get("STORAGE_WRITEASYNC")==="TRUE",KE=Sn.get("STORAGE_OVERLAPPINGSYNC"),WE=1024*1024*1024,QE=1e4,jE=1e3,Tt=Er.INTERNAL_DBIS_NAME,JE=Er.DBI_DEFINITION_NAME,cC="data.mdb",uC="lock.mdb",Tn=".mdb",lC="-lock",Bi=class{constructor(t,r,s=!1){this.dbi=nt(t,r),this.key_type=this.dbi[Er.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[Er.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(Bi,"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 st.access(e)}catch(s){throw s.code==="ENOENT"?new Error(me.INVALID_BASE_PATH):s}try{let s=St.join(e,t+Tn);return await st.access(s,st.constants.R_OK|st.constants.F_OK),s}catch(s){if(s.code==="ENOENT")if(r)try{return await st.access(St.join(e,t,cC),st.constants.R_OK|st.constants.F_OK),St.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 Gi(e,t){if(Hi.validateEnv(e),t===void 0)throw new Error(me.DBI_NAME_REQUIRED)}o(Gi,"validateEnvDBIName");async function EC(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=St.join(e,t);await st.mkdirp(s?i:e);let a=new $E(s?i:i+Tn,WE,QE,jE,!1,YE,KE),_=I_.open(a);_.dbis=Object.create(null);let c=new C_(!1);_.openDB(Tt,c),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let u=w_(e,t,r);return _[Er.ENVIRONMENT_NAME_KEY]=u,global.lmdb_map[u]=_,_}throw n}}o(EC,"createEnvironment");async function dC(e,t,r,s=!0){let n=await y_(e,t);if(r===void 0)throw new Error(me.DESTINATION_PATH_REQUIRED);try{await st.access(St.dirname(r))}catch(i){throw i.code==="ENOENT"?new Error(me.INVALID_DESTINATION_PATH):i}await n.backup(r,s)}o(dC,"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=St.join(e,t+Tn),a=n!=i,_=new $E(n,WE,QE,jE,a,YE,KE),c=I_.open(_);c.dbis=Object.create(null);let u=XE(c);for(let l=0;l<u.length;l++)nt(c,u[l]);return c[Er.ENVIRONMENT_NAME_KEY]=s,global.lmdb_map[s]=c,c}o(y_,"openEnvironment");async function SC(e,t,r=!1){b_(e,t),t=t.toString();let s=St.join(e,t+Tn),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 ZE(a),delete global.lmdb_map[i]}}await st.remove(n),await st.remove(n===s?n+lC:St.join(St.dirname(n),uC))}o(SC,"deleteEnvironment");async function ZE(e){Hi.validateEnv(e);let t=e[Er.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}o(ZE,"closeEnvironment");function w_(e,t,r=!1){let n=`${St.basename(e)}.${t}`;return r===!0&&(n=`txn.${n}`),n}o(w_,"getCachedEnvironmentName");function TC(e){Hi.validateEnv(e);let t=Object.create(null),r=nt(e,Tt);for(let{key:s,value:n}of r.getRange({start:!1}))if(s!==Tt)try{t[s]=Object.assign(new vi,n)}catch{kE.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return t}o(TC,"listDBIDefinitions");function XE(e){Hi.validateEnv(e);let t=[],r=nt(e,Tt);for(let{key:s}of r.getRange({start:!1}))s!==Tt&&t.push(s);return t}o(XE,"listDBIs");function fC(e,t){let s=nt(e,Tt).getEntry(t),n=new vi;if(s!==void 0){try{n=Object.assign(n,s.value)}catch{kE.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return n}}o(fC,"getDBIDefinition");function zE(e,t,r,s=!1){if(Gi(e,t),t=t.toString(),t===Tt)throw new Error(me.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return nt(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 vi(r===!0,s);return a[JE]=_,nt(e,Tt).putSync(t,_),e.dbis[t]=a,a}throw n}}o(zE,"createDBI");function nt(e,t){if(Gi(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==Tt?r=fC(e,t):r=new vi,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(nt,"openDBI");function hC(e,t){Gi(e,t),t=t.toString();let r=nt(e,t),s=r.getStats();return r[Er.DBI_DEFINITION_NAME].is_hash_attribute&&s.entryCount>0&&s.entryCount--,s}o(hC,"statDBI");async function RC(e,t){try{let r=St.join(e,t+Tn);return(await st.stat(r)).size}catch{throw new Error(me.INVALID_ENVIRONMENT)}}o(RC,"environmentDataSize");function AC(e,t){if(Gi(e,t),t=t.toString(),t===Tt)throw new Error(me.CANNOT_DROP_INTERNAL_DBIS_NAME);nt(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],nt(e,Tt).removeSync(t)}o(AC,"dropDBI");function mC(e,t,r){for(let s=0;s<r.length;s++){let n=r[s];if(!e.dbis[n])try{nt(e,n)}catch(i){if(i.message===me.DBI_DOES_NOT_EXIST)zE(e,n,n!==t,n===t);else throw i}}}o(mC,"initializeDBIs");ed.exports={openDBI:nt,openEnvironment:y_,createEnvironment:EC,listDBIs:XE,listDBIDefinitions:TC,createDBI:zE,dropDBI:AC,statDBI:hC,deleteEnvironment:SC,initializeDBIs:mC,TransactionCursor:Bi,environmentDataSize:RC,copyEnvironment:dC,closeEnvironment:ZE}});var rd=d((XV,td)=>{"use strict";var qi=class{constructor(t=[],r=[],s=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=s}};o(qi,"InsertRecordsResponseObject");td.exports=qi});var nd=d((zV,sd)=>{"use strict";var Fi=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(Fi,"UpdateRecordsResponseObject");sd.exports=Fi});var od=d((e0,id)=>{"use strict";var Vi=class{constructor(t=[],r=void 0,s=[]){this.written_hashes=t,this.txn_time=r,this.original_records=s}};o(Vi,"UpsertRecordsResponseObject");id.exports=Vi});var Yr=d((n0,_d)=>{"use strict";var gC=$(),pC=rd(),NC=nd(),OC=od(),hn=lr(),fn=et().LMDB_ERRORS_ENUM,IC=he(),dr=h(),CC=I(),bC=require("uuid"),t0=require("lmdb"),{handleHDBError:LC,hdb_errors:yC}=J(),{OVERFLOW_MARKER:r0,MAX_SEARCH_KEY_LENGTH:s0}=IC,D_=dr.TIME_STAMP_NAMES_ENUM.CREATED_TIME,$r=dr.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function wC(e,t,r,s,n=!0){B_(e,t,r,s),M_(e,t,r);let i=new pC,a=[],_=[];for(let c=0;c<s.length;c++){let u=s[c];ad(u,!0,n);let l=DC(e,t,r,u),E=u[t];a.push(l),_.push(E)}return U_(a,_,s,i)}o(wC,"insertRecords");function DC(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][dr.FUNC_VAL],s[a]=_)}let c=hn.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[$r])})}o(DC,"insertRecord");function MC(e,t=[]){let r=0;for(let s=0;s<t.length;s++){let n=t[s];e.splice(n-r,1),r++}}o(MC,"removeSkippedRecords");function ad(e,t,r=!0){let s=Date.now();(r===!0||!Number.isInteger(e[$r]))&&(e[$r]=s),t===!0?(r===!0||!Number.isInteger(e[D_]))&&(e[D_]=s):delete e[D_]}o(ad,"setTimestamps");function M_(e,t,r){r.indexOf(dr.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(dr.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(dr.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(dr.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),gC.initializeDBIs(e,t,r)}o(M_,"initializeTransaction");async function UC(e,t,r,s,n=!0){B_(e,t,r,s),M_(e,t,r);let i=new NC,a=[],_=[],c=[];for(let u=0;u<s.length;u++){let l=s[u],E=l[t],T;try{T=P_(e,t,l,E,i,!0,n)}catch{i.skipped_hashes.push(E),a.push(u);continue}_.push(T),c.push(E)}return U_(_,c,s,i,a)}o(UC,"updateRecords");async function PC(e,t,r,s,n=!0){try{B_(e,t,r,s)}catch(c){throw LC(c,c.message,yC.HTTP_STATUS_CODES.BAD_REQUEST)}M_(e,t,r);let i=new OC,a=[],_=[];for(let c=0;c<s.length;c++){let u=s[c],l;CC.isEmpty(u[t])?(l=bC.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(PC,"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=hn.getMicroTime(),MC(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(ad(r,!l,a),Number.isInteger(r[$r])&&u[$r]>r[$r])return!1;l&&n.original_records.push(u);let E,T=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][dr.FUNC_VAL],r[A]=R)}if(R===de)continue;let p=hn.getIndexedValues(de);if(p)for(let k=0,Ie=p.length;k<Ie;k++)L.remove(p[k],s);if(p=hn.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[$r])},"do_put");return c?E=_.ifVersion(s,c.version,T):E=_.ifNoExists(s,T),E.then(S=>S?!0:P_(e,t,r,s,n,i,a))}o(P_,"updateUpsertRecord");function BC(e,t,r){if(hn.validateEnv(e),t===void 0)throw new Error(fn.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(fn.WRITE_ATTRIBUTES_REQUIRED):new Error(fn.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}o(BC,"validateBasic");function B_(e,t,r,s){if(BC(e,t,r),!Array.isArray(s))throw s===void 0?new Error(fn.RECORDS_REQUIRED):new Error(fn.RECORDS_MUST_BE_ARRAY)}o(B_,"validateWrite");_d.exports={insertRecords:wC,updateRecords:UC,upsertRecords:PC}});var Z=d((i0,ud)=>{"use strict";var H_=h(),gs=Y(),v_=require("path");gs.initSync();var xi,ki,$i;function cd(){if(xi!==void 0)return xi;if(gs.getHdbBasePath()!==void 0)return xi=v_.join(gs.getHdbBasePath(),H_.SCHEMA_DIR_NAME),xi}o(cd,"getBaseSchemaPath");function HC(){if(ki!==void 0)return ki;if(gs.getHdbBasePath()!==void 0)return ki=v_.join(cd(),H_.SYSTEM_SCHEMA_NAME),ki}o(HC,"getSystemSchemaPath");function vC(){if($i!==void 0)return $i;if(gs.getHdbBasePath()!==void 0)return $i=v_.join(gs.getHdbBasePath(),H_.TRANSACTIONS_DIR_NAME),$i}o(vC,"getTransactionAuditStorePath");ud.exports={getBaseSchemaPath:cd,getSystemSchemaPath:HC,getTransactionAuditStorePath:vC}});var Yt=d((o0,GC)=>{GC.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((a0,ld)=>{var{common_validators:Sr}=ms(),Rn=tt(),ft="is required",K={schema:{presence:!0,format:Sr.schema_format,length:Sr.schema_length},table:{presence:!0,format:Sr.schema_format,length:Sr.schema_length},attribute:{presence:!0,format:Sr.schema_format,length:Sr.schema_length},hash_attribute:{presence:!0,format:Sr.schema_format,length:Sr.schema_length}};function An(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(An,"makeAttributesStrings");function qC(e){return e=An(e),K.schema.presence={message:ft},K.table.presence=!1,K.attribute.presence=!1,K.hash_attribute.presence=!1,Rn.validateObject(e,K)}o(qC,"schema_object");function FC(e){return e=An(e),K.schema.presence={message:ft},K.table.presence={message:ft},K.attribute.presence=!1,K.hash_attribute.presence=!1,Rn.validateObject(e,K)}o(FC,"table_object");function VC(e){return e=An(e),K.schema.presence={message:ft},K.table.presence={message:ft},K.attribute.presence=!1,K.hash_attribute.presence={message:ft},Rn.validateObject(e,K)}o(VC,"create_table_object");function xC(e){return e=An(e),K.schema.presence={message:ft},K.table.presence={message:ft},K.attribute.presence={message:ft},K.hash_attribute.presence=!1,Rn.validateObject(e,K)}o(xC,"attribute_object");function kC(e){return e=An(e),K.schema.presence={message:ft},K.table.presence={message:ft},K.attribute.presence=!1,K.hash_attribute.presence=!1,Rn.validateObject(e,K)}o(kC,"describe_table");function $C(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($C,"validateTableResidence");ld.exports={schema_object:qC,create_table_object:VC,table_object:FC,attribute_object:xC,describe_table:kC,validateTableResidence:$C}});var dd=d((_0,Ed)=>{"use strict";var YC=require("uuid"),Yi=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.attribute=s,this.id=n||YC.v4(),this.schema_table=`${this.schema}.${this.table}`}};o(Yi,"CreateAttributeObject");Ed.exports=Yi});var Wi=d((c0,Sd)=>{"use strict";var KC=dd(),Ki=class extends KC{constructor(t,r,s,n,i=!0,a=!1){super(t,r,s,n),this.dup_sort=i,this.is_hash_attribute=a}};o(Ki,"LMDBCreateAttributeObject");Sd.exports=Ki});var fd=d((u0,Td)=>{"use strict";Td.exports=QC;var WC="inserted";function QC(e,t,r,s){let n={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:s};return e===WC?(n.inserted_hashes=t,n):(n.update_hashes=t,n)}o(QC,"returnObject")});var Qi=d((l0,Rd)=>{"use strict";var jC=h(),q_=$(),JC=Yr(),{getSystemSchemaPath:ZC,getBaseSchemaPath:XC}=Z(),zC=require("path"),eb=Yt(),tb=G_(),rb=Wi(),sb=fd(),{handleHDBError:nb,hdb_errors:ib}=J(),ob=I(),F_=eb.hdb_attribute,hd=[];for(let e=0;e<F_.attributes.length;e++)hd.push(F_.attributes[e].attribute);var ab="inserted";Rd.exports=_b;async function _b(e){let t=tb.attribute_object(e);if(t)throw nb(new Error,t.message,ib.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=ob.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 rb(e.schema,e.table,e.attribute,e.id);try{let n=await q_.openEnvironment(zC.join(XC(),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(ZC(),jC.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:a,skipped_hashes:_}=await JC.insertRecords(i,F_.hash_attribute,hd,[s]);return sb(ab,a,{records:[s]},_)}catch(n){throw n}}o(_b,"lmdbCreateAttribute")});var ji=d((d0,md)=>{"use strict";var Kt=I(),Ad=O(),E0=N_();md.exports=cb;function cb(e){if(Kt.isEmpty(e))throw new Error("invalid update parameters defined.");if(Kt.isEmptyOrZeroLength(e.schema))throw new Error("invalid schema specified.");if(Kt.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(Kt.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&&Kt.isEmptyOrZeroLength(a[r]))throw Ad.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(!Kt.isEmptyOrZeroLength(a[r])&&(a[r]==="null"||a[r]==="undefined"))throw Ad.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`);!Kt.isEmpty(a[r])&&a[r]!==""&&s.has(Kt.autoCast(a[r]))&&(a.skip=!0),s.add(Kt.autoCast(a[r]));for(let _ in a)n[_]=1}),n[r]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(n)}}o(cb,"insertUpdateValidate")});var Zi=d((S0,gd)=>{"use strict";var ub=h().OPERATIONS_ENUM,Ji=class{constructor(t,r,s,n,i=void 0){this.operation=ub.INSERT,this.schema=t,this.table=r,this.hash_attribute=s,this.records=n,this.__origin=i}};o(Ji,"InsertObject");gd.exports=Ji});var zi=d((f0,pd)=>{"use strict";var T0=Zi(),Xi=h(),x_=I(),V_=O(),lb=require("uuid"),{handleHDBError:mn,hdb_errors:Eb}=J(),{HDB_ERROR_MSGS:gn,HTTP_STATUS_CODES:pn}=Eb;pd.exports=db;function db(e,t,r){for(let n=0;n<t.length;n++)Sb(t[n]);let{records:s}=e;for(let n=0;n<s.length;n++){let i=s[n];Tb(i,r,e.operation)}}o(db,"processRows");function Sb(e){if(Buffer.byteLength(String(e))>Xi.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE)throw mn(new Error,gn.ATTR_NAME_LENGTH_ERR(e),pn.BAD_REQUEST,void 0,void 0,!0);if(x_.isEmptyOrZeroLength(e)||x_.isEmpty(e.trim()))throw mn(new Error,gn.ATTR_NAME_NULLISH_ERR,pn.BAD_REQUEST,void 0,void 0,!0)}o(Sb,"validateAttribute");function Tb(e,t,r){if(!e.hasOwnProperty(t)||x_.isEmptyOrZeroLength(e[t])){if(r===Xi.OPERATIONS_ENUM.INSERT||r===Xi.OPERATIONS_ENUM.UPSERT){e[t]=lb.v4();return}throw V_.error("Update transaction aborted due to record with no hash value:",e),mn(new Error,gn.RECORD_MISSING_HASH_ERR,pn.BAD_REQUEST,void 0,void 0,!0)}if(Buffer.byteLength(String(e[t]))>Xi.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE)throw V_.error(e),mn(new Error,gn.HASH_VAL_LENGTH_ERR,pn.BAD_REQUEST,void 0,void 0,!0);if(isNaN(e[t])&&e[t].includes("/"))throw V_.error(e),mn(new Error,gn.INVALID_FORWARD_SLASH_IN_HASH_ERR,pn.BAD_REQUEST,void 0,void 0,!0)}o(Tb,"validateHash")});var Od=d((h0,Nd)=>{"use strict";var eo=class{constructor(t,r){this.type=t,this.message=r}};o(eo,"IPCEventObject");Nd.exports=eo});var ps=d((R0,Id)=>{"use strict";var fb=O(),k_=I(),hb=h(),{IPC_ERRORS:Nn}=et();Id.exports={sendIpcEvent:Rb,validateEvent:Ab,SchemaEventMsg:mb,UserEventMsg:gb};function Rb(e){global.hdb_ipc?global.hdb_ipc.emitToServer(e):fb.warn("Tried to send event:",e,"to HDB IPC client but it does not exist")}o(Rb,"sendIpcEvent");function Ab(e){if(typeof e!="object")return Nn.INVALID_IPC_DATA_TYPE;if(!e.hasOwnProperty("type")||k_.isEmpty(e.type))return Nn.MISSING_TYPE;if(!e.hasOwnProperty("message")||k_.isEmpty(e.message))return Nn.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||k_.isEmpty(e.message.originator))return Nn.MISSING_ORIGIN;if(hb.IPC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return Nn.INVALID_EVENT(e.type)}o(Ab,"validateEvent");function mb(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(mb,"SchemaEventMsg");function gb(e){this.originator=e}o(gb,"UserEventMsg")});var On=d((m0,yd)=>{"use strict";var Cd=h(),A0=I(),to=O(),bd=Od(),{sendIpcEvent:Ld}=ps();function pb(e){try{to.trace("signalSchemaChange called with message:",e);let t=new bd(Cd.IPC_EVENT_TYPES.SCHEMA,e);Ld(t)}catch(t){to.error(t)}}o(pb,"signalSchemaChange");function Nb(e){try{to.trace("signalUserChange called with message:",e);let t=new bd(Cd.IPC_EVENT_TYPES.USER,e);Ld(t)}catch(t){to.error(t)}}o(Nb,"signalUserChange");yd.exports={signalSchemaChange:pb,signalUserChange:Nb}});var ro=d((g0,Dd)=>{"use strict";var wd=I(),Ob=h(),Ib=O(),Cb=Qi(),bb=Wi(),Lb=On(),{SchemaEventMsg:yb}=ps(),wb="already exists in";Dd.exports=Db;async function Db(e,t,r){try{if(wd.isEmptyOrZeroLength(r))return r;let s=[];wd.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 Mb(e,t.schema,t.name,i)})),n}catch(s){throw s}}o(Db,"lmdbCheckForNewAttributes");async function Mb(e,t,r,s){let n=new bb(t,r,s,void 0,!0);e&&(n.hdb_auth_header=e);try{await Ub(n)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(wb))Ib.warn(`attribute ${t}.${r}.${s} already exists`);else throw i}}o(Mb,"createNewAttribute");async function Ub(e){let t;try{return t=await Cb(e),Lb.signalSchemaChange(new yb(process.pid,Ob.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}catch(r){throw r}}o(Ub,"createAttribute")});var Ns=d((p0,Md)=>{"use strict";var so=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(so,"LMDBTransactionObject");Md.exports=so});var Pd=d((N0,Ud)=>{"use strict";var Pb=Ns(),Bb=h().OPERATIONS_ENUM,no=class extends Pb{constructor(t,r,s,n,i=void 0){super(Bb.INSERT,r,s,n,i),this.records=t}};o(no,"LMDBInsertTransactionObject");Ud.exports=no});var Hd=d((O0,Bd)=>{"use strict";var Hb=Ns(),vb=h().OPERATIONS_ENUM,io=class extends Hb{constructor(t,r,s,n,i,a=void 0){super(vb.UPDATE,s,n,i,a),this.records=t,this.original_records=r}};o(io,"LMDBUpdateTransactionObject");Bd.exports=io});var Gd=d((I0,vd)=>{"use strict";var Gb=Ns(),qb=h().OPERATIONS_ENUM,oo=class extends Gb{constructor(t,r,s,n,i,a=void 0){super(qb.UPSERT,s,n,i,a),this.records=t,this.original_records=r}};o(oo,"LMDBUpsertTransactionObject");vd.exports=oo});var Fd=d((C0,qd)=>{"use strict";var Fb=Ns(),Vb=h().OPERATIONS_ENUM,ao=class extends Fb{constructor(t,r,s,n,i=void 0){super(Vb.DELETE,s,n,t,i),this.original_records=r}};o(ao,"LMDBDeleteTransactionObject");qd.exports=ao});var In=d((b0,$d)=>{"use strict";var xb=require("path"),Vd=$(),kb=Pd(),$b=Hd(),Yb=Gd(),Kb=Fd(),Os=he(),xd=I(),{CONFIG_PARAMS:Wb}=h(),kd=Y();kd.initSync();var _o=h().OPERATIONS_ENUM,{getTransactionAuditStorePath:Qb}=Z();$d.exports=jb;async function jb(e,t){if(kd.get(Wb.LOGGING_AUDITLOG)===!1)return;let r=xb.join(Qb(),e.schema.toString()),s=await Vd.openEnvironment(r,e.table,!0),n=Jb(e,t);if(!(n===void 0||n.hash_values.length===0)&&s!==void 0){Vd.initializeDBIs(s,Os.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Os.TRANSACTIONS_DBIS);try{let i=n.timestamp;return await s.dbis[Os.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{s.dbis[Os.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,n),xd.isEmpty(n.user_name)||s.dbis[Os.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(n.user_name,i);for(let a=0;a<n.hash_values.length;a++)s.dbis[Os.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(n.hash_values[a],i)})}catch(i){throw i}}}o(jb,"writeTransaction");function Jb(e,t){let r=xd.isEmpty(e.hdb_user)?void 0:e.hdb_user.username;if(e.operation===_o.INSERT)return new kb(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===_o.UPDATE)return new $b(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===_o.UPSERT)return new Yb(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===_o.DELETE)return new Kb(t.deleted,t.original_records,r,t.txn_time,e.__origin)}o(Jb,"createTransactionObject")});var $_=d((y0,Yd)=>{"use strict";var Zb=ji(),L0=Zi(),Is=h(),Xb=zi(),zb=Yr().insertRecords,eL=$(),tL=require("path"),rL=O(),sL=ro(),{getBaseSchemaPath:nL}=Z(),iL=In();Yd.exports=oL;async function oL(e){try{let{schema_table:t,attributes:r}=Zb(e);Xb(e,r,t.hash_attribute),e.schema!==Is.SYSTEM_SCHEMA_NAME&&(r.includes(Is.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Is.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Is.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Is.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await sL(e.hdb_auth_header,t,r),n=tL.join(nL(),e.schema.toString()),i=await eL.openEnvironment(n,e.table),a=await zb(i,t.hash_attribute,r,e.records,e[Is.CLUSTERING_FLAG]!==!0);try{await iL(e,a)}catch(_){rL.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(oL,"lmdbCreateRecords")});var Qd=d((w0,Wd)=>{"use strict";var Kd=h(),aL=$_(),_L=Zi(),cL=require("fs-extra"),uL=require("path"),{getBaseSchemaPath:lL}=Z();Wd.exports=EL;async function EL(e){let t=[{name:e.schema,createddate:Date.now()}],r=new _L(Kd.SYSTEM_SCHEMA_NAME,Kd.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await aL(r),await cL.mkdirp(uL.join(lL(),e.schema.toString()))}o(EL,"lmdbCreateSchema")});var Jd=d((D0,jd)=>{"use strict";var co=class{constructor(t=[],r=[],s=void 0,n=[]){this.deleted=t,this.skipped=r,this.txn_time=s,this.original_records=n}};o(co,"DeleteRecordsResponseObject");jd.exports=co});var W_=d((B0,zd)=>{"use strict";var Zd=$(),Y_=lr(),K_=et().LMDB_ERRORS_ENUM,dL=he(),Xd=O(),M0=I(),SL=require("lmdb"),TL=Jd(),{OVERFLOW_MARKER:U0,MAX_SEARCH_KEY_LENGTH:P0}=dL;async function fL(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=Zd.listDBIs(e);Zd.initializeDBIs(e,t,s);let n=new TL,i,a=[],_=[];for(let E=0,T=r.length;E<T;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,SL.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{Xd.warn(`cannot delete from attribute: ${L}, ${p}:${i}`)}}});a.push(A),_.push(i),n.original_records.push(S)}catch(S){Xd.warn(S),n.skipped.push(i)}let c=[],u=await Promise.all(a);for(let E=0,T=u.length;E<T;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 T=c[E];n.original_records.splice(T-l,1),l++}return n.txn_time=Y_.getMicroTime(),n}catch(s){throw s}}o(fL,"deleteRecords");zd.exports={deleteRecords:fL}});var Cn=d((H0,tS)=>{"use strict";var Cs=I(),hL=W_(),RL=$(),AL=require("path"),{getBaseSchemaPath:mL}=Z(),gL=In(),pL=O();tS.exports=NL;async function NL(e,t=!0){let s=global.hdb_schema[e.schema][e.table].hash_attribute;if(Cs.isEmpty(s))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(Cs.isEmptyOrZeroLength(e.hash_values)&&!Cs.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let _=0;_<e.records.length;_++){let c=e.records[_][s];Cs.isEmpty(c)||e.hash_values.push(c)}}if(Cs.isEmptyOrZeroLength(e.hash_values))return eS([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(Cs.isEmptyOrZeroLength(e.records)){e.records=[];for(let _=0;_<e.hash_values.length;_++)e.records[_]={[s]:e.hash_values[_]}}let n=AL.join(mL(),e.schema.toString()),i=await RL.openEnvironment(n,e.table),a=await hL.deleteRecords(i,s,e.hash_values);try{t===!0&&await gL(e,a)}catch(_){pL.error(`unable to write transaction due to ${_.message}`)}return eS(a.deleted,a.skipped,a.txn_time)}catch(n){throw n}}o(NL,"lmdbDeleteRecords");function eS(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(eS,"createDeleteResponse")});var j_=d((G0,rS)=>{"use strict";var OL=h(),v0=lr();function Q_(e,t){let r=Object.create(null);if(t.length===1&&OL.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 IL(e,t,r,s){let n=Q_(r,e);s.push(n)}o(IL,"searchAll");function CL(e,t,r,s){let n=Q_(r,e);s[t]=n}o(CL,"searchAllToMap");function bL(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}o(bL,"iterateDBI");function Kr(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(Kr,"pushResults");function LL(e,t,r,s,n,i){t.toString().endsWith(e)&&Kr(t,r,s,n,i)}o(LL,"endsWith");function yL(e,t,r,s,n,i){t.toString().includes(e)&&Kr(t,r,s,n,i)}o(yL,"contains");function wL(e,t,r,s,n,i){t>e&&Kr(t,r,s,n,i)}o(wL,"greaterThanCompare");function DL(e,t,r,s,n,i){t>=e&&Kr(t,r,s,n,i)}o(DL,"greaterThanEqualCompare");function ML(e,t,r,s,n,i){t<e&&Kr(t,r,s,n,i)}o(ML,"lessThanCompare");function UL(e,t,r,s,n,i){t<=e&&Kr(t,r,s,n,i)}o(UL,"lessThanEqualCompare");rS.exports={parseRow:Q_,searchAll:IL,searchAllToMap:CL,iterateDBI:bL,endsWith:LL,contains:yL,greaterThanCompare:wL,greaterThanEqualCompare:DL,lessThanCompare:ML,lessThanEqualCompare:UL,pushResults:Kr}});var bs=d((V0,_S)=>{"use strict";var it=$(),PL=O(),Qe=lr(),Tr=he(),re=et().LMDB_ERRORS_ENUM,q0=I(),BL=h(),ht=j_(),F0=require("lmdb"),{OVERFLOW_MARKER:sS,MAX_SEARCH_KEY_LENGTH:HL}=Tr,bn={lazy:!0};function nS(e,t,r,s,n=!1,i=void 0,a=void 0){let _=Object.create(null),c=it.openDBI(e,r);c[Tr.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(nS,"iterateFullIndex");function Ln(e,t,r,s,n,i=!1,a=void 0,_=void 0,c=!1,u=!1){let l=[[],[]],E=it.openDBI(e,r),T=J_(e,t,r);E[Tr.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}))ht.pushResults(T(de,p),p,l,t,r);return l}o(Ln,"iterateRangeBetween");function J_(e,t,r){let s;return function(n,i){if(typeof n=="string"&&n.endsWith(sS)){if(!s)if(t)s=it.openDBI(e,t);else{let _=it.listDBIs(e);for(let c=0,u=_.length;c<u&&(s=it.openDBI(e,_[c]),!s[Tr.DBI_DEFINITION_NAME].is_hash_attribute);c++);}n=s.get(i,bn)[r]}return n}}o(J_,"getOverflowCheck");function vL(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);uo(r),r=yn(e,r);let a=[],_=it.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}))ht.searchAll(r,c,u,a);return a}o(vL,"searchAll");function GL(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 uo(r),r=yn(e,r),nS(e,t,t,ht.searchAllToMap.bind(null,r),s,n,i)}o(GL,"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 nS(e,void 0,t,ht.iterateDBI,r,s,n)}o(qL,"iterateDBI");function FL(e,t){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);return it.statDBI(e,t).entryCount}o(FL,"countAll");function VL(e,t,r,s,n=!1,i=void 0,a=void 0){fr(e,r,s);let _=it.openDBI(e,r);s=Qe.convertKeyValueToWrite(s);let c=[[],[]];if(_[Tr.DBI_DEFINITION_NAME].is_hash_attribute){t=r;let u=_.get(s,bn);u!==void 0&&ht.pushResults(s,u,c,t,r)}else for(let u of _.getValues(s,{reverse:n,limit:i,offset:a}))ht.pushResults(s,u,c,t,r);return c}o(VL,"equals");function xL(e,t,r){return fr(e,t,r),it.openDBI(e,t).getValuesCount(r)}o(xL,"count");function kL(e,t,r,s,n=!1,i=void 0,a=void 0){fr(e,r,s);let _=[[],[]],c=it.openDBI(e,r);c[Tr.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:T}of c.getRange({start:l,end:void 0,reverse:n,limit:i,offset:a}))if(E!==l){if(E.toString().startsWith(s))ht.pushResults(E,T,_,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))ht.pushResults(l,E,_,t,r);else if(u===!0)break;return _}o(kL,"startsWith");function $L(e,t,r,s,n=!1,i=void 0,a=void 0){return iS(e,t,r,s,n,i,a,!0)}o($L,"endsWith");function iS(e,t,r,s,n=!1,i=void 0,a=void 0,_=!1){fr(e,r,s);let c=[[],[]],u=it.openDBI(e,r);u[Tr.DBI_DEFINITION_NAME].is_hash_attribute&&(t=r);let l=J_(e,t,r);a=Number.isInteger(a)?a:0;for(let T of u.getKeys({end:n?!1:void 0,reverse:n})){if(i===0)break;let S=T.toString();if(S.endsWith(sS))for(let A of u.getValues(T)){let R=l(T,A);(_?R.endsWith(s):R.includes(s))&&E(R,A)}else if(_?S.endsWith(s):S.includes(s))if(u[Tr.DBI_DEFINITION_NAME].is_hash_attribute)E(T,T);else for(let A of u.getValues(T))E(T,A)}function E(T,S){if(a>0){a--;return}i!==0&&(ht.pushResults(T,S,c,t,r),i--)}return o(E,"found_match"),c}o(iS,"contains");function YL(e,t,r,s,n=!1,i=void 0,a=void 0){fr(e,r,s);let _=typeof s,c;return _==="string"?c="\uFFFF":_==="number"?c=1/0:_==="boolean"&&(c=!0),Ln(e,t,r,s,c,n,i,a,!0,!1)}o(YL,"greaterThan");function KL(e,t,r,s,n=!1,i=void 0,a=void 0){fr(e,r,s);let _=typeof s,c;return _==="string"?c="\uFFFF":_==="number"?c=1/0:_==="boolean"&&(c=!0),Ln(e,t,r,s,c,n,i,a,!1,!1)}o(KL,"greaterThanEqual");function WL(e,t,r,s,n=!1,i=void 0,a=void 0){fr(e,r,s);let _=typeof s,c;return _==="string"?c="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),Ln(e,t,r,c,s,n,i,a,!1,!0)}o(WL,"lessThan");function QL(e,t,r,s,n=!1,i=void 0,a=void 0){fr(e,r,s);let _=typeof s,c;return _==="string"?c="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),Ln(e,t,r,c,s,n,i,a,!1,!1)}o(QL,"lessThanEqual");function jL(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 Ln(e,t,r,s,n,i,a,_)}o(jL,"between");function JL(e,t,r,s){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);if(uo(r),r=yn(e,r),s===void 0)throw new Error(re.ID_REQUIRED);let n=null,i=e.dbis[t].get(s,r.length<3?bn:void 0);return i&&(n=ht.parseRow(i,r)),n}o(JL,"searchByHash");function ZL(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,bn)===void 0&&(s=!1),s}o(ZL,"checkHashExists");function XL(e,t,r,s,n=[]){aS(e,t,r,s,n);let i=oS(e,t,r,s,n);return Object.values(i)}o(XL,"batchSearchByHash");function zL(e,t,r,s,n=[]){return aS(e,t,r,s,n),oS(e,t,r,s,n)}o(zL,"batchSearchByHashToMap");function oS(e,t,r,s,n=[]){r=yn(e,r);let i=Object.create(null),a=r.length<3?bn:void 0;for(let _=0;_<s.length;_++){let c=s[_];try{let u=e.dbis[t].get(c,a);if(u){let l=ht.parseRow(u,r);i[c]=l}else n.push(c)}catch(u){throw PL.warn(u),u}}return i}o(oS,"batchHashSearch");function aS(e,t,r,s,n){if(Qe.validateEnv(e),t===void 0)throw new Error(re.HASH_ATTRIBUTE_REQUIRED);if(uo(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(aS,"initializeBatchSearchByHash");function uo(e){if(!Array.isArray(e))throw e===void 0?new Error(re.FETCH_ATTRIBUTES_REQUIRED):new Error(re.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}o(uo,"validateFetchAttributes");function fr(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>HL)throw new Error(re.SEARCH_VALUE_TOO_LARGE)}o(fr,"validateComparisonFunctions");function yn(e,t){return t.length===1&&BL.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=it.listDBIs(e)),t}o(yn,"setGetWholeRowAttributes");_S.exports={searchAll:vL,searchAllToMap:GL,count:xL,countAll:FL,equals:VL,startsWith:kL,endsWith:$L,contains:iS,searchByHash:JL,setGetWholeRowAttributes:yn,batchSearchByHash:XL,batchSearchByHashToMap:zL,checkHashExists:ZL,iterateDBI:qL,greaterThan:YL,greaterThanEqual:KL,lessThan:WL,lessThanEqual:QL,between:jL}});var wn=d((k0,ES)=>{var cS=require("lodash"),uS=tt(),V=require("joi"),ey=I(),{hdb_schema_table:Rt,checkValidTable:lS}=ms(),{handleHDBError:ty,hdb_errors:ry}=J(),{HTTP_STATUS_CODES:sy}=ry,x0=V.object({schema:Rt,table:Rt,hash_values:V.array().min(1).items(V.alternatives(V.string(),V.number())).required(),get_attributes:V.array().min(1).items(Rt).required()}),ny=V.object({schema:Rt,table:Rt,search_attribute:Rt,search_value:V.any().required(),get_attributes:V.array().min(1).items(Rt).required(),desc:V.bool(),limit:V.number().integer().min(1),offset:V.number().integer().min(0)}),iy=V.object({schema:Rt,table:Rt,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(Rt).required(),conditions:V.array().min(1).items(V.object({search_attribute:Rt,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()});ES.exports=function(e,t){let r=null;switch(t){case"value":r=uS.validateBySchema(e,ny);break;case"hashes":let i=function(a){n?n+=". "+a:n=a};var s=i;o(i,"addError");let n;i(lS("schema",e.schema)),i(lS("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=uS.validateBySchema(e,iy);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let n=ey.checkGlobalSchemaTable(e.schema,e.table);if(n)return ty(new Error,n,sy.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=cS.filter(_,u=>u!=="*"&&u.attribute!=="*"&&!cS.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(($0,dS)=>{"use strict";var oy=$(),ay=wn(),_y=require("path"),{getBaseSchemaPath:cy}=Z();dS.exports=uy;function uy(e){let t=ay(e,"hashes");if(t)throw t;let r=_y.join(cy(),e.schema.toString());return oy.openEnvironment(r,e.table)}o(uy,"initialize")});var X_=d((Y0,SS)=>{"use strict";var ly=bs(),Ey=Z_();SS.exports=dy;async function dy(e){try{let t=await Ey(e),r=global.hdb_schema[e.schema][e.table];return ly.batchSearchByHashToMap(t,r.hash_attribute,e.get_attributes,e.hash_values)}catch(t){throw t}}o(dy,"lmdbGetDataByHash")});var Ls=d((K0,TS)=>{"use strict";var lo=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.hash_values=s,this.get_attributes=n}};o(lo,"SearchByHashObject");TS.exports=lo});var hS=d((Q0,fS)=>{"use strict";var W0=Ls(),Sy=bs(),Ty=Z_();fS.exports=fy;async function fy(e){try{let t=await Ty(e),r=global.hdb_schema[e.schema][e.table];return Sy.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}catch(t){throw t}}o(fy,"lmdbSearchByHash")});var At=d((j0,RS)=>{"use strict";var Eo=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(Eo,"SearchObject");RS.exports=Eo});var So=d((J0,NS)=>{"use strict";var ye=bs(),hy=$(),Ry=require("path"),Ay=I(),C=he(),Wr=h(),{getBaseSchemaPath:my}=Z(),gy=Yt(),AS=et().LMDB_ERRORS_ENUM,{compareKeys:ys}=require("ordered-binary"),Wt=Wr.SEARCH_WILDCARDS;async function py(e,t,r){let s;e.schema===Wr.SYSTEM_SCHEMA_NAME?s=gy[e.table]:s=global.hdb_schema[e.schema][e.table];let n=pS(e,s.hash_attribute,r,t);return mS(e,n,s.hash_attribute,r)}o(py,"prepSearch");async function mS(e,t,r,s){let n=Ry.join(my(),e.schema.toString()),i=await hy.openEnvironment(n,e.table),a=gS(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(Iy(e,r)===!1)return s===!0?Oy(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(mS,"executeSearch");function gS(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(gS,"searchByType");function Ny(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 ys(i,s[0])>=0&&ys(i,s[1])<=0};case C.SEARCH_TYPES.GREATER_THAN:case C.SEARCH_TYPES._GREATER_THAN:return n=>ys(n[r],s)>0;case C.SEARCH_TYPES.GREATER_THAN_EQUAL:case C.SEARCH_TYPES._GREATER_THAN_EQUAL:return n=>ys(n[r],s)>=0;case C.SEARCH_TYPES.LESS_THAN:case C.SEARCH_TYPES._LESS_THAN:return n=>ys(n[r],s)<0;case C.SEARCH_TYPES.LESS_THAN_EQUAL:case C.SEARCH_TYPES._LESS_THAN_EQUAL:return n=>ys(n[r],s)<=0;default:return Object.create(null)}}o(Ny,"filterByType");function Oy(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(Oy,"createMapFromArrays");function Iy(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(Iy,"checkToFetchMore");function pS(e,t,r,s){if(Ay.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),Wt.indexOf(n)>-1)return r===!0?C.SEARCH_TYPES.SEARCH_ALL_TO_MAP:C.SEARCH_TYPES.SEARCH_ALL;if(n.indexOf(Wt[0])<0&&n.indexOf(Wt[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(Wt.indexOf(i)>=0&&Wt.indexOf(a)>=0)return e.search_value=e.search_value.slice(1,-1),C.SEARCH_TYPES.CONTAINS;if(Wt.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),C.SEARCH_TYPES.ENDS_WITH;if(Wt.indexOf(a)>=0)return e.search_value=e.search_value.slice(0,-1),C.SEARCH_TYPES.STARTS_WITH;if(n.includes(Wt[0])||n.includes(Wt[1]))return C.SEARCH_TYPES.EQUALS;throw new Error(AS.UNKNOWN_SEARCH_TYPE)}else switch(s){case Wr.VALUE_SEARCH_COMPARATORS.BETWEEN:return C.SEARCH_TYPES.BETWEEN;case Wr.VALUE_SEARCH_COMPARATORS.GREATER:return C.SEARCH_TYPES.GREATER_THAN;case Wr.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return C.SEARCH_TYPES.GREATER_THAN_EQUAL;case Wr.VALUE_SEARCH_COMPARATORS.LESS:return C.SEARCH_TYPES.LESS_THAN;case Wr.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return C.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(AS.UNKNOWN_SEARCH_TYPE)}}o(pS,"createSearchTypeFromSearchObject");NS.exports={executeSearch:mS,createSearchTypeFromSearchObject:pS,prepSearch:py,searchByType:gS,filterByType:Ny}});var IS=d((X0,OS)=>{"use strict";var Z0=At(),Cy=wn(),by=I(),Ly=h(),yy=So();OS.exports=wy;async function wy(e,t){if(!by.isEmpty(t)&&Ly.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=Cy(e,"value");if(s)throw s;let n=!0;try{return await yy.prepSearch(e,t,n)}catch(i){throw i}}o(wy,"lmdbGetDataByValue")});var ws=d((ex,CS)=>{"use strict";var z0=At(),Dy=wn(),My=I(),Uy=h(),Py=So();CS.exports=By;async function By(e,t){if(!My.isEmpty(t)&&Uy.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=Dy(e,"value");if(s)throw s;let n=!1;try{return await Py.prepSearch(e,t,n)}catch(i){throw i}}o(By,"lmdbSearchByValue")});var LS=d((rx,bS)=>{"use strict";var tx=he(),To=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(To,"SearchByConditionsObject");var fo=class{constructor(t,r,s){this.search_attribute=t,this.search_type=r,this.search_value=s}};o(fo,"SearchCondition");var ho=class{constructor(t,r){this.attribute=t,this.desc=r}};o(ho,"SortAttribute");bS.exports={SearchByConditionsObject:To,SearchCondition:fo,SortAttribute:ho}});var PS=d((nx,US)=>{"use strict";var sx=LS().SearchByConditionsObject,Hy=At(),vy=wn(),z_=bs(),Ro=he(),MS=So(),Gy=j_(),yS=require("lodash"),{getBaseSchemaPath:qy}=Z(),Fy=require("path"),Vy=$(),{handleHDBError:wS,hdb_errors:xy}=J(),{HTTP_STATUS_CODES:ky}=xy,$y=1e8,Yy={lazy:!0};US.exports=Ky;async function Ky(e){try{let t=vy(e,"conditions");if(t)throw wS(t,t.message,ky.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=Fy.join(qy(),e.schema.toString()),s=await Vy.openEnvironment(r,e.table),n=global.hdb_schema[e.schema][e.table],i=yS.sortBy(e.conditions,a=>{if(a.estimated_count===void 0){let _=a.search_type;_===Ro.SEARCH_TYPES.EQUALS?a.estimated_count=z_.count(s,a.search_attribute,a.search_value):_===Ro.SEARCH_TYPES.CONTAINS||_===Ro.SEARCH_TYPES.ENDS_WITH?a.estimated_count=1/0:a.estimated_count=$y}return a.estimated_count});if(!e.operator||e.operator.toLowerCase()==="and"){let[a]=await DS(s,e,i[0],n.hash_attribute),_=s.dbis[n.hash_attribute],c=i.slice(1).map(MS.filterByType),u=c.length,l=[],E=z_.setGetWholeRowAttributes(s,e.get_attributes),T=e.offset>-1?e.offset:0,S=e.limit>-1?e.limit:1/0;e:for(let A of a){let R=_.get(A,Yy);for(let L=0;L<u;L++)if(!c[L](R))continue e;if(T>0){T--;continue}if(S<=0)break;S--,l.push(Gy.parseRow(R,E))}return l}else{let a=[],_=[];for(let c of i){let[u]=await DS(s,e,c,n.hash_attribute);_.push(u)}if(a=yS.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 wS(t)}}o(Ky,"lmdbSearchByConditions");async function DS(e,t,r,s){let n=new Hy(t.schema,t.table,void 0,void 0,s,t.get_attributes),i=r.search_type;return n.search_attribute=r.search_attribute,i===Ro.SEARCH_TYPES.BETWEEN?(n.search_value=r.search_value[0],n.end_value=r.search_value[1]):n.search_value=r.search_value,MS.searchByType(e,n,i,s)}o(DS,"executeConditionSearch")});var mo=d((ix,BS)=>{"use strict";var Wy=h().OPERATIONS_ENUM,Ao=class{constructor(t,r,s,n=void 0){this.operation=Wy.DELETE,this.schema=t,this.table=r,this.hash_values=s,this.__origin=n}};o(Ao,"DeleteObject");BS.exports=Ao});var ec=d((ox,HS)=>{"use strict";var go=class{constructor(t,r,s){this.schema=t,this.table=r,this.attribute=s}};o(go,"DropAttributeObject");HS.exports=go});var rc=d((_x,vS)=>{"use strict";var Qy=At(),jy=mo(),ax=ec(),yt=h(),Jy=I(),tc=$(),Zy=Yt(),Xy=ws(),zy=Cn(),{getBaseSchemaPath:ew}=Z(),tw=require("path");vS.exports=rw;async function rw(e,t=!0){let r;e.schema===yt.SYSTEM_SCHEMA_NAME?r=Zy[e.table]:r=global.hdb_schema[e.schema][e.table];let s=await nw(e),n=tw.join(ew(),e.schema.toString()),i=await tc.openEnvironment(n,e.table);return t===!0&&await sw(e,i,r.hash_attribute),tc.dropDBI(i,e.attribute),s}o(rw,"lmdbDropAttribute");async function sw(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(sw,"removeAttributeFromAllObjects");async function nw(e){let t=new Qy(yt.SYSTEM_SCHEMA_NAME,yt.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,yt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[yt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,yt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),s=(await Xy(t)).filter(a=>a[yt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(Jy.isEmptyOrZeroLength(s))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let n=s.map(a=>a[yt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new jy(yt.SYSTEM_SCHEMA_NAME,yt.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);return zy(i)}o(nw,"dropAttributeFromSystem")});var VS=d((cx,FS)=>{"use strict";var iw=rc(),ow=ec(),GS=I(),qS=O(),aw=et().LMDB_ERRORS_ENUM;FS.exports=_w;async function _w(e){if(GS.isEmpty(global.hdb_schema[e.schema])||GS.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 ow(e.schema,e.table,r);try{await iw(n,!1)}catch(i){i.message!==aw.DBI_DOES_NOT_EXIST&&qS.error(`unable to drop attribute ${e.schema}.${e.table}.${r}:`+i)}}}catch(s){throw qS.error(`Error dropping attribute ${r}`),s}}o(_w,"lmdbDropAllAttributes")});var sc=d((lx,JS)=>{"use strict";var KS=At(),WS=mo(),QS=ws(),jS=Cn(),ux=VS(),Ge=h(),xS=I(),kS=$(),{getBaseSchemaPath:cw,getTransactionAuditStorePath:uw}=Z(),$S=require("path"),YS=O();JS.exports=lw;async function lw(e){try{if(xS.isEmpty(global.hdb_schema[e.schema])||xS.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await Ew(e),await dw(e);let t=$S.join(cw(),e.schema.toString());try{await kS.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")YS.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=$S.join(uw(),e.schema.toString());await kS.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")YS.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}o(lw,"lmdbDropTable");async function Ew(e){let t=new KS(Ge.SYSTEM_SCHEMA_NAME,Ge.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Ge.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Ge.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=await QS(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 WS(Ge.SYSTEM_SCHEMA_NAME,Ge.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);await jS(n)}o(Ew,"deleteAttributesFromSystem");async function dw(e){let t=new KS(Ge.SYSTEM_SCHEMA_NAME,Ge.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Ge.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[Ge.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,Ge.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,Ge.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,s;try{r=await QS(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 WS(Ge.SYSTEM_SCHEMA_NAME,Ge.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[s.id]);try{await jS(n)}catch(i){throw i}}o(dw,"dropTableFromSystem")});var XS=d((dx,ZS)=>{"use strict";var Sw=require("fs-extra"),Tw=At(),fw=Ls(),hw=mo(),Rw=sc(),Aw=Cn(),mw=X_(),gw=ws(),Qt=h(),Ex=I(),pw=require("path"),{getBaseSchemaPath:Nw}=Z(),{handleHDBError:Ow,hdb_errors:Iw}=J(),{HDB_ERROR_MSGS:Cw,HTTP_STATUS_CODES:bw}=Iw;ZS.exports=Lw;async function Lw(e){let t;try{t=await yw(e.schema);let r=new Tw(Qt.SYSTEM_SCHEMA_NAME,Qt.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,Qt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[Qt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),s=await gw(r);for(let a=0;a<s.length;a++){let _={schema:t,table:s[a].name};try{await Rw(_)}catch(c){if(c.message!=="invalid environment")throw c}}let n=new hw(Qt.SYSTEM_SCHEMA_NAME,Qt.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await Aw(n);let i=pw.join(Nw(),t.toString());await Sw.remove(i)}catch(r){throw r}}o(Lw,"lmdbDropSchema");async function yw(e){let t=new fw(Qt.SYSTEM_SCHEMA_NAME,Qt.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[Qt.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,s;try{r=await mw(t)}catch(n){throw n}for(let n in r)r[n].name===e&&(s=e);if(!s)throw Ow(new Error,Cw.SCHEMA_NOT_FOUND(e),bw.NOT_FOUND,void 0,void 0,!0);return s}o(yw,"validateDropSchema")});var No=d((Sx,zS)=>{"use strict";var po=class{constructor(t,r,s){this.schema=t,this.table=r,this.hash_attribute=s}};o(po,"CreateTableObject");zS.exports=po});var ic=d((fx,eT)=>{"use strict";var ww=require("path"),Dw=require("fs-extra"),Oo=$(),{getTransactionAuditStorePath:Mw}=Z(),nc=he(),Tx=No();eT.exports=Uw;async function Uw(e){let t;try{let r=ww.join(Mw(),e.schema.toString());await Dw.mkdirp(r),t=await Oo.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{Oo.createDBI(t,nc.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),Oo.createDBI(t,nc.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),Oo.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(Uw,"createTransactionsAuditEnvironment")});var uc=d((hx,sT)=>{"use strict";var oc=h(),tT=$(),Pw=Yr(),Bw=require("path"),{getSystemSchemaPath:Hw,getBaseSchemaPath:vw}=Z(),Gw=Yt(),qw=Qi(),ac=Wi(),Fw=O(),Vw=ic(),cc=Gw.hdb_table,rT=[];for(let e=0;e<cc.attributes.length;e++)rT.push(cc.attributes[e].attribute);sT.exports=xw;async function xw(e,t){let r=Bw.join(vw(),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 tT.createEnvironment(r,t.table),e!==void 0){let a=await tT.openEnvironment(Hw(),oc.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await Pw.insertRecords(a,cc.hash_attribute,rT,[e]),await _c(s),await _c(n),await _c(i)}await Vw(t)}catch(a){throw a}}o(xw,"lmdbCreateTable");async function _c(e){try{await qw(e)}catch(t){Fw.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}o(_c,"createAttribute")});var iT=d((Rx,nT)=>{"use strict";var kw=ji(),$w=zi(),Yw=ro(),Ds=h(),Kw=Yr().updateRecords,Ww=$(),Qw=require("path"),{getBaseSchemaPath:jw}=Z(),Jw=In(),Zw=O();nT.exports=Xw;async function Xw(e){try{let{schema_table:t,attributes:r}=kw(e);$w(e,r,t.hash_attribute),e.schema!==Ds.SYSTEM_SCHEMA_NAME&&(r.includes(Ds.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Ds.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Ds.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Ds.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await Yw(e.hdb_auth_header,t,r),n=Qw.join(jw(),e.schema.toString()),i=await Ww.openEnvironment(n,e.table),a=await Kw(i,t.hash_attribute,r,e.records,e[Ds.CLUSTERING_FLAG]!==!0);try{await Jw(e,a)}catch(_){Zw.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(Xw,"lmdbUpdateRecords")});var aT=d((Ax,oT)=>{"use strict";var zw=h().OPERATIONS_ENUM,Io=class{constructor(t,r,s,n=void 0){this.operation=zw.UPSERT,this.schema=t,this.table=r,this.records=s,this.__origin=n}};o(Io,"UpsertObject");oT.exports=Io});var cT=d((gx,_T)=>{"use strict";var mx=aT(),eD=ji(),tD=zi(),rD=ro(),Ms=h(),sD=Yr().upsertRecords,nD=$(),iD=require("path"),{getBaseSchemaPath:oD}=Z(),aD=In(),_D=O(),{handleHDBError:cD,hdb_errors:uD}=J();_T.exports=lD;async function lD(e){let t;try{t=eD(e)}catch(c){throw cD(c,c.message,uD.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:s}=t;tD(e,s,r.hash_attribute),e.schema!==Ms.SYSTEM_SCHEMA_NAME&&(s.includes(Ms.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||s.push(Ms.TIME_STAMP_NAMES_ENUM.CREATED_TIME),s.includes(Ms.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||s.push(Ms.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await rD(e.hdb_auth_header,r,s),i=iD.join(oD(),e.schema.toString()),a=await nD.openEnvironment(i,e.table),_=await sD(a,r.hash_attribute,s,e.records,e[Ms.CLUSTERING_FLAG]!==!0);try{await aD(e,_)}catch(c){_D.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(lD,"lmdbUpsertRecords")});var TT=d((px,ST)=>{"use strict";var ED=At(),uT=I(),lT=O(),dD=ws(),ET=h(),SD=W_().deleteRecords,TD=$(),fD=require("path"),{getBaseSchemaPath:hD}=Z(),{promisify:RD}=require("util"),AD=RD(setTimeout),dT=1e4,mD=10;ST.exports=gD;async function gD(e){let t=global.hdb_schema[e.schema][e.table].hash_attribute;if(uT.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 ED(e.schema,e.table,ET.TIME_STAMP_NAMES_ENUM.CREATED_TIME,r,void 0,[t]);s=await dD(n,ET.VALUE_SEARCH_COMPARATORS.LESS)}catch(n){throw lT.error(`Error searching for date: ${e.date} in schema: ${e.schema} table: ${e.table}`),n}return uT.isEmptyOrZeroLength(s)?(lT.trace("No records found to delete"),{message:"No records found to delete"}):await pD(e,s,t)}o(gD,"lmdbDeleteRecordsBefore");async function pD(e,t,r){let s=fD.join(hD(),e.schema.toString()),n=await TD.openEnvironment(s,e.table),i={message:"",deleted_hashes:[],skipped_hashes:[]};for(let a=0,_=t.length;a<_;a+=dT){let c=t.slice(a,a+dT),u=[];for(let l=0,E=c.length;l<E;l++)u.push(c[l][r]);try{let l=await SD(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 AD(mD)}return i.message=`${i.deleted_hashes.length} of ${i.deleted_hashes.length+i.skipped_hashes.length} records successfully deleted`,i}o(pD,"chunkDeletes")});var hT=d((Nx,fT)=>{"use strict";var Co=class{constructor(t,r,s){this.schema=t,this.table=r,this.timestamp=s}};o(Co,"DeleteBeforeObject");fT.exports=Co});var AT=d((Ox,RT)=>{"use strict";var bo=class{constructor(t=void 0,r=void 0,s=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=s}};o(bo,"DeleteAuditLogsBeforeResults");RT.exports=bo});var pT=d((Cx,gT)=>{"use strict";var lc=$(),{getTransactionAuditStorePath:ND}=Z(),Ix=hT(),OD=require("path"),Dn=he(),ID=I(),mT=AT(),CD=require("util").promisify,bD=CD(setTimeout),LD=1e4,yD=100;gT.exports=wD;async function wD(e){let t=OD.join(ND(),e.schema),r=await lc.openEnvironment(t,e.table,!0),s=lc.listDBIs(r);lc.initializeDBIs(r,Dn.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,s);let n,i=new mT;do n=await DD(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 bD(yD);while(n.transactions_deleted>0);return i}o(wD,"deleteAuditLogsBefore");async function DD(e,t){let r=new mT;try{let s=e.dbis[Dn.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[Dn.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];ID.isEmpty(_)||(n=e.dbis[Dn.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(_,i));for(let c=0;c<a.hash_values.length;c++)n=e.dbis[Dn.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(a.hash_values[c],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>LD)break}return await n,r}catch(s){throw s}}o(DD,"deleteTransactions")});var yT=d((bx,LT)=>{"use strict";var Ec=$(),Us=he(),NT=lr(),dc=h(),OT=I(),{getTransactionAuditStorePath:MD}=Z(),UD=require("path"),PD=bs(),Lo=Ns(),BD=O();LT.exports=HD;async function HD(e){let t=UD.join(MD(),e.schema),r=await Ec.openEnvironment(t,e.table,!0),s=Ec.listDBIs(r);Ec.initializeDBIs(r,Us.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,s);let n;switch(e.search_type){case dc.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return IT(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,GD(r,e.search_values,n);case dc.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return vD(r,e.search_values);default:return IT(r)}}o(HD,"readAuditLog");function IT(e,t=[0,NT.getMicroTime()]){OT.isEmpty(t[0])&&(t[0]=0),OT.isEmpty(t[1])&&(t[1]=NT.getMicroTime());let r=[];try{let s=e.dbis[Us.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 Lo,i);r.push(a)}return r}catch(s){throw s}}o(IT,"searchTransactionsByTimestamp");function vD(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[Us.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(n))i.push(a);r.set(n,bT(e,i))}return Object.fromEntries(r)}o(vD,"searchTransactionsByUsername");function GD(e,t,r){let s=new Map;for(let _=0,c=t.length;_<c;_++){let u=t[_],l=PD.equals(e,Us.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Us.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let E=0,T=l[0].length;E<T;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=bT(e,n),a=new Map;for(let _=0;_<i.length;_++){let c=i[_],u=c.timestamp,l=s.get(u);CT(c,"records",r,l,a),CT(c,"original_records",r,l,a)}return Object.fromEntries(a)}o(GD,"searchTransactionsByHashValues");function CT(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 Lo(e.operation,e.user_name,i,void 0);E[t]=[_],u.push(E)}}else{let u=new Lo(e.operation,e.user_name,i,void 0);u[t]=[_],n.set(c,[u])}}}o(CT,"loopRecords");function bT(e,t){let r=[];try{let s=e.dbis[Us.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 Lo,i);r.push(a)}}catch(i){BD.warn(i)}return r}catch(s){throw s}}o(bT,"batchSearchTransactions")});var DT=d((Lx,wT)=>{"use strict";var qD=require("path"),{getBaseSchemaPath:FD}=Z(),VD=$();wT.exports={writeTransaction:xD};async function xD(e,t,r){let s=qD.join(FD(),e);return(await VD.openEnvironment(s,t)).transaction(r)}o(xD,"writeTransaction")});var UT=d((yx,MT)=>{"use strict";var kD=require("path"),{getBaseSchemaPath:$D}=Z(),YD=$();MT.exports={flush:KD};async function KD(e,t){let r=kD.join($D(),e.toString());return(await YD.openEnvironment(r,t.toString())).flushed}o(KD,"flush")});var BT=d((wx,PT)=>{"use strict";var ce=O(),{handleHDBError:WD}=J(),QD=O_(),jD=Qi(),JD=$_(),ZD=Qd(),XD=Cn(),zD=X_(),eM=hS(),tM=IS(),rM=ws(),sM=PS(),nM=XS(),iM=uc(),oM=iT(),aM=cT(),_M=TT(),cM=pT(),uM=sc(),lM=rc(),EM=yT(),dM=DT(),SM=UT(),yo=class extends QD{async searchByConditions(t){try{return sM(t)}catch(r){throw ce.error(r),r}}async getDataByHash(t){try{return await zD(t)}catch(r){throw ce.error(r),r}}async searchByHash(t){try{return await eM(t)}catch(r){throw ce.error(r),r}}async getDataByValue(t,r){try{return await tM(t,r)}catch(s){throw ce.error(s),s}}async searchByValue(t){try{return await rM(t)}catch(r){throw ce.error(r),r}}async createSchema(t){try{return await ZD(t)}catch(r){throw ce.error(r),r}}async dropSchema(t){try{return await nM(t)}catch(r){throw ce.error(r),r}}async createTable(t,r){try{return await iM(t,r)}catch(s){throw ce.error(s),s}}async dropTable(t){try{return await uM(t)}catch(r){throw ce.error(r),r}}async createAttribute(t){try{return await jD(t)}catch(r){throw ce.error(r),r}}async createRecords(t){try{return await JD(t)}catch(r){throw ce.error(r),r}}async updateRecords(t){try{return await oM(t)}catch(r){throw ce.error(r),r}}async upsertRecords(t){try{return await aM(t)}catch(r){throw WD(r,null,null,ce.ERR,r)}}async deleteRecords(t){try{return await XD(t)}catch(r){throw ce.error(r),r}}async deleteRecordsBefore(t){try{return await _M(t)}catch(r){throw ce.error(r),r}}async dropAttribute(t){try{return await lM(t)}catch(r){throw ce.error(r),r}}async deleteAuditLogsBefore(t){try{return await cM(t)}catch(r){throw ce.error(r),r}}async readAuditLog(t){try{return await EM(t)}catch(r){throw ce.error(r),r}}writeTransaction(t,r,s){return dM.writeTransaction(t,r,s)}flush(t,r){return SM.flush(t,r)}};o(yo,"LMDBBridge");PT.exports=yo});var Ps=d((Dx,vT)=>{"use strict";var TM=BT(),fM=O_(),hM=Y();hM.initSync();var HT;function RM(){return HT instanceof fM?HT:new TM}o(RM,"getBridge");vT.exports=RM()});var JT=d((Ux,jT)=>{"use strict";var Sc=require("recursive-iterator"),AM=require("alasql"),Tc=require("clone"),GT=I(),{handleHDBError:qT,hdb_errors:mM}=J(),{HDB_ERROR_MSGS:FT,HTTP_STATUS_CODES:VT}=mM,gM=["DISTINCT_ARRAY"],xT=Symbol("validateTables"),fc=Symbol("validateTable"),Mx=Symbol("getAllColumns"),kT=Symbol("validateAllColumns"),wo=Symbol("findColumn"),$T=Symbol("validateOrderBy"),Mn=Symbol("validateSegment"),hc=Symbol("validateColumn"),YT=Symbol("setColumnsForTable"),KT=Symbol("checkColumnsForAsterisk"),WT=Symbol("validateGroupBy"),QT=Symbol("hasColumns"),Do=class{constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[xT](),this[KT](),this[kT]()}[xT](){if(this[QT]()){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)})}}[QT](){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 qT(new Error,FT.SCHEMA_NOT_FOUND(t.databaseid),VT.NOT_FOUND);if(!global.hdb_schema[t.databaseid][t.tableid])throw qT(new Error,FT.TABLE_NOT_FOUND(t.databaseid,t.tableid),VT.NOT_FOUND);global.hdb_schema[t.databaseid][t.tableid].attributes.forEach(s=>{let n=Tc(s);n.table=Tc(t),this.attributes.push(n)})}[wo](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)}[KT](){let t=new Sc(this.statement.columns);for(let{node:r,path:s}of t)r&&r.columnid==="*"&&s.indexOf("expression")<0&&this[YT](r.tableid)}[YT](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&this.statement.columns.push(new AM.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[kT](){this[Mn](this.statement.columns,!1),this[Mn](this.statement.joins,!1),this[Mn](this.statement.where,!1),this[WT](this.statement.group,!1),this[Mn](this.statement.order,!0)}[Mn](t,r){if(!t)return;let s=new Sc(t),n=[];for(let{node:i,path:a}of s)!GT.isEmpty(i)&&!GT.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[$T](i):n.push(this[hc](i)));return n}[WT](t){if(!t)return;let r=[];if(this.statement.columns.forEach(s=>{if(!(s.funcid&&gM.indexOf(s.funcid.toUpperCase())>=0)){if(!s.aggregatorid&&!s.columnid){let n=Tc(s);delete n.as,r.push(n)}else if(s.columnid){let n=this[wo](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[wo](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`}[$T](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[hc](t)}[hc](t){let r=this[wo](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(Do,"SelectValidator");jT.exports=Do});var ef=d((Px,zT)=>{"use strict";var ZT=require("lodash"),Un=require("mathjs"),pM=require("jsonata"),XT=I();zT.exports={distinct_array:e=>Array.isArray(e)&&e.length>1?ZT.uniqWith(e,ZT.isEqual):e,searchJSON:NM,mad:Pn.bind(null,Un.mad),mean:Pn.bind(null,Un.mean),mode:Pn.bind(null,Un.mode),prod:Pn.bind(null,Un.prod),median:Pn.bind(null,Un.median)};function Pn(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(Pn,"aggregateFunction");function NM(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(XT.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),XT.isEmpty(this.__ala__.res[r])){let s=pM(e);this.__ala__.res[r]=s}return this.__ala__.res[r].evaluate(t)}o(NM,"searchJSON")});var rf=d((Bx,tf)=>{"use strict";var ie=require("moment"),Rc="YYYY-MM-DDTHH:mm:ss.SSSZZ";ie.suppressDeprecationWarnings=!0;tf.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 af=d((Hx,of)=>{"use strict";var OM=require("@turf/area"),IM=require("@turf/length"),CM=require("@turf/circle"),bM=require("@turf/difference"),LM=require("@turf/distance"),yM=require("@turf/boolean-contains"),wM=require("@turf/boolean-equal"),DM=require("@turf/boolean-disjoint"),MM=require("@turf/helpers"),sf=h(),v=I();of.exports={geoArea:UM,geoLength:PM,geoCircle:BM,geoDifference:HM,geoDistance:nf,geoNear:vM,geoContains:GM,geoEqual:qM,geoCrosses:FM,geoConvert:VM};var Ac="geo1 is required",mc="geo2 is required";function UM(e){if(v.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=v.autoCast(e)),OM.default(e)}o(UM,"geoArea");function PM(e,t){if(v.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=v.autoCast(e)),IM.default(e,{units:t||"kilometers"})}o(PM,"geoLength");function BM(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)),CM.default(e,t,{units:r||"kilometers"})}o(BM,"geoCircle");function HM(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)),bM(e,t)}o(HM,"geoDifference");function nf(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)),LM.default(e,t,{units:r||"kilometers"})}o(nf,"geoDistance");function vM(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 nf(e,t,s)<=r}o(vM,"geoNear");function GM(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)),yM.default(e,t)}o(GM,"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)),wM.default(e,t)}o(qM,"geoEqual");function FM(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)),!DM.default(e,t)}o(FM,"geoCrosses");function VM(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(sf.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(sf.GEO_CONVERSION_ENUM).join(",")}`);return MM[t](e,r)}o(VM,"geoConvert")});var cf=d((vx,_f)=>{var Qr=ef(),je=rf(),wt=af();_f.exports=e=>{e.aggr.mad=e.aggr.MAD=Qr.mad,e.aggr.mean=e.aggr.MEAN=Qr.mean,e.aggr.mode=e.aggr.MODE=Qr.mode,e.aggr.prod=e.aggr.PROD=Qr.prod,e.aggr.median=e.aggr.MEDIAN=Qr.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Qr.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Qr.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=wt.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=wt.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=wt.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=wt.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=wt.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=wt.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=wt.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=wt.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=wt.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=wt.geoNear}});var Ef=d((Gx,lf)=>{"use strict";var Bn=require("lodash"),ge=require("alasql");ge.options.cache=!1;var xM=cf(),uf=require("clone"),Mo=require("recursive-iterator"),M=O(),P=I(),Bs=Ps(),kM=h(),{hdb_errors:$M}=J(),YM="IS NULL",Hn="There was a problem performing this search. Please check the logs and try again.";xM(ge);var Uo=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(Hn)}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(Hn)}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(Hn)}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(Hn)}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(Hn)}}_getColumns(){let t=new Mo(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(uf(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=Bn.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 Mo(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 Mo(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(kM.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&&Bn.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(uf(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(YM)>-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=Bn.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 Bs.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 T=await Bs.getDataByValue(E);for(let S in T)this.data[i].__merged_data[S]?this._updateMergedAttribute(i,S,n.attribute,T[S][n.attribute]):(this.data[i].__merged_data[S]=[...s[i]],this._updateMergedAttribute(i,S,n.attribute,T[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,T=l.length;E<T;E++){let S=l[E];_.search_attribute=S.attribute,_.search_value=S.search_value;let A=await Bs.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 Bs.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 T=[];try{let S=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${c} ${u} ${l} ${E}`,A=this._convertColumnsToIndexes(S,n);T=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(T&&T.length>0){for(let S=0,A=T.length;S<A;S++){let R=T[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=Bn.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:T?T.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let s=[],n=new Mo(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=Bn.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 Bs.getDataByHash(_),u=n.columns.length;for(let l=0,E=a.length;l<E;l++){let T=a[l],S=c[T];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[T].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($M.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 Bs.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(Uo,"SQLSearch");lf.exports=Uo});var hr=d((qx,Sf)=>{"use strict";var KM=JT();Sf.exports={searchByConditions:JM,searchByHash:ZM,searchByValue:XM,search:zM};var gc=Ps(),df=require("util"),WM=df.callbackify(gc.searchByHash),QM=df.callbackify(gc.searchByValue),jM=Ef();async function JM(e){return gc.searchByConditions(e)}o(JM,"searchByConditions");function ZM(e,t){try{WM(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}o(ZM,"searchByHash");function XM(e,t){try{e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc),QM(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}o(XM,"searchByValue");function zM(e,t){try{let r=new KM(e);r.validate(),new jM(r.statement,r.attributes).search().then(n=>{t(null,n)}).catch(n=>{t(n,null)})}catch(r){return t(r)}}o(zM,"search")});var Gn=d((Fx,Rf)=>{"use strict";var vn=require("crypto"),ff="aes-256-cbc",eU=32,tU=16,pc=64,hf=32,rU=pc+hf,Tf=new Map;Rf.exports={encrypt:sU,decrypt:nU,createNatsTableStreamName:iU};function sU(e){let t=vn.randomBytes(eU),r=vn.randomBytes(tU),s=vn.createCipheriv(ff,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(sU,"encrypt");function nU(e){let t=e.substr(0,pc),r=e.substr(pc,hf),s=e.substr(rU,e.length),n=Buffer.from(r,"hex"),i=Buffer.from(s,"hex"),a=vn.createDecipheriv(ff,Buffer.from(t,"hex"),n),_=a.update(i);return _=Buffer.concat([_,a.final()]),_.toString()}o(nU,"decrypt");function iU(e,t){let r=`${e}.${t}`,s=Tf.get(r);return s||(s=vn.createHash("md5").update(`${e}.${t}`).digest("hex"),Tf.set(r,s)),s}o(iU,"createNatsTableStreamName")});var vo=d((Vx,If)=>{"use strict";var mf=hr(),Rr=O(),gf=G_(),oU=require("lodash"),aU=require("path"),_U=Gn(),Nc=I(),{promisify:pf}=require("util"),Q=h(),{handleHDBError:Po,hdb_errors:cU}=J(),{HDB_ERROR_MSGS:Bo,HTTP_STATUS_CODES:Nf}=cU,uU=Y();uU.initSync();var Af=$(),lU=Z(),qn=pf(mf.searchByValue),EU=pf(mf.searchByHash),Hs="name",Of="hash_attribute",Oc="schema",dU="schema_table",SU="attribute";If.exports={describeAll:TU,describeTable:Ho,describeSchema:hU};async function TU(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:Hs,search_value:Q.WILDCARD_SEARCH_VALUE,get_attributes:[Hs]},i=await qn(n);if(Nc.isEmptyOrZeroLength(i))return{};let a={},_={};for(let T in i)a[i[T].name]=!0,!t&&!s&&(_[i[T].name]=r[i[T].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:[Of,Q.ID_ATTRIBUTE_STRING,Hs,Oc]},u=await qn(c),l=[];for(let T of u)try{let S;if(t||s)S=await Ho({schema:T.schema,table:T.name});else if(r&&r[T.schema].describe&&r[T.schema].tables[T.name].describe){let A=r[T.schema].tables[T.name].attribute_permissions;S=await Ho({schema:T.schema,table:T.name},A)}S&&l.push(S)}catch(S){Rr.error(S)}let E={};for(let T in l)t||s?(E[l[T].schema]==null&&(E[l[T].schema]={}),E[l[T].schema][l[T].name]=l[T],a[l[T].schema]&&delete a[l[T].schema]):_[l[T].schema]&&(E[l[T].schema]==null&&(E[l[T].schema]={}),E[l[T].schema][l[T].name]=l[T],a[l[T].schema]&&delete a[l[T].schema]);for(let T in a)t||s?E[T]={}:_[T]&&(E[T]={});return E}catch(t){return Rr.error("Got an error in describeAll"),Rr.error(t),Po(new Error,Bo.DESCRIBE_ALL_ERR)}}o(TU,"describeAll");async function Ho(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=gf.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:Hs,search_value:s,hash_values:[],get_attributes:[Q.WILDCARD_SEARCH_VALUE]},c=await qn(_);if(!c||c.length===0)throw Po(new Error,Bo.TABLE_NOT_FOUND(e.schema,e.table),Nf.NOT_FOUND);for await(let u of c)try{if(u.schema!==r)continue;if(i=u,!i.hash_attribute)throw Po(new Error,Bo.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:dU,search_value:r+"."+s,get_attributes:[SU]},E=await qn(l);E=oU.uniqBy(E,T=>T.attribute),n&&n.length>0&&(E=fU(n)),i.attributes=E,i.clustering_stream_name=_U.createNatsTableStreamName(u.schema,u.name);try{let T=aU.join(lU.getBaseSchemaPath(),i.schema.toString()),S=await Af.openEnvironment(T,i.name),A=Af.statDBI(S,i.hash_attribute);i.record_count=A.entryCount}catch(T){Rr.warn(`unable to stat table dbi due to ${T}`)}}catch(l){Rr.error(`There was an error getting attributes for table '${u.name}'`),Rr.error(l)}return i}o(Ho,"descTable");function fU(e){return e.reduce((t,r)=>(r.describe&&t.push({attribute:r.attribute_name}),t),[])}o(fU,"getAttrsByPerms");async function hU(e){let t=gf.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:[Of,Q.ID_ATTRIBUTE_STRING,Hs,Oc]},i=await qn(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:[Hs]},_=await EU(a);if(_&&_.length<1)throw Po(new Error,Bo.SCHEMA_NOT_FOUND(e.schema),Nf.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 Ho({schema:e.schema,table:_.name},c?c.attribute_permissions:null);u&&(a[u.name]=u)}}catch(c){Rr.error(`Error describing schema table '${e.schema}.${_}'`),Rr.error(c)}})),a}}o(hU,"describeSchema")});var Gs=d(($x,wf)=>{var xx=require("async"),vs=Yt(),kx=O(),{callbackify:Lf,promisify:RU}=require("util");wf.exports={setSchemaDataToGlobal:Cf,getTableSchema:gU,getSystemSchema:NU,setSchemaDataToGlobalAsync:RU(Cf)};var yf=vo(),AU=Lf(yf.describeAll),mU=Lf(yf.describeTable);function Cf(e){AU(null,(t,r)=>{if(t){e(t);return}r.system||(r.system=vs),global.hdb_schema=r,e(null,null)})}o(Cf,"setSchemaDataToGlobal");function bf(e,t){return e==="system"?vs[t]:global.hdb_schema[e][t]}o(bf,"returnSchema");function gU(e,t,r){!global.hdb_schema||!global.hdb_schema[e]||!global.hdb_schema[e][t]?pU(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,bf(e,t))}):r(null,bf(e,t))}o(gU,"getTableSchema");function pU(e,t,r){let s={table:t,schema:e};if(e==="system"){global.hdb_schema?global.hdb_schema.system=vs:global.hdb_schema={system:vs},r();return}mU(s,(n,i)=>{if(n){r(n);return}if(!i.schema&&!i.name){r();return}global.hdb_schema||(global.hdb_schema={system:vs}),global.hdb_schema[e]||(global.hdb_schema[e]={}),global.hdb_schema[e][t]=i,r()})}o(pU,"setTableDataToGlobal");function NU(){return vs}o(NU,"getSystemSchema")});var Jr=d((Yx,Uf)=>{"use strict";var qo=N_(),ot=I(),OU=require("util"),Fo=Ps(),IU=Gs(),Ic=O(),{handleHDBError:Ar,hdb_errors:CU}=J(),{HTTP_STATUS_CODES:jr}=CU,bU=OU.promisify(IU.getTableSchema),LU="updated",Df="inserted",Mf="upserted";Uf.exports={insert:wU,update:DU,upsert:MU,validation:yU,flush:UU};async function yU(e){if(ot.isEmpty(e))throw new Error("invalid update parameters defined.");if(ot.isEmptyOrZeroLength(e.schema))throw new Error("invalid schema specified.");if(ot.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await bU(e.schema,e.table),r=qo(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&&ot.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(!ot.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`);!ot.isEmpty(_[s])&&_[s]!==""&&n.has(ot.autoCast(_[s]))&&(_.skip=!0),n.add(ot.autoCast(_[s]));for(let c in _)i[c]=1}),i[s]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(i)}}o(yU,"validation");async function wU(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=qo(e);if(t)throw Ar(new Error,t.message,jr.BAD_REQUEST);let r=ot.checkSchemaTableExist(e.schema,e.table);if(r)throw Ar(new Error,r,jr.BAD_REQUEST);try{let s=await Fo.createRecords(e);return Go(Df,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time)}catch(s){throw s}}o(wU,"insertData");async function DU(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=qo(e);if(t)throw Ar(new Error,t.message,jr.BAD_REQUEST);let r=ot.checkSchemaTableExist(e.schema,e.table);if(r)throw Ar(new Error,r,jr.BAD_REQUEST);try{let s=await Fo.updateRecords(e);return ot.isEmpty(s.existing_rows)?Go(LU,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time):Go(s.update_action,[],e,s.hashes,void 0,s.txn_time)}catch(s){throw s}}o(DU,"updateData");async function MU(e){if(e.operation!=="upsert")throw Ar(new Error,"invalid operation, must be upsert",jr.INTERNAL_SERVER_ERROR);let t=qo(e);if(t)throw Ar(new Error,t.message,jr.BAD_REQUEST);let r=ot.checkSchemaTableExist(e.schema,e.table);if(r)throw Ar(new Error,r,jr.BAD_REQUEST);try{let s=await Fo.upsertRecords(e);return Go(Mf,s.written_hashes,e,[],s.new_attributes,s.txn_time)}catch(s){let n=`There was an error during an upsert op: ${s}`;throw Ar(s,null,null,Ic.ERR,n)}}o(MU,"upsertData");function Go(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===Df?(a.inserted_hashes=t,a.skipped_hashes=s,a):e===Mf?(a.upserted_hashes=t,a):(a.update_hashes=t,a.skipped_hashes=s,a)}o(Go,"returnObject");function UU(e){return Fo.flush(e.schema,e.table)}o(UU,"flush")});var Bf=d((Kx,Pf)=>{"use strict";var Vo=class{constructor(t,r,s){this.info_id=t,this.data_version_num=r,this.hdb_version_num=s}};o(Vo,"HdbInfoInsertObject");Pf.exports={HdbInfoInsertObject:Vo}});var Cc=d((Wx,Hf)=>{"use strict";var xo=class{constructor(t,r,s,n,i){this.operation=t,this.schema=r,this.table=s,this.hash_attribute=n,this.records=i}};o(xo,"InsertObject");var ko=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(ko,"NoSQLSeachObject");var $o=class{constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};o($o,"DeleteResponseObject");Hf.exports={InsertObject:xo,NoSQLSeachObject:ko,DeleteResponseObject:$o}});var qf=d((Qx,Gf)=>{"use strict";var vf=h(),Yo=class{constructor(t,r){this[vf.UPGRADE_JSON_FIELD_NAMES_ENUM.DATA_VERSION]=t,this[vf.UPGRADE_JSON_FIELD_NAMES_ENUM.UPGRADE_VERSION]=r}};o(Yo,"UpgradeObject");Gf.exports={UpgradeObject:Yo}});var Ko=d((jx,Vf)=>{"use strict";var at=require("prompt"),qs=require("chalk"),Ff=O(),mt=require("os"),bc=vr(),Lc=["yes","y"];async function PU(e){let t=`${mt.EOL}`+qs.bold.green("Your current HarperDB version requires that we complete an update process.")+`${mt.EOL}If a backup of your data has not been created, we recommend you cancel this process and backup before proceeding.${mt.EOL}${mt.EOL}You can read more about the changes in this upgrade at https://harperdb.io/developers/release-notes/${mt.EOL}`;at.override=bc(["CONFIRM_UPGRADE"]),at.start(),at.message=t;let r={properties:{CONFIRM_UPGRADE:{description:qs.magenta(`${mt.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 at.get([r])}catch(n){return Ff.error("There was an error when prompting user about an upgrade."),Ff.error(n),!1}return Lc.includes(s.CONFIRM_UPGRADE)}o(PU,"forceUpdatePrompt");async function BU(e){let t=`${mt.EOL}`+qs.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.${mt.EOL}`);at.override=bc(["CONFIRM_DOWNGRADE"]),at.start(),at.message=t;let r={properties:{CONFIRM_DOWNGRADE:{description:qs.magenta(`${mt.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 at.get([r]);return Lc.includes(s.CONFIRM_DOWNGRADE)}o(BU,"forceDowngradePrompt");async function HU(){let e=`${mt.EOL}`+qs.bold.green("We now require a Certifacte Authority certificate. HarperDB can generate all new certificates for you (your existing certificates will be backed up) or you can keep any existing certificates and add your own CA certificate. To add your own CA certificate set the <certificateAuthority> parameter in harperdb-config.yaml");at.override=bc(["GENERATE_CERTS"]),at.start(),at.message=e;let t={properties:{GENERATE_CERTS:{description:qs.magenta(`${mt.EOL}[GENERATE_CERTS] Do you want HarperDB to generate all new certificates? (yes/no)`),pattern:/y(es)?$|n(o)?$/,message:"Must respond 'yes' or 'no'",default:"yes",required:!0}}},r=await at.get([t]);return Lc.includes(r.GENERATE_CERTS)}o(HU,"upgradeCertsPrompt");Vf.exports={forceUpdatePrompt:PU,forceDowngradePrompt:BU,upgradeCertsPrompt:HU}});var yc=d((Jx,xf)=>{"use strict";var Wo=class{constructor(t){this.version=t,this.sync_functions=[],this.async_functions=[]}};o(Wo,"UpgradeDirective");xf.exports=Wo});var $f=d((tk,kf)=>{"use strict";var vU=I(),GU=We(),Zx=O(),Xx=require("path"),zx=require("fs"),ek=h();kf.exports={getOldPropsValue:qU};function qU(e,t,r=!1){let s=t.getRaw(e);return vU.isNotEmptyAndHasValue(s)?s:r?GU.getDefaultConfig(e):""}o(qU,"getOldPropsValue")});var Qf=d((rk,Wf)=>{"use strict";var mr=require("path"),gr=require("fs-extra"),FU=require("properties-reader"),VU=yc(),oe=O(),{getOldPropsValue:W}=$f(),{HDB_SETTINGS_NAMES:N,CONFIG_PARAMS:Zr}=h(),Xr=We(),Qo=Y(),Yf=I(),Dt=h(),wc=new VU("3.1.0"),Kf=[];function xU(){let e=FU(Qo.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