harperdb 4.1.1 → 4.1.2

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.
@@ -1,7 +1,7 @@
1
- "use strict";var lf=Object.defineProperty;var a=(e,t)=>lf(e,"name",{value:t,configurable:!0});var T=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var f=T((hP,V_)=>{"use strict";var De=require("path"),Ef=require("fs");function df(){let e=__dirname;for(;!Ef.existsSync(De.join(e,"package.json"));){let t=De.dirname(e);if(t===e)throw new Error("Could not find package root");e=t}return e}a(df,"getHDBPackageRoot");var ct=df(),M_="js",Gs=M_,hf="harperdb-config.yaml",Tf="defaultConfig.yaml",Sf="hdb",w_=`harperdb.${Gs}`,L_=`customFunctionsServer.${Gs}`,ff=`restartHdb.${Gs}`,aa="HarperDB",vs="Custom Functions",qs="Clustering Hub",Fs="Clustering Leaf",mf="Clustering Ingest Service",Af="Clustering Reply Service",Rf="foreground.pid",gf={HDB:aa,CLUSTERING_HUB:qs,CLUSTERING_LEAF:Fs,CLUSTERING_INGEST_SERVICE:mf,CLUSTERING_REPLY_SERVICE:Af,CUSTOM_FUNCTIONS:vs,RESTART_HDB:"Restart HDB",INSTALL:"Install",RUN:"Run",STOP:"Stop",UPGRADE:"Upgrade",REGISTER:"Register",JOB:"Job",CLUSTERING_UPGRADE_4_0_0:"Upgrade-4-0-0"},Nf={HDB:"hdb.log",INSTALL:"install.log",CLUSTERING_HUB:"clustering_hub.log",CLUSTERING_LEAF:"clustering_leaf.log"},pf={NOTIFY:"notify",FATAL:"fatal",ERROR:"error",WARN:"warn",INFO:"info",DEBUG:"debug",TRACE:"trace"},Of={harperdb:aa,"clustering hub":qs,"clustering leaf":Fs,"custom functions":vs,custom_functions:vs,clustering:"clustering","clustering config":"clustering config",clustering_config:"clustering_config",http_workers:"http_workers"},If={CLUSTERING_HUB_PROC_DESCRIPTOR:qs,CLUSTERING_LEAF_PROC_DESCRIPTOR:Fs},ia={HDB:De.join(ct,"server/harperdb"),CUSTOM_FUNCTIONS:De.join(ct,"server/customFunctions"),CLUSTERING_HUB:De.join(ct,"server/nats"),CLUSTERING_LEAF:De.join(ct,"server/nats")},bf={HDB:De.join(ia.HDB,w_),CUSTOM_FUNCTIONS:De.join(ia.CUSTOM_FUNCTIONS,L_)},Cf={MAIN:"bin/harperdb.js",NATS_INGEST_SERVICE:De.join(ct,"launchServiceScripts/launchNatsIngestService.js"),NATS_REPLY_SERVICE:De.join(ct,"launchServiceScripts/launchNatsReplyService.js"),NODES_UPGRADE_4_0_0:De.join(ct,"launchServiceScripts/launchUpdateNodes4-0-0.js")},yf={SUPER_USER:"super_user",CLUSTER_USER:"cluster_user"},U_="support@harperdb.io",Mf="customer-success@harperdb.io",D_=1,wf=4141,P_="https://harperdbhelp.zendesk.com/hc/en-us/requests/new",Lf="https://www.harperdb.io/product",Uf=`For support, please submit a request at ${P_} or contact ${U_}`,H_=`For license support, please contact ${Mf}`,Df="None of the specified records were found.",Pf="hash attribute not found",Hf=`Your current license only supports ${D_} role. ${H_}`,Bf="Your current license only supports 3 connections to a node.",vf="127.0.0.1",Gf=1,qf=/^\.$/,Ff=/^\.\.$/,xf="U+002E",Vf=/\//g,kf="U+002F",Yf=/U\+002F/g,$f=/^U\+002E$/,Kf=/^U\+002EU\+002E$/,Wf="d",Qf=999999,Jf="*",Xf="--max-old-space-size=",Zf="system",zf="__hdb_hash",jf=".harperdb",em=".hdb",tm="keys",rm="hdb_boot_properties.file",sm=".updateConfig.json",nm="SIGTSTP",im=24,am=6e4,om=448,_m="blob",cm="trash",um="schema",lm="transactions",Em=".count",dm="id",hm="PROCESS_NAME",B_={SETTINGS_PATH_KEY:"settings_path"},v_=require("lodash"),Tm={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"},Sm={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},fm={DATA_VERSION:"data_version",UPGRADE_VERSION:"upgrade_version"},mm={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"},Am={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"},fe="hdb_internal:",Rm={CREATE_SCHEMA:fe+"create_schema",CREATE_TABLE:fe+"create_table",CREATE_ATTRIBUTE:fe+"create_attribute",ADD_USER:fe+"add_user",ALTER_USER:fe+"alter_user",DROP_USER:fe+"drop_user",HDB_NODES:fe+"hdb_nodes",HDB_USERS:fe+"hdb_users",HDB_WORKERS:fe+"hdb_workers",CATCHUP:fe+"catchup",SCHEMA_CATCHUP:fe+"schema_catchup",WORKER_ROOM:fe+"cluster_workers"},gm={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"},Nm="060493.ks",pm=".license",Om={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",CLUSTER_NETWORK:"cluster_network",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",PURGE_STREAM:"purge_stream"},Im={CSV:".csv",JSON:".json"},bm={AWS_ACCESS_KEY:"aws_access_key_id",AWS_SECRET:"aws_secret_access_key",AWS_BUCKET:"bucket",AWS_FILE_KEY:"key",REGION:"region"},Cm={SELECT:"select",INSERT:"insert",UPDATE:"update",DELETE:"delete"},yr={};yr[m.INSERT]=m.INSERT;yr[m.UPDATE]=m.UPDATE;yr[m.UPSERT]=m.UPSERT;yr[m.DELETE]=m.DELETE;var H=Object.create(null);H[m.DESCRIBE_ALL]=m.DESCRIBE_ALL;H[m.DESCRIBE_TABLE]=m.DESCRIBE_TABLE;H[m.DESCRIBE_SCHEMA]=m.DESCRIBE_SCHEMA;H[m.READ_LOG]=m.READ_LOG;H[m.ADD_NODE]=m.ADD_NODE;H[m.LIST_USERS]=m.LIST_USERS;H[m.LIST_ROLES]=m.LIST_ROLES;H[m.USER_INFO]=m.USER_INFO;H[m.SQL]=m.SQL;H[m.GET_JOB]=m.GET_JOB;H[m.SEARCH_JOBS_BY_START_DATE]=m.SEARCH_JOBS_BY_START_DATE;H[m.DELETE_FILES_BEFORE]=m.DELETE_FILES_BEFORE;H[m.EXPORT_LOCAL]=m.EXPORT_LOCAL;H[m.EXPORT_TO_S3]=m.EXPORT_TO_S3;H[m.CLUSTER_STATUS]=m.CLUSTER_STATUS;H[m.REMOVE_NODE]=m.REMOVE_NODE;H[m.RESTART]=m.RESTART;H[m.CUSTOM_FUNCTIONS_STATUS]=m.CUSTOM_FUNCTIONS_STATUS;H[m.GET_CUSTOM_FUNCTIONS]=m.GET_CUSTOM_FUNCTIONS;H[m.GET_CUSTOM_FUNCTION]=m.GET_CUSTOM_FUNCTION;H[m.SET_CUSTOM_FUNCTION]=m.SET_CUSTOM_FUNCTION;H[m.DROP_CUSTOM_FUNCTION]=m.DROP_CUSTOM_FUNCTION;H[m.ADD_CUSTOM_FUNCTION_PROJECT]=m.ADD_CUSTOM_FUNCTION_PROJECT;H[m.DROP_CUSTOM_FUNCTION_PROJECT]=m.DROP_CUSTOM_FUNCTION_PROJECT;H[m.PACKAGE_CUSTOM_FUNCTION_PROJECT]=m.PACKAGE_CUSTOM_FUNCTION_PROJECT;H[m.DEPLOY_CUSTOM_FUNCTION_PROJECT]=m.DEPLOY_CUSTOM_FUNCTION_PROJECT;var ym={RUN:"run",START:"start",INSTALL:"install",REGISTER:"register",STOP:"stop",RESTART:"restart",VERSION:"version",UPGRADE:"upgrade",HELP:"help"},Mm={point:"point",lineString:"lineString",multiLineString:"multiLineString",multiPoint:"multiPoint",multiPolygon:"multiPolygon",polygon:"polygon"},G_={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",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"},wm=v_.invert(G_),S={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_LEAFSERVER_STREAMS_MAXAGE:"clustering_leafServer_streams_maxAge",CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES:"clustering_leafServer_streams_maxBytes",CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS:"clustering_leafServer_streams_maxMsgs",CLUSTERING_LEAFSERVER_STREAMS_PATH:"clustering_leafServer_streams_path",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",CLUSTERING_TLS_VERIFY:"clustering_tls_verify",CLUSTERING_LOGLEVEL:"clustering_logLevel",CLUSTERING_REPUBLISHMESSAGES:"clustering_republishMessages",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",HTTP_SESSION_AFFINITY:"http_sessionAffinity",LOCALSTUDIO_ENABLED:"localStudio_enabled",LOGGING_FILE:"logging_file",LOGGING_LEVEL:"logging_level",LOGGING_ROOT:"logging_root",LOGGING_ROTATION_ENABLED:"logging_rotation_enabled",LOGGING_ROTATION_COMPRESS:"logging_rotation_compress",LOGGING_ROTATION_INTERVAL:"logging_rotation_interval",LOGGING_ROTATION_MAXSIZE:"logging_rotation_maxSize",LOGGING_ROTATION_PATH:"logging_rotation_path",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",STORAGE_CACHING:"storage_caching",STORAGE_COMPRESSION:"storage_compression",STORAGE_NOREADAHEAD:"storage_noReadAhead",STORAGE_PREFETCHWRITES:"storage_prefetchWrites",STORAGE_ENCRYPTION:"storage_encryption",STORAGE_PATH:"storage_path",STORAGE_AUDIT_PATH:"storage_audit_path",SCHEMAS:"schemas"},q_={settings_path:B_.SETTINGS_PATH_KEY,hdb_root_key:S.ROOTPATH,hdb_root:S.ROOTPATH,server_port_key:S.OPERATIONSAPI_NETWORK_PORT,server_port:S.OPERATIONSAPI_NETWORK_PORT,cert_key:S.OPERATIONSAPI_TLS_CERTIFICATE,certificate:S.OPERATIONSAPI_TLS_CERTIFICATE,private_key_key:S.OPERATIONSAPI_TLS_PRIVATEKEY,private_key:S.OPERATIONSAPI_TLS_PRIVATEKEY,http_secure_enabled_key:S.OPERATIONSAPI_NETWORK_HTTPS,https_on:S.OPERATIONSAPI_NETWORK_HTTPS,cors_enabled_key:S.OPERATIONSAPI_NETWORK_CORS,cors_on:S.OPERATIONSAPI_NETWORK_CORS,cors_whitelist_key:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_whitelist:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_accesslist_key:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_accesslist:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,log_level_key:S.LOGGING_LEVEL,log_level:S.LOGGING_LEVEL,log_path_key:S.LOGGING_ROOT,log_path:S.LOGGING_ROOT,props_env_key:S.OPERATIONSAPI_NODEENV,node_env:S.OPERATIONSAPI_NODEENV,clustering_node_name_key:S.CLUSTERING_NODENAME,node_name:S.CLUSTERING_NODENAME,clustering_enabled_key:S.CLUSTERING_ENABLED,clustering:S.CLUSTERING_ENABLED,max_http_threads:S.HTTP_THREADS,max_hdb_processes:S.HTTP_THREADS,server_timeout_key:S.OPERATIONSAPI_NETWORK_TIMEOUT,server_timeout_ms:S.OPERATIONSAPI_NETWORK_TIMEOUT,server_keep_alive_timeout_key:S.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,server_keep_alive_timeout:S.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,server_headers_timeout_key:S.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,server_headers_timeout:S.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,disable_transaction_log_key:S.LOGGING_AUDITLOG,disable_transaction_log:S.LOGGING_AUDITLOG,operation_token_timeout_key:S.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,operation_token_timeout:S.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,refresh_token_timeout_key:S.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,refresh_token_timeout:S.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,custom_functions_enabled_key:S.CUSTOMFUNCTIONS_ENABLED,custom_functions:S.CUSTOMFUNCTIONS_ENABLED,custom_functions_port_key:S.CUSTOMFUNCTIONS_NETWORK_PORT,custom_functions_port:S.CUSTOMFUNCTIONS_NETWORK_PORT,custom_functions_directory_key:S.CUSTOMFUNCTIONS_ROOT,custom_functions_directory:S.CUSTOMFUNCTIONS_ROOT,max_custom_function_processes:S.HTTP_THREADS,log_to_file:S.LOGGING_FILE,log_to_stdstreams:S.LOGGING_STDSTREAMS,run_in_foreground:S.OPERATIONSAPI_FOREGROUND,local_studio_on:S.LOCALSTUDIO_ENABLED,clustering_port:S.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT,clustering_user:S.CLUSTERING_USER,clustering_enabled:S.CLUSTERING_ENABLED,clustering_hubserver_cluster_name:S.CLUSTERING_HUBSERVER_CLUSTER_NAME,clustering_hubserver_cluster_network_port:S.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT,clustering_hubserver_cluster_network_routes:S.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_ROUTES,clustering_hubserver_leafnodes_network_port:S.CLUSTERING_HUBSERVER_LEAFNODES_NETWORK_PORT,clustering_hubserver_network_port:S.CLUSTERING_HUBSERVER_NETWORK_PORT,clustering_leafserver_network_port:S.CLUSTERING_LEAFSERVER_NETWORK_PORT,clustering_leafserver_network_routes:S.CLUSTERING_LEAFSERVER_NETWORK_ROUTES,clustering_leafserver_streams_maxage:S.CLUSTERING_LEAFSERVER_STREAMS_MAXAGE,clustering_leafserver_streams_maxbytes:S.CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES,clustering_leafserver_streams_maxmsgs:S.CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS,clustering_leafserver_streams_path:S.CLUSTERING_LEAFSERVER_STREAMS_PATH,clustering_nodename:S.CLUSTERING_NODENAME,clustering_tls_certificate:S.CLUSTERING_TLS_CERTIFICATE,clustering_tls_privatekey:S.CLUSTERING_TLS_PRIVATEKEY,clustering_tls_certificateauthority:S.CLUSTERING_TLS_CERT_AUTH,clustering_tls_insecure:S.CLUSTERING_TLS_INSECURE,clustering_tls_verify:S.CLUSTERING_TLS_VERIFY,clustering_loglevel:S.CLUSTERING_LOGLEVEL,clustering_republishmessages:S.CLUSTERING_REPUBLISHMESSAGES,customfunctions_enabled:S.CUSTOMFUNCTIONS_ENABLED,customfunctions_network_port:S.CUSTOMFUNCTIONS_NETWORK_PORT,customfunctions_tls_certificate:S.CUSTOMFUNCTIONS_TLS_CERTIFICATE,customfunctions_network_cors:S.CUSTOMFUNCTIONS_NETWORK_CORS,customfunctions_network_corsaccesslist:S.CUSTOMFUNCTIONS_NETWORK_CORSACCESSLIST,customfunctions_network_headerstimeout:S.CUSTOMFUNCTIONS_NETWORK_HEADERSTIMEOUT,customfunctions_network_https:S.CUSTOMFUNCTIONS_NETWORK_HTTPS,customfunctions_network_keepalivetimeout:S.CUSTOMFUNCTIONS_NETWORK_KEEPALIVETIMEOUT,customfunctions_tls_privatekey:S.CUSTOMFUNCTIONS_TLS_PRIVATEKEY,customfunctions_tls_certificateauthority:S.CUSTOMFUNCTIONS_TLS_CERT_AUTH,customfunctions_network_timeout:S.CUSTOMFUNCTIONS_NETWORK_TIMEOUT,customfunctions_nodeenv:S.CUSTOMFUNCTIONS_NODEENV,http_threads:S.HTTP_THREADS,http_session_affinity:S.HTTP_SESSION_AFFINITY,customfunctions_processes:S.HTTP_THREADS,customfunctions_root:S.CUSTOMFUNCTIONS_ROOT,localstudio_enabled:S.LOCALSTUDIO_ENABLED,logging_file:S.LOGGING_FILE,logging_level:S.LOGGING_LEVEL,logging_root:S.LOGGING_ROOT,logging_rotation_enabled:S.LOGGING_ROTATION_ENABLED,logging_rotation_compress:S.LOGGING_ROTATION_COMPRESS,logging_rotation_interval:S.LOGGING_ROTATION_INTERVAL,logging_rotation_maxsize:S.LOGGING_ROTATION_MAXSIZE,logging_rotation_path:S.LOGGING_ROTATION_PATH,logging_stdstreams:S.LOGGING_STDSTREAMS,logging_auditlog:S.LOGGING_AUDITLOG,operationsapi_authentication_operationtokentimeout:S.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,operationsapi_authentication_refreshtokentimeout:S.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,operationsapi_foreground:S.OPERATIONSAPI_FOREGROUND,operationsapi_tls_certificate:S.OPERATIONSAPI_TLS_CERTIFICATE,operationsapi_network_cors:S.OPERATIONSAPI_NETWORK_CORS,operationsapi_network_corsaccesslist:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,operationsapi_network_headerstimeout:S.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,operationsapi_network_https:S.OPERATIONSAPI_NETWORK_HTTPS,operationsapi_network_keepalivetimeout:S.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,operationsapi_network_port:S.OPERATIONSAPI_NETWORK_PORT,operationsapi_tls_privatekey:S.OPERATIONSAPI_TLS_PRIVATEKEY,operationsapi_tls_certificateauthority:S.OPERATIONSAPI_TLS_CERT_AUTH,operationsapi_network_timeout:S.OPERATIONSAPI_NETWORK_TIMEOUT,operationsapi_nodeenv:S.OPERATIONSAPI_NODEENV,operationsapi_root:S.ROOTPATH,schemas:S.SCHEMAS,storage_path:S.STORAGE_PATH};for(let e in S){let t=S[e];q_[t.toLowerCase()]=t}var Lm={TABLES:"tables",PATH:"path",AUDIT_PATH:"auditPath"},Um={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"},Dm={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"},Pm={BIDIRECTIONAL:"BIDIRECTIONAL",OUTBOUND:"OUTBOUND",INBOUND:"INBOUND"},Hm={FILE_SYSTEM:"fs",LMDB:"lmdb"},Bm={API_CALL_DEFAULT:1e4,VERSION_DEFAULT:"2.2.0"},vm={DEVELOPMENT:8192,DEFAULT:512},Gm={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"},qm={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"},Fm={ENOENT:"ENOENT",EACCES:"EACCES"},F_={CREATED_TIME:"__createdtime__",UPDATED_TIME:"__updatedtime__"},xm="__clustering__",Vm=Object.values(F_),km=15984864e5,x_={LESS:"<",LESS_OR_EQ:"<=",GREATER:">",GREATER_OR_EQ:">=",BETWEEN:"..."},Ym=v_.invert(x_),$m={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"},Km=111,Wm=`\r
2
- `,Qm={READ:"read",INSERT:"insert",UPDATE:"update",DELETE:"delete"},Jm=["*","%"],Xm="unauthorized_access",Zm="func_val",zm={HASH_VALUE:"hash_value",TIMESTAMP:"timestamp",USERNAME:"username"},jm={JWT_PRIVATE_KEY_NAME:".jwtPrivate.key",JWT_PUBLIC_KEY_NAME:".jwtPublic.key",JWT_PASSPHRASE_NAME:".jwtPass"},eA={SHUTDOWN:"shutdown",CHILD_STARTED:"child_started",CHILD_STOPPED:"child_stopped",SCHEMA:"schema",USER:"user",CLUSTER_STATUS_RESPONSE:"cluster_status_response",CLUSTER_STATUS_REQUEST:"cluster_status_request",METRICS:"metrics",GET_METRICS:"get_metrics",RESTART:"restart"},tA={HDB_CORE:"hdb_core",CUSTOM_FUNCTIONS:"custom_functions"},rA={HTTP:"http"},sA={STOPPED:"stopped",ONLINE:"online"},nA="3.x.x";V_.exports={LOCAL_HARPERDB_OPERATIONS:H,HDB_SUPPORT_ADDRESS:U_,HDB_SUPPORT_URL:P_,HDB_PRICING_URL:Lf,SUPPORT_HELP_MSG:Uf,LICENSE_HELP_MSG:H_,HDB_PROC_NAME:w_,HDB_PROC_DESCRIPTOR:aa,CLUSTERING_LEAF_PROC_DESCRIPTOR:Fs,CLUSTERING_HUB_PROC_DESCRIPTOR:qs,SYSTEM_SCHEMA_NAME:Zf,HASH_FOLDER_NAME:zf,HDB_HOME_DIR_NAME:jf,UPDATE_FILE_NAME:sm,LICENSE_KEY_DIR_NAME:tm,BOOT_PROPS_FILE_NAME:rm,JOB_TYPE_ENUM:Um,JOB_STATUS_ENUM:Om,SYSTEM_TABLE_NAMES:mm,SYSTEM_TABLE_HASH_ATTRIBUTES:Am,OPERATIONS_ENUM:m,VALID_S3_FILE_TYPES:Im,S3_BUCKET_AUTH_KEYS:bm,VALID_SQL_OPS_ENUM:Cm,GEO_CONVERSION_ENUM:Mm,HDB_SETTINGS_NAMES:G_,HDB_SETTINGS_NAMES_REVERSE_LOOKUP:wm,SERVICE_ACTIONS_ENUM:ym,CLUSTER_MESSAGE_TYPE_ENUM:Dm,CLUSTER_CONNECTION_DIRECTION_ENUM:Pm,CLUSTER_EVENTS_DEFS_ENUM:Gm,PERIOD_REGEX:qf,DOUBLE_PERIOD_REGEX:Ff,UNICODE_PERIOD:xf,FORWARD_SLASH_REGEX:Vf,UNICODE_FORWARD_SLASH:kf,ESCAPED_FORWARD_SLASH_REGEX:Yf,ESCAPED_PERIOD_REGEX:$f,ESCAPED_DOUBLE_PERIOD_REGEX:Kf,REG_KEY_FILE_NAME:Nm,RESTART_TIMEOUT_MS:am,HDB_FILE_PERMISSIONS:om,SCHEMA_DIR_NAME:um,TRANSACTIONS_DIR_NAME:lm,LIMIT_COUNT_NAME:Em,ID_ATTRIBUTE_STRING:dm,INSERT_MODULE_ENUM:Sm,UPGRADE_JSON_FIELD_NAMES_ENUM:fm,RESTART_CODE:nm,RESTART_CODE_NUM:im,CLUSTER_OPERATIONS:yr,SYSTEM_DEFAULT_ATTRIBUTE_NAMES:gm,HDB_INTERNAL_SC_CHANNEL_PREFIX:fe,INTERNAL_SC_CHANNELS:Rm,CLUSTERING_MESSAGE_TYPES:$m,HDB_FILE_SUFFIX:em,BLOB_FOLDER_NAME:_m,HDB_TRASH_DIR:cm,ORIGINATOR_SET_VALUE:Km,LICENSE_VALUES:Bm,RAM_ALLOCATION_ENUM:vm,STORAGE_TYPES_ENUM:Hm,TIME_STAMP_NAMES_ENUM:F_,TIME_STAMP_NAMES:Vm,PERMS_UPDATE_RELEASE_TIMESTAMP:km,SEARCH_NOT_FOUND_MESSAGE:Df,SEARCH_ATTRIBUTE_NOT_FOUND:Pf,LICENSE_ROLE_DENIED_RESPONSE:Hf,LICENSE_MAX_CONNS_REACHED:Bf,BASIC_LICENSE_MAX_NON_CU_ROLES:D_,BASIC_LICENSE_CLUSTER_CONNECTION_LIMIT_WS_ERROR_CODE:wf,VALUE_SEARCH_COMPARATORS:x_,VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP:Ym,LICENSE_FILE_NAME:pm,WEBSOCKET_CLOSE_CODE_DESCRIPTION_LOOKUP:qm,NEW_LINE:Wm,BASIC_LICENSE_MAX_CLUSTER_USER_ROLES:Gf,MOMENT_DAYS_TAG:Wf,API_TURNOVER_SEC:Qf,LOOPBACK:vf,CODE_EXTENSION:Gs,WILDCARD_SEARCH_VALUE:Jf,NODE_ERROR_CODES:Fm,JAVASCRIPT_EXTENSION:M_,PERMS_CRUD_ENUM:Qm,UNAUTHORIZED_PERMISSION_NAME:Xm,SEARCH_WILDCARDS:Jm,FUNC_VAL:Zm,READ_AUDIT_LOG_SEARCH_TYPES_ENUM:zm,JWT_ENUM:jm,CLUSTERING_FLAG:xm,ITC_EVENT_TYPES:eA,CUSTOM_FUNCTION_PROC_NAME:L_,CUSTOM_FUNCTION_PROC_DESCRIPTOR:vs,SERVICES:tA,THREAD_TYPES:rA,MEM_SETTING_KEY:Xf,HDB_RESTART_SCRIPT:ff,PROCESS_DESCRIPTORS:gf,SERVICE_SERVERS:bf,SERVICE_SERVERS_CWD:ia,PROCESS_DESCRIPTORS_VALIDATE:Of,LAUNCH_SERVICE_SCRIPTS:Cf,LOG_LEVELS:pf,PROCESS_NAME_ENV_PROP:hm,LOG_NAMES:Nf,PM2_PROCESS_STATUSES:sA,CONFIG_PARAM_MAP:q_,CONFIG_PARAMS:S,HDB_CONFIG_FILE:hf,HDB_DEFAULT_CONFIG_FILE:Tf,ROLE_TYPES_ENUM:yf,BOOT_PROP_PARAMS:B_,INSTALL_PROMPTS:Tm,HDB_ROOT_DIR_NAME:Sf,CLUSTERING_PROCESSES:If,FOREGROUND_PID_FILE:Rf,PACKAGE_ROOT:ct,PRE_4_0_0_VERSION:nA,SCHEMAS_PARAM_CONFIG:Lm}});var K_=T((SP,$_)=>{"use strict";var k_=require("minimist");$_.exports=iA;function iA(e=[],t=!1){if(!Array.isArray(e))return{};let r,s;t?(r=Y_(process.env),s=Y_(k_(process.argv))):(r=process.env,s=k_(process.argv));let n={};for(let i=0,o=e.length;i<o;i++){let _=e[i];s[_]!==void 0?n[_]=s[_].toString().trim():r[_]!==void 0&&(n[_]=r[_].toString().trim())}return n}a(iA,"assignCMDENVVariables");function Y_(e){let t,r=Object.keys(e),s=r.length,n={};for(;s--;)t=r[s],n[t.toLowerCase()]=e[t];return n}a(Y_,"objKeysToLowerCase")});var N=T((mP,nc)=>{"use strict";var jt=require("fs-extra"),{workerData:aA,threadId:oA}=require("worker_threads"),ut=require("path"),J_=require("yaml"),X_=require("properties-reader"),J=f(),W_=K_(),_A=require("os"),{PACKAGE_ROOT:_a}=f(),Z_={};for(let e in console)Z_[e]=console[e];var _e={notify:7,fatal:6,error:5,warn:4,info:3,debug:2,trace:1},z_={STDOUT:"stdOut",STDERR:"stdErr"},cA=ut.join(_a,"logs"),uA=ut.join(_a,"config/yaml/",J.HDB_DEFAULT_CONFIG_FILE),lA=1e4,Ze,ze,oe,xs,Vs,ks,wr,Mr;Mr===void 0&&j_();nc.exports={notify:rc,fatal:sc,error:Lr,warn:Ea,info:Ys,debug:la,trace:ua,setLogLevel:mA,log_level:oe,loggerWithTag:EA,suppressLogging:dA,initLogSettings:j_,setupConsoleLogging:ec,logCustomLevel:SA,closeLogFile:ca,getLogFilePath:()=>ks,OUTPUTS:z_};function j_(e=!1){try{if(Mr===void 0||e){ca();let t=fA();Mr=X_(t);let r=W_(["ROOTPATH"]);({level:oe,config_log_path:Vs,to_file:Ze,to_stream:ze}=AA(r.ROOTPATH?ut.join(r.ROOTPATH,J.HDB_CONFIG_FILE):Mr.get("settings_path"))),xs=J.LOG_NAMES.HDB,ks=ut.join(Vs,xs)}}catch(t){if(Mr=void 0,t.code===J.NODE_ERROR_CODES.ENOENT){let r=W_(Object.keys(J.CONFIG_PARAM_MAP),!0);for(let o in r){let _=J.CONFIG_PARAM_MAP[o];_&&_.toLowerCase();let c=r[o];if(_===J.CONFIG_PARAMS.LOGGING_LEVEL){oe=c;continue}if(_===J.CONFIG_PARAMS.LOGGING_STDSTREAMS){ze=c;continue}_===J.CONFIG_PARAMS.LOGGING_FILE&&(Ze=_)}let{default_level:s,default_to_file:n,default_to_stream:i}=RA();Ze=Ze===void 0?n:Ze,Ze=Q_(Ze),ze=ze===void 0?i:ze,ze=Q_(ze),oe=oe===void 0?s:oe,Vs=cA,xs=J.LOG_NAMES.INSTALL,ks=ut.join(Vs,xs);return}throw Lr("Error initializing log settings"),Lr(t),t}ec()}a(j_,"initLogSettings");var oa=!0;function ec(){zt("error",Lr),zt("warn",Ea),zt("log",Ys),zt("info",Ys),zt("debug",la),zt("trace",ua)}a(ec,"setupConsoleLogging");function zt(e,t){console[e]=function(...r){if(oa&&t(...r),!/PM2 log:|App \[/.test(r[0]))return Z_[e](...r)}}a(zt,"logConsole");function EA(e){let t={tagName:e.replace(/ /g,"-")};return{notify:r(rc),fatal:r(sc),error:r(Lr),warn:r(Ea),info:r(Ys),debug:r(la),trace:r(ua)};function r(s){return function(...n){return s(t,...n)}}}a(EA,"loggerWithTag");function dA(e){try{oa=!1,e()}finally{oa=!0}}a(dA,"suppressLogging");var hA=aA?.name?.replace(/ /g,"-")||"main";function je(e,t){let r=new Date(Date.now()).toISOString(),s="",n=t.length,i=n-1,o=[e],_=0,c;for(typeof t[0]=="object"&&(t[0]?.tagName?(o.push(t[0]?.tagName),_++):t[0]?.serviceName&&(c=t[0]?.serviceName,_++)),o.unshift(c||hA+"/"+oA);_<n;_++){let u=t[_];u instanceof Error&&u.stack?s+=u.stack:typeof u=="object"?s+=JSON.stringify(u):s+=u,_<i&&(s+=" ")}return`${r} [${o.join("] [")}]: ${s}
3
- `}a(je,"createLogRecord");function Ur(e){Ze&&tc(e),ze&&process.stdout.write(e)}a(Ur,"logStdOut");function $s(e){Ze&&tc(e),ze&&process.stderr.write(e)}a($s,"logStdErr");function tc(e){TA(),jt.appendFileSync(wr,e)}a(tc,"logToFile");function ca(){try{jt.closeSync(wr)}catch{}wr=null}a(ca,"closeLogFile");function TA(){wr||(wr=jt.openSync(ks,"a"),setTimeout(()=>{ca()},lA).unref())}a(TA,"openLogFile");function Ys(...e){_e[oe]<=_e.info&&Ur(je("info",e))}a(Ys,"info");function ua(...e){_e[oe]<=_e.trace&&Ur(je("trace",e))}a(ua,"trace");function Lr(...e){_e[oe]<=_e.error&&$s(je("error",e))}a(Lr,"error");function la(...e){_e[oe]<=_e.debug&&Ur(je("debug",e))}a(la,"debug");function rc(...e){_e[oe]<=_e.notify&&Ur(je("notify",e))}a(rc,"notify");function sc(...e){_e[oe]<=_e.fatal&&$s(je("fatal",e))}a(sc,"fatal");function Ea(...e){_e[oe]<=_e.warn&&$s(je("warn",e))}a(Ea,"warn");function SA(e,t,...r){t===z_.STDERR?$s(je(e,r)):Ur(je(e,r))}a(SA,"logCustomLevel");function fA(){let e;try{e=_A.homedir()}catch{e=process.env.HOME}e||(e="~/");let t=ut.join(e,J.HDB_HOME_DIR_NAME,J.BOOT_PROPS_FILE_NAME);return jt.existsSync(t)||(t=ut.join(_a,"utility/hdb_boot_properties.file")),t}a(fA,"getPropsFilePath");function mA(e){oe=e}a(mA,"setLogLevel");function Q_(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}a(Q_,"autoCastBoolean");function AA(e){try{if(e.includes("config/settings.js")){let o=X_(e);return{level:o.get(J.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY),config_log_path:ut.dirname(o.get(J.HDB_SETTINGS_NAMES.LOG_PATH_KEY)),to_file:o.get(J.HDB_SETTINGS_NAMES.LOG_TO_FILE),to_stream:o.get(J.HDB_SETTINGS_NAMES.LOG_TO_STDSTREAMS)}}let t=J_.parseDocument(jt.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===J.NODE_ERROR_CODES.ENOENT)throw t;console.error("Error accessing config file for logging"),console.error(t)}}a(AA,"getLogConfig");function RA(){try{let e=J_.parseDocument(jt.readFileSync(uA,"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)}}a(RA,"getDefaultConfig")});var ac=T((RP,ic)=>{"use strict";var gA=require("util"),NA=require("path"),pA=require("child_process"),OA=gA.promisify(pA.execFile),IA=1e3*1e3*10;ic.exports={findPs:bA};async function bA(e){let t={};try{await Promise.all(["comm","args","ppid","uid","%cpu","%mem"].map(async r=>{let{stdout:s}=await OA("ps",["wwxo",`pid,${r}`],{maxBuffer:IA});for(let n of s.trim().split(`
4
- `).slice(1)){n=n.trim();let[i]=n.split(" ",1),o=n.slice(i.length+1).trim();t[i]===void 0&&(t[i]={}),t[i][r]=o}}))}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:NA.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"])}))}a(bA,"findPs")});var ee=T((NP,_c)=>{"use strict";var CA="__dbis__",yA="__environment_name__",MA="__dbi_defintion__",wA={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"},LA=["__createdtime__","__updatedtime__"],UA="\uFFFF",oc={TIMESTAMP:"timestamp",HASH_VALUE:"hash_value",USER_NAME:"user_name"},DA=Object.values(oc);_c.exports={INTERNAL_DBIS_NAME:CA,DBI_DEFINITION_NAME:MA,SEARCH_TYPES:wA,TIMESTAMP_NAMES:LA,MAX_SEARCH_KEY_LENGTH:256,ENVIRONMENT_NAME_KEY:yA,TRANSACTIONS_DBI_NAMES_ENUM:oc,TRANSACTIONS_DBIS:DA,OVERFLOW_MARKER:UA}});var be=T((pP,fc)=>{"use strict";var cc=f(),uc=ee(),lc={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},Ec=a(e=>`${e} Check logs and try again.`,"CHECK_LOGS_WRAPPER"),dc={500:Ec("There was an error processing your request."),400:"Invalid request"},PA=dc[lc.INTERNAL_SERVER_ERROR],HA={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.`},BA={CONFIG_VALIDATION:e=>`HarperDB config file validation error: ${e}`},vA={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"},GA={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_ITERABLE:"ids must be iterable",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 ${uc.INTERNAL_DBIS_NAME}`,CANNOT_DROP_INTERNAL_DBIS_NAME:`cannot drop a dbi named ${uc.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"},qA={ATTR_NAME_LENGTH_ERR:e=>`transaction aborted due to attribute name ${e} being too long. Attribute names cannot be longer than ${cc.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 ${cc.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"},hc={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"},FA={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."},xA={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`},VA={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"},kA={OUTER_JOIN_TRANSLATION_ERROR:"There was an error translating the final SQL outer join data."},YA={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`},Tc={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.`},Sc={INVALID_ITC_DATA_TYPE:"Invalid ITC event data type, must be an object",MISSING_TYPE:"ITC event missing 'type'",MISSING_MSG:"ITC event missing 'message'",MISSING_ORIGIN:"ITC event message missing 'originator' property",INVALID_EVENT:e=>`ITC server received invalid event type: ${e}`},$A={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."},KA={CLUSTERING_NOT_ENABLED:"Clustering must be enabled to perform this operation."},WA={...hc,...vA,...HA,...FA,...xA,...VA,...kA,...YA,...qA,...Tc,...Sc,...$A,...KA,...BA};fc.exports={CHECK_LOGS_WRAPPER:Ec,HDB_ERROR_MSGS:WA,DEFAULT_ERROR_MSGS:dc,DEFAULT_ERROR_RESP:PA,HTTP_STATUS_CODES:lc,LMDB_ERRORS_ENUM:GA,AUTHENTICATION_ERROR_MSGS:hc,VALIDATION_ERROR_MSGS:Tc,ITC_ERRORS:Sc}});var V=T((IP,Rc)=>{"use strict";var er=be(),QA=N(),JA=f(),Dr=class extends Error{constructor(t,r,s,n,i){super(),Error.captureStackTrace(this,mc),this.http_resp_code=s||er.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR,this.http_resp_msg=r||(er.DEFAULT_ERROR_MSGS[s]?er.DEFAULT_ERROR_MSGS[s]:er.DEFAULT_ERROR_MSGS[er.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR]),this.message=t.message?t.message:this.http_resp_msg,this.type=t.name,n&&(this.logLevel=n),typeof this.message!="string"&&(this.stack=t.stack),i&&QA[n](i)}};a(Dr,"HdbError");function mc(e,t,r,s=JA.LOG_LEVELS.ERROR,n=null,i=!1){if(Ac(e))return e;let o=new Dr(e,t,r,s,n);return i&&delete o.stack,o}a(mc,"handleHDBError");function Ac(e){return e.__proto__.constructor.name===Dr.name}a(Ac,"isHDBError");Rc.exports={isHDBError:Ac,handleHDBError:mc,hdb_errors:er}});var p=T((yP,Pc)=>{"use strict";var yt=require("path"),XA=require("fs-extra"),re=N(),gc=require("fs-extra"),Pr=require("os"),ZA=require("net"),zA=require("recursive-iterator"),te=f(),Ic=ac(),Nc=require("papaparse"),Ks=require("moment"),{inspect:jA}=require("util"),pc=require("is-number"),CP=require("lodash"),{hdb_errors:Ws}=V(),bc=require("util").promisify(setTimeout),eR=100,tR=5,rR="",sR=4,Oc={true:!0,false:!1,undefined:null,null:null,NaN:NaN};Pc.exports={isEmpty:me,isEmptyOrZeroLength:Ve,arrayHasEmptyValues:aR,arrayHasEmptyOrZeroLengthValues:oR,buildFolderPath:_R,isBoolean:Cc,errorizeMessage:nR,stripFileExtension:uR,autoCast:lR,autoCastJSON:yc,autoCastJSONDeep:da,removeDir:ER,compareVersions:dR,isCompatibleDataVersion:hR,escapeRawValue:TR,unescapeValue:SR,stringifyProps:fR,timeoutPromise:AR,isClusterOperation:gR,getClusterUser:pR,checkGlobalSchemaTable:NR,getHomeDir:wc,getPropsFilePath:mR,promisifyPapaParse:OR,removeBOM:Lc,createEventPromise:IR,checkProcessRunning:bR,checkSchemaTableExist:CR,checkSchemaExists:Uc,checkTableExists:Dc,getStartOfTomorrowInSeconds:yR,getLimitKey:MR,isObject:cR,isNotEmptyAndHasValue:iR,autoCasterIsNumberCheck:Mc,backtickASTSchemaItems:wR,isPortTaken:RR,stopProcess:LR,createForkArgs:UR,autoCastBoolean:DR,async_set_timeout:bc,getTableHashAttribute:PR,doesSchemaExist:HR,doesTableExist:BR,stringifyObj:vR,ms_to_time:GR,changeExtension:qR,PACKAGE_ROOT:te.PACKAGE_ROOT};function nR(e){return e instanceof Error?e:new Error(e)}a(nR,"errorizeMessage");function me(e){return e==null}a(me,"isEmpty");function iR(e){return!me(e)&&(e||e===0||e===""||Cc(e))}a(iR,"isNotEmptyAndHasValue");function Ve(e){return me(e)||e.length===0||e.size===0}a(Ve,"isEmptyOrZeroLength");function aR(e){if(me(e))return!0;for(let t=0;t<e.length;t++)if(me(e[t]))return!0;return!1}a(aR,"arrayHasEmptyValues");function oR(e){if(Ve(e))return!0;for(let t=0;t<e.length;t++)if(Ve(e[t]))return!0;return!1}a(oR,"arrayHasEmptyOrZeroLengthValues");function _R(...e){try{return e.join(yt.sep)}catch{console.error(e)}}a(_R,"buildFolderPath");function Cc(e){return me(e)?!1:e===!0||e===!1}a(Cc,"isBoolean");function cR(e){return me(e)?!1:typeof e=="object"}a(cR,"isObject");function uR(e){return Ve(e)?rR:e.slice(0,-sR)}a(uR,"stripFileExtension");function lR(e){return me(e)||e===""||typeof e!="string"?e:Oc[e]!==void 0?Oc[e]:Mc(e)===!0?Number(e):e}a(lR,"autoCast");function yc(e){if(typeof e=="string"&&(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")))try{return JSON.parse(e)}catch{}return e}a(yc,"autoCastJSON");function da(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=da(s);n!==s&&(e[t]=n)}else for(let t in e){let r=e[t],s=da(r);s!==r&&(e[t]=s)}return e}else return yc(e)}a(da,"autoCastJSONDeep");function Mc(e){if(e.startsWith("0.")&&pc(e))return!0;let t=e.toUpperCase().includes("E");return!!((e!=="0"&&e.startsWith("0"))===!1&&t===!1&&pc(e))}a(Mc,"autoCasterIsNumberCheck");async function ER(e){if(Ve(e))throw new Error(`Directory path: ${e} does not exist`);try{await gc.emptyDir(e),await gc.remove(e)}catch(t){throw re.error(`Error removing files in ${e} -- ${t}`),t}}a(ER,"removeDir");function dR(e,t){if(Ve(e)){re.info("Invalid current version sent as parameter.");return}if(Ve(t)){re.info("Invalid upgrade version sent as parameter.");return}let r,s=/(\.0+)+$/,n=e.version?e.version:e,i=t.version?t.version:t,o=n.replace(s,"").split("."),_=i.replace(s,"").split("."),c=Math.min(o.length,_.length);for(let u=0;u<c;u++)if(r=parseInt(o[u],10)-parseInt(_[u],10),r)return r;return o.length-_.length}a(dR,"compareVersions");function hR(e,t,r=!1){let s=e.toString().split("."),n=t.toString().split(".");return s[0]===n[0]&&(!r||s[1]===n[1])}a(hR,"isCompatibleDataVersion");function TR(e){if(me(e))return e;let t=String(e);return t==="."?te.UNICODE_PERIOD:t===".."?te.UNICODE_PERIOD+te.UNICODE_PERIOD:t.replace(te.FORWARD_SLASH_REGEX,te.UNICODE_FORWARD_SLASH)}a(TR,"escapeRawValue");function SR(e){if(me(e))return e;let t=String(e);return t===te.UNICODE_PERIOD?".":t===te.UNICODE_PERIOD+te.UNICODE_PERIOD?"..":String(e).replace(te.ESCAPED_FORWARD_SLASH_REGEX,"/")}a(SR,"unescapeValue");function fR(e,t){if(me(e))return re.info("Properties object is null"),"";let r="";return e.each(function(s,n){try{if(t&&t[s]){let i=t[s];for(let o of i)r+=";"+o+Pr.EOL}!Ve(s)&&s[0]===";"?r+=" "+s+n+Pr.EOL:Ve(s)||(r+=s+"="+n+Pr.EOL)}catch{re.error(`Found bad property during upgrade with key ${s} and value: ${n}`)}}),r}a(fR,"stringifyProps");function wc(){let e;try{e=Pr.homedir()}catch{e=process.env.HOME}return e||(e="~/"),e}a(wc,"getHomeDir");function mR(){let e=yt.join(wc(),te.HDB_HOME_DIR_NAME,te.BOOT_PROPS_FILE_NAME);return XA.existsSync(e)||(e=yt.join(__dirname,"../","hdb_boot_properties.file")),e}a(mR,"getPropsFilePath");function AR(e,t){let r,s;return s=new Promise(function(n){r=setTimeout(function(){n(t)},e)}),{promise:s,cancel:function(){clearTimeout(r)}}}a(AR,"timeoutPromise");async function RR(e){if(!e)throw new Error("Invalid port passed as parameter");return new Promise((t,r)=>{let s=ZA.createServer().once("error",n=>{n.code==="EADDRINUSE"?t(!0):r(n)}).once("listening",()=>s.once("close",()=>t(!1)).close()).listen(e)})}a(RR,"isPortTaken");function gR(e){try{return te.CLUSTER_OPERATIONS[e.toLowerCase()]!==void 0}catch(t){re.error(`Error checking operation against cluster ops ${t}`)}return!1}a(gR,"isClusterOperation");function NR(e,t){if(!global.hdb_schema[e])return Ws.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e);if(!global.hdb_schema[e]||!global.hdb_schema[e][t])return Ws.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}a(NR,"checkGlobalSchemaTable");function pR(e,t){if(me(t)){re.warn("No CLUSTERING_USER defined, clustering disabled");return}if(me(e)||Ve(e)){re.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){re.error(`unable to find cluster_user due to: ${s.message}`);return}if(r===void 0){re.warn(`CLUSTERING_USER: ${t} not found or is not active.`);return}return r}a(pR,"getClusterUser");function OR(){Nc.parsePromise=function(e,t){return new Promise(function(r,s){Nc.parse(e,{header:!0,transformHeader:Lc,chunk:t.bind(null,s),skipEmptyLines:!0,dynamicTyping:!0,error:s,complete:r})})}}a(OR,"promisifyPapaParse");function Lc(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.charCodeAt(0)===65279?e.slice(1):e}a(Lc,"removeBOM");function IR(e,t,r){return new Promise(s=>{t.once(e,n=>{let i=r;re.info(`Got cluster status event response: ${jA(n)}`);try{i.cancel()}catch{re.error("Error trying to cancel timeout.")}s(n)})})}a(IR,"createEventPromise");async function bR(e){let t=!0,r=0;do await bc(eR*r++),(await Ic.findPs(e)).length>0&&(t=!1);while(t&&r<tR);if(t)throw new Error(`process ${e} was not started`)}a(bR,"checkProcessRunning");function CR(e,t){let r=Uc(e);if(r)return r;let s=Dc(e,t);if(s)return s}a(CR,"checkSchemaTableExist");function Uc(e){if(!global.hdb_schema[e])return Ws.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}a(Uc,"checkSchemaExists");function Dc(e,t){if(!global.hdb_schema[e][t])return Ws.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}a(Dc,"checkTableExists");function yR(){let e=Ks().utc().add(1,te.MOMENT_DAYS_TAG).startOf(te.MOMENT_DAYS_TAG).unix(),t=Ks().utc().unix();return e-t}a(yR,"getStartOfTomorrowInSeconds");function MR(){return Ks().utc().format("DD-MM-YYYY")}a(MR,"getLimitKey");function wR(e){try{let t=new zA(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){re.error("Got an error back ticking items."),re.error(t)}}a(wR,"backtickASTSchemaItems");async function LR(e){let t=Pr.userInfo();(await Ic.findPs(e)).forEach(s=>{(t.uid==0||s.uid==t.uid)&&(process.kill(s.pid),re.trace(`Following process was killed by stopProcess: ${s.cmd}`))})}a(LR,"stopProcess");function UR(e){return[e]}a(UR,"createForkArgs");function DR(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}a(DR,"autoCastBoolean");function PR(e,t){return global.hdb_schema?.[e]?.[t]?.hash_attribute}a(PR,"getTableHashAttribute");function HR(e){return global?.hdb_schema?.[e]!==void 0}a(HR,"doesSchemaExist");function BR(e,t){return global?.hdb_schema?.[e]?.[t]!==void 0}a(BR,"doesTableExist");function vR(e){try{return JSON.stringify(e)}catch{return e}}a(vR,"stringifyObj");function GR(e){let t=Ks.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}a(GR,"ms_to_time");function qR(e,t){let r=yt.basename(e,yt.extname(e));return yt.join(yt.dirname(e),r+t)}a(qR,"changeExtension")});var Bc=T((wP,Hc)=>{"use strict";var FR={key:"-----BEGIN RSA PRIVATE KEY-----\rMIIEowIBAAKCAQEArBFJQRfFiJku/KwhV1Ssp7cX61vvuKmd4Rp6A9jB2QLgx8nj\r/+Xhp2hPRkISnOA8BuAxr4dMD9syGJwX4kNy9mbZ5Q0fWZCiEGBpVcU1J+k+N5K4\rSuZ2SqgxeN2IN2RLzt3GyQY4imcdHgNv7aHoXUrEwBx0MeYEw3IIDXtrYKCR2D8I\rvWBfwMUgWa24G8lpWILWA5hd9srRz9NxlAiHSjhbgT7B0xruEpHRCHSyKjvaIJVt\rWBR+amejYsAKVrD/hgrqjsA1123Y6++YqvU6vwg64xhS2kz5r3dkNKhvwbWgpZdI\rIaRvsiB77f4kLGo0vi8RFgJ1ZRjGg3RRK2w1LQIDAQABAoIBAQCEOmh78EOpnGZC\rYBjjHrvrysVD5gvLcfVUtl8Ls7gMB60re1eOIF+PoZZCHKZnDd6zPfiQtj1adg0C\rYnnsM/8VoaZS4gm0b3RLd3ubIQifWhuo40RissY2yxfxlPSH9LhZCY8ojnJG0cTL\resK579E8WCfopjUY33XLqEbN7Ylv39J+DSqInjqV3efJZUa+HqUJ98VxxzodcKMD\rP3bwUU4gHoSSp4pAsOFH5sQhaIWH1IcNjrAwpee2cJQuh4G157RRIuuUpagtaEG/\rXJIiAyBguJyu3JQFnIBQF01N5+omJgXYJ1L0m54543/iIRThmF3zDCDgCyUzmOk+\rH6As9fv1AoGBANOpOtOZLSAScjGsgJamT3ceJ2wCa86g2j8Oxu8lJUmUp5s3tA0v\rBFW5O3S4KR1EXwkLMBUMrfFM8YvzHWxsXBI6XV8azGLvyqPHxr65OhmpGYkGZMXu\rn9okgjkqlewnY2I073gvyK7ppX51UL5y9fF1vlsk+UlW+Rgx/vMHbdcjAoGBANAc\rxRUsxs4QJpbS4zD3JOkHjr24a97TrS3kCybAHUMpR2NrEHPZw9zex0/aphOJUHfL\rIMkOZdpfDqMfxWy4FAEmqBEMkO2SB+h0Wp4P+qp81ax4vGFiB0cD3wtixr11U1tt\rlZ/ZTdv4VDpDFNK1KaplhTDeyuCjeYfS3/GJia9vAoGAcOsAgjBevZR5rXx84WH6\rVO8WUu37u7FenXNxt9VWTinrPMh72uixZFY8nOk+rely1e1NCn3IMko9Ns9NbDFm\r8SaH95vhXArXTYbfxZIlp9jp0YtCqcHDL+p4Oq04bFMbFyJseu7rHj1x18QYfnHw\rOY/6LL/N6k1m+Hx7qgXVmIcCgYB/w0nTCBw84XlvWqSTqQaF8VfWbWP79mP5KmkW\rLxdH5g2noVEGbohqDnK6OXd/wusdwByukiJBf94Skyy25AOT+VFwthA7aU1ljhkb\rtJ+lDuJ28eBkwLPLCzthWBC+u0qjdJFJAzVjd/7tjcU43nNn4s90AzL12iaAFhvZ\rwyA+DQKBgGc/4cdyGJ3YkcA8150gQBawgJZ7q8V1JND87ggWA8wnK3cHn7rMZQl2\r3emDp9HEFXFex5dbGDDqZFAoesZCDxjknIn9oNfW4PvaWS8q7b6ZKLZG1p03Pu7/\rtYaD0kPbo0kysfFT/co+NgHbdykvIyboomfGdNLTUjYuy6lpwpvs\r-----END RSA PRIVATE KEY-----\r".replace(/\r/g,String.fromCharCode(13,10)),cert:"-----BEGIN CERTIFICATE-----\rMIIDXDCCAkSgAwIBAgIFNTE4MzQwDQYJKoZIhvcNAQELBQAwXTEXMBUGA1UEAxMO\rSGFycGVyREIsIEluYy4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UE\rBxMGRGVudmVyMRcwFQYDVQQKEw5IYXJwZXJEQiwgSW5jLjAeFw0yMjAzMTEyMzAz\rNDlaFw0yNzAzMTAyMzAzNDlaMF0xFzAVBgNVBAMTDkhhcnBlckRCLCBJbmMuMQsw\rCQYDVQQGEwJVUzELMAkGA1UECBMCQ08xDzANBgNVBAcTBkRlbnZlcjEXMBUGA1UE\rChMOSGFycGVyREIsIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\rAQCsEUlBF8WImS78rCFXVKyntxfrW++4qZ3hGnoD2MHZAuDHyeP/5eGnaE9GQhKc\r4DwG4DGvh0wP2zIYnBfiQ3L2ZtnlDR9ZkKIQYGlVxTUn6T43krhK5nZKqDF43Yg3\rZEvO3cbJBjiKZx0eA2/toehdSsTAHHQx5gTDcggNe2tgoJHYPwi9YF/AxSBZrbgb\ryWlYgtYDmF32ytHP03GUCIdKOFuBPsHTGu4SkdEIdLIqO9oglW1YFH5qZ6NiwApW\rsP+GCuqOwDXXbdjr75iq9Tq/CDrjGFLaTPmvd2Q0qG/BtaCll0ghpG+yIHvt/iQs\rajS+LxEWAnVlGMaDdFErbDUtAgMBAAGjIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYD\rVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4IBAQASR4YW/rPK7PNArHVe9zzM\rb0rKNX/2T9/0nybRhmE/+hdlSgliTAeebmwkUS2APckmekYt/q2ZY2NS65Fo/jjp\rG8TJrtcF4h+ylVqUp0ZXQLFtIsr7r2JZA7hJ6njW6G4DHSZ0gxtECLi4CBlTjzm5\rNmnmIDObvGRTuqmcdAZmXeObbta/He2XIzietukPAYX062pNM+G5XT5UM1eG/Vlp\rN86vjhpyI+ffKy+C60SJqxmKM3ydgN7oLscE7+2wLPN25XqN4W99OwGsp5dTdu/f\r5lPtFayXdJ55e/sNQKmGN+UGLrL05c2MWgjb8U/LFilnupUianceoeSERZmVjzKX\r-----END CERTIFICATE-----\r".replace(/\r/g,String.fromCharCode(13,10))},xR="certificate.pem",VR="privateKey.pem",kR="ca.pem";Hc.exports={CERTIFICATE_VALUES:FR,CERTIFICATE_PEM_NAME:xR,PRIVATEKEY_PEM_NAME:VR,CA_PEM_NAME:kR}});var Pe=T((LP,vc)=>{"use strict";var ce=require("validate.js");ce.validators.type=function(e,t,r,s){return e===null||typeof e>"u"||ce.validators.type.checks[t](e)?null:` must be a '${t}' value`};ce.validators.type.checks={Object:function(e){return ce.isObject(e)&&!ce.isArray(e)},Array:ce.isArray,Integer:ce.isInteger,Number:ce.isNumber,String:ce.isString,Date:ce.isDate,Boolean:function(e){return typeof e=="boolean"}};ce.validators.hasValidFileExt=function(e,t){return ce.isString(e)?e===""?"can't be blank":t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`:null};vc.exports={validateObject:YR,validateObjectAsync:$R,validateBySchema:KR};function YR(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=ce(e,t,{format:"flat"});return r?new Error(r):null}a(YR,"validateObject");async function $R(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await ce.async(e,t,{format:"flat"})}catch(r){let s=r.join(",");return new Error(s)}return null}a($R,"validateObjectAsync");function KR(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(KR,"validateBySchema")});var Vc=T((PP,xc)=>{"use strict";var WR=require("fs-extra"),C=require("joi"),QR=require("os"),{boolean:k,string:et,number:He,array:ha}=C.types(),{totalmem:Gc}=require("os"),Hr=require("path"),JR=N(),Js=p(),DP=Bc(),XR=f(),ZR=Pe(),qc="log",zR="custom_functions",jR="Invalid logging.rotation.maxSize unit. Available units are G, M or K",eg="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",tg="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",rg="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",sg="rootPath config parameter is undefined",ng="clustering.enabled config parameter is undefined",Mt=He.min(0).required(),Xs=ha.items({host:et.required(),port:Mt}).empty(null),lt;xc.exports={configValidator:ig,routesValidator:lg,route_constraints:Xs};function ig(e){if(lt=e.rootPath,Js.isEmpty(lt))throw sg;let t=k.required(),r=C.valid("production","development").required(),s=He.min(1).max(1e3).empty(null).default(ug),n=et.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(Qs),i=C.custom(ag).messages({"any.custom":"{:#label} {:#error}"}),o=et.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),_=C.string().empty(null).default(Qs),c=C.custom(og).empty(null).default(Qs),u=e.clustering?.enabled;if(Js.isEmpty(u))throw ng;let l;return u===!0?l=C.object({enabled:t,hubServer:C.object({cluster:C.object({name:C.required().empty(null),network:C.object({port:Mt,routes:Xs}).required()}).required(),leafNodes:C.object({network:C.object({port:Mt}).required()}).required(),network:C.object({port:Mt}).required()}).required(),leafServer:C.object({network:C.object({port:Mt,routes:Xs}).required(),streams:C.object({maxAge:He.min(120).allow(null).optional(),maxBytes:He.min(1).allow(null).optional(),maxMsgs:He.min(1).allow(null).optional(),path:_}).required()}).required(),logLevel:C.valid("error","warn","info","debug","trace"),nodeName:o,republishMessages:k.optional(),tls:C.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:k.required(),verify:k.optional()}),user:et.optional().empty(null)}).required():l=C.object({enabled:t,tls:C.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:k.required()})}).required(),C.object({clustering:l,customFunctions:C.object({enabled:t,network:C.object({cors:k.required(),corsAccessList:ha.required(),headersTimeout:He.min(1).required(),https:k.required(),keepAliveTimeout:He.min(1).required(),port:Mt,timeout:He.min(1).required()}),nodeEnv:r,root:n,tls:C.object({certificate:i,certificateAuthority:i,privateKey:i})}).required(),localStudio:C.object({enabled:t}).required(),logging:C.object({file:k.required(),level:C.valid("notify","fatal","error","warn","info","debug","trace"),rotation:C.object({enabled:k.optional(),compress:k.optional(),interval:et.custom(cg).optional().empty(null),maxSize:et.custom(_g).optional().empty(null),path:et.optional().empty(null).default(Qs)}).required(),root:n,stdStreams:k.required(),auditLog:k.required()}).required(),operationsApi:C.object({authentication:C.object({operationTokenTimeout:C.required(),refreshTokenTimeout:C.required()}).required(),foreground:k.required(),network:C.object({cors:k.required(),corsAccessList:ha.required(),headersTimeout:He.min(1).required(),https:k.required(),keepAliveTimeout:He.min(1).required(),port:Mt,timeout:He.min(1).required()}).required(),nodeEnv:r,tls:C.object({certificate:i,certificateAuthority:i,privateKey:i})}).required(),rootPath:et.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path").required(),http:C.object({threads:s}).required(),storage:C.object({writeAsync:k.required(),overlappingSync:k.optional(),caching:k.optional(),compression:k.optional(),noReadAhead:k.optional(),path:c,prefetchWrites:k.optional()}).required()}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}a(ig,"configValidator");function Fc(e){return WR.existsSync(e)?null:`Specified path ${e} does not exist.`}a(Fc,"doesPathExist");function ag(e,t){if(e===null)return;let r=Fc(e);return r?t.message(r):e}a(ag,"validatePemFile");function og(e,t){C.assert(e,et.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=Fc(e);if(r)return t.message(r)}a(og,"validatePath");function _g(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(jR);let s=e.slice(0,-1);return isNaN(parseInt(s))?t.message(tg):e}a(_g,"validateRotationMaxSize");function cg(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(eg);let s=e.slice(0,-1);return isNaN(parseInt(s))?t.message(rg):e}a(cg,"validateRotationInterval");function ug(e,t){let r=t.state.path.join("."),s=QR.cpus().length,n=s-1;n<=2&&(n=2);let i=process.constrainedMemory?.()||Gc();return i=Math.round(Math.min(i,Gc())/1e6),n=Math.max(Math.min(n,Math.round((i-750)/300)),1),JR.info(`Detected ${s} cores and ${i}MB on this machine, defaulting ${r} to ${n}`),n}a(ug,"setDefaultThreads");function Qs(e,t){if(!Js.isEmpty(t.original))return t.original;let r=t.state.path.join(".");if(Js.isEmpty(lt))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"customFunctions.root":return Hr.join(lt,zR);case"logging.root":return Hr.join(lt,qc);case"clustering.leafServer.streams.path":return Hr.join(lt,"clustering","leaf");case"storage.path":return Hr.join(lt,XR.SCHEMA_DIR_NAME);case"logging.rotation.path":return Hr.join(lt,qc);default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(Qs,"setDefaultRoot");function lg(e){let t=C.object({routes:Xs});return ZR.validateBySchema({routes:e},t)}a(lg,"routesValidator")});var js=T((BP,zc)=>{"use strict";var ye=f(),Ae=p(),Q=N(),{configValidator:Eg,routesValidator:kc}=Vc(),Ce=require("fs-extra"),dg=require("yaml"),ke=require("path"),hg=require("is-number"),$c=require("properties-reader"),Tg=require("lodash"),{handleHDBError:Sg}=V(),{HTTP_STATUS_CODES:fg,HDB_ERROR_MSGS:Zs}=be(),mg=require("minimist"),{SCHEMAS_PARAM_CONFIG:Br,CONFIG_PARAMS:Et,CONFIG_PARAM_MAP:tt}=ye,Ag="Unable to get config value because config is uninitialized",Rg="Config successfully initialized",gg="Error backing up config file",Ng="Empty parameter sent to getConfigValue",Kc=ke.join(ye.PACKAGE_ROOT,"config","yaml",ye.HDB_DEFAULT_CONFIG_FILE),pg="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",Yc={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"},zs,Z;zc.exports={createConfigFile:Og,getDefaultConfig:Ig,getConfigValue:Qc,initConfig:Jc,flattenConfig:wt,updateConfigValue:Xc,updateConfigObject:Cg,getConfiguration:wg,setConfiguration:Lg,readConfigFile:ma,getClusteringRoutes:Ug,initOldConfig:Zc,getConfigFromFile:Dg};function Og(e){let t=tr(Kc);zs=wt(t.toJSON());let r;for(let o in e){let _=tt[o.toLowerCase()];if(_===Et.SCHEMAS){r=e[o];continue}if(_!==void 0){let c=_.split("_"),u=Ta(_,e[o]);try{t.setIn([...c],u)}catch(l){Q.error(l)}}}r&&Wc(t,r),fa(t);let s=t.toJSON();Z=wt(s);let n=t.getIn(["rootPath"]),i=ke.join(n,ye.HDB_CONFIG_FILE);Ce.createFileSync(i),Ce.writeFileSync(i,String(t)),Q.trace(`Config file written to ${i}`)}a(Og,"createConfigFile");function Wc(e,t){let r;try{try{r=JSON.parse(t)}catch(s){if(!Ae.isObject(t))throw s;r=t}for(let s of r){let n=Object.keys(s)[0];if(s[n].hasOwnProperty(Br.TABLES))for(let i in s[n][Br.TABLES])for(let o in s[n][Br.TABLES][i]){let _=s[n][Br.TABLES][i][o],c=[Et.SCHEMAS,n,Br.TABLES,i,o];e.hasIn(c)?e.setIn(c,_):e.addIn(c,_)}else for(let i in s[n]){let o=s[n][i],_=[Et.SCHEMAS,n,i];e.hasIn(_)?e.setIn(_,o):e.addIn(_,o)}}}catch(s){Q.error("Error parsing schemas CLI/env config arguments",s)}}a(Wc,"setSchemasConfig");function Ig(e){if(zs===void 0){let r=tr(Kc);zs=wt(r.toJSON())}let t=tt[e.toLowerCase()];if(t!==void 0)return zs[t.toLowerCase()]}a(Ig,"getDefaultConfig");function Qc(e){if(Ae.isEmpty(e)){Q.error(Ng);return}if(Z===void 0){Q.trace(Ag);return}let t=tt[e.toLowerCase()];if(t!==void 0)return Z[t.toLowerCase()]}a(Qc,"getConfigValue");function Sa(e){let t=mg(process.argv);return t.ROOTPATH?ke.join(t.ROOTPATH,ye.HDB_CONFIG_FILE):$c(e).get(ye.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY)}a(Sa,"getConfigFilePath");function Jc(e=!1){if(Z===void 0||e){let t=Ae.getPropsFilePath();try{Ce.accessSync(t,Ce.constants.F_OK|Ce.constants.R_OK)}catch(i){throw Q.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}let r=Sa(t),s;if(r.includes("config/settings.js"))try{Zc(r);return}catch(i){if(i.code!==ye.NODE_ERROR_CODES.ENOENT)throw i}try{s=tr(r)}catch(i){if(i.code===ye.NODE_ERROR_CODES.ENOENT){Q.trace(`HarperDB config file not found at ${r}.
5
- This can occur during early stages of install where the config file has not yet been created`);return}else throw Q.error(i),new Error(`Error reading HarperDB config file at ${r}`)}bg(s,r),fa(s);let n=s.toJSON();if(Z=wt(n),Z.logging_rotation_rotate)for(let i in Yc)Z[i]&&Q.error(`Config ${Yc[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);Q.trace(Rg)}}a(Jc,"initConfig");function bg(e,t){let r=e.getIn(["rootPath"]),s=!1;e.hasIn(["storage","path"])||(e.setIn(["storage","path"],ke.join(r,ye.SCHEMA_DIR_NAME)),s=!0),e.hasIn(["clustering","leafServer","streams","path"])||(e.setIn(["clustering","leafServer","streams","path"],ke.join(r,"clustering","leaf")),s=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],ke.join(r,"log")),s=!0),e.hasIn(["clustering","tls","verify"])||(e.setIn(["clustering","tls","verify"],!0),s=!0),s&&(Q.trace("Updating config file with missing config params"),Ce.writeFileSync(t,String(e)))}a(bg,"checkForUpdatedConfig");function fa(e){let t=e.toJSON(),r=Eg(t);if(r.error)throw Zs.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(["storage","path"],r.value.storage.path),e.setIn(["logging","rotation","path"],r.value.logging.rotation.path),e.setIn(["clustering","leafServer","streams","path"],r.value.clustering.leafServer.streams.path)}a(fa,"validateConfig");function Cg(e,t){Z===void 0&&(Z={});let r=tt[e.toLowerCase()];if(r===void 0){Q.trace(`Unable to update config object because config param '${e}' does not exist`);return}Z[r.toLowerCase()]=t}a(Cg,"updateConfigObject");function Xc(e,t,r=void 0,s=!1,n=!1){Z===void 0&&Jc();let i=Qc(tt.hdb_root),o=ke.join(i,ye.HDB_CONFIG_FILE),_=tr(o),c;if(r===void 0&&e.toLowerCase()===Et.SCHEMAS)c=t;else if(r===void 0){let E=tt[e.toLowerCase()];if(E===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let h=E.split("_"),d=Ta(E,t);_.setIn([...h],d)}else for(let E in r){let h=tt[E.toLowerCase()];if(h===Et.SCHEMAS){c=r[E];continue}if(h!==void 0){let d=h.split("_"),A=Ta(h,r[E]);try{_.setIn([...d],A)}catch(R){Q.error(R)}}}c&&Wc(_,c),fa(_);let u=_.getIn(["rootPath"]),l=ke.join(u,ye.HDB_CONFIG_FILE);s===!0&&yg(o,u),Ce.writeFileSync(l,String(_)),n&&(Z=wt(_.toJSON())),Q.trace(`Config parameter: ${e} updated with value: ${t}`)}a(Xc,"updateConfigValue");function yg(e,t){try{let r=ke.join(t,"backup",`${ye.HDB_CONFIG_FILE}.bak`);Ce.copySync(e,r),Q.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){Q.error(gg),Q.error(r)}}a(yg,"backupConfigFile");var Mg=["schemas"];function wt(e){let t={};for(let r in e)if(e.hasOwnProperty(r))if(typeof e[r]=="object"&&e[r]!==null&&!Array.isArray(e[r])&&!Mg.includes(r)){let s=wt(e[r]);for(let n in s)s.hasOwnProperty(n)&&(t[r.toLowerCase()+"_"+n]=s[n])}else t[r.toLowerCase()]=e[r];return t}a(wt,"flattenConfig");function Ta(e,t){if(e===Et.CLUSTERING_NODENAME||e===Et.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(hg(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||Ae.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 Ae.autoCast(t)}a(Ta,"castConfigValue");function wg(){let e=Ae.getPropsFilePath(),t=Sa(e);return tr(t).toJSON()}a(wg,"getConfiguration");async function Lg(e){let{operation:t,hdb_user:r,hdb_auth_header:s,...n}=e;try{return Xc(void 0,void 0,n,!0),pg}catch(i){throw typeof i=="string"||i instanceof String?Sg(i,i,fg.BAD_REQUEST,void 0,void 0,!0):i}}a(Lg,"setConfiguration");function ma(){let e=Ae.getPropsFilePath();try{Ce.accessSync(e,Ce.constants.F_OK|Ce.constants.R_OK)}catch(s){throw Q.error(s),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=Sa(e);return tr(t).toJSON()}a(ma,"readConfigFile");function tr(e){return dg.parseDocument(Ce.readFileSync(e,"utf8"),{simpleKeys:!0})}a(tr,"parseYamlDoc");function Ug(){let e=ma(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=Ae.isEmptyOrZeroLength(t)?[]:t;let r=kc(t);if(r)throw Zs.CONFIG_VALIDATION(r.message);let s=e?.clustering?.leafServer?.network?.routes;s=Ae.isEmptyOrZeroLength(s)?[]:s;let n=kc(s);if(n)throw Zs.CONFIG_VALIDATION(n.message);if(!Ae.isEmptyOrZeroLength(s)&&!Ae.isEmptyOrZeroLength(t)){let i=t.filter(o=>s.some(_=>_.host===o.host&&_.port===o.port));if(!Ae.isEmptyOrZeroLength(i)){let o=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw Zs.CONFIG_VALIDATION(o)}}return{hub_routes:t,leaf_routes:s}}a(Ug,"getClusteringRoutes");function Zc(e){let t=$c(e);Z={};for(let r in tt){let s=t.get(r.toUpperCase());if(Ae.isEmpty(s)||typeof s=="string"&&s.trim().length===0)continue;let n=tt[r].toLowerCase();n===Et.LOGGING_ROOT?Z[n]=ke.dirname(s):Z[n]=s}return Z}a(Zc,"initOldConfig");function Dg(e){let t=ma();return Tg.get(t,e.replaceAll("_","."))}a(Dg,"getConfigFromFile")});var $=T((GP,eu)=>{"use strict";var Aa=require("fs-extra"),Ye=require("path"),Pg=require("os"),Hg=require("properties-reader"),vr=N(),rr=p(),O=f(),en=js(),Bg="Error initializing environment manager",tn="BOOT_PROPS_FILE_PATH",jc=!1,vg={[O.HDB_SETTINGS_NAMES.INSTALL_USER]:!0,[O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]:!0,[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]:!0,BOOT_PROPS_FILE_PATH:!0},rt={};eu.exports={BOOT_PROPS_FILE_PATH:tn,getHdbBasePath:Gg,setHdbBasePath:qg,get:Fg,initSync:Vg,setProperty:U,initTestEnvironment:kg};function Gg(){return rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]}a(Gg,"getHdbBasePath");function qg(e){rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=e}a(qg,"setHdbBasePath");function Fg(e){let t=en.getConfigValue(e);return t===void 0?rt[e]:t}a(Fg,"get");function U(e,t){vg[e]&&(rt[e]=t),en.updateConfigObject(e,t)}a(U,"setProperty");function xg(){let e;try{e=rr.getPropsFilePath(),Aa.accessSync(e,Aa.constants.F_OK|Aa.constants.R_OK),jc=!0;let t=Hg(e);return rt[O.HDB_SETTINGS_NAMES.INSTALL_USER]=t.get(O.HDB_SETTINGS_NAMES.INSTALL_USER),rt[O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]=t.get(O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY),rt[tn]=e,!0}catch{return vr.trace(`Environment manager found no properties file at ${e}`),!1}}a(xg,"doesPropFileExist");function Vg(e=!1){try{(jc||xg())&&(en.initConfig(e),rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=en.getConfigValue(O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY))}catch(t){vr.error(Bg),vr.error(t),console.error(t),process.exit(1)}}a(Vg,"initSync");function kg(e={}){try{let{keep_alive_timeout:t,headers_timeout:r,server_timeout:s,https_enabled:n,cors_enabled:i,cors_accesslist:o,local_studio_on:_}=e,c=Ye.join(__dirname,"../../","unitTests");rt[tn]=Ye.join(c,"hdb_boot_properties.file"),U(O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY,Ye.join(c,"settings.test")),U(O.HDB_SETTINGS_NAMES.INSTALL_USER,Pg.userInfo().username),U(O.HDB_SETTINGS_NAMES.PRIVATE_KEY_KEY,Ye.join(c,"envDir","utility","keys","privateKey.pem")),U(O.HDB_SETTINGS_NAMES.CERT_KEY,Ye.join(c,"envDir","utility","keys","certificate.pem")),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_PRIVATEKEY,Ye.join(c,"envDir","utility","keys","privateKey.pem")),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_CERTIFICATE,Ye.join(c,"envDir","utility","keys","certificate.pem")),U(O.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY,"debug"),U(O.HDB_SETTINGS_NAMES.LOG_PATH_KEY,Ye.join(c,"envDir","log")),U(O.HDB_SETTINGS_NAMES.LOG_DAILY_ROTATE_KEY,!1),U(O.HDB_SETTINGS_NAMES.CLUSTERING_ENABLED_KEY,!0),U(O.HDB_SETTINGS_NAMES.CLUSTERING_NODE_NAME_KEY,"1231412de213"),U(O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY,Ye.join(c,"envDir")),U(O.HDB_SETTINGS_NAMES.HTTP_SECURE_ENABLED_KEY,rr.isEmpty(n)?!0:n),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HTTPS,rr.isEmpty(n)?!0:n),U(O.HDB_SETTINGS_NAMES.SERVER_PORT_KEY,9925),U(O.HDB_SETTINGS_NAMES.CORS_ENABLED_KEY,rr.isEmpty(i)?!1:i),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORS,rr.isEmpty(i)?!1:i),U(O.HDB_SETTINGS_NAMES.MAX_CUSTOM_FUNCTION_PROCESSES,2),U(O.HDB_SETTINGS_NAMES.MAX_HDB_PROCESSES,4),U(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_PORT_KEY,9926),U(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_ENABLED_KEY,!0),U(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_DIRECTORY_KEY,Ye.resolve(__dirname,"../../unitTests/server/customFunctions/custom_functions")),U(O.HDB_SETTINGS_NAMES.LOCAL_STUDIO_ON,rr.isEmpty(_)?!1:_),o&&(U("CORS_ACCESSLIST",o),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORSACCESSLIST,o)),s&&(U(O.HDB_SETTINGS_NAMES.SERVER_TIMEOUT_KEY,s),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_TIMEOUT,s)),t&&(U(O.HDB_SETTINGS_NAMES.SERVER_KEEP_ALIVE_TIMEOUT_KEY,t),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_KEEPALIVETIMEOUT,t)),r&&(U(O.HDB_SETTINGS_NAMES.SERVER_HEADERS_TIMEOUT_KEY,r),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HEADERSTIMEOUT,r))}catch(t){let r=`Error reading in HDB environment variables from path ${tn}. Please check your boot props and settings files`;vr.fatal(r),vr.error(t)}}a(kg,"initTestEnvironment")});var Lt=T((xP,ru)=>{"use strict";var{platform:FP}=require("os"),Yg="nats-server.zip",Ra="nats-server",$g=process.platform==="win32"?`${Ra}.exe`:Ra,ga="HDB",Kg=/^[^\s.,*>]+$/,tu="__request__",Wg=a(e=>`${e}.${tu}`,"REQUEST_SUBJECT"),Qg={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin"},Jg={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Xg={HUB:"hub.pid",LEAF:"leaf.pid"},Zg={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},zg={stream_name:"__HARPERDB_WORK_QUEUE__",durable_name:"HDB_WORK_QUEUE",deliver_group:ga,deliver_subject:"__HDB__.WORKQUEUE"},jg={stream_name:"__HARPERDB_SCHEMA_QUEUE__",durable_name:"HDB_SCHEMA_QUEUE",deliver_group:ga,deliver_subject:"HDB.SCHEMAQUEUE"},eN={stream_name:"__HARPERDB_USER_QUEUE__",durable_name:"HDB_USER_QUEUE",deliver_group:ga,deliver_subject:"HDB.USERQUEUE"},tN={SUCCESS:"success",ERROR:"error"},rN={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},sN={TXN:"txn",MSGID:"msgid"},sr={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},nN={[sr.ERR]:1,[sr.WRN]:2,[sr.INF]:3,[sr.DBG]:4,[sr.TRC]:5},iN={debug:"-D",trace:"-DVV"};ru.exports={NATS_SERVER_ZIP:Yg,NATS_SERVER_NAME:Ra,NATS_BINARY_NAME:$g,PID_FILES:Xg,NATS_CONFIG_FILES:Jg,SERVER_SUFFIX:Zg,WORK_QUEUE_CONSUMER_NAMES:zg,SCHEMA_QUEUE_CONSUMER_NAMES:jg,USER_QUEUE_CONSUMER_NAMES:eN,NATS_TERM_CONSTRAINTS_RX:Kg,REQUEST_SUFFIX:tu,UPDATE_REMOTE_RESPONSE_STATUSES:tN,CLUSTER_STATUS_STATUSES:rN,REQUEST_SUBJECT:Wg,SUBJECT_PREFIXES:sN,MSG_HEADERS:Qg,LOG_LEVELS:sr,LOG_LEVEL_FLAGS:iN,LOG_LEVEL_HIERARCHY:nN}});var rn=T((kP,au)=>{"use strict";var Gr=require("crypto"),nu="aes-256-cbc",aN=32,oN=16,Na=64,iu=32,_N=Na+iu,su=new Map;au.exports={encrypt:cN,decrypt:uN,createNatsTableStreamName:lN};function cN(e){let t=Gr.randomBytes(aN),r=Gr.randomBytes(oN),s=Gr.createCipheriv(nu,Buffer.from(t),r),n=s.update(e);n=Buffer.concat([n,s.final()]);let i=t.toString("hex"),o=r.toString("hex"),_=n.toString("hex");return i+o+_}a(cN,"encrypt");function uN(e){let t=e.substr(0,Na),r=e.substr(Na,iu),s=e.substr(_N,e.length),n=Buffer.from(r,"hex"),i=Buffer.from(s,"hex"),o=Gr.createDecipheriv(nu,Buffer.from(t,"hex"),n),_=o.update(i);return _=Buffer.concat([_,o.final()]),_.toString()}a(uN,"decrypt");function lN(e,t){let r=`${e}.${t}`,s=su.get(r);return s||(s=Gr.createHash("md5").update(`${e}.${t}`).digest("hex"),su.set(r,s)),s}a(lN,"createNatsTableStreamName")});var pa=T(($P,ou)=>{"use strict";var sn=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")}};a(sn,"BridgeMethods");ou.exports=sn});var Ut=T((JP,du)=>{"use strict";var _u=be().LMDB_ERRORS_ENUM,WP=require("lmdb"),EN=ee(),QP=require("buffer").Buffer,{OVERFLOW_MARKER:cu,MAX_SEARCH_KEY_LENGTH:nn}=EN,uu=["number","string","symbol","boolean","bigint"];function dN(e){if(e=e?.database||e,!e)throw new Error(_u.ENV_REQUIRED);if(e.constructor.name!=="LMDBStore")throw new Error(_u.INVALID_ENVIRONMENT)}a(dN,"validateEnv");function hN(e){if(e==null)return null;let t;try{t=typeof e=="object"?JSON.stringify(e):e.toString()}catch{t=e.toString()}return t}a(hN,"stringifyData");function TN(e){return e instanceof Date?e.valueOf():e}a(TN,"convertKeyValueToWrite");function SN(e){if(e==null)return;if(uu.includes(typeof e))return e.length>nn?[e.slice(0,nn)+cu]:[e];let t;if(Array.isArray(e)){t=[];for(let r=0,s=e.length;r<s;r++){let n=e[r];uu.includes(typeof n)&&(n.length>nn?t.push(n.slice(0,nn)+cu):t.push(n))}}return t}a(SN,"getIndexedValues");var an=0,lu=0;function Eu(){lu=Date.now()-performance.now()}a(Eu,"adjustStartTime");Eu();var fN=6e4;setInterval(Eu,fN).unref();function mN(){let e=performance.now()+lu;return e>an?(an=e,e):(an+=488e-6,an)}a(mN,"getNextMonotonicTime");du.exports={validateEnv:dN,stringifyData:hN,convertKeyValueToWrite:TN,getNextMonotonicTime:mN,getIndexedValues:SN}});var Tu=T((ZP,hu)=>{"use strict";var on=class{constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};a(on,"DBIDefinition");hu.exports=on});var mu=T((jP,fu)=>{"use strict";var Oa=$(),Su=f();Oa.initSync();var AN=Oa.get(Su.CONFIG_PARAMS.STORAGE_COMPRESSION),RN=Oa.get(Su.CONFIG_PARAMS.STORAGE_CACHING)!==!1,_n=class{constructor(t,r=!1){this.dupSort=t===!0,this.encoding=t?"ordered-binary":"msgpack",this.useVersions=r,this.compression=AN&&r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=RN&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0)}};a(_n,"OpenDBIObject");fu.exports=_n});var gu=T((tH,Ru)=>{"use strict";var nr=$(),qr=f();nr.initSync();var gN=nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",Au=nr.get(qr.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC),NN=nr.get(qr.CONFIG_PARAMS.STORAGE_NOREADAHEAD),cn=class{constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=1e3,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.noSync=gN,Au!==void 0&&(this.overlappingSync=Au),this.noReadAhead=NN}};a(cn,"OpenEnvironmentObject");Ru.exports=cn});var B=T((sH,yu)=>{"use strict";var Ia=require("lmdb"),Me=require("fs-extra"),Be=require("path"),ln=Ut(),Nu=N(),z=be().LMDB_ERRORS_ENUM,En=Tu(),ba=mu(),pu=gu(),dt=ee(),ve=dt.INTERNAL_DBIS_NAME,Ou=dt.DBI_DEFINITION_NAME,pN="data.mdb",ON="lock.mdb",Fr=".mdb",IN="-lock",un=class{constructor(t,r,s=!1){this.dbi=we(t,r),this.key_type=this.dbi[dt.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[dt.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:s===!1}),this.cursor=new Ia.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};a(un,"TransactionCursor");function Ca(e,t){if(e===void 0)throw new Error(z.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(z.ENV_NAME_REQUIRED)}a(Ca,"pathEnvNameValidation");async function ya(e,t,r=!0){try{await Me.access(e)}catch(s){throw s.code==="ENOENT"?new Error(z.INVALID_BASE_PATH):s}try{let s=Be.join(e,t+Fr);return await Me.access(s,Me.constants.R_OK|Me.constants.F_OK),s}catch(s){if(s.code==="ENOENT")if(r)try{return await Me.access(Be.join(e,t,pN),Me.constants.R_OK|Me.constants.F_OK),Be.join(e,t)}catch(n){if(n.code==="ENOENT")throw new Error(z.INVALID_ENVIRONMENT)}else throw new Error(z.INVALID_ENVIRONMENT);throw s}}a(ya,"validateEnvironmentPath");function dn(e,t){if(ln.validateEnv(e),t===void 0)throw new Error(z.DBI_NAME_REQUIRED)}a(dn,"validateEnvDBIName");async function bN(e,t,r=!1,s=!1){Ca(e,t),t=t.toString();try{return await ya(e,t,s),Ma(e,t,r)}catch(n){if(n.message===z.INVALID_ENVIRONMENT){let i=Be.join(e,t);await Me.mkdirp(s?i:e);let o=new pu(s?i:i+Fr,!1),_=Ia.open(o);_.dbis=Object.create(null);let c=new ba(!1);_.openDB(ve,c),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let u=wa(e,t,r);return _[dt.ENVIRONMENT_NAME_KEY]=u,global.lmdb_map[u]=_,_}throw n}}a(bN,"createEnvironment");async function CN(e,t,r,s=!0){let n=await Ma(e,t);if(r===void 0)throw new Error(z.DESTINATION_PATH_REQUIRED);try{await Me.access(Be.dirname(r))}catch(i){throw i.code==="ENOENT"?new Error(z.INVALID_DESTINATION_PATH):i}await n.backup(r,s)}a(CN,"copyEnvironment");async function Ma(e,t,r=!1){Ca(e,t),t=t.toString();let s=wa(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 ya(e,t),i=Be.join(e,t+Fr),o=n!=i,_=new pu(n,o),c=Ia.open(_);c.dbis=Object.create(null);let u=bu(c);for(let l=0;l<u.length;l++)we(c,u[l]);return c[dt.ENVIRONMENT_NAME_KEY]=s,global.lmdb_map[s]=c,c}a(Ma,"openEnvironment");async function yN(e,t,r=!1){Ca(e,t),t=t.toString();let s=Be.join(e,t+Fr),n=await ya(e,t);if(global.lmdb_map!==void 0){let i=wa(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await Iu(o),delete global.lmdb_map[i]}}await Me.remove(n),await Me.remove(n===s?n+IN:Be.join(Be.dirname(n),ON))}a(yN,"deleteEnvironment");async function Iu(e){ln.validateEnv(e);let t=e[dt.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(Iu,"closeEnvironment");function wa(e,t,r=!1){let n=`${Be.basename(e)}.${t}`;return r===!0&&(n=`txn.${n}`),n}a(wa,"getCachedEnvironmentName");function MN(e){ln.validateEnv(e);let t=Object.create(null),r=we(e,ve);for(let{key:s,value:n}of r.getRange({start:!1}))if(s!==ve)try{t[s]=Object.assign(new En,n)}catch{Nu.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return t}a(MN,"listDBIDefinitions");function bu(e){ln.validateEnv(e);let t=[],r=we(e,ve);for(let{key:s}of r.getRange({start:!1}))s!==ve&&t.push(s);return t}a(bu,"listDBIs");function wN(e,t){let s=we(e,ve).getEntry(t),n=new En;if(s!==void 0){try{n=Object.assign(n,s.value)}catch{Nu.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return n}}a(wN,"getDBIDefinition");function Cu(e,t,r,s=!1){if(dn(e,t),t=t.toString(),t===ve)throw new Error(z.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return we(e,t)}catch(n){if(n.message===z.DBI_DOES_NOT_EXIST){let i=new ba(r,s===!0),o=e.openDB(t,i),_=new En(r===!0,s);return o[Ou]=_,we(e,ve).putSync(t,_),e.dbis[t]=o,o}throw n}}a(Cu,"createDBI");function we(e,t){if(dn(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==ve?r=wN(e,t):r=new En,r===void 0)throw new Error(z.DBI_DOES_NOT_EXIST);let s;try{let n=new ba(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(z.DBI_DOES_NOT_EXIST):n}return s[Ou]=r,e.dbis[t]=s,s}a(we,"openDBI");function LN(e,t){dn(e,t),t=t.toString();let r=we(e,t),s=r.getStats();return r[dt.DBI_DEFINITION_NAME].is_hash_attribute&&s.entryCount>0&&s.entryCount--,s}a(LN,"statDBI");async function UN(e,t){try{let r=Be.join(e,t+Fr);return(await Me.stat(r)).size}catch{throw new Error(z.INVALID_ENVIRONMENT)}}a(UN,"environmentDataSize");function DN(e,t){if(dn(e,t),t=t.toString(),t===ve)throw new Error(z.CANNOT_DROP_INTERNAL_DBIS_NAME);we(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],we(e,ve).removeSync(t)}a(DN,"dropDBI");function PN(e,t,r){for(let s=0;s<r.length;s++){let n=r[s];if(!e.dbis[n])try{we(e,n)}catch(i){if(i.message===z.DBI_DOES_NOT_EXIST)Cu(e,n,n!==t,n===t);else throw i}}}a(PN,"initializeDBIs");yu.exports={openDBI:we,openEnvironment:Ma,createEnvironment:bN,listDBIs:bu,listDBIDefinitions:MN,createDBI:Cu,dropDBI:DN,statDBI:LN,deleteEnvironment:yN,initializeDBIs:PN,TransactionCursor:un,environmentDataSize:UN,copyEnvironment:CN,closeEnvironment:Iu}});var wu=T((iH,Mu)=>{"use strict";var hn=class{constructor(t=[],r=[],s=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=s}};a(hn,"InsertRecordsResponseObject");Mu.exports=hn});var Uu=T((oH,Lu)=>{"use strict";var Tn=class{constructor(t=[],r=[],s=void 0,n=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=s,this.original_records=n}};a(Tn,"UpdateRecordsResponseObject");Lu.exports=Tn});var Pu=T((cH,Du)=>{"use strict";var Sn=class{constructor(t=[],r=void 0,s=[]){this.written_hashes=t,this.txn_time=r,this.original_records=s}};a(Sn,"UpsertRecordsResponseObject");Du.exports=Sn});var ir=T((hH,vu)=>{"use strict";var HN=B(),BN=wu(),vN=Uu(),GN=Pu(),$e=Ut(),xr=be().LMDB_ERRORS_ENUM,qN=ee(),st=f(),FN=p(),xN=require("uuid"),lH=require("lmdb"),{handleHDBError:VN,hdb_errors:kN}=V(),{OVERFLOW_MARKER:EH,MAX_SEARCH_KEY_LENGTH:dH}=qN,Hu=$();Hu.initSync();var fn=Hu.get(st.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),La=st.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Dt=st.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function YN(e,t,r,s,n=$e.getNextMonotonicTime()){Ha(e,t,r,s),Ua(e,t,r);let i=new BN,o=[],_=[];for(let c=0;c<s.length;c++){let u=s[c];Bu(u,!0,n);let l=$N(e,t,r,u),E=u[t];o.push(l),_.push(E)}return Da(o,_,s,i,n)}a(YN,"insertRecords");function $N(e,t,r,s){let n=s[t];return e.dbis[t].ifNoExists(n,()=>{for(let i=0;i<r.length;i++){let o=r[i];if(o===t||s.hasOwnProperty(o)===!1)continue;let _=s[o];if(typeof _=="function"){let l=_([[{}]]);Array.isArray(l)&&(_=l[0][st.FUNC_VAL],s[o]=_)}let c=$e.getIndexedValues(_),u=e.dbis[o];if(c){fn&&u.prefetch(c.map(l=>({key:l,value:n})),mn);for(let l=0,E=c.length;l<E;l++)u.put(c[l],n)}}fn&&e.dbis[t].prefetch([n],mn),e.dbis[t].put(n,s,s[Dt])})}a($N,"insertRecord");function KN(e,t=[]){let r=0;for(let s=0;s<t.length;s++){let n=t[s];e.splice(n-r,1),r++}}a(KN,"removeSkippedRecords");function Bu(e,t,r){let s=r>0;(s||!Number.isInteger(e[Dt]))&&(e[Dt]=r||(r=$e.getNextMonotonicTime())),t===!0?(s||!Number.isInteger(e[La]))&&(e[La]=r||$e.getNextMonotonicTime()):delete e[La]}a(Bu,"setTimestamps");function Ua(e,t,r){r.indexOf(st.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(st.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(st.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(st.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),HN.initializeDBIs(e,t,r)}a(Ua,"initializeTransaction");async function WN(e,t,r,s,n=$e.getNextMonotonicTime()){Ha(e,t,r,s),Ua(e,t,r);let i=new vN,o=[],_=[],c=[];for(let u=0;u<s.length;u++){let l=s[u],E=l[t],h;try{h=Pa(e,t,l,E,i,!0,n)}catch{i.skipped_hashes.push(E),o.push(u);continue}_.push(h),c.push(E)}return Da(_,c,s,i,n,o)}a(WN,"updateRecords");async function QN(e,t,r,s,n=$e.getNextMonotonicTime()){try{Ha(e,t,r,s)}catch(c){throw VN(c,c.message,kN.HTTP_STATUS_CODES.BAD_REQUEST)}Ua(e,t,r);let i=new GN,o=[],_=[];for(let c=0;c<s.length;c++){let u=s[c],l;FN.isEmpty(u[t])?(l=xN.v4(),u[t]=l):l=u[t];let E=Pa(e,t,u,l,i,!1,n);o.push(E),_.push(l)}return Da(o,_,s,i,n)}a(QN,"upsertRecords");async function Da(e,t,r,s,n,i=[]){let o=await Promise.all(e);for(let _=0,c=o.length;_<c;_++)o[_]===!0?s.written_hashes.push(t[_]):(s.skipped_hashes.push(t[_]),i.push(_));return s.txn_time=n||$e.getNextMonotonicTime(),KN(r,i),s}a(Da,"finalizeWrite");function Pa(e,t,r,s,n,i=!1,o){let _=e.dbis[t],c=_.getEntry(s),u=c?.value,l=u;if(!u){if(i)return!1;u={}}if(Bu(r,!l,o),Number.isInteger(r[Dt])&&u[Dt]>r[Dt])return!1;l&&n.original_records.push(u);let E,h=a(()=>{for(let A in r){if(!r.hasOwnProperty(A)||A===t)continue;let R=r[A],M=e.dbis[A];if(M===void 0)continue;let W=u[A];if(typeof R=="function"){let F=R([[u]]);Array.isArray(F)&&(R=F[0][st.FUNC_VAL],r[A]=R)}if(R===W)continue;let x=$e.getIndexedValues(W);if(x){fn&&M.prefetch(x.map(F=>({key:F,value:s})),mn);for(let F=0,Xe=x.length;F<Xe;F++)M.remove(x[F],s)}if(x=$e.getIndexedValues(R),x){fn&&M.prefetch(x.map(F=>({key:F,value:s})),mn);for(let F=0,Xe=x.length;F<Xe;F++)M.put(x[F],s)}}let d=Object.assign({},u,r);_.put(s,d,d[Dt])},"do_put");return c?E=_.ifVersion(s,c.version,h):E=_.ifNoExists(s,h),E.then(d=>d?!0:Pa(e,t,r,s,n,i,o))}a(Pa,"updateUpsertRecord");function JN(e,t,r){if($e.validateEnv(e),t===void 0)throw new Error(xr.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(xr.WRITE_ATTRIBUTES_REQUIRED):new Error(xr.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(JN,"validateBasic");function Ha(e,t,r,s){if(JN(e,t,r),!Array.isArray(s))throw s===void 0?new Error(xr.RECORDS_REQUIRED):new Error(xr.RECORDS_MUST_BE_ARRAY)}a(Ha,"validateWrite");function mn(){}a(mn,"noop");vu.exports={insertRecords:YN,updateRecords:WN,upsertRecords:QN}});var q=T((SH,ku)=>{"use strict";var Kr=f(),XN=p(),ue=$(),Wr=require("path"),ZN=require("minimist"),Gu=require("fs-extra"),qu=require("lodash");ue.initSync();var{CONFIG_PARAMS:ht,SCHEMAS_PARAM_CONFIG:Vr,SYSTEM_SCHEMA_NAME:An}=Kr,kr,Yr,$r;function Fu(){if(kr!==void 0)return kr;if(ue.getHdbBasePath()!==void 0)return kr=ue.get(ht.STORAGE_PATH)||Wr.join(ue.getHdbBasePath(),Kr.SCHEMA_DIR_NAME),kr}a(Fu,"getBaseSchemaPath");function xu(){if(Yr!==void 0)return Yr;if(ue.getHdbBasePath()!==void 0)return Yr=Vu(An),Yr}a(xu,"getSystemSchemaPath");function zN(){if($r!==void 0)return $r;if(ue.getHdbBasePath()!==void 0)return $r=ue.get(Kr.CONFIG_PARAMS.STORAGE_AUDIT_PATH)||Wr.join(ue.getHdbBasePath(),Kr.TRANSACTIONS_DIR_NAME),$r}a(zN,"getTransactionAuditStoreBasePath");function jN(e,t){let r=ue.get(ht.SCHEMAS)?.[e];return t&&r?.tables?.[t]?.auditPath||r?.auditPath||Wr.join(zN(),e.toString())}a(jN,"getTransactionAuditStorePath");function Vu(e,t){e=e.toString(),t=t&&t.toString();let r=ue.get(Kr.CONFIG_PARAMS.SCHEMAS)?.[e];return t&&r?.tables?.[t]?.path||r?.path||Wr.join(Fu(),e)}a(Vu,"getSchemaPath");function ep(e,t){e=e.toString(),t=t.toString();let r=process.env;Object.assign(r,ZN(process.argv));let s=r[ht.SCHEMAS.toUpperCase()];if(s){let i;try{i=JSON.parse(s)}catch(o){if(!XN.isObject(s))throw o;i=s}for(let o of i){let _=o[An];if(!_)continue;let c=ue.get(ht.SCHEMAS);c=c??{};let u=_?.tables?.[t]?.[Vr.PATH];if(u)return qu.set(c,[An,Vr.TABLES,t,Vr.PATH],u),ue.setProperty(ht.SCHEMAS,c),u;let l=_?.[Vr.PATH];if(l)return qu.set(c,[An,Vr.PATH],l),ue.setProperty(ht.SCHEMAS,c),l}}let n=r[ht.STORAGE_PATH.toUpperCase()];if(n){if(!Gu.pathExistsSync(n))throw new Error(n+" does not exist");let i=Wr.join(n,e);return Gu.mkdirsSync(i),ue.setProperty(ht.STORAGE_PATH,n),i}return xu()}a(ep,"initSystemSchemaPaths");function tp(){kr=void 0,Yr=void 0,$r=void 0}a(tp,"resetPaths");ku.exports={getBaseSchemaPath:Fu,getSystemSchemaPath:xu,getTransactionAuditStorePath:jN,getSchemaPath:Vu,initSystemSchemaPaths:ep,resetPaths:tp}});var Pt=T((mH,rp)=>{rp.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 ar=T((AH,Ku)=>{"use strict";var $u=p(),Yu=f(),gn=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Ba=require("joi"),Rn={schema_format:{pattern:gn,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},sp=Ba.alternatives(Ba.string().min(1).max(Rn.schema_length.maximum).pattern(gn).messages({"string.pattern.base":"{:#label} "+Rn.schema_format.message}),Ba.number()).required();function np(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>Rn.schema_length.maximum?`'${e}' maximum of 250 characters`:gn.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(np,"checkValidTable");function ip(e,t){return $u.doesSchemaExist(e)?e:t.message(`Schema '${e}' does not exist`)}a(ip,"validateSchemaExists");function ap(e,t){let r=t.state.ancestors[0].schema;return $u.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(ap,"validateTableExists");function op(e,t){return e.toLowerCase()===Yu.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid schema name, '${Yu.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(op,"validateSchemaName");Ku.exports={common_validators:Rn,schema_regex:gn,hdb_schema_table:sp,validateSchemaExists:ip,validateTableExists:ap,validateSchemaName:op,checkValidTable:np}});var Nn=T((gH,Wu)=>{var{common_validators:Tt}=ar(),Qr=Pe(),Ge="is required",v={schema:{presence:!0,format:Tt.schema_format,length:Tt.schema_length},table:{presence:!0,format:Tt.schema_format,length:Tt.schema_length},attribute:{presence:!0,format:Tt.schema_format,length:Tt.schema_length},hash_attribute:{presence:!0,format:Tt.schema_format,length:Tt.schema_length}};function Jr(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}a(Jr,"makeAttributesStrings");function _p(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence=!1,v.attribute.presence=!1,v.hash_attribute.presence=!1,Qr.validateObject(e,v)}a(_p,"schema_object");function cp(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence={message:Ge},v.attribute.presence=!1,v.hash_attribute.presence=!1,Qr.validateObject(e,v)}a(cp,"table_object");function up(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence={message:Ge},v.attribute.presence=!1,v.hash_attribute.presence={message:Ge},Qr.validateObject(e,v)}a(up,"create_table_object");function lp(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence={message:Ge},v.attribute.presence={message:Ge},v.hash_attribute.presence=!1,Qr.validateObject(e,v)}a(lp,"attribute_object");function Ep(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence={message:Ge},v.attribute.presence=!1,v.hash_attribute.presence=!1,Qr.validateObject(e,v)}a(Ep,"describe_table");function dp(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`)}}a(dp,"validateTableResidence");Wu.exports={schema_object:_p,create_table_object:up,table_object:cp,attribute_object:lp,describe_table:Ep,validateTableResidence:dp}});var Ju=T((pH,Qu)=>{"use strict";var hp=require("uuid"),pn=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.attribute=s,this.id=n||hp.v4(),this.schema_table=`${this.schema}.${this.table}`}};a(pn,"CreateAttributeObject");Qu.exports=pn});var In=T((IH,Xu)=>{"use strict";var Tp=Ju(),On=class extends Tp{constructor(t,r,s,n,i=!0,o=!1){super(t,r,s,n),this.dup_sort=i,this.is_hash_attribute=o}};a(On,"LMDBCreateAttributeObject");Xu.exports=On});var zu=T((CH,Zu)=>{"use strict";Zu.exports=fp;var Sp="inserted";function fp(e,t,r,s){let n={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:s};return e===Sp?(n.inserted_hashes=t,n):(n.update_hashes=t,n)}a(fp,"returnObject")});var bn=T((MH,sl)=>{"use strict";var mp=f(),va=B(),Ap=ir(),{getSystemSchemaPath:Rp,getSchemaPath:gp}=q(),Np=Pt(),pp=Nn(),Op=In(),Ip=zu(),{handleHDBError:ju,hdb_errors:tl}=V(),el=p(),{HTTP_STATUS_CODES:bp}=tl,Ga=Np.hdb_attribute,rl=[];for(let e=0;e<Ga.attributes.length;e++)rl.push(Ga.attributes[e].attribute);var Cp="inserted";sl.exports=yp;async function yp(e){let t=pp.attribute_object(e);if(t)throw ju(new Error,t.message,tl.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0);let r=!e.skip_table_check&&el.checkGlobalSchemaTable(e.schema,e.table);if(r)throw ju(new Error,r,bp.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=el.isEmpty(e.dup_sort)||e.dup_sort=="true";let s=[];if(global.hdb_schema[e.schema]&&global.hdb_schema[e.schema][e.table]&&(s=global.hdb_schema[e.schema][e.table].attributes),Array.isArray(s)&&s.length>0){for(let i of s)if(i.attribute===e.attribute)throw new Error(`attribute '${i.attribute}' already exists in ${e.schema}.${e.table}`)}let n=new Op(e.schema,e.table,e.attribute,e.id);try{let i=await va.openEnvironment(gp(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${e.attribute}' already exists in ${e.schema}.${e.table}`);va.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await va.openEnvironment(Rp(),mp.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:_,skipped_hashes:c}=await Ap.insertRecords(o,Ga.hash_attribute,rl,[n]);return Ip(Cp,_,{records:[n]},c)}catch(i){throw i}}a(yp,"lmdbCreateAttribute")});var Fa=T((LH,il)=>{var{hdb_schema_table:nl}=ar(),Mp=Pe(),qa=require("joi"),wp={undefined:"undefined",null:"null"},Lp=a((e,t)=>{let r=Object.keys(e),s=r.length,n;for(let i=0;i<s;i++){let o=r[i];(!o||o.length===0||wp[o]!==void 0)&&(n===void 0?n=`Invalid attribute name: '${o}'`:n+=`. Invalid attribute name: '${o}'`)}return n?t.message(n):e},"custom_records_val"),Up=qa.object({schema:nl,table:nl,records:qa.array().items(qa.object().custom(Lp)).required()});il.exports=function(e){return Mp.validateBySchema(e,Up)}});var Cn=T((PH,ol)=>{"use strict";var nt=p(),al=N(),DH=Fa();ol.exports=Dp;function Dp(e){if(nt.isEmpty(e))throw new Error("invalid update parameters defined.");if(nt.isEmptyOrZeroLength(e.schema))throw new Error("invalid schema specified.");if(nt.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(nt.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(o=>{if(i&&nt.isEmptyOrZeroLength(o[r]))throw al.error("a valid hash attribute must be provided with update record:",o),new Error("a valid hash attribute must be provided with update record, check log for more info");if(!nt.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw al.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Error(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!nt.isEmpty(o[r])&&o[r]!==""&&s.has(nt.autoCast(o[r]))&&(o.skip=!0),s.add(nt.autoCast(o[r]));for(let _ in o)n[_]=1}),n[r]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(n)}}a(Dp,"insertUpdateValidate")});var Mn=T((BH,_l)=>{"use strict";var Pp=f().OPERATIONS_ENUM,yn=class{constructor(t,r,s,n,i=void 0){this.operation=Pp.INSERT,this.schema=t,this.table=r,this.hash_attribute=s,this.records=n,this.__origin=i}};a(yn,"InsertObject");_l.exports=yn});var Ln=T((qH,cl)=>{"use strict";var GH=Mn(),wn=f(),Va=p(),xa=N(),Hp=require("uuid"),{handleHDBError:Xr,hdb_errors:Bp}=V(),{HDB_ERROR_MSGS:Zr,HTTP_STATUS_CODES:zr}=Bp;cl.exports=vp;function vp(e,t,r){for(let n=0;n<t.length;n++)Gp(t[n]);let{records:s}=e;for(let n=0;n<s.length;n++){let i=s[n];qp(i,r,e.operation)}}a(vp,"processRows");function Gp(e){if(Buffer.byteLength(String(e))>wn.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE)throw Xr(new Error,Zr.ATTR_NAME_LENGTH_ERR(e),zr.BAD_REQUEST,void 0,void 0,!0);if(Va.isEmptyOrZeroLength(e)||Va.isEmpty(e.trim()))throw Xr(new Error,Zr.ATTR_NAME_NULLISH_ERR,zr.BAD_REQUEST,void 0,void 0,!0)}a(Gp,"validateAttribute");function qp(e,t,r){if(!e.hasOwnProperty(t)||Va.isEmptyOrZeroLength(e[t])){if(r===wn.OPERATIONS_ENUM.INSERT||r===wn.OPERATIONS_ENUM.UPSERT){e[t]=Hp.v4();return}throw xa.error("Update transaction aborted due to record with no hash value:",e),Xr(new Error,Zr.RECORD_MISSING_HASH_ERR,zr.BAD_REQUEST,void 0,void 0,!0)}if(Buffer.byteLength(String(e[t]))>wn.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE)throw xa.error(e),Xr(new Error,Zr.HASH_VAL_LENGTH_ERR,zr.BAD_REQUEST,void 0,void 0,!0);if(isNaN(e[t])&&e[t].includes("/"))throw xa.error(e),Xr(new Error,Zr.INVALID_FORWARD_SLASH_IN_HASH_ERR,zr.BAD_REQUEST,void 0,void 0,!0)}a(qp,"validateHash")});var ll=T((xH,ul)=>{"use strict";var Un=class{constructor(t,r){this.type=t,this.message=r}};a(Un,"ITCEventObject");ul.exports=Un});var Dn=T((kH,hl)=>{var Fp=require("crypto"),El=9;function xp(e){let t=kp(El),r=dl(e+t);return t+r}a(xp,"createHash");function Vp(e,t){let r=e.substr(0,El),s=r+dl(t+r);return e===s}a(Vp,"validateHash");function kp(e){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ",r=t.length,s="";for(let n=0;n<e;n++){let i=Math.floor(Math.random()*r);s+=t[i]}return s}a(kp,"generateSalt");function dl(e){return Fp.createHash("md5").update(e).digest("hex")}a(dl,"md5");hl.exports={hash:xp,validate:Vp}});var Sl=T(($H,Tl)=>{"use strict";var St=f(),jr=class{constructor(t=0,r=St.STORAGE_TYPES_ENUM.LMDB,s=St.LICENSE_VALUES.API_CALL_DEFAULT,n=St.RAM_ALLOCATION_ENUM.DEFAULT,i=St.LICENSE_VALUES.VERSION_DEFAULT,o){this.exp_date=t,this.storage_type=r,this.api_call=s,this.ram_allocation=n,this.version=i,this.fingerprint=o}};a(jr,"BaseLicense");var Pn=class extends jr{constructor(t=0,r=St.STORAGE_TYPES_ENUM.LMDB,s=St.LICENSE_VALUES.API_CALL_DEFAULT,n=St.RAM_ALLOCATION_ENUM.DEFAULT,i=St.LICENSE_VALUES.VERSION_DEFAULT,o,_=!1){super(t,r,s,n,i,o),this.enterprise=_}};a(Pn,"ExtendedLicense");Tl.exports={BaseLicense:jr,ExtendedLicense:Pn}});var Wa=T((WH,Nl)=>{"use strict";var _r=require("fs-extra"),fl=Dn(),ml=require("crypto"),Yp=require("moment"),$p=require("uuid").v4,se=N(),Ya=require("path"),Kp=p(),Re=f(),Wp=Sl().ExtendedLicense,or="invalid license key format",Qp="061183",Jp="mofi25",Xp="aes-256-cbc",Zp=16,zp=32,Al=$();Al.initSync();var ka;Nl.exports={validateLicense:Rl,generateFingerPrint:eO,licenseSearch:gl,getLicense:sO};function $a(){return Ya.join(Al.getHdbBasePath(),Re.LICENSE_KEY_DIR_NAME,Re.LICENSE_FILE_NAME)}a($a,"getLicenseDirPath");function jp(){let e=$a();return Ya.join(e,Re.LICENSE_FILE_NAME)}a(jp,"getLicenseFilePath");function Ka(){let e=$a();return Ya.join(e,Re.REG_KEY_FILE_NAME)}a(Ka,"getFingerPrintFilePath");async function eO(){let e=Ka();try{return await _r.readFile(e,"utf8")}catch(t){if(t.code==="ENOENT")return await tO();throw se.error(`Error writing fingerprint file to ${e}`),se.error(t),new Error("There was an error generating the fingerprint")}}a(eO,"generateFingerPrint");async function tO(){let e=$p(),t=fl.hash(e),r=Ka();try{await _r.mkdirp($a()),await _r.writeFile(r,t)}catch(s){if(s.code==="EEXIST")return t;throw se.error(`Error writing fingerprint file to ${r}`),se.error(s),new Error("There was an error generating the fingerprint")}return t}a(tO,"writeFingerprint");function Rl(e,t){let r={valid_license:!1,valid_date:!1,valid_machine:!1,exp_date:null,storage_type:Re.STORAGE_TYPES_ENUM.LMDB,api_call:Re.LICENSE_VALUES.API_CALL_DEFAULT,ram_allocation:Re.RAM_ALLOCATION_ENUM.DEFAULT,version:Re.LICENSE_VALUES.VERSION_DEFAULT};if(!e)return se.error("empty license key passed to validate."),r;let s=Ka(),n=!1;try{n=_r.statSync(s)}catch(i){se.error(i)}if(n){let i;try{i=_r.readFileSync(s,"utf8")}catch{se.error("error validating this machine in the license"),r.valid_machine=!1;return}let o=e.split(Jp),_=o[1];_=Buffer.concat([Buffer.from(_)],Zp);let c=Buffer.concat([Buffer.from(i)],zp),u=ml.createDecipheriv(Xp,c,_);r.valid_date=!0,r.valid_license=!0,r.valid_machine=!0;let l=null;try{l=u.update(o[0],"hex","utf8"),l.trim(),l+=u.final("utf8")}catch{let d=rO(o[0],i);if(d)l=d;else throw r.valid_license=!1,r.valid_machine=!1,console.error(or),se.error(or),new Error(or)}let E;if(isNaN(l))try{E=JSON.parse(l),r.api_call=E.api_call,r.version=E.version,r.storage_type=E.storage_type,r.exp_date=E.exp_date,isNaN(r.exp_date)&&(r.exp_date=new Date(r.exp_date).getTime()),E.ram_allocation&&(r.ram_allocation=E.ram_allocation)}catch{throw console.error(or),se.error(or),new Error(or)}else r.exp_date=l;r.exp_date<Yp().valueOf()&&(r.valid_date=!1),fl.validate(o[1],`${Qp}${i}${t}`)||(r.valid_license=!1)}else r.valid_license=!1,r.valid_machine=!1;return r.valid_license&&r.valid_machine&&r.valid_date||se.error("Invalid licence"),r}a(Rl,"validateLicense");function rO(e,t){try{let r=ml.createDecipher("aes192",t),s=r.update(e,"hex","utf8");return s.trim(),s+=r.final("utf8"),s}catch{se.warn("Check old license failed")}}a(rO,"checkOldLicense");function gl(){let e=new Wp;e.api_call=0;let t=[];try{t=_r.readFileSync(jp(),"utf-8").split(Re.NEW_LINE)}catch(r){r.code==="ENOENT"?se.info("no license file found"):se.error(`could not search for licenses due to: '${r.message}`)}for(let r=0;r<t.length;++r){let s=t[r];try{if(Kp.isEmptyOrZeroLength(s))continue;let n=JSON.parse(s),i=Rl(n.license_key,n.company);i.valid_machine===!0&&i.valid_date===!0&&i.valid_machine===!0&&(e.exp_date=i.exp_date>e.exp_date?i.exp_date:e.exp_date,e.api_call+=i.api_call,e.ram_allocation=i.ram_allocation,e.storage_type=i.storage_type,e.enterprise=!0)}catch(n){se.error("There was an error parsing the license string."),se.error(n),e.api_call=Re.LICENSE_VALUES.API_CALL_DEFAULT,e.ram_allocation=Re.RAM_ALLOCATION_ENUM.DEFAULT,e.storage_type=Re.STORAGE_TYPES_ENUM.LMDB,e.enterprise=!1}}return e.api_call===0&&(e.api_call=Re.LICENSE_VALUES.API_CALL_DEFAULT),ka=e,e}a(gl,"licenseSearch");async function sO(){return ka||await gl(),ka}a(sO,"getLicense")});var vn=T((JH,ja)=>{"use strict";var{Worker:nO,MessageChannel:iO,parentPort:it,isMainThread:Il,threadId:aO,workerData:oO}=require("worker_threads"),{PACKAGE_ROOT:_O}=f(),{join:cO,isAbsolute:uO,extname:lO}=require("path"),{totalmem:pl}=require("os"),Za=f(),bl=$(),EO=Wa(),Hn=N(),dO=f();bl.initSync();var hO=bl.get(Za.CONFIG_PARAMS.HTTP_THREADS)||1,TO=1024*1024,ft=[],Ht=[],SO=50,Cl=1e4,yl="restart",Ml="request_thread_info",wl="resource_report",Ll="thread_info",Ul="added-port",Qa;ja.exports={startWorker:Ja,restartWorkers:za,shutdownWorkers:mO,workers:ft,setMonitorListener:pO,onMessageFromWorkers:AO,broadcast:RO};function Ja(e,t={}){let s=EO.licenseSearch().ram_allocation,n=process.constrainedMemory?.()||pl();n=Math.min(n,pl());let i=Math.min(Math.max(Math.floor(n/TO/(1+hO/4)),512),s||1/0),o=Math.min(Math.max(i>>7,16),64),_=[];for(let u of Ht){let{port1:l,port2:E}=new iO;u.postMessage({type:Ul,port:l},[l]),_.push(E)}lO(e)||(e+=".js");let c=new nO(uO(e)?e:cO(_O,e),Object.assign({resourceLimits:{maxOldGenerationSizeMb:i,maxYoungGenerationSizeMb:o},argv:process.argv.slice(2),workerData:{addPorts:_,name:t.name},transferList:_},t));return Bn(c,!0),c.unexpectedRestarts=t.unexpectedRestarts||0,c.startCopy=()=>{Ja(e,t)},c.on("error",u=>{console.error("Worker error:",u),Hn.error("Worker error:",u)}),c.on("exit",u=>{ft.splice(ft.indexOf(c),1),!c.wasShutdown&&t.autoRestart!==!1&&(c.unexpectedRestarts<SO?(t.unexpectedRestarts=c.unexpectedRestarts+1,Ja(e,t)):Hn.error(`Thread has been restarted ${c.restarts} times and will not be restarted`))}),c.on("message",u=>{u.type===yl&&za(u.workerType),u.type===Ml&&gO(c),u.type===wl&&NO(c,u)}),ft.push(c),IO(),t.onStarted&&t.onStarted(c),c.name=t.name,c}a(Ja,"startWorker");var fO=[Za.THREAD_TYPES.HTTP];async function za(e=null,t=2,r=!0){if(Il){t<1&&(t=t*ft.length);let s=[];for(let n of ft.slice(0)){if(e&&n.name!==e||n.wasShutdown)continue;n.postMessage({type:Za.ITC_EVENT_TYPES.SHUTDOWN}),n.wasShutdown=!0,n.emit("shutdown",{});let i=fO.indexOf(n.name)>-1,o=new Promise(_=>{let c=setTimeout(()=>n.terminate(),Cl*2).unref();n.on("exit",()=>{clearTimeout(c),s.splice(s.indexOf(o)),!i&&r&&n.startCopy(),_()})});s.push(o),i&&r&&(n.startCopy(),s.length>=t&&await Promise.race(s))}await Promise.all(s)}else it.postMessage({type:yl,workerType:e})}a(za,"restartWorkers");function mO(e){return za(e,1/0,!1)}a(mO,"shutdownWorkers");var Dl=[];function AO(e){Dl.push(e)}a(AO,"onMessageFromWorkers");function RO(e){for(let t of Ht)try{t.postMessage(e)}catch(r){Hn.error("Unable to send message to worker",r)}}a(RO,"broadcast");function gO(e){e.postMessage({type:Ll,workers:Pl()})}a(gO,"sendThreadInfo");function Pl(){let e=Date.now();return ft.map(t=>({threadId:t.threadId,name:t.name,heapTotal:t.resources?.heapTotal,heapUsed:t.resources?.heapUsed,externalMemory:t.resources?.external,arrayBuffers:t.resources?.arrayBuffers,sinceLastUpdate:e-t.resources?.updated,...t.recentELU}))}a(Pl,"getChildWorkerInfo");function NO(e,t){e.resources=t,e.resources.updated=Date.now()}a(NO,"recordResourceReport");var Xa;function pO(e){Xa=e}a(pO,"setMonitorListener");var OO=1e3,Ol=!1;function IO(){Ol||(Ol=!0,setInterval(()=>{for(let e of ft){let t=e.performance.eventLoopUtilization(),r;e.lastTotalELU?r=e.performance.eventLoopUtilization(t,e.lastTotalELU):r=t,e.lastTotalELU=t,e.recentELU=r}Xa&&Xa()},OO).unref())}a(IO,"startMonitoring");var bO=1e3;if(it){Bn(it);for(let e of oO.addPorts)Bn(e);setInterval(()=>{let e=process.memoryUsage();it.postMessage({type:wl,heapTotal:e.heapTotal,heapUsed:e.heapUsed,external:e.external,arrayBuffers:e.arrayBuffers})},bO).unref(),Qa=a(()=>new Promise((e,t)=>{it.on("message",r),it.postMessage({type:Ml});function r(s){s.type===Ll&&(it.off("message",r),e(s.workers))}a(r,"receiveThreadInfo")}),"getThreadInfo")}else Qa=Pl;ja.exports.getThreadInfo=Qa;function Bn(e,t){Ht.push(e),e.on("message",r=>{if(r.type===Ul)Bn(r.port);else for(let s of Dl)s(r)}).on("close",()=>{Ht.splice(Ht.indexOf(e),1)}).on("exit",()=>{Ht.splice(Ht.indexOf(e),1)}),t||e.unref()}a(Bn,"addPort");Il||it.on("message",async e=>{let{type:t}=e;t===dO.ITC_EVENT_TYPES.SHUTDOWN&&(it.unref(),setTimeout(()=>{Hn.warn("Thread did not voluntarily terminate",aO),process.exit(0)},Cl).unref())})});var vl=T((ZH,Bl)=>{"use strict";var eo=B(),CO=N(),Hl=be().LMDB_ERRORS_ENUM;Bl.exports=yO;async function yO(e){try{if(global.lmdb_map!==void 0&&e.operation!==void 0){let t=Object.keys(global.lmdb_map),r;switch(e.operation){case"drop_schema":for(let i=0;i<t.length;i++){let o=t[i];if(o.startsWith(`${e.schema}.`)||o.startsWith(`txn.${e.schema}.`))try{await eo.closeEnvironment(global.lmdb_map[o])}catch(_){if(_.message!==Hl.ENV_REQUIRED)throw _}}break;case"drop_table":let s=`${e.schema}.${e.table}`,n=`txn.${s}`;try{await eo.closeEnvironment(global.lmdb_map[s]),await eo.closeEnvironment(global.lmdb_map[n])}catch(i){if(i.message!==Hl.ENV_REQUIRED)throw i}break;case"drop_attribute":r=global.lmdb_map[`${e.schema}.${e.table}`],r!==void 0&&typeof r.dbis=="object"&&r.dbis[`${e.attribute}`]!==void 0&&delete r.dbis[`${e.attribute}`];break;default:break}}}catch(t){CO.error(t)}}a(yO,"cleanLMDBMap")});var Xl=T((eB,Jl)=>{"use strict";var to=require("recursive-iterator"),MO=require("alasql"),ro=require("clone"),Gl=p(),{handleHDBError:ql,hdb_errors:wO}=V(),{HDB_ERROR_MSGS:Fl,HTTP_STATUS_CODES:xl}=wO,LO=["DISTINCT_ARRAY"],Vl=Symbol("validateTables"),so=Symbol("validateTable"),jH=Symbol("getAllColumns"),kl=Symbol("validateAllColumns"),Gn=Symbol("findColumn"),Yl=Symbol("validateOrderBy"),es=Symbol("validateSegment"),no=Symbol("validateColumn"),$l=Symbol("setColumnsForTable"),Kl=Symbol("checkColumnsForAsterisk"),Wl=Symbol("validateGroupBy"),Ql=Symbol("hasColumns"),qn=class{constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[Vl](),this[Kl](),this[kl]()}[Vl](){if(this[Ql]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[so](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[so](t.table)})}}[Ql](){let t=!1,r=new to(this.statement);for(let{node:s,path:n}of r)if(s&&s.columnid){t=!0;break}return t}[so](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;if(!global.hdb_schema[t.databaseid])throw ql(new Error,Fl.SCHEMA_NOT_FOUND(t.databaseid),xl.NOT_FOUND);if(!global.hdb_schema[t.databaseid][t.tableid])throw ql(new Error,Fl.TABLE_NOT_FOUND(t.databaseid,t.tableid),xl.NOT_FOUND);global.hdb_schema[t.databaseid][t.tableid].attributes.forEach(s=>{let n=ro(s);n.table=ro(t),this.attributes.push(n)})}[Gn](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)}[Kl](){let t=new to(this.statement.columns);for(let{node:r,path:s}of t)r&&r.columnid==="*"&&s.indexOf("expression")<0&&this[$l](r.tableid)}[$l](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&this.statement.columns.push(new MO.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[kl](){this[es](this.statement.columns,!1),this[es](this.statement.joins,!1),this[es](this.statement.where,!1),this[Wl](this.statement.group,!1),this[es](this.statement.order,!0)}[es](t,r){if(!t)return;let s=new to(t),n=[];for(let{node:i,path:o}of s)!Gl.isEmpty(i)&&!Gl.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[Yl](i):n.push(this[no](i)));return n}[Wl](t){if(!t)return;let r=[];if(this.statement.columns.forEach(s=>{if(!(s.funcid&&LO.indexOf(s.funcid.toUpperCase())>=0)){if(!s.aggregatorid&&!s.columnid){let n=ro(s);delete n.as,r.push(n)}else if(s.columnid){let n=this[Gn](s)[0];n&&r.push(n)}}}),this.statement.group.forEach(s=>{let n=null;if(!s.columnid)r.forEach((i,o)=>{if(i.toString()===s.toString()){n=i,r.splice(o,1);return}});else{let i=this[Gn](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((o,_)=>{if(o.attribute===i[0].attribute&&o.table.tableid===i[0].table.tableid){n=o,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`}[Yl](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[no](t)}[no](t){let r=this[Gn](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]}};a(qn,"SelectValidator");Jl.exports=qn});var eE=T((rB,jl)=>{"use strict";var Zl=require("lodash"),ts=require("mathjs"),UO=require("jsonata"),zl=p();jl.exports={distinct_array:e=>Array.isArray(e)&&e.length>1?Zl.uniqWith(e,Zl.isEqual):e,searchJSON:DO,mad:rs.bind(null,ts.mad),mean:rs.bind(null,ts.mean),mode:rs.bind(null,ts.mode),prod:rs.bind(null,ts.prod),median:rs.bind(null,ts.median)};function rs(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}a(rs,"aggregateFunction");function DO(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(zl.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),zl.isEmpty(this.__ala__.res[r])){let s=UO(e);this.__ala__.res[r]=s}return this.__ala__.res[r].evaluate(t)}a(DO,"searchJSON")});var rE=T((nB,tE)=>{"use strict";var K=require("moment"),io="YYYY-MM-DDTHH:mm:ss.SSSZZ";K.suppressDeprecationWarnings=!0;tE.exports={current_date:()=>K().utc().format("YYYY-MM-DD"),current_time:()=>K().utc().format("HH:mm:ss.SSS"),extract:(e,t)=>{switch(t.toLowerCase()){case"year":return K(e).utc().format("YYYY");case"month":return K(e).utc().format("MM");case"day":return K(e).utc().format("DD");case"hour":return K(e).utc().format("HH");case"minute":return K(e).utc().format("mm");case"second":return K(e).utc().format("ss");case"millisecond":return K(e).utc().format("SSS");default:break}},date:e=>K(e).utc().format(io),date_format:(e,t)=>K(e).utc().format(t),date_add:(e,t,r)=>K(e).utc().add(t,r).valueOf(),date_sub:(e,t,r)=>K(e).utc().subtract(t,r).valueOf(),date_diff:(e,t,r)=>{let s=K(e).utc(),n=K(t).utc();return r?s.diff(n,r,!0):s.diff(n)},now:()=>K().utc().valueOf(),get_server_time:()=>K().format(io),offset_utc:(e,t)=>K(e).utc().utcOffset(t).format(io)}});var aE=T((iB,iE)=>{"use strict";var PO=require("@turf/area"),HO=require("@turf/length"),BO=require("@turf/circle"),vO=require("@turf/difference"),GO=require("@turf/distance"),qO=require("@turf/boolean-contains"),FO=require("@turf/boolean-equal"),xO=require("@turf/boolean-disjoint"),VO=require("@turf/helpers"),sE=f(),w=p();iE.exports={geoArea:kO,geoLength:YO,geoCircle:$O,geoDifference:KO,geoDistance:nE,geoNear:WO,geoContains:QO,geoEqual:JO,geoCrosses:XO,geoConvert:ZO};var ao="geo1 is required",oo="geo2 is required";function kO(e){if(w.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),PO.default(e)}a(kO,"geoArea");function YO(e,t){if(w.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),HO.default(e,{units:t||"kilometers"})}a(YO,"geoLength");function $O(e,t,r){if(w.isEmpty(e))throw new Error("point is required");if(w.isEmpty(t))throw new Error("radius is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),BO.default(e,t,{units:r||"kilometers"})}a($O,"geoCircle");function KO(e,t){if(w.isEmpty(e))throw new Error("poly1 is required");if(w.isEmpty(t))throw new Error("poly2 is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),vO(e,t)}a(KO,"geoDifference");function nE(e,t,r){if(w.isEmpty(e))throw new Error("point1 is required");if(w.isEmpty(t))throw new Error("point2 is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),GO.default(e,t,{units:r||"kilometers"})}a(nE,"geoDistance");function WO(e,t,r,s){if(w.isEmpty(e))throw new Error("point1 is required");if(w.isEmpty(t))throw new Error("point2 is required");if(w.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");return nE(e,t,s)<=r}a(WO,"geoNear");function QO(e,t){if(w.isEmpty(e))throw new Error(ao);if(w.isEmpty(e))throw new Error(oo);return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),qO.default(e,t)}a(QO,"geoContains");function JO(e,t){if(w.isEmpty(e))throw new Error(ao);if(w.isEmpty(e))throw new Error(oo);return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),FO.default(e,t)}a(JO,"geoEqual");function XO(e,t){if(w.isEmpty(e))throw new Error(ao);if(w.isEmpty(e))throw new Error(oo);return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),!xO.default(e,t)}a(XO,"geoCrosses");function ZO(e,t,r){if(w.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(w.isEmpty(t))throw new Error("geo_type is required");if(w.isEmpty(sE.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(sE.GEO_CONVERSION_ENUM).join(",")}`);return VO[t](e,r)}a(ZO,"geoConvert")});var _E=T((oB,oE)=>{var Bt=eE(),ge=rE(),Ke=aE();oE.exports=e=>{e.aggr.mad=e.aggr.MAD=Bt.mad,e.aggr.mean=e.aggr.MEAN=Bt.mean,e.aggr.mode=e.aggr.MODE=Bt.mode,e.aggr.prod=e.aggr.PROD=Bt.prod,e.aggr.median=e.aggr.MEDIAN=Bt.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=Bt.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=Bt.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=ge.current_date,e.fn.current_time=e.fn.CURRENT_TIME=ge.current_time,e.fn.extract=e.fn.EXTRACT=ge.extract,e.fn.date=e.fn.DATE=ge.date,e.fn.date_format=e.fn.DATE_FORMAT=ge.date_format,e.fn.date_add=e.fn.DATE_ADD=ge.date_add,e.fn.date_sub=e.fn.DATE_SUB=ge.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=ge.date_diff,e.fn.now=e.fn.NOW=ge.now,e.fn.offset_utc=e.fn.OFFSET_UTC=ge.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=ge.get_server_time,e.fn.getdate=e.fn.GETDATE=ge.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=ge.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=Ke.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=Ke.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=Ke.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=Ke.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=Ke.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=Ke.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=Ke.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=Ke.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=Ke.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=Ke.geoNear}});var lE=T((_B,uE)=>{"use strict";var ss=require("lodash"),j=require("alasql");j.options.cache=!1;var zO=_E(),cE=require("clone"),Fn=require("recursive-iterator"),I=N(),y=p(),cr=mt(),jO=f(),{hdb_errors:eI}=V(),tI="IS NULL",qe="There was a problem performing this search. Please check the logs and try again.";zO(j);var xn=class{constructor(t,r){if(y.isEmpty(t))throw I.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(),y.backtickASTSchemaItems(this.statement)}async search(){let t;try{let s=await this._checkEmptySQL();if(!y.isEmptyOrZeroLength(s))return I.trace("No results returned from checkEmptySQL SQLSearch method."),s}catch(s){throw I.error("Error thrown from checkEmptySQL in SQLSearch class method search."),I.error(s),new Error(qe)}try{let s=await this._getFetchAttributeValues();if(s)return s}catch(s){throw I.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),I.error(s),new Error(qe)}if(Object.keys(this.data).length===0)return I.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(s){throw I.error("Error thrown from processJoins in SQLSearch class method search."),I.error(s),new Error(qe)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(s){throw I.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),I.error(s),new Error(qe)}try{return t=await this._finalSQL(),t}catch(s){throw I.error("Error thrown from finalSQL in SQLSearch class method search."),I.error(s),new Error(qe)}}_getColumns(){let t=new Fn(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(cE(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=ss.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(y.isEmpty(this.statement.where)){I.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new Fn(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!y.isEmpty(r)&&r.right)if(y.isNotEmptyAndHasValue(r.right.value)){let s=y.autoCast(r.right.value);[!0,!1].indexOf(s)>=0?r.right=new j.yy.LogicValue({value:s}):r.right instanceof j.yy.StringValue&&!y.isEmpty(s)&&y.autoCasterIsNumberCheck(s.toString())&&(r.right=new j.yy.NumValue({value:s}))}else Array.isArray(r.right)&&r.right.forEach((s,n)=>{let i=y.autoCast(s.value);[!0,!1].indexOf(i)>=0?r.right[n]=new j.yy.LogicValue({value:i}):s instanceof j.yy.StringValue&&y.autoCasterIsNumberCheck(i.toString())&&(r.right[n]=new j.yy.NumValue({value:i}))});if(t){I.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new Fn(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 o=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!y.isEmpty(jO.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(y.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(y.isEmptyOrZeroLength(r.left.columnid)||y.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[o].ignore=!0,this.comparator_search_values[o].comparators=[];continue}this.comparator_search_values[o].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(y.isEmpty(this.exact_search_values[o])&&(this.exact_search_values[o]={ignore:!1,values:new Set}),!this.exact_search_values[o].ignore){let _=!1;switch(r.op){case"=":!y.isEmpty(r.right.value)||!y.isEmpty(r.left.value)?s.add(y.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[o].ignore=_,_?this.exact_search_values[o].values=new Set:this.exact_search_values[o].values=new Set([...this.exact_search_values[o].values,...s])}}}_setAliasesForColumns(){if(y.isEmptyOrZeroLength(this.all_table_attributes)&&y.isEmptyOrZeroLength(this.statement.from)&&y.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&&ss.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(y.isEmptyOrZeroLength(r)){let s=this.columns.columns.filter(n=>n.as?t.columnid===n.as:!1);y.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(y.isEmptyOrZeroLength(this.all_table_attributes)&&!y.isEmptyOrZeroLength(this.columns.columns))return t;if(y.isEmptyOrZeroLength(this.all_table_attributes)&&y.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await j.promise(r)}catch(r){throw I.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),I.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(cE(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(y.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(tI)>-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=ss.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 o=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,_=this.data[o].__hash_name;return n[o]||(n[o]=[],n[o].push(null),this._addColumnToMergedAttributes(o,_)),i.attribute!==_&&(n[o].push(null),this._addColumnToMergedAttributes(o,i.attribute)),n},{});for(let n of this.fetch_attributes){let i=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,o=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===o&&(c=!0),!y.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!y.isEmptyOrZeroLength(this.exact_search_values[u].values))if(c)try{_.hash_values=Array.from(this.exact_search_values[u].values);let l=await cr.getDataByHash(_);for(let E of _.hash_values)l.get(E)&&!this.data[i].__merged_data[E]&&(this.data[i].__merged_data[E]=[...s[i]],this._setMergedHashAttribute(i,E))}catch(l){throw I.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),I.error(l),new Error(qe)}else try{_.search_attribute=n.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async l=>{let E=Object.assign({},_);E.search_value=l;let h=await cr.getDataByValue(E);for(let[d,A]of h)this.data[i].__merged_data[d]?this._updateMergedAttribute(i,d,n.attribute,A[n.attribute]):(this.data[i].__merged_data[d]=[...s[i]],this._updateMergedAttribute(i,d,n.attribute,A[n.attribute]),this._setMergedHashAttribute(i,y.autoCast(d)))}))}catch(l){throw I.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),I.error(l),new Error(qe)}else if(!y.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!y.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let l=this.comparator_search_values[u].comparators;for(let E=0,h=l.length;E<h;E++){let d=l[E];_.search_attribute=d.attribute,_.search_value=d.search_value;let A=await cr.getDataByValue(_,d.operation);if(c)for(let[R]of A)this.data[i].__merged_data[R]||(this.data[i].__merged_data[R]=[...s[i]],this._setMergedHashAttribute(i,y.autoCast(R)));else for(let[R,M]of A)this.data[i].__merged_data[R]?this._updateMergedAttribute(i,R,n.attribute,M[n.attribute]):(this.data[i].__merged_data[R]=[...s[i]],this._updateMergedAttribute(i,R,n.attribute,M[n.attribute]),this._setMergedHashAttribute(i,y.autoCast(R)))}}catch(l){throw I.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),I.error(l),new Error(qe)}else try{_.search_attribute=n.attribute,_.search_value="*";let l=await cr.getDataByValue(_);if(c)for(let[E]of l)this.data[i].__merged_data[E]||(this.data[i].__merged_data[E]=[...s[i]],this._setMergedHashAttribute(i,y.autoCast(E)));else for(let[E,h]of l)this.data[i].__merged_data[E]?this._updateMergedAttribute(i,E,n.attribute,h[n.attribute]):(this.data[i].__merged_data[E]=[...s[i]],this._updateMergedAttribute(i,E,n.attribute,h[n.attribute]),this._setMergedHashAttribute(i,y.autoCast(E)))}catch(l){throw I.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),I.error(l),new Error(qe)}}}_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 j.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,o=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===o});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 j.yy.Column;n.columnid=s.as,n.columnid_orig=s.as_orig,t.expression=n}else{t.initial_select_column=Object.assign(new j.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 j.yy.FuncValue:new j.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(d=>{d.joinmode&&d.joinmode!=="INNER"&&(this.has_outer_join=!0),n.push(d.table);let A=d.joinmode+" JOIN ? AS "+(d.as?d.as:d.table.tableid);d.on&&(A+=" ON "+d.on.toString()),i.push(A),t.push(Object.values(this.data[`${d.table.databaseid_orig}_${d.table.as?d.table.as_orig:d.table.tableid_orig}`].__merged_data))});let o=[],_={};n.forEach(d=>{let A=this.data[`${d.databaseid_orig}_${d.as?d.as_orig:d.tableid_orig}`].__hash_name,R=d.as?d.as_orig:d.tableid_orig;o.push({key:`'${R}.${A}'`,schema:d.databaseid_orig,table:d.as?d.as_orig:d.tableid_orig,keys:new Set}),r.push(`${d.as?d.as:d.tableid}.\`${A}\` AS "${R}.${A}"`),_[d.as?d.as_orig:d.tableid_orig]=this.data[`${d.databaseid_orig}_${d.as?d.as_orig:d.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(d=>{d.is_func?r.push(d.initial_select_column.toString()):d.initial_select_column.tableid?r.push(`${d.initial_select_column.tableid}.${d.initial_select_column.columnid} AS ${d.expression.columnid}`):r.push(`${d.initial_select_column.columnid} AS ${d.expression.columnid}`)}));let l="",E="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&(l=this.statement.limit?"LIMIT "+this.statement.limit:"",E=this.statement.offset?"OFFSET "+this.statement.offset:"");let h=[];try{let d=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${c} ${u} ${l} ${E}`,A=this._convertColumnsToIndexes(d,n);h=await j.promise(A,t),t=null}catch(d){throw I.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),I.error(d),new Error("There was a problem processing the data.")}if(h&&h.length>0){for(let d=0,A=h.length;d<A;d++){let R=h[d];o.forEach(M=>{R[M.key]!==null&&R[M.key]!==void 0&&M.keys.add(R[M.key])})}o.forEach(d=>{let A=Object.keys(this.data[`${d.schema}_${d.table}`].__merged_data),R=ss.difference(A,[...d.keys].map(M=>M.toString()));for(let M=0,W=R.length;M<W;M++){let x=R[M];delete this.data[`${d.schema}_${d.table}`].__merged_data[x]}})}return{existing_attributes:_,joined_length:h?h.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let s=[],n=new Fn(this.columns);for(let{node:i}of n)if(i&&i.columnid){let o=this._findColumn(i);if(o){let _=o.table.as?o.table.as:o.table.tableid;(!t[_]||t[_].indexOf(o.attribute)<0)&&s.push(o)}}s=ss.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){throw I.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),I.error(i),new Error(qe)}}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,o=[];for(let l in i)o.push(i[l][0]);this.data[s].__merged_attributes.push(...n.columns);let _={schema:n.schema,table:n.table,hash_values:o,get_attributes:n.columns},c=await cr.getDataByHash(_),u=n.columns.length;for(let l=0,E=o.length;l<E;l++){let h=o[l],d=c.get(h);for(let A=0;A<u;A++){let R=n.columns[A],M=d[R]===void 0?null:d[R];this.data[s].__merged_data[h].push(M)}}}}catch(r){throw I.error("Error thrown from getDataByHash function in SQLSearch class method getData."),I.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(o=>{let _=o.aggregatorid?o.expression:o,c=o.aggregatorid?o.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();I.trace(`Final SQL: ${n}`),s=await j.promise(n,t),this.has_outer_join&&(s=this._translateUndefinedValues(s)),I.trace(`Final AlaSQL results data included ${s.length} rows`)}catch(n){throw I.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),I.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 I.error(eI.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),I.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((o,_)=>{let c=n[i],u=new RegExp(`${c}.\`${o}\``,"g"),l=`${c}.[${_}]`;s=s.replace(u,l)});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,_)=>{let c=new RegExp(`\`${o}\``,"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 o=await cr.getDataByValue(i);for(let[_,c]of o)this.data[n].__merged_data[_]||(this.data[n].__merged_data[_]=Object.assign({},r[n])),this.data[n].__merged_data[_][t[s.attribute]]=c[s.attribute]}catch(o){throw I.error("There was an error when processing this SQL operation. Check your logs"),I.error(o),new Error(qe)}}return Object.values(Object.values(this.data)[0].__merged_data)}};a(xn,"SQLSearch");uE.exports=xn});var Vn=T((uB,dE)=>{"use strict";var rI=Xl();dE.exports={searchByConditions:aI,searchByHash:oI,searchByValue:_I,search:cI};var _o=mt(),EE=require("util"),sI=EE.callbackify(_o.searchByHash),nI=EE.callbackify(_o.searchByValue),iI=lE();async function aI(e){return _o.searchByConditions(e)}a(aI,"searchByConditions");function oI(e,t){try{sI(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}a(oI,"searchByHash");function _I(e,t){try{e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc),nI(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}a(_I,"searchByValue");function cI(e,t){try{let r=new rI(e);r.validate(),new iI(r.statement,r.attributes).search().then(n=>{t(null,n)}).catch(n=>{t(n,null)})}catch(r){return t(r)}}a(cI,"search")});var uo=T((dB,hE)=>{"use strict";var uI=f(),EB=Ut();function co(e,t){let r=Object.create(null);if(t.length===1&&uI.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}a(co,"parseRow");function lI(e,t,r,s){let n=co(r,e);s.push(n)}a(lI,"searchAll");function EI(e,t,r,s){let n=co(r,e);s[t]=n}a(EI,"searchAllToMap");function dI(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(dI,"iterateDBI");function vt(e,t,r,s,n){let i=Object.create(null);i[n]=e;let o;s===n?o=e:(o=t,s!==void 0&&(i[s]=o)),r[0].push(o),r[1].push(i)}a(vt,"pushResults");function hI(e,t,r,s,n,i){t.toString().endsWith(e)&&vt(t,r,s,n,i)}a(hI,"endsWith");function TI(e,t,r,s,n,i){t.toString().includes(e)&&vt(t,r,s,n,i)}a(TI,"contains");function SI(e,t,r,s,n,i){t>e&&vt(t,r,s,n,i)}a(SI,"greaterThanCompare");function fI(e,t,r,s,n,i){t>=e&&vt(t,r,s,n,i)}a(fI,"greaterThanEqualCompare");function mI(e,t,r,s,n,i){t<e&&vt(t,r,s,n,i)}a(mI,"lessThanCompare");function AI(e,t,r,s,n,i){t<=e&&vt(t,r,s,n,i)}a(AI,"lessThanEqualCompare");hE.exports={parseRow:co,searchAll:lI,searchAllToMap:EI,iterateDBI:dI,endsWith:hI,contains:TI,greaterThanCompare:SI,greaterThanEqualCompare:fI,lessThanCompare:mI,lessThanEqualCompare:AI,pushResults:vt}});var qt=T((mB,gE)=>{"use strict";var At=B(),TB=N(),Ne=Ut(),kn=ee(),Y=be().LMDB_ERRORS_ENUM,SB=p(),RI=f(),Yn=uo(),{parseRow:gI}=Yn,fB=require("lmdb"),{OVERFLOW_MARKER:TE,MAX_SEARCH_KEY_LENGTH:NI}=kn;function SE(e,t,r,s=!1,n=void 0,i=void 0){return Gt(e,t,r,(o,_)=>_.getRange({transaction:o,start:s?void 0:!1,end:s?!1:void 0,limit:n,offset:i,reverse:s}))}a(SE,"iterateFullIndex");function ns(e,t,r,s,n,i=!1,o=void 0,_=void 0,c=!1,u=!1){return Gt(e,t,r,(l,E,h,d)=>{let x={transaction:l,start:i===!0?n:s,end:i===!0?s:n,reverse:i,limit:o,offset:_,inclusiveEnd:i===!0?!c:!u,exclusiveStart:i===!0?u:c};return d===r?(x.values=!1,E.getRange(x).map(F=>({value:F}))):E.getRange(x)})}a(ns,"iterateRangeBetween");function Gt(e,t,r,s){let n=e.database||e,i=At.openDBI(n,r);i[kn.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&At.openDBI(n,t);let o;e.database?o=e:(o=e.useReadTransaction(),o.database=e);let _=s(o,i,n,t);return _.transaction=o,e.database||(_.onDone=()=>{o.done()}),_}a(Gt,"setupTransaction");function fE(e,t,r,s){let n;return function(i,o){if(typeof i=="string"&&i.endsWith(TE)){if(!n)if(r)n=At.openDBI(e,r);else{let c=At.listDBIs(e);for(let u=0,l=c.length;u<l&&(n=At.openDBI(e,c[u]),!n[kn.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=n.get(o,{transaction:t,lazy:!0})[s]}return i}}a(fE,"getOverflowCheck");function pI(e,t,r,s=!1,n=void 0,i=void 0){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);return Gt(e,t,t,(o,_,c)=>($n(r),r=is(c,r),_.getRange({transaction:o,start:s?void 0:!1,end:s?!1:void 0,limit:n,offset:i,reverse:s}).map(u=>gI(u.value,r))))}a(pI,"searchAll");function OI(e,t,r,s=!1,n=void 0,i=void 0){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);$n(r),r=is(e.database||e,r);let o=new Map;for(let{key:_,value:c}of SE(e,t,t,s,n,i))o.set(_,Yn.parseRow(c,r));return o}a(OI,"searchAllToMap");function II(e,t,r=!1,s=void 0,n=void 0){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=SE(e,void 0,t,r,s,n),_=o.transaction,c=fE(_.database,_,void 0,t);for(let{key:u,value:l}of o){let E=c(u,l);i[E]===void 0&&(i[E]=[]),i[E].push(l)}return i}a(II,"iterateDBI");function bI(e,t){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);return At.statDBI(e,t).entryCount}a(bI,"countAll");function CI(e,t,r,s,n=!1,i=void 0,o=void 0){return Rt(e,r,s),Gt(e,t,r,(_,c,u,l)=>(s=Ne.convertKeyValueToWrite(s),l===r?c.get(s,{transaction:_,lazy:!0})===void 0?[]:[{key:s,value:s}]:c.getValues(s,{transaction:_,reverse:n,limit:i,offset:o}).map(E=>({key:s,value:E}))))}a(CI,"equals");function yI(e,t,r){return Rt(e,t,r),At.openDBI(e,t).getValuesCount(r)}a(yI,"count");function MI(e,t,r,s,n=!1,i=void 0,o=void 0){return Rt(e,r,s),Gt(e,null,r,(_,c)=>{s=Ne.convertKeyValueToWrite(s);let u=!0;typeof s=="number"&&(u=!1);let l;if(n===!0){let E;for(let h of c.getKeys({transaction:_,start:s}))if(!h.startsWith(s)){E=h;break}return E!==void 0&&(Number.isInteger(o)?o++:i++),l=c.getRange({transaction:_,start:E,end:void 0,reverse:n,limit:i,offset:o}).map(h=>{let{key:d}=h;if(d!==E){if(d.toString().startsWith(s))return h;if(u===!0)return l.DONE}}),l.filter(h=>h)}else return l=c.getRange({transaction:_,start:s,reverse:n,limit:i,offset:o}).map(E=>{if(E.key.toString().startsWith(s))return E;if(u===!0)return l.DONE}),u?l:l.filter(E=>E)})}a(MI,"startsWith");function wI(e,t,r,s,n=!1,i=void 0,o=void 0){return mE(e,t,r,s,n,i,o,!0)}a(wI,"endsWith");function mE(e,t,r,s,n=!1,i=void 0,o=void 0,_=!1){return Rt(e,r,s),Gt(e,null,r,(c,u,l,E)=>{let h=fE(l,c,E,r);return o=Number.isInteger(o)?o:0,u.getKeys({transaction:c,end:n?!1:void 0,reverse:n}).flatMap(d=>{let A=d.toString();return A.endsWith(TE)?u.getValues(d,{transaction:c}).map(R=>{let M=h(d,R);if(_?M.endsWith(s):M.includes(s))return{key:M,value:R}}).filter(R=>R):(_?A.endsWith(s):A.includes(s))?u[kn.DBI_DEFINITION_NAME].is_hash_attribute?{key:d,value:d}:u.getValues(d,{transaction:c}).map(R=>({key:d,value:R})):[]}).slice(o,i===void 0?void 0:i+(o||0))})}a(mE,"contains");function LI(e,t,r,s,n=!1,i=void 0,o=void 0){Rt(e,r,s);let _=typeof s,c;return _==="string"?c="\uFFFF":_==="number"?c=1/0:_==="boolean"&&(c=!0),ns(e,t,r,s,c,n,i,o,!0,!1)}a(LI,"greaterThan");function UI(e,t,r,s,n=!1,i=void 0,o=void 0){Rt(e,r,s);let _=typeof s,c;return _==="string"?c="\uFFFF":_==="number"?c=1/0:_==="boolean"&&(c=!0),ns(e,t,r,s,c,n,i,o,!1,!1)}a(UI,"greaterThanEqual");function DI(e,t,r,s,n=!1,i=void 0,o=void 0){Rt(e,r,s);let _=typeof s,c;return _==="string"?c="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),ns(e,t,r,c,s,n,i,o,!1,!0)}a(DI,"lessThan");function PI(e,t,r,s,n=!1,i=void 0,o=void 0){Rt(e,r,s);let _=typeof s,c;return _==="string"?c="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),ns(e,t,r,c,s,n,i,o,!1,!1)}a(PI,"lessThanEqual");function HI(e,t,r,s,n,i=!1,o=void 0,_=void 0){if(Ne.validateEnv(e),r===void 0)throw new Error(Y.ATTRIBUTE_REQUIRED);if(s===void 0)throw new Error(Y.START_VALUE_REQUIRED);if(n===void 0)throw new Error(Y.END_VALUE_REQUIRED);if(s=Ne.convertKeyValueToWrite(s),n=Ne.convertKeyValueToWrite(n),s>n)throw new Error(Y.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return ns(e,t,r,s,n,i,o,_)}a(HI,"between");function BI(e,t,r,s){Ne.validateEnv(e);let n=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);if($n(r),r=is(n,r),s===void 0)throw new Error(Y.ID_REQUIRED);let o=null,_=n.dbis[t].get(s,{transaction:i,lazy:r.length<3});return _&&(o=Yn.parseRow(_,r)),o}a(BI,"searchByHash");function vI(e,t,r){Ne.validateEnv(e);let s=e.database||e,n=e.database?e:null;if(t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Y.ID_REQUIRED);let i=!0;return s.dbis[t].get(r,{transaction:n,lazy:!0})===void 0&&(i=!1),i}a(vI,"checkHashExists");function GI(e,t,r,s,n=[]){return RE(e,t,r,s,n),AE(e,t,r,s,n).map(i=>i[1])}a(GI,"batchSearchByHash");function qI(e,t,r,s,n=[]){RE(e,t,r,s,n);let i=new Map;for(let[o,_]of AE(e,t,r,s,n))i.set(o,_);return i}a(qI,"batchSearchByHashToMap");function AE(e,t,r,s,n=[]){return Gt(e,t,t,(i,o,_)=>{r=is(_,r);let c=r.length<3;return s.map(u=>{let l=_.dbis[t].get(u,{transaction:i,lazy:c});if(l)return[u,Yn.parseRow(l,r)];n.push(u)}).filter(u=>u)})}a(AE,"batchHashSearch");function RE(e,t,r,s,n){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);if($n(r),s==null)throw new Error(Y.IDS_REQUIRED);if(!s[Symbol.iterator])throw new Error(Y.IDS_MUST_BE_ITERABLE)}a(RE,"initializeBatchSearchByHash");function $n(e){if(!Array.isArray(e))throw e===void 0?new Error(Y.FETCH_ATTRIBUTES_REQUIRED):new Error(Y.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a($n,"validateFetchAttributes");function Rt(e,t,r){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Y.SEARCH_VALUE_REQUIRED);if(r?.length>NI)throw new Error(Y.SEARCH_VALUE_TOO_LARGE)}a(Rt,"validateComparisonFunctions");function is(e,t){return t.length===1&&RI.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=At.listDBIs(e)),t}a(is,"setGetWholeRowAttributes");gE.exports={searchAll:pI,searchAllToMap:OI,count:yI,countAll:bI,equals:CI,startsWith:MI,endsWith:wI,contains:mE,searchByHash:BI,setGetWholeRowAttributes:is,batchSearchByHash:GI,batchSearchByHashToMap:qI,checkHashExists:vI,iterateDBI:II,greaterThan:LI,greaterThanEqual:UI,lessThan:DI,lessThanEqual:PI,between:HI}});var lr=T((RB,ME)=>{"use strict";var pE=Vn(),gt=N(),OE=Nn(),FI=require("lodash"),xI=rn(),IE=p(),{promisify:bE}=require("util"),G=f(),{handleHDBError:Kn,hdb_errors:VI}=V(),{HDB_ERROR_MSGS:Wn,HTTP_STATUS_CODES:CE}=VI,kI=$();kI.initSync();var NE=B(),YI=qt(),{getSchemaPath:$I}=q(),as=bE(pE.searchByValue),KI=bE(pE.searchByHash),ur="name",yE="hash_attribute",lo="schema",WI="schema_table",QI="attribute";ME.exports={describeAll:JI,describeTable:Qn,describeSchema:ZI};async function JI(e){try{let t=IE.isEmptyOrZeroLength(e),r,s;t||(r=e.hdb_user.role.permission,s=r.super_user||r.cluster_user);let n={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,search_attribute:ur,search_value:G.WILDCARD_SEARCH_VALUE,get_attributes:[ur]},i=await as(n),o={},_={};for(let h of i)o[h.name]=!0,!t&&!s&&(_[h.name]=r[h.name].describe);let c={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,search_attribute:G.ID_ATTRIBUTE_STRING,search_value:G.WILDCARD_SEARCH_VALUE,get_attributes:[yE,G.ID_ATTRIBUTE_STRING,ur,lo]},u=await as(c),l=[];for(let h of u)try{let d;if(t||s)d=await Qn({schema:h.schema,table:h.name});else if(r&&r[h.schema].describe&&r[h.schema].tables[h.name].describe){let A=r[h.schema].tables[h.name].attribute_permissions;d=await Qn({schema:h.schema,table:h.name},A)}d&&l.push(d)}catch(d){gt.error(d)}let E={};for(let h in l)t||s?(E[l[h].schema]==null&&(E[l[h].schema]={}),E[l[h].schema][l[h].name]=l[h],o[l[h].schema]&&delete o[l[h].schema]):_[l[h].schema]&&(E[l[h].schema]==null&&(E[l[h].schema]={}),E[l[h].schema][l[h].name]=l[h],o[l[h].schema]&&delete o[l[h].schema]);for(let h in o)t||s?E[h]={}:_[h]&&(E[h]={});return E}catch(t){return gt.error("Got an error in describeAll"),gt.error(t),Kn(new Error,Wn.DESCRIBE_ALL_ERR)}}a(JI,"describeAll");async function Qn(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={},o=OE.describe_table(e);if(o)throw o;if(r===G.SYSTEM_SCHEMA_NAME)return global.hdb_schema[G.SYSTEM_SCHEMA_NAME][s];let _={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,hash_attribute:G.SYSTEM_TABLE_HASH_ATTRIBUTES.TABLE_TABLE_HASH_ATTRIBUTE,search_attribute:ur,search_value:s,hash_values:[],get_attributes:[G.WILDCARD_SEARCH_VALUE]},c=Array.from(await as(_));if(!c||c.length===0)throw Kn(new Error,Wn.TABLE_NOT_FOUND(e.schema,e.table),CE.NOT_FOUND);for await(let u of c)try{if(u.schema!==r)continue;if(i=u,!i.hash_attribute)throw Kn(new Error,Wn.INVALID_TABLE_ERR(i));let l={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,hash_attribute:G.SYSTEM_TABLE_HASH_ATTRIBUTES.ATTRIBUTE_TABLE_HASH_ATTRIBUTE,search_attribute:WI,search_value:r+"."+s,get_attributes:[QI]},E=Array.from(await as(l));E=FI.uniqBy(E,h=>h.attribute),n&&n.length>0&&(E=XI(n)),i.attributes=E,i.clustering_stream_name=xI.createNatsTableStreamName(u.schema,u.name);try{let h=$I(i.schema,i.name),d=await NE.openEnvironment(h,i.name),A=NE.statDBI(d,i.hash_attribute);i.record_count=A.entryCount;for(let{key:R}of YI.lessThan(d,i.hash_attribute,G.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,1/0,!0,1,0))i.last_updated_record=R}catch(h){gt.warn(`unable to stat table dbi due to ${h}`)}}catch(l){gt.error(`There was an error getting attributes for table '${u.name}'`),gt.error(l)}return i}a(Qn,"descTable");function XI(e){return e.reduce((t,r)=>(r.describe&&t.push({attribute:r.attribute_name}),t),[])}a(XI,"getAttrsByPerms");async function ZI(e){let t=OE.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:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,hash_attribute:G.SYSTEM_TABLE_HASH_ATTRIBUTES.TABLE_TABLE_HASH_ATTRIBUTE,search_attribute:lo,search_value:s,hash_values:[],get_attributes:[yE,G.ID_ATTRIBUTE_STRING,ur,lo]},i=Array.from(await as(n));if(i&&i.length<1){let o={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,hash_attribute:G.SYSTEM_TABLE_HASH_ATTRIBUTES.SCHEMA_TABLE_HASH_ATTRIBUTE,hash_values:[s],get_attributes:[ur]},_=Array.from(await KI(o));if(_&&_.length<1)throw Kn(new Error,Wn.SCHEMA_NOT_FOUND(e.schema),CE.NOT_FOUND);return{}}else{let o={};return await Promise.all(i.map(async _=>{try{let c;if(r&&r.tables[_.name]&&(c=r.tables[_.name]),IE.isEmpty(c)||c.describe){let u=await Qn({schema:e.schema,table:_.name},c?c.attribute_permissions:null);u&&(o[u.name]=u)}}catch(c){gt.error(`Error describing schema table '${e.schema}.${_}'`),gt.error(c)}})),o}}a(ZI,"describeSchema")});var os=T((NB,PE)=>{var Er=Pt(),{callbackify:UE,promisify:zI}=require("util");PE.exports={setSchemaDataToGlobal:wE,getTableSchema:tb,getSystemSchema:sb,setSchemaDataToGlobalAsync:zI(wE)};var DE=lr(),jI=UE(DE.describeAll),eb=UE(DE.describeTable);function wE(e){jI(null,(t,r)=>{if(t){e(t);return}r.system||(r.system=Er),global.hdb_schema=r,e(null,null)})}a(wE,"setSchemaDataToGlobal");function LE(e,t){return e==="system"?Er[t]:global.hdb_schema[e][t]}a(LE,"returnSchema");function tb(e,t,r){!global.hdb_schema||!global.hdb_schema[e]||!global.hdb_schema[e][t]?rb(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,LE(e,t))}):r(null,LE(e,t))}a(tb,"getTableSchema");function rb(e,t,r){let s={table:t,schema:e};if(e==="system"){global.hdb_schema?global.hdb_schema.system=Er:global.hdb_schema={system:Er},r();return}eb(s,(n,i)=>{if(n){r(n);return}if(!i.schema&&!i.name){r();return}global.hdb_schema||(global.hdb_schema={system:Er}),global.hdb_schema[e]||(global.hdb_schema[e]={}),global.hdb_schema[e][t]=i,r()})}a(rb,"setTableDataToGlobal");function sb(){return Er}a(sb,"getSystemSchema")});var _s=T((OB,vE)=>{"use strict";var Xn=Fa(),Le=p(),nb=require("util"),Zn=mt(),ib=os(),Eo=N(),{handleHDBError:Nt,hdb_errors:ab}=V(),{HTTP_STATUS_CODES:Ft}=ab,ob=nb.promisify(ib.getTableSchema),_b="updated",HE="inserted",BE="upserted";vE.exports={insert:ub,update:lb,upsert:Eb,validation:cb,flush:db};async function cb(e){if(Le.isEmpty(e))throw new Error("invalid update parameters defined.");if(Le.isEmptyOrZeroLength(e.schema))throw new Error("invalid schema specified.");if(Le.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await ob(e.schema,e.table),r=Xn(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={},o=!1;return e.operation==="update"&&(o=!0),e.records.forEach(_=>{if(o&&Le.isEmptyOrZeroLength(_[s]))throw Eo.error("a valid hash attribute must be provided with update record:",_),new Error("a valid hash attribute must be provided with update record");if(!Le.isEmptyOrZeroLength(_[s])&&(_[s]==="null"||_[s]==="undefined"))throw Eo.error(`a valid hash value must be provided with ${e.operation} record:`,_),new Error(`"${_[s]}" is not a valid hash attribute value`);!Le.isEmpty(_[s])&&_[s]!==""&&n.has(Le.autoCast(_[s]))&&(_.skip=!0),n.add(Le.autoCast(_[s]));for(let c in _)i[c]=1}),i[s]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(i)}}a(cb,"validation");async function ub(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=Xn(e);if(t)throw Nt(new Error,t.message,Ft.BAD_REQUEST);let r=Le.checkSchemaTableExist(e.schema,e.table);if(r)throw Nt(new Error,r,Ft.BAD_REQUEST);let s=await Zn.createRecords(e);return Jn(HE,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time)}a(ub,"insertData");async function lb(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=Xn(e);if(t)throw Nt(new Error,t.message,Ft.BAD_REQUEST);let r=Le.checkSchemaTableExist(e.schema,e.table);if(r)throw Nt(new Error,r,Ft.BAD_REQUEST);let s=await Zn.updateRecords(e);return Le.isEmpty(s.existing_rows)?Jn(_b,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time):Jn(s.update_action,[],e,s.hashes,void 0,s.txn_time)}a(lb,"updateData");async function Eb(e){if(e.operation!=="upsert")throw Nt(new Error,"invalid operation, must be upsert",Ft.INTERNAL_SERVER_ERROR);let t=Xn(e);if(t)throw Nt(new Error,t.message,Ft.BAD_REQUEST);let r=Le.checkSchemaTableExist(e.schema,e.table);if(r)throw Nt(new Error,r,Ft.BAD_REQUEST);try{let s=await Zn.upsertRecords(e);return Jn(BE,s.written_hashes,e,[],s.new_attributes,s.txn_time)}catch(s){let n=`There was an error during an upsert op: ${s}`;throw Nt(s,null,null,Eo.ERR,n)}}a(Eb,"upsertData");function Jn(e,t,r,s,n,i){let o={message:`${e} ${t.length} of ${t.length+s.length} records`,new_attributes:n,txn_time:i};return e===HE?(o.inserted_hashes=t,o.skipped_hashes=s,o):e===BE?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=s,o)}a(Jn,"returnObject");function db(e){return Zn.flush(e.schema,e.table)}a(db,"flush")});var xE=T((bB,FE)=>{var hb=Pe(),ho=require("joi"),{hdb_schema_table:GE}=ar(),qE={schema:GE,table:GE},Tb={date:ho.date().iso().required()},Sb={timestamp:ho.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};FE.exports=function(e,t){let r=t==="timestamp"?{...qE,...Sb}:{...qE,...Tb},s=ho.object(r);return hb.validateBySchema(e,s)}});var $E=T((CB,YE)=>{var fb=Pe(),VE=require("joi"),{hdb_schema_table:kE}=ar(),mb=VE.object({schema:kE,table:kE,hash_values:VE.array().required()});YE.exports=function(e){return fb.validateBySchema(e,mb)}});var WE=T((yB,KE)=>{"use strict";var zn=class{constructor(t,r,s,n,i){this.operation=t,this.schema=r,this.table=s,this.hash_attribute=n,this.records=i}};a(zn,"InsertObject");var jn=class{constructor(t,r,s,n,i,o){this.schema=t,this.table=r,this.search_attribute=s,this.hash_attribute=n,this.get_attributes=i,this.search_value=o}};a(jn,"NoSQLSeachObject");var ei=class{constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};a(ei,"DeleteResponseObject");KE.exports={InsertObject:zn,NoSQLSeachObject:jn,DeleteResponseObject:ei}});var fo=T((wB,zE)=>{"use strict";var JE=xE(),Ab=$E(),ti=p(),QE=require("moment"),XE=N(),{promisify:Rb,callbackify:gb}=require("util"),xt=f(),Nb=os(),To=Rb(Nb.getTableSchema),So=mt(),{DeleteResponseObject:pb}=WE(),{handleHDBError:pt,hdb_errors:Ob}=V(),{HDB_ERROR_MSGS:ri,HTTP_STATUS_CODES:Ot}=Ob,Ib="records successfully deleted",bb=gb(ZE);zE.exports={delete:bb,deleteRecord:ZE,deleteFilesBefore:Cb,deleteAuditLogsBefore:yb};async function Cb(e){let t=JE(e,"date");if(t)throw pt(t,t.message,Ot.BAD_REQUEST,void 0,void 0,!0);if(!QE(e.date,QE.ISO_8601).isValid())throw pt(new Error,ri.INVALID_DATE,Ot.BAD_REQUEST,xt.LOG_LEVELS.ERROR,ri.INVALID_DATE,!0);let s=ti.checkSchemaTableExist(e.schema,e.table);if(s)throw pt(new Error,s,Ot.NOT_FOUND,xt.LOG_LEVELS.ERROR,s,!0);let n=await So.deleteRecordsBefore(e);if(await To(e.schema,e.table),XE.info(`Finished deleting files before ${e.date}`),n&&n.message)return n.message}a(Cb,"deleteFilesBefore");async function yb(e){let t=JE(e,"timestamp");if(t)throw pt(t,t.message,Ot.BAD_REQUEST,void 0,void 0,!0);if(isNaN(e.timestamp))throw pt(new Error,ri.INVALID_VALUE("Timestamp"),Ot.BAD_REQUEST,xt.LOG_LEVELS.ERROR,ri.INVALID_VALUE("Timestamp"),!0);let r=ti.checkSchemaTableExist(e.schema,e.table);if(r)throw pt(new Error,r,Ot.NOT_FOUND,xt.LOG_LEVELS.ERROR,r,!0);let s=await So.deleteAuditLogsBefore(e);return await To(e.schema,e.table),XE.info(`Finished deleting audit logs before ${e.timestamp}`),s}a(yb,"deleteAuditLogsBefore");async function ZE(e){let t=Ab(e);if(t)throw pt(t,t.message,Ot.BAD_REQUEST,void 0,void 0,!0);let r=ti.checkSchemaTableExist(e.schema,e.table);if(r)throw pt(new Error,r,Ot.NOT_FOUND,xt.LOG_LEVELS.ERROR,r,!0);try{await To(e.schema,e.table);let s=await So.deleteRecords(e);return ti.isEmptyOrZeroLength(s.message)&&(s.message=`${s.deleted_hashes.length} of ${e.hash_values.length} ${Ib}`),s}catch(s){if(s.message===xt.SEARCH_NOT_FOUND_MESSAGE){let n=new pb;return n.message=xt.SEARCH_NOT_FOUND_MESSAGE,n.skipped_hashes=e.hash_values.length,n.deleted_hashes=0,n}throw s}}a(ZE,"deleteRecord")});var ed=T((UB,jE)=>{var mo=Pe(),ne={username:{presence:!0,format:"[\\w\\-\\_]+",exclusion:{within:["system"],message:"You cannot create tables within the system schema"}},password:{presence:!0},role:{presence:!0,format:"[\\w\\-\\_]+"},active:{presence:!0,inclusion:{within:[!0,!1],message:"must be a boolean"}}};function Mb(e){return ne.password.presence=!0,ne.username.presence=!0,ne.role.presence=!0,ne.active.presence=!0,mo.validateObject(e,ne)}a(Mb,"addUserValidation");function wb(e){return ne.password.presence=!1,ne.username.presence=!0,ne.role.presence=!1,ne.active.presence=!1,mo.validateObject(e,ne)}a(wb,"alterUserValidation");function Lb(e){return ne.password.presence=!1,ne.username.presence=!0,ne.role.presence=!1,ne.active.presence=!1,mo.validateObject(e,ne)}a(Lb,"dropUserValidation");jE.exports={addUserValidation:Mb,alterUserValidation:wb,dropUserValidation:Lb}});var us=T((HB,Td)=>{"use strict";var id="username is required",ad="nothing to update, must supply active, role or password to update",od="password cannot be an empty string",_d="If role is specified, it cannot be empty.",cd="active must be true or false";Td.exports={addUser:qb,alterUser:Fb,dropUser:Vb,userInfo:kb,listUsers:ni,listUsersExternal:Yb,setUsersToGlobal:cs,findAndValidateUser:Wb,getClusterUser:Qb,USERNAME_REQUIRED:id,ALTERUSER_NOTHING_TO_UPDATE:ad,EMPTY_PASSWORD:od,EMPTY_ROLE:_d,ACTIVE_BOOLEAN:cd};var ud=_s(),Ub=fo(),Ro=Dn(),ld=ed(),Ed=Vn(),go=ls(),pe=p(),dd=require("validate.js"),b=N(),{promisify:No}=require("util"),po=rn(),td=f(),rd=Lt(),Db=js(),PB=$(),Pb=Wa(),Hb=Pt(),{handleHDBError:We,hdb_errors:Bb}=V(),{HTTP_STATUS_CODES:Qe,AUTHENTICATION_ERROR_MSGS:Ao,HDB_ERROR_MSGS:dr}=Bb,{UserEventMsg:Oo}=Vt(),sd=require("lodash"),hd={username:!0,active:!0,role:!0,password:!0},nd=new Map,si=No(Ed.searchByValue),vb=No(Ed.searchByHash),Gb=No(Ub.delete);async function qb(e){let t=dd.cleanAttributes(e,hd),r=ld.addUserValidation(t);if(r)throw We(new Error,r.message,Qe.BAD_REQUEST,void 0,void 0,!0);let s={schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["id","permission","role"]},n;try{n=await si(s),n=n&&Array.from(n)}catch(c){throw b.error("There was an error searching for a role in add user"),b.error(c),c}if(!n||n.length<1)throw We(new Error,dr.ROLE_NAME_NOT_FOUND(t.role),Qe.NOT_FOUND,void 0,void 0,!0);if(n.length>1)throw We(new Error,dr.DUP_ROLES_FOUND(t.role),Qe.CONFLICT,void 0,void 0,!0);n[0].permission.cluster_user===!0&&(t.hash=po.encrypt(t.password)),t.password=Ro.hash(t.password),t.role=n[0].id;let i={operation:"insert",schema:"system",table:"hdb_user",records:[t]},o;try{o=await ud.insert(i)}catch(c){throw b.error("There was an error searching for a user."),b.error(c),c}b.debug(o);try{await cs()}catch(c){throw b.error("Got an error setting users to global"),b.error(c),c}if(o.skipped_hashes.length===1)throw We(new Error,dr.USER_ALREADY_EXISTS(t.username),Qe.CONFLICT,void 0,void 0,!0);let _=Object.assign({},t);return _.role=n[0],go.signalUserChange(new Oo(process.pid)),`${_.username} successfully added`}a(qb,"addUser");async function Fb(e){let t=dd.cleanAttributes(e,hd);if(pe.isEmptyOrZeroLength(t.username))throw new Error(id);if(pe.isEmptyOrZeroLength(t.password)&&pe.isEmptyOrZeroLength(t.role)&&pe.isEmptyOrZeroLength(t.active))throw new Error(ad);if(!pe.isEmpty(t.password)&&pe.isEmptyOrZeroLength(t.password.trim()))throw new Error(od);if(!pe.isEmpty(t.active)&&!pe.isBoolean(t.active))throw new Error(cd);let r=xb(t.username);if(!pe.isEmpty(t.password)&&!pe.isEmptyOrZeroLength(t.password.trim())&&(r&&(t.hash=po.encrypt(t.password)),t.password=Ro.hash(t.password)),t.role==="")throw new Error(_d);if(t.role){let i={schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]},o;try{o=Array.from(await si(i)||[])}catch(_){throw b.error("Got an error searching for a role."),b.error(_),_}if(!o||o.length===0){let _=dr.ALTER_USER_ROLE_NOT_FOUND(t.role);throw b.error(_),We(new Error,_,Qe.NOT_FOUND,void 0,void 0,!0)}if(o.length>1){let _=dr.ALTER_USER_DUP_ROLES(t.role);throw b.error(_),We(new Error,_,Qe.CONFLICT,void 0,void 0,!0)}t.role=o[0].id}let s={operation:"update",schema:"system",table:"hdb_user",records:[t]},n;try{n=await ud.update(s)}catch(i){throw b.error("Error during update."),b.error(i),i}try{await cs()}catch(i){throw b.error("Got an error setting users to global"),b.error(i),i}return go.signalUserChange(new Oo(process.pid)),n}a(Fb,"alterUser");function xb(e){let t=!1,r=global.hdb_users.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}a(xb,"isClusterUser");async function Vb(e){try{let t=ld.dropUserValidation(e);if(t)throw new Error(t);let r={table:"hdb_user",schema:"system",hash_values:[e.username]};if(pe.isEmpty(global.hdb_users.get(e.username)))throw We(new Error,dr.USER_NOT_EXIST(e.username),Qe.NOT_FOUND,void 0,void 0,!0);let s;try{s=await Gb(r)}catch(n){throw b.error("Got an error deleting a user."),b.error(n),n}b.debug(s);try{await cs()}catch(n){throw b.error("Got an error setting users to global."),b.error(n),n}return go.signalUserChange(new Oo(process.pid)),`${e.username} successfully deleted`}catch(t){throw t}}a(Vb,"dropUser");async function kb(e){let t={};try{if(!e||!e.hdb_user)return"There was no user info in the body";t=e.hdb_user;let r={schema:"system",table:"hdb_role",hash_values:[t.role.id],get_attributes:["*"]},s;try{s=await vb(r)}catch(n){throw b.error("Got an error searching for a role."),b.error(n),n}t.role=s[0],delete t.password,delete t.refresh_token,delete t.hash}catch(r){throw b.error(r),r}return t}a(kb,"userInfo");async function Yb(){let e;try{e=await ni()}catch(t){throw b.error("Got an error listing users."),b.error(t),t}try{e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token})}catch{throw new Error("there was an error massaging the user data")}return[...e.values()]}a(Yb,"listUsersExternal");async function ni(){try{let e={schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]},t;try{t=await si(e)}catch(o){throw b.error("Got an error searching for roles."),b.error(o),o}let r={};for(let o of t)r[o.id]=sd.cloneDeep(o);if(Object.keys(r).length===0)return null;let s={schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]},n;try{n=await si(s)}catch(o){throw b.error("Got an error searching for users."),b.error(o),o}let i=new Map;for(let o of n)o=sd.cloneDeep(o),o.role=r[o.role],$b(o.role),i.set(o.username,o);return(await Pb.getLicense()).enterprise?i:Kb(Array.from(i.values()))}catch(e){throw b.error("got an error listing users"),b.error(e),pe.errorizeMessage(e)}return null}a(ni,"listUsers");function $b(e){try{if(!e){b.error("invalid user role found.");return}e.permission.system||(e.permission.system={}),e.permission.system.tables||(e.permission.system.tables={});for(let t of Object.keys(Hb)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}catch(t){b.error("Got an error trying to set system permissions."),b.error(t)}}a($b,"appendSystemTablesToRole");function Kb(e){try{if(b.info("No enterprise license found. System is limited to 1 clustering role and 1 user role"),!e)return new Map;let t=Object.create(null),r=new Map;e.forEach((n,i)=>{n.role&&(n.role.permission.cluster_user===void 0||n.role.permission.cluster_user===!1)?n.role.permission.super_user===!0&&(t[n.role.id]||(t[n.role.id]=new Map),t[n.role.id].set(n.username,n)):r.set(n.username,n)});let s={role:void 0,count:0};return Object.keys(t).forEach(n=>{let i=t[n];i.size>=s.count&&(s.role=n,s.count=i.size)}),s.role===void 0?(b.warn("No roles found with active users."),new Map):(r=new Map([...r,...t[s.role]]),r)}catch(t){return b.error("error filtering users."),b.error(t),new Map}}a(Kb,"nonEnterpriseFilter");async function cs(){try{let e=await ni();global.hdb_users=e}catch(e){throw b.error(e),e}}a(cs,"setUsersToGlobal");async function Wb(e,t,r=!0){global.hdb_users||await cs();let s=global.hdb_users.get(e);if(!s)throw We(new Error,Ao.GENERIC_AUTH_FAIL,Qe.UNAUTHORIZED,void 0,void 0,!0);if(s&&!s.active)throw We(new Error,Ao.USER_INACTIVE,Qe.UNAUTHORIZED,void 0,void 0,!0);let n={active:s.active,username:s.username};if(s.refresh_token&&(n.refresh_token=s.refresh_token),s.role&&(n.role=s.role),r===!0){if(nd.get(t)===s.password)return n;if(Ro.validate(s.password,t))nd.set(t,s.password);else throw We(new Error,Ao.GENERIC_AUTH_FAIL,Qe.UNAUTHORIZED,void 0,void 0,!0)}return n}a(Wb,"findAndValidateUser");async function Qb(){let e=await ni(),t=Db.getConfigFromFile(td.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!pe.isEmpty(r)&&r?.role?.role===td.ROLE_TYPES_ENUM.CLUSTER_USER)return r.decrypt_hash=po.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+rd.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+rd.SERVER_SUFFIX.ADMIN,r}a(Qb,"getClusterUser")});var ii=T((vB,Ad)=>{"use strict";var kt=N(),Oe=f(),Jb=vl(),Sd=os(),Xb=lr(),Zb=us(),{validateEvent:md}=Vt(),Es=mt(),zb=require("process"),jb={[Oe.ITC_EVENT_TYPES.SCHEMA]:eC,[Oe.ITC_EVENT_TYPES.USER]:rC};async function eC(e){let t=md(e);if(t){kt.error(t);return}kt.trace("ITC schemaHandler received schema event:",e),await Jb(e.message),await tC(e.message)}a(eC,"schemaHandler");async function tC(e){try{if(Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME),global.hdb_schema!==void 0&&typeof global.hdb_schema=="object"&&e.operation!==void 0)switch(e.operation){case"drop_schema":delete global.hdb_schema[e.schema];break;case"drop_table":global.hdb_schema[e.schema]!==void 0&&delete global.hdb_schema[e.schema][e.table];break;case"create_schema":global.hdb_schema[e.schema]===void 0&&(global.hdb_schema[e.schema]={});break;case"create_table":case"create_attribute":global.hdb_schema[e.schema]===void 0&&(global.hdb_schema[e.schema]={}),global.hdb_schema[e.schema][e.table]=await Xb.describeTable({schema:e.schema,table:e.table});break;default:Sd.setSchemaDataToGlobal(fd);break}else Sd.setSchemaDataToGlobal(fd)}catch(t){kt.error(t)}}a(tC,"syncSchemaMetadata");function fd(e){e&&kt.error(e)}a(fd,"handleErrorCallback");async function rC(e){try{Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME);let t=md(e);if(t){kt.error(t);return}kt.trace(`ITC userHandler ${Oe.HDB_ITC_CLIENT_PREFIX}${zb.pid} received user event:`,e),await Zb.setUsersToGlobal()}catch(t){kt.error(t)}}a(rC,"userHandler");Ad.exports=jb});var Vt=T((VB,gd)=>{"use strict";var qB=N(),Io=p(),sC=f(),{ITC_ERRORS:ds}=be(),{parentPort:FB,threadId:nC,isMainThread:iC,workerData:xB}=require("worker_threads"),{onMessageFromWorkers:aC,broadcast:oC}=vn();gd.exports={sendItcEvent:_C,validateEvent:Rd,SchemaEventMsg:cC,UserEventMsg:uC};var ai;aC(e=>{ai=ai||ii(),Rd(e),ai[e.type]&&ai[e.type](e)});function _C(e){!iC&&e.message&&(e.message.originator=nC),oC(e)}a(_C,"sendItcEvent");function Rd(e){if(typeof e!="object")return ds.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||Io.isEmpty(e.type))return ds.MISSING_TYPE;if(!e.hasOwnProperty("message")||Io.isEmpty(e.message))return ds.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||Io.isEmpty(e.message.originator))return ds.MISSING_ORIGIN;if(sC.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return ds.INVALID_EVENT(e.type)}a(Rd,"validateEvent");function cC(e,t,r,s=void 0,n=void 0){this.originator=e,this.operation=t,this.schema=r,this.table=s,this.attribute=n}a(cC,"SchemaEventMsg");function uC(e){this.originator=e}a(uC,"UserEventMsg")});var ls=T(($B,Id)=>{"use strict";var Nd=f(),YB=p(),oi=N(),pd=ll(),hr,{sendItcEvent:Od}=Vt();function lC(e){try{oi.trace("signalSchemaChange called with message:",e),hr=hr||ii();let t=new pd(Nd.ITC_EVENT_TYPES.SCHEMA,e);hr.schema(t),Od(t)}catch(t){oi.error(t)}}a(lC,"signalSchemaChange");function EC(e){try{oi.trace("signalUserChange called with message:",e),hr=hr||ii();let t=new pd(Nd.ITC_EVENT_TYPES.USER,e);hr.user(t),Od(t)}catch(t){oi.error(t)}}a(EC,"signalUserChange");Id.exports={signalSchemaChange:lC,signalUserChange:EC}});var _i=T((WB,Cd)=>{"use strict";var bd=p(),dC=f(),hC=N(),TC=bn(),SC=In(),fC=ls(),{SchemaEventMsg:mC}=Vt(),AC="already exists in";Cd.exports=RC;async function RC(e,t,r){if(bd.isEmptyOrZeroLength(r))return r;let s=[];bd.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 gC(e,t.schema,t.name,i)})),n}a(RC,"lmdbCheckForNewAttributes");async function gC(e,t,r,s){let n=new SC(t,r,s,void 0,!0);e&&(n.hdb_auth_header=e);try{await NC(n)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(AC))hC.warn(`attribute ${t}.${r}.${s} already exists`);else throw i}}a(gC,"createNewAttribute");async function NC(e){let t;return t=await TC(e),fC.signalSchemaChange(new mC(process.pid,dC.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(NC,"createAttribute")});var Tr=T((JB,yd)=>{"use strict";var ci=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}};a(ci,"LMDBTransactionObject");yd.exports=ci});var wd=T((ZB,Md)=>{"use strict";var pC=Tr(),OC=f().OPERATIONS_ENUM,ui=class extends pC{constructor(t,r,s,n,i=void 0){super(OC.INSERT,r,s,n,i),this.records=t}};a(ui,"LMDBInsertTransactionObject");Md.exports=ui});var Ud=T((jB,Ld)=>{"use strict";var IC=Tr(),bC=f().OPERATIONS_ENUM,li=class extends IC{constructor(t,r,s,n,i,o=void 0){super(bC.UPDATE,s,n,i,o),this.records=t,this.original_records=r}};a(li,"LMDBUpdateTransactionObject");Ld.exports=li});var Pd=T((tv,Dd)=>{"use strict";var CC=Tr(),yC=f().OPERATIONS_ENUM,Ei=class extends CC{constructor(t,r,s,n,i,o=void 0){super(yC.UPSERT,s,n,i,o),this.records=t,this.original_records=r}};a(Ei,"LMDBUpsertTransactionObject");Dd.exports=Ei});var Bd=T((sv,Hd)=>{"use strict";var MC=Tr(),wC=f().OPERATIONS_ENUM,di=class extends MC{constructor(t,r,s,n,i=void 0){super(wC.DELETE,s,n,t,i),this.original_records=r}};a(di,"LMDBDeleteTransactionObject");Hd.exports=di});var hs=T((av,Fd)=>{"use strict";var iv=require("path"),vd=B(),LC=wd(),UC=Ud(),DC=Pd(),PC=Bd(),Sr=ee(),Gd=p(),{CONFIG_PARAMS:HC}=f(),qd=$();qd.initSync();var hi=f().OPERATIONS_ENUM,{getTransactionAuditStorePath:BC}=q();Fd.exports=vC;async function vC(e,t){if(qd.get(HC.LOGGING_AUDITLOG)===!1)return;let r=BC(e.schema,e.table),s=await vd.openEnvironment(r,e.table,!0),n=GC(e,t);if(!(n===void 0||n.hash_values.length===0)&&s!==void 0){vd.initializeDBIs(s,Sr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Sr.TRANSACTIONS_DBIS);let i=n.timestamp;return await s.dbis[Sr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{s.dbis[Sr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,n),Gd.isEmpty(n.user_name)||s.dbis[Sr.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(n.user_name,i);for(let o=0;o<n.hash_values.length;o++)s.dbis[Sr.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(n.hash_values[o],i)})}}a(vC,"writeTransaction");function GC(e,t){let r=Gd.isEmpty(e.hdb_user)?void 0:e.hdb_user.username;if(e.operation===hi.INSERT)return new LC(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.UPDATE)return new UC(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.UPSERT)return new DC(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.DELETE)return new PC(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(GC,"createTransactionObject")});var bo=T((cv,xd)=>{"use strict";var qC=Cn(),_v=Mn(),Ts=f(),FC=Ln(),xC=ir().insertRecords,VC=B(),kC=N(),YC=_i(),{getSchemaPath:$C}=q(),KC=hs();xd.exports=WC;async function WC(e){try{let{schema_table:t,attributes:r}=qC(e);FC(e,r,t.hash_attribute),e.schema!==Ts.SYSTEM_SCHEMA_NAME&&(r.includes(Ts.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Ts.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Ts.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Ts.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await YC(e.hdb_auth_header,t,r),n=$C(e.schema,e.table),i=await VC.openEnvironment(n,e.table),o=await xC(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await KC(e,o)}catch(_){kC.error(`unable to write transaction due to ${_.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:s,txn_time:o.txn_time}}catch(t){throw t}}a(WC,"lmdbCreateRecords")});var Yd=T((lv,kd)=>{"use strict";var Vd=f(),QC=bo(),JC=Mn(),XC=require("fs-extra"),{getSchemaPath:ZC}=q();kd.exports=zC;async function zC(e){let t=[{name:e.schema,createddate:Date.now()}],r=new JC(Vd.SYSTEM_SCHEMA_NAME,Vd.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await QC(r),await XC.mkdirp(ZC(e.schema))}a(zC,"lmdbCreateSchema")});var Kd=T((dv,$d)=>{"use strict";var Ti=class{constructor(t=[],r=[],s=void 0,n=[]){this.deleted=t,this.skipped=r,this.txn_time=s,this.original_records=n}};a(Ti,"DeleteRecordsResponseObject");$d.exports=Ti});var Mo=T((mv,Jd)=>{"use strict";var Wd=B(),Co=Ut(),yo=be().LMDB_ERRORS_ENUM,jC=ee(),Qd=N(),Tv=p(),ey=require("lmdb"),ty=Kd(),ry=f(),{OVERFLOW_MARKER:Sv,MAX_SEARCH_KEY_LENGTH:fv}=jC,sy=ry.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function ny(e,t,r,s){if(Co.validateEnv(e),t===void 0)throw new Error(yo.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(yo.IDS_REQUIRED):new Error(yo.IDS_MUST_BE_ITERABLE);try{let n=Wd.listDBIs(e);Wd.initializeDBIs(e,t,n);let i=new ty,o,_=[],c=[];for(let h=0,d=r.length;h<d;h++)try{o=r[h];let A=e.dbis[t].get(o);if(!A||s&&A[sy]>s){i.skipped.push(o);continue}let R=e.dbis[t].ifVersion(o,ey.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let M=0;M<n.length;M++){let W=n[M];if(!A.hasOwnProperty(W)||W===t)continue;let x=e.dbis[W],F=A[W];if(F!=null)try{let Xe=Co.getIndexedValues(F);if(Xe)for(let Bs=0,y_=Xe.length;Bs<y_;Bs++)x.remove(Xe[Bs],o)}catch{Qd.warn(`cannot delete from attribute: ${W}, ${F}:${o}`)}}});_.push(R),c.push(o),i.original_records.push(A)}catch(A){Qd.warn(A),i.skipped.push(o)}let u=[],l=await Promise.all(_);for(let h=0,d=l.length;h<d;h++)l[h]===!0?i.deleted.push(c[h]):(i.skipped.push(c[h]),u.push(h));let E=0;for(let h=0;h<u.length;h++){let d=u[h];i.original_records.splice(d-E,1),E++}return i.txn_time=Co.getNextMonotonicTime(),i}catch(n){throw n}}a(ny,"deleteRecords");Jd.exports={deleteRecords:ny}});var Ss=T((Rv,Zd)=>{"use strict";var fr=p(),iy=Mo(),ay=B(),{getSchemaPath:oy}=q(),_y=hs(),cy=N();Zd.exports=uy;async function uy(e,t=!0){let s=global.hdb_schema[e.schema][e.table].hash_attribute;if(fr.isEmpty(s))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(fr.isEmptyOrZeroLength(e.hash_values)&&!fr.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let _=0;_<e.records.length;_++){let c=e.records[_][s];fr.isEmpty(c)||e.hash_values.push(c)}}if(fr.isEmptyOrZeroLength(e.hash_values))return Xd([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(fr.isEmptyOrZeroLength(e.records)){e.records=[];for(let _=0;_<e.hash_values.length;_++)e.records[_]={[s]:e.hash_values[_]}}let n=oy(e.schema,e.table),i=await ay.openEnvironment(n,e.table),o=await iy.deleteRecords(i,s,e.hash_values,e.__origin?.timestamp);try{t===!0&&await _y(e,o)}catch(_){cy.error(`unable to write transaction due to ${_.message}`)}return Xd(o.deleted,o.skipped,o.txn_time)}catch(n){throw n}}a(uy,"lmdbDeleteRecords");function Xd(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}}a(Xd,"createDeleteResponse")});var fs=T((pv,th)=>{var zd=require("lodash"),jd=Pe(),D=require("joi"),ly=p(),{hdb_schema_table:Fe,checkValidTable:eh}=ar(),{handleHDBError:Ey,hdb_errors:dy}=V(),{HTTP_STATUS_CODES:hy}=dy,Nv=D.object({schema:Fe,table:Fe,hash_values:D.array().min(0).items(D.alternatives(D.string(),D.number())).required(),get_attributes:D.array().min(1).items(Fe).required()}),Ty=D.object({schema:Fe,table:Fe,search_attribute:Fe,search_value:D.any().required(),get_attributes:D.array().min(1).items(Fe).required(),desc:D.bool(),limit:D.number().integer().min(1),offset:D.number().integer().min(0)}),Sy=D.object({schema:Fe,table:Fe,operator:D.string().valid("and","or").default("and").lowercase(),offset:D.number().integer().min(0),limit:D.number().integer().min(1),get_attributes:D.array().min(1).items(Fe).required(),conditions:D.array().min(1).items(D.object({search_attribute:Fe,search_type:D.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between").required(),search_value:D.when("search_type",{switch:[{is:"equals",then:D.any()},{is:"between",then:D.array().items(D.alternatives([D.string(),D.number()])).length(2)}],otherwise:D.alternatives(D.string(),D.number())}).required()})).required()});th.exports=function(e,t){let r=null;switch(t){case"value":r=jd.validateBySchema(e,Ty);break;case"hashes":let i=function(o){n?n+=". "+o:n=o};var s=i;a(i,"addError");let n;i(eh("schema",e.schema)),i(eh("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(o=>typeof o=="string"||typeof o=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(o=>typeof o=="string"||typeof o=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),n&&(r=new Error(n.trim()));break;case"conditions":r=jd.validateBySchema(e,Sy);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let n=ly.checkGlobalSchemaTable(e.schema,e.table);if(n)return Ey(new Error,n,hy.NOT_FOUND);let o=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=zd.filter(_,u=>u!=="*"&&u.attribute!=="*"&&!zd.some(o,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 wo=T((Iv,rh)=>{"use strict";var fy=B(),my=fs(),{getSchemaPath:Ay}=q();rh.exports=Ry;function Ry(e){let t=my(e,"hashes");if(t)throw t;let r=Ay(e.schema,e.table);return fy.openEnvironment(r,e.table)}a(Ry,"initialize")});var Lo=T((Cv,sh)=>{"use strict";var gy=qt(),Ny=wo();sh.exports=py;async function py(e){let t=await Ny(e),r=t.useReadTransaction();r.database=t;let s=global.hdb_schema[e.schema][e.table];try{return gy.batchSearchByHashToMap(r,s.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(py,"lmdbGetDataByHash")});var fi=T((Mv,nh)=>{"use strict";var Si=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.hash_values=s,this.get_attributes=n}};a(Si,"SearchByHashObject");nh.exports=Si});var ah=T((Uv,ih)=>{"use strict";var Lv=fi(),Oy=qt(),Iy=wo();ih.exports=by;async function by(e){let t=await Iy(e),r=global.hdb_schema[e.schema][e.table];return Oy.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(by,"lmdbSearchByHash")});var at=T((Pv,oh)=>{"use strict";var mi=class{constructor(t,r,s,n,i,o,_,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=o,this.end_value=_,this.reverse=c,this.limit=u,this.offset=l}};a(mi,"SearchObject");oh.exports=mi});var Ai=T((Bv,dh)=>{"use strict";var ie=qt(),Cy=B(),yy=p(),g=ee(),Yt=f(),My=Pt(),_h=be().LMDB_ERRORS_ENUM,{compareKeys:mr}=require("ordered-binary"),{getSchemaPath:wy}=q(),ot=Yt.SEARCH_WILDCARDS;async function Ly(e,t,r){let s;e.schema===Yt.SYSTEM_SCHEMA_NAME?s=My[e.table]:s=global.hdb_schema[e.schema][e.table];let n=Eh(e,s.hash_attribute,r,t);return uh(e,n,s.hash_attribute,r)}a(Ly,"prepSearch");async function uh(e,t,r,s){let n=wy(e.schema,e.table),i=await Cy.openEnvironment(n,e.table),o=lh(i,e,t,r),_=o.transaction||i;if([g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,g.SEARCH_TYPES.SEARCH_ALL,g.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(Dy(e,r)===!1){let l=e.search_attribute;if(l===r)return s?ch(o,()=>!0):o.map(h=>({[r]:h.key}));let E=a(h=>({[r]:h.value,[l]:h.key}),"toObject");return s?ch(o,E):o.map(E)}let u=e.search_attribute===r?o.map(l=>l.key):o.map(l=>l.value);return s===!0?ie.batchSearchByHashToMap(_,r,e.get_attributes,u):ie.batchSearchByHash(_,r,e.get_attributes,u)}a(uh,"executeSearch");function lh(e,t,r,s){let n,i=s;t.get_attributes.indexOf(s)<0&&(i=void 0);let{reverse:o,limit:_,offset:c}=t;switch(o=typeof o=="boolean"?o:!1,_=Number.isInteger(_)?_:void 0,c=Number.isInteger(c)?c:void 0,r){case g.SEARCH_TYPES.EQUALS:n=ie.equals(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.CONTAINS:n=ie.contains(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.ENDS_WITH:case g.SEARCH_TYPES._ENDS_WITH:n=ie.endsWith(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.STARTS_WITH:case g.SEARCH_TYPES._STARTS_WITH:n=ie.startsWith(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return ie.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return ie.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case g.SEARCH_TYPES.SEARCH_ALL:return ie.searchAll(e,s,t.get_attributes,o,_,c);case g.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return ie.searchAllToMap(e,s,t.get_attributes,o,_,c);case g.SEARCH_TYPES.BETWEEN:n=ie.between(e,i,t.search_attribute,t.search_value,t.end_value,o,_,c);break;case g.SEARCH_TYPES.GREATER_THAN:case g.SEARCH_TYPES._GREATER_THAN:n=ie.greaterThan(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.GREATER_THAN_EQUAL:case g.SEARCH_TYPES._GREATER_THAN_EQUAL:n=ie.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.LESS_THAN:case g.SEARCH_TYPES._LESS_THAN:n=ie.lessThan(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.LESS_THAN_EQUAL:case g.SEARCH_TYPES._LESS_THAN_EQUAL:n=ie.lessThanEqual(e,i,t.search_attribute,t.search_value,o,_,c);break;default:return Object.create(null)}return n}a(lh,"searchByType");function Uy(e){let t=e.search_type,r=e.search_attribute,s=e.search_value;switch(t){case g.SEARCH_TYPES.EQUALS:return n=>n[r]===s;case g.SEARCH_TYPES.CONTAINS:return n=>typeof n[r]=="string"&&n[r].includes(s);case g.SEARCH_TYPES.ENDS_WITH:case g.SEARCH_TYPES._ENDS_WITH:return n=>typeof n[r]=="string"&&n[r].endsWith(s);case g.SEARCH_TYPES.STARTS_WITH:case g.SEARCH_TYPES._STARTS_WITH:return n=>typeof n[r]=="string"&&n[r].startsWith(s);case g.SEARCH_TYPES.BETWEEN:return n=>{let i=n[r];return mr(i,s[0])>=0&&mr(i,s[1])<=0};case g.SEARCH_TYPES.GREATER_THAN:case g.SEARCH_TYPES._GREATER_THAN:return n=>mr(n[r],s)>0;case g.SEARCH_TYPES.GREATER_THAN_EQUAL:case g.SEARCH_TYPES._GREATER_THAN_EQUAL:return n=>mr(n[r],s)>=0;case g.SEARCH_TYPES.LESS_THAN:case g.SEARCH_TYPES._LESS_THAN:return n=>mr(n[r],s)<0;case g.SEARCH_TYPES.LESS_THAN_EQUAL:case g.SEARCH_TYPES._LESS_THAN_EQUAL:return n=>mr(n[r],s)<=0;default:return Object.create(null)}}a(Uy,"filterByType");function ch(e,t){let r=new Map;for(let s of e)r.set(s.value,t(s));return r}a(ch,"createMapFromIterable");function Dy(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}a(Dy,"checkToFetchMore");function Eh(e,t,r,s){if(yy.isEmpty(s)){let n=e.search_value;typeof n=="object"?n=JSON.stringify(n):n=n.toString();let i=n.charAt(0),o=n.charAt(n.length-1),_=!1;if(e.search_attribute===t&&(_=!0),ot.indexOf(n)>-1)return r===!0?g.SEARCH_TYPES.SEARCH_ALL_TO_MAP:g.SEARCH_TYPES.SEARCH_ALL;if(n.indexOf(ot[0])<0&&n.indexOf(ot[1])<0)return _===!0?r===!0?g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:g.SEARCH_TYPES.EQUALS;if(ot.indexOf(i)>=0&&ot.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),g.SEARCH_TYPES.CONTAINS;if(ot.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),g.SEARCH_TYPES.ENDS_WITH;if(ot.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),g.SEARCH_TYPES.STARTS_WITH;if(n.includes(ot[0])||n.includes(ot[1]))return g.SEARCH_TYPES.EQUALS;throw new Error(_h.UNKNOWN_SEARCH_TYPE)}else switch(s){case Yt.VALUE_SEARCH_COMPARATORS.BETWEEN:return g.SEARCH_TYPES.BETWEEN;case Yt.VALUE_SEARCH_COMPARATORS.GREATER:return g.SEARCH_TYPES.GREATER_THAN;case Yt.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return g.SEARCH_TYPES.GREATER_THAN_EQUAL;case Yt.VALUE_SEARCH_COMPARATORS.LESS:return g.SEARCH_TYPES.LESS_THAN;case Yt.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return g.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(_h.UNKNOWN_SEARCH_TYPE)}}a(Eh,"createSearchTypeFromSearchObject");dh.exports={executeSearch:uh,createSearchTypeFromSearchObject:Eh,prepSearch:Ly,searchByType:lh,filterByType:Uy}});var Th=T((qv,hh)=>{"use strict";var Gv=at(),Py=fs(),Hy=p(),By=f(),vy=Ai();hh.exports=Gy;function Gy(e,t){if(!Hy.isEmpty(t)&&By.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=Py(e,"value");if(s)throw s;let n=!0;return vy.prepSearch(e,t,n)}a(Gy,"lmdbGetDataByValue")});var Ar=T((Vv,Sh)=>{"use strict";var xv=at(),qy=fs(),Fy=p(),xy=f(),Vy=Ai();Sh.exports=ky;async function ky(e,t){if(!Fy.isEmpty(t)&&xy.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=qy(e,"value");if(s)throw s;return Vy.prepSearch(e,t,!1)}a(ky,"lmdbSearchByValue")});var mh=T(($v,fh)=>{"use strict";var Yv=ee(),Ri=class{constructor(t,r,s,n,i=void 0,o=void 0,_="and"){this.schema=t,this.table=r,this.get_attributes=s,this.limit=i,this.offset=o,this.conditions=n,this.operator=_}};a(Ri,"SearchByConditionsObject");var gi=class{constructor(t,r,s){this.search_attribute=t,this.search_type=r,this.search_value=s}};a(gi,"SearchCondition");var Ni=class{constructor(t,r){this.attribute=t,this.desc=r}};a(Ni,"SortAttribute");fh.exports={SearchByConditionsObject:Ri,SearchCondition:gi,SortAttribute:Ni}});var ph=T((Qv,Nh)=>{"use strict";var Wv=mh().SearchByConditionsObject,Yy=at(),$y=fs(),Uo=qt(),pi=ee(),gh=Ai(),Ky=uo(),Wy=require("lodash"),{getSchemaPath:Qy}=q(),Ah=B(),{handleHDBError:Jy,hdb_errors:Xy}=V(),{HTTP_STATUS_CODES:Zy}=Xy,zy=1e8;Nh.exports=jy;async function jy(e){let t=$y(e,"conditions");if(t)throw Jy(t,t.message,Zy.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=Qy(e.schema,e.table),s=await Ah.openEnvironment(r,e.table),n=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)Ah.openDBI(s,u.search_attribute);let i=Wy.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let l=u.search_type;l===pi.SEARCH_TYPES.EQUALS?u.estimated_count=Uo.count(s,u.search_attribute,u.search_value):l===pi.SEARCH_TYPES.CONTAINS||l===pi.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=zy}return u.estimated_count}),o=s.useReadTransaction();o.database=s;let _=await Rh(o,e,i[0],n.hash_attribute),c;if(!e.operator||e.operator.toLowerCase()==="and"){let u=s.dbis[n.hash_attribute],l=i.slice(1).map(gh.filterByType),E=l.length,h=Uo.setGetWholeRowAttributes(s,e.get_attributes);c=_.map(d=>u.get(d,{transaction:o,lazy:!0})),E>0&&(c=c.filter(d=>{for(let A=0;A<E;A++)if(!l[A](d))return!1;return!0})),(e.offset||e.limit!==void 0)&&(c=c.slice(e.offset,e.limit!==void 0?(e.offset||0)+e.limit:void 0)),c=c.map(d=>Ky.parseRow(d,h))}else{for(let E=1;E<i.length;E++){let h=i[E],d=await Rh(o,e,h,n.hash_attribute);_=_.concat(d)}let u=new Set,l=e.offset||0;_=_.filter(E=>u.has(E)?!1:(u.add(E),!0)).slice(l,e.limit&&e.limit+l),c=Uo.batchSearchByHash(o,n.hash_attribute,e.get_attributes,_)}return c.onDone=()=>{o.done()},c}a(jy,"lmdbSearchByConditions");async function Rh(e,t,r,s){let n=new Yy(t.schema,t.table,void 0,void 0,s,t.get_attributes),i=r.search_type;return n.search_attribute=r.search_attribute,i===pi.SEARCH_TYPES.BETWEEN?(n.search_value=r.search_value[0],n.end_value=r.search_value[1]):n.search_value=r.search_value,gh.searchByType(e,n,i,s).map(o=>o.value)}a(Rh,"executeConditionSearch")});var ms=T((Xv,Oh)=>{"use strict";var eM=f().OPERATIONS_ENUM,Oi=class{constructor(t,r,s,n=void 0){this.operation=eM.DELETE,this.schema=t,this.table=r,this.hash_values=s,this.__origin=n}};a(Oi,"DeleteObject");Oh.exports=Oi});var Do=T((zv,Uh)=>{"use strict";var yh=at(),Mh=ms(),wh=Ar(),Lh=Ss(),le=f(),Ih=p(),bh=B(),{getTransactionAuditStorePath:tM,getSchemaPath:rM}=q(),Ch=N();Uh.exports=sM;async function sM(e){try{if(Ih.isEmpty(global.hdb_schema[e.schema])||Ih.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await nM(e),await iM(e);let t=rM(e.schema,e.table);try{await bh.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")Ch.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=tM(e.schema,e.table);await bh.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")Ch.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(sM,"lmdbDropTable");async function nM(e){let t=new yh(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await wh(t)),s=[];for(let i=0;i<r.length;i++){let o=r[i];s.push(o.id)}if(s.length===0)return;let n=new Mh(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);await Lh(n)}a(nM,"deleteAttributesFromSystem");async function iM(e){let t=new yh(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,s;try{r=Array.from(await wh(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let o=r[i];o.name===e.table&&o.schema===e.schema&&(s=o)}if(!s)throw new Error(`${e.schema}.${e.table} was not found`);let n=new Mh(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[s.id]);try{await Lh(n)}catch(i){throw i}}a(iM,"dropTableFromSystem")});var Ph=T((eG,Dh)=>{"use strict";var aM=require("fs-extra"),oM=at(),_M=fi(),cM=ms(),uM=Do(),lM=Ss(),EM=Lo(),dM=Ar(),_t=f(),{getSchemaPath:hM}=q(),{handleHDBError:TM,hdb_errors:SM}=V(),{HDB_ERROR_MSGS:fM,HTTP_STATUS_CODES:mM}=SM;Dh.exports=AM;async function AM(e){let t;try{t=await RM(e.schema);let r=new oM(_t.SYSTEM_SCHEMA_NAME,_t.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,_t.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[_t.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),s=Array.from(await dM(r));for(let o=0;o<s.length;o++){let _={schema:t,table:s[o].name};try{await uM(_)}catch(c){if(c.message!=="invalid environment")throw c}}let n=new cM(_t.SYSTEM_SCHEMA_NAME,_t.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await lM(n);let i=hM(t);await aM.remove(i)}catch(r){throw r}}a(AM,"lmdbDropSchema");async function RM(e){let t=new _M(_t.SYSTEM_SCHEMA_NAME,_t.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[_t.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,s;try{r=Array.from(await EM(t))}catch(n){throw n}for(let[,n]of r)n.name===e&&(s=e);if(!s)throw TM(new Error,fM.SCHEMA_NOT_FOUND(e),mM.NOT_FOUND,void 0,void 0,!0);return s}a(RM,"validateDropSchema")});var Po=T((rG,Hh)=>{"use strict";var Ii=class{constructor(t,r,s){this.schema=t,this.table=r,this.hash_attribute=s}};a(Ii,"CreateTableObject");Hh.exports=Ii});var vh=T((iG,Bh)=>{"use strict";var gM=require("fs-extra"),bi=B(),{getTransactionAuditStorePath:NM}=q(),Ho=ee(),nG=Po();Bh.exports=pM;async function pM(e){let t;try{let r=NM(e.schema,e.table);await gM.mkdirp(r),t=await bi.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{bi.createDBI(t,Ho.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),bi.createDBI(t,Ho.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),bi.createDBI(t,Ho.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}a(pM,"createTransactionsAuditEnvironment")});var xh=T((oG,Fh)=>{"use strict";var Bo=f(),Gh=B(),OM=ir(),{getSystemSchemaPath:IM,getSchemaPath:bM}=q(),CM=Pt(),yM=bn(),vo=In(),MM=N(),wM=vh(),qo=CM.hdb_table,qh=[];for(let e=0;e<qo.attributes.length;e++)qh.push(qo.attributes[e].attribute);Fh.exports=LM;async function LM(e,t){let r=bM(t.schema,t.table),s=new vo(t.schema,t.table,Bo.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),n=new vo(t.schema,t.table,Bo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new vo(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await Gh.createEnvironment(r,t.table),e!==void 0){let o=await Gh.openEnvironment(IM(),Bo.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await OM.insertRecords(o,qo.hash_attribute,qh,[e]),s.skip_table_check=!0,n.skip_table_check=!0,i.skip_table_check=!0,await Go(s),await Go(n),await Go(i)}await wM(t)}catch(o){throw o}}a(LM,"lmdbCreateTable");async function Go(e){try{await yM(e)}catch(t){MM.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Go,"createAttribute")});var kh=T((cG,Vh)=>{"use strict";var UM=Cn(),DM=Ln(),PM=_i(),As=f(),HM=ir().updateRecords,BM=B(),{getSchemaPath:vM}=q(),GM=hs(),qM=N();Vh.exports=FM;async function FM(e){try{let{schema_table:t,attributes:r}=UM(e);DM(e,r,t.hash_attribute),e.schema!==As.SYSTEM_SCHEMA_NAME&&(r.includes(As.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(As.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(As.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(As.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await PM(e.hdb_auth_header,t,r),n=vM(e.schema,e.table),i=await BM.openEnvironment(n,e.table),o=await HM(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await GM(e,o)}catch(_){qM.error(`unable to write transaction due to ${_.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:s,txn_time:o.txn_time}}catch(t){throw t}}a(FM,"lmdbUpdateRecords")});var $h=T((lG,Yh)=>{"use strict";var xM=f().OPERATIONS_ENUM,Ci=class{constructor(t,r,s,n=void 0){this.operation=xM.UPSERT,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a(Ci,"UpsertObject");Yh.exports=Ci});var Wh=T((hG,Kh)=>{"use strict";var dG=$h(),VM=Cn(),kM=Ln(),YM=_i(),Rs=f(),$M=ir().upsertRecords,KM=B(),{getSchemaPath:WM}=q(),QM=hs(),JM=N(),{handleHDBError:XM,hdb_errors:ZM}=V();Kh.exports=zM;async function zM(e){let t;try{t=VM(e)}catch(c){throw XM(c,c.message,ZM.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:s}=t;kM(e,s,r.hash_attribute),e.schema!==Rs.SYSTEM_SCHEMA_NAME&&(s.includes(Rs.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||s.push(Rs.TIME_STAMP_NAMES_ENUM.CREATED_TIME),s.includes(Rs.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||s.push(Rs.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await YM(e.hdb_auth_header,r,s),i=WM(e.schema,e.table),o=await KM.openEnvironment(i,e.table),_=await $M(o,r.hash_attribute,s,e.records,e.__origin?.timestamp);try{await QM(e,_)}catch(c){JM.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:_.written_hashes,schema_table:r,new_attributes:n,txn_time:_.txn_time}}a(zM,"lmdbUpsertRecords")});var jh=T((SG,zh)=>{"use strict";var jM=at(),Qh=p(),Jh=N(),ew=Ar(),Xh=f(),tw=Mo().deleteRecords,rw=B(),{getSchemaPath:sw}=q(),{promisify:nw}=require("util"),iw=nw(setTimeout),Zh=1e4,aw=10;zh.exports=ow;async function ow(e){let t=global.hdb_schema[e.schema][e.table].hash_attribute;if(Qh.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 jM(e.schema,e.table,Xh.TIME_STAMP_NAMES_ENUM.CREATED_TIME,r,void 0,[t]);s=Array.from(await ew(n,Xh.VALUE_SEARCH_COMPARATORS.LESS))}catch(n){throw Jh.error(`Error searching for date: ${e.date} in schema: ${e.schema} table: ${e.table}`),n}return Qh.isEmptyOrZeroLength(s)?(Jh.trace("No records found to delete"),{message:"No records found to delete"}):await _w(e,s,t)}a(ow,"lmdbDeleteRecordsBefore");async function _w(e,t,r){let s=sw(e.schema,e.table),n=await rw.openEnvironment(s,e.table),i={message:"",deleted_hashes:[],skipped_hashes:[]};for(let o=0,_=t.length;o<_;o+=Zh){let c=t.slice(o,o+Zh),u=[];for(let l=0,E=c.length;l<E;l++)u.push(c[l][r]);try{let l=await tw(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 iw(aw)}return i.message=`${i.deleted_hashes.length} of ${i.deleted_hashes.length+i.skipped_hashes.length} records successfully deleted`,i}a(_w,"chunkDeletes")});var tT=T((mG,eT)=>{"use strict";var yi=class{constructor(t,r,s){this.schema=t,this.table=r,this.timestamp=s}};a(yi,"DeleteBeforeObject");eT.exports=yi});var sT=T((RG,rT)=>{"use strict";var Mi=class{constructor(t=void 0,r=void 0,s=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=s}};a(Mi,"DeleteAuditLogsBeforeResults");rT.exports=Mi});var aT=T((pG,iT)=>{"use strict";var Fo=B(),{getTransactionAuditStorePath:cw}=q(),NG=tT(),gs=ee(),uw=p(),nT=sT(),lw=require("util").promisify,Ew=lw(setTimeout),dw=1e4,hw=100;iT.exports=Tw;async function Tw(e){let t=cw(e.schema,e.table),r=await Fo.openEnvironment(t,e.table,!0),s=Fo.listDBIs(r);Fo.initializeDBIs(r,gs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,s);let n,i=new nT;do n=await Sw(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 Ew(hw);while(n.transactions_deleted>0);return i}a(Tw,"deleteAuditLogsBefore");async function Sw(e,t){let r=new nT;try{let s=e.dbis[gs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],n;for(let{key:i,value:o}of s.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),n=s.remove(i);let _=o[gs.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];uw.isEmpty(_)||(n=e.dbis[gs.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(_,i));for(let c=0;c<o.hash_values.length;c++)n=e.dbis[gs.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[c],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>dw)break}return await n,r}catch(s){throw s}}a(Sw,"deleteTransactions")});var _T=T((IG,oT)=>{"use strict";var wi=class{constructor(t,r,s){this.schema=t,this.table=r,this.attribute=s}};a(wi,"DropAttributeObject");oT.exports=wi});var uT=T((yG,cT)=>{"use strict";var fw=at(),mw=ms(),CG=_T(),Je=f(),Aw=p(),xo=B(),Rw=Pt(),gw=Ar(),Nw=Ss(),{getSchemaPath:pw}=q();cT.exports=Ow;async function Ow(e,t=!0){let r;e.schema===Je.SYSTEM_SCHEMA_NAME?r=Rw[e.table]:r=global.hdb_schema[e.schema][e.table];let s=await bw(e),n=pw(e.schema,e.table),i=await xo.openEnvironment(n,e.table);return t===!0&&await Iw(e,i,r.hash_attribute),xo.dropDBI(i,e.attribute),s}a(Ow,"lmdbDropAttribute");async function Iw(e,t,r){let s=xo.openDBI(t,r),n,i=e.attribute;for(let{key:o,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(o,u,c)}await n}a(Iw,"removeAttributeFromAllObjects");async function bw(e){let t=new fw(Je.SYSTEM_SCHEMA_NAME,Je.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),s=Array.from(await gw(t)).filter(o=>o[Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(Aw.isEmptyOrZeroLength(s))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let n=s.map(o=>o[Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new mw(Je.SYSTEM_SCHEMA_NAME,Je.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);return Nw(i)}a(bw,"dropAttributeFromSystem")});var ST=T((LG,TT)=>{"use strict";var Vo=B(),Rr=ee(),wG=Ut(),ko=f(),lT=p(),{getTransactionAuditStorePath:Cw}=q(),yw=qt(),Li=Tr(),Mw=N();TT.exports=ww;async function ww(e){let t=Cw(e.schema,e.table),r=await Vo.openEnvironment(t,e.table,!0),s=Vo.listDBIs(r);Vo.initializeDBIs(r,Rr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,s);let n;switch(e.search_type){case ko.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return ET(r,e.search_values);case ko.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return n=global.hdb_schema[e.schema][e.table].hash_attribute,Uw(r,e.search_values,n);case ko.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return Lw(r,e.search_values);default:return ET(r)}}a(ww,"readAuditLog");function ET(e,t=[0,Date.now()]){lT.isEmpty(t[0])&&(t[0]=0),lT.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[Rr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let n of r.getKeys({start:t[1]}))if(n!==t[1]){s=n;break}return r.getRange({start:t[0],end:s}).map(({value:n})=>Object.assign(new Li,n))}a(ET,"searchTransactionsByTimestamp");function Lw(e,t=[]){let r=new Map;for(let s=0;s<t.length;s++){let n=t[s],i=[];for(let o of e.dbis[Rr.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(n))i.push(o);r.set(n,hT(e,i))}return Object.fromEntries(r)}a(Lw,"searchTransactionsByUsername");function Uw(e,t,r){let s=new Map;for(let _=0,c=t.length;_<c;_++){let u=t[_],l=yw.equals(e,Rr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Rr.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let{value:E}of l){let h=Number(E);s.has(h)?s.get(h).push(u.toString()):s.set(h,[u.toString()])}}let n=Array.from(s.keys()),i=hT(e,n),o=new Map;for(let _=0;_<i.length;_++){let c=i[_],u=c.timestamp,l=s.get(u);dT(c,"records",r,l,o),dT(c,"original_records",r,l,o)}return Object.fromEntries(o)}a(Uw,"searchTransactionsByHashValues");function dT(e,t,r,s,n){let i=e.timestamp;if(e[t])for(let o=0;o<e[t].length;o++){let _=e[t][o],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 Li(e.operation,e.user_name,i,void 0);E[t]=[_],u.push(E)}}else{let u=new Li(e.operation,e.user_name,i,void 0);u[t]=[_],n.set(c,[u])}}}a(dT,"loopRecords");function hT(e,t){let r=[];try{let s=e.dbis[Rr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let n=0;n<t.length;n++)try{let i=s.get(t[n]);if(i){let o=Object.assign(new Li,i);r.push(o)}}catch(i){Mw.warn(i)}return r}catch(s){throw s}}a(hT,"batchSearchTransactions")});var mT=T((DG,fT)=>{"use strict";var{getSchemaPath:Dw}=q(),Pw=B();fT.exports={writeTransaction:Hw};async function Hw(e,t,r){let s=Dw(e,t);return(await Pw.openEnvironment(s,t)).transaction(r)}a(Hw,"writeTransaction")});var NT=T((HG,gT)=>{"use strict";var{getSchemaPath:AT}=q(),RT=B();gT.exports={flush:Bw,resetReadTxn:vw};async function Bw(e,t){return(await RT.openEnvironment(AT(e,t),t.toString())).flushed}a(Bw,"flush");async function vw(e,t){try{(await RT.openEnvironment(AT(e,t),t.toString())).resetReadTxn()}catch{}}a(vw,"resetReadTxn")});var IT=T((vG,OT)=>{"use strict";var Gw=N(),{handleHDBError:qw}=V(),Fw=pa(),xw=bn(),Vw=bo(),kw=Yd(),Yw=Ss(),$w=Lo(),Kw=ah(),Ww=Th(),Qw=Ar(),Jw=ph(),Xw=Ph(),Zw=xh(),zw=kh(),jw=Wh(),eL=jh(),tL=aT(),rL=Do(),sL=uT(),nL=ST(),iL=mT(),pT=NT(),Ui=class extends Fw{async searchByConditions(t){return Jw(t)}async getDataByHash(t){return await $w(t)}async searchByHash(t){return await Kw(t)}async getDataByValue(t,r){return await Ww(t,r)}async searchByValue(t){return await Qw(t)}async createSchema(t){return await kw(t)}async dropSchema(t){return await Xw(t)}async createTable(t,r){return await Zw(t,r)}async dropTable(t){return await rL(t)}async createAttribute(t){return await xw(t)}async createRecords(t){return await Vw(t)}async updateRecords(t){return await zw(t)}async upsertRecords(t){try{return await jw(t)}catch(r){throw qw(r,null,null,Gw.ERR,r)}}async deleteRecords(t){return await Yw(t)}async deleteRecordsBefore(t){return await eL(t)}async dropAttribute(t){return await sL(t)}async deleteAuditLogsBefore(t){return await tL(t)}async readAuditLog(t){return await nL(t)}writeTransaction(t,r,s){return iL.writeTransaction(t,r,s)}flush(t,r){return pT.flush(t,r)}resetReadTxn(t,r){return pT.resetReadTxn(t,r)}};a(Ui,"LMDBBridge");OT.exports=Ui});var mt=T((qG,CT)=>{"use strict";var aL=IT(),oL=pa(),_L=$();_L.initSync();var bT;function cL(){return bT instanceof oL?bT:new aL}a(cL,"getBridge");CT.exports=cL()});var MT=T((xG,yT)=>{"use strict";var uL=mt();yT.exports={writeTransaction:lL};function lL(e,t,r){return uL.writeTransaction(e,t,r)}a(lL,"writeTransaction")});var Yo=T((kG,EL)=>{EL.exports={name:"harperdb",version:"4.1.1",description:"HarperDB is a distributed SQL & NoSQL data platform focused on speed, flexibility, and ease of use.",keywords:["database","sql","nosql","api","distributed","cloud","enterprise","Fastify","NATS"],main:"harperdb.js",bin:{harperdb:"./bin/harperdb.js"},engines:{node:">=14.0.0","preferred-node":"18.15.0","go-lang":"1.19.10","nats-server":"2.9.18"},homepage:"https://www.harperdb.io/",bugs:"support@harperdb.io",author:{name:"HarperDB",email:"support@harperdb.io"},license:"SEE LICENSE IN LICENSE",scripts:{submodules:"git submodule update --init --recursive",build:"eslint -c ./.eslintbuild bin/ dataLayer/ security/ server/ sqlTranslator/ upgrade/ utility/ validation/",pretty:"eslint --fix bin/ dataLayer/ security/ server/ sqlTranslator/ upgrade/ utility/ validation/",test:"rimraf ./.nyc_output/* && node utility/devops/register.js --reset_license --storage_type=lmdb && npm run cover:logging && 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/dataLayer/harperBridge/lmdbBridge/**/*.js' --config '../unitTests/.mocharc.json'","cover:lmdbutility":"cd bin/ && nyc --no-clean --reporter=lcovonly --retries 3 ../node_modules/mocha/bin/_mocha '../unitTests/utility/lmdb/**/*.js' --config '../unitTests/.mocharc.json'","cover:hdbserver":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/server/harperdb/hdbServer-test.js' --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'","cover:apitests":"cd bin/ && node harperdb.js stop && node harperdb.js && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/apiTests/**/*.js' --config '../unitTests/.mocharc.json' && node harperdb.js stop","cover:logging":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/utility/logging/*.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/dataLayer/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:{"@aws-sdk/client-s3":"3.350.0","@aws-sdk/lib-storage":"3.350.0","@aws-sdk/abort-controller":"3.347.0","@fastify/autoload":"~5.7.1","@fastify/compress":"~6.2.0","@fastify/cors":"~8.2.0","@fastify/static":"~6.9.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","cbor-x":"1.5.1",chalk:"4.1.2","cli-progress":"3.12.0",clone:"2.1.2",esbuild:"^0.17.10","fast-glob":"3.2.12",fastify:"~4.17.0","fastify-plugin":"~4.5.0","fs-extra":"11.1.0","human-readable-ids":"1.0.4",inquirer:"8.2.5","is-number":"7.0.0",joi:"17.9.2",json2csv:"5.0.7",jsonata:"1.8.6",jsonwebtoken:"9.0.0",lmdb:"2.8.1",lodash:"4.17.21",mathjs:"11.6.0",minimist:"1.2.8",mkcert:"1.5.1",moment:"2.29.4",msgpackr:"1.9.5",nats:"2.14.0",needle:"3.2.0","node-stream-zip":"1.15.0","normalize-path":"^3.0.0",ora:"5.4.1","ordered-binary":"1.4.0",papaparse:"5.4.1",passport:"0.6.0","passport-http":"0.3.0","passport-local":"1.0.0",pino:"8.14.1",pm2:"5.3.0",prompt:"1.3.0","properties-reader":"2.2.0","recursive-iterator":"3.3.0",semver:"7.5.1","stream-chain":"2.2.5","stream-json":"1.7.5",systeminformation:"5.17.10","tar-fs":"2.1.1",ulidx:"0.5.0",uuid:"9.0.0","validate.js":"0.13.1",yaml:"2.2.1"},devDependencies:{axios:"0.27.2",chai:"4.3.7","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":"3.0.0","intercept-stdout":"0.1.2",mocha:"^10.2.0","mocha-teamcity-reporter":"3.0.0","mock-require":"3.0.3","mock-stdin":"1.0.0",newman:"5.3.2","newman-reporter-html":"1.0.5","newman-reporter-htmlextra":"^1.22.11","newman-reporter-teamcity":"^0.1.12","node-fetch":"2.6.7",nyc:"15.1.0",prettier:"2.8.4",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.4"},"newman-reporter-html":{newman:"5.3.2"}}}});var Ls=T((zG,WT)=>{"use strict";var X=$();X.initSync();var dL=require("fs-extra"),hL=require("semver"),bs=require("path"),{monotonicFactory:TL}=require("ulidx"),Jo=TL(),SL=require("util"),LT=require("child_process"),fL=SL.promisify(LT.exec),mL=LT.spawn,L=Lt(),P=f(),Di=p(),It=N(),Pi=rn(),AL=MT(),Ns=js(),{encode:Wo,decode:Xo}=require("msgpackr"),{isEmpty:$t}=Di,UT=us(),DT=12e10,{connect:RL,StorageType:PT,RetentionPolicy:HT,AckPolicy:Zo,DeliverPolicy:Cs,DiscardPolicy:gL,NatsConnection:YG,JetStreamManager:$G,JetStreamClient:KG,StringCodec:WG,JSONCodec:NL,createInbox:zo,StreamSource:QG,headers:pL,toJsMsg:BT,nuid:JG,JetStreamOptions:XG,ErrorCode:wT,nanos:ZG}=require("nats"),{PACKAGE_ROOT:OL}=f(),IL=Yo(),vT=NL(),bL="clustering",CL=IL.engines[L.NATS_SERVER_NAME],yL=bs.join(OL,"dependencies"),Qo=bs.join(yL,`${process.platform}-${process.arch}`,L.NATS_BINARY_NAME),$o,Ko,ps,Os,Is,xe;WT.exports={runCommand:GT,checkNATSServerInstalled:ML,createConnection:jo,getConnection:Hi,getJetStreamManager:ys,getJetStream:qT,getNATSReferences:Ie,getServerList:LL,createLocalStream:e_,listStreams:FT,deleteLocalStream:UL,getServerConfig:Ms,listRemoteStreams:DL,viewStream:PL,viewStreamIterator:HL,publishToStream:BL,createWorkQueueStream:vL,addSourceToWorkStream:VT,request:GL,removeSourceFromWorkStream:YT,reloadNATS:t_,reloadNATSHub:qL,reloadNATSLeaf:FL,extractServerName:kT,requestErrorHandler:xL,updateWorkStream:VL,createLocalTableStream:$T,createTableStreams:kL,purgeTableStream:KT,purgeSchemaTableStreams:YL,getStreamInfo:$L,updateLocalStreams:WL,closeConnection:wL,getJsmServerName:ws,addNatsMsgHeader:xT};async function GT(e,t=void 0){let{stdout:r,stderr:s}=await fL(e,{cwd:t});if(s)throw new Error(s.replace(`
1
+ "use strict";var df=Object.defineProperty;var a=(e,t)=>df(e,"name",{value:t,configurable:!0});var T=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var f=T((fP,k_)=>{"use strict";var De=require("path"),hf=require("fs");function Tf(){let e=__dirname;for(;!hf.existsSync(De.join(e,"package.json"));){let t=De.dirname(e);if(t===e)throw new Error("Could not find package root");e=t}return e}a(Tf,"getHDBPackageRoot");var ct=Tf(),w_="js",Gs=w_,Sf="harperdb-config.yaml",ff="defaultConfig.yaml",mf="hdb",L_=`harperdb.${Gs}`,U_=`customFunctionsServer.${Gs}`,Af=`restartHdb.${Gs}`,aa="HarperDB",vs="Custom Functions",qs="Clustering Hub",Fs="Clustering Leaf",Rf="Clustering Ingest Service",gf="Clustering Reply Service",Nf="foreground.pid",pf="hdb.pid",Of={HDB:aa,CLUSTERING_HUB:qs,CLUSTERING_LEAF:Fs,CLUSTERING_INGEST_SERVICE:Rf,CLUSTERING_REPLY_SERVICE:gf,CUSTOM_FUNCTIONS:vs,RESTART_HDB:"Restart HDB",INSTALL:"Install",RUN:"Run",STOP:"Stop",UPGRADE:"Upgrade",REGISTER:"Register",JOB:"Job",CLUSTERING_UPGRADE_4_0_0:"Upgrade-4-0-0"},If={HDB:"hdb.log",INSTALL:"install.log",CLUSTERING_HUB:"clustering_hub.log",CLUSTERING_LEAF:"clustering_leaf.log"},bf={NOTIFY:"notify",FATAL:"fatal",ERROR:"error",WARN:"warn",INFO:"info",DEBUG:"debug",TRACE:"trace"},Cf={harperdb:aa,"clustering hub":qs,"clustering leaf":Fs,"custom functions":vs,custom_functions:vs,clustering:"clustering","clustering config":"clustering config",clustering_config:"clustering_config",http_workers:"http_workers"},yf={CLUSTERING_HUB_PROC_DESCRIPTOR:qs,CLUSTERING_LEAF_PROC_DESCRIPTOR:Fs},ia={HDB:De.join(ct,"server/harperdb"),CUSTOM_FUNCTIONS:De.join(ct,"server/customFunctions"),CLUSTERING_HUB:De.join(ct,"server/nats"),CLUSTERING_LEAF:De.join(ct,"server/nats")},Mf={HDB:De.join(ia.HDB,L_),CUSTOM_FUNCTIONS:De.join(ia.CUSTOM_FUNCTIONS,U_)},wf={MAIN:"bin/harperdb.js",NATS_INGEST_SERVICE:De.join(ct,"launchServiceScripts/launchNatsIngestService.js"),NATS_REPLY_SERVICE:De.join(ct,"launchServiceScripts/launchNatsReplyService.js"),NODES_UPGRADE_4_0_0:De.join(ct,"launchServiceScripts/launchUpdateNodes4-0-0.js")},Lf={SUPER_USER:"super_user",CLUSTER_USER:"cluster_user"},D_="support@harperdb.io",Uf="customer-success@harperdb.io",P_=1,Df=4141,H_="https://harperdbhelp.zendesk.com/hc/en-us/requests/new",Pf="https://www.harperdb.io/product",Hf=`For support, please submit a request at ${H_} or contact ${D_}`,B_=`For license support, please contact ${Uf}`,Bf="None of the specified records were found.",vf="hash attribute not found",Gf=`Your current license only supports ${P_} role. ${B_}`,qf="Your current license only supports 3 connections to a node.",Ff="127.0.0.1",xf=1,Vf=/^\.$/,kf=/^\.\.$/,Yf="U+002E",$f=/\//g,Kf="U+002F",Wf=/U\+002F/g,Qf=/^U\+002E$/,Jf=/^U\+002EU\+002E$/,Xf="d",Zf=999999,zf="*",jf="--max-old-space-size=",em="system",tm="__hdb_hash",rm=".harperdb",sm=".hdb",nm="keys",im="hdb_boot_properties.file",am=".updateConfig.json",om="SIGTSTP",_m=24,cm=6e4,um=448,lm="blob",Em="trash",dm="schema",hm="transactions",Tm=".count",Sm="id",fm="PROCESS_NAME",v_={SETTINGS_PATH_KEY:"settings_path"},G_=require("lodash"),mm={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"},Am={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},Rm={DATA_VERSION:"data_version",UPGRADE_VERSION:"upgrade_version"},gm={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"},Nm={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"},fe="hdb_internal:",pm={CREATE_SCHEMA:fe+"create_schema",CREATE_TABLE:fe+"create_table",CREATE_ATTRIBUTE:fe+"create_attribute",ADD_USER:fe+"add_user",ALTER_USER:fe+"alter_user",DROP_USER:fe+"drop_user",HDB_NODES:fe+"hdb_nodes",HDB_USERS:fe+"hdb_users",HDB_WORKERS:fe+"hdb_workers",CATCHUP:fe+"catchup",SCHEMA_CATCHUP:fe+"schema_catchup",WORKER_ROOM:fe+"cluster_workers"},Om={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"},Im="060493.ks",bm=".license",Cm={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",CLUSTER_NETWORK:"cluster_network",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",PURGE_STREAM:"purge_stream"},ym={CSV:".csv",JSON:".json"},Mm={AWS_ACCESS_KEY:"aws_access_key_id",AWS_SECRET:"aws_secret_access_key",AWS_BUCKET:"bucket",AWS_FILE_KEY:"key",REGION:"region"},wm={SELECT:"select",INSERT:"insert",UPDATE:"update",DELETE:"delete"},yr={};yr[m.INSERT]=m.INSERT;yr[m.UPDATE]=m.UPDATE;yr[m.UPSERT]=m.UPSERT;yr[m.DELETE]=m.DELETE;var H=Object.create(null);H[m.DESCRIBE_ALL]=m.DESCRIBE_ALL;H[m.DESCRIBE_TABLE]=m.DESCRIBE_TABLE;H[m.DESCRIBE_SCHEMA]=m.DESCRIBE_SCHEMA;H[m.READ_LOG]=m.READ_LOG;H[m.ADD_NODE]=m.ADD_NODE;H[m.LIST_USERS]=m.LIST_USERS;H[m.LIST_ROLES]=m.LIST_ROLES;H[m.USER_INFO]=m.USER_INFO;H[m.SQL]=m.SQL;H[m.GET_JOB]=m.GET_JOB;H[m.SEARCH_JOBS_BY_START_DATE]=m.SEARCH_JOBS_BY_START_DATE;H[m.DELETE_FILES_BEFORE]=m.DELETE_FILES_BEFORE;H[m.EXPORT_LOCAL]=m.EXPORT_LOCAL;H[m.EXPORT_TO_S3]=m.EXPORT_TO_S3;H[m.CLUSTER_STATUS]=m.CLUSTER_STATUS;H[m.REMOVE_NODE]=m.REMOVE_NODE;H[m.RESTART]=m.RESTART;H[m.CUSTOM_FUNCTIONS_STATUS]=m.CUSTOM_FUNCTIONS_STATUS;H[m.GET_CUSTOM_FUNCTIONS]=m.GET_CUSTOM_FUNCTIONS;H[m.GET_CUSTOM_FUNCTION]=m.GET_CUSTOM_FUNCTION;H[m.SET_CUSTOM_FUNCTION]=m.SET_CUSTOM_FUNCTION;H[m.DROP_CUSTOM_FUNCTION]=m.DROP_CUSTOM_FUNCTION;H[m.ADD_CUSTOM_FUNCTION_PROJECT]=m.ADD_CUSTOM_FUNCTION_PROJECT;H[m.DROP_CUSTOM_FUNCTION_PROJECT]=m.DROP_CUSTOM_FUNCTION_PROJECT;H[m.PACKAGE_CUSTOM_FUNCTION_PROJECT]=m.PACKAGE_CUSTOM_FUNCTION_PROJECT;H[m.DEPLOY_CUSTOM_FUNCTION_PROJECT]=m.DEPLOY_CUSTOM_FUNCTION_PROJECT;var Lm={RUN:"run",START:"start",INSTALL:"install",REGISTER:"register",STOP:"stop",RESTART:"restart",VERSION:"version",UPGRADE:"upgrade",HELP:"help",STATUS:"status"},Um={point:"point",lineString:"lineString",multiLineString:"multiLineString",multiPoint:"multiPoint",multiPolygon:"multiPolygon",polygon:"polygon"},q_={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",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"},Dm=G_.invert(q_),S={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_LEAFSERVER_STREAMS_MAXAGE:"clustering_leafServer_streams_maxAge",CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES:"clustering_leafServer_streams_maxBytes",CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS:"clustering_leafServer_streams_maxMsgs",CLUSTERING_LEAFSERVER_STREAMS_PATH:"clustering_leafServer_streams_path",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",CLUSTERING_TLS_VERIFY:"clustering_tls_verify",CLUSTERING_LOGLEVEL:"clustering_logLevel",CLUSTERING_REPUBLISHMESSAGES:"clustering_republishMessages",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",HTTP_SESSION_AFFINITY:"http_sessionAffinity",LOCALSTUDIO_ENABLED:"localStudio_enabled",LOGGING_FILE:"logging_file",LOGGING_LEVEL:"logging_level",LOGGING_ROOT:"logging_root",LOGGING_ROTATION_ENABLED:"logging_rotation_enabled",LOGGING_ROTATION_COMPRESS:"logging_rotation_compress",LOGGING_ROTATION_INTERVAL:"logging_rotation_interval",LOGGING_ROTATION_MAXSIZE:"logging_rotation_maxSize",LOGGING_ROTATION_PATH:"logging_rotation_path",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",STORAGE_CACHING:"storage_caching",STORAGE_COMPRESSION:"storage_compression",STORAGE_NOREADAHEAD:"storage_noReadAhead",STORAGE_PREFETCHWRITES:"storage_prefetchWrites",STORAGE_ENCRYPTION:"storage_encryption",STORAGE_PATH:"storage_path",STORAGE_AUDIT_PATH:"storage_audit_path",SCHEMAS:"schemas"},F_={settings_path:v_.SETTINGS_PATH_KEY,hdb_root_key:S.ROOTPATH,hdb_root:S.ROOTPATH,server_port_key:S.OPERATIONSAPI_NETWORK_PORT,server_port:S.OPERATIONSAPI_NETWORK_PORT,cert_key:S.OPERATIONSAPI_TLS_CERTIFICATE,certificate:S.OPERATIONSAPI_TLS_CERTIFICATE,private_key_key:S.OPERATIONSAPI_TLS_PRIVATEKEY,private_key:S.OPERATIONSAPI_TLS_PRIVATEKEY,http_secure_enabled_key:S.OPERATIONSAPI_NETWORK_HTTPS,https_on:S.OPERATIONSAPI_NETWORK_HTTPS,cors_enabled_key:S.OPERATIONSAPI_NETWORK_CORS,cors_on:S.OPERATIONSAPI_NETWORK_CORS,cors_whitelist_key:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_whitelist:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_accesslist_key:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,cors_accesslist:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,log_level_key:S.LOGGING_LEVEL,log_level:S.LOGGING_LEVEL,log_path_key:S.LOGGING_ROOT,log_path:S.LOGGING_ROOT,props_env_key:S.OPERATIONSAPI_NODEENV,node_env:S.OPERATIONSAPI_NODEENV,clustering_node_name_key:S.CLUSTERING_NODENAME,node_name:S.CLUSTERING_NODENAME,clustering_enabled_key:S.CLUSTERING_ENABLED,clustering:S.CLUSTERING_ENABLED,max_http_threads:S.HTTP_THREADS,max_hdb_processes:S.HTTP_THREADS,server_timeout_key:S.OPERATIONSAPI_NETWORK_TIMEOUT,server_timeout_ms:S.OPERATIONSAPI_NETWORK_TIMEOUT,server_keep_alive_timeout_key:S.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,server_keep_alive_timeout:S.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,server_headers_timeout_key:S.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,server_headers_timeout:S.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,disable_transaction_log_key:S.LOGGING_AUDITLOG,disable_transaction_log:S.LOGGING_AUDITLOG,operation_token_timeout_key:S.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,operation_token_timeout:S.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,refresh_token_timeout_key:S.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,refresh_token_timeout:S.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,custom_functions_enabled_key:S.CUSTOMFUNCTIONS_ENABLED,custom_functions:S.CUSTOMFUNCTIONS_ENABLED,custom_functions_port_key:S.CUSTOMFUNCTIONS_NETWORK_PORT,custom_functions_port:S.CUSTOMFUNCTIONS_NETWORK_PORT,custom_functions_directory_key:S.CUSTOMFUNCTIONS_ROOT,custom_functions_directory:S.CUSTOMFUNCTIONS_ROOT,max_custom_function_processes:S.HTTP_THREADS,log_to_file:S.LOGGING_FILE,log_to_stdstreams:S.LOGGING_STDSTREAMS,run_in_foreground:S.OPERATIONSAPI_FOREGROUND,local_studio_on:S.LOCALSTUDIO_ENABLED,clustering_port:S.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT,clustering_user:S.CLUSTERING_USER,clustering_enabled:S.CLUSTERING_ENABLED,clustering_hubserver_cluster_name:S.CLUSTERING_HUBSERVER_CLUSTER_NAME,clustering_hubserver_cluster_network_port:S.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT,clustering_hubserver_cluster_network_routes:S.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_ROUTES,clustering_hubserver_leafnodes_network_port:S.CLUSTERING_HUBSERVER_LEAFNODES_NETWORK_PORT,clustering_hubserver_network_port:S.CLUSTERING_HUBSERVER_NETWORK_PORT,clustering_leafserver_network_port:S.CLUSTERING_LEAFSERVER_NETWORK_PORT,clustering_leafserver_network_routes:S.CLUSTERING_LEAFSERVER_NETWORK_ROUTES,clustering_leafserver_streams_maxage:S.CLUSTERING_LEAFSERVER_STREAMS_MAXAGE,clustering_leafserver_streams_maxbytes:S.CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES,clustering_leafserver_streams_maxmsgs:S.CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS,clustering_leafserver_streams_path:S.CLUSTERING_LEAFSERVER_STREAMS_PATH,clustering_nodename:S.CLUSTERING_NODENAME,clustering_tls_certificate:S.CLUSTERING_TLS_CERTIFICATE,clustering_tls_privatekey:S.CLUSTERING_TLS_PRIVATEKEY,clustering_tls_certificateauthority:S.CLUSTERING_TLS_CERT_AUTH,clustering_tls_insecure:S.CLUSTERING_TLS_INSECURE,clustering_tls_verify:S.CLUSTERING_TLS_VERIFY,clustering_loglevel:S.CLUSTERING_LOGLEVEL,clustering_republishmessages:S.CLUSTERING_REPUBLISHMESSAGES,customfunctions_enabled:S.CUSTOMFUNCTIONS_ENABLED,customfunctions_network_port:S.CUSTOMFUNCTIONS_NETWORK_PORT,customfunctions_tls_certificate:S.CUSTOMFUNCTIONS_TLS_CERTIFICATE,customfunctions_network_cors:S.CUSTOMFUNCTIONS_NETWORK_CORS,customfunctions_network_corsaccesslist:S.CUSTOMFUNCTIONS_NETWORK_CORSACCESSLIST,customfunctions_network_headerstimeout:S.CUSTOMFUNCTIONS_NETWORK_HEADERSTIMEOUT,customfunctions_network_https:S.CUSTOMFUNCTIONS_NETWORK_HTTPS,customfunctions_network_keepalivetimeout:S.CUSTOMFUNCTIONS_NETWORK_KEEPALIVETIMEOUT,customfunctions_tls_privatekey:S.CUSTOMFUNCTIONS_TLS_PRIVATEKEY,customfunctions_tls_certificateauthority:S.CUSTOMFUNCTIONS_TLS_CERT_AUTH,customfunctions_network_timeout:S.CUSTOMFUNCTIONS_NETWORK_TIMEOUT,customfunctions_nodeenv:S.CUSTOMFUNCTIONS_NODEENV,http_threads:S.HTTP_THREADS,http_session_affinity:S.HTTP_SESSION_AFFINITY,customfunctions_processes:S.HTTP_THREADS,customfunctions_root:S.CUSTOMFUNCTIONS_ROOT,localstudio_enabled:S.LOCALSTUDIO_ENABLED,logging_file:S.LOGGING_FILE,logging_level:S.LOGGING_LEVEL,logging_root:S.LOGGING_ROOT,logging_rotation_enabled:S.LOGGING_ROTATION_ENABLED,logging_rotation_compress:S.LOGGING_ROTATION_COMPRESS,logging_rotation_interval:S.LOGGING_ROTATION_INTERVAL,logging_rotation_maxsize:S.LOGGING_ROTATION_MAXSIZE,logging_rotation_path:S.LOGGING_ROTATION_PATH,logging_stdstreams:S.LOGGING_STDSTREAMS,logging_auditlog:S.LOGGING_AUDITLOG,operationsapi_authentication_operationtokentimeout:S.OPERATIONSAPI_AUTHENTICATION_OPERATIONTOKENTIMEOUT,operationsapi_authentication_refreshtokentimeout:S.OPERATIONSAPI_AUTHENTICATION_REFRESHTOKENTIMEOUT,operationsapi_foreground:S.OPERATIONSAPI_FOREGROUND,operationsapi_tls_certificate:S.OPERATIONSAPI_TLS_CERTIFICATE,operationsapi_network_cors:S.OPERATIONSAPI_NETWORK_CORS,operationsapi_network_corsaccesslist:S.OPERATIONSAPI_NETWORK_CORSACCESSLIST,operationsapi_network_headerstimeout:S.OPERATIONSAPI_NETWORK_HEADERSTIMEOUT,operationsapi_network_https:S.OPERATIONSAPI_NETWORK_HTTPS,operationsapi_network_keepalivetimeout:S.OPERATIONSAPI_NETWORK_KEEPALIVETIMEOUT,operationsapi_network_port:S.OPERATIONSAPI_NETWORK_PORT,operationsapi_tls_privatekey:S.OPERATIONSAPI_TLS_PRIVATEKEY,operationsapi_tls_certificateauthority:S.OPERATIONSAPI_TLS_CERT_AUTH,operationsapi_network_timeout:S.OPERATIONSAPI_NETWORK_TIMEOUT,operationsapi_nodeenv:S.OPERATIONSAPI_NODEENV,operationsapi_root:S.ROOTPATH,schemas:S.SCHEMAS,storage_path:S.STORAGE_PATH};for(let e in S){let t=S[e];F_[t.toLowerCase()]=t}var Pm={TABLES:"tables",PATH:"path",AUDIT_PATH:"auditPath"},Hm={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"},Bm={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"},vm={BIDIRECTIONAL:"BIDIRECTIONAL",OUTBOUND:"OUTBOUND",INBOUND:"INBOUND"},Gm={FILE_SYSTEM:"fs",LMDB:"lmdb"},qm={API_CALL_DEFAULT:1e4,VERSION_DEFAULT:"2.2.0"},Fm={DEVELOPMENT:8192,DEFAULT:512},xm={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"},Vm={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"},km={ENOENT:"ENOENT",EACCES:"EACCES"},x_={CREATED_TIME:"__createdtime__",UPDATED_TIME:"__updatedtime__"},Ym="__clustering__",$m=Object.values(x_),Km=15984864e5,V_={LESS:"<",LESS_OR_EQ:"<=",GREATER:">",GREATER_OR_EQ:">=",BETWEEN:"..."},Wm=G_.invert(V_),Qm={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"},Jm=111,Xm=`\r
2
+ `,Zm={READ:"read",INSERT:"insert",UPDATE:"update",DELETE:"delete"},zm=["*","%"],jm="unauthorized_access",eA="func_val",tA={HASH_VALUE:"hash_value",TIMESTAMP:"timestamp",USERNAME:"username"},rA={JWT_PRIVATE_KEY_NAME:".jwtPrivate.key",JWT_PUBLIC_KEY_NAME:".jwtPublic.key",JWT_PASSPHRASE_NAME:".jwtPass"},sA={SHUTDOWN:"shutdown",CHILD_STARTED:"child_started",CHILD_STOPPED:"child_stopped",SCHEMA:"schema",USER:"user",CLUSTER_STATUS_RESPONSE:"cluster_status_response",CLUSTER_STATUS_REQUEST:"cluster_status_request",METRICS:"metrics",GET_METRICS:"get_metrics",RESTART:"restart"},nA={HDB_CORE:"hdb_core",CUSTOM_FUNCTIONS:"custom_functions"},iA={HTTP:"http"},aA={STOPPED:"stopped",ONLINE:"online"},oA="3.x.x";k_.exports={LOCAL_HARPERDB_OPERATIONS:H,HDB_SUPPORT_ADDRESS:D_,HDB_SUPPORT_URL:H_,HDB_PRICING_URL:Pf,SUPPORT_HELP_MSG:Hf,LICENSE_HELP_MSG:B_,HDB_PROC_NAME:L_,HDB_PROC_DESCRIPTOR:aa,CLUSTERING_LEAF_PROC_DESCRIPTOR:Fs,CLUSTERING_HUB_PROC_DESCRIPTOR:qs,SYSTEM_SCHEMA_NAME:em,HASH_FOLDER_NAME:tm,HDB_HOME_DIR_NAME:rm,UPDATE_FILE_NAME:am,LICENSE_KEY_DIR_NAME:nm,BOOT_PROPS_FILE_NAME:im,JOB_TYPE_ENUM:Hm,JOB_STATUS_ENUM:Cm,SYSTEM_TABLE_NAMES:gm,SYSTEM_TABLE_HASH_ATTRIBUTES:Nm,OPERATIONS_ENUM:m,VALID_S3_FILE_TYPES:ym,S3_BUCKET_AUTH_KEYS:Mm,VALID_SQL_OPS_ENUM:wm,GEO_CONVERSION_ENUM:Um,HDB_SETTINGS_NAMES:q_,HDB_SETTINGS_NAMES_REVERSE_LOOKUP:Dm,SERVICE_ACTIONS_ENUM:Lm,CLUSTER_MESSAGE_TYPE_ENUM:Bm,CLUSTER_CONNECTION_DIRECTION_ENUM:vm,CLUSTER_EVENTS_DEFS_ENUM:xm,PERIOD_REGEX:Vf,DOUBLE_PERIOD_REGEX:kf,UNICODE_PERIOD:Yf,FORWARD_SLASH_REGEX:$f,UNICODE_FORWARD_SLASH:Kf,ESCAPED_FORWARD_SLASH_REGEX:Wf,ESCAPED_PERIOD_REGEX:Qf,ESCAPED_DOUBLE_PERIOD_REGEX:Jf,REG_KEY_FILE_NAME:Im,RESTART_TIMEOUT_MS:cm,HDB_FILE_PERMISSIONS:um,SCHEMA_DIR_NAME:dm,TRANSACTIONS_DIR_NAME:hm,LIMIT_COUNT_NAME:Tm,ID_ATTRIBUTE_STRING:Sm,INSERT_MODULE_ENUM:Am,UPGRADE_JSON_FIELD_NAMES_ENUM:Rm,RESTART_CODE:om,RESTART_CODE_NUM:_m,CLUSTER_OPERATIONS:yr,SYSTEM_DEFAULT_ATTRIBUTE_NAMES:Om,HDB_INTERNAL_SC_CHANNEL_PREFIX:fe,INTERNAL_SC_CHANNELS:pm,CLUSTERING_MESSAGE_TYPES:Qm,HDB_FILE_SUFFIX:sm,BLOB_FOLDER_NAME:lm,HDB_TRASH_DIR:Em,ORIGINATOR_SET_VALUE:Jm,LICENSE_VALUES:qm,RAM_ALLOCATION_ENUM:Fm,STORAGE_TYPES_ENUM:Gm,TIME_STAMP_NAMES_ENUM:x_,TIME_STAMP_NAMES:$m,PERMS_UPDATE_RELEASE_TIMESTAMP:Km,SEARCH_NOT_FOUND_MESSAGE:Bf,SEARCH_ATTRIBUTE_NOT_FOUND:vf,LICENSE_ROLE_DENIED_RESPONSE:Gf,LICENSE_MAX_CONNS_REACHED:qf,BASIC_LICENSE_MAX_NON_CU_ROLES:P_,BASIC_LICENSE_CLUSTER_CONNECTION_LIMIT_WS_ERROR_CODE:Df,VALUE_SEARCH_COMPARATORS:V_,VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP:Wm,LICENSE_FILE_NAME:bm,WEBSOCKET_CLOSE_CODE_DESCRIPTION_LOOKUP:Vm,NEW_LINE:Xm,BASIC_LICENSE_MAX_CLUSTER_USER_ROLES:xf,MOMENT_DAYS_TAG:Xf,API_TURNOVER_SEC:Zf,LOOPBACK:Ff,CODE_EXTENSION:Gs,WILDCARD_SEARCH_VALUE:zf,NODE_ERROR_CODES:km,JAVASCRIPT_EXTENSION:w_,PERMS_CRUD_ENUM:Zm,UNAUTHORIZED_PERMISSION_NAME:jm,SEARCH_WILDCARDS:zm,FUNC_VAL:eA,READ_AUDIT_LOG_SEARCH_TYPES_ENUM:tA,JWT_ENUM:rA,CLUSTERING_FLAG:Ym,ITC_EVENT_TYPES:sA,CUSTOM_FUNCTION_PROC_NAME:U_,CUSTOM_FUNCTION_PROC_DESCRIPTOR:vs,SERVICES:nA,THREAD_TYPES:iA,MEM_SETTING_KEY:jf,HDB_RESTART_SCRIPT:Af,PROCESS_DESCRIPTORS:Of,SERVICE_SERVERS:Mf,SERVICE_SERVERS_CWD:ia,PROCESS_DESCRIPTORS_VALIDATE:Cf,LAUNCH_SERVICE_SCRIPTS:wf,LOG_LEVELS:bf,PROCESS_NAME_ENV_PROP:fm,LOG_NAMES:If,PM2_PROCESS_STATUSES:aA,CONFIG_PARAM_MAP:F_,CONFIG_PARAMS:S,HDB_CONFIG_FILE:Sf,HDB_DEFAULT_CONFIG_FILE:ff,ROLE_TYPES_ENUM:Lf,BOOT_PROP_PARAMS:v_,INSTALL_PROMPTS:mm,HDB_ROOT_DIR_NAME:mf,CLUSTERING_PROCESSES:yf,FOREGROUND_PID_FILE:Nf,PACKAGE_ROOT:ct,PRE_4_0_0_VERSION:oA,SCHEMAS_PARAM_CONFIG:Pm,HDB_PID_FILE:pf}});var W_=T((AP,K_)=>{"use strict";var Y_=require("minimist");K_.exports=_A;function _A(e=[],t=!1){if(!Array.isArray(e))return{};let r,s;t?(r=$_(process.env),s=$_(Y_(process.argv))):(r=process.env,s=Y_(process.argv));let n={};for(let i=0,o=e.length;i<o;i++){let _=e[i];s[_]!==void 0?n[_]=s[_].toString().trim():r[_]!==void 0&&(n[_]=r[_].toString().trim())}return n}a(_A,"assignCMDENVVariables");function $_(e){let t,r=Object.keys(e),s=r.length,n={};for(;s--;)t=r[s],n[t.toLowerCase()]=e[t];return n}a($_,"objKeysToLowerCase")});var N=T((gP,ic)=>{"use strict";var jt=require("fs-extra"),{workerData:cA,threadId:uA}=require("worker_threads"),ut=require("path"),X_=require("yaml"),Z_=require("properties-reader"),J=f(),Q_=W_(),lA=require("os"),{PACKAGE_ROOT:_a}=f(),z_={};for(let e in console)z_[e]=console[e];var _e={notify:7,fatal:6,error:5,warn:4,info:3,debug:2,trace:1},j_={STDOUT:"stdOut",STDERR:"stdErr"},EA=ut.join(_a,"logs"),dA=ut.join(_a,"config/yaml/",J.HDB_DEFAULT_CONFIG_FILE),hA=1e4,Ze,ze,oe,xs,Vs,ks,wr,Mr;Mr===void 0&&ec();ic.exports={notify:sc,fatal:nc,error:Lr,warn:Ea,info:Ys,debug:la,trace:ua,setLogLevel:gA,log_level:oe,loggerWithTag:TA,suppressLogging:SA,initLogSettings:ec,setupConsoleLogging:tc,logCustomLevel:AA,closeLogFile:ca,getLogFilePath:()=>ks,OUTPUTS:j_};function ec(e=!1){try{if(Mr===void 0||e){ca();let t=RA();Mr=Z_(t);let r=Q_(["ROOTPATH"]);({level:oe,config_log_path:Vs,to_file:Ze,to_stream:ze}=NA(r.ROOTPATH?ut.join(r.ROOTPATH,J.HDB_CONFIG_FILE):Mr.get("settings_path"))),xs=J.LOG_NAMES.HDB,ks=ut.join(Vs,xs)}}catch(t){if(Mr=void 0,t.code===J.NODE_ERROR_CODES.ENOENT){let r=Q_(Object.keys(J.CONFIG_PARAM_MAP),!0);for(let o in r){let _=J.CONFIG_PARAM_MAP[o];_&&_.toLowerCase();let c=r[o];if(_===J.CONFIG_PARAMS.LOGGING_LEVEL){oe=c;continue}if(_===J.CONFIG_PARAMS.LOGGING_STDSTREAMS){ze=c;continue}_===J.CONFIG_PARAMS.LOGGING_FILE&&(Ze=_)}let{default_level:s,default_to_file:n,default_to_stream:i}=pA();Ze=Ze===void 0?n:Ze,Ze=J_(Ze),ze=ze===void 0?i:ze,ze=J_(ze),oe=oe===void 0?s:oe,Vs=EA,xs=J.LOG_NAMES.INSTALL,ks=ut.join(Vs,xs);return}throw Lr("Error initializing log settings"),Lr(t),t}tc()}a(ec,"initLogSettings");var oa=!0;function tc(){zt("error",Lr),zt("warn",Ea),zt("log",Ys),zt("info",Ys),zt("debug",la),zt("trace",ua)}a(tc,"setupConsoleLogging");function zt(e,t){console[e]=function(...r){if(oa&&t(...r),!/PM2 log:|App \[/.test(r[0]))return z_[e](...r)}}a(zt,"logConsole");function TA(e){let t={tagName:e.replace(/ /g,"-")};return{notify:r(sc),fatal:r(nc),error:r(Lr),warn:r(Ea),info:r(Ys),debug:r(la),trace:r(ua)};function r(s){return function(...n){return s(t,...n)}}}a(TA,"loggerWithTag");function SA(e){try{oa=!1,e()}finally{oa=!0}}a(SA,"suppressLogging");var fA=cA?.name?.replace(/ /g,"-")||"main";function je(e,t){let r=new Date(Date.now()).toISOString(),s="",n=t.length,i=n-1,o=[e],_=0,c;for(typeof t[0]=="object"&&(t[0]?.tagName?(o.push(t[0]?.tagName),_++):t[0]?.serviceName&&(c=t[0]?.serviceName,_++)),o.unshift(c||fA+"/"+uA);_<n;_++){let u=t[_];u instanceof Error&&u.stack?s+=u.stack:typeof u=="object"?s+=JSON.stringify(u):s+=u,_<i&&(s+=" ")}return`${r} [${o.join("] [")}]: ${s}
3
+ `}a(je,"createLogRecord");function Ur(e){Ze&&rc(e),ze&&process.stdout.write(e)}a(Ur,"logStdOut");function $s(e){Ze&&rc(e),ze&&process.stderr.write(e)}a($s,"logStdErr");function rc(e){mA(),jt.appendFileSync(wr,e)}a(rc,"logToFile");function ca(){try{jt.closeSync(wr)}catch{}wr=null}a(ca,"closeLogFile");function mA(){wr||(wr=jt.openSync(ks,"a"),setTimeout(()=>{ca()},hA).unref())}a(mA,"openLogFile");function Ys(...e){_e[oe]<=_e.info&&Ur(je("info",e))}a(Ys,"info");function ua(...e){_e[oe]<=_e.trace&&Ur(je("trace",e))}a(ua,"trace");function Lr(...e){_e[oe]<=_e.error&&$s(je("error",e))}a(Lr,"error");function la(...e){_e[oe]<=_e.debug&&Ur(je("debug",e))}a(la,"debug");function sc(...e){_e[oe]<=_e.notify&&Ur(je("notify",e))}a(sc,"notify");function nc(...e){_e[oe]<=_e.fatal&&$s(je("fatal",e))}a(nc,"fatal");function Ea(...e){_e[oe]<=_e.warn&&$s(je("warn",e))}a(Ea,"warn");function AA(e,t,...r){t===j_.STDERR?$s(je(e,r)):Ur(je(e,r))}a(AA,"logCustomLevel");function RA(){let e;try{e=lA.homedir()}catch{e=process.env.HOME}e||(e="~/");let t=ut.join(e,J.HDB_HOME_DIR_NAME,J.BOOT_PROPS_FILE_NAME);return jt.existsSync(t)||(t=ut.join(_a,"utility/hdb_boot_properties.file")),t}a(RA,"getPropsFilePath");function gA(e){oe=e}a(gA,"setLogLevel");function J_(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}a(J_,"autoCastBoolean");function NA(e){try{if(e.includes("config/settings.js")){let o=Z_(e);return{level:o.get(J.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY),config_log_path:ut.dirname(o.get(J.HDB_SETTINGS_NAMES.LOG_PATH_KEY)),to_file:o.get(J.HDB_SETTINGS_NAMES.LOG_TO_FILE),to_stream:o.get(J.HDB_SETTINGS_NAMES.LOG_TO_STDSTREAMS)}}let t=X_.parseDocument(jt.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===J.NODE_ERROR_CODES.ENOENT)throw t;console.error("Error accessing config file for logging"),console.error(t)}}a(NA,"getLogConfig");function pA(){try{let e=X_.parseDocument(jt.readFileSync(dA,"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)}}a(pA,"getDefaultConfig")});var oc=T((pP,ac)=>{"use strict";var OA=require("util"),IA=require("path"),bA=require("child_process"),CA=OA.promisify(bA.execFile),yA=1e3*1e3*10;ac.exports={findPs:MA};async function MA(e){let t={};try{await Promise.all(["comm","args","ppid","uid","%cpu","%mem"].map(async r=>{let{stdout:s}=await CA("ps",["wwxo",`pid,${r}`],{maxBuffer:yA});for(let n of s.trim().split(`
4
+ `).slice(1)){n=n.trim();let[i]=n.split(" ",1),o=n.slice(i.length+1).trim();t[i]===void 0&&(t[i]={}),t[i][r]=o}}))}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:IA.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"])}))}a(MA,"findPs")});var ee=T((IP,cc)=>{"use strict";var wA="__dbis__",LA="__environment_name__",UA="__dbi_defintion__",DA={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"},PA=["__createdtime__","__updatedtime__"],HA="\uFFFF",_c={TIMESTAMP:"timestamp",HASH_VALUE:"hash_value",USER_NAME:"user_name"},BA=Object.values(_c);cc.exports={INTERNAL_DBIS_NAME:wA,DBI_DEFINITION_NAME:UA,SEARCH_TYPES:DA,TIMESTAMP_NAMES:PA,MAX_SEARCH_KEY_LENGTH:256,ENVIRONMENT_NAME_KEY:LA,TRANSACTIONS_DBI_NAMES_ENUM:_c,TRANSACTIONS_DBIS:BA,OVERFLOW_MARKER:HA}});var be=T((bP,mc)=>{"use strict";var uc=f(),lc=ee(),Ec={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},dc=a(e=>`${e} Check logs and try again.`,"CHECK_LOGS_WRAPPER"),hc={500:dc("There was an error processing your request."),400:"Invalid request"},vA=hc[Ec.INTERNAL_SERVER_ERROR],GA={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.`},qA={CONFIG_VALIDATION:e=>`HarperDB config file validation error: ${e}`},FA={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"},xA={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_ITERABLE:"ids must be iterable",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 ${lc.INTERNAL_DBIS_NAME}`,CANNOT_DROP_INTERNAL_DBIS_NAME:`cannot drop a dbi named ${lc.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"},VA={ATTR_NAME_LENGTH_ERR:e=>`transaction aborted due to attribute name ${e} being too long. Attribute names cannot be longer than ${uc.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 ${uc.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"},Tc={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"},kA={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."},YA={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`},$A={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"},KA={OUTER_JOIN_TRANSLATION_ERROR:"There was an error translating the final SQL outer join data."},WA={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`},Sc={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.`},fc={INVALID_ITC_DATA_TYPE:"Invalid ITC event data type, must be an object",MISSING_TYPE:"ITC event missing 'type'",MISSING_MSG:"ITC event missing 'message'",MISSING_ORIGIN:"ITC event message missing 'originator' property",INVALID_EVENT:e=>`ITC server received invalid event type: ${e}`},QA={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."},JA={CLUSTERING_NOT_ENABLED:"Clustering must be enabled to perform this operation."},XA={...Tc,...FA,...GA,...kA,...YA,...$A,...KA,...WA,...VA,...Sc,...fc,...QA,...JA,...qA};mc.exports={CHECK_LOGS_WRAPPER:dc,HDB_ERROR_MSGS:XA,DEFAULT_ERROR_MSGS:hc,DEFAULT_ERROR_RESP:vA,HTTP_STATUS_CODES:Ec,LMDB_ERRORS_ENUM:xA,AUTHENTICATION_ERROR_MSGS:Tc,VALIDATION_ERROR_MSGS:Sc,ITC_ERRORS:fc}});var V=T((yP,gc)=>{"use strict";var er=be(),ZA=N(),zA=f(),Dr=class extends Error{constructor(t,r,s,n,i){super(),Error.captureStackTrace(this,Ac),this.http_resp_code=s||er.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR,this.http_resp_msg=r||(er.DEFAULT_ERROR_MSGS[s]?er.DEFAULT_ERROR_MSGS[s]:er.DEFAULT_ERROR_MSGS[er.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR]),this.message=t.message?t.message:this.http_resp_msg,this.type=t.name,n&&(this.logLevel=n),typeof this.message!="string"&&(this.stack=t.stack),i&&ZA[n](i)}};a(Dr,"HdbError");function Ac(e,t,r,s=zA.LOG_LEVELS.ERROR,n=null,i=!1){if(Rc(e))return e;let o=new Dr(e,t,r,s,n);return i&&delete o.stack,o}a(Ac,"handleHDBError");function Rc(e){return e.__proto__.constructor.name===Dr.name}a(Rc,"isHDBError");gc.exports={isHDBError:Rc,handleHDBError:Ac,hdb_errors:er}});var p=T((LP,Hc)=>{"use strict";var Mt=require("path"),jA=require("fs-extra"),re=N(),Nc=require("fs-extra"),Pr=require("os"),eR=require("net"),tR=require("recursive-iterator"),te=f(),bc=oc(),pc=require("papaparse"),Ks=require("moment"),{inspect:rR}=require("util"),Oc=require("is-number"),wP=require("lodash"),{hdb_errors:Ws}=V(),Cc=require("util").promisify(setTimeout),sR=100,nR=5,iR="",aR=4,Ic={true:!0,false:!1,undefined:null,null:null,NaN:NaN};Hc.exports={isEmpty:me,isEmptyOrZeroLength:Ve,arrayHasEmptyValues:cR,arrayHasEmptyOrZeroLengthValues:uR,buildFolderPath:lR,isBoolean:yc,errorizeMessage:oR,stripFileExtension:dR,autoCast:hR,autoCastJSON:Mc,autoCastJSONDeep:da,removeDir:TR,compareVersions:SR,isCompatibleDataVersion:fR,escapeRawValue:mR,unescapeValue:AR,stringifyProps:RR,timeoutPromise:NR,isClusterOperation:OR,getClusterUser:bR,checkGlobalSchemaTable:IR,getHomeDir:Lc,getPropsFilePath:gR,promisifyPapaParse:CR,removeBOM:Uc,createEventPromise:yR,checkProcessRunning:MR,checkSchemaTableExist:wR,checkSchemaExists:Dc,checkTableExists:Pc,getStartOfTomorrowInSeconds:LR,getLimitKey:UR,isObject:ER,isNotEmptyAndHasValue:_R,autoCasterIsNumberCheck:wc,backtickASTSchemaItems:DR,isPortTaken:pR,stopProcess:PR,createForkArgs:HR,autoCastBoolean:BR,async_set_timeout:Cc,getTableHashAttribute:vR,doesSchemaExist:GR,doesTableExist:qR,stringifyObj:FR,ms_to_time:xR,changeExtension:VR,PACKAGE_ROOT:te.PACKAGE_ROOT};function oR(e){return e instanceof Error?e:new Error(e)}a(oR,"errorizeMessage");function me(e){return e==null}a(me,"isEmpty");function _R(e){return!me(e)&&(e||e===0||e===""||yc(e))}a(_R,"isNotEmptyAndHasValue");function Ve(e){return me(e)||e.length===0||e.size===0}a(Ve,"isEmptyOrZeroLength");function cR(e){if(me(e))return!0;for(let t=0;t<e.length;t++)if(me(e[t]))return!0;return!1}a(cR,"arrayHasEmptyValues");function uR(e){if(Ve(e))return!0;for(let t=0;t<e.length;t++)if(Ve(e[t]))return!0;return!1}a(uR,"arrayHasEmptyOrZeroLengthValues");function lR(...e){try{return e.join(Mt.sep)}catch{console.error(e)}}a(lR,"buildFolderPath");function yc(e){return me(e)?!1:e===!0||e===!1}a(yc,"isBoolean");function ER(e){return me(e)?!1:typeof e=="object"}a(ER,"isObject");function dR(e){return Ve(e)?iR:e.slice(0,-aR)}a(dR,"stripFileExtension");function hR(e){return me(e)||e===""||typeof e!="string"?e:Ic[e]!==void 0?Ic[e]:wc(e)===!0?Number(e):e}a(hR,"autoCast");function Mc(e){if(typeof e=="string"&&(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")))try{return JSON.parse(e)}catch{}return e}a(Mc,"autoCastJSON");function da(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=da(s);n!==s&&(e[t]=n)}else for(let t in e){let r=e[t],s=da(r);s!==r&&(e[t]=s)}return e}else return Mc(e)}a(da,"autoCastJSONDeep");function wc(e){if(e.startsWith("0.")&&Oc(e))return!0;let t=e.toUpperCase().includes("E");return!!((e!=="0"&&e.startsWith("0"))===!1&&t===!1&&Oc(e))}a(wc,"autoCasterIsNumberCheck");async function TR(e){if(Ve(e))throw new Error(`Directory path: ${e} does not exist`);try{await Nc.emptyDir(e),await Nc.remove(e)}catch(t){throw re.error(`Error removing files in ${e} -- ${t}`),t}}a(TR,"removeDir");function SR(e,t){if(Ve(e)){re.info("Invalid current version sent as parameter.");return}if(Ve(t)){re.info("Invalid upgrade version sent as parameter.");return}let r,s=/(\.0+)+$/,n=e.version?e.version:e,i=t.version?t.version:t,o=n.replace(s,"").split("."),_=i.replace(s,"").split("."),c=Math.min(o.length,_.length);for(let u=0;u<c;u++)if(r=parseInt(o[u],10)-parseInt(_[u],10),r)return r;return o.length-_.length}a(SR,"compareVersions");function fR(e,t,r=!1){let s=e.toString().split("."),n=t.toString().split(".");return s[0]===n[0]&&(!r||s[1]===n[1])}a(fR,"isCompatibleDataVersion");function mR(e){if(me(e))return e;let t=String(e);return t==="."?te.UNICODE_PERIOD:t===".."?te.UNICODE_PERIOD+te.UNICODE_PERIOD:t.replace(te.FORWARD_SLASH_REGEX,te.UNICODE_FORWARD_SLASH)}a(mR,"escapeRawValue");function AR(e){if(me(e))return e;let t=String(e);return t===te.UNICODE_PERIOD?".":t===te.UNICODE_PERIOD+te.UNICODE_PERIOD?"..":String(e).replace(te.ESCAPED_FORWARD_SLASH_REGEX,"/")}a(AR,"unescapeValue");function RR(e,t){if(me(e))return re.info("Properties object is null"),"";let r="";return e.each(function(s,n){try{if(t&&t[s]){let i=t[s];for(let o of i)r+=";"+o+Pr.EOL}!Ve(s)&&s[0]===";"?r+=" "+s+n+Pr.EOL:Ve(s)||(r+=s+"="+n+Pr.EOL)}catch{re.error(`Found bad property during upgrade with key ${s} and value: ${n}`)}}),r}a(RR,"stringifyProps");function Lc(){let e;try{e=Pr.homedir()}catch{e=process.env.HOME}return e||(e="~/"),e}a(Lc,"getHomeDir");function gR(){let e=Mt.join(Lc(),te.HDB_HOME_DIR_NAME,te.BOOT_PROPS_FILE_NAME);return jA.existsSync(e)||(e=Mt.join(__dirname,"../","hdb_boot_properties.file")),e}a(gR,"getPropsFilePath");function NR(e,t){let r,s;return s=new Promise(function(n){r=setTimeout(function(){n(t)},e)}),{promise:s,cancel:function(){clearTimeout(r)}}}a(NR,"timeoutPromise");async function pR(e){if(!e)throw new Error("Invalid port passed as parameter");return new Promise((t,r)=>{let s=eR.createServer().once("error",n=>{n.code==="EADDRINUSE"?t(!0):r(n)}).once("listening",()=>s.once("close",()=>t(!1)).close()).listen(e)})}a(pR,"isPortTaken");function OR(e){try{return te.CLUSTER_OPERATIONS[e.toLowerCase()]!==void 0}catch(t){re.error(`Error checking operation against cluster ops ${t}`)}return!1}a(OR,"isClusterOperation");function IR(e,t){if(!global.hdb_schema[e])return Ws.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e);if(!global.hdb_schema[e]||!global.hdb_schema[e][t])return Ws.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}a(IR,"checkGlobalSchemaTable");function bR(e,t){if(me(t)){re.warn("No CLUSTERING_USER defined, clustering disabled");return}if(me(e)||Ve(e)){re.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){re.error(`unable to find cluster_user due to: ${s.message}`);return}if(r===void 0){re.warn(`CLUSTERING_USER: ${t} not found or is not active.`);return}return r}a(bR,"getClusterUser");function CR(){pc.parsePromise=function(e,t){return new Promise(function(r,s){pc.parse(e,{header:!0,transformHeader:Uc,chunk:t.bind(null,s),skipEmptyLines:!0,dynamicTyping:!0,error:s,complete:r})})}}a(CR,"promisifyPapaParse");function Uc(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);return e.charCodeAt(0)===65279?e.slice(1):e}a(Uc,"removeBOM");function yR(e,t,r){return new Promise(s=>{t.once(e,n=>{let i=r;re.info(`Got cluster status event response: ${rR(n)}`);try{i.cancel()}catch{re.error("Error trying to cancel timeout.")}s(n)})})}a(yR,"createEventPromise");async function MR(e){let t=!0,r=0;do await Cc(sR*r++),(await bc.findPs(e)).length>0&&(t=!1);while(t&&r<nR);if(t)throw new Error(`process ${e} was not started`)}a(MR,"checkProcessRunning");function wR(e,t){let r=Dc(e);if(r)return r;let s=Pc(e,t);if(s)return s}a(wR,"checkSchemaTableExist");function Dc(e){if(!global.hdb_schema[e])return Ws.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}a(Dc,"checkSchemaExists");function Pc(e,t){if(!global.hdb_schema[e][t])return Ws.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}a(Pc,"checkTableExists");function LR(){let e=Ks().utc().add(1,te.MOMENT_DAYS_TAG).startOf(te.MOMENT_DAYS_TAG).unix(),t=Ks().utc().unix();return e-t}a(LR,"getStartOfTomorrowInSeconds");function UR(){return Ks().utc().format("DD-MM-YYYY")}a(UR,"getLimitKey");function DR(e){try{let t=new tR(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){re.error("Got an error back ticking items."),re.error(t)}}a(DR,"backtickASTSchemaItems");async function PR(e){let t=Pr.userInfo();(await bc.findPs(e)).forEach(s=>{(t.uid==0||s.uid==t.uid)&&(process.kill(s.pid),re.trace(`Following process was killed by stopProcess: ${s.cmd}`))})}a(PR,"stopProcess");function HR(e){return[e]}a(HR,"createForkArgs");function BR(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}a(BR,"autoCastBoolean");function vR(e,t){return global.hdb_schema?.[e]?.[t]?.hash_attribute}a(vR,"getTableHashAttribute");function GR(e){return global?.hdb_schema?.[e]!==void 0}a(GR,"doesSchemaExist");function qR(e,t){return global?.hdb_schema?.[e]?.[t]!==void 0}a(qR,"doesTableExist");function FR(e){try{return JSON.stringify(e)}catch{return e}}a(FR,"stringifyObj");function xR(e){let t=Ks.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}a(xR,"ms_to_time");function VR(e,t){let r=Mt.basename(e,Mt.extname(e));return Mt.join(Mt.dirname(e),r+t)}a(VR,"changeExtension")});var vc=T((DP,Bc)=>{"use strict";var kR={key:"-----BEGIN RSA PRIVATE KEY-----\rMIIEowIBAAKCAQEArBFJQRfFiJku/KwhV1Ssp7cX61vvuKmd4Rp6A9jB2QLgx8nj\r/+Xhp2hPRkISnOA8BuAxr4dMD9syGJwX4kNy9mbZ5Q0fWZCiEGBpVcU1J+k+N5K4\rSuZ2SqgxeN2IN2RLzt3GyQY4imcdHgNv7aHoXUrEwBx0MeYEw3IIDXtrYKCR2D8I\rvWBfwMUgWa24G8lpWILWA5hd9srRz9NxlAiHSjhbgT7B0xruEpHRCHSyKjvaIJVt\rWBR+amejYsAKVrD/hgrqjsA1123Y6++YqvU6vwg64xhS2kz5r3dkNKhvwbWgpZdI\rIaRvsiB77f4kLGo0vi8RFgJ1ZRjGg3RRK2w1LQIDAQABAoIBAQCEOmh78EOpnGZC\rYBjjHrvrysVD5gvLcfVUtl8Ls7gMB60re1eOIF+PoZZCHKZnDd6zPfiQtj1adg0C\rYnnsM/8VoaZS4gm0b3RLd3ubIQifWhuo40RissY2yxfxlPSH9LhZCY8ojnJG0cTL\resK579E8WCfopjUY33XLqEbN7Ylv39J+DSqInjqV3efJZUa+HqUJ98VxxzodcKMD\rP3bwUU4gHoSSp4pAsOFH5sQhaIWH1IcNjrAwpee2cJQuh4G157RRIuuUpagtaEG/\rXJIiAyBguJyu3JQFnIBQF01N5+omJgXYJ1L0m54543/iIRThmF3zDCDgCyUzmOk+\rH6As9fv1AoGBANOpOtOZLSAScjGsgJamT3ceJ2wCa86g2j8Oxu8lJUmUp5s3tA0v\rBFW5O3S4KR1EXwkLMBUMrfFM8YvzHWxsXBI6XV8azGLvyqPHxr65OhmpGYkGZMXu\rn9okgjkqlewnY2I073gvyK7ppX51UL5y9fF1vlsk+UlW+Rgx/vMHbdcjAoGBANAc\rxRUsxs4QJpbS4zD3JOkHjr24a97TrS3kCybAHUMpR2NrEHPZw9zex0/aphOJUHfL\rIMkOZdpfDqMfxWy4FAEmqBEMkO2SB+h0Wp4P+qp81ax4vGFiB0cD3wtixr11U1tt\rlZ/ZTdv4VDpDFNK1KaplhTDeyuCjeYfS3/GJia9vAoGAcOsAgjBevZR5rXx84WH6\rVO8WUu37u7FenXNxt9VWTinrPMh72uixZFY8nOk+rely1e1NCn3IMko9Ns9NbDFm\r8SaH95vhXArXTYbfxZIlp9jp0YtCqcHDL+p4Oq04bFMbFyJseu7rHj1x18QYfnHw\rOY/6LL/N6k1m+Hx7qgXVmIcCgYB/w0nTCBw84XlvWqSTqQaF8VfWbWP79mP5KmkW\rLxdH5g2noVEGbohqDnK6OXd/wusdwByukiJBf94Skyy25AOT+VFwthA7aU1ljhkb\rtJ+lDuJ28eBkwLPLCzthWBC+u0qjdJFJAzVjd/7tjcU43nNn4s90AzL12iaAFhvZ\rwyA+DQKBgGc/4cdyGJ3YkcA8150gQBawgJZ7q8V1JND87ggWA8wnK3cHn7rMZQl2\r3emDp9HEFXFex5dbGDDqZFAoesZCDxjknIn9oNfW4PvaWS8q7b6ZKLZG1p03Pu7/\rtYaD0kPbo0kysfFT/co+NgHbdykvIyboomfGdNLTUjYuy6lpwpvs\r-----END RSA PRIVATE KEY-----\r".replace(/\r/g,String.fromCharCode(13,10)),cert:"-----BEGIN CERTIFICATE-----\rMIIDXDCCAkSgAwIBAgIFNTE4MzQwDQYJKoZIhvcNAQELBQAwXTEXMBUGA1UEAxMO\rSGFycGVyREIsIEluYy4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UE\rBxMGRGVudmVyMRcwFQYDVQQKEw5IYXJwZXJEQiwgSW5jLjAeFw0yMjAzMTEyMzAz\rNDlaFw0yNzAzMTAyMzAzNDlaMF0xFzAVBgNVBAMTDkhhcnBlckRCLCBJbmMuMQsw\rCQYDVQQGEwJVUzELMAkGA1UECBMCQ08xDzANBgNVBAcTBkRlbnZlcjEXMBUGA1UE\rChMOSGFycGVyREIsIEluYy4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\rAQCsEUlBF8WImS78rCFXVKyntxfrW++4qZ3hGnoD2MHZAuDHyeP/5eGnaE9GQhKc\r4DwG4DGvh0wP2zIYnBfiQ3L2ZtnlDR9ZkKIQYGlVxTUn6T43krhK5nZKqDF43Yg3\rZEvO3cbJBjiKZx0eA2/toehdSsTAHHQx5gTDcggNe2tgoJHYPwi9YF/AxSBZrbgb\ryWlYgtYDmF32ytHP03GUCIdKOFuBPsHTGu4SkdEIdLIqO9oglW1YFH5qZ6NiwApW\rsP+GCuqOwDXXbdjr75iq9Tq/CDrjGFLaTPmvd2Q0qG/BtaCll0ghpG+yIHvt/iQs\rajS+LxEWAnVlGMaDdFErbDUtAgMBAAGjIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYD\rVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4IBAQASR4YW/rPK7PNArHVe9zzM\rb0rKNX/2T9/0nybRhmE/+hdlSgliTAeebmwkUS2APckmekYt/q2ZY2NS65Fo/jjp\rG8TJrtcF4h+ylVqUp0ZXQLFtIsr7r2JZA7hJ6njW6G4DHSZ0gxtECLi4CBlTjzm5\rNmnmIDObvGRTuqmcdAZmXeObbta/He2XIzietukPAYX062pNM+G5XT5UM1eG/Vlp\rN86vjhpyI+ffKy+C60SJqxmKM3ydgN7oLscE7+2wLPN25XqN4W99OwGsp5dTdu/f\r5lPtFayXdJ55e/sNQKmGN+UGLrL05c2MWgjb8U/LFilnupUianceoeSERZmVjzKX\r-----END CERTIFICATE-----\r".replace(/\r/g,String.fromCharCode(13,10))},YR="certificate.pem",$R="privateKey.pem",KR="ca.pem";Bc.exports={CERTIFICATE_VALUES:kR,CERTIFICATE_PEM_NAME:YR,PRIVATEKEY_PEM_NAME:$R,CA_PEM_NAME:KR}});var Pe=T((PP,Gc)=>{"use strict";var ce=require("validate.js");ce.validators.type=function(e,t,r,s){return e===null||typeof e>"u"||ce.validators.type.checks[t](e)?null:` must be a '${t}' value`};ce.validators.type.checks={Object:function(e){return ce.isObject(e)&&!ce.isArray(e)},Array:ce.isArray,Integer:ce.isInteger,Number:ce.isNumber,String:ce.isString,Date:ce.isDate,Boolean:function(e){return typeof e=="boolean"}};ce.validators.hasValidFileExt=function(e,t){return ce.isString(e)?e===""?"can't be blank":t.filter(r=>e.endsWith(r)).length>0?null:`must include one of the following valid file extensions - '${t.join("', '")}'`:null};Gc.exports={validateObject:WR,validateObjectAsync:QR,validateBySchema:JR};function WR(e,t){if(!e||!t)return new Error("validateObject parameters were null");let r=ce(e,t,{format:"flat"});return r?new Error(r):null}a(WR,"validateObject");async function QR(e,t){if(!e||!t)return new Error("validateObject parameters were null");try{await ce.async(e,t,{format:"flat"})}catch(r){let s=r.join(",");return new Error(s)}return null}a(QR,"validateObjectAsync");function JR(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(JR,"validateBySchema")});var kc=T((vP,Vc)=>{"use strict";var XR=require("fs-extra"),C=require("joi"),ZR=require("os"),{boolean:k,string:et,number:He,array:ha}=C.types(),{totalmem:qc}=require("os"),Hr=require("path"),zR=N(),Js=p(),BP=vc(),jR=f(),eg=Pe(),Fc="log",tg="custom_functions",rg="Invalid logging.rotation.maxSize unit. Available units are G, M or K",sg="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",ng="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",ig="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",ag="rootPath config parameter is undefined",og="clustering.enabled config parameter is undefined",wt=He.min(0).required(),Xs=ha.items({host:et.required(),port:wt}).empty(null),lt;Vc.exports={configValidator:_g,routesValidator:hg,route_constraints:Xs};function _g(e){if(lt=e.rootPath,Js.isEmpty(lt))throw ag;let t=k.required(),r=C.valid("production","development").required(),s=He.min(1).max(1e3).empty(null).default(dg),n=et.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(Qs),i=C.custom(cg).messages({"any.custom":"{:#label} {:#error}"}),o=et.pattern(/^[^\s.,*>]+$/).messages({"string.pattern.base":"{:#label} invalid, must not contain ., * or >"}).empty(null).required(),_=C.string().empty(null).default(Qs),c=C.custom(ug).empty(null).default(Qs),u=e.clustering?.enabled;if(Js.isEmpty(u))throw og;let l;return u===!0?l=C.object({enabled:t,hubServer:C.object({cluster:C.object({name:C.required().empty(null),network:C.object({port:wt,routes:Xs}).required()}).required(),leafNodes:C.object({network:C.object({port:wt}).required()}).required(),network:C.object({port:wt}).required()}).required(),leafServer:C.object({network:C.object({port:wt,routes:Xs}).required(),streams:C.object({maxAge:He.min(120).allow(null).optional(),maxBytes:He.min(1).allow(null).optional(),maxMsgs:He.min(1).allow(null).optional(),path:_}).required()}).required(),logLevel:C.valid("error","warn","info","debug","trace"),nodeName:o,republishMessages:k.optional(),tls:C.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:k.required(),verify:k.optional()}),user:et.optional().empty(null)}).required():l=C.object({enabled:t,tls:C.object({certificate:i,certificateAuthority:i,privateKey:i,insecure:k.required()})}).required(),C.object({clustering:l,customFunctions:C.object({enabled:t,network:C.object({cors:k.required(),corsAccessList:ha.required(),headersTimeout:He.min(1).required(),https:k.required(),keepAliveTimeout:He.min(1).required(),port:wt,timeout:He.min(1).required()}),nodeEnv:r,root:n,tls:C.object({certificate:i,certificateAuthority:i,privateKey:i})}).required(),localStudio:C.object({enabled:t}).required(),logging:C.object({file:k.required(),level:C.valid("notify","fatal","error","warn","info","debug","trace"),rotation:C.object({enabled:k.optional(),compress:k.optional(),interval:et.custom(Eg).optional().empty(null),maxSize:et.custom(lg).optional().empty(null),path:et.optional().empty(null).default(Qs)}).required(),root:n,stdStreams:k.required(),auditLog:k.required()}).required(),operationsApi:C.object({authentication:C.object({operationTokenTimeout:C.required(),refreshTokenTimeout:C.required()}).required(),foreground:k.required(),network:C.object({cors:k.required(),corsAccessList:ha.required(),headersTimeout:He.min(1).required(),https:k.required(),keepAliveTimeout:He.min(1).required(),port:wt,timeout:He.min(1).required()}).required(),nodeEnv:r,tls:C.object({certificate:i,certificateAuthority:i,privateKey:i})}).required(),rootPath:et.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path").required(),http:C.object({threads:s}).required(),storage:C.object({writeAsync:k.required(),overlappingSync:k.optional(),caching:k.optional(),compression:k.optional(),noReadAhead:k.optional(),path:c,prefetchWrites:k.optional()}).required()}).validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}})}a(_g,"configValidator");function xc(e){return XR.existsSync(e)?null:`Specified path ${e} does not exist.`}a(xc,"doesPathExist");function cg(e,t){if(e===null)return;let r=xc(e);return r?t.message(r):e}a(cg,"validatePemFile");function ug(e,t){C.assert(e,et.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=xc(e);if(r)return t.message(r)}a(ug,"validatePath");function lg(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(rg);let s=e.slice(0,-1);return isNaN(parseInt(s))?t.message(ng):e}a(lg,"validateRotationMaxSize");function Eg(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(sg);let s=e.slice(0,-1);return isNaN(parseInt(s))?t.message(ig):e}a(Eg,"validateRotationInterval");function dg(e,t){let r=t.state.path.join("."),s=ZR.cpus().length,n=s-1;n<=2&&(n=2);let i=process.constrainedMemory?.()||qc();return i=Math.round(Math.min(i,qc())/1e6),n=Math.max(Math.min(n,Math.round((i-750)/300)),1),zR.info(`Detected ${s} cores and ${i}MB on this machine, defaulting ${r} to ${n}`),n}a(dg,"setDefaultThreads");function Qs(e,t){if(!Js.isEmpty(t.original))return t.original;let r=t.state.path.join(".");if(Js.isEmpty(lt))throw new Error(`Error setting default root for: ${r}. HDB root is not defined`);switch(r){case"customFunctions.root":return Hr.join(lt,tg);case"logging.root":return Hr.join(lt,Fc);case"clustering.leafServer.streams.path":return Hr.join(lt,"clustering","leaf");case"storage.path":return Hr.join(lt,jR.SCHEMA_DIR_NAME);case"logging.rotation.path":return Hr.join(lt,Fc);default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(Qs,"setDefaultRoot");function hg(e){let t=C.object({routes:Xs});return eg.validateBySchema({routes:e},t)}a(hg,"routesValidator")});var js=T((qP,jc)=>{"use strict";var ye=f(),Ae=p(),Q=N(),{configValidator:Tg,routesValidator:Yc}=kc(),Ce=require("fs-extra"),Sg=require("yaml"),ke=require("path"),fg=require("is-number"),Kc=require("properties-reader"),mg=require("lodash"),{handleHDBError:Ag}=V(),{HTTP_STATUS_CODES:Rg,HDB_ERROR_MSGS:Zs}=be(),gg=require("minimist"),{SCHEMAS_PARAM_CONFIG:Br,CONFIG_PARAMS:Et,CONFIG_PARAM_MAP:tt}=ye,Ng="Unable to get config value because config is uninitialized",pg="Config successfully initialized",Og="Error backing up config file",Ig="Empty parameter sent to getConfigValue",Wc=ke.join(ye.PACKAGE_ROOT,"config","yaml",ye.HDB_DEFAULT_CONFIG_FILE),bg="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",$c={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"},zs,Z;jc.exports={createConfigFile:Cg,getDefaultConfig:yg,getConfigValue:Jc,initConfig:Xc,flattenConfig:Lt,updateConfigValue:Zc,updateConfigObject:wg,getConfiguration:Dg,setConfiguration:Pg,readConfigFile:ma,getClusteringRoutes:Hg,initOldConfig:zc,getConfigFromFile:Bg};function Cg(e){let t=tr(Wc);zs=Lt(t.toJSON());let r;for(let o in e){let _=tt[o.toLowerCase()];if(_===Et.SCHEMAS){r=e[o];continue}if(_!==void 0){let c=_.split("_"),u=Ta(_,e[o]);try{t.setIn([...c],u)}catch(l){Q.error(l)}}}r&&Qc(t,r),fa(t);let s=t.toJSON();Z=Lt(s);let n=t.getIn(["rootPath"]),i=ke.join(n,ye.HDB_CONFIG_FILE);Ce.createFileSync(i),Ce.writeFileSync(i,String(t)),Q.trace(`Config file written to ${i}`)}a(Cg,"createConfigFile");function Qc(e,t){let r;try{try{r=JSON.parse(t)}catch(s){if(!Ae.isObject(t))throw s;r=t}for(let s of r){let n=Object.keys(s)[0];if(s[n].hasOwnProperty(Br.TABLES))for(let i in s[n][Br.TABLES])for(let o in s[n][Br.TABLES][i]){let _=s[n][Br.TABLES][i][o],c=[Et.SCHEMAS,n,Br.TABLES,i,o];e.hasIn(c)?e.setIn(c,_):e.addIn(c,_)}else for(let i in s[n]){let o=s[n][i],_=[Et.SCHEMAS,n,i];e.hasIn(_)?e.setIn(_,o):e.addIn(_,o)}}}catch(s){Q.error("Error parsing schemas CLI/env config arguments",s)}}a(Qc,"setSchemasConfig");function yg(e){if(zs===void 0){let r=tr(Wc);zs=Lt(r.toJSON())}let t=tt[e.toLowerCase()];if(t!==void 0)return zs[t.toLowerCase()]}a(yg,"getDefaultConfig");function Jc(e){if(Ae.isEmpty(e)){Q.error(Ig);return}if(Z===void 0){Q.trace(Ng);return}let t=tt[e.toLowerCase()];if(t!==void 0)return Z[t.toLowerCase()]}a(Jc,"getConfigValue");function Sa(e){let t=gg(process.argv);return t.ROOTPATH?ke.join(t.ROOTPATH,ye.HDB_CONFIG_FILE):Kc(e).get(ye.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY)}a(Sa,"getConfigFilePath");function Xc(e=!1){if(Z===void 0||e){let t=Ae.getPropsFilePath();try{Ce.accessSync(t,Ce.constants.F_OK|Ce.constants.R_OK)}catch(i){throw Q.error(i),new Error(`HarperDB properties file at path ${t} does not exist`)}let r=Sa(t),s;if(r.includes("config/settings.js"))try{zc(r);return}catch(i){if(i.code!==ye.NODE_ERROR_CODES.ENOENT)throw i}try{s=tr(r)}catch(i){if(i.code===ye.NODE_ERROR_CODES.ENOENT){Q.trace(`HarperDB config file not found at ${r}.
5
+ This can occur during early stages of install where the config file has not yet been created`);return}else throw Q.error(i),new Error(`Error reading HarperDB config file at ${r}`)}Mg(s,r),fa(s);let n=s.toJSON();if(Z=Lt(n),Z.logging_rotation_rotate)for(let i in $c)Z[i]&&Q.error(`Config ${$c[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);Q.trace(pg)}}a(Xc,"initConfig");function Mg(e,t){let r=e.getIn(["rootPath"]),s=!1;e.hasIn(["storage","path"])||(e.setIn(["storage","path"],ke.join(r,ye.SCHEMA_DIR_NAME)),s=!0),e.hasIn(["clustering","leafServer","streams","path"])||(e.setIn(["clustering","leafServer","streams","path"],ke.join(r,"clustering","leaf")),s=!0),e.hasIn(["logging","rotation","path"])||(e.setIn(["logging","rotation","path"],ke.join(r,"log")),s=!0),e.hasIn(["clustering","tls","verify"])||(e.setIn(["clustering","tls","verify"],!0),s=!0),s&&(Q.trace("Updating config file with missing config params"),Ce.writeFileSync(t,String(e)))}a(Mg,"checkForUpdatedConfig");function fa(e){let t=e.toJSON(),r=Tg(t);if(r.error)throw Zs.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(["storage","path"],r.value.storage.path),e.setIn(["logging","rotation","path"],r.value.logging.rotation.path),e.setIn(["clustering","leafServer","streams","path"],r.value.clustering.leafServer.streams.path)}a(fa,"validateConfig");function wg(e,t){Z===void 0&&(Z={});let r=tt[e.toLowerCase()];if(r===void 0){Q.trace(`Unable to update config object because config param '${e}' does not exist`);return}Z[r.toLowerCase()]=t}a(wg,"updateConfigObject");function Zc(e,t,r=void 0,s=!1,n=!1){Z===void 0&&Xc();let i=Jc(tt.hdb_root),o=ke.join(i,ye.HDB_CONFIG_FILE),_=tr(o),c;if(r===void 0&&e.toLowerCase()===Et.SCHEMAS)c=t;else if(r===void 0){let E=tt[e.toLowerCase()];if(E===void 0)throw new Error(`Unable to update config, unrecognized config parameter: ${e}`);let h=E.split("_"),d=Ta(E,t);_.setIn([...h],d)}else for(let E in r){let h=tt[E.toLowerCase()];if(h===Et.SCHEMAS){c=r[E];continue}if(h!==void 0){let d=h.split("_"),A=Ta(h,r[E]);try{_.setIn([...d],A)}catch(R){Q.error(R)}}}c&&Qc(_,c),fa(_);let u=_.getIn(["rootPath"]),l=ke.join(u,ye.HDB_CONFIG_FILE);s===!0&&Lg(o,u),Ce.writeFileSync(l,String(_)),n&&(Z=Lt(_.toJSON())),Q.trace(`Config parameter: ${e} updated with value: ${t}`)}a(Zc,"updateConfigValue");function Lg(e,t){try{let r=ke.join(t,"backup",`${ye.HDB_CONFIG_FILE}.bak`);Ce.copySync(e,r),Q.trace(`Config file: ${e} backed up to: ${r}`)}catch(r){Q.error(Og),Q.error(r)}}a(Lg,"backupConfigFile");var Ug=["schemas"];function Lt(e){let t={};for(let r in e)if(e.hasOwnProperty(r))if(typeof e[r]=="object"&&e[r]!==null&&!Array.isArray(e[r])&&!Ug.includes(r)){let s=Lt(e[r]);for(let n in s)s.hasOwnProperty(n)&&(t[r.toLowerCase()+"_"+n]=s[n])}else t[r.toLowerCase()]=e[r];return t}a(Lt,"flattenConfig");function Ta(e,t){if(e===Et.CLUSTERING_NODENAME||e===Et.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(fg(t))return parseFloat(t);if(t===!0||t===!1||Array.isArray(t)||Ae.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 Ae.autoCast(t)}a(Ta,"castConfigValue");function Dg(){let e=Ae.getPropsFilePath(),t=Sa(e);return tr(t).toJSON()}a(Dg,"getConfiguration");async function Pg(e){let{operation:t,hdb_user:r,hdb_auth_header:s,...n}=e;try{return Zc(void 0,void 0,n,!0),bg}catch(i){throw typeof i=="string"||i instanceof String?Ag(i,i,Rg.BAD_REQUEST,void 0,void 0,!0):i}}a(Pg,"setConfiguration");function ma(){let e=Ae.getPropsFilePath();try{Ce.accessSync(e,Ce.constants.F_OK|Ce.constants.R_OK)}catch(s){throw Q.error(s),new Error(`HarperDB properties file at path ${e} does not exist`)}let t=Sa(e);return tr(t).toJSON()}a(ma,"readConfigFile");function tr(e){return Sg.parseDocument(Ce.readFileSync(e,"utf8"),{simpleKeys:!0})}a(tr,"parseYamlDoc");function Hg(){let e=ma(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=Ae.isEmptyOrZeroLength(t)?[]:t;let r=Yc(t);if(r)throw Zs.CONFIG_VALIDATION(r.message);let s=e?.clustering?.leafServer?.network?.routes;s=Ae.isEmptyOrZeroLength(s)?[]:s;let n=Yc(s);if(n)throw Zs.CONFIG_VALIDATION(n.message);if(!Ae.isEmptyOrZeroLength(s)&&!Ae.isEmptyOrZeroLength(t)){let i=t.filter(o=>s.some(_=>_.host===o.host&&_.port===o.port));if(!Ae.isEmptyOrZeroLength(i)){let o=`Duplicate hub and leaf routes found ${JSON.stringify(i)}`;throw Zs.CONFIG_VALIDATION(o)}}return{hub_routes:t,leaf_routes:s}}a(Hg,"getClusteringRoutes");function zc(e){let t=Kc(e);Z={};for(let r in tt){let s=t.get(r.toUpperCase());if(Ae.isEmpty(s)||typeof s=="string"&&s.trim().length===0)continue;let n=tt[r].toLowerCase();n===Et.LOGGING_ROOT?Z[n]=ke.dirname(s):Z[n]=s}return Z}a(zc,"initOldConfig");function Bg(e){let t=ma();return mg.get(t,e.replaceAll("_","."))}a(Bg,"getConfigFromFile")});var $=T((xP,tu)=>{"use strict";var Aa=require("fs-extra"),Ye=require("path"),vg=require("os"),Gg=require("properties-reader"),vr=N(),rr=p(),O=f(),en=js(),qg="Error initializing environment manager",tn="BOOT_PROPS_FILE_PATH",eu=!1,Fg={[O.HDB_SETTINGS_NAMES.INSTALL_USER]:!0,[O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]:!0,[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]:!0,BOOT_PROPS_FILE_PATH:!0},rt={};tu.exports={BOOT_PROPS_FILE_PATH:tn,getHdbBasePath:xg,setHdbBasePath:Vg,get:kg,initSync:$g,setProperty:U,initTestEnvironment:Kg};function xg(){return rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]}a(xg,"getHdbBasePath");function Vg(e){rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=e}a(Vg,"setHdbBasePath");function kg(e){let t=en.getConfigValue(e);return t===void 0?rt[e]:t}a(kg,"get");function U(e,t){Fg[e]&&(rt[e]=t),en.updateConfigObject(e,t)}a(U,"setProperty");function Yg(){let e;try{e=rr.getPropsFilePath(),Aa.accessSync(e,Aa.constants.F_OK|Aa.constants.R_OK),eu=!0;let t=Gg(e);return rt[O.HDB_SETTINGS_NAMES.INSTALL_USER]=t.get(O.HDB_SETTINGS_NAMES.INSTALL_USER),rt[O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY]=t.get(O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY),rt[tn]=e,!0}catch{return vr.trace(`Environment manager found no properties file at ${e}`),!1}}a(Yg,"doesPropFileExist");function $g(e=!1){try{(eu||Yg())&&(en.initConfig(e),rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=en.getConfigValue(O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY))}catch(t){vr.error(qg),vr.error(t),console.error(t),process.exit(1)}}a($g,"initSync");function Kg(e={}){try{let{keep_alive_timeout:t,headers_timeout:r,server_timeout:s,https_enabled:n,cors_enabled:i,cors_accesslist:o,local_studio_on:_}=e,c=Ye.join(__dirname,"../../","unitTests");rt[tn]=Ye.join(c,"hdb_boot_properties.file"),U(O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY,Ye.join(c,"settings.test")),U(O.HDB_SETTINGS_NAMES.INSTALL_USER,vg.userInfo().username),U(O.HDB_SETTINGS_NAMES.PRIVATE_KEY_KEY,Ye.join(c,"envDir","utility","keys","privateKey.pem")),U(O.HDB_SETTINGS_NAMES.CERT_KEY,Ye.join(c,"envDir","utility","keys","certificate.pem")),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_PRIVATEKEY,Ye.join(c,"envDir","utility","keys","privateKey.pem")),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_CERTIFICATE,Ye.join(c,"envDir","utility","keys","certificate.pem")),U(O.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY,"debug"),U(O.HDB_SETTINGS_NAMES.LOG_PATH_KEY,Ye.join(c,"envDir","log")),U(O.HDB_SETTINGS_NAMES.LOG_DAILY_ROTATE_KEY,!1),U(O.HDB_SETTINGS_NAMES.CLUSTERING_ENABLED_KEY,!0),U(O.HDB_SETTINGS_NAMES.CLUSTERING_NODE_NAME_KEY,"1231412de213"),U(O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY,Ye.join(c,"envDir")),U(O.HDB_SETTINGS_NAMES.HTTP_SECURE_ENABLED_KEY,rr.isEmpty(n)?!0:n),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HTTPS,rr.isEmpty(n)?!0:n),U(O.HDB_SETTINGS_NAMES.SERVER_PORT_KEY,9925),U(O.HDB_SETTINGS_NAMES.CORS_ENABLED_KEY,rr.isEmpty(i)?!1:i),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORS,rr.isEmpty(i)?!1:i),U(O.HDB_SETTINGS_NAMES.MAX_CUSTOM_FUNCTION_PROCESSES,2),U(O.HDB_SETTINGS_NAMES.MAX_HDB_PROCESSES,4),U(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_PORT_KEY,9926),U(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_ENABLED_KEY,!0),U(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_DIRECTORY_KEY,Ye.resolve(__dirname,"../../unitTests/server/customFunctions/custom_functions")),U(O.HDB_SETTINGS_NAMES.LOCAL_STUDIO_ON,rr.isEmpty(_)?!1:_),o&&(U("CORS_ACCESSLIST",o),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORSACCESSLIST,o)),s&&(U(O.HDB_SETTINGS_NAMES.SERVER_TIMEOUT_KEY,s),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_TIMEOUT,s)),t&&(U(O.HDB_SETTINGS_NAMES.SERVER_KEEP_ALIVE_TIMEOUT_KEY,t),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_KEEPALIVETIMEOUT,t)),r&&(U(O.HDB_SETTINGS_NAMES.SERVER_HEADERS_TIMEOUT_KEY,r),U(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HEADERSTIMEOUT,r))}catch(t){let r=`Error reading in HDB environment variables from path ${tn}. Please check your boot props and settings files`;vr.fatal(r),vr.error(t)}}a(Kg,"initTestEnvironment")});var Ut=T((YP,su)=>{"use strict";var{platform:kP}=require("os"),Wg="nats-server.zip",Ra="nats-server",Qg=process.platform==="win32"?`${Ra}.exe`:Ra,ga="HDB",Jg=/^[^\s.,*>]+$/,ru="__request__",Xg=a(e=>`${e}.${ru}`,"REQUEST_SUBJECT"),Zg={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin"},zg={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},jg={HUB:"hub.pid",LEAF:"leaf.pid"},eN={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},tN={stream_name:"__HARPERDB_WORK_QUEUE__",durable_name:"HDB_WORK_QUEUE",deliver_group:ga,deliver_subject:"__HDB__.WORKQUEUE"},rN={stream_name:"__HARPERDB_SCHEMA_QUEUE__",durable_name:"HDB_SCHEMA_QUEUE",deliver_group:ga,deliver_subject:"HDB.SCHEMAQUEUE"},sN={stream_name:"__HARPERDB_USER_QUEUE__",durable_name:"HDB_USER_QUEUE",deliver_group:ga,deliver_subject:"HDB.USERQUEUE"},nN={SUCCESS:"success",ERROR:"error"},iN={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},aN={TXN:"txn",MSGID:"msgid"},sr={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},oN={[sr.ERR]:1,[sr.WRN]:2,[sr.INF]:3,[sr.DBG]:4,[sr.TRC]:5},_N={debug:"-D",trace:"-DVV"};su.exports={NATS_SERVER_ZIP:Wg,NATS_SERVER_NAME:Ra,NATS_BINARY_NAME:Qg,PID_FILES:jg,NATS_CONFIG_FILES:zg,SERVER_SUFFIX:eN,WORK_QUEUE_CONSUMER_NAMES:tN,SCHEMA_QUEUE_CONSUMER_NAMES:rN,USER_QUEUE_CONSUMER_NAMES:sN,NATS_TERM_CONSTRAINTS_RX:Jg,REQUEST_SUFFIX:ru,UPDATE_REMOTE_RESPONSE_STATUSES:nN,CLUSTER_STATUS_STATUSES:iN,REQUEST_SUBJECT:Xg,SUBJECT_PREFIXES:aN,MSG_HEADERS:Zg,LOG_LEVELS:sr,LOG_LEVEL_FLAGS:_N,LOG_LEVEL_HIERARCHY:oN}});var rn=T((KP,ou)=>{"use strict";var Gr=require("crypto"),iu="aes-256-cbc",cN=32,uN=16,Na=64,au=32,lN=Na+au,nu=new Map;ou.exports={encrypt:EN,decrypt:dN,createNatsTableStreamName:hN};function EN(e){let t=Gr.randomBytes(cN),r=Gr.randomBytes(uN),s=Gr.createCipheriv(iu,Buffer.from(t),r),n=s.update(e);n=Buffer.concat([n,s.final()]);let i=t.toString("hex"),o=r.toString("hex"),_=n.toString("hex");return i+o+_}a(EN,"encrypt");function dN(e){let t=e.substr(0,Na),r=e.substr(Na,au),s=e.substr(lN,e.length),n=Buffer.from(r,"hex"),i=Buffer.from(s,"hex"),o=Gr.createDecipheriv(iu,Buffer.from(t,"hex"),n),_=o.update(i);return _=Buffer.concat([_,o.final()]),_.toString()}a(dN,"decrypt");function hN(e,t){let r=`${e}.${t}`,s=nu.get(r);return s||(s=Gr.createHash("md5").update(`${e}.${t}`).digest("hex"),nu.set(r,s)),s}a(hN,"createNatsTableStreamName")});var pa=T((QP,_u)=>{"use strict";var sn=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")}};a(sn,"BridgeMethods");_u.exports=sn});var Dt=T((zP,hu)=>{"use strict";var cu=be().LMDB_ERRORS_ENUM,XP=require("lmdb"),TN=ee(),ZP=require("buffer").Buffer,{OVERFLOW_MARKER:uu,MAX_SEARCH_KEY_LENGTH:nn}=TN,lu=["number","string","symbol","boolean","bigint"];function SN(e){if(e=e?.database||e,!e)throw new Error(cu.ENV_REQUIRED);if(e.constructor.name!=="LMDBStore")throw new Error(cu.INVALID_ENVIRONMENT)}a(SN,"validateEnv");function fN(e){if(e==null)return null;let t;try{t=typeof e=="object"?JSON.stringify(e):e.toString()}catch{t=e.toString()}return t}a(fN,"stringifyData");function mN(e){return e instanceof Date?e.valueOf():e}a(mN,"convertKeyValueToWrite");function AN(e){if(e==null)return;if(lu.includes(typeof e))return e.length>nn?[e.slice(0,nn)+uu]:[e];let t;if(Array.isArray(e)){t=[];for(let r=0,s=e.length;r<s;r++){let n=e[r];lu.includes(typeof n)&&(n.length>nn?t.push(n.slice(0,nn)+uu):t.push(n))}}return t}a(AN,"getIndexedValues");var an=0,Eu=0;function du(){Eu=Date.now()-performance.now()}a(du,"adjustStartTime");du();var RN=6e4;setInterval(du,RN).unref();function gN(){let e=performance.now()+Eu;return e>an?(an=e,e):(an+=488e-6,an)}a(gN,"getNextMonotonicTime");hu.exports={validateEnv:SN,stringifyData:fN,convertKeyValueToWrite:mN,getNextMonotonicTime:gN,getIndexedValues:AN}});var Su=T((eH,Tu)=>{"use strict";var on=class{constructor(t=!1,r=!1){this.dup_sort=t,this.is_hash_attribute=r,this.useVersions=r}};a(on,"DBIDefinition");Tu.exports=on});var Au=T((rH,mu)=>{"use strict";var Oa=$(),fu=f();Oa.initSync();var NN=Oa.get(fu.CONFIG_PARAMS.STORAGE_COMPRESSION),pN=Oa.get(fu.CONFIG_PARAMS.STORAGE_CACHING)!==!1,_n=class{constructor(t,r=!1){this.dupSort=t===!0,this.encoding=t?"ordered-binary":"msgpack",this.useVersions=r,this.compression=NN&&r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=pN&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0)}};a(_n,"OpenDBIObject");mu.exports=_n});var Nu=T((nH,gu)=>{"use strict";var nr=$(),qr=f();nr.initSync();var ON=nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",Ru=nr.get(qr.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC),IN=nr.get(qr.CONFIG_PARAMS.STORAGE_NOREADAHEAD),cn=class{constructor(t,r=!1){this.path=t,this.mapSize=1073741824,this.maxDbs=1e4,this.maxReaders=1e3,this.sharedStructuresKey=Symbol.for("structures"),this.readOnly=r,this.trackMetrics=!0,this.noSync=ON,Ru!==void 0&&(this.overlappingSync=Ru),this.noReadAhead=IN}};a(cn,"OpenEnvironmentObject");gu.exports=cn});var B=T((aH,Mu)=>{"use strict";var Ia=require("lmdb"),Me=require("fs-extra"),Be=require("path"),ln=Dt(),pu=N(),z=be().LMDB_ERRORS_ENUM,En=Su(),ba=Au(),Ou=Nu(),dt=ee(),ve=dt.INTERNAL_DBIS_NAME,Iu=dt.DBI_DEFINITION_NAME,bN="data.mdb",CN="lock.mdb",Fr=".mdb",yN="-lock",un=class{constructor(t,r,s=!1){this.dbi=we(t,r),this.key_type=this.dbi[dt.DBI_DEFINITION_NAME].key_type,this.is_hash_attribute=this.dbi[dt.DBI_DEFINITION_NAME].is_hash_attribute,this.txn=t.beginTxn({readOnly:s===!1}),this.cursor=new Ia.Cursor(this.txn,this.dbi)}close(){this.cursor.close(),this.txn.abort()}commit(){this.cursor.close(),this.txn.commit()}};a(un,"TransactionCursor");function Ca(e,t){if(e===void 0)throw new Error(z.BASE_PATH_REQUIRED);if(t===void 0)throw new Error(z.ENV_NAME_REQUIRED)}a(Ca,"pathEnvNameValidation");async function ya(e,t,r=!0){try{await Me.access(e)}catch(s){throw s.code==="ENOENT"?new Error(z.INVALID_BASE_PATH):s}try{let s=Be.join(e,t+Fr);return await Me.access(s,Me.constants.R_OK|Me.constants.F_OK),s}catch(s){if(s.code==="ENOENT")if(r)try{return await Me.access(Be.join(e,t,bN),Me.constants.R_OK|Me.constants.F_OK),Be.join(e,t)}catch(n){if(n.code==="ENOENT")throw new Error(z.INVALID_ENVIRONMENT)}else throw new Error(z.INVALID_ENVIRONMENT);throw s}}a(ya,"validateEnvironmentPath");function dn(e,t){if(ln.validateEnv(e),t===void 0)throw new Error(z.DBI_NAME_REQUIRED)}a(dn,"validateEnvDBIName");async function MN(e,t,r=!1,s=!1){Ca(e,t),t=t.toString();try{return await ya(e,t,s),Ma(e,t,r)}catch(n){if(n.message===z.INVALID_ENVIRONMENT){let i=Be.join(e,t);await Me.mkdirp(s?i:e);let o=new Ou(s?i:i+Fr,!1),_=Ia.open(o);_.dbis=Object.create(null);let c=new ba(!1);_.openDB(ve,c),global.lmdb_map===void 0&&(global.lmdb_map=Object.create(null));let u=wa(e,t,r);return _[dt.ENVIRONMENT_NAME_KEY]=u,global.lmdb_map[u]=_,_}throw n}}a(MN,"createEnvironment");async function wN(e,t,r,s=!0){let n=await Ma(e,t);if(r===void 0)throw new Error(z.DESTINATION_PATH_REQUIRED);try{await Me.access(Be.dirname(r))}catch(i){throw i.code==="ENOENT"?new Error(z.INVALID_DESTINATION_PATH):i}await n.backup(r,s)}a(wN,"copyEnvironment");async function Ma(e,t,r=!1){Ca(e,t),t=t.toString();let s=wa(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 ya(e,t),i=Be.join(e,t+Fr),o=n!=i,_=new Ou(n,o),c=Ia.open(_);c.dbis=Object.create(null);let u=Cu(c);for(let l=0;l<u.length;l++)we(c,u[l]);return c[dt.ENVIRONMENT_NAME_KEY]=s,global.lmdb_map[s]=c,c}a(Ma,"openEnvironment");async function LN(e,t,r=!1){Ca(e,t),t=t.toString();let s=Be.join(e,t+Fr),n=await ya(e,t);if(global.lmdb_map!==void 0){let i=wa(e,t,r);if(global.lmdb_map[i]){let o=global.lmdb_map[i];await bu(o),delete global.lmdb_map[i]}}await Me.remove(n),await Me.remove(n===s?n+yN:Be.join(Be.dirname(n),CN))}a(LN,"deleteEnvironment");async function bu(e){ln.validateEnv(e);let t=e[dt.ENVIRONMENT_NAME_KEY];await e.close(),t!==void 0&&global.lmdb_map!==void 0&&delete global.lmdb_map[t]}a(bu,"closeEnvironment");function wa(e,t,r=!1){let n=`${Be.basename(e)}.${t}`;return r===!0&&(n=`txn.${n}`),n}a(wa,"getCachedEnvironmentName");function UN(e){ln.validateEnv(e);let t=Object.create(null),r=we(e,ve);for(let{key:s,value:n}of r.getRange({start:!1}))if(s!==ve)try{t[s]=Object.assign(new En,n)}catch{pu.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return t}a(UN,"listDBIDefinitions");function Cu(e){ln.validateEnv(e);let t=[],r=we(e,ve);for(let{key:s}of r.getRange({start:!1}))s!==ve&&t.push(s);return t}a(Cu,"listDBIs");function DN(e,t){let s=we(e,ve).getEntry(t),n=new En;if(s!==void 0){try{n=Object.assign(n,s.value)}catch{pu.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return n}}a(DN,"getDBIDefinition");function yu(e,t,r,s=!1){if(dn(e,t),t=t.toString(),t===ve)throw new Error(z.CANNOT_CREATE_INTERNAL_DBIS_NAME);try{return we(e,t)}catch(n){if(n.message===z.DBI_DOES_NOT_EXIST){let i=new ba(r,s===!0),o=e.openDB(t,i),_=new En(r===!0,s);return o[Iu]=_,we(e,ve).putSync(t,_),e.dbis[t]=o,o}throw n}}a(yu,"createDBI");function we(e,t){if(dn(e,t),t=t.toString(),e.dbis[t]!==void 0)return e.dbis[t];let r;if(t!==ve?r=DN(e,t):r=new En,r===void 0)throw new Error(z.DBI_DOES_NOT_EXIST);let s;try{let n=new ba(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(z.DBI_DOES_NOT_EXIST):n}return s[Iu]=r,e.dbis[t]=s,s}a(we,"openDBI");function PN(e,t){dn(e,t),t=t.toString();let r=we(e,t),s=r.getStats();return r[dt.DBI_DEFINITION_NAME].is_hash_attribute&&s.entryCount>0&&s.entryCount--,s}a(PN,"statDBI");async function HN(e,t){try{let r=Be.join(e,t+Fr);return(await Me.stat(r)).size}catch{throw new Error(z.INVALID_ENVIRONMENT)}}a(HN,"environmentDataSize");function BN(e,t){if(dn(e,t),t=t.toString(),t===ve)throw new Error(z.CANNOT_DROP_INTERNAL_DBIS_NAME);we(e,t).dropSync(),e.dbis!==void 0&&delete e.dbis[t],we(e,ve).removeSync(t)}a(BN,"dropDBI");function vN(e,t,r){for(let s=0;s<r.length;s++){let n=r[s];if(!e.dbis[n])try{we(e,n)}catch(i){if(i.message===z.DBI_DOES_NOT_EXIST)yu(e,n,n!==t,n===t);else throw i}}}a(vN,"initializeDBIs");Mu.exports={openDBI:we,openEnvironment:Ma,createEnvironment:MN,listDBIs:Cu,listDBIDefinitions:UN,createDBI:yu,dropDBI:BN,statDBI:PN,deleteEnvironment:LN,initializeDBIs:vN,TransactionCursor:un,environmentDataSize:HN,copyEnvironment:wN,closeEnvironment:bu}});var Lu=T((_H,wu)=>{"use strict";var hn=class{constructor(t=[],r=[],s=void 0){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=s}};a(hn,"InsertRecordsResponseObject");wu.exports=hn});var Du=T((uH,Uu)=>{"use strict";var Tn=class{constructor(t=[],r=[],s=void 0,n=[]){this.written_hashes=t,this.skipped_hashes=r,this.txn_time=s,this.original_records=n}};a(Tn,"UpdateRecordsResponseObject");Uu.exports=Tn});var Hu=T((EH,Pu)=>{"use strict";var Sn=class{constructor(t=[],r=void 0,s=[]){this.written_hashes=t,this.txn_time=r,this.original_records=s}};a(Sn,"UpsertRecordsResponseObject");Pu.exports=Sn});var ir=T((fH,Gu)=>{"use strict";var GN=B(),qN=Lu(),FN=Du(),xN=Hu(),$e=Dt(),xr=be().LMDB_ERRORS_ENUM,VN=ee(),st=f(),kN=p(),YN=require("uuid"),hH=require("lmdb"),{handleHDBError:$N,hdb_errors:KN}=V(),{OVERFLOW_MARKER:TH,MAX_SEARCH_KEY_LENGTH:SH}=VN,Bu=$();Bu.initSync();var fn=Bu.get(st.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),La=st.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Pt=st.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function WN(e,t,r,s,n=$e.getNextMonotonicTime()){Ha(e,t,r,s),Ua(e,t,r);let i=new qN,o=[],_=[];for(let c=0;c<s.length;c++){let u=s[c];vu(u,!0,n);let l=QN(e,t,r,u),E=u[t];o.push(l),_.push(E)}return Da(o,_,s,i,n)}a(WN,"insertRecords");function QN(e,t,r,s){let n=s[t];return e.dbis[t].ifNoExists(n,()=>{for(let i=0;i<r.length;i++){let o=r[i];if(o===t||s.hasOwnProperty(o)===!1)continue;let _=s[o];if(typeof _=="function"){let l=_([[{}]]);Array.isArray(l)&&(_=l[0][st.FUNC_VAL],s[o]=_)}let c=$e.getIndexedValues(_),u=e.dbis[o];if(c){fn&&u.prefetch(c.map(l=>({key:l,value:n})),mn);for(let l=0,E=c.length;l<E;l++)u.put(c[l],n)}}fn&&e.dbis[t].prefetch([n],mn),e.dbis[t].put(n,s,s[Pt])})}a(QN,"insertRecord");function JN(e,t=[]){let r=0;for(let s=0;s<t.length;s++){let n=t[s];e.splice(n-r,1),r++}}a(JN,"removeSkippedRecords");function vu(e,t,r){let s=r>0;(s||!Number.isInteger(e[Pt]))&&(e[Pt]=r||(r=$e.getNextMonotonicTime())),t===!0?(s||!Number.isInteger(e[La]))&&(e[La]=r||$e.getNextMonotonicTime()):delete e[La]}a(vu,"setTimestamps");function Ua(e,t,r){r.indexOf(st.TIME_STAMP_NAMES_ENUM.CREATED_TIME)<0&&r.push(st.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.indexOf(st.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)<0&&r.push(st.TIME_STAMP_NAMES_ENUM.UPDATED_TIME),GN.initializeDBIs(e,t,r)}a(Ua,"initializeTransaction");async function XN(e,t,r,s,n=$e.getNextMonotonicTime()){Ha(e,t,r,s),Ua(e,t,r);let i=new FN,o=[],_=[],c=[];for(let u=0;u<s.length;u++){let l=s[u],E=l[t],h;try{h=Pa(e,t,l,E,i,!0,n)}catch{i.skipped_hashes.push(E),o.push(u);continue}_.push(h),c.push(E)}return Da(_,c,s,i,n,o)}a(XN,"updateRecords");async function ZN(e,t,r,s,n=$e.getNextMonotonicTime()){try{Ha(e,t,r,s)}catch(c){throw $N(c,c.message,KN.HTTP_STATUS_CODES.BAD_REQUEST)}Ua(e,t,r);let i=new xN,o=[],_=[];for(let c=0;c<s.length;c++){let u=s[c],l;kN.isEmpty(u[t])?(l=YN.v4(),u[t]=l):l=u[t];let E=Pa(e,t,u,l,i,!1,n);o.push(E),_.push(l)}return Da(o,_,s,i,n)}a(ZN,"upsertRecords");async function Da(e,t,r,s,n,i=[]){let o=await Promise.all(e);for(let _=0,c=o.length;_<c;_++)o[_]===!0?s.written_hashes.push(t[_]):(s.skipped_hashes.push(t[_]),i.push(_));return s.txn_time=n||$e.getNextMonotonicTime(),JN(r,i),s}a(Da,"finalizeWrite");function Pa(e,t,r,s,n,i=!1,o){let _=e.dbis[t],c=_.getEntry(s),u=c?.value,l=u;if(!u){if(i)return!1;u={}}if(vu(r,!l,o),Number.isInteger(r[Pt])&&u[Pt]>r[Pt])return!1;l&&n.original_records.push(u);let E,h=a(()=>{for(let A in r){if(!r.hasOwnProperty(A)||A===t)continue;let R=r[A],M=e.dbis[A];if(M===void 0)continue;let W=u[A];if(typeof R=="function"){let F=R([[u]]);Array.isArray(F)&&(R=F[0][st.FUNC_VAL],r[A]=R)}if(R===W)continue;let x=$e.getIndexedValues(W);if(x){fn&&M.prefetch(x.map(F=>({key:F,value:s})),mn);for(let F=0,Xe=x.length;F<Xe;F++)M.remove(x[F],s)}if(x=$e.getIndexedValues(R),x){fn&&M.prefetch(x.map(F=>({key:F,value:s})),mn);for(let F=0,Xe=x.length;F<Xe;F++)M.put(x[F],s)}}let d=Object.assign({},u,r);_.put(s,d,d[Pt])},"do_put");return c?E=_.ifVersion(s,c.version,h):E=_.ifNoExists(s,h),E.then(d=>d?!0:Pa(e,t,r,s,n,i,o))}a(Pa,"updateUpsertRecord");function zN(e,t,r){if($e.validateEnv(e),t===void 0)throw new Error(xr.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(xr.WRITE_ATTRIBUTES_REQUIRED):new Error(xr.WRITE_ATTRIBUTES_MUST_BE_ARRAY)}a(zN,"validateBasic");function Ha(e,t,r,s){if(zN(e,t,r),!Array.isArray(s))throw s===void 0?new Error(xr.RECORDS_REQUIRED):new Error(xr.RECORDS_MUST_BE_ARRAY)}a(Ha,"validateWrite");function mn(){}a(mn,"noop");Gu.exports={insertRecords:WN,updateRecords:XN,upsertRecords:ZN}});var q=T((AH,Yu)=>{"use strict";var Kr=f(),jN=p(),ue=$(),Wr=require("path"),ep=require("minimist"),qu=require("fs-extra"),Fu=require("lodash");ue.initSync();var{CONFIG_PARAMS:ht,SCHEMAS_PARAM_CONFIG:Vr,SYSTEM_SCHEMA_NAME:An}=Kr,kr,Yr,$r;function xu(){if(kr!==void 0)return kr;if(ue.getHdbBasePath()!==void 0)return kr=ue.get(ht.STORAGE_PATH)||Wr.join(ue.getHdbBasePath(),Kr.SCHEMA_DIR_NAME),kr}a(xu,"getBaseSchemaPath");function Vu(){if(Yr!==void 0)return Yr;if(ue.getHdbBasePath()!==void 0)return Yr=ku(An),Yr}a(Vu,"getSystemSchemaPath");function tp(){if($r!==void 0)return $r;if(ue.getHdbBasePath()!==void 0)return $r=ue.get(Kr.CONFIG_PARAMS.STORAGE_AUDIT_PATH)||Wr.join(ue.getHdbBasePath(),Kr.TRANSACTIONS_DIR_NAME),$r}a(tp,"getTransactionAuditStoreBasePath");function rp(e,t){let r=ue.get(ht.SCHEMAS)?.[e];return t&&r?.tables?.[t]?.auditPath||r?.auditPath||Wr.join(tp(),e.toString())}a(rp,"getTransactionAuditStorePath");function ku(e,t){e=e.toString(),t=t&&t.toString();let r=ue.get(Kr.CONFIG_PARAMS.SCHEMAS)?.[e];return t&&r?.tables?.[t]?.path||r?.path||Wr.join(xu(),e)}a(ku,"getSchemaPath");function sp(e,t){e=e.toString(),t=t.toString();let r=process.env;Object.assign(r,ep(process.argv));let s=r[ht.SCHEMAS.toUpperCase()];if(s){let i;try{i=JSON.parse(s)}catch(o){if(!jN.isObject(s))throw o;i=s}for(let o of i){let _=o[An];if(!_)continue;let c=ue.get(ht.SCHEMAS);c=c??{};let u=_?.tables?.[t]?.[Vr.PATH];if(u)return Fu.set(c,[An,Vr.TABLES,t,Vr.PATH],u),ue.setProperty(ht.SCHEMAS,c),u;let l=_?.[Vr.PATH];if(l)return Fu.set(c,[An,Vr.PATH],l),ue.setProperty(ht.SCHEMAS,c),l}}let n=r[ht.STORAGE_PATH.toUpperCase()];if(n){if(!qu.pathExistsSync(n))throw new Error(n+" does not exist");let i=Wr.join(n,e);return qu.mkdirsSync(i),ue.setProperty(ht.STORAGE_PATH,n),i}return Vu()}a(sp,"initSystemSchemaPaths");function np(){kr=void 0,Yr=void 0,$r=void 0}a(np,"resetPaths");Yu.exports={getBaseSchemaPath:xu,getSystemSchemaPath:Vu,getTransactionAuditStorePath:rp,getSchemaPath:ku,initSystemSchemaPaths:sp,resetPaths:np}});var Ht=T((gH,ip)=>{ip.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 ar=T((NH,Wu)=>{"use strict";var Ku=p(),$u=f(),gn=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,Ba=require("joi"),Rn={schema_format:{pattern:gn,message:"names cannot include backticks or forward slashes"},schema_length:{minimum:1,maximum:250,tooLong:"cannot exceed 250 characters"}},ap=Ba.alternatives(Ba.string().min(1).max(Rn.schema_length.maximum).pattern(gn).messages({"string.pattern.base":"{:#label} "+Rn.schema_format.message}),Ba.number()).required();function op(e,t){return t?typeof t!="string"?`'${e}' must be a string`:t.length?t.length>Rn.schema_length.maximum?`'${e}' maximum of 250 characters`:gn.test(t)?"":`'${e}' has illegal characters`:`'${e}' must be at least one character`:`'${e}' is required`}a(op,"checkValidTable");function _p(e,t){return Ku.doesSchemaExist(e)?e:t.message(`Schema '${e}' does not exist`)}a(_p,"validateSchemaExists");function cp(e,t){let r=t.state.ancestors[0].schema;return Ku.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(cp,"validateTableExists");function up(e,t){return e.toLowerCase()===$u.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid schema name, '${$u.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(up,"validateSchemaName");Wu.exports={common_validators:Rn,schema_regex:gn,hdb_schema_table:ap,validateSchemaExists:_p,validateTableExists:cp,validateSchemaName:up,checkValidTable:op}});var Nn=T((OH,Qu)=>{var{common_validators:Tt}=ar(),Qr=Pe(),Ge="is required",v={schema:{presence:!0,format:Tt.schema_format,length:Tt.schema_length},table:{presence:!0,format:Tt.schema_format,length:Tt.schema_length},attribute:{presence:!0,format:Tt.schema_format,length:Tt.schema_length},hash_attribute:{presence:!0,format:Tt.schema_format,length:Tt.schema_length}};function Jr(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}a(Jr,"makeAttributesStrings");function lp(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence=!1,v.attribute.presence=!1,v.hash_attribute.presence=!1,Qr.validateObject(e,v)}a(lp,"schema_object");function Ep(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence={message:Ge},v.attribute.presence=!1,v.hash_attribute.presence=!1,Qr.validateObject(e,v)}a(Ep,"table_object");function dp(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence={message:Ge},v.attribute.presence=!1,v.hash_attribute.presence={message:Ge},Qr.validateObject(e,v)}a(dp,"create_table_object");function hp(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence={message:Ge},v.attribute.presence={message:Ge},v.hash_attribute.presence=!1,Qr.validateObject(e,v)}a(hp,"attribute_object");function Tp(e){return e=Jr(e),v.schema.presence={message:Ge},v.table.presence={message:Ge},v.attribute.presence=!1,v.hash_attribute.presence=!1,Qr.validateObject(e,v)}a(Tp,"describe_table");function Sp(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`)}}a(Sp,"validateTableResidence");Qu.exports={schema_object:lp,create_table_object:dp,table_object:Ep,attribute_object:hp,describe_table:Tp,validateTableResidence:Sp}});var Xu=T((bH,Ju)=>{"use strict";var fp=require("uuid"),pn=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.attribute=s,this.id=n||fp.v4(),this.schema_table=`${this.schema}.${this.table}`}};a(pn,"CreateAttributeObject");Ju.exports=pn});var In=T((yH,Zu)=>{"use strict";var mp=Xu(),On=class extends mp{constructor(t,r,s,n,i=!0,o=!1){super(t,r,s,n),this.dup_sort=i,this.is_hash_attribute=o}};a(On,"LMDBCreateAttributeObject");Zu.exports=On});var ju=T((wH,zu)=>{"use strict";zu.exports=Rp;var Ap="inserted";function Rp(e,t,r,s){let n={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:s};return e===Ap?(n.inserted_hashes=t,n):(n.update_hashes=t,n)}a(Rp,"returnObject")});var bn=T((UH,nl)=>{"use strict";var gp=f(),va=B(),Np=ir(),{getSystemSchemaPath:pp,getSchemaPath:Op}=q(),Ip=Ht(),bp=Nn(),Cp=In(),yp=ju(),{handleHDBError:el,hdb_errors:rl}=V(),tl=p(),{HTTP_STATUS_CODES:Mp}=rl,Ga=Ip.hdb_attribute,sl=[];for(let e=0;e<Ga.attributes.length;e++)sl.push(Ga.attributes[e].attribute);var wp="inserted";nl.exports=Lp;async function Lp(e){let t=bp.attribute_object(e);if(t)throw el(new Error,t.message,rl.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0);let r=!e.skip_table_check&&tl.checkGlobalSchemaTable(e.schema,e.table);if(r)throw el(new Error,r,Mp.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=tl.isEmpty(e.dup_sort)||e.dup_sort=="true";let s=[];if(global.hdb_schema[e.schema]&&global.hdb_schema[e.schema][e.table]&&(s=global.hdb_schema[e.schema][e.table].attributes),Array.isArray(s)&&s.length>0){for(let i of s)if(i.attribute===e.attribute)throw new Error(`attribute '${i.attribute}' already exists in ${e.schema}.${e.table}`)}let n=new Cp(e.schema,e.table,e.attribute,e.id);try{let i=await va.openEnvironment(Op(e.schema,e.table),e.table);if(i.dbis[e.attribute]!==void 0)throw new Error(`attribute '${e.attribute}' already exists in ${e.schema}.${e.table}`);va.createDBI(i,e.attribute,e.dup_sort,e.is_hash_attribute);let o=await va.openEnvironment(pp(),gp.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:_,skipped_hashes:c}=await Np.insertRecords(o,Ga.hash_attribute,sl,[n]);return yp(wp,_,{records:[n]},c)}catch(i){throw i}}a(Lp,"lmdbCreateAttribute")});var Fa=T((PH,al)=>{var{hdb_schema_table:il}=ar(),Up=Pe(),qa=require("joi"),Dp={undefined:"undefined",null:"null"},Pp=a((e,t)=>{let r=Object.keys(e),s=r.length,n;for(let i=0;i<s;i++){let o=r[i];(!o||o.length===0||Dp[o]!==void 0)&&(n===void 0?n=`Invalid attribute name: '${o}'`:n+=`. Invalid attribute name: '${o}'`)}return n?t.message(n):e},"custom_records_val"),Hp=qa.object({schema:il,table:il,records:qa.array().items(qa.object().custom(Pp)).required()});al.exports=function(e){return Up.validateBySchema(e,Hp)}});var Cn=T((vH,_l)=>{"use strict";var nt=p(),ol=N(),BH=Fa();_l.exports=Bp;function Bp(e){if(nt.isEmpty(e))throw new Error("invalid update parameters defined.");if(nt.isEmptyOrZeroLength(e.schema))throw new Error("invalid schema specified.");if(nt.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(nt.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(o=>{if(i&&nt.isEmptyOrZeroLength(o[r]))throw ol.error("a valid hash attribute must be provided with update record:",o),new Error("a valid hash attribute must be provided with update record, check log for more info");if(!nt.isEmptyOrZeroLength(o[r])&&(o[r]==="null"||o[r]==="undefined"))throw ol.error(`a valid hash value must be provided with ${e.operation} record:`,o),new Error(`Invalid hash value: '${o[r]}' is not a valid hash attribute value, check log for more info`);!nt.isEmpty(o[r])&&o[r]!==""&&s.has(nt.autoCast(o[r]))&&(o.skip=!0),s.add(nt.autoCast(o[r]));for(let _ in o)n[_]=1}),n[r]=1,{schema_table:t,hashes:Array.from(s),attributes:Object.keys(n)}}a(Bp,"insertUpdateValidate")});var Mn=T((qH,cl)=>{"use strict";var vp=f().OPERATIONS_ENUM,yn=class{constructor(t,r,s,n,i=void 0){this.operation=vp.INSERT,this.schema=t,this.table=r,this.hash_attribute=s,this.records=n,this.__origin=i}};a(yn,"InsertObject");cl.exports=yn});var Ln=T((VH,ul)=>{"use strict";var xH=Mn(),wn=f(),Va=p(),xa=N(),Gp=require("uuid"),{handleHDBError:Xr,hdb_errors:qp}=V(),{HDB_ERROR_MSGS:Zr,HTTP_STATUS_CODES:zr}=qp;ul.exports=Fp;function Fp(e,t,r){for(let n=0;n<t.length;n++)xp(t[n]);let{records:s}=e;for(let n=0;n<s.length;n++){let i=s[n];Vp(i,r,e.operation)}}a(Fp,"processRows");function xp(e){if(Buffer.byteLength(String(e))>wn.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE)throw Xr(new Error,Zr.ATTR_NAME_LENGTH_ERR(e),zr.BAD_REQUEST,void 0,void 0,!0);if(Va.isEmptyOrZeroLength(e)||Va.isEmpty(e.trim()))throw Xr(new Error,Zr.ATTR_NAME_NULLISH_ERR,zr.BAD_REQUEST,void 0,void 0,!0)}a(xp,"validateAttribute");function Vp(e,t,r){if(!e.hasOwnProperty(t)||Va.isEmptyOrZeroLength(e[t])){if(r===wn.OPERATIONS_ENUM.INSERT||r===wn.OPERATIONS_ENUM.UPSERT){e[t]=Gp.v4();return}throw xa.error("Update transaction aborted due to record with no hash value:",e),Xr(new Error,Zr.RECORD_MISSING_HASH_ERR,zr.BAD_REQUEST,void 0,void 0,!0)}if(Buffer.byteLength(String(e[t]))>wn.INSERT_MODULE_ENUM.MAX_CHARACTER_SIZE)throw xa.error(e),Xr(new Error,Zr.HASH_VAL_LENGTH_ERR,zr.BAD_REQUEST,void 0,void 0,!0);if(isNaN(e[t])&&e[t].includes("/"))throw xa.error(e),Xr(new Error,Zr.INVALID_FORWARD_SLASH_IN_HASH_ERR,zr.BAD_REQUEST,void 0,void 0,!0)}a(Vp,"validateHash")});var El=T((YH,ll)=>{"use strict";var Un=class{constructor(t,r){this.type=t,this.message=r}};a(Un,"ITCEventObject");ll.exports=Un});var Dn=T((KH,Tl)=>{var kp=require("crypto"),dl=9;function Yp(e){let t=Kp(dl),r=hl(e+t);return t+r}a(Yp,"createHash");function $p(e,t){let r=e.substr(0,dl),s=r+hl(t+r);return e===s}a($p,"validateHash");function Kp(e){let t="0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ",r=t.length,s="";for(let n=0;n<e;n++){let i=Math.floor(Math.random()*r);s+=t[i]}return s}a(Kp,"generateSalt");function hl(e){return kp.createHash("md5").update(e).digest("hex")}a(hl,"md5");Tl.exports={hash:Yp,validate:$p}});var fl=T((QH,Sl)=>{"use strict";var St=f(),jr=class{constructor(t=0,r=St.STORAGE_TYPES_ENUM.LMDB,s=St.LICENSE_VALUES.API_CALL_DEFAULT,n=St.RAM_ALLOCATION_ENUM.DEFAULT,i=St.LICENSE_VALUES.VERSION_DEFAULT,o){this.exp_date=t,this.storage_type=r,this.api_call=s,this.ram_allocation=n,this.version=i,this.fingerprint=o}};a(jr,"BaseLicense");var Pn=class extends jr{constructor(t=0,r=St.STORAGE_TYPES_ENUM.LMDB,s=St.LICENSE_VALUES.API_CALL_DEFAULT,n=St.RAM_ALLOCATION_ENUM.DEFAULT,i=St.LICENSE_VALUES.VERSION_DEFAULT,o,_=!1){super(t,r,s,n,i,o),this.enterprise=_}};a(Pn,"ExtendedLicense");Sl.exports={BaseLicense:jr,ExtendedLicense:Pn}});var Wa=T((XH,pl)=>{"use strict";var _r=require("fs-extra"),ml=Dn(),Al=require("crypto"),Wp=require("moment"),Qp=require("uuid").v4,se=N(),Ya=require("path"),Jp=p(),Re=f(),Xp=fl().ExtendedLicense,or="invalid license key format",Zp="061183",zp="mofi25",jp="aes-256-cbc",eO=16,tO=32,Rl=$();Rl.initSync();var ka;pl.exports={validateLicense:gl,generateFingerPrint:sO,licenseSearch:Nl,getLicense:aO};function $a(){return Ya.join(Rl.getHdbBasePath(),Re.LICENSE_KEY_DIR_NAME,Re.LICENSE_FILE_NAME)}a($a,"getLicenseDirPath");function rO(){let e=$a();return Ya.join(e,Re.LICENSE_FILE_NAME)}a(rO,"getLicenseFilePath");function Ka(){let e=$a();return Ya.join(e,Re.REG_KEY_FILE_NAME)}a(Ka,"getFingerPrintFilePath");async function sO(){let e=Ka();try{return await _r.readFile(e,"utf8")}catch(t){if(t.code==="ENOENT")return await nO();throw se.error(`Error writing fingerprint file to ${e}`),se.error(t),new Error("There was an error generating the fingerprint")}}a(sO,"generateFingerPrint");async function nO(){let e=Qp(),t=ml.hash(e),r=Ka();try{await _r.mkdirp($a()),await _r.writeFile(r,t)}catch(s){if(s.code==="EEXIST")return t;throw se.error(`Error writing fingerprint file to ${r}`),se.error(s),new Error("There was an error generating the fingerprint")}return t}a(nO,"writeFingerprint");function gl(e,t){let r={valid_license:!1,valid_date:!1,valid_machine:!1,exp_date:null,storage_type:Re.STORAGE_TYPES_ENUM.LMDB,api_call:Re.LICENSE_VALUES.API_CALL_DEFAULT,ram_allocation:Re.RAM_ALLOCATION_ENUM.DEFAULT,version:Re.LICENSE_VALUES.VERSION_DEFAULT};if(!e)return se.error("empty license key passed to validate."),r;let s=Ka(),n=!1;try{n=_r.statSync(s)}catch(i){se.error(i)}if(n){let i;try{i=_r.readFileSync(s,"utf8")}catch{se.error("error validating this machine in the license"),r.valid_machine=!1;return}let o=e.split(zp),_=o[1];_=Buffer.concat([Buffer.from(_)],eO);let c=Buffer.concat([Buffer.from(i)],tO),u=Al.createDecipheriv(jp,c,_);r.valid_date=!0,r.valid_license=!0,r.valid_machine=!0;let l=null;try{l=u.update(o[0],"hex","utf8"),l.trim(),l+=u.final("utf8")}catch{let d=iO(o[0],i);if(d)l=d;else throw r.valid_license=!1,r.valid_machine=!1,console.error(or),se.error(or),new Error(or)}let E;if(isNaN(l))try{E=JSON.parse(l),r.api_call=E.api_call,r.version=E.version,r.storage_type=E.storage_type,r.exp_date=E.exp_date,isNaN(r.exp_date)&&(r.exp_date=new Date(r.exp_date).getTime()),E.ram_allocation&&(r.ram_allocation=E.ram_allocation)}catch{throw console.error(or),se.error(or),new Error(or)}else r.exp_date=l;r.exp_date<Wp().valueOf()&&(r.valid_date=!1),ml.validate(o[1],`${Zp}${i}${t}`)||(r.valid_license=!1)}else r.valid_license=!1,r.valid_machine=!1;return r.valid_license&&r.valid_machine&&r.valid_date||se.error("Invalid licence"),r}a(gl,"validateLicense");function iO(e,t){try{let r=Al.createDecipher("aes192",t),s=r.update(e,"hex","utf8");return s.trim(),s+=r.final("utf8"),s}catch{se.warn("Check old license failed")}}a(iO,"checkOldLicense");function Nl(){let e=new Xp;e.api_call=0;let t=[];try{t=_r.readFileSync(rO(),"utf-8").split(Re.NEW_LINE)}catch(r){r.code==="ENOENT"?se.info("no license file found"):se.error(`could not search for licenses due to: '${r.message}`)}for(let r=0;r<t.length;++r){let s=t[r];try{if(Jp.isEmptyOrZeroLength(s))continue;let n=JSON.parse(s),i=gl(n.license_key,n.company);i.valid_machine===!0&&i.valid_date===!0&&i.valid_machine===!0&&(e.exp_date=i.exp_date>e.exp_date?i.exp_date:e.exp_date,e.api_call+=i.api_call,e.ram_allocation=i.ram_allocation,e.storage_type=i.storage_type,e.enterprise=!0)}catch(n){se.error("There was an error parsing the license string."),se.error(n),e.api_call=Re.LICENSE_VALUES.API_CALL_DEFAULT,e.ram_allocation=Re.RAM_ALLOCATION_ENUM.DEFAULT,e.storage_type=Re.STORAGE_TYPES_ENUM.LMDB,e.enterprise=!1}}return e.api_call===0&&(e.api_call=Re.LICENSE_VALUES.API_CALL_DEFAULT),ka=e,e}a(Nl,"licenseSearch");async function aO(){return ka||await Nl(),ka}a(aO,"getLicense")});var vn=T((zH,ja)=>{"use strict";var{Worker:oO,MessageChannel:_O,parentPort:it,isMainThread:bl,threadId:cO,workerData:uO}=require("worker_threads"),{PACKAGE_ROOT:lO}=f(),{join:EO,isAbsolute:dO,extname:hO}=require("path"),{totalmem:Ol}=require("os"),Za=f(),Cl=$(),TO=Wa(),Hn=N(),SO=f();Cl.initSync();var fO=Cl.get(Za.CONFIG_PARAMS.HTTP_THREADS)||1,mO=1024*1024,ft=[],Bt=[],AO=50,yl=1e4,Ml="restart",wl="request_thread_info",Ll="resource_report",Ul="thread_info",Dl="added-port",Qa;ja.exports={startWorker:Ja,restartWorkers:za,shutdownWorkers:gO,workers:ft,setMonitorListener:bO,onMessageFromWorkers:NO,broadcast:pO};function Ja(e,t={}){let s=TO.licenseSearch().ram_allocation,n=process.constrainedMemory?.()||Ol();n=Math.min(n,Ol());let i=Math.min(Math.max(Math.floor(n/mO/(1+fO/4)),512),s||1/0),o=Math.min(Math.max(i>>7,16),64),_=[];for(let u of Bt){let{port1:l,port2:E}=new _O;u.postMessage({type:Dl,port:l},[l]),_.push(E)}hO(e)||(e+=".js");let c=new oO(dO(e)?e:EO(lO,e),Object.assign({resourceLimits:{maxOldGenerationSizeMb:i,maxYoungGenerationSizeMb:o},argv:process.argv.slice(2),workerData:{addPorts:_,name:t.name},transferList:_},t));return Bn(c,!0),c.unexpectedRestarts=t.unexpectedRestarts||0,c.startCopy=()=>{Ja(e,t)},c.on("error",u=>{console.error("Worker error:",u),Hn.error("Worker error:",u)}),c.on("exit",u=>{ft.splice(ft.indexOf(c),1),!c.wasShutdown&&t.autoRestart!==!1&&(c.unexpectedRestarts<AO?(t.unexpectedRestarts=c.unexpectedRestarts+1,Ja(e,t)):Hn.error(`Thread has been restarted ${c.restarts} times and will not be restarted`))}),c.on("message",u=>{u.type===Ml&&za(u.workerType),u.type===wl&&OO(c),u.type===Ll&&IO(c,u)}),ft.push(c),yO(),t.onStarted&&t.onStarted(c),c.name=t.name,c}a(Ja,"startWorker");var RO=[Za.THREAD_TYPES.HTTP];async function za(e=null,t=2,r=!0){if(bl){t<1&&(t=t*ft.length);let s=[];for(let n of ft.slice(0)){if(e&&n.name!==e||n.wasShutdown)continue;n.postMessage({type:Za.ITC_EVENT_TYPES.SHUTDOWN}),n.wasShutdown=!0,n.emit("shutdown",{});let i=RO.indexOf(n.name)>-1,o=new Promise(_=>{let c=setTimeout(()=>n.terminate(),yl*2).unref();n.on("exit",()=>{clearTimeout(c),s.splice(s.indexOf(o)),!i&&r&&n.startCopy(),_()})});s.push(o),i&&r&&(n.startCopy(),s.length>=t&&await Promise.race(s))}await Promise.all(s)}else it.postMessage({type:Ml,workerType:e})}a(za,"restartWorkers");function gO(e){return za(e,1/0,!1)}a(gO,"shutdownWorkers");var Pl=[];function NO(e){Pl.push(e)}a(NO,"onMessageFromWorkers");function pO(e){for(let t of Bt)try{t.postMessage(e)}catch(r){Hn.error("Unable to send message to worker",r)}}a(pO,"broadcast");function OO(e){e.postMessage({type:Ul,workers:Hl()})}a(OO,"sendThreadInfo");function Hl(){let e=Date.now();return ft.map(t=>({threadId:t.threadId,name:t.name,heapTotal:t.resources?.heapTotal,heapUsed:t.resources?.heapUsed,externalMemory:t.resources?.external,arrayBuffers:t.resources?.arrayBuffers,sinceLastUpdate:e-t.resources?.updated,...t.recentELU}))}a(Hl,"getChildWorkerInfo");function IO(e,t){e.resources=t,e.resources.updated=Date.now()}a(IO,"recordResourceReport");var Xa;function bO(e){Xa=e}a(bO,"setMonitorListener");var CO=1e3,Il=!1;function yO(){Il||(Il=!0,setInterval(()=>{for(let e of ft){let t=e.performance.eventLoopUtilization(),r;e.lastTotalELU?r=e.performance.eventLoopUtilization(t,e.lastTotalELU):r=t,e.lastTotalELU=t,e.recentELU=r}Xa&&Xa()},CO).unref())}a(yO,"startMonitoring");var MO=1e3;if(it){Bn(it);for(let e of uO.addPorts)Bn(e);setInterval(()=>{let e=process.memoryUsage();it.postMessage({type:Ll,heapTotal:e.heapTotal,heapUsed:e.heapUsed,external:e.external,arrayBuffers:e.arrayBuffers})},MO).unref(),Qa=a(()=>new Promise((e,t)=>{it.on("message",r),it.postMessage({type:wl});function r(s){s.type===Ul&&(it.off("message",r),e(s.workers))}a(r,"receiveThreadInfo")}),"getThreadInfo")}else Qa=Hl;ja.exports.getThreadInfo=Qa;function Bn(e,t){Bt.push(e),e.on("message",r=>{if(r.type===Dl)Bn(r.port);else for(let s of Pl)s(r)}).on("close",()=>{Bt.splice(Bt.indexOf(e),1)}).on("exit",()=>{Bt.splice(Bt.indexOf(e),1)}),t||e.unref()}a(Bn,"addPort");bl||it.on("message",async e=>{let{type:t}=e;t===SO.ITC_EVENT_TYPES.SHUTDOWN&&(it.unref(),setTimeout(()=>{Hn.warn("Thread did not voluntarily terminate",cO),process.exit(0)},yl).unref())})});var Gl=T((eB,vl)=>{"use strict";var eo=B(),wO=N(),Bl=be().LMDB_ERRORS_ENUM;vl.exports=LO;async function LO(e){try{if(global.lmdb_map!==void 0&&e.operation!==void 0){let t=Object.keys(global.lmdb_map),r;switch(e.operation){case"drop_schema":for(let i=0;i<t.length;i++){let o=t[i];if(o.startsWith(`${e.schema}.`)||o.startsWith(`txn.${e.schema}.`))try{await eo.closeEnvironment(global.lmdb_map[o])}catch(_){if(_.message!==Bl.ENV_REQUIRED)throw _}}break;case"drop_table":let s=`${e.schema}.${e.table}`,n=`txn.${s}`;try{await eo.closeEnvironment(global.lmdb_map[s]),await eo.closeEnvironment(global.lmdb_map[n])}catch(i){if(i.message!==Bl.ENV_REQUIRED)throw i}break;case"drop_attribute":r=global.lmdb_map[`${e.schema}.${e.table}`],r!==void 0&&typeof r.dbis=="object"&&r.dbis[`${e.attribute}`]!==void 0&&delete r.dbis[`${e.attribute}`];break;default:break}}}catch(t){wO.error(t)}}a(LO,"cleanLMDBMap")});var Zl=T((sB,Xl)=>{"use strict";var to=require("recursive-iterator"),UO=require("alasql"),ro=require("clone"),ql=p(),{handleHDBError:Fl,hdb_errors:DO}=V(),{HDB_ERROR_MSGS:xl,HTTP_STATUS_CODES:Vl}=DO,PO=["DISTINCT_ARRAY"],kl=Symbol("validateTables"),so=Symbol("validateTable"),rB=Symbol("getAllColumns"),Yl=Symbol("validateAllColumns"),Gn=Symbol("findColumn"),$l=Symbol("validateOrderBy"),es=Symbol("validateSegment"),no=Symbol("validateColumn"),Kl=Symbol("setColumnsForTable"),Wl=Symbol("checkColumnsForAsterisk"),Ql=Symbol("validateGroupBy"),Jl=Symbol("hasColumns"),qn=class{constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[kl](),this[Wl](),this[Yl]()}[kl](){if(this[Jl]()){if(!this.statement.from||this.statement.from.length===0)throw"no from clause";this.statement.from.forEach(t=>{this[so](t)}),this.statement.joins&&this.statement.joins.forEach(t=>{t.table.as=t.as,this[so](t.table)})}}[Jl](){let t=!1,r=new to(this.statement);for(let{node:s,path:n}of r)if(s&&s.columnid){t=!0;break}return t}[so](t){if(!t.databaseid)throw`schema not defined for table ${t.tableid}`;if(!global.hdb_schema[t.databaseid])throw Fl(new Error,xl.SCHEMA_NOT_FOUND(t.databaseid),Vl.NOT_FOUND);if(!global.hdb_schema[t.databaseid][t.tableid])throw Fl(new Error,xl.TABLE_NOT_FOUND(t.databaseid,t.tableid),Vl.NOT_FOUND);global.hdb_schema[t.databaseid][t.tableid].attributes.forEach(s=>{let n=ro(s);n.table=ro(t),this.attributes.push(n)})}[Gn](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)}[Wl](){let t=new to(this.statement.columns);for(let{node:r,path:s}of t)r&&r.columnid==="*"&&s.indexOf("expression")<0&&this[Kl](r.tableid)}[Kl](t){this.attributes.forEach(r=>{(!t||t&&(r.table.tableid===t||r.table.as===t))&&this.statement.columns.push(new UO.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[Yl](){this[es](this.statement.columns,!1),this[es](this.statement.joins,!1),this[es](this.statement.where,!1),this[Ql](this.statement.group,!1),this[es](this.statement.order,!0)}[es](t,r){if(!t)return;let s=new to(t),n=[];for(let{node:i,path:o}of s)!ql.isEmpty(i)&&!ql.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[$l](i):n.push(this[no](i)));return n}[Ql](t){if(!t)return;let r=[];if(this.statement.columns.forEach(s=>{if(!(s.funcid&&PO.indexOf(s.funcid.toUpperCase())>=0)){if(!s.aggregatorid&&!s.columnid){let n=ro(s);delete n.as,r.push(n)}else if(s.columnid){let n=this[Gn](s)[0];n&&r.push(n)}}}),this.statement.group.forEach(s=>{let n=null;if(!s.columnid)r.forEach((i,o)=>{if(i.toString()===s.toString()){n=i,r.splice(o,1);return}});else{let i=this[Gn](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((o,_)=>{if(o.attribute===i[0].attribute&&o.table.tableid===i[0].table.tableid){n=o,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`}[$l](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[no](t)}[no](t){let r=this[Gn](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]}};a(qn,"SelectValidator");Xl.exports=qn});var tE=T((iB,eE)=>{"use strict";var zl=require("lodash"),ts=require("mathjs"),HO=require("jsonata"),jl=p();eE.exports={distinct_array:e=>Array.isArray(e)&&e.length>1?zl.uniqWith(e,zl.isEqual):e,searchJSON:BO,mad:rs.bind(null,ts.mad),mean:rs.bind(null,ts.mean),mode:rs.bind(null,ts.mode),prod:rs.bind(null,ts.prod),median:rs.bind(null,ts.median)};function rs(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}a(rs,"aggregateFunction");function BO(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(jl.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),jl.isEmpty(this.__ala__.res[r])){let s=HO(e);this.__ala__.res[r]=s}return this.__ala__.res[r].evaluate(t)}a(BO,"searchJSON")});var sE=T((oB,rE)=>{"use strict";var K=require("moment"),io="YYYY-MM-DDTHH:mm:ss.SSSZZ";K.suppressDeprecationWarnings=!0;rE.exports={current_date:()=>K().utc().format("YYYY-MM-DD"),current_time:()=>K().utc().format("HH:mm:ss.SSS"),extract:(e,t)=>{switch(t.toLowerCase()){case"year":return K(e).utc().format("YYYY");case"month":return K(e).utc().format("MM");case"day":return K(e).utc().format("DD");case"hour":return K(e).utc().format("HH");case"minute":return K(e).utc().format("mm");case"second":return K(e).utc().format("ss");case"millisecond":return K(e).utc().format("SSS");default:break}},date:e=>K(e).utc().format(io),date_format:(e,t)=>K(e).utc().format(t),date_add:(e,t,r)=>K(e).utc().add(t,r).valueOf(),date_sub:(e,t,r)=>K(e).utc().subtract(t,r).valueOf(),date_diff:(e,t,r)=>{let s=K(e).utc(),n=K(t).utc();return r?s.diff(n,r,!0):s.diff(n)},now:()=>K().utc().valueOf(),get_server_time:()=>K().format(io),offset_utc:(e,t)=>K(e).utc().utcOffset(t).format(io)}});var oE=T((_B,aE)=>{"use strict";var vO=require("@turf/area"),GO=require("@turf/length"),qO=require("@turf/circle"),FO=require("@turf/difference"),xO=require("@turf/distance"),VO=require("@turf/boolean-contains"),kO=require("@turf/boolean-equal"),YO=require("@turf/boolean-disjoint"),$O=require("@turf/helpers"),nE=f(),w=p();aE.exports={geoArea:KO,geoLength:WO,geoCircle:QO,geoDifference:JO,geoDistance:iE,geoNear:XO,geoContains:ZO,geoEqual:zO,geoCrosses:jO,geoConvert:eI};var ao="geo1 is required",oo="geo2 is required";function KO(e){if(w.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),vO.default(e)}a(KO,"geoArea");function WO(e,t){if(w.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),GO.default(e,{units:t||"kilometers"})}a(WO,"geoLength");function QO(e,t,r){if(w.isEmpty(e))throw new Error("point is required");if(w.isEmpty(t))throw new Error("radius is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),qO.default(e,t,{units:r||"kilometers"})}a(QO,"geoCircle");function JO(e,t){if(w.isEmpty(e))throw new Error("poly1 is required");if(w.isEmpty(t))throw new Error("poly2 is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),FO(e,t)}a(JO,"geoDifference");function iE(e,t,r){if(w.isEmpty(e))throw new Error("point1 is required");if(w.isEmpty(t))throw new Error("point2 is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),xO.default(e,t,{units:r||"kilometers"})}a(iE,"geoDistance");function XO(e,t,r,s){if(w.isEmpty(e))throw new Error("point1 is required");if(w.isEmpty(t))throw new Error("point2 is required");if(w.isEmpty(r))throw new Error("distance is required");if(typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),isNaN(r))throw new Error("distance must be a number");return iE(e,t,s)<=r}a(XO,"geoNear");function ZO(e,t){if(w.isEmpty(e))throw new Error(ao);if(w.isEmpty(e))throw new Error(oo);return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),VO.default(e,t)}a(ZO,"geoContains");function zO(e,t){if(w.isEmpty(e))throw new Error(ao);if(w.isEmpty(e))throw new Error(oo);return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),kO.default(e,t)}a(zO,"geoEqual");function jO(e,t){if(w.isEmpty(e))throw new Error(ao);if(w.isEmpty(e))throw new Error(oo);return typeof e=="string"&&(e=w.autoCastJSON(e)),typeof t=="string"&&(t=w.autoCastJSON(t)),!YO.default(e,t)}a(jO,"geoCrosses");function eI(e,t,r){if(w.isEmptyOrZeroLength(e))throw new Error("coordinates is required");if(w.isEmpty(t))throw new Error("geo_type is required");if(w.isEmpty(nE.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(nE.GEO_CONVERSION_ENUM).join(",")}`);return $O[t](e,r)}a(eI,"geoConvert")});var cE=T((uB,_E)=>{var vt=tE(),ge=sE(),Ke=oE();_E.exports=e=>{e.aggr.mad=e.aggr.MAD=vt.mad,e.aggr.mean=e.aggr.MEAN=vt.mean,e.aggr.mode=e.aggr.MODE=vt.mode,e.aggr.prod=e.aggr.PROD=vt.prod,e.aggr.median=e.aggr.MEDIAN=vt.median,e.fn.distinct_array=e.fn.DISTINCT_ARRAY=vt.distinct_array,e.fn.search_json=e.fn.SEARCH_JSON=vt.searchJSON,e.fn.__ala__=e,e.fn.current_date=e.fn.CURRENT_DATE=ge.current_date,e.fn.current_time=e.fn.CURRENT_TIME=ge.current_time,e.fn.extract=e.fn.EXTRACT=ge.extract,e.fn.date=e.fn.DATE=ge.date,e.fn.date_format=e.fn.DATE_FORMAT=ge.date_format,e.fn.date_add=e.fn.DATE_ADD=ge.date_add,e.fn.date_sub=e.fn.DATE_SUB=ge.date_sub,e.fn.date_diff=e.fn.DATE_DIFF=e.fn.datediff=e.fn.DATEDIFF=ge.date_diff,e.fn.now=e.fn.NOW=ge.now,e.fn.offset_utc=e.fn.OFFSET_UTC=ge.offset_utc,e.fn.get_server_time=e.fn.GET_SERVER_TIME=ge.get_server_time,e.fn.getdate=e.fn.GETDATE=ge.now,e.fn.current_timestamp=e.fn.CURRENT_TIMESTAMP=ge.now,e.fn.geoarea=e.fn.GEOAREA=e.fn.geoArea=Ke.geoArea,e.fn.geocircle=e.fn.GEOCIRCLE=e.fn.geoCircle=Ke.geoCircle,e.fn.geocontains=e.fn.GEOCONTAINS=e.fn.geoContains=Ke.geoContains,e.fn.geoconvert=e.fn.GEOCONVERT=e.fn.geoConvert=Ke.geoConvert,e.fn.geocrosses=e.fn.GEOCROSSES=e.fn.geoCrosses=Ke.geoCrosses,e.fn.geodifference=e.fn.GEODIFFERENCE=e.fn.geoDifference=Ke.geoDifference,e.fn.geodistance=e.fn.GEODISTANCE=e.fn.geoDistance=Ke.geoDistance,e.fn.geoequal=e.fn.GEOEQUAL=e.fn.geoEqual=Ke.geoEqual,e.fn.geolength=e.fn.GEOLENGTH=e.fn.geoLength=Ke.geoLength,e.fn.geonear=e.fn.GEONEAR=e.fn.geoNear=Ke.geoNear}});var EE=T((lB,lE)=>{"use strict";var ss=require("lodash"),j=require("alasql");j.options.cache=!1;var tI=cE(),uE=require("clone"),Fn=require("recursive-iterator"),I=N(),y=p(),cr=mt(),rI=f(),{hdb_errors:sI}=V(),nI="IS NULL",qe="There was a problem performing this search. Please check the logs and try again.";tI(j);var xn=class{constructor(t,r){if(y.isEmpty(t))throw I.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(),y.backtickASTSchemaItems(this.statement)}async search(){let t;try{let s=await this._checkEmptySQL();if(!y.isEmptyOrZeroLength(s))return I.trace("No results returned from checkEmptySQL SQLSearch method."),s}catch(s){throw I.error("Error thrown from checkEmptySQL in SQLSearch class method search."),I.error(s),new Error(qe)}try{let s=await this._getFetchAttributeValues();if(s)return s}catch(s){throw I.error("Error thrown from getFetchAttributeValues in SQLSearch class method search."),I.error(s),new Error(qe)}if(Object.keys(this.data).length===0)return I.trace('SQLSearch class field: "data" is empty.'),[];let r;try{r=await this._processJoins()}catch(s){throw I.error("Error thrown from processJoins in SQLSearch class method search."),I.error(s),new Error(qe)}try{await this._getFinalAttributeData(r.existing_attributes,r.joined_length)}catch(s){throw I.error("Error thrown from getFinalAttributeData in SQLSearch class method search."),I.error(s),new Error(qe)}try{return t=await this._finalSQL(),t}catch(s){throw I.error("Error thrown from finalSQL in SQLSearch class method search."),I.error(s),new Error(qe)}}_getColumns(){let t=new Fn(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(uE(r)))}_getTables(){let t=[];this.all_table_attributes.forEach(r=>{t.push(r.table)}),this.tables=ss.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(y.isEmpty(this.statement.where)){I.trace('AST "where" statement is empty.');return}let t=!1;for(let{node:r}of new Fn(this.statement.where))if(r&&r.op&&r.op==="OR"&&(t=!0),!y.isEmpty(r)&&r.right)if(y.isNotEmptyAndHasValue(r.right.value)){let s=y.autoCast(r.right.value);[!0,!1].indexOf(s)>=0?r.right=new j.yy.LogicValue({value:s}):r.right instanceof j.yy.StringValue&&!y.isEmpty(s)&&y.autoCasterIsNumberCheck(s.toString())&&(r.right=new j.yy.NumValue({value:s}))}else Array.isArray(r.right)&&r.right.forEach((s,n)=>{let i=y.autoCast(s.value);[!0,!1].indexOf(i)>=0?r.right[n]=new j.yy.LogicValue({value:i}):s instanceof j.yy.StringValue&&y.autoCasterIsNumberCheck(i.toString())&&(r.right[n]=new j.yy.NumValue({value:i}))});if(t){I.trace('Where clause contains "OR", exact match search not performed on attributes.');return}for(let{node:r}of new Fn(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 o=[i.table.databaseid,i.table.tableid,i.attribute].join("/");if(!y.isEmpty(rI.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[r.op])){if(y.isEmpty(this.comparator_search_values[o])&&(this.comparator_search_values[o]={ignore:!1,comparators:[]}),!this.comparator_search_values[o].ignore){if(y.isEmptyOrZeroLength(r.left.columnid)||y.isEmptyOrZeroLength(r.right.value)){this.comparator_search_values[o].ignore=!0,this.comparator_search_values[o].comparators=[];continue}this.comparator_search_values[o].comparators.push({attribute:r.left.columnid,operation:r.op,search_value:r.right.value})}continue}if(y.isEmpty(this.exact_search_values[o])&&(this.exact_search_values[o]={ignore:!1,values:new Set}),!this.exact_search_values[o].ignore){let _=!1;switch(r.op){case"=":!y.isEmpty(r.right.value)||!y.isEmpty(r.left.value)?s.add(y.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[o].ignore=_,_?this.exact_search_values[o].values=new Set:this.exact_search_values[o].values=new Set([...this.exact_search_values[o].values,...s])}}}_setAliasesForColumns(){if(y.isEmptyOrZeroLength(this.all_table_attributes)&&y.isEmptyOrZeroLength(this.statement.from)&&y.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&&ss.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(y.isEmptyOrZeroLength(r)){let s=this.columns.columns.filter(n=>n.as?t.columnid===n.as:!1);y.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(y.isEmptyOrZeroLength(this.all_table_attributes)&&!y.isEmptyOrZeroLength(this.columns.columns))return t;if(y.isEmptyOrZeroLength(this.all_table_attributes)&&y.isEmptyOrZeroLength(this.statement.from))try{let r=this._buildSQL(!1);t=await j.promise(r)}catch(r){throw I.error("Error thrown from AlaSQL in SQLSearch class method checkEmptySQL."),I.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(uE(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(y.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(nI)>-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=ss.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 o=`${i.table.databaseid}_${i.table.as?i.table.as:i.table.tableid}`,_=this.data[o].__hash_name;return n[o]||(n[o]=[],n[o].push(null),this._addColumnToMergedAttributes(o,_)),i.attribute!==_&&(n[o].push(null),this._addColumnToMergedAttributes(o,i.attribute)),n},{});for(let n of this.fetch_attributes){let i=`${n.table.databaseid}_${n.table.as?n.table.as:n.table.tableid}`,o=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===o&&(c=!0),!y.isEmpty(this.exact_search_values[u])&&!this.exact_search_values[u].ignore&&!y.isEmptyOrZeroLength(this.exact_search_values[u].values))if(c)try{_.hash_values=Array.from(this.exact_search_values[u].values);let l=await cr.getDataByHash(_);for(let E of _.hash_values)l.get(E)&&!this.data[i].__merged_data[E]&&(this.data[i].__merged_data[E]=[...s[i]],this._setMergedHashAttribute(i,E))}catch(l){throw I.error("Error thrown from getDataByHash function in SQLSearch class method getFetchAttributeValues exact match."),I.error(l),new Error(qe)}else try{_.search_attribute=n.attribute,await Promise.all(Array.from(this.exact_search_values[u].values).map(async l=>{let E=Object.assign({},_);E.search_value=l;let h=await cr.getDataByValue(E);for(let[d,A]of h)this.data[i].__merged_data[d]?this._updateMergedAttribute(i,d,n.attribute,A[n.attribute]):(this.data[i].__merged_data[d]=[...s[i]],this._updateMergedAttribute(i,d,n.attribute,A[n.attribute]),this._setMergedHashAttribute(i,y.autoCast(d)))}))}catch(l){throw I.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues exact match."),I.error(l),new Error(qe)}else if(!y.isEmpty(this.comparator_search_values[u])&&!this.comparator_search_values[u].ignore&&!y.isEmptyOrZeroLength(this.comparator_search_values[u].comparators))try{let l=this.comparator_search_values[u].comparators;for(let E=0,h=l.length;E<h;E++){let d=l[E];_.search_attribute=d.attribute,_.search_value=d.search_value;let A=await cr.getDataByValue(_,d.operation);if(c)for(let[R]of A)this.data[i].__merged_data[R]||(this.data[i].__merged_data[R]=[...s[i]],this._setMergedHashAttribute(i,y.autoCast(R)));else for(let[R,M]of A)this.data[i].__merged_data[R]?this._updateMergedAttribute(i,R,n.attribute,M[n.attribute]):(this.data[i].__merged_data[R]=[...s[i]],this._updateMergedAttribute(i,R,n.attribute,M[n.attribute]),this._setMergedHashAttribute(i,y.autoCast(R)))}}catch(l){throw I.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues comparator search values."),I.error(l),new Error(qe)}else try{_.search_attribute=n.attribute,_.search_value="*";let l=await cr.getDataByValue(_);if(c)for(let[E]of l)this.data[i].__merged_data[E]||(this.data[i].__merged_data[E]=[...s[i]],this._setMergedHashAttribute(i,y.autoCast(E)));else for(let[E,h]of l)this.data[i].__merged_data[E]?this._updateMergedAttribute(i,E,n.attribute,h[n.attribute]):(this.data[i].__merged_data[E]=[...s[i]],this._updateMergedAttribute(i,E,n.attribute,h[n.attribute]),this._setMergedHashAttribute(i,y.autoCast(E)))}catch(l){throw I.error("Error thrown from getDataByValue function in SQLSearch class method getFetchAttributeValues no comparator search values."),I.error(l),new Error(qe)}}}_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 j.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,o=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===o});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 j.yy.Column;n.columnid=s.as,n.columnid_orig=s.as_orig,t.expression=n}else{t.initial_select_column=Object.assign(new j.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 j.yy.FuncValue:new j.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(d=>{d.joinmode&&d.joinmode!=="INNER"&&(this.has_outer_join=!0),n.push(d.table);let A=d.joinmode+" JOIN ? AS "+(d.as?d.as:d.table.tableid);d.on&&(A+=" ON "+d.on.toString()),i.push(A),t.push(Object.values(this.data[`${d.table.databaseid_orig}_${d.table.as?d.table.as_orig:d.table.tableid_orig}`].__merged_data))});let o=[],_={};n.forEach(d=>{let A=this.data[`${d.databaseid_orig}_${d.as?d.as_orig:d.tableid_orig}`].__hash_name,R=d.as?d.as_orig:d.tableid_orig;o.push({key:`'${R}.${A}'`,schema:d.databaseid_orig,table:d.as?d.as_orig:d.tableid_orig,keys:new Set}),r.push(`${d.as?d.as:d.tableid}.\`${A}\` AS "${R}.${A}"`),_[d.as?d.as_orig:d.tableid_orig]=this.data[`${d.databaseid_orig}_${d.as?d.as_orig:d.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(d=>{d.is_func?r.push(d.initial_select_column.toString()):d.initial_select_column.tableid?r.push(`${d.initial_select_column.tableid}.${d.initial_select_column.columnid} AS ${d.expression.columnid}`):r.push(`${d.initial_select_column.columnid} AS ${d.expression.columnid}`)}));let l="",E="";!this.has_aggregator&&!this.statement.group&&!this.has_ordinal&&(l=this.statement.limit?"LIMIT "+this.statement.limit:"",E=this.statement.offset?"OFFSET "+this.statement.offset:"");let h=[];try{let d=`SELECT ${r.join(", ")} FROM ${i.join(" ")} ${c} ${u} ${l} ${E}`,A=this._convertColumnsToIndexes(d,n);h=await j.promise(A,t),t=null}catch(d){throw I.error("Error thrown from AlaSQL in SQLSearch class method processJoins."),I.error(d),new Error("There was a problem processing the data.")}if(h&&h.length>0){for(let d=0,A=h.length;d<A;d++){let R=h[d];o.forEach(M=>{R[M.key]!==null&&R[M.key]!==void 0&&M.keys.add(R[M.key])})}o.forEach(d=>{let A=Object.keys(this.data[`${d.schema}_${d.table}`].__merged_data),R=ss.difference(A,[...d.keys].map(M=>M.toString()));for(let M=0,W=R.length;M<W;M++){let x=R[M];delete this.data[`${d.schema}_${d.table}`].__merged_data[x]}})}return{existing_attributes:_,joined_length:h?h.length:0}}async _getFinalAttributeData(t,r){if(r===0)return;let s=[],n=new Fn(this.columns);for(let{node:i}of n)if(i&&i.columnid){let o=this._findColumn(i);if(o){let _=o.table.as?o.table.as:o.table.tableid;(!t[_]||t[_].indexOf(o.attribute)<0)&&s.push(o)}}s=ss.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){throw I.error("Error thrown from getData in SQLSearch class method getFinalAttributeData."),I.error(i),new Error(qe)}}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,o=[];for(let l in i)o.push(i[l][0]);this.data[s].__merged_attributes.push(...n.columns);let _={schema:n.schema,table:n.table,hash_values:o,get_attributes:n.columns},c=await cr.getDataByHash(_),u=n.columns.length;for(let l=0,E=o.length;l<E;l++){let h=o[l],d=c.get(h);for(let A=0;A<u;A++){let R=n.columns[A],M=d[R]===void 0?null:d[R];this.data[s].__merged_data[h].push(M)}}}}catch(r){throw I.error("Error thrown from getDataByHash function in SQLSearch class method getData."),I.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(o=>{let _=o.aggregatorid?o.expression:o,c=o.aggregatorid?o.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();I.trace(`Final SQL: ${n}`),s=await j.promise(n,t),this.has_outer_join&&(s=this._translateUndefinedValues(s)),I.trace(`Final AlaSQL results data included ${s.length} rows`)}catch(n){throw I.error("Error thrown from AlaSQL in SQLSearch class method finalSQL."),I.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 I.error(sI.HDB_ERROR_MSGS.OUTER_JOIN_TRANSLATION_ERROR),I.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((o,_)=>{let c=n[i],u=new RegExp(`${c}.\`${o}\``,"g"),l=`${c}.[${_}]`;s=s.replace(u,l)});for(let i in this.data)this.data[i].__merged_attributes.forEach((o,_)=>{let c=new RegExp(`\`${o}\``,"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 o=await cr.getDataByValue(i);for(let[_,c]of o)this.data[n].__merged_data[_]||(this.data[n].__merged_data[_]=Object.assign({},r[n])),this.data[n].__merged_data[_][t[s.attribute]]=c[s.attribute]}catch(o){throw I.error("There was an error when processing this SQL operation. Check your logs"),I.error(o),new Error(qe)}}return Object.values(Object.values(this.data)[0].__merged_data)}};a(xn,"SQLSearch");lE.exports=xn});var Vn=T((dB,hE)=>{"use strict";var iI=Zl();hE.exports={searchByConditions:cI,searchByHash:uI,searchByValue:lI,search:EI};var _o=mt(),dE=require("util"),aI=dE.callbackify(_o.searchByHash),oI=dE.callbackify(_o.searchByValue),_I=EE();async function cI(e){return _o.searchByConditions(e)}a(cI,"searchByConditions");function uI(e,t){try{aI(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}a(uI,"searchByHash");function lI(e,t){try{e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc),oI(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}a(lI,"searchByValue");function EI(e,t){try{let r=new iI(e);r.validate(),new _I(r.statement,r.attributes).search().then(n=>{t(null,n)}).catch(n=>{t(n,null)})}catch(r){return t(r)}}a(EI,"search")});var uo=T((SB,TE)=>{"use strict";var dI=f(),TB=Dt();function co(e,t){let r=Object.create(null);if(t.length===1&&dI.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}a(co,"parseRow");function hI(e,t,r,s){let n=co(r,e);s.push(n)}a(hI,"searchAll");function TI(e,t,r,s){let n=co(r,e);s[t]=n}a(TI,"searchAllToMap");function SI(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(SI,"iterateDBI");function Gt(e,t,r,s,n){let i=Object.create(null);i[n]=e;let o;s===n?o=e:(o=t,s!==void 0&&(i[s]=o)),r[0].push(o),r[1].push(i)}a(Gt,"pushResults");function fI(e,t,r,s,n,i){t.toString().endsWith(e)&&Gt(t,r,s,n,i)}a(fI,"endsWith");function mI(e,t,r,s,n,i){t.toString().includes(e)&&Gt(t,r,s,n,i)}a(mI,"contains");function AI(e,t,r,s,n,i){t>e&&Gt(t,r,s,n,i)}a(AI,"greaterThanCompare");function RI(e,t,r,s,n,i){t>=e&&Gt(t,r,s,n,i)}a(RI,"greaterThanEqualCompare");function gI(e,t,r,s,n,i){t<e&&Gt(t,r,s,n,i)}a(gI,"lessThanCompare");function NI(e,t,r,s,n,i){t<=e&&Gt(t,r,s,n,i)}a(NI,"lessThanEqualCompare");TE.exports={parseRow:co,searchAll:hI,searchAllToMap:TI,iterateDBI:SI,endsWith:fI,contains:mI,greaterThanCompare:AI,greaterThanEqualCompare:RI,lessThanCompare:gI,lessThanEqualCompare:NI,pushResults:Gt}});var Ft=T((gB,NE)=>{"use strict";var At=B(),mB=N(),Ne=Dt(),kn=ee(),Y=be().LMDB_ERRORS_ENUM,AB=p(),pI=f(),Yn=uo(),{parseRow:OI}=Yn,RB=require("lmdb"),{OVERFLOW_MARKER:SE,MAX_SEARCH_KEY_LENGTH:II}=kn;function fE(e,t,r,s=!1,n=void 0,i=void 0){return qt(e,t,r,(o,_)=>_.getRange({transaction:o,start:s?void 0:!1,end:s?!1:void 0,limit:n,offset:i,reverse:s}))}a(fE,"iterateFullIndex");function ns(e,t,r,s,n,i=!1,o=void 0,_=void 0,c=!1,u=!1){return qt(e,t,r,(l,E,h,d)=>{let x={transaction:l,start:i===!0?n:s,end:i===!0?s:n,reverse:i,limit:o,offset:_,inclusiveEnd:i===!0?!c:!u,exclusiveStart:i===!0?u:c};return d===r?(x.values=!1,E.getRange(x).map(F=>({value:F}))):E.getRange(x)})}a(ns,"iterateRangeBetween");function qt(e,t,r,s){let n=e.database||e,i=At.openDBI(n,r);i[kn.DBI_DEFINITION_NAME].is_hash_attribute?t=r:t&&At.openDBI(n,t);let o;e.database?o=e:(o=e.useReadTransaction(),o.database=e);let _=s(o,i,n,t);return _.transaction=o,e.database||(_.onDone=()=>{o.done()}),_}a(qt,"setupTransaction");function mE(e,t,r,s){let n;return function(i,o){if(typeof i=="string"&&i.endsWith(SE)){if(!n)if(r)n=At.openDBI(e,r);else{let c=At.listDBIs(e);for(let u=0,l=c.length;u<l&&(n=At.openDBI(e,c[u]),!n[kn.DBI_DEFINITION_NAME].is_hash_attribute);u++);}i=n.get(o,{transaction:t,lazy:!0})[s]}return i}}a(mE,"getOverflowCheck");function bI(e,t,r,s=!1,n=void 0,i=void 0){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);return qt(e,t,t,(o,_,c)=>($n(r),r=is(c,r),_.getRange({transaction:o,start:s?void 0:!1,end:s?!1:void 0,limit:n,offset:i,reverse:s}).map(u=>OI(u.value,r))))}a(bI,"searchAll");function CI(e,t,r,s=!1,n=void 0,i=void 0){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);$n(r),r=is(e.database||e,r);let o=new Map;for(let{key:_,value:c}of fE(e,t,t,s,n,i))o.set(_,Yn.parseRow(c,r));return o}a(CI,"searchAllToMap");function yI(e,t,r=!1,s=void 0,n=void 0){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.ATTRIBUTE_REQUIRED);let i=Object.create(null),o=fE(e,void 0,t,r,s,n),_=o.transaction,c=mE(_.database,_,void 0,t);for(let{key:u,value:l}of o){let E=c(u,l);i[E]===void 0&&(i[E]=[]),i[E].push(l)}return i}a(yI,"iterateDBI");function MI(e,t){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);return At.statDBI(e,t).entryCount}a(MI,"countAll");function wI(e,t,r,s,n=!1,i=void 0,o=void 0){return Rt(e,r,s),qt(e,t,r,(_,c,u,l)=>(s=Ne.convertKeyValueToWrite(s),l===r?c.get(s,{transaction:_,lazy:!0})===void 0?[]:[{key:s,value:s}]:c.getValues(s,{transaction:_,reverse:n,limit:i,offset:o}).map(E=>({key:s,value:E}))))}a(wI,"equals");function LI(e,t,r){return Rt(e,t,r),At.openDBI(e,t).getValuesCount(r)}a(LI,"count");function UI(e,t,r,s,n=!1,i=void 0,o=void 0){return Rt(e,r,s),qt(e,null,r,(_,c)=>{s=Ne.convertKeyValueToWrite(s);let u=!0;typeof s=="number"&&(u=!1);let l;if(n===!0){let E;for(let h of c.getKeys({transaction:_,start:s}))if(!h.startsWith(s)){E=h;break}return E!==void 0&&(Number.isInteger(o)?o++:i++),l=c.getRange({transaction:_,start:E,end:void 0,reverse:n,limit:i,offset:o}).map(h=>{let{key:d}=h;if(d!==E){if(d.toString().startsWith(s))return h;if(u===!0)return l.DONE}}),l.filter(h=>h)}else return l=c.getRange({transaction:_,start:s,reverse:n,limit:i,offset:o}).map(E=>{if(E.key.toString().startsWith(s))return E;if(u===!0)return l.DONE}),u?l:l.filter(E=>E)})}a(UI,"startsWith");function DI(e,t,r,s,n=!1,i=void 0,o=void 0){return AE(e,t,r,s,n,i,o,!0)}a(DI,"endsWith");function AE(e,t,r,s,n=!1,i=void 0,o=void 0,_=!1){return Rt(e,r,s),qt(e,null,r,(c,u,l,E)=>{let h=mE(l,c,E,r);return o=Number.isInteger(o)?o:0,u.getKeys({transaction:c,end:n?!1:void 0,reverse:n}).flatMap(d=>{let A=d.toString();return A.endsWith(SE)?u.getValues(d,{transaction:c}).map(R=>{let M=h(d,R);if(_?M.endsWith(s):M.includes(s))return{key:M,value:R}}).filter(R=>R):(_?A.endsWith(s):A.includes(s))?u[kn.DBI_DEFINITION_NAME].is_hash_attribute?{key:d,value:d}:u.getValues(d,{transaction:c}).map(R=>({key:d,value:R})):[]}).slice(o,i===void 0?void 0:i+(o||0))})}a(AE,"contains");function PI(e,t,r,s,n=!1,i=void 0,o=void 0){Rt(e,r,s);let _=typeof s,c;return _==="string"?c="\uFFFF":_==="number"?c=1/0:_==="boolean"&&(c=!0),ns(e,t,r,s,c,n,i,o,!0,!1)}a(PI,"greaterThan");function HI(e,t,r,s,n=!1,i=void 0,o=void 0){Rt(e,r,s);let _=typeof s,c;return _==="string"?c="\uFFFF":_==="number"?c=1/0:_==="boolean"&&(c=!0),ns(e,t,r,s,c,n,i,o,!1,!1)}a(HI,"greaterThanEqual");function BI(e,t,r,s,n=!1,i=void 0,o=void 0){Rt(e,r,s);let _=typeof s,c;return _==="string"?c="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),ns(e,t,r,c,s,n,i,o,!1,!0)}a(BI,"lessThan");function vI(e,t,r,s,n=!1,i=void 0,o=void 0){Rt(e,r,s);let _=typeof s,c;return _==="string"?c="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),ns(e,t,r,c,s,n,i,o,!1,!1)}a(vI,"lessThanEqual");function GI(e,t,r,s,n,i=!1,o=void 0,_=void 0){if(Ne.validateEnv(e),r===void 0)throw new Error(Y.ATTRIBUTE_REQUIRED);if(s===void 0)throw new Error(Y.START_VALUE_REQUIRED);if(n===void 0)throw new Error(Y.END_VALUE_REQUIRED);if(s=Ne.convertKeyValueToWrite(s),n=Ne.convertKeyValueToWrite(n),s>n)throw new Error(Y.END_VALUE_MUST_BE_GREATER_THAN_START_VALUE);return ns(e,t,r,s,n,i,o,_)}a(GI,"between");function qI(e,t,r,s){Ne.validateEnv(e);let n=e.database||e,i=e.database?e:null;if(t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);if($n(r),r=is(n,r),s===void 0)throw new Error(Y.ID_REQUIRED);let o=null,_=n.dbis[t].get(s,{transaction:i,lazy:r.length<3});return _&&(o=Yn.parseRow(_,r)),o}a(qI,"searchByHash");function FI(e,t,r){Ne.validateEnv(e);let s=e.database||e,n=e.database?e:null;if(t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Y.ID_REQUIRED);let i=!0;return s.dbis[t].get(r,{transaction:n,lazy:!0})===void 0&&(i=!1),i}a(FI,"checkHashExists");function xI(e,t,r,s,n=[]){return gE(e,t,r,s,n),RE(e,t,r,s,n).map(i=>i[1])}a(xI,"batchSearchByHash");function VI(e,t,r,s,n=[]){gE(e,t,r,s,n);let i=new Map;for(let[o,_]of RE(e,t,r,s,n))i.set(o,_);return i}a(VI,"batchSearchByHashToMap");function RE(e,t,r,s,n=[]){return qt(e,t,t,(i,o,_)=>{r=is(_,r);let c=r.length<3;return s.map(u=>{let l=_.dbis[t].get(u,{transaction:i,lazy:c});if(l)return[u,Yn.parseRow(l,r)];n.push(u)}).filter(u=>u)})}a(RE,"batchHashSearch");function gE(e,t,r,s,n){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);if($n(r),s==null)throw new Error(Y.IDS_REQUIRED);if(!s[Symbol.iterator])throw new Error(Y.IDS_MUST_BE_ITERABLE)}a(gE,"initializeBatchSearchByHash");function $n(e){if(!Array.isArray(e))throw e===void 0?new Error(Y.FETCH_ATTRIBUTES_REQUIRED):new Error(Y.FETCH_ATTRIBUTES_MUST_BE_ARRAY)}a($n,"validateFetchAttributes");function Rt(e,t,r){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.ATTRIBUTE_REQUIRED);if(r===void 0)throw new Error(Y.SEARCH_VALUE_REQUIRED);if(r?.length>II)throw new Error(Y.SEARCH_VALUE_TOO_LARGE)}a(Rt,"validateComparisonFunctions");function is(e,t){return t.length===1&&pI.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=At.listDBIs(e)),t}a(is,"setGetWholeRowAttributes");NE.exports={searchAll:bI,searchAllToMap:CI,count:LI,countAll:MI,equals:wI,startsWith:UI,endsWith:DI,contains:AE,searchByHash:qI,setGetWholeRowAttributes:is,batchSearchByHash:xI,batchSearchByHashToMap:VI,checkHashExists:FI,iterateDBI:yI,greaterThan:PI,greaterThanEqual:HI,lessThan:BI,lessThanEqual:vI,between:GI}});var lr=T((pB,wE)=>{"use strict";var OE=Vn(),gt=N(),IE=Nn(),kI=require("lodash"),YI=rn(),bE=p(),{promisify:CE}=require("util"),G=f(),{handleHDBError:Kn,hdb_errors:$I}=V(),{HDB_ERROR_MSGS:Wn,HTTP_STATUS_CODES:yE}=$I,KI=$();KI.initSync();var pE=B(),WI=Ft(),{getSchemaPath:QI}=q(),as=CE(OE.searchByValue),JI=CE(OE.searchByHash),ur="name",ME="hash_attribute",lo="schema",XI="schema_table",ZI="attribute";wE.exports={describeAll:zI,describeTable:Qn,describeSchema:eb};async function zI(e){try{let t=bE.isEmptyOrZeroLength(e),r,s;t||(r=e.hdb_user.role.permission,s=r.super_user||r.cluster_user);let n={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,search_attribute:ur,search_value:G.WILDCARD_SEARCH_VALUE,get_attributes:[ur]},i=await as(n),o={},_={};for(let h of i)o[h.name]=!0,!t&&!s&&(_[h.name]=r[h.name].describe);let c={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,search_attribute:G.ID_ATTRIBUTE_STRING,search_value:G.WILDCARD_SEARCH_VALUE,get_attributes:[ME,G.ID_ATTRIBUTE_STRING,ur,lo]},u=await as(c),l=[];for(let h of u)try{let d;if(t||s)d=await Qn({schema:h.schema,table:h.name});else if(r&&r[h.schema].describe&&r[h.schema].tables[h.name].describe){let A=r[h.schema].tables[h.name].attribute_permissions;d=await Qn({schema:h.schema,table:h.name},A)}d&&l.push(d)}catch(d){gt.error(d)}let E={};for(let h in l)t||s?(E[l[h].schema]==null&&(E[l[h].schema]={}),E[l[h].schema][l[h].name]=l[h],o[l[h].schema]&&delete o[l[h].schema]):_[l[h].schema]&&(E[l[h].schema]==null&&(E[l[h].schema]={}),E[l[h].schema][l[h].name]=l[h],o[l[h].schema]&&delete o[l[h].schema]);for(let h in o)t||s?E[h]={}:_[h]&&(E[h]={});return E}catch(t){return gt.error("Got an error in describeAll"),gt.error(t),Kn(new Error,Wn.DESCRIBE_ALL_ERR)}}a(zI,"describeAll");async function Qn(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={},o=IE.describe_table(e);if(o)throw o;if(r===G.SYSTEM_SCHEMA_NAME)return global.hdb_schema[G.SYSTEM_SCHEMA_NAME][s];let _={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,hash_attribute:G.SYSTEM_TABLE_HASH_ATTRIBUTES.TABLE_TABLE_HASH_ATTRIBUTE,search_attribute:ur,search_value:s,hash_values:[],get_attributes:[G.WILDCARD_SEARCH_VALUE]},c=Array.from(await as(_));if(!c||c.length===0)throw Kn(new Error,Wn.TABLE_NOT_FOUND(e.schema,e.table),yE.NOT_FOUND);for await(let u of c)try{if(u.schema!==r)continue;if(i=u,!i.hash_attribute)throw Kn(new Error,Wn.INVALID_TABLE_ERR(i));let l={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,hash_attribute:G.SYSTEM_TABLE_HASH_ATTRIBUTES.ATTRIBUTE_TABLE_HASH_ATTRIBUTE,search_attribute:XI,search_value:r+"."+s,get_attributes:[ZI]},E=Array.from(await as(l));E=kI.uniqBy(E,h=>h.attribute),n&&n.length>0&&(E=jI(n)),i.attributes=E,i.clustering_stream_name=YI.createNatsTableStreamName(u.schema,u.name);try{let h=QI(i.schema,i.name),d=await pE.openEnvironment(h,i.name),A=pE.statDBI(d,i.hash_attribute);i.record_count=A.entryCount;for(let{key:R}of WI.lessThan(d,i.hash_attribute,G.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,1/0,!0,1,0))i.last_updated_record=R}catch(h){gt.warn(`unable to stat table dbi due to ${h}`)}}catch(l){gt.error(`There was an error getting attributes for table '${u.name}'`),gt.error(l)}return i}a(Qn,"descTable");function jI(e){return e.reduce((t,r)=>(r.describe&&t.push({attribute:r.attribute_name}),t),[])}a(jI,"getAttrsByPerms");async function eb(e){let t=IE.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:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,hash_attribute:G.SYSTEM_TABLE_HASH_ATTRIBUTES.TABLE_TABLE_HASH_ATTRIBUTE,search_attribute:lo,search_value:s,hash_values:[],get_attributes:[ME,G.ID_ATTRIBUTE_STRING,ur,lo]},i=Array.from(await as(n));if(i&&i.length<1){let o={schema:G.SYSTEM_SCHEMA_NAME,table:G.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,hash_attribute:G.SYSTEM_TABLE_HASH_ATTRIBUTES.SCHEMA_TABLE_HASH_ATTRIBUTE,hash_values:[s],get_attributes:[ur]},_=Array.from(await JI(o));if(_&&_.length<1)throw Kn(new Error,Wn.SCHEMA_NOT_FOUND(e.schema),yE.NOT_FOUND);return{}}else{let o={};return await Promise.all(i.map(async _=>{try{let c;if(r&&r.tables[_.name]&&(c=r.tables[_.name]),bE.isEmpty(c)||c.describe){let u=await Qn({schema:e.schema,table:_.name},c?c.attribute_permissions:null);u&&(o[u.name]=u)}}catch(c){gt.error(`Error describing schema table '${e.schema}.${_}'`),gt.error(c)}})),o}}a(eb,"describeSchema")});var os=T((IB,HE)=>{var Er=Ht(),{callbackify:DE,promisify:tb}=require("util");HE.exports={setSchemaDataToGlobal:LE,getTableSchema:nb,getSystemSchema:ab,setSchemaDataToGlobalAsync:tb(LE)};var PE=lr(),rb=DE(PE.describeAll),sb=DE(PE.describeTable);function LE(e){rb(null,(t,r)=>{if(t){e(t);return}r.system||(r.system=Er),global.hdb_schema=r,e(null,null)})}a(LE,"setSchemaDataToGlobal");function UE(e,t){return e==="system"?Er[t]:global.hdb_schema[e][t]}a(UE,"returnSchema");function nb(e,t,r){!global.hdb_schema||!global.hdb_schema[e]||!global.hdb_schema[e][t]?ib(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,UE(e,t))}):r(null,UE(e,t))}a(nb,"getTableSchema");function ib(e,t,r){let s={table:t,schema:e};if(e==="system"){global.hdb_schema?global.hdb_schema.system=Er:global.hdb_schema={system:Er},r();return}sb(s,(n,i)=>{if(n){r(n);return}if(!i.schema&&!i.name){r();return}global.hdb_schema||(global.hdb_schema={system:Er}),global.hdb_schema[e]||(global.hdb_schema[e]={}),global.hdb_schema[e][t]=i,r()})}a(ib,"setTableDataToGlobal");function ab(){return Er}a(ab,"getSystemSchema")});var _s=T((CB,GE)=>{"use strict";var Xn=Fa(),Le=p(),ob=require("util"),Zn=mt(),_b=os(),Eo=N(),{handleHDBError:Nt,hdb_errors:cb}=V(),{HTTP_STATUS_CODES:xt}=cb,ub=ob.promisify(_b.getTableSchema),lb="updated",BE="inserted",vE="upserted";GE.exports={insert:db,update:hb,upsert:Tb,validation:Eb,flush:Sb};async function Eb(e){if(Le.isEmpty(e))throw new Error("invalid update parameters defined.");if(Le.isEmptyOrZeroLength(e.schema))throw new Error("invalid schema specified.");if(Le.isEmptyOrZeroLength(e.table))throw new Error("invalid table specified.");let t=await ub(e.schema,e.table),r=Xn(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={},o=!1;return e.operation==="update"&&(o=!0),e.records.forEach(_=>{if(o&&Le.isEmptyOrZeroLength(_[s]))throw Eo.error("a valid hash attribute must be provided with update record:",_),new Error("a valid hash attribute must be provided with update record");if(!Le.isEmptyOrZeroLength(_[s])&&(_[s]==="null"||_[s]==="undefined"))throw Eo.error(`a valid hash value must be provided with ${e.operation} record:`,_),new Error(`"${_[s]}" is not a valid hash attribute value`);!Le.isEmpty(_[s])&&_[s]!==""&&n.has(Le.autoCast(_[s]))&&(_.skip=!0),n.add(Le.autoCast(_[s]));for(let c in _)i[c]=1}),i[s]=1,{schema_table:t,hashes:Array.from(n),attributes:Object.keys(i)}}a(Eb,"validation");async function db(e){if(e.operation!=="insert")throw new Error("invalid operation, must be insert");let t=Xn(e);if(t)throw Nt(new Error,t.message,xt.BAD_REQUEST);let r=Le.checkSchemaTableExist(e.schema,e.table);if(r)throw Nt(new Error,r,xt.BAD_REQUEST);let s=await Zn.createRecords(e);return Jn(BE,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time)}a(db,"insertData");async function hb(e){if(e.operation!=="update")throw new Error("invalid operation, must be update");let t=Xn(e);if(t)throw Nt(new Error,t.message,xt.BAD_REQUEST);let r=Le.checkSchemaTableExist(e.schema,e.table);if(r)throw Nt(new Error,r,xt.BAD_REQUEST);let s=await Zn.updateRecords(e);return Le.isEmpty(s.existing_rows)?Jn(lb,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time):Jn(s.update_action,[],e,s.hashes,void 0,s.txn_time)}a(hb,"updateData");async function Tb(e){if(e.operation!=="upsert")throw Nt(new Error,"invalid operation, must be upsert",xt.INTERNAL_SERVER_ERROR);let t=Xn(e);if(t)throw Nt(new Error,t.message,xt.BAD_REQUEST);let r=Le.checkSchemaTableExist(e.schema,e.table);if(r)throw Nt(new Error,r,xt.BAD_REQUEST);try{let s=await Zn.upsertRecords(e);return Jn(vE,s.written_hashes,e,[],s.new_attributes,s.txn_time)}catch(s){let n=`There was an error during an upsert op: ${s}`;throw Nt(s,null,null,Eo.ERR,n)}}a(Tb,"upsertData");function Jn(e,t,r,s,n,i){let o={message:`${e} ${t.length} of ${t.length+s.length} records`,new_attributes:n,txn_time:i};return e===BE?(o.inserted_hashes=t,o.skipped_hashes=s,o):e===vE?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=s,o)}a(Jn,"returnObject");function Sb(e){return Zn.flush(e.schema,e.table)}a(Sb,"flush")});var VE=T((MB,xE)=>{var fb=Pe(),ho=require("joi"),{hdb_schema_table:qE}=ar(),FE={schema:qE,table:qE},mb={date:ho.date().iso().required()},Ab={timestamp:ho.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};xE.exports=function(e,t){let r=t==="timestamp"?{...FE,...Ab}:{...FE,...mb},s=ho.object(r);return fb.validateBySchema(e,s)}});var KE=T((wB,$E)=>{var Rb=Pe(),kE=require("joi"),{hdb_schema_table:YE}=ar(),gb=kE.object({schema:YE,table:YE,hash_values:kE.array().required()});$E.exports=function(e){return Rb.validateBySchema(e,gb)}});var QE=T((LB,WE)=>{"use strict";var zn=class{constructor(t,r,s,n,i){this.operation=t,this.schema=r,this.table=s,this.hash_attribute=n,this.records=i}};a(zn,"InsertObject");var jn=class{constructor(t,r,s,n,i,o){this.schema=t,this.table=r,this.search_attribute=s,this.hash_attribute=n,this.get_attributes=i,this.search_value=o}};a(jn,"NoSQLSeachObject");var ei=class{constructor(){this.message=void 0,this.deleted_hashes=[],this.skipped_hashes=[]}};a(ei,"DeleteResponseObject");WE.exports={InsertObject:zn,NoSQLSeachObject:jn,DeleteResponseObject:ei}});var fo=T((DB,jE)=>{"use strict";var XE=VE(),Nb=KE(),ti=p(),JE=require("moment"),ZE=N(),{promisify:pb,callbackify:Ob}=require("util"),Vt=f(),Ib=os(),To=pb(Ib.getTableSchema),So=mt(),{DeleteResponseObject:bb}=QE(),{handleHDBError:pt,hdb_errors:Cb}=V(),{HDB_ERROR_MSGS:ri,HTTP_STATUS_CODES:Ot}=Cb,yb="records successfully deleted",Mb=Ob(zE);jE.exports={delete:Mb,deleteRecord:zE,deleteFilesBefore:wb,deleteAuditLogsBefore:Lb};async function wb(e){let t=XE(e,"date");if(t)throw pt(t,t.message,Ot.BAD_REQUEST,void 0,void 0,!0);if(!JE(e.date,JE.ISO_8601).isValid())throw pt(new Error,ri.INVALID_DATE,Ot.BAD_REQUEST,Vt.LOG_LEVELS.ERROR,ri.INVALID_DATE,!0);let s=ti.checkSchemaTableExist(e.schema,e.table);if(s)throw pt(new Error,s,Ot.NOT_FOUND,Vt.LOG_LEVELS.ERROR,s,!0);let n=await So.deleteRecordsBefore(e);if(await To(e.schema,e.table),ZE.info(`Finished deleting files before ${e.date}`),n&&n.message)return n.message}a(wb,"deleteFilesBefore");async function Lb(e){let t=XE(e,"timestamp");if(t)throw pt(t,t.message,Ot.BAD_REQUEST,void 0,void 0,!0);if(isNaN(e.timestamp))throw pt(new Error,ri.INVALID_VALUE("Timestamp"),Ot.BAD_REQUEST,Vt.LOG_LEVELS.ERROR,ri.INVALID_VALUE("Timestamp"),!0);let r=ti.checkSchemaTableExist(e.schema,e.table);if(r)throw pt(new Error,r,Ot.NOT_FOUND,Vt.LOG_LEVELS.ERROR,r,!0);let s=await So.deleteAuditLogsBefore(e);return await To(e.schema,e.table),ZE.info(`Finished deleting audit logs before ${e.timestamp}`),s}a(Lb,"deleteAuditLogsBefore");async function zE(e){let t=Nb(e);if(t)throw pt(t,t.message,Ot.BAD_REQUEST,void 0,void 0,!0);let r=ti.checkSchemaTableExist(e.schema,e.table);if(r)throw pt(new Error,r,Ot.NOT_FOUND,Vt.LOG_LEVELS.ERROR,r,!0);try{await To(e.schema,e.table);let s=await So.deleteRecords(e);return ti.isEmptyOrZeroLength(s.message)&&(s.message=`${s.deleted_hashes.length} of ${e.hash_values.length} ${yb}`),s}catch(s){if(s.message===Vt.SEARCH_NOT_FOUND_MESSAGE){let n=new bb;return n.message=Vt.SEARCH_NOT_FOUND_MESSAGE,n.skipped_hashes=e.hash_values.length,n.deleted_hashes=0,n}throw s}}a(zE,"deleteRecord")});var td=T((HB,ed)=>{var mo=Pe(),ne={username:{presence:!0,format:"[\\w\\-\\_]+",exclusion:{within:["system"],message:"You cannot create tables within the system schema"}},password:{presence:!0},role:{presence:!0,format:"[\\w\\-\\_]+"},active:{presence:!0,inclusion:{within:[!0,!1],message:"must be a boolean"}}};function Ub(e){return ne.password.presence=!0,ne.username.presence=!0,ne.role.presence=!0,ne.active.presence=!0,mo.validateObject(e,ne)}a(Ub,"addUserValidation");function Db(e){return ne.password.presence=!1,ne.username.presence=!0,ne.role.presence=!1,ne.active.presence=!1,mo.validateObject(e,ne)}a(Db,"alterUserValidation");function Pb(e){return ne.password.presence=!1,ne.username.presence=!0,ne.role.presence=!1,ne.active.presence=!1,mo.validateObject(e,ne)}a(Pb,"dropUserValidation");ed.exports={addUserValidation:Ub,alterUserValidation:Db,dropUserValidation:Pb}});var us=T((GB,Sd)=>{"use strict";var ad="username is required",od="nothing to update, must supply active, role or password to update",_d="password cannot be an empty string",cd="If role is specified, it cannot be empty.",ud="active must be true or false";Sd.exports={addUser:Vb,alterUser:kb,dropUser:$b,userInfo:Kb,listUsers:ni,listUsersExternal:Wb,setUsersToGlobal:cs,findAndValidateUser:Xb,getClusterUser:Zb,USERNAME_REQUIRED:ad,ALTERUSER_NOTHING_TO_UPDATE:od,EMPTY_PASSWORD:_d,EMPTY_ROLE:cd,ACTIVE_BOOLEAN:ud};var ld=_s(),Hb=fo(),Ro=Dn(),Ed=td(),dd=Vn(),go=ls(),pe=p(),hd=require("validate.js"),b=N(),{promisify:No}=require("util"),po=rn(),rd=f(),sd=Ut(),Bb=js(),vB=$(),vb=Wa(),Gb=Ht(),{handleHDBError:We,hdb_errors:qb}=V(),{HTTP_STATUS_CODES:Qe,AUTHENTICATION_ERROR_MSGS:Ao,HDB_ERROR_MSGS:dr}=qb,{UserEventMsg:Oo}=kt(),nd=require("lodash"),Td={username:!0,active:!0,role:!0,password:!0},id=new Map,si=No(dd.searchByValue),Fb=No(dd.searchByHash),xb=No(Hb.delete);async function Vb(e){let t=hd.cleanAttributes(e,Td),r=Ed.addUserValidation(t);if(r)throw We(new Error,r.message,Qe.BAD_REQUEST,void 0,void 0,!0);let s={schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["id","permission","role"]},n;try{n=await si(s),n=n&&Array.from(n)}catch(c){throw b.error("There was an error searching for a role in add user"),b.error(c),c}if(!n||n.length<1)throw We(new Error,dr.ROLE_NAME_NOT_FOUND(t.role),Qe.NOT_FOUND,void 0,void 0,!0);if(n.length>1)throw We(new Error,dr.DUP_ROLES_FOUND(t.role),Qe.CONFLICT,void 0,void 0,!0);n[0].permission.cluster_user===!0&&(t.hash=po.encrypt(t.password)),t.password=Ro.hash(t.password),t.role=n[0].id;let i={operation:"insert",schema:"system",table:"hdb_user",records:[t]},o;try{o=await ld.insert(i)}catch(c){throw b.error("There was an error searching for a user."),b.error(c),c}b.debug(o);try{await cs()}catch(c){throw b.error("Got an error setting users to global"),b.error(c),c}if(o.skipped_hashes.length===1)throw We(new Error,dr.USER_ALREADY_EXISTS(t.username),Qe.CONFLICT,void 0,void 0,!0);let _=Object.assign({},t);return _.role=n[0],go.signalUserChange(new Oo(process.pid)),`${_.username} successfully added`}a(Vb,"addUser");async function kb(e){let t=hd.cleanAttributes(e,Td);if(pe.isEmptyOrZeroLength(t.username))throw new Error(ad);if(pe.isEmptyOrZeroLength(t.password)&&pe.isEmptyOrZeroLength(t.role)&&pe.isEmptyOrZeroLength(t.active))throw new Error(od);if(!pe.isEmpty(t.password)&&pe.isEmptyOrZeroLength(t.password.trim()))throw new Error(_d);if(!pe.isEmpty(t.active)&&!pe.isBoolean(t.active))throw new Error(ud);let r=Yb(t.username);if(!pe.isEmpty(t.password)&&!pe.isEmptyOrZeroLength(t.password.trim())&&(r&&(t.hash=po.encrypt(t.password)),t.password=Ro.hash(t.password)),t.role==="")throw new Error(cd);if(t.role){let i={schema:"system",table:"hdb_role",search_attribute:"role",search_value:t.role,get_attributes:["*"]},o;try{o=Array.from(await si(i)||[])}catch(_){throw b.error("Got an error searching for a role."),b.error(_),_}if(!o||o.length===0){let _=dr.ALTER_USER_ROLE_NOT_FOUND(t.role);throw b.error(_),We(new Error,_,Qe.NOT_FOUND,void 0,void 0,!0)}if(o.length>1){let _=dr.ALTER_USER_DUP_ROLES(t.role);throw b.error(_),We(new Error,_,Qe.CONFLICT,void 0,void 0,!0)}t.role=o[0].id}let s={operation:"update",schema:"system",table:"hdb_user",records:[t]},n;try{n=await ld.update(s)}catch(i){throw b.error("Error during update."),b.error(i),i}try{await cs()}catch(i){throw b.error("Got an error setting users to global"),b.error(i),i}return go.signalUserChange(new Oo(process.pid)),n}a(kb,"alterUser");function Yb(e){let t=!1,r=global.hdb_users.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}a(Yb,"isClusterUser");async function $b(e){try{let t=Ed.dropUserValidation(e);if(t)throw new Error(t);let r={table:"hdb_user",schema:"system",hash_values:[e.username]};if(pe.isEmpty(global.hdb_users.get(e.username)))throw We(new Error,dr.USER_NOT_EXIST(e.username),Qe.NOT_FOUND,void 0,void 0,!0);let s;try{s=await xb(r)}catch(n){throw b.error("Got an error deleting a user."),b.error(n),n}b.debug(s);try{await cs()}catch(n){throw b.error("Got an error setting users to global."),b.error(n),n}return go.signalUserChange(new Oo(process.pid)),`${e.username} successfully deleted`}catch(t){throw t}}a($b,"dropUser");async function Kb(e){let t={};try{if(!e||!e.hdb_user)return"There was no user info in the body";t=e.hdb_user;let r={schema:"system",table:"hdb_role",hash_values:[t.role.id],get_attributes:["*"]},s;try{s=await Fb(r)}catch(n){throw b.error("Got an error searching for a role."),b.error(n),n}t.role=s[0],delete t.password,delete t.refresh_token,delete t.hash}catch(r){throw b.error(r),r}return t}a(Kb,"userInfo");async function Wb(){let e;try{e=await ni()}catch(t){throw b.error("Got an error listing users."),b.error(t),t}try{e.forEach(t=>{delete t.password,delete t.hash,delete t.refresh_token})}catch{throw new Error("there was an error massaging the user data")}return[...e.values()]}a(Wb,"listUsersExternal");async function ni(){try{let e={schema:"system",table:"hdb_role",search_value:"*",search_attribute:"role",get_attributes:["*"]},t;try{t=await si(e)}catch(o){throw b.error("Got an error searching for roles."),b.error(o),o}let r={};for(let o of t)r[o.id]=nd.cloneDeep(o);if(Object.keys(r).length===0)return null;let s={schema:"system",table:"hdb_user",search_value:"*",search_attribute:"username",get_attributes:["*"]},n;try{n=await si(s)}catch(o){throw b.error("Got an error searching for users."),b.error(o),o}let i=new Map;for(let o of n)o=nd.cloneDeep(o),o.role=r[o.role],Qb(o.role),i.set(o.username,o);return(await vb.getLicense()).enterprise?i:Jb(Array.from(i.values()))}catch(e){throw b.error("got an error listing users"),b.error(e),pe.errorizeMessage(e)}return null}a(ni,"listUsers");function Qb(e){try{if(!e){b.error("invalid user role found.");return}e.permission.system||(e.permission.system={}),e.permission.system.tables||(e.permission.system.tables={});for(let t of Object.keys(Gb)){let r={read:!!e.permission.super_user,insert:!1,update:!1,delete:!1,attribute_permissions:[]};e.permission.system.tables[t]=r}}catch(t){b.error("Got an error trying to set system permissions."),b.error(t)}}a(Qb,"appendSystemTablesToRole");function Jb(e){try{if(b.info("No enterprise license found. System is limited to 1 clustering role and 1 user role"),!e)return new Map;let t=Object.create(null),r=new Map;e.forEach((n,i)=>{n.role&&(n.role.permission.cluster_user===void 0||n.role.permission.cluster_user===!1)?n.role.permission.super_user===!0&&(t[n.role.id]||(t[n.role.id]=new Map),t[n.role.id].set(n.username,n)):r.set(n.username,n)});let s={role:void 0,count:0};return Object.keys(t).forEach(n=>{let i=t[n];i.size>=s.count&&(s.role=n,s.count=i.size)}),s.role===void 0?(b.warn("No roles found with active users."),new Map):(r=new Map([...r,...t[s.role]]),r)}catch(t){return b.error("error filtering users."),b.error(t),new Map}}a(Jb,"nonEnterpriseFilter");async function cs(){try{let e=await ni();global.hdb_users=e}catch(e){throw b.error(e),e}}a(cs,"setUsersToGlobal");async function Xb(e,t,r=!0){global.hdb_users||await cs();let s=global.hdb_users.get(e);if(!s)throw We(new Error,Ao.GENERIC_AUTH_FAIL,Qe.UNAUTHORIZED,void 0,void 0,!0);if(s&&!s.active)throw We(new Error,Ao.USER_INACTIVE,Qe.UNAUTHORIZED,void 0,void 0,!0);let n={active:s.active,username:s.username};if(s.refresh_token&&(n.refresh_token=s.refresh_token),s.role&&(n.role=s.role),r===!0){if(id.get(t)===s.password)return n;if(Ro.validate(s.password,t))id.set(t,s.password);else throw We(new Error,Ao.GENERIC_AUTH_FAIL,Qe.UNAUTHORIZED,void 0,void 0,!0)}return n}a(Xb,"findAndValidateUser");async function Zb(){let e=await ni(),t=Bb.getConfigFromFile(rd.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!pe.isEmpty(r)&&r?.role?.role===rd.ROLE_TYPES_ENUM.CLUSTER_USER)return r.decrypt_hash=po.decrypt(r.hash),r.uri_encoded_d_hash=encodeURIComponent(r.decrypt_hash),r.uri_encoded_name=encodeURIComponent(r.username),r.sys_name=r.username+sd.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+sd.SERVER_SUFFIX.ADMIN,r}a(Zb,"getClusterUser")});var ii=T((FB,Rd)=>{"use strict";var Yt=N(),Oe=f(),zb=Gl(),fd=os(),jb=lr(),eC=us(),{validateEvent:Ad}=kt(),Es=mt(),tC=require("process"),rC={[Oe.ITC_EVENT_TYPES.SCHEMA]:sC,[Oe.ITC_EVENT_TYPES.USER]:iC};async function sC(e){let t=Ad(e);if(t){Yt.error(t);return}Yt.trace("ITC schemaHandler received schema event:",e),await zb(e.message),await nC(e.message)}a(sC,"schemaHandler");async function nC(e){try{if(Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME),Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME),global.hdb_schema!==void 0&&typeof global.hdb_schema=="object"&&e.operation!==void 0)switch(e.operation){case"drop_schema":delete global.hdb_schema[e.schema];break;case"drop_table":global.hdb_schema[e.schema]!==void 0&&delete global.hdb_schema[e.schema][e.table];break;case"create_schema":global.hdb_schema[e.schema]===void 0&&(global.hdb_schema[e.schema]={});break;case"create_table":case"create_attribute":global.hdb_schema[e.schema]===void 0&&(global.hdb_schema[e.schema]={}),global.hdb_schema[e.schema][e.table]=await jb.describeTable({schema:e.schema,table:e.table});break;default:fd.setSchemaDataToGlobal(md);break}else fd.setSchemaDataToGlobal(md)}catch(t){Yt.error(t)}}a(nC,"syncSchemaMetadata");function md(e){e&&Yt.error(e)}a(md,"handleErrorCallback");async function iC(e){try{Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.USER_TABLE_NAME),Es.resetReadTxn(Oe.SYSTEM_SCHEMA_NAME,Oe.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME);let t=Ad(e);if(t){Yt.error(t);return}Yt.trace(`ITC userHandler ${Oe.HDB_ITC_CLIENT_PREFIX}${tC.pid} received user event:`,e),await eC.setUsersToGlobal()}catch(t){Yt.error(t)}}a(iC,"userHandler");Rd.exports=rC});var kt=T(($B,Nd)=>{"use strict";var VB=N(),Io=p(),aC=f(),{ITC_ERRORS:ds}=be(),{parentPort:kB,threadId:oC,isMainThread:_C,workerData:YB}=require("worker_threads"),{onMessageFromWorkers:cC,broadcast:uC}=vn();Nd.exports={sendItcEvent:lC,validateEvent:gd,SchemaEventMsg:EC,UserEventMsg:dC};var ai;cC(e=>{ai=ai||ii(),gd(e),ai[e.type]&&ai[e.type](e)});function lC(e){!_C&&e.message&&(e.message.originator=oC),uC(e)}a(lC,"sendItcEvent");function gd(e){if(typeof e!="object")return ds.INVALID_ITC_DATA_TYPE;if(!e.hasOwnProperty("type")||Io.isEmpty(e.type))return ds.MISSING_TYPE;if(!e.hasOwnProperty("message")||Io.isEmpty(e.message))return ds.MISSING_MSG;if(!e.message.hasOwnProperty("originator")||Io.isEmpty(e.message.originator))return ds.MISSING_ORIGIN;if(aC.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return ds.INVALID_EVENT(e.type)}a(gd,"validateEvent");function EC(e,t,r,s=void 0,n=void 0){this.originator=e,this.operation=t,this.schema=r,this.table=s,this.attribute=n}a(EC,"SchemaEventMsg");function dC(e){this.originator=e}a(dC,"UserEventMsg")});var ls=T((QB,bd)=>{"use strict";var pd=f(),WB=p(),oi=N(),Od=El(),hr,{sendItcEvent:Id}=kt();function hC(e){try{oi.trace("signalSchemaChange called with message:",e),hr=hr||ii();let t=new Od(pd.ITC_EVENT_TYPES.SCHEMA,e);hr.schema(t),Id(t)}catch(t){oi.error(t)}}a(hC,"signalSchemaChange");function TC(e){try{oi.trace("signalUserChange called with message:",e),hr=hr||ii();let t=new Od(pd.ITC_EVENT_TYPES.USER,e);hr.user(t),Id(t)}catch(t){oi.error(t)}}a(TC,"signalUserChange");bd.exports={signalSchemaChange:hC,signalUserChange:TC}});var _i=T((XB,yd)=>{"use strict";var Cd=p(),SC=f(),fC=N(),mC=bn(),AC=In(),RC=ls(),{SchemaEventMsg:gC}=kt(),NC="already exists in";yd.exports=pC;async function pC(e,t,r){if(Cd.isEmptyOrZeroLength(r))return r;let s=[];Cd.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 OC(e,t.schema,t.name,i)})),n}a(pC,"lmdbCheckForNewAttributes");async function OC(e,t,r,s){let n=new AC(t,r,s,void 0,!0);e&&(n.hdb_auth_header=e);try{await IC(n)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(NC))fC.warn(`attribute ${t}.${r}.${s} already exists`);else throw i}}a(OC,"createNewAttribute");async function IC(e){let t;return t=await mC(e),RC.signalSchemaChange(new gC(process.pid,SC.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(IC,"createAttribute")});var Tr=T((zB,Md)=>{"use strict";var ci=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}};a(ci,"LMDBTransactionObject");Md.exports=ci});var Ld=T((ev,wd)=>{"use strict";var bC=Tr(),CC=f().OPERATIONS_ENUM,ui=class extends bC{constructor(t,r,s,n,i=void 0){super(CC.INSERT,r,s,n,i),this.records=t}};a(ui,"LMDBInsertTransactionObject");wd.exports=ui});var Dd=T((rv,Ud)=>{"use strict";var yC=Tr(),MC=f().OPERATIONS_ENUM,li=class extends yC{constructor(t,r,s,n,i,o=void 0){super(MC.UPDATE,s,n,i,o),this.records=t,this.original_records=r}};a(li,"LMDBUpdateTransactionObject");Ud.exports=li});var Hd=T((nv,Pd)=>{"use strict";var wC=Tr(),LC=f().OPERATIONS_ENUM,Ei=class extends wC{constructor(t,r,s,n,i,o=void 0){super(LC.UPSERT,s,n,i,o),this.records=t,this.original_records=r}};a(Ei,"LMDBUpsertTransactionObject");Pd.exports=Ei});var vd=T((av,Bd)=>{"use strict";var UC=Tr(),DC=f().OPERATIONS_ENUM,di=class extends UC{constructor(t,r,s,n,i=void 0){super(DC.DELETE,s,n,t,i),this.original_records=r}};a(di,"LMDBDeleteTransactionObject");Bd.exports=di});var hs=T((cv,xd)=>{"use strict";var _v=require("path"),Gd=B(),PC=Ld(),HC=Dd(),BC=Hd(),vC=vd(),Sr=ee(),qd=p(),{CONFIG_PARAMS:GC}=f(),Fd=$();Fd.initSync();var hi=f().OPERATIONS_ENUM,{getTransactionAuditStorePath:qC}=q();xd.exports=FC;async function FC(e,t){if(Fd.get(GC.LOGGING_AUDITLOG)===!1)return;let r=qC(e.schema,e.table),s=await Gd.openEnvironment(r,e.table,!0),n=xC(e,t);if(!(n===void 0||n.hash_values.length===0)&&s!==void 0){Gd.initializeDBIs(s,Sr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Sr.TRANSACTIONS_DBIS);let i=n.timestamp;return await s.dbis[Sr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(i,()=>{s.dbis[Sr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(i,n),qd.isEmpty(n.user_name)||s.dbis[Sr.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(n.user_name,i);for(let o=0;o<n.hash_values.length;o++)s.dbis[Sr.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(n.hash_values[o],i)})}}a(FC,"writeTransaction");function xC(e,t){let r=qd.isEmpty(e.hdb_user)?void 0:e.hdb_user.username;if(e.operation===hi.INSERT)return new PC(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.UPDATE)return new HC(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.UPSERT)return new BC(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.DELETE)return new vC(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(xC,"createTransactionObject")});var bo=T((Ev,Vd)=>{"use strict";var VC=Cn(),lv=Mn(),Ts=f(),kC=Ln(),YC=ir().insertRecords,$C=B(),KC=N(),WC=_i(),{getSchemaPath:QC}=q(),JC=hs();Vd.exports=XC;async function XC(e){try{let{schema_table:t,attributes:r}=VC(e);kC(e,r,t.hash_attribute),e.schema!==Ts.SYSTEM_SCHEMA_NAME&&(r.includes(Ts.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(Ts.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(Ts.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(Ts.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await WC(e.hdb_auth_header,t,r),n=QC(e.schema,e.table),i=await $C.openEnvironment(n,e.table),o=await YC(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await JC(e,o)}catch(_){KC.error(`unable to write transaction due to ${_.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:s,txn_time:o.txn_time}}catch(t){throw t}}a(XC,"lmdbCreateRecords")});var $d=T((hv,Yd)=>{"use strict";var kd=f(),ZC=bo(),zC=Mn(),jC=require("fs-extra"),{getSchemaPath:ey}=q();Yd.exports=ty;async function ty(e){let t=[{name:e.schema,createddate:Date.now()}],r=new zC(kd.SYSTEM_SCHEMA_NAME,kd.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await ZC(r),await jC.mkdirp(ey(e.schema))}a(ty,"lmdbCreateSchema")});var Wd=T((Sv,Kd)=>{"use strict";var Ti=class{constructor(t=[],r=[],s=void 0,n=[]){this.deleted=t,this.skipped=r,this.txn_time=s,this.original_records=n}};a(Ti,"DeleteRecordsResponseObject");Kd.exports=Ti});var Mo=T((gv,Xd)=>{"use strict";var Qd=B(),Co=Dt(),yo=be().LMDB_ERRORS_ENUM,ry=ee(),Jd=N(),mv=p(),sy=require("lmdb"),ny=Wd(),iy=f(),{OVERFLOW_MARKER:Av,MAX_SEARCH_KEY_LENGTH:Rv}=ry,ay=iy.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function oy(e,t,r,s){if(Co.validateEnv(e),t===void 0)throw new Error(yo.HASH_ATTRIBUTE_REQUIRED);if(!Array.isArray(r))throw r===void 0?new Error(yo.IDS_REQUIRED):new Error(yo.IDS_MUST_BE_ITERABLE);try{let n=Qd.listDBIs(e);Qd.initializeDBIs(e,t,n);let i=new ny,o,_=[],c=[];for(let h=0,d=r.length;h<d;h++)try{o=r[h];let A=e.dbis[t].get(o);if(!A||s&&A[ay]>s){i.skipped.push(o);continue}let R=e.dbis[t].ifVersion(o,sy.IF_EXISTS,()=>{e.dbis[t].remove(o);for(let M=0;M<n.length;M++){let W=n[M];if(!A.hasOwnProperty(W)||W===t)continue;let x=e.dbis[W],F=A[W];if(F!=null)try{let Xe=Co.getIndexedValues(F);if(Xe)for(let Bs=0,M_=Xe.length;Bs<M_;Bs++)x.remove(Xe[Bs],o)}catch{Jd.warn(`cannot delete from attribute: ${W}, ${F}:${o}`)}}});_.push(R),c.push(o),i.original_records.push(A)}catch(A){Jd.warn(A),i.skipped.push(o)}let u=[],l=await Promise.all(_);for(let h=0,d=l.length;h<d;h++)l[h]===!0?i.deleted.push(c[h]):(i.skipped.push(c[h]),u.push(h));let E=0;for(let h=0;h<u.length;h++){let d=u[h];i.original_records.splice(d-E,1),E++}return i.txn_time=Co.getNextMonotonicTime(),i}catch(n){throw n}}a(oy,"deleteRecords");Xd.exports={deleteRecords:oy}});var Ss=T((pv,zd)=>{"use strict";var fr=p(),_y=Mo(),cy=B(),{getSchemaPath:uy}=q(),ly=hs(),Ey=N();zd.exports=dy;async function dy(e,t=!0){let s=global.hdb_schema[e.schema][e.table].hash_attribute;if(fr.isEmpty(s))throw new Error(`could not retrieve hash attribute for schema:${e.schema} and table ${e.table}`);try{if(fr.isEmptyOrZeroLength(e.hash_values)&&!fr.isEmptyOrZeroLength(e.records)){e.hash_values=[];for(let _=0;_<e.records.length;_++){let c=e.records[_][s];fr.isEmpty(c)||e.hash_values.push(c)}}if(fr.isEmptyOrZeroLength(e.hash_values))return Zd([],[]);if(!Array.isArray(e.hash_values))throw new Error("hash_values must be an array");if(fr.isEmptyOrZeroLength(e.records)){e.records=[];for(let _=0;_<e.hash_values.length;_++)e.records[_]={[s]:e.hash_values[_]}}let n=uy(e.schema,e.table),i=await cy.openEnvironment(n,e.table),o=await _y.deleteRecords(i,s,e.hash_values,e.__origin?.timestamp);try{t===!0&&await ly(e,o)}catch(_){Ey.error(`unable to write transaction due to ${_.message}`)}return Zd(o.deleted,o.skipped,o.txn_time)}catch(n){throw n}}a(dy,"lmdbDeleteRecords");function Zd(e,t,r){let s=e.length+t.length,n=s===1?"record":"records";return{message:`${e.length} of ${s} ${n} successfully deleted`,deleted_hashes:e,skipped_hashes:t,txn_time:r}}a(Zd,"createDeleteResponse")});var fs=T((bv,rh)=>{var jd=require("lodash"),eh=Pe(),D=require("joi"),hy=p(),{hdb_schema_table:Fe,checkValidTable:th}=ar(),{handleHDBError:Ty,hdb_errors:Sy}=V(),{HTTP_STATUS_CODES:fy}=Sy,Iv=D.object({schema:Fe,table:Fe,hash_values:D.array().min(0).items(D.alternatives(D.string(),D.number())).required(),get_attributes:D.array().min(1).items(Fe).required()}),my=D.object({schema:Fe,table:Fe,search_attribute:Fe,search_value:D.any().required(),get_attributes:D.array().min(1).items(Fe).required(),desc:D.bool(),limit:D.number().integer().min(1),offset:D.number().integer().min(0)}),Ay=D.object({schema:Fe,table:Fe,operator:D.string().valid("and","or").default("and").lowercase(),offset:D.number().integer().min(0),limit:D.number().integer().min(1),get_attributes:D.array().min(1).items(Fe).required(),conditions:D.array().min(1).items(D.object({search_attribute:Fe,search_type:D.string().valid("equals","contains","starts_with","ends_with","greater_than","greater_than_equal","less_than","less_than_equal","between").required(),search_value:D.when("search_type",{switch:[{is:"equals",then:D.any()},{is:"between",then:D.array().items(D.alternatives([D.string(),D.number()])).length(2)}],otherwise:D.alternatives(D.string(),D.number())}).required()})).required()});rh.exports=function(e,t){let r=null;switch(t){case"value":r=eh.validateBySchema(e,my);break;case"hashes":let i=function(o){n?n+=". "+o:n=o};var s=i;a(i,"addError");let n;i(th("schema",e.schema)),i(th("table",e.table)),e.hash_values?Array.isArray(e.hash_values)?e.hash_values.every(o=>typeof o=="string"||typeof o=="number")||i("'hash_values' must be strings or numbers"):i("'hash_values' must be an array"):i("'hash_values' is required"),e.get_attributes?Array.isArray(e.get_attributes)?e.get_attributes.length===0?i("'get_attributes' must contain at least 1 item"):e.get_attributes.every(o=>typeof o=="string"||typeof o=="number")||i("'get_attributes' must be strings or numbers"):i("'get_attributes' must be an array"):i("'get_attributes' is required"),n&&(r=new Error(n.trim()));break;case"conditions":r=eh.validateBySchema(e,Ay);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let n=hy.checkGlobalSchemaTable(e.schema,e.table);if(n)return Ty(new Error,n,fy.NOT_FOUND);let o=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=jd.filter(_,u=>u!=="*"&&u.attribute!=="*"&&!jd.some(o,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 wo=T((yv,sh)=>{"use strict";var Ry=B(),gy=fs(),{getSchemaPath:Ny}=q();sh.exports=py;function py(e){let t=gy(e,"hashes");if(t)throw t;let r=Ny(e.schema,e.table);return Ry.openEnvironment(r,e.table)}a(py,"initialize")});var Lo=T((wv,nh)=>{"use strict";var Oy=Ft(),Iy=wo();nh.exports=by;async function by(e){let t=await Iy(e),r=t.useReadTransaction();r.database=t;let s=global.hdb_schema[e.schema][e.table];try{return Oy.batchSearchByHashToMap(r,s.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(by,"lmdbGetDataByHash")});var fi=T((Uv,ih)=>{"use strict";var Si=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.hash_values=s,this.get_attributes=n}};a(Si,"SearchByHashObject");ih.exports=Si});var oh=T((Hv,ah)=>{"use strict";var Pv=fi(),Cy=Ft(),yy=wo();ah.exports=My;async function My(e){let t=await yy(e),r=global.hdb_schema[e.schema][e.table];return Cy.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(My,"lmdbSearchByHash")});var at=T((vv,_h)=>{"use strict";var mi=class{constructor(t,r,s,n,i,o,_,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=o,this.end_value=_,this.reverse=c,this.limit=u,this.offset=l}};a(mi,"SearchObject");_h.exports=mi});var Ai=T((qv,hh)=>{"use strict";var ie=Ft(),wy=B(),Ly=p(),g=ee(),$t=f(),Uy=Ht(),ch=be().LMDB_ERRORS_ENUM,{compareKeys:mr}=require("ordered-binary"),{getSchemaPath:Dy}=q(),ot=$t.SEARCH_WILDCARDS;async function Py(e,t,r){let s;e.schema===$t.SYSTEM_SCHEMA_NAME?s=Uy[e.table]:s=global.hdb_schema[e.schema][e.table];let n=dh(e,s.hash_attribute,r,t);return lh(e,n,s.hash_attribute,r)}a(Py,"prepSearch");async function lh(e,t,r,s){let n=Dy(e.schema,e.table),i=await wy.openEnvironment(n,e.table),o=Eh(i,e,t,r),_=o.transaction||i;if([g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,g.SEARCH_TYPES.SEARCH_ALL,g.SEARCH_TYPES.SEARCH_ALL_TO_MAP].indexOf(t)>=0)return o;if(By(e,r)===!1){let l=e.search_attribute;if(l===r)return s?uh(o,()=>!0):o.map(h=>({[r]:h.key}));let E=a(h=>({[r]:h.value,[l]:h.key}),"toObject");return s?uh(o,E):o.map(E)}let u=e.search_attribute===r?o.map(l=>l.key):o.map(l=>l.value);return s===!0?ie.batchSearchByHashToMap(_,r,e.get_attributes,u):ie.batchSearchByHash(_,r,e.get_attributes,u)}a(lh,"executeSearch");function Eh(e,t,r,s){let n,i=s;t.get_attributes.indexOf(s)<0&&(i=void 0);let{reverse:o,limit:_,offset:c}=t;switch(o=typeof o=="boolean"?o:!1,_=Number.isInteger(_)?_:void 0,c=Number.isInteger(c)?c:void 0,r){case g.SEARCH_TYPES.EQUALS:n=ie.equals(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.CONTAINS:n=ie.contains(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.ENDS_WITH:case g.SEARCH_TYPES._ENDS_WITH:n=ie.endsWith(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.STARTS_WITH:case g.SEARCH_TYPES._STARTS_WITH:n=ie.startsWith(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:return ie.batchSearchByHash(e,t.search_attribute,t.get_attributes,[t.search_value]);case g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:return ie.batchSearchByHashToMap(e,t.search_attribute,t.get_attributes,[t.search_value]);case g.SEARCH_TYPES.SEARCH_ALL:return ie.searchAll(e,s,t.get_attributes,o,_,c);case g.SEARCH_TYPES.SEARCH_ALL_TO_MAP:return ie.searchAllToMap(e,s,t.get_attributes,o,_,c);case g.SEARCH_TYPES.BETWEEN:n=ie.between(e,i,t.search_attribute,t.search_value,t.end_value,o,_,c);break;case g.SEARCH_TYPES.GREATER_THAN:case g.SEARCH_TYPES._GREATER_THAN:n=ie.greaterThan(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.GREATER_THAN_EQUAL:case g.SEARCH_TYPES._GREATER_THAN_EQUAL:n=ie.greaterThanEqual(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.LESS_THAN:case g.SEARCH_TYPES._LESS_THAN:n=ie.lessThan(e,i,t.search_attribute,t.search_value,o,_,c);break;case g.SEARCH_TYPES.LESS_THAN_EQUAL:case g.SEARCH_TYPES._LESS_THAN_EQUAL:n=ie.lessThanEqual(e,i,t.search_attribute,t.search_value,o,_,c);break;default:return Object.create(null)}return n}a(Eh,"searchByType");function Hy(e){let t=e.search_type,r=e.search_attribute,s=e.search_value;switch(t){case g.SEARCH_TYPES.EQUALS:return n=>n[r]===s;case g.SEARCH_TYPES.CONTAINS:return n=>typeof n[r]=="string"&&n[r].includes(s);case g.SEARCH_TYPES.ENDS_WITH:case g.SEARCH_TYPES._ENDS_WITH:return n=>typeof n[r]=="string"&&n[r].endsWith(s);case g.SEARCH_TYPES.STARTS_WITH:case g.SEARCH_TYPES._STARTS_WITH:return n=>typeof n[r]=="string"&&n[r].startsWith(s);case g.SEARCH_TYPES.BETWEEN:return n=>{let i=n[r];return mr(i,s[0])>=0&&mr(i,s[1])<=0};case g.SEARCH_TYPES.GREATER_THAN:case g.SEARCH_TYPES._GREATER_THAN:return n=>mr(n[r],s)>0;case g.SEARCH_TYPES.GREATER_THAN_EQUAL:case g.SEARCH_TYPES._GREATER_THAN_EQUAL:return n=>mr(n[r],s)>=0;case g.SEARCH_TYPES.LESS_THAN:case g.SEARCH_TYPES._LESS_THAN:return n=>mr(n[r],s)<0;case g.SEARCH_TYPES.LESS_THAN_EQUAL:case g.SEARCH_TYPES._LESS_THAN_EQUAL:return n=>mr(n[r],s)<=0;default:return Object.create(null)}}a(Hy,"filterByType");function uh(e,t){let r=new Map;for(let s of e)r.set(s.value,t(s));return r}a(uh,"createMapFromIterable");function By(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}a(By,"checkToFetchMore");function dh(e,t,r,s){if(Ly.isEmpty(s)){let n=e.search_value;typeof n=="object"?n=JSON.stringify(n):n=n.toString();let i=n.charAt(0),o=n.charAt(n.length-1),_=!1;if(e.search_attribute===t&&(_=!0),ot.indexOf(n)>-1)return r===!0?g.SEARCH_TYPES.SEARCH_ALL_TO_MAP:g.SEARCH_TYPES.SEARCH_ALL;if(n.indexOf(ot[0])<0&&n.indexOf(ot[1])<0)return _===!0?r===!0?g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:g.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:g.SEARCH_TYPES.EQUALS;if(ot.indexOf(i)>=0&&ot.indexOf(o)>=0)return e.search_value=e.search_value.slice(1,-1),g.SEARCH_TYPES.CONTAINS;if(ot.indexOf(i)>=0)return e.search_value=e.search_value.substr(1),g.SEARCH_TYPES.ENDS_WITH;if(ot.indexOf(o)>=0)return e.search_value=e.search_value.slice(0,-1),g.SEARCH_TYPES.STARTS_WITH;if(n.includes(ot[0])||n.includes(ot[1]))return g.SEARCH_TYPES.EQUALS;throw new Error(ch.UNKNOWN_SEARCH_TYPE)}else switch(s){case $t.VALUE_SEARCH_COMPARATORS.BETWEEN:return g.SEARCH_TYPES.BETWEEN;case $t.VALUE_SEARCH_COMPARATORS.GREATER:return g.SEARCH_TYPES.GREATER_THAN;case $t.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:return g.SEARCH_TYPES.GREATER_THAN_EQUAL;case $t.VALUE_SEARCH_COMPARATORS.LESS:return g.SEARCH_TYPES.LESS_THAN;case $t.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:return g.SEARCH_TYPES.LESS_THAN_EQUAL;default:throw new Error(ch.UNKNOWN_SEARCH_TYPE)}}a(dh,"createSearchTypeFromSearchObject");hh.exports={executeSearch:lh,createSearchTypeFromSearchObject:dh,prepSearch:Py,searchByType:Eh,filterByType:Hy}});var Sh=T((Vv,Th)=>{"use strict";var xv=at(),vy=fs(),Gy=p(),qy=f(),Fy=Ai();Th.exports=xy;function xy(e,t){if(!Gy.isEmpty(t)&&qy.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=vy(e,"value");if(s)throw s;let n=!0;return Fy.prepSearch(e,t,n)}a(xy,"lmdbGetDataByValue")});var Ar=T(($v,fh)=>{"use strict";var Yv=at(),Vy=fs(),ky=p(),Yy=f(),$y=Ai();fh.exports=Ky;async function Ky(e,t){if(!ky.isEmpty(t)&&Yy.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=Vy(e,"value");if(s)throw s;return $y.prepSearch(e,t,!1)}a(Ky,"lmdbSearchByValue")});var Ah=T((Qv,mh)=>{"use strict";var Wv=ee(),Ri=class{constructor(t,r,s,n,i=void 0,o=void 0,_="and"){this.schema=t,this.table=r,this.get_attributes=s,this.limit=i,this.offset=o,this.conditions=n,this.operator=_}};a(Ri,"SearchByConditionsObject");var gi=class{constructor(t,r,s){this.search_attribute=t,this.search_type=r,this.search_value=s}};a(gi,"SearchCondition");var Ni=class{constructor(t,r){this.attribute=t,this.desc=r}};a(Ni,"SortAttribute");mh.exports={SearchByConditionsObject:Ri,SearchCondition:gi,SortAttribute:Ni}});var Oh=T((Zv,ph)=>{"use strict";var Xv=Ah().SearchByConditionsObject,Wy=at(),Qy=fs(),Uo=Ft(),pi=ee(),Nh=Ai(),Jy=uo(),Xy=require("lodash"),{getSchemaPath:Zy}=q(),Rh=B(),{handleHDBError:zy,hdb_errors:jy}=V(),{HTTP_STATUS_CODES:eM}=jy,tM=1e8;ph.exports=rM;async function rM(e){let t=Qy(e,"conditions");if(t)throw zy(t,t.message,eM.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=Zy(e.schema,e.table),s=await Rh.openEnvironment(r,e.table),n=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)Rh.openDBI(s,u.search_attribute);let i=Xy.sortBy(e.conditions,u=>{if(u.estimated_count===void 0){let l=u.search_type;l===pi.SEARCH_TYPES.EQUALS?u.estimated_count=Uo.count(s,u.search_attribute,u.search_value):l===pi.SEARCH_TYPES.CONTAINS||l===pi.SEARCH_TYPES.ENDS_WITH?u.estimated_count=1/0:u.estimated_count=tM}return u.estimated_count}),o=s.useReadTransaction();o.database=s;let _=await gh(o,e,i[0],n.hash_attribute),c;if(!e.operator||e.operator.toLowerCase()==="and"){let u=s.dbis[n.hash_attribute],l=i.slice(1).map(Nh.filterByType),E=l.length,h=Uo.setGetWholeRowAttributes(s,e.get_attributes);c=_.map(d=>u.get(d,{transaction:o,lazy:!0})),E>0&&(c=c.filter(d=>{for(let A=0;A<E;A++)if(!l[A](d))return!1;return!0})),(e.offset||e.limit!==void 0)&&(c=c.slice(e.offset,e.limit!==void 0?(e.offset||0)+e.limit:void 0)),c=c.map(d=>Jy.parseRow(d,h))}else{for(let E=1;E<i.length;E++){let h=i[E],d=await gh(o,e,h,n.hash_attribute);_=_.concat(d)}let u=new Set,l=e.offset||0;_=_.filter(E=>u.has(E)?!1:(u.add(E),!0)).slice(l,e.limit&&e.limit+l),c=Uo.batchSearchByHash(o,n.hash_attribute,e.get_attributes,_)}return c.onDone=()=>{o.done()},c}a(rM,"lmdbSearchByConditions");async function gh(e,t,r,s){let n=new Wy(t.schema,t.table,void 0,void 0,s,t.get_attributes),i=r.search_type;return n.search_attribute=r.search_attribute,i===pi.SEARCH_TYPES.BETWEEN?(n.search_value=r.search_value[0],n.end_value=r.search_value[1]):n.search_value=r.search_value,Nh.searchByType(e,n,i,s).map(o=>o.value)}a(gh,"executeConditionSearch")});var ms=T((jv,Ih)=>{"use strict";var sM=f().OPERATIONS_ENUM,Oi=class{constructor(t,r,s,n=void 0){this.operation=sM.DELETE,this.schema=t,this.table=r,this.hash_values=s,this.__origin=n}};a(Oi,"DeleteObject");Ih.exports=Oi});var Do=T((tG,Dh)=>{"use strict";var Mh=at(),wh=ms(),Lh=Ar(),Uh=Ss(),le=f(),bh=p(),Ch=B(),{getTransactionAuditStorePath:nM,getSchemaPath:iM}=q(),yh=N();Dh.exports=aM;async function aM(e){try{if(bh.isEmpty(global.hdb_schema[e.schema])||bh.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await oM(e),await _M(e);let t=iM(e.schema,e.table);try{await Ch.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")yh.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=nM(e.schema,e.table);await Ch.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")yh.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(aM,"lmdbDropTable");async function oM(e){let t=new Mh(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r=Array.from(await Lh(t)),s=[];for(let i=0;i<r.length;i++){let o=r[i];s.push(o.id)}if(s.length===0)return;let n=new wh(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);await Uh(n)}a(oM,"deleteAttributesFromSystem");async function _M(e){let t=new Mh(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,e.table,void 0,[le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY,le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,le.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),r,s;try{r=Array.from(await Lh(t))}catch(i){throw i}for(let i=0;i<r.length;i++){let o=r[i];o.name===e.table&&o.schema===e.schema&&(s=o)}if(!s)throw new Error(`${e.schema}.${e.table} was not found`);let n=new wh(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[s.id]);try{await Uh(n)}catch(i){throw i}}a(_M,"dropTableFromSystem")});var Hh=T((sG,Ph)=>{"use strict";var cM=require("fs-extra"),uM=at(),lM=fi(),EM=ms(),dM=Do(),hM=Ss(),TM=Lo(),SM=Ar(),_t=f(),{getSchemaPath:fM}=q(),{handleHDBError:mM,hdb_errors:AM}=V(),{HDB_ERROR_MSGS:RM,HTTP_STATUS_CODES:gM}=AM;Ph.exports=NM;async function NM(e){let t;try{t=await pM(e.schema);let r=new uM(_t.SYSTEM_SCHEMA_NAME,_t.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,_t.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_KEY,t,void 0,[_t.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),s=Array.from(await SM(r));for(let o=0;o<s.length;o++){let _={schema:t,table:s[o].name};try{await dM(_)}catch(c){if(c.message!=="invalid environment")throw c}}let n=new EM(_t.SYSTEM_SCHEMA_NAME,_t.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await hM(n);let i=fM(t);await cM.remove(i)}catch(r){throw r}}a(NM,"lmdbDropSchema");async function pM(e){let t=new lM(_t.SYSTEM_SCHEMA_NAME,_t.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[e],[_t.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_NAME_KEY]),r,s;try{r=Array.from(await TM(t))}catch(n){throw n}for(let[,n]of r)n.name===e&&(s=e);if(!s)throw mM(new Error,RM.SCHEMA_NOT_FOUND(e),gM.NOT_FOUND,void 0,void 0,!0);return s}a(pM,"validateDropSchema")});var Po=T((iG,Bh)=>{"use strict";var Ii=class{constructor(t,r,s){this.schema=t,this.table=r,this.hash_attribute=s}};a(Ii,"CreateTableObject");Bh.exports=Ii});var Gh=T((_G,vh)=>{"use strict";var OM=require("fs-extra"),bi=B(),{getTransactionAuditStorePath:IM}=q(),Ho=ee(),oG=Po();vh.exports=bM;async function bM(e){let t;try{let r=IM(e.schema,e.table);await OM.mkdirp(r),t=await bi.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{bi.createDBI(t,Ho.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,!1,!0),bi.createDBI(t,Ho.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,!0,!1),bi.createDBI(t,Ho.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME,!0,!1)}catch(r){throw r.message=`unable to create dbi for ${e.schema}.${e.table} due to: ${r.message}`,r}return t}a(bM,"createTransactionsAuditEnvironment")});var Vh=T((uG,xh)=>{"use strict";var Bo=f(),qh=B(),CM=ir(),{getSystemSchemaPath:yM,getSchemaPath:MM}=q(),wM=Ht(),LM=bn(),vo=In(),UM=N(),DM=Gh(),qo=wM.hdb_table,Fh=[];for(let e=0;e<qo.attributes.length;e++)Fh.push(qo.attributes[e].attribute);xh.exports=PM;async function PM(e,t){let r=MM(t.schema,t.table),s=new vo(t.schema,t.table,Bo.TIME_STAMP_NAMES_ENUM.CREATED_TIME,void 0,!0),n=new vo(t.schema,t.table,Bo.TIME_STAMP_NAMES_ENUM.UPDATED_TIME,void 0,!0),i=new vo(t.schema,t.table,t.hash_attribute,void 0,!1,!0);try{if(await qh.createEnvironment(r,t.table),e!==void 0){let o=await qh.openEnvironment(yM(),Bo.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await CM.insertRecords(o,qo.hash_attribute,Fh,[e]),s.skip_table_check=!0,n.skip_table_check=!0,i.skip_table_check=!0,await Go(s),await Go(n),await Go(i)}await DM(t)}catch(o){throw o}}a(PM,"lmdbCreateTable");async function Go(e){try{await LM(e)}catch(t){UM.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Go,"createAttribute")});var Yh=T((EG,kh)=>{"use strict";var HM=Cn(),BM=Ln(),vM=_i(),As=f(),GM=ir().updateRecords,qM=B(),{getSchemaPath:FM}=q(),xM=hs(),VM=N();kh.exports=kM;async function kM(e){try{let{schema_table:t,attributes:r}=HM(e);BM(e,r,t.hash_attribute),e.schema!==As.SYSTEM_SCHEMA_NAME&&(r.includes(As.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||r.push(As.TIME_STAMP_NAMES_ENUM.CREATED_TIME),r.includes(As.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||r.push(As.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let s=await vM(e.hdb_auth_header,t,r),n=FM(e.schema,e.table),i=await qM.openEnvironment(n,e.table),o=await GM(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await xM(e,o)}catch(_){VM.error(`unable to write transaction due to ${_.message}`)}return{written_hashes:o.written_hashes,skipped_hashes:o.skipped_hashes,schema_table:t,new_attributes:s,txn_time:o.txn_time}}catch(t){throw t}}a(kM,"lmdbUpdateRecords")});var Kh=T((hG,$h)=>{"use strict";var YM=f().OPERATIONS_ENUM,Ci=class{constructor(t,r,s,n=void 0){this.operation=YM.UPSERT,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a(Ci,"UpsertObject");$h.exports=Ci});var Qh=T((fG,Wh)=>{"use strict";var SG=Kh(),$M=Cn(),KM=Ln(),WM=_i(),Rs=f(),QM=ir().upsertRecords,JM=B(),{getSchemaPath:XM}=q(),ZM=hs(),zM=N(),{handleHDBError:jM,hdb_errors:ew}=V();Wh.exports=tw;async function tw(e){let t;try{t=$M(e)}catch(c){throw jM(c,c.message,ew.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:s}=t;KM(e,s,r.hash_attribute),e.schema!==Rs.SYSTEM_SCHEMA_NAME&&(s.includes(Rs.TIME_STAMP_NAMES_ENUM.CREATED_TIME)||s.push(Rs.TIME_STAMP_NAMES_ENUM.CREATED_TIME),s.includes(Rs.TIME_STAMP_NAMES_ENUM.UPDATED_TIME)||s.push(Rs.TIME_STAMP_NAMES_ENUM.UPDATED_TIME));let n=await WM(e.hdb_auth_header,r,s),i=XM(e.schema,e.table),o=await JM.openEnvironment(i,e.table),_=await QM(o,r.hash_attribute,s,e.records,e.__origin?.timestamp);try{await ZM(e,_)}catch(c){zM.error(`unable to write transaction due to ${c.message}`)}return{written_hashes:_.written_hashes,schema_table:r,new_attributes:n,txn_time:_.txn_time}}a(tw,"lmdbUpsertRecords")});var eT=T((AG,jh)=>{"use strict";var rw=at(),Jh=p(),Xh=N(),sw=Ar(),Zh=f(),nw=Mo().deleteRecords,iw=B(),{getSchemaPath:aw}=q(),{promisify:ow}=require("util"),_w=ow(setTimeout),zh=1e4,cw=10;jh.exports=uw;async function uw(e){let t=global.hdb_schema[e.schema][e.table].hash_attribute;if(Jh.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 rw(e.schema,e.table,Zh.TIME_STAMP_NAMES_ENUM.CREATED_TIME,r,void 0,[t]);s=Array.from(await sw(n,Zh.VALUE_SEARCH_COMPARATORS.LESS))}catch(n){throw Xh.error(`Error searching for date: ${e.date} in schema: ${e.schema} table: ${e.table}`),n}return Jh.isEmptyOrZeroLength(s)?(Xh.trace("No records found to delete"),{message:"No records found to delete"}):await lw(e,s,t)}a(uw,"lmdbDeleteRecordsBefore");async function lw(e,t,r){let s=aw(e.schema,e.table),n=await iw.openEnvironment(s,e.table),i={message:"",deleted_hashes:[],skipped_hashes:[]};for(let o=0,_=t.length;o<_;o+=zh){let c=t.slice(o,o+zh),u=[];for(let l=0,E=c.length;l<E;l++)u.push(c[l][r]);try{let l=await nw(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 _w(cw)}return i.message=`${i.deleted_hashes.length} of ${i.deleted_hashes.length+i.skipped_hashes.length} records successfully deleted`,i}a(lw,"chunkDeletes")});var rT=T((gG,tT)=>{"use strict";var yi=class{constructor(t,r,s){this.schema=t,this.table=r,this.timestamp=s}};a(yi,"DeleteBeforeObject");tT.exports=yi});var nT=T((pG,sT)=>{"use strict";var Mi=class{constructor(t=void 0,r=void 0,s=0){this.start_timestamp=t,this.end_timestamp=r,this.transactions_deleted=s}};a(Mi,"DeleteAuditLogsBeforeResults");sT.exports=Mi});var oT=T((bG,aT)=>{"use strict";var Fo=B(),{getTransactionAuditStorePath:Ew}=q(),IG=rT(),gs=ee(),dw=p(),iT=nT(),hw=require("util").promisify,Tw=hw(setTimeout),Sw=1e4,fw=100;aT.exports=mw;async function mw(e){let t=Ew(e.schema,e.table),r=await Fo.openEnvironment(t,e.table,!0),s=Fo.listDBIs(r);Fo.initializeDBIs(r,gs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,s);let n,i=new iT;do n=await Aw(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 Tw(fw);while(n.transactions_deleted>0);return i}a(mw,"deleteAuditLogsBefore");async function Aw(e,t){let r=new iT;try{let s=e.dbis[gs.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],n;for(let{key:i,value:o}of s.getRange({start:!1})){if(i>=t)break;r.start_timestamp===void 0&&(r.start_timestamp=i),n=s.remove(i);let _=o[gs.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME];dw.isEmpty(_)||(n=e.dbis[gs.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].remove(_,i));for(let c=0;c<o.hash_values.length;c++)n=e.dbis[gs.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].remove(o.hash_values[c],i);if(r.transactions_deleted++,r.end_timestamp=i,r.transactions_deleted>Sw)break}return await n,r}catch(s){throw s}}a(Aw,"deleteTransactions")});var cT=T((yG,_T)=>{"use strict";var wi=class{constructor(t,r,s){this.schema=t,this.table=r,this.attribute=s}};a(wi,"DropAttributeObject");_T.exports=wi});var lT=T((LG,uT)=>{"use strict";var Rw=at(),gw=ms(),wG=cT(),Je=f(),Nw=p(),xo=B(),pw=Ht(),Ow=Ar(),Iw=Ss(),{getSchemaPath:bw}=q();uT.exports=Cw;async function Cw(e,t=!0){let r;e.schema===Je.SYSTEM_SCHEMA_NAME?r=pw[e.table]:r=global.hdb_schema[e.schema][e.table];let s=await Mw(e),n=bw(e.schema,e.table),i=await xo.openEnvironment(n,e.table);return t===!0&&await yw(e,i,r.hash_attribute),xo.dropDBI(i,e.attribute),s}a(Cw,"lmdbDropAttribute");async function yw(e,t,r){let s=xo.openDBI(t,r),n,i=e.attribute;for(let{key:o,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(o,u,c)}await n}a(yw,"removeAttributeFromAllObjects");async function Mw(e){let t=new Rw(Je.SYSTEM_SCHEMA_NAME,Je.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_SCHEMA_TABLE_KEY,`${e.schema}.${e.table}`,void 0,[Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY,Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]),s=Array.from(await Ow(t)).filter(o=>o[Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(Nw.isEmptyOrZeroLength(s))throw new Error(`Attribute '${e.attribute}' was not found in '${e.schema}.${e.table}'`);let n=s.map(o=>o[Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ID_KEY]),i=new gw(Je.SYSTEM_SCHEMA_NAME,Je.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);return Iw(i)}a(Mw,"dropAttributeFromSystem")});var fT=T((PG,ST)=>{"use strict";var Vo=B(),Rr=ee(),DG=Dt(),ko=f(),ET=p(),{getTransactionAuditStorePath:ww}=q(),Lw=Ft(),Li=Tr(),Uw=N();ST.exports=Dw;async function Dw(e){let t=ww(e.schema,e.table),r=await Vo.openEnvironment(t,e.table,!0),s=Vo.listDBIs(r);Vo.initializeDBIs(r,Rr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,s);let n;switch(e.search_type){case ko.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.TIMESTAMP:return dT(r,e.search_values);case ko.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.HASH_VALUE:return n=global.hdb_schema[e.schema][e.table].hash_attribute,Hw(r,e.search_values,n);case ko.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return Pw(r,e.search_values);default:return dT(r)}}a(Dw,"readAuditLog");function dT(e,t=[0,Date.now()]){ET.isEmpty(t[0])&&(t[0]=0),ET.isEmpty(t[1])&&(t[1]=Date.now());let r=e.dbis[Rr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP],s;for(let n of r.getKeys({start:t[1]}))if(n!==t[1]){s=n;break}return r.getRange({start:t[0],end:s}).map(({value:n})=>Object.assign(new Li,n))}a(dT,"searchTransactionsByTimestamp");function Pw(e,t=[]){let r=new Map;for(let s=0;s<t.length;s++){let n=t[s],i=[];for(let o of e.dbis[Rr.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].getValues(n))i.push(o);r.set(n,TT(e,i))}return Object.fromEntries(r)}a(Pw,"searchTransactionsByUsername");function Hw(e,t,r){let s=new Map;for(let _=0,c=t.length;_<c;_++){let u=t[_],l=Lw.equals(e,Rr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,Rr.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE,u);for(let{value:E}of l){let h=Number(E);s.has(h)?s.get(h).push(u.toString()):s.set(h,[u.toString()])}}let n=Array.from(s.keys()),i=TT(e,n),o=new Map;for(let _=0;_<i.length;_++){let c=i[_],u=c.timestamp,l=s.get(u);hT(c,"records",r,l,o),hT(c,"original_records",r,l,o)}return Object.fromEntries(o)}a(Hw,"searchTransactionsByHashValues");function hT(e,t,r,s,n){let i=e.timestamp;if(e[t])for(let o=0;o<e[t].length;o++){let _=e[t][o],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 Li(e.operation,e.user_name,i,void 0);E[t]=[_],u.push(E)}}else{let u=new Li(e.operation,e.user_name,i,void 0);u[t]=[_],n.set(c,[u])}}}a(hT,"loopRecords");function TT(e,t){let r=[];try{let s=e.dbis[Rr.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP];for(let n=0;n<t.length;n++)try{let i=s.get(t[n]);if(i){let o=Object.assign(new Li,i);r.push(o)}}catch(i){Uw.warn(i)}return r}catch(s){throw s}}a(TT,"batchSearchTransactions")});var AT=T((BG,mT)=>{"use strict";var{getSchemaPath:Bw}=q(),vw=B();mT.exports={writeTransaction:Gw};async function Gw(e,t,r){let s=Bw(e,t);return(await vw.openEnvironment(s,t)).transaction(r)}a(Gw,"writeTransaction")});var pT=T((GG,NT)=>{"use strict";var{getSchemaPath:RT}=q(),gT=B();NT.exports={flush:qw,resetReadTxn:Fw};async function qw(e,t){return(await gT.openEnvironment(RT(e,t),t.toString())).flushed}a(qw,"flush");async function Fw(e,t){try{(await gT.openEnvironment(RT(e,t),t.toString())).resetReadTxn()}catch{}}a(Fw,"resetReadTxn")});var bT=T((FG,IT)=>{"use strict";var xw=N(),{handleHDBError:Vw}=V(),kw=pa(),Yw=bn(),$w=bo(),Kw=$d(),Ww=Ss(),Qw=Lo(),Jw=oh(),Xw=Sh(),Zw=Ar(),zw=Oh(),jw=Hh(),eL=Vh(),tL=Yh(),rL=Qh(),sL=eT(),nL=oT(),iL=Do(),aL=lT(),oL=fT(),_L=AT(),OT=pT(),Ui=class extends kw{async searchByConditions(t){return zw(t)}async getDataByHash(t){return await Qw(t)}async searchByHash(t){return await Jw(t)}async getDataByValue(t,r){return await Xw(t,r)}async searchByValue(t){return await Zw(t)}async createSchema(t){return await Kw(t)}async dropSchema(t){return await jw(t)}async createTable(t,r){return await eL(t,r)}async dropTable(t){return await iL(t)}async createAttribute(t){return await Yw(t)}async createRecords(t){return await $w(t)}async updateRecords(t){return await tL(t)}async upsertRecords(t){try{return await rL(t)}catch(r){throw Vw(r,null,null,xw.ERR,r)}}async deleteRecords(t){return await Ww(t)}async deleteRecordsBefore(t){return await sL(t)}async dropAttribute(t){return await aL(t)}async deleteAuditLogsBefore(t){return await nL(t)}async readAuditLog(t){return await oL(t)}writeTransaction(t,r,s){return _L.writeTransaction(t,r,s)}flush(t,r){return OT.flush(t,r)}resetReadTxn(t,r){return OT.resetReadTxn(t,r)}};a(Ui,"LMDBBridge");IT.exports=Ui});var mt=T((VG,yT)=>{"use strict";var cL=bT(),uL=pa(),lL=$();lL.initSync();var CT;function EL(){return CT instanceof uL?CT:new cL}a(EL,"getBridge");yT.exports=EL()});var wT=T((YG,MT)=>{"use strict";var dL=mt();MT.exports={writeTransaction:hL};function hL(e,t,r){return dL.writeTransaction(e,t,r)}a(hL,"writeTransaction")});var Yo=T((KG,TL)=>{TL.exports={name:"harperdb",version:"4.1.2",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.15.0","go-lang":"1.19.10","nats-server":"2.9.18"},homepage:"https://www.harperdb.io/",bugs:"support@harperdb.io",author:{name:"HarperDB",email:"support@harperdb.io"},license:"SEE LICENSE IN LICENSE",scripts:{submodules:"git submodule update --init --recursive",build:"eslint -c ./.eslintbuild bin/ dataLayer/ security/ server/ sqlTranslator/ upgrade/ utility/ validation/",pretty:"eslint --fix bin/ dataLayer/ security/ server/ sqlTranslator/ upgrade/ utility/ validation/",test:"rimraf ./.nyc_output/* && node utility/devops/register.js --reset_license --storage_type=lmdb && npm run cover:logging && 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/dataLayer/harperBridge/lmdbBridge/**/*.js' --config '../unitTests/.mocharc.json'","cover:lmdbutility":"cd bin/ && nyc --no-clean --reporter=lcovonly --retries 3 ../node_modules/mocha/bin/_mocha '../unitTests/utility/lmdb/**/*.js' --config '../unitTests/.mocharc.json'","cover:hdbserver":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/server/harperdb/hdbServer-test.js' --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'","cover:apitests":"cd bin/ && node harperdb.js stop && node harperdb.js && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/apiTests/**/*.js' --config '../unitTests/.mocharc.json' && node harperdb.js stop","cover:logging":"cd bin/ && nyc --no-clean --reporter=lcovonly ../node_modules/mocha/bin/_mocha '../unitTests/utility/logging/*.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/dataLayer/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:{"@aws-sdk/client-s3":"3.354.0","@aws-sdk/lib-storage":"3.354.0","@aws-sdk/abort-controller":"3.347.0","@fastify/autoload":"~5.7.1","@fastify/compress":"~6.2.0","@fastify/cors":"~8.2.0","@fastify/static":"~6.9.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","cbor-x":"1.5.1",chalk:"4.1.2","cli-progress":"3.12.0",clone:"2.1.2",esbuild:"^0.17.10","fast-glob":"3.2.12",fastify:"~4.17.0","fastify-plugin":"~4.5.0","fs-extra":"11.1.0","human-readable-ids":"1.0.4",inquirer:"8.2.5","is-number":"7.0.0",joi:"17.9.2",json2csv:"5.0.7",jsonata:"1.8.6",jsonwebtoken:"9.0.0",lmdb:"2.8.2",lodash:"4.17.21",mathjs:"11.6.0",minimist:"1.2.8",mkcert:"1.5.1",moment:"2.29.4",msgpackr:"1.9.5",nats:"2.14.0",needle:"3.2.0","node-stream-zip":"1.15.0","normalize-path":"^3.0.0",ora:"5.4.1","ordered-binary":"1.4.0",papaparse:"5.4.1",passport:"0.6.0","passport-http":"0.3.0","passport-local":"1.0.0",pino:"8.14.1",pm2:"5.3.0",prompt:"1.3.0","properties-reader":"2.2.0","recursive-iterator":"3.3.0",semver:"7.5.1","stream-chain":"2.2.5","stream-json":"1.7.5",systeminformation:"5.17.10","tar-fs":"2.1.1",ulidx:"0.5.0",uuid:"9.0.0","validate.js":"0.13.1",yaml:"2.3.1"},devDependencies:{axios:"0.27.2",chai:"4.3.7","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":"3.0.0","intercept-stdout":"0.1.2",mocha:"^10.2.0","mocha-teamcity-reporter":"3.0.0","mock-require":"3.0.3","mock-stdin":"1.0.0",newman:"5.3.2","newman-reporter-html":"1.0.5","newman-reporter-htmlextra":"^1.22.11","newman-reporter-teamcity":"^0.1.12","node-fetch":"2.6.7",nyc:"15.1.0",prettier:"2.8.4",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.4"},"newman-reporter-html":{newman:"5.3.2"},alasql:{xlsx:"0.18.5"}}}});var Ls=T((tq,QT)=>{"use strict";var X=$();X.initSync();var SL=require("fs-extra"),fL=require("semver"),bs=require("path"),{monotonicFactory:mL}=require("ulidx"),Jo=mL(),AL=require("util"),UT=require("child_process"),RL=AL.promisify(UT.exec),gL=UT.spawn,L=Ut(),P=f(),Di=p(),It=N(),Pi=rn(),NL=wT(),Ns=js(),{encode:Wo,decode:Xo}=require("msgpackr"),{isEmpty:Kt}=Di,DT=us(),PT=12e10,{connect:pL,StorageType:HT,RetentionPolicy:BT,AckPolicy:Zo,DeliverPolicy:Cs,DiscardPolicy:OL,NatsConnection:WG,JetStreamManager:QG,JetStreamClient:JG,StringCodec:XG,JSONCodec:IL,createInbox:zo,StreamSource:ZG,headers:bL,toJsMsg:vT,nuid:zG,JetStreamOptions:jG,ErrorCode:LT,nanos:eq}=require("nats"),{PACKAGE_ROOT:CL}=f(),yL=Yo(),GT=IL(),ML="clustering",wL=yL.engines[L.NATS_SERVER_NAME],LL=bs.join(CL,"dependencies"),Qo=bs.join(LL,`${process.platform}-${process.arch}`,L.NATS_BINARY_NAME),$o,Ko,ps,Os,Is,xe;QT.exports={runCommand:qT,checkNATSServerInstalled:UL,createConnection:jo,getConnection:Hi,getJetStreamManager:ys,getJetStream:FT,getNATSReferences:Ie,getServerList:PL,createLocalStream:e_,listStreams:xT,deleteLocalStream:HL,getServerConfig:Ms,listRemoteStreams:BL,viewStream:vL,viewStreamIterator:GL,publishToStream:qL,createWorkQueueStream:FL,addSourceToWorkStream:kT,request:xL,removeSourceFromWorkStream:$T,reloadNATS:t_,reloadNATSHub:VL,reloadNATSLeaf:kL,extractServerName:YT,requestErrorHandler:YL,updateWorkStream:$L,createLocalTableStream:KT,createTableStreams:KL,purgeTableStream:WT,purgeSchemaTableStreams:WL,getStreamInfo:QL,updateLocalStreams:XL,closeConnection:DL,getJsmServerName:ws,addNatsMsgHeader:VT};async function qT(e,t=void 0){let{stdout:r,stderr:s}=await RL(e,{cwd:t});if(s)throw new Error(s.replace(`
6
6
  `,""));return r.replace(`
7
- `,"")}a(GT,"runCommand");async function ML(){try{await dL.access(Qo)}catch{return!1}let e=await GT(`${Qo} --version`,void 0),t=e.substring(e.lastIndexOf("v")+1,e.length);return hL.eq(t,CL)}a(ML,"checkNATSServerInstalled");async function jo(e,t,r,s=!0,n="127.0.0.1"){return RL({name:n,port:e,user:t,pass:r,maxReconnectAttempts:-1,waitOnFirstConnect:s,tls:{keyFile:X.get(P.CONFIG_PARAMS.CLUSTERING_TLS_PRIVATEKEY),certFile:X.get(P.CONFIG_PARAMS.CLUSTERING_TLS_CERTIFICATE),caFile:X.get(P.CONFIG_PARAMS.CLUSTERING_TLS_CERT_AUTH),rejectUnauthorized:!1}})}a(jo,"createConnection");async function wL(){xe&&(await xe.drain(),xe=void 0)}a(wL,"closeConnection");async function Hi(){if(!xe){let e=await UT.getClusterUser();if($t(e))throw new Error("Unable to get nats connection. Cluster user is undefined.");let t=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_NETWORK_PORT);xe=await jo(t,e.username,e.decrypt_hash)}return xe}a(Hi,"getConnection");async function ys(){if(Os)return Os;$t(xe)&&await Hi();let{domain:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF);if($t(e))throw new Error("Error getting JetStream domain. Unable to get JetStream manager.");return Os=await xe.jetstreamManager({domain:e}),Os}a(ys,"getJetStreamManager");async function qT(){if(Is)return Is;$t(xe)&&await Hi();let{domain:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF);if($t(e))throw new Error("Error getting JetStream domain. Unable to get JetStream manager.");return Is=xe.jetstream({domain:e}),Is}a(qT,"getJetStream");async function Ie(){let e=xe||await Hi(),t=Os||await ys(),r=Is||await qT();return{connection:e,jsm:t,js:r}}a(Ie,"getNATSReferences");async function LL(e){let t=X.get(P.CONFIG_PARAMS.CLUSTERING_HUBSERVER_NETWORK_PORT),{sys_name:r,decrypt_hash:s}=await UT.getClusterUser(),n=await jo(t,r,s),i=zo(),o=n.subscribe(i),_=[],c,u=(async()=>{for await(let l of o){let E=vT.decode(l.data);E.response_time=Date.now()-c,_.push(E)}})();return c=Date.now(),await n.publish("$SYS.REQ.SERVER.PING.VARZ",void 0,{reply:i}),await n.publish("$SYS.REQ.SERVER.PING",void 0,{reply:i}),await n.flush(),await Di.async_set_timeout(e),await o.drain(),await n.close(),await u,_}a(LL,"getServerList");async function e_(e,t){let{jsm:r}=await Ie(),s=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXAGE);s=s===null?0:s*1e9;let n=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS);n=n===null?-1:n;let i=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES);i=i===null?-1:i,await r.streams.add({name:e,storage:PT.File,retention:HT.Limits,subjects:t,discard:gL.Old,duplicate_window:DT,max_msgs:n,max_bytes:i,max_age:s})}a(e_,"createLocalStream");async function FT(){let{jsm:e}=await Ie(),t=await e.streams.list().next(),r=[];return t.forEach(s=>{r.push(s)}),r}a(FT,"listStreams");async function UL(e){let{jsm:t}=await Ie();await t.streams.delete(e)}a(UL,"deleteLocalStream");async function DL(e){let{connection:t}=await Ie(),r=[],s=zo(),n=t.subscribe(s),i=(async()=>{for await(let o of n)r.push(vT.decode(o.data))})();return await t.publish(`$JS.${e}.API.STREAM.LIST`,void 0,{reply:s}),await t.flush(),await n.drain(),await i,r}a(DL,"listRemoteStreams");async function PL(e,t=void 0,r=void 0){let{jsm:s,connection:n}=await Ie(),i=Jo(),o=[],_={ack_policy:Zo.None,durable_name:i,deliver_subject:i,deliver_policy:Cs.All};t&&(_.deliver_policy=Cs.StartTime,_.opt_start_time=new Date(t).toISOString());try{await s.consumers.add(e,_);let c={timeout:2e3};r&&(c.max=r);let u=await n.subscribe(i,c);for await(let l of u){let E=BT(l),h=Xo(E.data),d={nats_timestamp:E.info.timestampNanos,nats_sequence:E.info.streamSequence,entry:h};E.headers&&(d.origin=E.headers.get(L.MSG_HEADERS.ORIGIN),d.nats_msg_id=E.headers.get(L.MSG_HEADERS.NATS_MSG_ID)),o.push(d),u.getPending()===1&&E.info.pending===0&&u.stop()}return await s.consumers.delete(e,i),o}catch(c){if(await s.consumers.delete(e,i),c.code==="TIMEOUT")return o;throw c}}a(PL,"viewStream");async function*HL(e,t=void 0,r=void 0){let{jsm:s,connection:n}=await Ie(),i=Jo(),o={ack_policy:Zo.None,durable_name:i,deliver_subject:i,deliver_policy:Cs.All};t&&(o.deliver_policy=Cs.StartTime,o.opt_start_time=new Date(t).toISOString());try{await s.consumers.add(e,o);let _={timeout:2e3};r&&(_.max=r);let c=await n.subscribe(i,_);for await(let u of c){let l=BT(u),E=Xo(l.data);E[0]||(E=[E]);for(let h of E){let d={nats_timestamp:l.info.timestampNanos,nats_sequence:l.info.streamSequence,entry:h};l.headers&&(d.origin=l.headers.get(L.MSG_HEADERS.ORIGIN),d.nats_msg_id=l.headers.get(L.MSG_HEADERS.NATS_MSG_ID)),yield d}c.getPending()===1&&l.info.pending===0&&c.stop()}await s.consumers.delete(e,i)}catch(_){if(await s.consumers.delete(e,i),_.code==="TIMEOUT")return[];throw _}}a(HL,"viewStreamIterator");async function BL(e,t,r,s){It.trace(`publishToStream called with subject: ${e}, stream: ${t}, entries:`,s);let n=!0;X.get(P.CONFIG_PARAMS.CLUSTERING_REPUBLISHMESSAGES)===!1&&r&&r.has(L.MSG_HEADERS.NATS_MSG_ID)&&(n=!1),r=xT(s,r);let{js:i}=await Ie(),o=await ws(),_=`${e}.${o}`;try{It.trace(`publishToStream publishing to subject: ${_}, data:`,s),n&&await i.publish(_,Wo(s),{headers:r})}catch(c){if(c.code&&c.code.toString()==="503")It.trace(`publishToStream creating stream: ${t}`),await e_(t,[_]),n&&await i.publish(_,Wo(s),{headers:r});else throw c}}a(BL,"publishToStream");function xT(e,t){t===void 0&&(t=pL());let r=X.get(P.CONFIG_PARAMS.CLUSTERING_NODENAME);if(!t.has(L.MSG_HEADERS.NATS_MSG_ID)){let s=Di.getTableHashAttribute(e.schema,e.table),n=e.action?e.action:e.operation,i=`${r}.${e.schema}.${e.table}.${n}.${s}.${Date.now()}.${Jo()}`;t.append(L.MSG_HEADERS.NATS_MSG_ID,i)}return t.has(L.MSG_HEADERS.ORIGIN)||t.append(L.MSG_HEADERS.ORIGIN,r),t}a(xT,"addNatsMsgHeader");function Ms(e){e=e.toLowerCase();let t=bs.join(X.get(P.CONFIG_PARAMS.ROOTPATH),bL);if(e===P.PROCESS_DESCRIPTORS.CLUSTERING_HUB.toLowerCase())return $t(Ko)&&(Ko={port:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_HUBSERVER_NETWORK_PORT),server_name:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_NODENAME)+L.SERVER_SUFFIX.HUB,config_file:L.NATS_CONFIG_FILES.HUB_SERVER,pid_file_path:bs.join(t,L.PID_FILES.HUB),hdb_nats_path:t}),Ko;if(e===P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF.toLowerCase())return $t($o)&&($o={port:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_NETWORK_PORT),server_name:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_NODENAME)+L.SERVER_SUFFIX.LEAF,config_file:L.NATS_CONFIG_FILES.LEAF_SERVER,domain:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_NODENAME)+L.SERVER_SUFFIX.LEAF,pid_file_path:bs.join(t,L.PID_FILES.LEAF),hdb_nats_path:t}),$o;It.error(`Unable to get Nats server config. Unrecognized process: ${e}`)}a(Ms,"getServerConfig");async function vL(e){let{jsm:t}=await Ie(),r=await ws();try{await t.streams.add({name:e.stream_name,storage:PT.File,retention:HT.Workqueue,duplicate_window:DT,subjects:[`${L.SUBJECT_PREFIXES.TXN}.${e.stream_name}.${r}`]})}catch(s){if(s.code!=="400")throw s}try{await t.consumers.info(e.stream_name,e.durable_name)}catch(s){if(s.code.toString()==="404")await t.consumers.add(e.stream_name,{ack_policy:Zo.Explicit,deliver_subject:`${e.deliver_subject}.${r}`,durable_name:e.durable_name,deliver_policy:Cs.All,max_ack_pending:1e4,deliver_group:e.deliver_group});else throw s}}a(vL,"createWorkQueueStream");async function VT(e,t,r){let{jsm:s}=await Ie(),n=await s.streams.info(t),i=kT(s.prefix),o=r.start_time?r.start_time:new Date(Date.now()).toISOString(),{schema:_,table:c}=r,u=Pi.createNatsTableStreamName(_,c),l=i===e,E,h,d=!1;if(!Array.isArray(n.config.sources)||n.config.sources.length===0)n.config.sources=[];else for(let R=0,M=n.config.sources.length;R<M;R++)if(E=n.config.sources[R],h=R,l&&E.name===u||!l&&E.name===u&&E.external&&E.external.api===`$JS.${e}.API`){d=!0;break}if(d===!0){if(E.opt_start_time===o)return;n.config.sources.splice(h,1),await s.streams.update(t,n.config)}let A={name:u,opt_start_time:o,filter_subject:`${L.SUBJECT_PREFIXES.TXN}.>`};l||(A.external={api:`$JS.${e}.API`,deliver:""}),n.config.sources.push(A),await s.streams.update(t,n.config)}a(VT,"addSourceToWorkStream");function kT(e){return e.split(".")[1]}a(kT,"extractServerName");async function YT(e,t,r){let{schema:s,table:n}=r,i=Pi.createNatsTableStreamName(s,n),{jsm:o}=await Ie(),_=await o.streams.info(t);if(!Array.isArray(_.config.sources)||_.config.sources.length===0)return;let c=_.config.sources.length,u;for(;c--;)if(u=_.config.sources[c],u.name===i&&u.external.api===`$JS.${e}.API`){_.config.sources.splice(c,1);break}await o.streams.update(t,_.config)}a(YT,"removeSourceFromWorkStream");async function GL(e,t,r=2e3,s=zo()){if(!Di.isObject(t))throw new Error("data param must be an object");let n=Wo(t),{connection:i}=await Ie(),o={timeout:r};s&&(o.reply=s,o.noMux=!0);let _=await i.request(e,n,o);return Xo(_.data)}a(GL,"request");function t_(e){return new Promise(async(t,r)=>{let s=mL(Qo,["--signal",`reload=${e}`],{cwd:__dirname}),n,i;s.on("error",o=>{r(o)}),s.stdout.on("data",o=>{i+=o.toString()}),s.stderr.on("data",o=>{n+=o.toString()}),s.stderr.on("close",o=>{n&&r(n),t(i)})})}a(t_,"reloadNATS");async function qL(){let{pid_file_path:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_HUB);await t_(e)}a(qL,"reloadNATSHub");async function FL(){let{pid_file_path:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF);await t_(e)}a(FL,"reloadNATSLeaf");function xL(e,t,r){let s;switch(e.code){case wT.NoResponders:s=`Unable to ${t}, node '${r}' is not listening.`;break;case wT.Timeout:s=`Unable to ${t}, node '${r}' is listening but did not respond.`;break;default:s=e.message;break}return s}a(xL,"requestErrorHandler");async function VL(e,t){let r=t+L.SERVER_SUFFIX.LEAF;await AL.writeTransaction(P.SYSTEM_SCHEMA_NAME,P.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,async()=>{e.subscribe===!0?await VT(r,L.WORK_QUEUE_CONSUMER_NAMES.stream_name,e):await YT(r,L.WORK_QUEUE_CONSUMER_NAMES.stream_name,e)})}a(VL,"updateWorkStream");async function $T(e,t){let r=Pi.createNatsTableStreamName(e,t),s=await ws(),n=KL(e,t,s);await e_(r,[n])}a($T,"createLocalTableStream");async function kL(e){for(let t=0,r=e.length;t<r;t++){let s=e[t].schema,n=e[t].table;await $T(s,n)}}a(kL,"createTableStreams");async function KT(e,t){if(X.get(P.CONFIG_PARAMS.CLUSTERING_ENABLED))try{let r=Pi.createNatsTableStreamName(e,t),{jsm:s}=await Ie();await s.streams.purge(r)}catch(r){if(r.message==="stream not found")It.warn(r);else throw r}}a(KT,"purgeTableStream");async function YL(e,t){if(X.get(P.CONFIG_PARAMS.CLUSTERING_ENABLED))for(let r=0,s=t.length;r<s;r++)await KT(e,t[r])}a(YL,"purgeSchemaTableStreams");async function $L(e){return(await ys()).streams.info(e)}a($L,"getStreamInfo");function KL(e,t,r){return`${L.SUBJECT_PREFIXES.TXN}.${e}.${t}.${r}`}a(KL,"createSubjectName");async function ws(){if(ps)return ps;if(ps=(await ys())?.nc?.info?.server_name,ps===void 0)throw new Error("Unable to get jetstream manager server name");return ps}a(ws,"getJsmServerName");async function WL(){let e=await ys(),t=await ws(),r=await FT();for(let s of r){let n=s.config,i=n.subjects[0];if(!i)continue;let o=QL(s),_=i.split(".");if(!(_[_.length-1]===t&&!o)){if(n.name===L.SCHEMA_QUEUE_CONSUMER_NAMES.stream_name){let u=`${L.SCHEMA_QUEUE_CONSUMER_NAMES.deliver_subject}.${t}`;It.trace(`Updating stream subject name from: ${i} to: ${u}`),n.subjects[0]=u}else if(n.name===L.WORK_QUEUE_CONSUMER_NAMES.stream_name){let u=`${L.WORK_QUEUE_CONSUMER_NAMES.stream_name}.${t}`;It.trace(`Updating stream subject name from: ${i} to: ${u}`),n.subjects[0]=u,await e.consumers.update(L.WORK_QUEUE_CONSUMER_NAMES.stream_name,L.WORK_QUEUE_CONSUMER_NAMES.durable_name,{deliver_subject:`${L.WORK_QUEUE_CONSUMER_NAMES.deliver_subject}.${t}`})}else{let u=i.split(".");u[u.length-1]=t;let l=u.join(".");It.trace(`Updating stream subject name from: ${i} to: ${l}`),n.subjects[0]=l}await e.streams.update(n.name,n)}}}a(WL,"updateLocalStreams");function QL(e){let{config:t}=e,r=!1;if(t.name===L.SCHEMA_QUEUE_CONSUMER_NAMES.stream_name||t.name===L.WORK_QUEUE_CONSUMER_NAMES.stream_name)return r;let s=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXAGE);s=s===null?0:s*1e9;let n=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES);n=n===null?-1:n;let i=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS);return i=i===null?-1:i,s!==t.max_age&&(t.max_age=s,r=!0),n!==t.max_bytes&&(t.max_bytes=n,r=!0),i!==t.max_msgs&&(t.max_msgs=i,r=!0),r}a(QL,"updateStreamLimits")});var zT=T((eq,ZT)=>{"use strict";var XT=require("joi"),{string:Us,boolean:QT,array:JL}=XT.types(),JT=f(),XL=Pe();ZT.exports=ZL;function ZL(e){let t=XT.object({operation:Us.valid(JT.OPERATIONS_ENUM.ADD_NODE,JT.OPERATIONS_ENUM.UPDATE_NODE).required(),node_name:Us.required(),subscriptions:JL.items({schema:Us.required(),table:Us.required(),hash_attribute:Us.optional(),subscribe:QT.required(),publish:QT.required()}).min(1).required()});return XL.validateBySchema(e,t)}a(ZL,"updateRemoteSourceValidator")});var eS=T((rq,jT)=>{var zL=Pe(),jL={user:{presence:!0},schema:{presence:!0},table:{presence:!0},operation:{presence:!0}};jT.exports=function(e){return zL.validateObject(e,jL)}});var r_=T((sq,tS)=>{"use strict";var eU=f().OPERATIONS_ENUM,Bi=class{constructor(t,r,s,n=void 0){this.operation=eU.UPDATE,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a(Bi,"UpdateObject");tS.exports=Bi});var sS=T((iq,rS)=>{"use strict";var tU={OPERATION:"operation",REFRESH:"refresh"},vi=class{constructor(t,r){this.operation_token=t,this.refresh_token=r}};a(vi,"JWTTokens");var Gi=class{constructor(t,r,s){this.public_key=t,this.private_key=r,this.passphrase=s}};a(Gi,"JWTRSAKeys");rS.exports={JWTTokens:vi,TOKEN_TYPE_ENUM:tU,JWTRSAKeys:Gi}});var _S=T((oq,oS)=>{"use strict";var Ps=require("jsonwebtoken"),s_=require("fs-extra"),n_=p(),Ue=f(),{handleHDBError:Ee,hdb_errors:rU}=V(),{HTTP_STATUS_CODES:de,AUTHENTICATION_ERROR_MSGS:he}=rU,Ds=N(),nS=Dn(),o_=us(),sU=_s().update,nU=r_(),iU=ls(),{UserEventMsg:aU}=Vt(),bt=$();bt.initSync();var i_=require("path"),{JWTTokens:oU,JWTRSAKeys:_U,TOKEN_TYPE_ENUM:qi}=sS(),cU=bt.get(Ue.HDB_SETTINGS_NAMES.OPERATION_TOKEN_TIMEOUT_KEY)?bt.get(Ue.HDB_SETTINGS_NAMES.OPERATION_TOKEN_TIMEOUT_KEY):"1d",uU=bt.get(Ue.HDB_SETTINGS_NAMES.REFRESH_TOKEN_TIMEOUT_KEY)?bt.get(Ue.HDB_SETTINGS_NAMES.REFRESH_TOKEN_TIMEOUT_KEY):"30d",Fi="RS256",a_;oS.exports={createTokens:lU,validateOperationToken:dU,refreshOperationToken:EU,validateRefreshToken:aS};async function lU(e){if(n_.isEmpty(e)||typeof e!="object")throw Ee(new Error,he.INVALID_AUTH_OBJECT,de.BAD_REQUEST,void 0,void 0,!0);if(n_.isEmpty(e.username))throw Ee(new Error,he.USERNAME_REQUIRED,de.BAD_REQUEST,void 0,void 0,!0);if(n_.isEmpty(e.password))throw Ee(new Error,he.PASSWORD_REQUIRED,de.BAD_REQUEST,void 0,void 0,!0);let t;try{if(t=await o_.findAndValidateUser(e.username,e.password),!t)throw Ee(new Error,he.INVALID_CREDENTIALS,de.UNAUTHORIZED,void 0,void 0,!0)}catch(h){throw Ds.error(h),Ee(new Error,he.INVALID_CREDENTIALS,de.UNAUTHORIZED,void 0,void 0,!0)}let r=await xi(),s=!1,n=!1;t.role&&t.role.permission&&(s=t.role.permission.super_user===!0,n=t.role.permission.cluster_user===!0);let i={username:e.username,super_user:s,cluster_user:n},o=await iS(i,r.private_key,r.passphrase),_=await Ps.sign(i,{key:r.private_key,passphrase:r.passphrase},{expiresIn:uU,algorithm:Fi,subject:qi.REFRESH}),c=nS.hash(_),u=new nU(Ue.SYSTEM_SCHEMA_NAME,Ue.SYSTEM_TABLE_NAMES.USER_TABLE_NAME,[{username:e.username,refresh_token:c}]),l,E;try{l=await sU(u)}catch(h){Ds.error(h),E=h}if(E!==void 0||l.skipped_hashes.length>0)throw Ee(new Error,he.REFRESH_TOKEN_SAVE_FAILED,de.INTERNAL_SERVER_ERROR);return iU.signalUserChange(new aU(process.pid)),new oU(o,_)}a(lU,"createTokens");async function iS(e,t,r){return await Ps.sign(e,{key:t,passphrase:r},{expiresIn:cU,algorithm:Fi,subject:qi.OPERATION})}a(iS,"signOperationToken");async function xi(){if(a_===void 0)try{let e=i_.join(bt.getHdbBasePath(),Ue.LICENSE_KEY_DIR_NAME,Ue.JWT_ENUM.JWT_PASSPHRASE_NAME),t=i_.join(bt.getHdbBasePath(),Ue.LICENSE_KEY_DIR_NAME,Ue.JWT_ENUM.JWT_PRIVATE_KEY_NAME),r=i_.join(bt.getHdbBasePath(),Ue.LICENSE_KEY_DIR_NAME,Ue.JWT_ENUM.JWT_PUBLIC_KEY_NAME),s=(await s_.readFile(e)).toString(),n=(await s_.readFile(t)).toString(),i=(await s_.readFile(r)).toString();a_=new _U(i,n,s)}catch(e){throw Ds.error(e),Ee(new Error,he.NO_ENCRYPTION_KEYS,de.INTERNAL_SERVER_ERROR)}return a_}a(xi,"getJWTRSAKeys");async function EU(e){if(!e)throw Ee(new Error,he.INVALID_BODY,de.BAD_REQUEST,void 0,void 0,!0);if(!e.refresh_token)throw Ee(new Error,he.REFRESH_TOKEN_REQUIRED,de.BAD_REQUEST,void 0,void 0,!0);await aS(e.refresh_token);let t=await xi(),r=await Ps.decode(e.refresh_token);return{operation_token:await iS({username:r.username,super_user:r.super_user,cluster_user:r.cluster_user},t.private_key,t.passphrase)}}a(EU,"refreshOperationToken");async function dU(e){try{let t=await xi(),r=await Ps.verify(e,t.public_key,{algorithms:Fi,subject:qi.OPERATION});return await o_.findAndValidateUser(r.username,void 0,!1)}catch(t){throw Ds.warn(t),t.name&&t.name==="TokenExpiredError"?Ee(new Error,he.TOKEN_EXPIRED,de.FORBIDDEN):Ee(new Error,he.INVALID_TOKEN,de.UNAUTHORIZED)}}a(dU,"validateOperationToken");async function aS(e){let t;try{let r=await xi(),s=await Ps.verify(e,r.public_key,{algorithms:Fi,subject:qi.REFRESH});t=await o_.findAndValidateUser(s.username,void 0,!1)}catch(r){throw Ds.warn(r),r.name&&r.name==="TokenExpiredError"?Ee(new Error,he.TOKEN_EXPIRED,de.FORBIDDEN):Ee(new Error,he.INVALID_TOKEN,de.UNAUTHORIZED)}if(!nS.validate(t.refresh_token,e))throw Ee(new Error,he.INVALID_TOKEN,de.UNAUTHORIZED);return t}a(aS,"validateRefreshToken")});var ES=T((uq,lS)=>{"use strict";var hU=eS(),gr=require("passport"),TU=require("passport-local").Strategy,SU=require("passport-http").BasicStrategy,fU=require("util"),mU=us(),uS=fU.callbackify(mU.findAndValidateUser),cq=be(),AU=f(),cS=_S();gr.use(new TU(function(e,t,r){uS(e,t,r)}));gr.use(new SU(function(e,t,r){uS(e,t,r)}));gr.serializeUser(function(e,t){t(null,e)});gr.deserializeUser(function(e,t){t(null,e)});function RU(e,t,r){let s,n;if(e.headers&&e.headers.authorization){let o=e.headers.authorization.split(" ");s=o[0],n=o[1]}function i(o,_){return o?r(o):_?r(null,_):r("User not found")}switch(a(i,"handleResponse"),s){case"Basic":gr.authenticate("basic",{session:!1},(o,_)=>{i(o,_)})(e,t,r);break;case"Bearer":e.body&&e.body.operation&&e.body.operation===AU.OPERATIONS_ENUM.REFRESH_OPERATION_TOKEN?cS.validateRefreshToken(n).then(o=>{e.body.refresh_token=n,r(null,o)}).catch(o=>{r(o)}):cS.validateOperationToken(n).then(o=>{r(null,o)}).catch(o=>{r(o)});break;default:gr.authenticate("local",{session:!1},function(o,_){i(o,_)})(e,t,r);break}}a(RU,"authorize");function gU(e,t){let r=hU(e);if(r){t(r);return}let s={authorized:!0,messages:[]},n=e.user.role;if(!n||!n.permission)return t("Invalid role");let i=JSON.parse(n.permission);if(i.super_user)return t(null,s);if(!i[e.schema])return s.authorized=!1,s.messages.push(`Not authorized to access ${e.schema} schema`),t(null,s);if(!i[e.schema].tables[e.table])return s.authorized=!1,s.messages.push(`Not authorized to access ${e.table} table`),t(null,s);if(!i[e.schema].tables[e.table][e.operation])return s.authorized=!1,s.messages.push(`Not authorized to access ${e.operation} on ${e.table} table`),t(null,s);if(i[e.schema].tables[e.table].attribute_permissions&&!e.attributes)return s.authorized=!1,s.messages.push(`${e.schema}.${e.table} has attribute permissions. Missing attributes to validate`),t(null,s);if(i[e.schema].tables[e.table].attribute_permissions&&e.attributes){let o=i[e.schema].tables[e.table].attribute_permissions;for(let _ in o)e.attributes.indexOf(o[_].attribute_name)>-1&&!o[_][e.operation]&&(s.authorized=!1,s.messages.push(`Not authorized to ${e.operation} ${o[_].attribute_name} `))}return t(null,s)}a(gU,"checkPermissions");lS.exports={authorize:RU,checkPermissions:gU}});var Yi=T((Eq,dS)=>{"use strict";var Vi=class{constructor(t,r,s){this.name=t,this.subscriptions=r,this.system_info=s}};a(Vi,"Node");var ki=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.publish=s,this.subscribe=n}};a(ki,"NodeSubscription");dS.exports={Node:Vi,NodeSubscription:ki}});var TS=T((hq,hS)=>{"use strict";var NU=f().OPERATIONS_ENUM,$i=class{constructor(t,r,s,n=void 0){this.operation=NU.UPSERT,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a($i,"UpsertObject");hS.exports=$i});var fS=T((Sq,SS)=>{"use strict";var Ki=class{constructor(t,r,s,n){this.operation=t,this.node_name=r,this.subscriptions=s,this.system_info=n}};a(Ki,"RemotePayloadObject");var Wi=class{constructor(t,r,s,n,i,o){this.schema=t,this.table=r,this.hash_attribute=s,this.publish=n,this.subscribe=i,this.start_time=o}};a(Wi,"RemotePayloadSubscription");SS.exports={RemotePayloadObject:Ki,RemotePayloadSubscription:Wi}});var AS=T((mq,mS)=>{"use strict";var Qi=class{constructor(t,r,s=0,n=0,i=0,o=0){this.schema=t,this.table=r,this.table_size=s,this.record_count=n,this.transaction_log_size=i,this.transaction_log_record_count=o}};a(Qi,"TableSizeObject");mS.exports=Qi});var gS=T((Rq,RS)=>{"use strict";var pU=AS(),OU=ee(),Nr=B(),IU=N(),{getSchemaPath:bU,getTransactionAuditStorePath:CU}=q();RS.exports=yU;async function yU(e){let t=new pU;try{let r=bU(e.schema,e.name),s=await Nr.openEnvironment(r,e.name),n=Nr.statDBI(s,e.hash_attribute),i=CU(e.schema,e.name),o=await Nr.openEnvironment(i,e.name,!0),_=Nr.statDBI(o,OU.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP),c=await Nr.environmentDataSize(r,e.name),u=await Nr.environmentDataSize(i,e.name);t.schema=e.schema,t.table=e.name,t.table_size=c,t.record_count=n.entryCount,t.transaction_log_size=u,t.transaction_log_record_count=_.entryCount}catch(r){IU.warn(`unable to stat table dbi due to ${r}`)}return t}a(yU,"lmdbGetTableSize")});var pS=T((Nq,NS)=>{"use strict";var Ji=class{constructor(t,r,s,n,i,o,_){this.system=t,this.time=r,this.cpu=s,this.memory=n,this.disk=i,this.network=o,this.harperdb_processes=_}};a(Ji,"SystemInformationObject");NS.exports=Ji});var CS=T((Oq,bS)=>{"use strict";var ae=require("systeminformation"),Kt=N(),MU=f(),wU=gS(),IS=lr(),{getThreadInfo:OS}=vn(),LU=$();LU.initSync();var UU=pS(),{openEnvironment:DU}=B(),{getSchemaPath:PU}=q(),Xi;bS.exports={getHDBProcessInfo:l_,getNetworkInfo:d_,getDiskInfo:E_,getMemoryInfo:u_,getCPUInfo:c_,getTimeInfo:__,getSystemInformation:h_,systemInformation:HU,getTableSize:T_,getMetrics:S_};function __(){return ae.time()}a(__,"getTimeInfo");async function c_(){try{let{family:e,model:t,stepping:r,revision:s,voltage:n,speedmin:i,speedmax:o,governor:_,socket:c,cache:u,...l}=await ae.cpu();l.cpu_speed=await ae.cpuCurrentSpeed();let{raw_currentload:E,raw_currentload_idle:h,raw_currentload_irq:d,raw_currentload_nice:A,raw_currentload_system:R,raw_currentload_user:M,cpus:W,...x}=await ae.currentLoad();return x.cpus=[],W.forEach(F=>{let{raw_load:Xe,raw_load_idle:Bs,raw_load_irq:y_,raw_load_nice:uP,raw_load_system:lP,raw_load_user:EP,...uf}=F;x.cpus.push(uf)}),l.current_load=x,l}catch(e){return Kt.error(`error in getCPUInfo: ${e}`),{}}}a(c_,"getCPUInfo");async function u_(){try{let{buffers:e,cached:t,slab:r,buffcache:s,...n}=await ae.mem();return Object.assign(n,process.memoryUsage())}catch(e){return Kt.error(`error in getMemoryInfo: ${e}`),{}}}a(u_,"getMemoryInfo");async function l_(){let e={core:[],clustering:[]};try{return(await ae.processes()).list.forEach(r=>{r.params.includes(MU.HDB_PROC_NAME)||r.name.includes("harperdb")?e.core.push(r):r.name==="nats-server"&&e.clustering.push(r)}),e}catch(t){return Kt.error(`error in getHDBProcessInfo: ${t}`),e}}a(l_,"getHDBProcessInfo");async function E_(){let e={};try{let{rIO_sec:t,wIO_sec:r,tIO_sec:s,ms:n,...i}=await ae.disksIO();e.io=i;let{rx_sec:o,tx_sec:_,wx_sec:c,...u}=await ae.fsStats();return e.read_write=u,e.size=await ae.fsSize(),e}catch(t){return Kt.error(`error in getDiskInfo: ${t}`),e}}a(E_,"getDiskInfo");async function d_(){let e={default_interface:null,latency:{},interfaces:[],stats:[],connections:[]};try{return e.default_interface=await ae.networkInterfaceDefault(),e.latency=await ae.inetChecksite("google.com"),(await ae.networkInterfaces()).forEach(s=>{let{internal:n,virtual:i,mtu:o,dhcp:_,dnsSuffix:c,ieee8021xAuth:u,ieee8021xState:l,carrier_changes:E,...h}=s;e.interfaces.push(h)}),(await ae.networkStats()).forEach(s=>{let{rx_sec:n,tx_sec:i,ms:o,..._}=s;e.stats.push(_)}),e}catch(t){return Kt.error(`error in getNetworkInfo: ${t}`),e}}a(d_,"getNetworkInfo");async function h_(){if(Xi!==void 0)return Xi;let e={};try{let{codepage:t,logofile:r,serial:s,build:n,servicepack:i,uefi:o,..._}=await ae.osInfo();e=_;let c=await ae.versions("node, npm");return e.node_version=c.node,e.npm_version=c.npm,Xi=e,Xi}catch(t){return Kt.error(`error in getSystemInformation: ${t}`),e}}a(h_,"getSystemInformation");async function T_(){let e=[],t=await IS.describeAll();for(let r of Object.values(t))for(let s of Object.values(r))e.push(await wU(s));return e}a(T_,"getTableSize");async function S_(){let e=await IS.describeAll(),t={};for(let r in e){let s=t[r]={};for(let n in e[r])try{let i=PU(r,n),_=(await DU(i,n)).getStats();s[n]={puts:_.puts,deletes:_.deletes,txns:_.txns,pageFlushes:_.pageFlushes,writes:_.writes,pagesWritten:_.pagesWritten,timeDuringTxns:_.timeDuringTxns,timeStartTxns:_.timeStartTxns,timePageFlushes:_.timePageFlushes,timeSync:_.timeSync}}catch(i){Kt.notify(`Error getting stats for table ${n}: ${i}`)}}return t}a(S_,"getMetrics");async function HU(e){let t=new UU;if(!Array.isArray(e.attributes)||e.attributes.length===0)return t.system=await h_(),t.time=__(),t.cpu=await c_(),t.memory=await u_(),t.disk=await E_(),t.network=await d_(),t.harperdb_processes=await l_(),t.table_size=await T_(),t.metrics=await S_(),t.threads=await OS(),t;for(let r=0;r<e.attributes.length;r++)switch(e.attributes[r]){case"system":t.system=await h_();break;case"time":t.time=__();break;case"cpu":t.cpu=await c_();break;case"memory":t.memory=await u_();break;case"disk":t.disk=await E_();break;case"network":t.network=await d_();break;case"harperdb_processes":t.harperdb_processes=await l_();break;case"table_size":t.table_size=await T_();break;case"database_metrics":t.metrics=await S_();break;case"threads":t.threads=await OS();break;default:break}return t}a(HU,"systemInformation")});var MS=T((yq,yS)=>{"use strict";var bq=require("fs-extra"),Cq=N();yS.exports={version:BU,printVersion:GU,nodeVersion:vU};var Ct=Yo();function BU(){if(Ct)return Ct.version}a(BU,"version");function vU(){if(Ct&&Ct.engines&&Ct.engines["preferred-node"])return Ct.engines["preferred-node"]}a(vU,"nodeVersion");function GU(){Ct&&console.log(`HarperDB Version ${Ct.version}`)}a(GU,"printVersion")});var Zi=T((Uq,DS)=>{"use strict";var qU=_s(),f_=p(),m_=require("util"),Wt=f(),wS=$();wS.initSync();var FU=ES(),LS=Vn(),{Node:wq,NodeSubscription:Lq}=Yi(),xU=fi(),VU=TS(),{RemotePayloadObject:kU,RemotePayloadSubscription:YU}=fS(),{handleHDBError:$U,hdb_errors:KU}=V(),{HTTP_STATUS_CODES:WU,HDB_ERROR_MSGS:QU}=KU,JU=at(),XU=CS(),ZU=MS(),zU=m_.promisify(FU.authorize),jU=m_.promisify(LS.searchByHash),eD=m_.promisify(LS.searchByValue);DS.exports={authHeaderToUser:tD,isEmpty:rD,getNodeRecord:sD,upsertNodeRecord:nD,buildNodePayloads:iD,checkClusteringEnabled:aD,getAllNodeRecords:oD,getSystemInfo:_D,reverseSubscription:US};async function tD(e){let t={headers:{authorization:e.hdb_auth_header}};return e.hdb_user=await zU(t,null),e}a(tD,"authHeaderToUser");function rD(e){return e==null}a(rD,"isEmpty");async function sD(e){let t=new xU(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[e],["*"]);return jU(t)}a(sD,"getNodeRecord");async function nD(e){let t=new VU(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[e]);return qU.upsert(t)}a(nD,"upsertNodeRecord");function US(e){if(f_.isEmpty(e.subscribe)||f_.isEmpty(e.publish))throw new Error("Received invalid subscription object");let{schema:t,table:r,hash_attribute:s}=e,n={schema:t,table:r,hash_attribute:s};return e.subscribe===!0&&e.publish===!1?(n.subscribe=!1,n.publish=!0):e.subscribe===!1&&e.publish===!0?(n.subscribe=!0,n.publish=!1):(n.subscribe=e.subscribe,n.publish=e.publish),n}a(US,"reverseSubscription");function iD(e,t,r,s){let n=[];for(let i=0,o=e.length;i<o;i++){let _=e[i],{schema:c,table:u}=_,l=f_.getTableHashAttribute(c,u),{subscribe:E,publish:h}=US(_),d=new YU(c,u,l,h,E,_.start_time);n.push(d)}return new kU(r,t,n,s)}a(iD,"buildNodePayloads");function aD(){if(!wS.get(Wt.CONFIG_PARAMS.CLUSTERING_ENABLED))throw $U(new Error,QU.CLUSTERING_NOT_ENABLED,WU.BAD_REQUEST,void 0,void 0,!0)}a(aD,"checkClusteringEnabled");async function oD(){let e=new JU(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,"name","*",void 0,["*"]);return Array.from(await eD(e))}a(oD,"getAllNodeRecords");async function _D(){let e=await XU.getSystemInformation();return{hdb_version:ZU.version(),node_version:e.node_version,platform:e.platform}}a(_D,"getSystemInfo")});var BS=T((Pq,HS)=>{"use strict";var R_=lr(),{hdb_errors:A_}=V();HS.exports={checkSchemaExists:PS,checkSchemaTableExists:cD,schema_describe:R_};async function PS(e){if(!global.hdb_schema[e])try{let t=await R_.describeSchema({schema:e});global.hdb_schema[e]=t}catch{return A_.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}}a(PS,"checkSchemaExists");async function cD(e,t){let r=await PS(e);if(r)return r;if(!global.hdb_schema[e][t])try{let s=await R_.describeTable({schema:e,table:t});if(!s||Object.keys(s).length===0)return A_.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t);global.hdb_schema[e][t]=s}catch{return A_.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}}a(cD,"checkSchemaTableExists")});var xS=T((vq,FS)=>{"use strict";var pr=Nn(),Qt=BS(),uD=N(),lD=require("uuid").v4,Bq=require("clone"),Or=ls(),Jt=f(),ED=require("util"),Xt=mt(),{handleHDBError:Te,hdb_errors:dD}=V(),{HDB_ERROR_MSGS:zi,HTTP_STATUS_CODES:Se}=dD,{SchemaEventMsg:Ir}=Vt(),vS=Ls();FS.exports={createSchema:hD,createSchemaStructure:GS,createTable:TD,createTableStructure:qS,createAttribute:RD,dropSchema:SD,dropTable:fD,dropAttribute:mD};async function hD(e){try{let t=await GS(e);return Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema)),t}catch(t){throw t}}a(hD,"createSchema");async function GS(e){let t=pr.schema_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);if(!await Qt.checkSchemaExists(e.schema))throw Te(new Error,zi.SCHEMA_EXISTS_ERR(e.schema),Se.BAD_REQUEST,Jt.LOG_LEVELS.ERROR,zi.SCHEMA_EXISTS_ERR(e.schema),!0);return await Xt.createSchema(e),`schema '${e.schema}' successfully created`}a(GS,"createSchemaStructure");async function TD(e){let t=await qS(e);return Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table)),t}a(TD,"createTable");async function qS(e){let t=pr.create_table_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);pr.validateTableResidence(e.residence);let r=await Qt.checkSchemaExists(e.schema);if(r)throw Te(new Error,r,Se.NOT_FOUND,Jt.LOG_LEVELS.ERROR,r,!0);if(!await Qt.checkSchemaTableExists(e.schema,e.table))throw Te(new Error,zi.TABLE_EXISTS_ERR(e.schema,e.table),Se.BAD_REQUEST,Jt.LOG_LEVELS.ERROR,zi.TABLE_EXISTS_ERR(e.schema,e.table),!0);let n={name:e.table,schema:e.schema,id:lD(),hash_attribute:e.hash_attribute};try{if(e.residence)if(global.clustering_on)n.residence=e.residence,await Xt.createTable(n,e);else throw Te(new Error,"Clustering does not appear to be enabled. Cannot insert table with property 'residence'.",Se.BAD_REQUEST);else await Xt.createTable(n,e);return`table '${e.schema}.${e.table}' successfully created.`}catch(i){throw i}}a(qS,"createTableStructure");async function SD(e){let t=pr.schema_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);let r=await Qt.checkSchemaExists(e.schema);if(r)throw Te(new Error,r,Se.NOT_FOUND,Jt.LOG_LEVELS.ERROR,r,!0);let s=await Qt.schema_describe.describeSchema({schema:e.schema});global.hdb_schema[e.schema]=s;let n=Object.keys(global.hdb_schema[e.schema]);return await Xt.dropSchema(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema)),delete global.hdb_schema[e.schema],await vS.purgeSchemaTableStreams(e.schema,n),`successfully deleted schema '${e.schema}'`}a(SD,"dropSchema");async function fD(e){let t=pr.table_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);let r=await Qt.checkSchemaTableExists(e.schema,e.table);if(r)throw Te(new Error,r,Se.NOT_FOUND,Jt.LOG_LEVELS.ERROR,r,!0);return await Xt.dropTable(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table)),await vS.purgeTableStream(e.schema,e.table),`successfully deleted table '${e.schema}.${e.table}'`}a(fD,"dropTable");async function mD(e){let t=pr.attribute_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);let r=await Qt.checkSchemaTableExists(e.schema,e.table);if(r)throw Te(new Error,r,Se.NOT_FOUND,Jt.LOG_LEVELS.ERROR,r,!0);if(e.attribute===global.hdb_schema[e.schema][e.table].hash_attribute)throw Te(new Error,"You cannot drop a hash attribute",Se.BAD_REQUEST,void 0,void 0,!0);if(Jt.TIME_STAMP_NAMES.indexOf(e.attribute)>=0)throw Te(new Error,`cannot drop internal timestamp attribute: ${e.attribute}`,Se.BAD_REQUEST,void 0,void 0,!0);try{return await Xt.dropAttribute(e),AD(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table,e.attribute)),`successfully deleted attribute '${e.attribute}'`}catch(s){throw uD.error(`Got an error deleting attribute ${ED.inspect(e)}.`),s}}a(mD,"dropAttribute");function AD(e){let t=Object.values(global.hdb_schema[e.schema][e.table].attributes);for(let r=0;r<t.length;r++)t[r].attribute===e.attribute&&global.hdb_schema[e.schema][e.table].attributes.splice(r,1)}a(AD,"dropAttributeFromGlobal");async function RD(e){return await Xt.createAttribute(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table,e.attribute)),`attribute '${e.schema}.${e.table}.${e.attribute}' successfully created.`}a(RD,"createAttribute")});var Hs=T((qq,VS)=>{"use strict";var ji=class{constructor(t,r,s=void 0){this.status=t,this.message=r,this.system_info=s}};a(ji,"UpdateRemoteResponseObject");VS.exports=ji});var WS=T((xq,KS)=>{"use strict";var gD=zT(),Zt=N(),g_=Lt(),ND=f(),N_=Zi(),kS=Ls(),YS=xS(),pD=Po(),{Node:OD,NodeSubscription:$S}=Yi(),p_=Hs(),O_=p(),ID=$(),{cloneDeep:bD}=require("lodash");KS.exports=CD;async function CD(e){try{let t=gD(e);if(t)return Zt.error(`Validation error in updateRemoteSource: ${t.message}`),new p_(g_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,t.message);let{subscriptions:r,node_name:s,system_info:n}=e,i=[],o=bD(await N_.getNodeRecord(s)),_=!O_.isEmptyOrZeroLength(o);o=_?o[0]:o,_&&Zt.trace(`Existing record found for ${s}, updating records subscriptions`);for(let u=0,l=r.length;u<l;u++){let E=r[u],h=E.schema,d=E.table;if(O_.doesSchemaExist(h)||(Zt.trace(`updateRemoteSource creating schema: ${h}`),await YS.createSchema({operation:"create_schema",schema:h})),!O_.doesTableExist(h,d)){Zt.trace(`updateRemoteSource creating table: ${d} in schema: ${h}`);let A=new pD(h,d,E.hash_attribute);await YS.createTable(A),Zt.trace(`Creating local stream for ${h}.${d}`),await kS.createLocalTableStream(h,d)}if(await kS.updateWorkStream(E,s),_){let A=!1;for(let R=0,M=o.subscriptions.length;R<M;R++){let W=o.subscriptions[R];if(W.schema===h&&W.table===d){W.publish=E.publish,W.subscribe=E.subscribe,A=!0;break}}A||o.subscriptions.push(new $S(h,d,E.publish,E.subscribe))}else i.push(new $S(h,d,E.publish,E.subscribe))}_||(o=new OD(s,i,void 0),Zt.trace(`No record found for ${s}, creating a new one`));let c=Object.create({});return Object.assign(c,o),c.system_info=n,await N_.upsertNodeRecord(c),new p_(g_.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,`Node ${ID.get(ND.CONFIG_PARAMS.CLUSTERING_NODENAME)} successfully updated remote source`,await N_.getSystemInfo())}catch(t){Zt.error(t);let r=t.message?t.message:t;return new p_(g_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,r)}}a(CD,"updateRemoteSource")});var ZS=T((kq,XS)=>{"use strict";var JS=require("joi"),{string:QS}=JS.types(),yD=f(),MD=Pe();XS.exports=wD;function wD(e){let t=JS.object({operation:QS.valid(yD.OPERATIONS_ENUM.REMOVE_NODE).required(),node_name:QS.required()});return MD.validateBySchema(e,t)}a(wD,"removeRemoteSourceValidator")});var jS=T(($q,zS)=>{"use strict";var LD=ZS(),ea=N(),ta=Lt(),I_=f(),UD=Zi(),DD=p(),PD=Ls(),HD=$(),ra=Hs(),{NodeSubscription:BD}=Yi(),vD=ms(),GD=fo(),qD=HD.get(I_.CONFIG_PARAMS.CLUSTERING_NODENAME);zS.exports=FD;async function FD(e){try{let t=LD(e);if(t)return ea.error(`Validation error in removeRemoteSource: ${t.message}`),new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,t.message);let r=e.node_name,s=await UD.getNodeRecord(r);if(DD.isEmptyOrZeroLength(s)){let i=`No record found for node '${r}'`;return ea.error(i),new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,i)}s=s[0];for(let i=0,o=s.subscriptions.length;i<o;i++){let _=s.subscriptions[i];ea.trace(`remove remote source removing subscription: ${_.schema}.${_.table} for node: ${r}`);let c=new BD(_.schema,_.table,!1,!1);await PD.updateWorkStream(c,r)}let n=new vD(I_.SYSTEM_SCHEMA_NAME,I_.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[r]);return await GD.deleteRecord(n),new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,`Node ${qD} successfully removed node '${r}'.`)}catch(t){ea.error(t);let r=t.message?t.message:t;return new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,r)}}a(FD,"removeRemoteSource")});var nf=T((Wq,sf)=>{"use strict";var sa=N(),na=f(),ef=Lt(),tf=$(),xD=p(),rf=Hs(),VD=Zi(),kD=r_(),YD=_s();sf.exports=$D;async function $D(e){try{sa.trace("getRemoteSourceConfig called");let t=process.uptime()*1e3,r=xD.ms_to_time(t),s=new KD(tf.get(na.CONFIG_PARAMS.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT),tf.get(na.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_PORT),r,await VD.getSystemInfo());try{let n={name:e.node_name,system_info:e.system_info},i=new kD(na.SYSTEM_SCHEMA_NAME,na.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[n]);await YD.update(i)}catch(n){sa.error("Get remote config encountered an error updating system info for node:",e.node_name,n)}return sa.trace("getRemoteSourceConfig response:",s),new rf(ef.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,s)}catch(t){sa.error(t);let r=t.message?t.message:t;return new rf(ef.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,r)}}a($D,"getRemoteSourceConfig");function KD(e,t,r,s){this.uptime=r,this.ports={clustering:e,operations_api:t},this.system_info=s}a(KD,"ConfigResponseObject")});var cf=T((Jq,_f)=>{"use strict";var af=$();af.initSync();var of=Ls(),Cr=N(),br=f(),b_=Lt(),WD=WS(),QD=jS(),JD=nf(),XD=Hs(),{encode:ZD,decode:zD}=require("msgpackr"),jD=os(),eP=lr(),tP=require("util"),rP=f(),{isMainThread:sP,parentPort:nP}=require("worker_threads");vn();var iP=tP.promisify(jD.setSchemaDataToGlobal),C_=af.get(br.CONFIG_PARAMS.CLUSTERING_NODENAME);_f.exports=aP;async function aP(){try{Cr.notify("Starting reply service."),await iP();let e=await of.getConnection(),t=`${C_}.__request__`,r=e.subscribe(t,{queue:C_});await oP(r)}catch(e){Cr.error(e)}}a(aP,"initialize");async function oP(e){for await(let t of e){let r=zD(t.data);Cr.trace("Received request:",r);let s;switch(r.operation){case br.OPERATIONS_ENUM.ADD_NODE:case br.OPERATIONS_ENUM.UPDATE_NODE:s=await WD(r);break;case br.OPERATIONS_ENUM.REMOVE_NODE:s=await QD(r);break;case br.OPERATIONS_ENUM.CLUSTER_STATUS:s=await JD(r);break;case br.OPERATIONS_ENUM.DESCRIBE_ALL:s=await _P();break;default:let n=`node '${C_}' reply service received unrecognized request operation`;Cr.error(n),s=new XD(b_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,n)}Cr.trace(s),t.respond(ZD(s))}}a(oP,"handleRequest");async function _P(){try{return{status:b_.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,message:await eP.describeAll()}}catch(e){return Cr.error(e),{status:b_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,message:e.message}}}a(_P,"getRemoteDescribeAll");sP||nP.on("message",async e=>{let{type:t}=e;t===rP.ITC_EVENT_TYPES.SHUTDOWN&&of.closeConnection()})});var cP=cf();(async()=>{try{await cP()}catch(e){console.error("Error launching Nats reply service."),console.error(e)}})();
7
+ `,"")}a(qT,"runCommand");async function UL(){try{await SL.access(Qo)}catch{return!1}let e=await qT(`${Qo} --version`,void 0),t=e.substring(e.lastIndexOf("v")+1,e.length);return fL.eq(t,wL)}a(UL,"checkNATSServerInstalled");async function jo(e,t,r,s=!0,n="127.0.0.1"){return pL({name:n,port:e,user:t,pass:r,maxReconnectAttempts:-1,waitOnFirstConnect:s,tls:{keyFile:X.get(P.CONFIG_PARAMS.CLUSTERING_TLS_PRIVATEKEY),certFile:X.get(P.CONFIG_PARAMS.CLUSTERING_TLS_CERTIFICATE),caFile:X.get(P.CONFIG_PARAMS.CLUSTERING_TLS_CERT_AUTH),rejectUnauthorized:!1}})}a(jo,"createConnection");async function DL(){xe&&(await xe.drain(),xe=void 0)}a(DL,"closeConnection");async function Hi(){if(!xe){let e=await DT.getClusterUser();if(Kt(e))throw new Error("Unable to get nats connection. Cluster user is undefined.");let t=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_NETWORK_PORT);xe=await jo(t,e.username,e.decrypt_hash)}return xe}a(Hi,"getConnection");async function ys(){if(Os)return Os;Kt(xe)&&await Hi();let{domain:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF);if(Kt(e))throw new Error("Error getting JetStream domain. Unable to get JetStream manager.");return Os=await xe.jetstreamManager({domain:e}),Os}a(ys,"getJetStreamManager");async function FT(){if(Is)return Is;Kt(xe)&&await Hi();let{domain:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF);if(Kt(e))throw new Error("Error getting JetStream domain. Unable to get JetStream manager.");return Is=xe.jetstream({domain:e}),Is}a(FT,"getJetStream");async function Ie(){let e=xe||await Hi(),t=Os||await ys(),r=Is||await FT();return{connection:e,jsm:t,js:r}}a(Ie,"getNATSReferences");async function PL(e){let t=X.get(P.CONFIG_PARAMS.CLUSTERING_HUBSERVER_NETWORK_PORT),{sys_name:r,decrypt_hash:s}=await DT.getClusterUser(),n=await jo(t,r,s),i=zo(),o=n.subscribe(i),_=[],c,u=(async()=>{for await(let l of o){let E=GT.decode(l.data);E.response_time=Date.now()-c,_.push(E)}})();return c=Date.now(),await n.publish("$SYS.REQ.SERVER.PING.VARZ",void 0,{reply:i}),await n.publish("$SYS.REQ.SERVER.PING",void 0,{reply:i}),await n.flush(),await Di.async_set_timeout(e),await o.drain(),await n.close(),await u,_}a(PL,"getServerList");async function e_(e,t){let{jsm:r}=await Ie(),s=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXAGE);s=s===null?0:s*1e9;let n=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS);n=n===null?-1:n;let i=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES);i=i===null?-1:i,await r.streams.add({name:e,storage:HT.File,retention:BT.Limits,subjects:t,discard:OL.Old,duplicate_window:PT,max_msgs:n,max_bytes:i,max_age:s})}a(e_,"createLocalStream");async function xT(){let{jsm:e}=await Ie(),t=await e.streams.list().next(),r=[];return t.forEach(s=>{r.push(s)}),r}a(xT,"listStreams");async function HL(e){let{jsm:t}=await Ie();await t.streams.delete(e)}a(HL,"deleteLocalStream");async function BL(e){let{connection:t}=await Ie(),r=[],s=zo(),n=t.subscribe(s),i=(async()=>{for await(let o of n)r.push(GT.decode(o.data))})();return await t.publish(`$JS.${e}.API.STREAM.LIST`,void 0,{reply:s}),await t.flush(),await n.drain(),await i,r}a(BL,"listRemoteStreams");async function vL(e,t=void 0,r=void 0){let{jsm:s,connection:n}=await Ie(),i=Jo(),o=[],_={ack_policy:Zo.None,durable_name:i,deliver_subject:i,deliver_policy:Cs.All};t&&(_.deliver_policy=Cs.StartTime,_.opt_start_time=new Date(t).toISOString());try{await s.consumers.add(e,_);let c={timeout:2e3};r&&(c.max=r);let u=await n.subscribe(i,c);for await(let l of u){let E=vT(l),h=Xo(E.data),d={nats_timestamp:E.info.timestampNanos,nats_sequence:E.info.streamSequence,entry:h};E.headers&&(d.origin=E.headers.get(L.MSG_HEADERS.ORIGIN),d.nats_msg_id=E.headers.get(L.MSG_HEADERS.NATS_MSG_ID)),o.push(d),u.getPending()===1&&E.info.pending===0&&u.stop()}return await s.consumers.delete(e,i),o}catch(c){if(await s.consumers.delete(e,i),c.code==="TIMEOUT")return o;throw c}}a(vL,"viewStream");async function*GL(e,t=void 0,r=void 0){let{jsm:s,connection:n}=await Ie(),i=Jo(),o={ack_policy:Zo.None,durable_name:i,deliver_subject:i,deliver_policy:Cs.All};t&&(o.deliver_policy=Cs.StartTime,o.opt_start_time=new Date(t).toISOString());try{await s.consumers.add(e,o);let _={timeout:2e3};r&&(_.max=r);let c=await n.subscribe(i,_);for await(let u of c){let l=vT(u),E=Xo(l.data);E[0]||(E=[E]);for(let h of E){let d={nats_timestamp:l.info.timestampNanos,nats_sequence:l.info.streamSequence,entry:h};l.headers&&(d.origin=l.headers.get(L.MSG_HEADERS.ORIGIN),d.nats_msg_id=l.headers.get(L.MSG_HEADERS.NATS_MSG_ID)),yield d}c.getPending()===1&&l.info.pending===0&&c.stop()}await s.consumers.delete(e,i)}catch(_){if(await s.consumers.delete(e,i),_.code==="TIMEOUT")return[];throw _}}a(GL,"viewStreamIterator");async function qL(e,t,r,s){It.trace(`publishToStream called with subject: ${e}, stream: ${t}, entries:`,s);let n=!0;X.get(P.CONFIG_PARAMS.CLUSTERING_REPUBLISHMESSAGES)===!1&&r&&r.has(L.MSG_HEADERS.NATS_MSG_ID)&&(n=!1),r=VT(s,r);let{js:i}=await Ie(),o=await ws(),_=`${e}.${o}`;try{It.trace(`publishToStream publishing to subject: ${_}, data:`,s),n&&await i.publish(_,Wo(s),{headers:r})}catch(c){if(c.code&&c.code.toString()==="503")It.trace(`publishToStream creating stream: ${t}`),await e_(t,[_]),n&&await i.publish(_,Wo(s),{headers:r});else throw c}}a(qL,"publishToStream");function VT(e,t){t===void 0&&(t=bL());let r=X.get(P.CONFIG_PARAMS.CLUSTERING_NODENAME);if(!t.has(L.MSG_HEADERS.NATS_MSG_ID)){let s=Di.getTableHashAttribute(e.schema,e.table),n=e.action?e.action:e.operation,i=`${r}.${e.schema}.${e.table}.${n}.${s}.${Date.now()}.${Jo()}`;t.append(L.MSG_HEADERS.NATS_MSG_ID,i)}return t.has(L.MSG_HEADERS.ORIGIN)||t.append(L.MSG_HEADERS.ORIGIN,r),t}a(VT,"addNatsMsgHeader");function Ms(e){e=e.toLowerCase();let t=bs.join(X.get(P.CONFIG_PARAMS.ROOTPATH),ML);if(e===P.PROCESS_DESCRIPTORS.CLUSTERING_HUB.toLowerCase())return Kt(Ko)&&(Ko={port:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_HUBSERVER_NETWORK_PORT),server_name:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_NODENAME)+L.SERVER_SUFFIX.HUB,config_file:L.NATS_CONFIG_FILES.HUB_SERVER,pid_file_path:bs.join(t,L.PID_FILES.HUB),hdb_nats_path:t}),Ko;if(e===P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF.toLowerCase())return Kt($o)&&($o={port:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_NETWORK_PORT),server_name:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_NODENAME)+L.SERVER_SUFFIX.LEAF,config_file:L.NATS_CONFIG_FILES.LEAF_SERVER,domain:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_NODENAME)+L.SERVER_SUFFIX.LEAF,pid_file_path:bs.join(t,L.PID_FILES.LEAF),hdb_nats_path:t}),$o;It.error(`Unable to get Nats server config. Unrecognized process: ${e}`)}a(Ms,"getServerConfig");async function FL(e){let{jsm:t}=await Ie(),r=await ws();try{await t.streams.add({name:e.stream_name,storage:HT.File,retention:BT.Workqueue,duplicate_window:PT,subjects:[`${L.SUBJECT_PREFIXES.TXN}.${e.stream_name}.${r}`]})}catch(s){if(s.code!=="400")throw s}try{await t.consumers.info(e.stream_name,e.durable_name)}catch(s){if(s.code.toString()==="404")await t.consumers.add(e.stream_name,{ack_policy:Zo.Explicit,deliver_subject:`${e.deliver_subject}.${r}`,durable_name:e.durable_name,deliver_policy:Cs.All,max_ack_pending:1e4,deliver_group:e.deliver_group});else throw s}}a(FL,"createWorkQueueStream");async function kT(e,t,r){let{jsm:s}=await Ie(),n=await s.streams.info(t),i=YT(s.prefix),o=r.start_time?r.start_time:new Date(Date.now()).toISOString(),{schema:_,table:c}=r,u=Pi.createNatsTableStreamName(_,c),l=i===e,E,h,d=!1;if(!Array.isArray(n.config.sources)||n.config.sources.length===0)n.config.sources=[];else for(let R=0,M=n.config.sources.length;R<M;R++)if(E=n.config.sources[R],h=R,l&&E.name===u||!l&&E.name===u&&E.external&&E.external.api===`$JS.${e}.API`){d=!0;break}if(d===!0){if(E.opt_start_time===o)return;n.config.sources.splice(h,1),await s.streams.update(t,n.config)}let A={name:u,opt_start_time:o,filter_subject:`${L.SUBJECT_PREFIXES.TXN}.>`};l||(A.external={api:`$JS.${e}.API`,deliver:""}),n.config.sources.push(A),await s.streams.update(t,n.config)}a(kT,"addSourceToWorkStream");function YT(e){return e.split(".")[1]}a(YT,"extractServerName");async function $T(e,t,r){let{schema:s,table:n}=r,i=Pi.createNatsTableStreamName(s,n),{jsm:o}=await Ie(),_=await o.streams.info(t);if(!Array.isArray(_.config.sources)||_.config.sources.length===0)return;let c=_.config.sources.length,u;for(;c--;)if(u=_.config.sources[c],u.name===i&&u.external.api===`$JS.${e}.API`){_.config.sources.splice(c,1);break}await o.streams.update(t,_.config)}a($T,"removeSourceFromWorkStream");async function xL(e,t,r=2e3,s=zo()){if(!Di.isObject(t))throw new Error("data param must be an object");let n=Wo(t),{connection:i}=await Ie(),o={timeout:r};s&&(o.reply=s,o.noMux=!0);let _=await i.request(e,n,o);return Xo(_.data)}a(xL,"request");function t_(e){return new Promise(async(t,r)=>{let s=gL(Qo,["--signal",`reload=${e}`],{cwd:__dirname}),n,i;s.on("error",o=>{r(o)}),s.stdout.on("data",o=>{i+=o.toString()}),s.stderr.on("data",o=>{n+=o.toString()}),s.stderr.on("close",o=>{n&&r(n),t(i)})})}a(t_,"reloadNATS");async function VL(){let{pid_file_path:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_HUB);await t_(e)}a(VL,"reloadNATSHub");async function kL(){let{pid_file_path:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF);await t_(e)}a(kL,"reloadNATSLeaf");function YL(e,t,r){let s;switch(e.code){case LT.NoResponders:s=`Unable to ${t}, node '${r}' is not listening.`;break;case LT.Timeout:s=`Unable to ${t}, node '${r}' is listening but did not respond.`;break;default:s=e.message;break}return s}a(YL,"requestErrorHandler");async function $L(e,t){let r=t+L.SERVER_SUFFIX.LEAF;await NL.writeTransaction(P.SYSTEM_SCHEMA_NAME,P.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,async()=>{e.subscribe===!0?await kT(r,L.WORK_QUEUE_CONSUMER_NAMES.stream_name,e):await $T(r,L.WORK_QUEUE_CONSUMER_NAMES.stream_name,e)})}a($L,"updateWorkStream");async function KT(e,t){let r=Pi.createNatsTableStreamName(e,t),s=await ws(),n=JL(e,t,s);await e_(r,[n])}a(KT,"createLocalTableStream");async function KL(e){for(let t=0,r=e.length;t<r;t++){let s=e[t].schema,n=e[t].table;await KT(s,n)}}a(KL,"createTableStreams");async function WT(e,t){if(X.get(P.CONFIG_PARAMS.CLUSTERING_ENABLED))try{let r=Pi.createNatsTableStreamName(e,t),{jsm:s}=await Ie();await s.streams.purge(r)}catch(r){if(r.message==="stream not found")It.warn(r);else throw r}}a(WT,"purgeTableStream");async function WL(e,t){if(X.get(P.CONFIG_PARAMS.CLUSTERING_ENABLED))for(let r=0,s=t.length;r<s;r++)await WT(e,t[r])}a(WL,"purgeSchemaTableStreams");async function QL(e){return(await ys()).streams.info(e)}a(QL,"getStreamInfo");function JL(e,t,r){return`${L.SUBJECT_PREFIXES.TXN}.${e}.${t}.${r}`}a(JL,"createSubjectName");async function ws(){if(ps)return ps;if(ps=(await ys())?.nc?.info?.server_name,ps===void 0)throw new Error("Unable to get jetstream manager server name");return ps}a(ws,"getJsmServerName");async function XL(){let e=await ys(),t=await ws(),r=await xT();for(let s of r){let n=s.config,i=n.subjects[0];if(!i)continue;let o=ZL(s),_=i.split(".");if(!(_[_.length-1]===t&&!o)){if(n.name===L.SCHEMA_QUEUE_CONSUMER_NAMES.stream_name){let u=`${L.SCHEMA_QUEUE_CONSUMER_NAMES.deliver_subject}.${t}`;It.trace(`Updating stream subject name from: ${i} to: ${u}`),n.subjects[0]=u}else if(n.name===L.WORK_QUEUE_CONSUMER_NAMES.stream_name){let u=`${L.WORK_QUEUE_CONSUMER_NAMES.stream_name}.${t}`;It.trace(`Updating stream subject name from: ${i} to: ${u}`),n.subjects[0]=u,await e.consumers.update(L.WORK_QUEUE_CONSUMER_NAMES.stream_name,L.WORK_QUEUE_CONSUMER_NAMES.durable_name,{deliver_subject:`${L.WORK_QUEUE_CONSUMER_NAMES.deliver_subject}.${t}`})}else{let u=i.split(".");u[u.length-1]=t;let l=u.join(".");It.trace(`Updating stream subject name from: ${i} to: ${l}`),n.subjects[0]=l}await e.streams.update(n.name,n)}}}a(XL,"updateLocalStreams");function ZL(e){let{config:t}=e,r=!1;if(t.name===L.SCHEMA_QUEUE_CONSUMER_NAMES.stream_name||t.name===L.WORK_QUEUE_CONSUMER_NAMES.stream_name)return r;let s=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXAGE);s=s===null?0:s*1e9;let n=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES);n=n===null?-1:n;let i=X.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS);return i=i===null?-1:i,s!==t.max_age&&(t.max_age=s,r=!0),n!==t.max_bytes&&(t.max_bytes=n,r=!0),i!==t.max_msgs&&(t.max_msgs=i,r=!0),r}a(ZL,"updateStreamLimits")});var jT=T((sq,zT)=>{"use strict";var ZT=require("joi"),{string:Us,boolean:JT,array:zL}=ZT.types(),XT=f(),jL=Pe();zT.exports=eU;function eU(e){let t=ZT.object({operation:Us.valid(XT.OPERATIONS_ENUM.ADD_NODE,XT.OPERATIONS_ENUM.UPDATE_NODE).required(),node_name:Us.required(),subscriptions:zL.items({schema:Us.required(),table:Us.required(),hash_attribute:Us.optional(),subscribe:JT.required(),publish:JT.required()}).min(1).required()});return jL.validateBySchema(e,t)}a(eU,"updateRemoteSourceValidator")});var tS=T((iq,eS)=>{var tU=Pe(),rU={user:{presence:!0},schema:{presence:!0},table:{presence:!0},operation:{presence:!0}};eS.exports=function(e){return tU.validateObject(e,rU)}});var r_=T((aq,rS)=>{"use strict";var sU=f().OPERATIONS_ENUM,Bi=class{constructor(t,r,s,n=void 0){this.operation=sU.UPDATE,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a(Bi,"UpdateObject");rS.exports=Bi});var nS=T((_q,sS)=>{"use strict";var nU={OPERATION:"operation",REFRESH:"refresh"},vi=class{constructor(t,r){this.operation_token=t,this.refresh_token=r}};a(vi,"JWTTokens");var Gi=class{constructor(t,r,s){this.public_key=t,this.private_key=r,this.passphrase=s}};a(Gi,"JWTRSAKeys");sS.exports={JWTTokens:vi,TOKEN_TYPE_ENUM:nU,JWTRSAKeys:Gi}});var cS=T((uq,_S)=>{"use strict";var Ps=require("jsonwebtoken"),s_=require("fs-extra"),n_=p(),Ue=f(),{handleHDBError:Ee,hdb_errors:iU}=V(),{HTTP_STATUS_CODES:de,AUTHENTICATION_ERROR_MSGS:he}=iU,Ds=N(),iS=Dn(),o_=us(),aU=_s().update,oU=r_(),_U=ls(),{UserEventMsg:cU}=kt(),bt=$();bt.initSync();var i_=require("path"),{JWTTokens:uU,JWTRSAKeys:lU,TOKEN_TYPE_ENUM:qi}=nS(),EU=bt.get(Ue.HDB_SETTINGS_NAMES.OPERATION_TOKEN_TIMEOUT_KEY)?bt.get(Ue.HDB_SETTINGS_NAMES.OPERATION_TOKEN_TIMEOUT_KEY):"1d",dU=bt.get(Ue.HDB_SETTINGS_NAMES.REFRESH_TOKEN_TIMEOUT_KEY)?bt.get(Ue.HDB_SETTINGS_NAMES.REFRESH_TOKEN_TIMEOUT_KEY):"30d",Fi="RS256",a_;_S.exports={createTokens:hU,validateOperationToken:SU,refreshOperationToken:TU,validateRefreshToken:oS};async function hU(e){if(n_.isEmpty(e)||typeof e!="object")throw Ee(new Error,he.INVALID_AUTH_OBJECT,de.BAD_REQUEST,void 0,void 0,!0);if(n_.isEmpty(e.username))throw Ee(new Error,he.USERNAME_REQUIRED,de.BAD_REQUEST,void 0,void 0,!0);if(n_.isEmpty(e.password))throw Ee(new Error,he.PASSWORD_REQUIRED,de.BAD_REQUEST,void 0,void 0,!0);let t;try{if(t=await o_.findAndValidateUser(e.username,e.password),!t)throw Ee(new Error,he.INVALID_CREDENTIALS,de.UNAUTHORIZED,void 0,void 0,!0)}catch(h){throw Ds.error(h),Ee(new Error,he.INVALID_CREDENTIALS,de.UNAUTHORIZED,void 0,void 0,!0)}let r=await xi(),s=!1,n=!1;t.role&&t.role.permission&&(s=t.role.permission.super_user===!0,n=t.role.permission.cluster_user===!0);let i={username:e.username,super_user:s,cluster_user:n},o=await aS(i,r.private_key,r.passphrase),_=await Ps.sign(i,{key:r.private_key,passphrase:r.passphrase},{expiresIn:dU,algorithm:Fi,subject:qi.REFRESH}),c=iS.hash(_),u=new oU(Ue.SYSTEM_SCHEMA_NAME,Ue.SYSTEM_TABLE_NAMES.USER_TABLE_NAME,[{username:e.username,refresh_token:c}]),l,E;try{l=await aU(u)}catch(h){Ds.error(h),E=h}if(E!==void 0||l.skipped_hashes.length>0)throw Ee(new Error,he.REFRESH_TOKEN_SAVE_FAILED,de.INTERNAL_SERVER_ERROR);return _U.signalUserChange(new cU(process.pid)),new uU(o,_)}a(hU,"createTokens");async function aS(e,t,r){return await Ps.sign(e,{key:t,passphrase:r},{expiresIn:EU,algorithm:Fi,subject:qi.OPERATION})}a(aS,"signOperationToken");async function xi(){if(a_===void 0)try{let e=i_.join(bt.getHdbBasePath(),Ue.LICENSE_KEY_DIR_NAME,Ue.JWT_ENUM.JWT_PASSPHRASE_NAME),t=i_.join(bt.getHdbBasePath(),Ue.LICENSE_KEY_DIR_NAME,Ue.JWT_ENUM.JWT_PRIVATE_KEY_NAME),r=i_.join(bt.getHdbBasePath(),Ue.LICENSE_KEY_DIR_NAME,Ue.JWT_ENUM.JWT_PUBLIC_KEY_NAME),s=(await s_.readFile(e)).toString(),n=(await s_.readFile(t)).toString(),i=(await s_.readFile(r)).toString();a_=new lU(i,n,s)}catch(e){throw Ds.error(e),Ee(new Error,he.NO_ENCRYPTION_KEYS,de.INTERNAL_SERVER_ERROR)}return a_}a(xi,"getJWTRSAKeys");async function TU(e){if(!e)throw Ee(new Error,he.INVALID_BODY,de.BAD_REQUEST,void 0,void 0,!0);if(!e.refresh_token)throw Ee(new Error,he.REFRESH_TOKEN_REQUIRED,de.BAD_REQUEST,void 0,void 0,!0);await oS(e.refresh_token);let t=await xi(),r=await Ps.decode(e.refresh_token);return{operation_token:await aS({username:r.username,super_user:r.super_user,cluster_user:r.cluster_user},t.private_key,t.passphrase)}}a(TU,"refreshOperationToken");async function SU(e){try{let t=await xi(),r=await Ps.verify(e,t.public_key,{algorithms:Fi,subject:qi.OPERATION});return await o_.findAndValidateUser(r.username,void 0,!1)}catch(t){throw Ds.warn(t),t.name&&t.name==="TokenExpiredError"?Ee(new Error,he.TOKEN_EXPIRED,de.FORBIDDEN):Ee(new Error,he.INVALID_TOKEN,de.UNAUTHORIZED)}}a(SU,"validateOperationToken");async function oS(e){let t;try{let r=await xi(),s=await Ps.verify(e,r.public_key,{algorithms:Fi,subject:qi.REFRESH});t=await o_.findAndValidateUser(s.username,void 0,!1)}catch(r){throw Ds.warn(r),r.name&&r.name==="TokenExpiredError"?Ee(new Error,he.TOKEN_EXPIRED,de.FORBIDDEN):Ee(new Error,he.INVALID_TOKEN,de.UNAUTHORIZED)}if(!iS.validate(t.refresh_token,e))throw Ee(new Error,he.INVALID_TOKEN,de.UNAUTHORIZED);return t}a(oS,"validateRefreshToken")});var dS=T((dq,ES)=>{"use strict";var fU=tS(),gr=require("passport"),mU=require("passport-local").Strategy,AU=require("passport-http").BasicStrategy,RU=require("util"),gU=us(),lS=RU.callbackify(gU.findAndValidateUser),Eq=be(),NU=f(),uS=cS();gr.use(new mU(function(e,t,r){lS(e,t,r)}));gr.use(new AU(function(e,t,r){lS(e,t,r)}));gr.serializeUser(function(e,t){t(null,e)});gr.deserializeUser(function(e,t){t(null,e)});function pU(e,t,r){let s,n;if(e.headers&&e.headers.authorization){let o=e.headers.authorization.split(" ");s=o[0],n=o[1]}function i(o,_){return o?r(o):_?r(null,_):r("User not found")}switch(a(i,"handleResponse"),s){case"Basic":gr.authenticate("basic",{session:!1},(o,_)=>{i(o,_)})(e,t,r);break;case"Bearer":e.body&&e.body.operation&&e.body.operation===NU.OPERATIONS_ENUM.REFRESH_OPERATION_TOKEN?uS.validateRefreshToken(n).then(o=>{e.body.refresh_token=n,r(null,o)}).catch(o=>{r(o)}):uS.validateOperationToken(n).then(o=>{r(null,o)}).catch(o=>{r(o)});break;default:gr.authenticate("local",{session:!1},function(o,_){i(o,_)})(e,t,r);break}}a(pU,"authorize");function OU(e,t){let r=fU(e);if(r){t(r);return}let s={authorized:!0,messages:[]},n=e.user.role;if(!n||!n.permission)return t("Invalid role");let i=JSON.parse(n.permission);if(i.super_user)return t(null,s);if(!i[e.schema])return s.authorized=!1,s.messages.push(`Not authorized to access ${e.schema} schema`),t(null,s);if(!i[e.schema].tables[e.table])return s.authorized=!1,s.messages.push(`Not authorized to access ${e.table} table`),t(null,s);if(!i[e.schema].tables[e.table][e.operation])return s.authorized=!1,s.messages.push(`Not authorized to access ${e.operation} on ${e.table} table`),t(null,s);if(i[e.schema].tables[e.table].attribute_permissions&&!e.attributes)return s.authorized=!1,s.messages.push(`${e.schema}.${e.table} has attribute permissions. Missing attributes to validate`),t(null,s);if(i[e.schema].tables[e.table].attribute_permissions&&e.attributes){let o=i[e.schema].tables[e.table].attribute_permissions;for(let _ in o)e.attributes.indexOf(o[_].attribute_name)>-1&&!o[_][e.operation]&&(s.authorized=!1,s.messages.push(`Not authorized to ${e.operation} ${o[_].attribute_name} `))}return t(null,s)}a(OU,"checkPermissions");ES.exports={authorize:pU,checkPermissions:OU}});var Yi=T((Tq,hS)=>{"use strict";var Vi=class{constructor(t,r,s){this.name=t,this.subscriptions=r,this.system_info=s}};a(Vi,"Node");var ki=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.publish=s,this.subscribe=n}};a(ki,"NodeSubscription");hS.exports={Node:Vi,NodeSubscription:ki}});var SS=T((fq,TS)=>{"use strict";var IU=f().OPERATIONS_ENUM,$i=class{constructor(t,r,s,n=void 0){this.operation=IU.UPSERT,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a($i,"UpsertObject");TS.exports=$i});var mS=T((Aq,fS)=>{"use strict";var Ki=class{constructor(t,r,s,n){this.operation=t,this.node_name=r,this.subscriptions=s,this.system_info=n}};a(Ki,"RemotePayloadObject");var Wi=class{constructor(t,r,s,n,i,o){this.schema=t,this.table=r,this.hash_attribute=s,this.publish=n,this.subscribe=i,this.start_time=o}};a(Wi,"RemotePayloadSubscription");fS.exports={RemotePayloadObject:Ki,RemotePayloadSubscription:Wi}});var RS=T((gq,AS)=>{"use strict";var Qi=class{constructor(t,r,s=0,n=0,i=0,o=0){this.schema=t,this.table=r,this.table_size=s,this.record_count=n,this.transaction_log_size=i,this.transaction_log_record_count=o}};a(Qi,"TableSizeObject");AS.exports=Qi});var NS=T((pq,gS)=>{"use strict";var bU=RS(),CU=ee(),Nr=B(),yU=N(),{getSchemaPath:MU,getTransactionAuditStorePath:wU}=q();gS.exports=LU;async function LU(e){let t=new bU;try{let r=MU(e.schema,e.name),s=await Nr.openEnvironment(r,e.name),n=Nr.statDBI(s,e.hash_attribute),i=wU(e.schema,e.name),o=await Nr.openEnvironment(i,e.name,!0),_=Nr.statDBI(o,CU.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP),c=await Nr.environmentDataSize(r,e.name),u=await Nr.environmentDataSize(i,e.name);t.schema=e.schema,t.table=e.name,t.table_size=c,t.record_count=n.entryCount,t.transaction_log_size=u,t.transaction_log_record_count=_.entryCount}catch(r){yU.warn(`unable to stat table dbi due to ${r}`)}return t}a(LU,"lmdbGetTableSize")});var OS=T((Iq,pS)=>{"use strict";var Ji=class{constructor(t,r,s,n,i,o,_){this.system=t,this.time=r,this.cpu=s,this.memory=n,this.disk=i,this.network=o,this.harperdb_processes=_}};a(Ji,"SystemInformationObject");pS.exports=Ji});var MS=T((Cq,yS)=>{"use strict";var UU=require("fs-extra"),DU=require("path"),ae=require("systeminformation"),Ct=N(),__=f(),PU=NS(),bS=lr(),{getThreadInfo:IS}=vn(),CS=$();CS.initSync();var HU=OS(),{openEnvironment:BU}=B(),{getSchemaPath:vU}=q(),Xi;yS.exports={getHDBProcessInfo:E_,getNetworkInfo:h_,getDiskInfo:d_,getMemoryInfo:l_,getCPUInfo:u_,getTimeInfo:c_,getSystemInformation:T_,systemInformation:GU,getTableSize:S_,getMetrics:f_};function c_(){return ae.time()}a(c_,"getTimeInfo");async function u_(){try{let{family:e,model:t,stepping:r,revision:s,voltage:n,speedmin:i,speedmax:o,governor:_,socket:c,cache:u,...l}=await ae.cpu();l.cpu_speed=await ae.cpuCurrentSpeed();let{raw_currentload:E,raw_currentload_idle:h,raw_currentload_irq:d,raw_currentload_nice:A,raw_currentload_system:R,raw_currentload_user:M,cpus:W,...x}=await ae.currentLoad();return x.cpus=[],W.forEach(F=>{let{raw_load:Xe,raw_load_idle:Bs,raw_load_irq:M_,raw_load_nice:dP,raw_load_system:hP,raw_load_user:TP,...Ef}=F;x.cpus.push(Ef)}),l.current_load=x,l}catch(e){return Ct.error(`error in getCPUInfo: ${e}`),{}}}a(u_,"getCPUInfo");async function l_(){try{let{buffers:e,cached:t,slab:r,buffcache:s,...n}=await ae.mem();return Object.assign(n,process.memoryUsage())}catch(e){return Ct.error(`error in getMemoryInfo: ${e}`),{}}}a(l_,"getMemoryInfo");async function E_(){let e={core:[],clustering:[]};try{let t=await ae.processes(),r;try{r=Number.parseInt(await UU.readFile(DU.join(CS.get(__.CONFIG_PARAMS.ROOTPATH),__.HDB_PID_FILE),"utf8"))}catch(s){if(s.code===__.NODE_ERROR_CODES.ENOENT)Ct.error("Unable to locate 'hdb.pid' file, try stopping and starting HarperDB");else throw s}return t.list.forEach(s=>{s.pid===r?e.core.push(s):s.name==="nats-server"&&e.clustering.push(s)}),e}catch(t){return Ct.error(`error in getHDBProcessInfo: ${t}`),e}}a(E_,"getHDBProcessInfo");async function d_(){let e={};try{let{rIO_sec:t,wIO_sec:r,tIO_sec:s,ms:n,...i}=await ae.disksIO();e.io=i;let{rx_sec:o,tx_sec:_,wx_sec:c,...u}=await ae.fsStats();return e.read_write=u,e.size=await ae.fsSize(),e}catch(t){return Ct.error(`error in getDiskInfo: ${t}`),e}}a(d_,"getDiskInfo");async function h_(){let e={default_interface:null,latency:{},interfaces:[],stats:[],connections:[]};try{return e.default_interface=await ae.networkInterfaceDefault(),e.latency=await ae.inetChecksite("google.com"),(await ae.networkInterfaces()).forEach(s=>{let{internal:n,virtual:i,mtu:o,dhcp:_,dnsSuffix:c,ieee8021xAuth:u,ieee8021xState:l,carrier_changes:E,...h}=s;e.interfaces.push(h)}),(await ae.networkStats()).forEach(s=>{let{rx_sec:n,tx_sec:i,ms:o,..._}=s;e.stats.push(_)}),e}catch(t){return Ct.error(`error in getNetworkInfo: ${t}`),e}}a(h_,"getNetworkInfo");async function T_(){if(Xi!==void 0)return Xi;let e={};try{let{codepage:t,logofile:r,serial:s,build:n,servicepack:i,uefi:o,..._}=await ae.osInfo();e=_;let c=await ae.versions("node, npm");return e.node_version=c.node,e.npm_version=c.npm,Xi=e,Xi}catch(t){return Ct.error(`error in getSystemInformation: ${t}`),e}}a(T_,"getSystemInformation");async function S_(){let e=[],t=await bS.describeAll();for(let r of Object.values(t))for(let s of Object.values(r))e.push(await PU(s));return e}a(S_,"getTableSize");async function f_(){let e=await bS.describeAll(),t={};for(let r in e){let s=t[r]={};for(let n in e[r])try{let i=vU(r,n),_=(await BU(i,n)).getStats();s[n]={puts:_.puts,deletes:_.deletes,txns:_.txns,pageFlushes:_.pageFlushes,writes:_.writes,pagesWritten:_.pagesWritten,timeDuringTxns:_.timeDuringTxns,timeStartTxns:_.timeStartTxns,timePageFlushes:_.timePageFlushes,timeSync:_.timeSync}}catch(i){Ct.notify(`Error getting stats for table ${n}: ${i}`)}}return t}a(f_,"getMetrics");async function GU(e){let t=new HU;if(!Array.isArray(e.attributes)||e.attributes.length===0)return t.system=await T_(),t.time=c_(),t.cpu=await u_(),t.memory=await l_(),t.disk=await d_(),t.network=await h_(),t.harperdb_processes=await E_(),t.table_size=await S_(),t.metrics=await f_(),t.threads=await IS(),t;for(let r=0;r<e.attributes.length;r++)switch(e.attributes[r]){case"system":t.system=await T_();break;case"time":t.time=c_();break;case"cpu":t.cpu=await u_();break;case"memory":t.memory=await l_();break;case"disk":t.disk=await d_();break;case"network":t.network=await h_();break;case"harperdb_processes":t.harperdb_processes=await E_();break;case"table_size":t.table_size=await S_();break;case"database_metrics":case"metrics":t.metrics=await f_();break;case"threads":t.threads=await IS();break;default:break}return t}a(GU,"systemInformation")});var LS=T((Lq,wS)=>{"use strict";var Mq=require("fs-extra"),wq=N();wS.exports={version:qU,printVersion:xU,nodeVersion:FU};var yt=Yo();function qU(){if(yt)return yt.version}a(qU,"version");function FU(){if(yt&&yt.engines&&yt.engines["preferred-node"])return yt.engines["preferred-node"]}a(FU,"nodeVersion");function xU(){yt&&console.log(`HarperDB Version ${yt.version}`)}a(xU,"printVersion")});var Zi=T((Hq,HS)=>{"use strict";var VU=_s(),m_=p(),A_=require("util"),Wt=f(),US=$();US.initSync();var kU=dS(),DS=Vn(),{Node:Dq,NodeSubscription:Pq}=Yi(),YU=fi(),$U=SS(),{RemotePayloadObject:KU,RemotePayloadSubscription:WU}=mS(),{handleHDBError:QU,hdb_errors:JU}=V(),{HTTP_STATUS_CODES:XU,HDB_ERROR_MSGS:ZU}=JU,zU=at(),jU=MS(),eD=LS(),tD=A_.promisify(kU.authorize),rD=A_.promisify(DS.searchByHash),sD=A_.promisify(DS.searchByValue);HS.exports={authHeaderToUser:nD,isEmpty:iD,getNodeRecord:aD,upsertNodeRecord:oD,buildNodePayloads:_D,checkClusteringEnabled:cD,getAllNodeRecords:uD,getSystemInfo:lD,reverseSubscription:PS};async function nD(e){let t={headers:{authorization:e.hdb_auth_header}};return e.hdb_user=await tD(t,null),e}a(nD,"authHeaderToUser");function iD(e){return e==null}a(iD,"isEmpty");async function aD(e){let t=new YU(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[e],["*"]);return rD(t)}a(aD,"getNodeRecord");async function oD(e){let t=new $U(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[e]);return VU.upsert(t)}a(oD,"upsertNodeRecord");function PS(e){if(m_.isEmpty(e.subscribe)||m_.isEmpty(e.publish))throw new Error("Received invalid subscription object");let{schema:t,table:r,hash_attribute:s}=e,n={schema:t,table:r,hash_attribute:s};return e.subscribe===!0&&e.publish===!1?(n.subscribe=!1,n.publish=!0):e.subscribe===!1&&e.publish===!0?(n.subscribe=!0,n.publish=!1):(n.subscribe=e.subscribe,n.publish=e.publish),n}a(PS,"reverseSubscription");function _D(e,t,r,s){let n=[];for(let i=0,o=e.length;i<o;i++){let _=e[i],{schema:c,table:u}=_,l=m_.getTableHashAttribute(c,u),{subscribe:E,publish:h}=PS(_),d=new WU(c,u,l,h,E,_.start_time);n.push(d)}return new KU(r,t,n,s)}a(_D,"buildNodePayloads");function cD(){if(!US.get(Wt.CONFIG_PARAMS.CLUSTERING_ENABLED))throw QU(new Error,ZU.CLUSTERING_NOT_ENABLED,XU.BAD_REQUEST,void 0,void 0,!0)}a(cD,"checkClusteringEnabled");async function uD(){let e=new zU(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,"name","*",void 0,["*"]);return Array.from(await sD(e))}a(uD,"getAllNodeRecords");async function lD(){let e=await jU.getSystemInformation();return{hdb_version:eD.version(),node_version:e.node_version,platform:e.platform}}a(lD,"getSystemInfo")});var GS=T((vq,vS)=>{"use strict";var g_=lr(),{hdb_errors:R_}=V();vS.exports={checkSchemaExists:BS,checkSchemaTableExists:ED,schema_describe:g_};async function BS(e){if(!global.hdb_schema[e])try{let t=await g_.describeSchema({schema:e});global.hdb_schema[e]=t}catch{return R_.HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(e)}}a(BS,"checkSchemaExists");async function ED(e,t){let r=await BS(e);if(r)return r;if(!global.hdb_schema[e][t])try{let s=await g_.describeTable({schema:e,table:t});if(!s||Object.keys(s).length===0)return R_.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t);global.hdb_schema[e][t]=s}catch{return R_.HDB_ERROR_MSGS.TABLE_NOT_FOUND(e,t)}}a(ED,"checkSchemaTableExists")});var kS=T((Fq,VS)=>{"use strict";var pr=Nn(),Qt=GS(),dD=N(),hD=require("uuid").v4,qq=require("clone"),Or=ls(),Jt=f(),TD=require("util"),Xt=mt(),{handleHDBError:Te,hdb_errors:SD}=V(),{HDB_ERROR_MSGS:zi,HTTP_STATUS_CODES:Se}=SD,{SchemaEventMsg:Ir}=kt(),qS=Ls();VS.exports={createSchema:fD,createSchemaStructure:FS,createTable:mD,createTableStructure:xS,createAttribute:pD,dropSchema:AD,dropTable:RD,dropAttribute:gD};async function fD(e){try{let t=await FS(e);return Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema)),t}catch(t){throw t}}a(fD,"createSchema");async function FS(e){let t=pr.schema_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);if(!await Qt.checkSchemaExists(e.schema))throw Te(new Error,zi.SCHEMA_EXISTS_ERR(e.schema),Se.BAD_REQUEST,Jt.LOG_LEVELS.ERROR,zi.SCHEMA_EXISTS_ERR(e.schema),!0);return await Xt.createSchema(e),`schema '${e.schema}' successfully created`}a(FS,"createSchemaStructure");async function mD(e){let t=await xS(e);return Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table)),t}a(mD,"createTable");async function xS(e){let t=pr.create_table_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);pr.validateTableResidence(e.residence);let r=await Qt.checkSchemaExists(e.schema);if(r)throw Te(new Error,r,Se.NOT_FOUND,Jt.LOG_LEVELS.ERROR,r,!0);if(!await Qt.checkSchemaTableExists(e.schema,e.table))throw Te(new Error,zi.TABLE_EXISTS_ERR(e.schema,e.table),Se.BAD_REQUEST,Jt.LOG_LEVELS.ERROR,zi.TABLE_EXISTS_ERR(e.schema,e.table),!0);let n={name:e.table,schema:e.schema,id:hD(),hash_attribute:e.hash_attribute};try{if(e.residence)if(global.clustering_on)n.residence=e.residence,await Xt.createTable(n,e);else throw Te(new Error,"Clustering does not appear to be enabled. Cannot insert table with property 'residence'.",Se.BAD_REQUEST);else await Xt.createTable(n,e);return`table '${e.schema}.${e.table}' successfully created.`}catch(i){throw i}}a(xS,"createTableStructure");async function AD(e){let t=pr.schema_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);let r=await Qt.checkSchemaExists(e.schema);if(r)throw Te(new Error,r,Se.NOT_FOUND,Jt.LOG_LEVELS.ERROR,r,!0);let s=await Qt.schema_describe.describeSchema({schema:e.schema});global.hdb_schema[e.schema]=s;let n=Object.keys(global.hdb_schema[e.schema]);return await Xt.dropSchema(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema)),delete global.hdb_schema[e.schema],await qS.purgeSchemaTableStreams(e.schema,n),`successfully deleted schema '${e.schema}'`}a(AD,"dropSchema");async function RD(e){let t=pr.table_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);let r=await Qt.checkSchemaTableExists(e.schema,e.table);if(r)throw Te(new Error,r,Se.NOT_FOUND,Jt.LOG_LEVELS.ERROR,r,!0);return await Xt.dropTable(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table)),await qS.purgeTableStream(e.schema,e.table),`successfully deleted table '${e.schema}.${e.table}'`}a(RD,"dropTable");async function gD(e){let t=pr.attribute_object(e);if(t)throw Te(t,t.message,Se.BAD_REQUEST,void 0,void 0,!0);let r=await Qt.checkSchemaTableExists(e.schema,e.table);if(r)throw Te(new Error,r,Se.NOT_FOUND,Jt.LOG_LEVELS.ERROR,r,!0);if(e.attribute===global.hdb_schema[e.schema][e.table].hash_attribute)throw Te(new Error,"You cannot drop a hash attribute",Se.BAD_REQUEST,void 0,void 0,!0);if(Jt.TIME_STAMP_NAMES.indexOf(e.attribute)>=0)throw Te(new Error,`cannot drop internal timestamp attribute: ${e.attribute}`,Se.BAD_REQUEST,void 0,void 0,!0);try{return await Xt.dropAttribute(e),ND(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table,e.attribute)),`successfully deleted attribute '${e.attribute}'`}catch(s){throw dD.error(`Got an error deleting attribute ${TD.inspect(e)}.`),s}}a(gD,"dropAttribute");function ND(e){let t=Object.values(global.hdb_schema[e.schema][e.table].attributes);for(let r=0;r<t.length;r++)t[r].attribute===e.attribute&&global.hdb_schema[e.schema][e.table].attributes.splice(r,1)}a(ND,"dropAttributeFromGlobal");async function pD(e){return await Xt.createAttribute(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table,e.attribute)),`attribute '${e.schema}.${e.table}.${e.attribute}' successfully created.`}a(pD,"createAttribute")});var Hs=T((Vq,YS)=>{"use strict";var ji=class{constructor(t,r,s=void 0){this.status=t,this.message=r,this.system_info=s}};a(ji,"UpdateRemoteResponseObject");YS.exports=ji});var JS=T((Yq,QS)=>{"use strict";var OD=jT(),Zt=N(),N_=Ut(),ID=f(),p_=Zi(),$S=Ls(),KS=kS(),bD=Po(),{Node:CD,NodeSubscription:WS}=Yi(),O_=Hs(),I_=p(),yD=$(),{cloneDeep:MD}=require("lodash");QS.exports=wD;async function wD(e){try{let t=OD(e);if(t)return Zt.error(`Validation error in updateRemoteSource: ${t.message}`),new O_(N_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,t.message);let{subscriptions:r,node_name:s,system_info:n}=e,i=[],o=MD(await p_.getNodeRecord(s)),_=!I_.isEmptyOrZeroLength(o);o=_?o[0]:o,_&&Zt.trace(`Existing record found for ${s}, updating records subscriptions`);for(let u=0,l=r.length;u<l;u++){let E=r[u],h=E.schema,d=E.table;if(I_.doesSchemaExist(h)||(Zt.trace(`updateRemoteSource creating schema: ${h}`),await KS.createSchema({operation:"create_schema",schema:h})),!I_.doesTableExist(h,d)){Zt.trace(`updateRemoteSource creating table: ${d} in schema: ${h}`);let A=new bD(h,d,E.hash_attribute);await KS.createTable(A),Zt.trace(`Creating local stream for ${h}.${d}`),await $S.createLocalTableStream(h,d)}if(await $S.updateWorkStream(E,s),_){let A=!1;for(let R=0,M=o.subscriptions.length;R<M;R++){let W=o.subscriptions[R];if(W.schema===h&&W.table===d){W.publish=E.publish,W.subscribe=E.subscribe,A=!0;break}}A||o.subscriptions.push(new WS(h,d,E.publish,E.subscribe))}else i.push(new WS(h,d,E.publish,E.subscribe))}_||(o=new CD(s,i,void 0),Zt.trace(`No record found for ${s}, creating a new one`));let c=Object.create({});return Object.assign(c,o),c.system_info=n,await p_.upsertNodeRecord(c),new O_(N_.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,`Node ${yD.get(ID.CONFIG_PARAMS.CLUSTERING_NODENAME)} successfully updated remote source`,await p_.getSystemInfo())}catch(t){Zt.error(t);let r=t.message?t.message:t;return new O_(N_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,r)}}a(wD,"updateRemoteSource")});var jS=T((Kq,zS)=>{"use strict";var ZS=require("joi"),{string:XS}=ZS.types(),LD=f(),UD=Pe();zS.exports=DD;function DD(e){let t=ZS.object({operation:XS.valid(LD.OPERATIONS_ENUM.REMOVE_NODE).required(),node_name:XS.required()});return UD.validateBySchema(e,t)}a(DD,"removeRemoteSourceValidator")});var tf=T((Qq,ef)=>{"use strict";var PD=jS(),ea=N(),ta=Ut(),b_=f(),HD=Zi(),BD=p(),vD=Ls(),GD=$(),ra=Hs(),{NodeSubscription:qD}=Yi(),FD=ms(),xD=fo(),VD=GD.get(b_.CONFIG_PARAMS.CLUSTERING_NODENAME);ef.exports=kD;async function kD(e){try{let t=PD(e);if(t)return ea.error(`Validation error in removeRemoteSource: ${t.message}`),new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,t.message);let r=e.node_name,s=await HD.getNodeRecord(r);if(BD.isEmptyOrZeroLength(s)){let i=`No record found for node '${r}'`;return ea.error(i),new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,i)}s=s[0];for(let i=0,o=s.subscriptions.length;i<o;i++){let _=s.subscriptions[i];ea.trace(`remove remote source removing subscription: ${_.schema}.${_.table} for node: ${r}`);let c=new qD(_.schema,_.table,!1,!1);await vD.updateWorkStream(c,r)}let n=new FD(b_.SYSTEM_SCHEMA_NAME,b_.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[r]);return await xD.deleteRecord(n),new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,`Node ${VD} successfully removed node '${r}'.`)}catch(t){ea.error(t);let r=t.message?t.message:t;return new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,r)}}a(kD,"removeRemoteSource")});var of=T((Xq,af)=>{"use strict";var sa=N(),na=f(),rf=Ut(),sf=$(),YD=p(),nf=Hs(),$D=Zi(),KD=r_(),WD=_s();af.exports=QD;async function QD(e){try{sa.trace("getRemoteSourceConfig called");let t=process.uptime()*1e3,r=YD.ms_to_time(t),s=new JD(sf.get(na.CONFIG_PARAMS.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT),sf.get(na.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_PORT),r,await $D.getSystemInfo());try{let n={name:e.node_name,system_info:e.system_info},i=new KD(na.SYSTEM_SCHEMA_NAME,na.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[n]);await WD.update(i)}catch(n){sa.error("Get remote config encountered an error updating system info for node:",e.node_name,n)}return sa.trace("getRemoteSourceConfig response:",s),new nf(rf.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,s)}catch(t){sa.error(t);let r=t.message?t.message:t;return new nf(rf.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,r)}}a(QD,"getRemoteSourceConfig");function JD(e,t,r,s){this.uptime=r,this.ports={clustering:e,operations_api:t},this.system_info=s}a(JD,"ConfigResponseObject")});var lf=T((zq,uf)=>{"use strict";var _f=$();_f.initSync();var cf=Ls(),Cr=N(),br=f(),C_=Ut(),XD=JS(),ZD=tf(),zD=of(),jD=Hs(),{encode:eP,decode:tP}=require("msgpackr"),rP=os(),sP=lr(),nP=require("util"),iP=f(),{isMainThread:aP,parentPort:oP}=require("worker_threads");vn();var _P=nP.promisify(rP.setSchemaDataToGlobal),y_=_f.get(br.CONFIG_PARAMS.CLUSTERING_NODENAME);uf.exports=cP;async function cP(){try{Cr.notify("Starting reply service."),await _P();let e=await cf.getConnection(),t=`${y_}.__request__`,r=e.subscribe(t,{queue:y_});await uP(r)}catch(e){Cr.error(e)}}a(cP,"initialize");async function uP(e){for await(let t of e){let r=tP(t.data);Cr.trace("Received request:",r);let s;switch(r.operation){case br.OPERATIONS_ENUM.ADD_NODE:case br.OPERATIONS_ENUM.UPDATE_NODE:s=await XD(r);break;case br.OPERATIONS_ENUM.REMOVE_NODE:s=await ZD(r);break;case br.OPERATIONS_ENUM.CLUSTER_STATUS:s=await zD(r);break;case br.OPERATIONS_ENUM.DESCRIBE_ALL:s=await lP();break;default:let n=`node '${y_}' reply service received unrecognized request operation`;Cr.error(n),s=new jD(C_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,n)}Cr.trace(s),t.respond(eP(s))}}a(uP,"handleRequest");async function lP(){try{return{status:C_.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,message:await sP.describeAll()}}catch(e){return Cr.error(e),{status:C_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,message:e.message}}}a(lP,"getRemoteDescribeAll");aP||oP.on("message",async e=>{let{type:t}=e;t===iP.ITC_EVENT_TYPES.SHUTDOWN&&cf.closeConnection()})});var EP=lf();(async()=>{try{await EP()}catch(e){console.error("Error launching Nats reply service."),console.error(e)}})();