harperdb 4.1.0 → 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.
- package/README.md +1 -1
- package/bin/harperdb.js +20 -19
- package/dependencies/nats-server.zip +0 -0
- package/launchServiceScripts/launchInstallNATSServer.js +3 -3
- package/launchServiceScripts/launchNatsIngestService.js +11 -11
- package/launchServiceScripts/launchNatsReplyService.js +6 -6
- package/launchServiceScripts/launchUpdateNodes4-0-0.js +6 -6
- package/package.json +15 -15
- package/server/jobs/jobProcess.js +11 -11
- package/server/threads/threadHTTPServer.js +13 -13
- package/utility/scripts/restartHdb.js +6 -6
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var cf=Object.defineProperty;var a=(e,t)=>cf(e,"name",{value:t,configurable:!0});var T=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var f=T((dP,V_)=>{"use strict";var De=require("path"),uf=require("fs");function lf(){let e=__dirname;for(;!uf.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(lf,"getHDBPackageRoot");var ct=lf(),M_="js",Gs=M_,Ef="harperdb-config.yaml",df="defaultConfig.yaml",hf="hdb",w_=`harperdb.${Gs}`,L_=`customFunctionsServer.${Gs}`,Tf=`restartHdb.${Gs}`,aa="HarperDB",vs="Custom Functions",qs="Clustering Hub",Fs="Clustering Leaf",Sf="Clustering Ingest Service",ff="Clustering Reply Service",mf="foreground.pid",Af={HDB:aa,CLUSTERING_HUB:qs,CLUSTERING_LEAF:Fs,CLUSTERING_INGEST_SERVICE:Sf,CLUSTERING_REPLY_SERVICE:ff,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"},Rf={HDB:"hdb.log",INSTALL:"install.log",CLUSTERING_HUB:"clustering_hub.log",CLUSTERING_LEAF:"clustering_leaf.log"},gf={NOTIFY:"notify",FATAL:"fatal",ERROR:"error",WARN:"warn",INFO:"info",DEBUG:"debug",TRACE:"trace"},Nf={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"},pf={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")},Of={HDB:De.join(ia.HDB,w_),CUSTOM_FUNCTIONS:De.join(ia.CUSTOM_FUNCTIONS,L_)},If={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")},bf={SUPER_USER:"super_user",CLUSTER_USER:"cluster_user"},U_="support@harperdb.io",Cf="customer-success@harperdb.io",D_=1,yf=4141,P_="https://harperdbhelp.zendesk.com/hc/en-us/requests/new",Mf="https://www.harperdb.io/product",wf=`For support, please submit a request at ${P_} or contact ${U_}`,H_=`For license support, please contact ${Cf}`,Lf="None of the specified records were found.",Uf="hash attribute not found",Df=`Your current license only supports ${D_} role. ${H_}`,Pf="Your current license only supports 3 connections to a node.",Hf="127.0.0.1",Bf=1,vf=/^\.$/,Gf=/^\.\.$/,qf="U+002E",Ff=/\//g,xf="U+002F",Vf=/U\+002F/g,kf=/^U\+002E$/,Yf=/^U\+002EU\+002E$/,$f="d",Kf=999999,Wf="*",Qf="--max-old-space-size=",Jf="system",Xf="__hdb_hash",Zf=".harperdb",zf=".hdb",jf="keys",em="hdb_boot_properties.file",tm=".updateConfig.json",rm="SIGTSTP",sm=24,nm=6e4,im=448,am="blob",om="trash",_m="schema",cm="transactions",um=".count",lm="id",Em="PROCESS_NAME",B_={SETTINGS_PATH_KEY:"settings_path"},v_=require("lodash"),dm={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"},hm={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},Tm={DATA_VERSION:"data_version",UPGRADE_VERSION:"upgrade_version"},Sm={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"},fm={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:",mm={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"},Am={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"},Rm="060493.ks",gm=".license",Nm={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"},pm={CSV:".csv",JSON:".json"},Om={AWS_ACCESS_KEY:"aws_access_key_id",AWS_SECRET:"aws_secret_access_key",AWS_BUCKET:"bucket",AWS_FILE_KEY:"key",REGION:"region"},Im={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 bm={RUN:"run",START:"start",INSTALL:"install",REGISTER:"register",STOP:"stop",RESTART:"restart",VERSION:"version",UPGRADE:"upgrade",HELP:"help"},Cm={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"},ym=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",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,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 Mm={TABLES:"tables",PATH:"path",AUDIT_PATH:"auditPath"},wm={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"},Lm={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"},Um={BIDIRECTIONAL:"BIDIRECTIONAL",OUTBOUND:"OUTBOUND",INBOUND:"INBOUND"},Dm={FILE_SYSTEM:"fs",LMDB:"lmdb"},Pm={API_CALL_DEFAULT:1e4,VERSION_DEFAULT:"2.2.0"},Hm={DEVELOPMENT:8192,DEFAULT:512},Bm={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"},Gm={ENOENT:"ENOENT",EACCES:"EACCES"},F_={CREATED_TIME:"__createdtime__",UPDATED_TIME:"__updatedtime__"},qm="__clustering__",Fm=Object.values(F_),xm=15984864e5,x_={LESS:"<",LESS_OR_EQ:"<=",GREATER:">",GREATER_OR_EQ:">=",BETWEEN:"..."},Vm=v_.invert(x_),km={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"},Ym=111,$m=`\r
|
|
2
|
-
`,
|
|
3
|
-
`}a(je,"createLogRecord");function Ur(e){Ze&&
|
|
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:RA.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(OA,"findPs")});var ee=T((gP,_c)=>{"use strict";var IA="__dbis__",bA="__environment_name__",CA="__dbi_defintion__",yA={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"},MA=["__createdtime__","__updatedtime__"],wA="\uFFFF",oc={TIMESTAMP:"timestamp",HASH_VALUE:"hash_value",USER_NAME:"user_name"},LA=Object.values(oc);_c.exports={INTERNAL_DBIS_NAME:IA,DBI_DEFINITION_NAME:CA,SEARCH_TYPES:yA,TIMESTAMP_NAMES:MA,MAX_SEARCH_KEY_LENGTH:256,ENVIRONMENT_NAME_KEY:bA,TRANSACTIONS_DBI_NAMES_ENUM:oc,TRANSACTIONS_DBIS:LA,OVERFLOW_MARKER:wA}});var be=T((NP,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"},UA=dc[lc.INTERNAL_SERVER_ERROR],DA={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.`},PA={CONFIG_VALIDATION:e=>`HarperDB config file validation error: ${e}`},HA={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"},BA={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"},vA={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"},GA={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."},qA={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`},FA={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"},xA={OUTER_JOIN_TRANSLATION_ERROR:"There was an error translating the final SQL outer join data."},VA={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}`},kA={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."},YA={CLUSTERING_NOT_ENABLED:"Clustering must be enabled to perform this operation."},$A={...hc,...HA,...DA,...GA,...qA,...FA,...xA,...VA,...vA,...Tc,...Sc,...kA,...YA,...PA};fc.exports={CHECK_LOGS_WRAPPER:Ec,HDB_ERROR_MSGS:$A,DEFAULT_ERROR_MSGS:dc,DEFAULT_ERROR_RESP:UA,HTTP_STATUS_CODES:lc,LMDB_ERRORS_ENUM:BA,AUTHENTICATION_ERROR_MSGS:hc,VALIDATION_ERROR_MSGS:Tc,ITC_ERRORS:Sc}});var V=T((OP,Rc)=>{"use strict";var er=be(),KA=N(),WA=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&&KA[n](i)}};a(Dr,"HdbError");function mc(e,t,r,s=WA.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((CP,Pc)=>{"use strict";var yt=require("path"),QA=require("fs-extra"),re=N(),gc=require("fs-extra"),Pr=require("os"),JA=require("net"),XA=require("recursive-iterator"),te=f(),Ic=ac(),Nc=require("papaparse"),Ks=require("moment"),{inspect:ZA}=require("util"),pc=require("is-number"),bP=require("lodash"),{hdb_errors:Ws}=V(),bc=require("util").promisify(setTimeout),zA=100,jA=5,eR="",tR=4,Oc={true:!0,false:!1,undefined:null,null:null,NaN:NaN};Pc.exports={isEmpty:me,isEmptyOrZeroLength:Ve,arrayHasEmptyValues:nR,arrayHasEmptyOrZeroLengthValues:iR,buildFolderPath:aR,isBoolean:Cc,errorizeMessage:rR,stripFileExtension:_R,autoCast:cR,autoCastJSON:yc,autoCastJSONDeep:da,removeDir:uR,compareVersions:lR,isCompatibleDataVersion:ER,escapeRawValue:dR,unescapeValue:hR,stringifyProps:TR,timeoutPromise:fR,isClusterOperation:AR,getClusterUser:gR,checkGlobalSchemaTable:RR,getHomeDir:wc,getPropsFilePath:SR,promisifyPapaParse:NR,removeBOM:Lc,createEventPromise:pR,checkProcessRunning:OR,checkSchemaTableExist:IR,checkSchemaExists:Uc,checkTableExists:Dc,getStartOfTomorrowInSeconds:bR,getLimitKey:CR,isObject:oR,isNotEmptyAndHasValue:sR,autoCasterIsNumberCheck:Mc,backtickASTSchemaItems:yR,isPortTaken:mR,stopProcess:MR,createForkArgs:wR,autoCastBoolean:LR,async_set_timeout:bc,getTableHashAttribute:UR,doesSchemaExist:DR,doesTableExist:PR,stringifyObj:HR,ms_to_time:BR,changeExtension:vR,PACKAGE_ROOT:te.PACKAGE_ROOT};function rR(e){return e instanceof Error?e:new Error(e)}a(rR,"errorizeMessage");function me(e){return e==null}a(me,"isEmpty");function sR(e){return!me(e)&&(e||e===0||e===""||Cc(e))}a(sR,"isNotEmptyAndHasValue");function Ve(e){return me(e)||e.length===0||e.size===0}a(Ve,"isEmptyOrZeroLength");function nR(e){if(me(e))return!0;for(let t=0;t<e.length;t++)if(me(e[t]))return!0;return!1}a(nR,"arrayHasEmptyValues");function iR(e){if(Ve(e))return!0;for(let t=0;t<e.length;t++)if(Ve(e[t]))return!0;return!1}a(iR,"arrayHasEmptyOrZeroLengthValues");function aR(...e){try{return e.join(yt.sep)}catch{console.error(e)}}a(aR,"buildFolderPath");function Cc(e){return me(e)?!1:e===!0||e===!1}a(Cc,"isBoolean");function oR(e){return me(e)?!1:typeof e=="object"}a(oR,"isObject");function _R(e){return Ve(e)?eR:e.slice(0,-tR)}a(_R,"stripFileExtension");function cR(e){return me(e)||e===""||typeof e!="string"?e:Oc[e]!==void 0?Oc[e]:Mc(e)===!0?Number(e):e}a(cR,"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 uR(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(uR,"removeDir");function lR(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(lR,"compareVersions");function ER(e,t,r=!1){let s=e.toString().split("."),n=t.toString().split(".");return s[0]===n[0]&&(!r||s[1]===n[1])}a(ER,"isCompatibleDataVersion");function dR(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(dR,"escapeRawValue");function hR(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(hR,"unescapeValue");function TR(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(TR,"stringifyProps");function wc(){let e;try{e=Pr.homedir()}catch{e=process.env.HOME}return e||(e="~/"),e}a(wc,"getHomeDir");function SR(){let e=yt.join(wc(),te.HDB_HOME_DIR_NAME,te.BOOT_PROPS_FILE_NAME);return QA.existsSync(e)||(e=yt.join(__dirname,"../","hdb_boot_properties.file")),e}a(SR,"getPropsFilePath");function fR(e,t){let r,s;return s=new Promise(function(n){r=setTimeout(function(){n(t)},e)}),{promise:s,cancel:function(){clearTimeout(r)}}}a(fR,"timeoutPromise");async function mR(e){if(!e)throw new Error("Invalid port passed as parameter");return new Promise((t,r)=>{let s=JA.createServer().once("error",n=>{n.code==="EADDRINUSE"?t(!0):r(n)}).once("listening",()=>s.once("close",()=>t(!1)).close()).listen(e)})}a(mR,"isPortTaken");function AR(e){try{return te.CLUSTER_OPERATIONS[e.toLowerCase()]!==void 0}catch(t){re.error(`Error checking operation against cluster ops ${t}`)}return!1}a(AR,"isClusterOperation");function RR(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(RR,"checkGlobalSchemaTable");function gR(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(gR,"getClusterUser");function NR(){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(NR,"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 pR(e,t,r){return new Promise(s=>{t.once(e,n=>{let i=r;re.info(`Got cluster status event response: ${ZA(n)}`);try{i.cancel()}catch{re.error("Error trying to cancel timeout.")}s(n)})})}a(pR,"createEventPromise");async function OR(e){let t=!0,r=0;do await bc(zA*r++),(await Ic.findPs(e)).length>0&&(t=!1);while(t&&r<jA);if(t)throw new Error(`process ${e} was not started`)}a(OR,"checkProcessRunning");function IR(e,t){let r=Uc(e);if(r)return r;let s=Dc(e,t);if(s)return s}a(IR,"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 bR(){let e=Ks().utc().add(1,te.MOMENT_DAYS_TAG).startOf(te.MOMENT_DAYS_TAG).unix(),t=Ks().utc().unix();return e-t}a(bR,"getStartOfTomorrowInSeconds");function CR(){return Ks().utc().format("DD-MM-YYYY")}a(CR,"getLimitKey");function yR(e){try{let t=new XA(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(yR,"backtickASTSchemaItems");async function MR(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(MR,"stopProcess");function wR(e){return[e]}a(wR,"createForkArgs");function LR(e){return e===!0||typeof e=="string"&&e.toLowerCase()==="true"}a(LR,"autoCastBoolean");function UR(e,t){return global.hdb_schema?.[e]?.[t]?.hash_attribute}a(UR,"getTableHashAttribute");function DR(e){return global?.hdb_schema?.[e]!==void 0}a(DR,"doesSchemaExist");function PR(e,t){return global?.hdb_schema?.[e]?.[t]!==void 0}a(PR,"doesTableExist");function HR(e){try{return JSON.stringify(e)}catch{return e}}a(HR,"stringifyObj");function BR(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(BR,"ms_to_time");function vR(e,t){let r=yt.basename(e,yt.extname(e));return yt.join(yt.dirname(e),r+t)}a(vR,"changeExtension")});var Bc=T((MP,Hc)=>{"use strict";var GR={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))},qR="certificate.pem",FR="privateKey.pem",xR="ca.pem";Hc.exports={CERTIFICATE_VALUES:GR,CERTIFICATE_PEM_NAME:qR,PRIVATEKEY_PEM_NAME:FR,CA_PEM_NAME:xR}});var Pe=T((wP,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:VR,validateObjectAsync:kR,validateBySchema:YR};function VR(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(VR,"validateObject");async function kR(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(kR,"validateObjectAsync");function YR(e,t){let r=t.validate(e,{allowUnknown:!0,abortEarly:!1,errors:{wrap:{label:"'"}}});if(r.error)return new Error(r.error.message)}a(YR,"validateBySchema")});var xc=T((DP,Fc)=>{"use strict";var $R=require("fs-extra"),C=require("joi"),KR=require("os"),{boolean:k,string:et,number:He,array:ha}=C.types(),Hr=require("path"),WR=N(),Js=p(),UP=Bc(),QR=f(),JR=Pe(),Gc="log",XR="custom_functions",ZR="Invalid logging.rotation.maxSize unit. Available units are G, M or K",zR="Invalid logging.rotation.interval unit. Available units are D, H or M (minutes)",jR="Invalid logging.rotation.maxSize value. Value should be a number followed by unit e.g. '10M'",eg="Invalid logging.rotation.interval value. Value should be a number followed by unit e.g. '10D'",tg="rootPath config parameter is undefined",rg="clustering.enabled config parameter is undefined",Mt=He.min(0).required(),Xs=ha.items({host:et.required(),port:Mt}).empty(null),lt;Fc.exports={configValidator:sg,routesValidator:cg,route_constraints:Xs};function sg(e){if(lt=e.rootPath,Js.isEmpty(lt))throw tg;let t=k.required(),r=C.valid("production","development").required(),s=He.min(1).max(1e3).empty(null).default(_g),n=et.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path").empty(null).default(Qs),i=C.custom(ng).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(ig).empty(null).default(Qs),u=e.clustering?.enabled;if(Js.isEmpty(u))throw rg;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,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(og).optional().empty(null),maxSize:et.custom(ag).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(sg,"configValidator");function qc(e){return $R.existsSync(e)?null:`Specified path ${e} does not exist.`}a(qc,"doesPathExist");function ng(e,t){if(e===null)return;let r=qc(e);return r?t.message(r):e}a(ng,"validatePemFile");function ig(e,t){C.assert(e,et.pattern(/^[\\\/]$|([\\\/][a-zA-Z_0-9\:-]+)+$/,"directory path"));let r=qc(e);if(r)return t.message(r)}a(ig,"validatePath");function ag(e,t){let r=e.slice(-1);if(r!=="G"&&r!=="M"&&r!=="K")return t.message(ZR);let s=e.slice(0,-1);return isNaN(parseInt(s))?t.message(jR):e}a(ag,"validateRotationMaxSize");function og(e,t){let r=e.slice(-1);if(r!=="D"&&r!=="H"&&r!=="M")return t.message(zR);let s=e.slice(0,-1);return isNaN(parseInt(s))?t.message(eg):e}a(og,"validateRotationInterval");function _g(e,t){let r=t.state.path.join("."),s=KR.cpus().length,n=s-1;return n<=2&&(n=2),WR.info(`Detected ${s} cores on this machine, defaulting ${r} to ${n}`),n}a(_g,"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,XR);case"logging.root":return Hr.join(lt,Gc);case"clustering.leafServer.streams.path":return Hr.join(lt,"clustering","leaf");case"storage.path":return Hr.join(lt,QR.SCHEMA_DIR_NAME);case"logging.rotation.path":return Hr.join(lt,Gc);default:throw new Error(`Error setting default root for config parameter: ${r}. Unrecognized config parameter`)}}a(Qs,"setDefaultRoot");function cg(e){let t=C.object({routes:Xs});return JR.validateBySchema({routes:e},t)}a(cg,"routesValidator")});var js=T((HP,Zc)=>{"use strict";var ye=f(),Ae=p(),Q=N(),{configValidator:ug,routesValidator:Vc}=xc(),Ce=require("fs-extra"),lg=require("yaml"),ke=require("path"),Eg=require("is-number"),Yc=require("properties-reader"),dg=require("lodash"),{handleHDBError:hg}=V(),{HTTP_STATUS_CODES:Tg,HDB_ERROR_MSGS:Zs}=be(),Sg=require("minimist"),{SCHEMAS_PARAM_CONFIG:Br,CONFIG_PARAMS:Et,CONFIG_PARAM_MAP:tt}=ye,fg="Unable to get config value because config is uninitialized",mg="Config successfully initialized",Ag="Error backing up config file",Rg="Empty parameter sent to getConfigValue",$c=ke.join(ye.PACKAGE_ROOT,"config","yaml",ye.HDB_DEFAULT_CONFIG_FILE),gg="Configuration successfully set. You must restart HarperDB for new config settings to take effect.",kc={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,X;Zc.exports={createConfigFile:Ng,getDefaultConfig:pg,getConfigValue:Wc,initConfig:Qc,flattenConfig:wt,updateConfigValue:Jc,updateConfigObject:Ig,getConfiguration:yg,setConfiguration:Mg,readConfigFile:ma,getClusteringRoutes:wg,initOldConfig:Xc,getConfigFromFile:Lg};function Ng(e){let t=tr($c);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&&Kc(t,r),fa(t);let s=t.toJSON();X=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(Ng,"createConfigFile");function Kc(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(Kc,"setSchemasConfig");function pg(e){if(zs===void 0){let r=tr($c);zs=wt(r.toJSON())}let t=tt[e.toLowerCase()];if(t!==void 0)return zs[t.toLowerCase()]}a(pg,"getDefaultConfig");function Wc(e){if(Ae.isEmpty(e)){Q.error(Rg);return}if(X===void 0){Q.trace(fg);return}let t=tt[e.toLowerCase()];if(t!==void 0)return X[t.toLowerCase()]}a(Wc,"getConfigValue");function Sa(e){let t=Sg(process.argv);return t.ROOTPATH?ke.join(t.ROOTPATH,ye.HDB_CONFIG_FILE):Yc(e).get(ye.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY)}a(Sa,"getConfigFilePath");function Qc(e=!1){if(X===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{Xc(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}`)}Og(s,r),fa(s);let n=s.toJSON();if(X=wt(n),X.logging_rotation_rotate)for(let i in kc)X[i]&&Q.error(`Config ${kc[i]} has been deprecated. Please check https://docs.harperdb.io/docs/ for further details.`);Q.trace(mg)}}a(Qc,"initConfig");function Og(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(Og,"checkForUpdatedConfig");function fa(e){let t=e.toJSON(),r=ug(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 Ig(e,t){X===void 0&&(X={});let r=tt[e.toLowerCase()];if(r===void 0){Q.trace(`Unable to update config object because config param '${e}' does not exist`);return}X[r.toLowerCase()]=t}a(Ig,"updateConfigObject");function Jc(e,t,r=void 0,s=!1,n=!1){X===void 0&&Qc();let i=Wc(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&&Kc(_,c),fa(_);let u=_.getIn(["rootPath"]),l=ke.join(u,ye.HDB_CONFIG_FILE);s===!0&&bg(o,u),Ce.writeFileSync(l,String(_)),n&&(X=wt(_.toJSON())),Q.trace(`Config parameter: ${e} updated with value: ${t}`)}a(Jc,"updateConfigValue");function bg(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(Ag),Q.error(r)}}a(bg,"backupConfigFile");var Cg=["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])&&!Cg.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(Eg(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 yg(){let e=Ae.getPropsFilePath(),t=Sa(e);return tr(t).toJSON()}a(yg,"getConfiguration");async function Mg(e){let{operation:t,hdb_user:r,hdb_auth_header:s,...n}=e;try{return Jc(void 0,void 0,n,!0),gg}catch(i){throw typeof i=="string"||i instanceof String?hg(i,i,Tg.BAD_REQUEST,void 0,void 0,!0):i}}a(Mg,"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 lg.parseDocument(Ce.readFileSync(e,"utf8"),{simpleKeys:!0})}a(tr,"parseYamlDoc");function wg(){let e=ma(),t=e?.clustering?.hubServer?.cluster?.network?.routes;t=Ae.isEmptyOrZeroLength(t)?[]:t;let r=Vc(t);if(r)throw Zs.CONFIG_VALIDATION(r.message);let s=e?.clustering?.leafServer?.network?.routes;s=Ae.isEmptyOrZeroLength(s)?[]:s;let n=Vc(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(wg,"getClusteringRoutes");function Xc(e){let t=Yc(e);X={};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?X[n]=ke.dirname(s):X[n]=s}return X}a(Xc,"initOldConfig");function Lg(e){let t=ma();return dg.get(t,e.replaceAll("_","."))}a(Lg,"getConfigFromFile")});var $=T((vP,jc)=>{"use strict";var Aa=require("fs-extra"),Ye=require("path"),Ug=require("os"),Dg=require("properties-reader"),vr=N(),rr=p(),O=f(),en=js(),Pg="Error initializing environment manager",tn="BOOT_PROPS_FILE_PATH",zc=!1,Hg={[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={};jc.exports={BOOT_PROPS_FILE_PATH:tn,getHdbBasePath:Bg,setHdbBasePath:vg,get:Gg,initSync:Fg,setProperty:L,initTestEnvironment:xg};function Bg(){return rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]}a(Bg,"getHdbBasePath");function vg(e){rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=e}a(vg,"setHdbBasePath");function Gg(e){let t=en.getConfigValue(e);return t===void 0?rt[e]:t}a(Gg,"get");function L(e,t){Hg[e]&&(rt[e]=t),en.updateConfigObject(e,t)}a(L,"setProperty");function qg(){let e;try{e=rr.getPropsFilePath(),Aa.accessSync(e,Aa.constants.F_OK|Aa.constants.R_OK),zc=!0;let t=Dg(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(qg,"doesPropFileExist");function Fg(e=!1){try{(zc||qg())&&(en.initConfig(e),rt[O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY]=en.getConfigValue(O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY))}catch(t){vr.error(Pg),vr.error(t),console.error(t),process.exit(1)}}a(Fg,"initSync");function xg(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"),L(O.HDB_SETTINGS_NAMES.SETTINGS_PATH_KEY,Ye.join(c,"settings.test")),L(O.HDB_SETTINGS_NAMES.INSTALL_USER,Ug.userInfo().username),L(O.HDB_SETTINGS_NAMES.PRIVATE_KEY_KEY,Ye.join(c,"envDir","utility","keys","privateKey.pem")),L(O.HDB_SETTINGS_NAMES.CERT_KEY,Ye.join(c,"envDir","utility","keys","certificate.pem")),L(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_PRIVATEKEY,Ye.join(c,"envDir","utility","keys","privateKey.pem")),L(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_TLS_CERTIFICATE,Ye.join(c,"envDir","utility","keys","certificate.pem")),L(O.HDB_SETTINGS_NAMES.LOG_LEVEL_KEY,"debug"),L(O.HDB_SETTINGS_NAMES.LOG_PATH_KEY,Ye.join(c,"envDir","log")),L(O.HDB_SETTINGS_NAMES.LOG_DAILY_ROTATE_KEY,!1),L(O.HDB_SETTINGS_NAMES.CLUSTERING_ENABLED_KEY,!0),L(O.HDB_SETTINGS_NAMES.CLUSTERING_NODE_NAME_KEY,"1231412de213"),L(O.HDB_SETTINGS_NAMES.HDB_ROOT_KEY,Ye.join(c,"envDir")),L(O.HDB_SETTINGS_NAMES.HTTP_SECURE_ENABLED_KEY,rr.isEmpty(n)?!0:n),L(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_HTTPS,rr.isEmpty(n)?!0:n),L(O.HDB_SETTINGS_NAMES.SERVER_PORT_KEY,9925),L(O.HDB_SETTINGS_NAMES.CORS_ENABLED_KEY,rr.isEmpty(i)?!1:i),L(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORS,rr.isEmpty(i)?!1:i),L(O.HDB_SETTINGS_NAMES.MAX_CUSTOM_FUNCTION_PROCESSES,2),L(O.HDB_SETTINGS_NAMES.MAX_HDB_PROCESSES,4),L(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_PORT_KEY,9926),L(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_ENABLED_KEY,!0),L(O.HDB_SETTINGS_NAMES.CUSTOM_FUNCTIONS_DIRECTORY_KEY,Ye.resolve(__dirname,"../../unitTests/server/customFunctions/custom_functions")),L(O.HDB_SETTINGS_NAMES.LOCAL_STUDIO_ON,rr.isEmpty(_)?!1:_),o&&(L("CORS_ACCESSLIST",o),L(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_CORSACCESSLIST,o)),s&&(L(O.HDB_SETTINGS_NAMES.SERVER_TIMEOUT_KEY,s),L(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_TIMEOUT,s)),t&&(L(O.HDB_SETTINGS_NAMES.SERVER_KEEP_ALIVE_TIMEOUT_KEY,t),L(O.CONFIG_PARAMS.CUSTOMFUNCTIONS_NETWORK_KEEPALIVETIMEOUT,t)),r&&(L(O.HDB_SETTINGS_NAMES.SERVER_HEADERS_TIMEOUT_KEY,r),L(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(xg,"initTestEnvironment")});var Lt=T((FP,tu)=>{"use strict";var{platform:qP}=require("os"),Vg="nats-server.zip",Ra="nats-server",kg=process.platform==="win32"?`${Ra}.exe`:Ra,ga="HDB",Yg=/^[^\s.,*>]+$/,eu="__request__",$g=a(e=>`${e}.${eu}`,"REQUEST_SUBJECT"),Kg={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin"},Wg={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Qg={HUB:"hub.pid",LEAF:"leaf.pid"},Jg={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},Xg={stream_name:"__HARPERDB_WORK_QUEUE__",durable_name:"HDB_WORK_QUEUE",deliver_group:ga,deliver_subject:"__HDB__.WORKQUEUE"},Zg={stream_name:"__HARPERDB_SCHEMA_QUEUE__",durable_name:"HDB_SCHEMA_QUEUE",deliver_group:ga,deliver_subject:"HDB.SCHEMAQUEUE"},zg={stream_name:"__HARPERDB_USER_QUEUE__",durable_name:"HDB_USER_QUEUE",deliver_group:ga,deliver_subject:"HDB.USERQUEUE"},jg={SUCCESS:"success",ERROR:"error"},eN={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},tN={TXN:"txn",MSGID:"msgid"},sr={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},rN={[sr.ERR]:1,[sr.WRN]:2,[sr.INF]:3,[sr.DBG]:4,[sr.TRC]:5},sN={debug:"-D",trace:"-DVV"};tu.exports={NATS_SERVER_ZIP:Vg,NATS_SERVER_NAME:Ra,NATS_BINARY_NAME:kg,PID_FILES:Qg,NATS_CONFIG_FILES:Wg,SERVER_SUFFIX:Jg,WORK_QUEUE_CONSUMER_NAMES:Xg,SCHEMA_QUEUE_CONSUMER_NAMES:Zg,USER_QUEUE_CONSUMER_NAMES:zg,NATS_TERM_CONSTRAINTS_RX:Yg,REQUEST_SUFFIX:eu,UPDATE_REMOTE_RESPONSE_STATUSES:jg,CLUSTER_STATUS_STATUSES:eN,REQUEST_SUBJECT:$g,SUBJECT_PREFIXES:tN,MSG_HEADERS:Kg,LOG_LEVELS:sr,LOG_LEVEL_FLAGS:sN,LOG_LEVEL_HIERARCHY:rN}});var rn=T((VP,iu)=>{"use strict";var Gr=require("crypto"),su="aes-256-cbc",nN=32,iN=16,Na=64,nu=32,aN=Na+nu,ru=new Map;iu.exports={encrypt:oN,decrypt:_N,createNatsTableStreamName:cN};function oN(e){let t=Gr.randomBytes(nN),r=Gr.randomBytes(iN),s=Gr.createCipheriv(su,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(oN,"encrypt");function _N(e){let t=e.substr(0,Na),r=e.substr(Na,nu),s=e.substr(aN,e.length),n=Buffer.from(r,"hex"),i=Buffer.from(s,"hex"),o=Gr.createDecipheriv(su,Buffer.from(t,"hex"),n),_=o.update(i);return _=Buffer.concat([_,o.final()]),_.toString()}a(_N,"decrypt");function cN(e,t){let r=`${e}.${t}`,s=ru.get(r);return s||(s=Gr.createHash("md5").update(`${e}.${t}`).digest("hex"),ru.set(r,s)),s}a(cN,"createNatsTableStreamName")});var pa=T((YP,au)=>{"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");au.exports=sn});var Ut=T((QP,Eu)=>{"use strict";var ou=be().LMDB_ERRORS_ENUM,KP=require("lmdb"),uN=ee(),WP=require("buffer").Buffer,{OVERFLOW_MARKER:_u,MAX_SEARCH_KEY_LENGTH:nn}=uN,cu=["number","string","symbol","boolean","bigint"];function lN(e){if(e=e?.database||e,!e)throw new Error(ou.ENV_REQUIRED);if(e.constructor.name!=="LMDBStore")throw new Error(ou.INVALID_ENVIRONMENT)}a(lN,"validateEnv");function EN(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(EN,"stringifyData");function dN(e){return e instanceof Date?e.valueOf():e}a(dN,"convertKeyValueToWrite");function hN(e){if(e==null)return;if(cu.includes(typeof e))return e.length>nn?[e.slice(0,nn)+_u]:[e];let t;if(Array.isArray(e)){t=[];for(let r=0,s=e.length;r<s;r++){let n=e[r];cu.includes(typeof n)&&(n.length>nn?t.push(n.slice(0,nn)+_u):t.push(n))}}return t}a(hN,"getIndexedValues");var an=0,uu=0;function lu(){uu=Date.now()-performance.now()}a(lu,"adjustStartTime");lu();var TN=6e4;setInterval(lu,TN).unref();function SN(){let e=performance.now()+uu;return e>an?(an=e,e):(an+=488e-6,an)}a(SN,"getNextMonotonicTime");Eu.exports={validateEnv:lN,stringifyData:EN,convertKeyValueToWrite:dN,getNextMonotonicTime:SN,getIndexedValues:hN}});var hu=T((XP,du)=>{"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");du.exports=on});var fu=T((zP,Su)=>{"use strict";var Oa=$(),Tu=f();Oa.initSync();var fN=Oa.get(Tu.CONFIG_PARAMS.STORAGE_COMPRESSION),mN=Oa.get(Tu.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=fN&&r,this.sharedStructuresKey=Symbol.for("structures"),r&&(this.cache=mN&&{validated:!0},this.randomAccessStructure=!0,this.freezeData=!0)}};a(_n,"OpenDBIObject");Su.exports=_n});var Ru=T((eH,Au)=>{"use strict";var nr=$(),qr=f();nr.initSync();var AN=nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)===!0||nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="true"||nr.get(qr.CONFIG_PARAMS.STORAGE_WRITEASYNC)==="TRUE",mu=nr.get(qr.CONFIG_PARAMS.STORAGE_OVERLAPPINGSYNC),RN=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=AN,mu!==void 0&&(this.overlappingSync=mu),this.noReadAhead=RN}};a(cn,"OpenEnvironmentObject");Au.exports=cn});var B=T((rH,Cu)=>{"use strict";var Ia=require("lmdb"),Me=require("fs-extra"),Be=require("path"),ln=Ut(),gu=N(),Z=be().LMDB_ERRORS_ENUM,En=hu(),ba=fu(),Nu=Ru(),dt=ee(),ve=dt.INTERNAL_DBIS_NAME,pu=dt.DBI_DEFINITION_NAME,gN="data.mdb",NN="lock.mdb",Fr=".mdb",pN="-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,gN),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 ON(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 Nu(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(ON,"createEnvironment");async function IN(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(IN,"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 Nu(n,o),c=Ia.open(_);c.dbis=Object.create(null);let u=Iu(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 bN(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 Ou(o),delete global.lmdb_map[i]}}await Me.remove(n),await Me.remove(n===s?n+pN:Be.join(Be.dirname(n),NN))}a(bN,"deleteEnvironment");async function Ou(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(Ou,"closeEnvironment");function wa(e,t,r=!1){let n=`${Be.basename(e)}.${t}`;return r===!0&&(n=`txn.${n}`),n}a(wa,"getCachedEnvironmentName");function CN(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{gu.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return t}a(CN,"listDBIDefinitions");function Iu(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(Iu,"listDBIs");function yN(e,t){let s=we(e,ve).getEntry(t),n=new En;if(s!==void 0){try{n=Object.assign(n,s.value)}catch{gu.warn(`an internal error occurred: unable to parse DBI Definition for ${s}`)}return n}}a(yN,"getDBIDefinition");function bu(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[pu]=_,we(e,ve).putSync(t,_),e.dbis[t]=o,o}throw n}}a(bu,"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=yN(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[pu]=r,e.dbis[t]=s,s}a(we,"openDBI");function MN(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(MN,"statDBI");async function wN(e,t){try{let r=Be.join(e,t+Fr);return(await Me.stat(r)).size}catch{throw new Error(Z.INVALID_ENVIRONMENT)}}a(wN,"environmentDataSize");function LN(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(LN,"dropDBI");function UN(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)bu(e,n,n!==t,n===t);else throw i}}}a(UN,"initializeDBIs");Cu.exports={openDBI:we,openEnvironment:Ma,createEnvironment:ON,listDBIs:Iu,listDBIDefinitions:CN,createDBI:bu,dropDBI:LN,statDBI:MN,deleteEnvironment:bN,initializeDBIs:UN,TransactionCursor:un,environmentDataSize:wN,copyEnvironment:IN,closeEnvironment:Ou}});var Mu=T((nH,yu)=>{"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");yu.exports=hn});var Lu=T((aH,wu)=>{"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");wu.exports=Tn});var Du=T((_H,Uu)=>{"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");Uu.exports=Sn});var ir=T((dH,Bu)=>{"use strict";var DN=B(),PN=Mu(),HN=Lu(),BN=Du(),$e=Ut(),xr=be().LMDB_ERRORS_ENUM,vN=ee(),st=f(),GN=p(),qN=require("uuid"),uH=require("lmdb"),{handleHDBError:FN,hdb_errors:xN}=V(),{OVERFLOW_MARKER:lH,MAX_SEARCH_KEY_LENGTH:EH}=vN,Pu=$();Pu.initSync();var fn=Pu.get(st.CONFIG_PARAMS.STORAGE_PREFETCHWRITES),La=st.TIME_STAMP_NAMES_ENUM.CREATED_TIME,Dt=st.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function VN(e,t,r,s,n=$e.getNextMonotonicTime()){Ha(e,t,r,s),Ua(e,t,r);let i=new PN,o=[],_=[];for(let c=0;c<s.length;c++){let u=s[c];Hu(u,!0,n);let l=kN(e,t,r,u),E=u[t];o.push(l),_.push(E)}return Da(o,_,s,i,n)}a(VN,"insertRecords");function kN(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(kN,"insertRecord");function YN(e,t=[]){let r=0;for(let s=0;s<t.length;s++){let n=t[s];e.splice(n-r,1),r++}}a(YN,"removeSkippedRecords");function Hu(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(Hu,"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),DN.initializeDBIs(e,t,r)}a(Ua,"initializeTransaction");async function $N(e,t,r,s,n=$e.getNextMonotonicTime()){Ha(e,t,r,s),Ua(e,t,r);let i=new HN,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($N,"updateRecords");async function KN(e,t,r,s,n=$e.getNextMonotonicTime()){try{Ha(e,t,r,s)}catch(c){throw FN(c,c.message,xN.HTTP_STATUS_CODES.BAD_REQUEST)}Ua(e,t,r);let i=new BN,o=[],_=[];for(let c=0;c<s.length;c++){let u=s[c],l;GN.isEmpty(u[t])?(l=qN.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(KN,"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(),YN(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(Hu(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 WN(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(WN,"validateBasic");function Ha(e,t,r,s){if(WN(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");Bu.exports={insertRecords:VN,updateRecords:$N,upsertRecords:KN}});var q=T((TH,Vu)=>{"use strict";var Kr=f(),QN=p(),ue=$(),Wr=require("path"),JN=require("minimist"),vu=require("fs-extra"),Gu=require("lodash");ue.initSync();var{CONFIG_PARAMS:ht,SCHEMAS_PARAM_CONFIG:Vr,SYSTEM_SCHEMA_NAME:An}=Kr,kr,Yr,$r;function qu(){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(qu,"getBaseSchemaPath");function Fu(){if(Yr!==void 0)return Yr;if(ue.getHdbBasePath()!==void 0)return Yr=xu(An),Yr}a(Fu,"getSystemSchemaPath");function XN(){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(XN,"getTransactionAuditStoreBasePath");function ZN(e,t){let r=ue.get(ht.SCHEMAS)?.[e];return t&&r?.tables?.[t]?.auditPath||r?.auditPath||Wr.join(XN(),e.toString())}a(ZN,"getTransactionAuditStorePath");function xu(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(qu(),e)}a(xu,"getSchemaPath");function zN(e,t){e=e.toString(),t=t.toString();let r=process.env;Object.assign(r,JN(process.argv));let s=r[ht.SCHEMAS.toUpperCase()];if(s){let i;try{i=JSON.parse(s)}catch(o){if(!QN.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 Gu.set(c,[An,Vr.TABLES,t,Vr.PATH],u),ue.setProperty(ht.SCHEMAS,c),u;let l=_?.[Vr.PATH];if(l)return Gu.set(c,[An,Vr.PATH],l),ue.setProperty(ht.SCHEMAS,c),l}}let n=r[ht.STORAGE_PATH.toUpperCase()];if(n){if(!vu.pathExistsSync(n))throw new Error(n+" does not exist");let i=Wr.join(n,e);return vu.mkdirsSync(i),ue.setProperty(ht.STORAGE_PATH,n),i}return Fu()}a(zN,"initSystemSchemaPaths");function jN(){kr=void 0,Yr=void 0,$r=void 0}a(jN,"resetPaths");Vu.exports={getBaseSchemaPath:qu,getSystemSchemaPath:Fu,getTransactionAuditStorePath:ZN,getSchemaPath:xu,initSystemSchemaPaths:zN,resetPaths:jN}});var Pt=T((fH,ep)=>{ep.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((mH,$u)=>{"use strict";var Yu=p(),ku=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"}},tp=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 rp(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(rp,"checkValidTable");function sp(e,t){return Yu.doesSchemaExist(e)?e:t.message(`Schema '${e}' does not exist`)}a(sp,"validateSchemaExists");function np(e,t){let r=t.state.ancestors[0].schema;return Yu.doesTableExist(r,e)?e:t.message(`Table '${e}' does not exist`)}a(np,"validateTableExists");function ip(e,t){return e.toLowerCase()===ku.SYSTEM_SCHEMA_NAME?t.message(`'subscriptions[${t.state.path[1]}]' invalid schema name, '${ku.SYSTEM_SCHEMA_NAME}' name is reserved`):e}a(ip,"validateSchemaName");$u.exports={common_validators:Rn,schema_regex:gn,hdb_schema_table:tp,validateSchemaExists:sp,validateTableExists:np,validateSchemaName:ip,checkValidTable:rp}});var Nn=T((RH,Ku)=>{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 ap(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(ap,"schema_object");function op(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(op,"table_object");function _p(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(_p,"create_table_object");function cp(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(cp,"attribute_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=!1,Qr.validateObject(e,v)}a(up,"describe_table");function lp(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(lp,"validateTableResidence");Ku.exports={schema_object:ap,create_table_object:_p,table_object:op,attribute_object:cp,describe_table:up,validateTableResidence:lp}});var Qu=T((NH,Wu)=>{"use strict";var Ep=require("uuid"),pn=class{constructor(t,r,s,n){this.schema=t,this.table=r,this.attribute=s,this.id=n||Ep.v4(),this.schema_table=`${this.schema}.${this.table}`}};a(pn,"CreateAttributeObject");Wu.exports=pn});var In=T((OH,Ju)=>{"use strict";var dp=Qu(),On=class extends dp{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");Ju.exports=On});var Zu=T((bH,Xu)=>{"use strict";Xu.exports=Tp;var hp="inserted";function Tp(e,t,r,s){let n={message:`${e} ${t.length} of ${r.records.length} records`,skipped_hashes:s};return e===hp?(n.inserted_hashes=t,n):(n.update_hashes=t,n)}a(Tp,"returnObject")});var bn=T((yH,rl)=>{"use strict";var Sp=f(),va=B(),fp=ir(),{getSystemSchemaPath:mp,getSchemaPath:Ap}=q(),Rp=Pt(),gp=Nn(),Np=In(),pp=Zu(),{handleHDBError:zu,hdb_errors:el}=V(),ju=p(),{HTTP_STATUS_CODES:Op}=el,Ga=Rp.hdb_attribute,tl=[];for(let e=0;e<Ga.attributes.length;e++)tl.push(Ga.attributes[e].attribute);var Ip="inserted";rl.exports=bp;async function bp(e){let t=gp.attribute_object(e);if(t)throw zu(new Error,t.message,el.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0);let r=!e.skip_table_check&&ju.checkGlobalSchemaTable(e.schema,e.table);if(r)throw zu(new Error,r,Op.NOT_FOUND);e.is_hash_attribute=e.is_hash_attribute=="true",e.dup_sort=ju.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 Np(e.schema,e.table,e.attribute,e.id);try{let i=await va.openEnvironment(Ap(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(mp(),Sp.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME),{written_hashes:_,skipped_hashes:c}=await fp.insertRecords(o,Ga.hash_attribute,tl,[n]);return pp(Ip,_,{records:[n]},c)}catch(i){throw i}}a(bp,"lmdbCreateAttribute")});var Fa=T((wH,nl)=>{var{hdb_schema_table:sl}=ar(),Cp=Pe(),qa=require("joi"),yp={undefined:"undefined",null:"null"},Mp=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||yp[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"),wp=qa.object({schema:sl,table:sl,records:qa.array().items(qa.object().custom(Mp)).required()});nl.exports=function(e){return Cp.validateBySchema(e,wp)}});var Cn=T((DH,al)=>{"use strict";var nt=p(),il=N(),UH=Fa();al.exports=Lp;function Lp(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 il.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 il.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(Lp,"insertUpdateValidate")});var Mn=T((HH,ol)=>{"use strict";var Up=f().OPERATIONS_ENUM,yn=class{constructor(t,r,s,n,i=void 0){this.operation=Up.INSERT,this.schema=t,this.table=r,this.hash_attribute=s,this.records=n,this.__origin=i}};a(yn,"InsertObject");ol.exports=yn});var Ln=T((GH,_l)=>{"use strict";var vH=Mn(),wn=f(),Va=p(),xa=N(),Dp=require("uuid"),{handleHDBError:Xr,hdb_errors:Pp}=V(),{HDB_ERROR_MSGS:Zr,HTTP_STATUS_CODES:zr}=Pp;_l.exports=Hp;function Hp(e,t,r){for(let n=0;n<t.length;n++)Bp(t[n]);let{records:s}=e;for(let n=0;n<s.length;n++){let i=s[n];vp(i,r,e.operation)}}a(Hp,"processRows");function Bp(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(Bp,"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]=Dp.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 ul=T((FH,cl)=>{"use strict";var Un=class{constructor(t,r){this.type=t,this.message=r}};a(Un,"ITCEventObject");cl.exports=Un});var Dn=T((VH,dl)=>{var Gp=require("crypto"),ll=9;function qp(e){let t=xp(ll),r=El(e+t);return t+r}a(qp,"createHash");function Fp(e,t){let r=e.substr(0,ll),s=r+El(t+r);return e===s}a(Fp,"validateHash");function xp(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(xp,"generateSalt");function El(e){return Gp.createHash("md5").update(e).digest("hex")}a(El,"md5");dl.exports={hash:qp,validate:Fp}});var Tl=T((YH,hl)=>{"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");hl.exports={BaseLicense:jr,ExtendedLicense:Pn}});var Wa=T((KH,gl)=>{"use strict";var _r=require("fs-extra"),Sl=Dn(),fl=require("crypto"),Vp=require("moment"),kp=require("uuid").v4,se=N(),Ya=require("path"),Yp=p(),Re=f(),$p=Tl().ExtendedLicense,or="invalid license key format",Kp="061183",Wp="mofi25",Qp="aes-256-cbc",Jp=16,Xp=32,ml=$();ml.initSync();var ka;gl.exports={validateLicense:Al,generateFingerPrint:zp,licenseSearch:Rl,getLicense:tO};function $a(){return Ya.join(ml.getHdbBasePath(),Re.LICENSE_KEY_DIR_NAME,Re.LICENSE_FILE_NAME)}a($a,"getLicenseDirPath");function Zp(){let e=$a();return Ya.join(e,Re.LICENSE_FILE_NAME)}a(Zp,"getLicenseFilePath");function Ka(){let e=$a();return Ya.join(e,Re.REG_KEY_FILE_NAME)}a(Ka,"getFingerPrintFilePath");async function zp(){let e=Ka();try{return await _r.readFile(e,"utf8")}catch(t){if(t.code==="ENOENT")return await jp();throw se.error(`Error writing fingerprint file to ${e}`),se.error(t),new Error("There was an error generating the fingerprint")}}a(zp,"generateFingerPrint");async function jp(){let e=kp(),t=Sl.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(jp,"writeFingerprint");function Al(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(Wp),_=o[1];_=Buffer.concat([Buffer.from(_)],Jp);let c=Buffer.concat([Buffer.from(i)],Xp),u=fl.createDecipheriv(Qp,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=eO(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<Vp().valueOf()&&(r.valid_date=!1),Sl.validate(o[1],`${Kp}${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(Al,"validateLicense");function eO(e,t){try{let r=fl.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(eO,"checkOldLicense");function Rl(){let e=new $p;e.api_call=0;let t=[];try{t=_r.readFileSync(Zp(),"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(Yp.isEmptyOrZeroLength(s))continue;let n=JSON.parse(s),i=Al(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(Rl,"licenseSearch");async function tO(){return ka||await Rl(),ka}a(tO,"getLicense")});var vn=T((QH,ja)=>{"use strict";var{Worker:rO,MessageChannel:sO,parentPort:it,isMainThread:pl,threadId:nO,workerData:iO}=require("worker_threads"),{PACKAGE_ROOT:aO}=f(),{join:oO,isAbsolute:_O,extname:cO}=require("path"),{totalmem:uO}=require("os"),Za=f(),Ol=$(),lO=Wa(),Hn=N(),EO=f();Ol.initSync();var dO=Ol.get(Za.CONFIG_PARAMS.HTTP_THREADS)||1,hO=1024*1024,ft=[],Ht=[],TO=50,Il=1e4,bl="restart",Cl="request_thread_info",yl="resource_report",Ml="thread_info",wl="added-port",Qa;ja.exports={startWorker:Ja,restartWorkers:za,shutdownWorkers:fO,workers:ft,setMonitorListener:NO,onMessageFromWorkers:mO,broadcast:AO};function Ja(e,t={}){let s=lO.licenseSearch().ram_allocation,n=Math.min(Math.max(Math.floor(uO()/hO/(1+dO/4)),512),s||1/0),i=Math.min(Math.max(n>>7,16),64),o=[];for(let c of Ht){let{port1:u,port2:l}=new sO;c.postMessage({type:wl,port:u},[u]),o.push(l)}cO(e)||(e+=".js");let _=new rO(_O(e)?e:oO(aO,e),Object.assign({resourceLimits:{maxOldGenerationSizeMb:n,maxYoungGenerationSizeMb:i},argv:process.argv.slice(2),workerData:{addPorts:o,name:t.name},transferList:o},t));return Bn(_,!0),_.unexpectedRestarts=t.unexpectedRestarts||0,_.startCopy=()=>{Ja(e,t)},_.on("error",c=>{console.error("Worker error:",c),Hn.error("Worker error:",c)}),_.on("exit",c=>{ft.splice(ft.indexOf(_),1),!_.wasShutdown&&t.autoRestart!==!1&&(_.unexpectedRestarts<TO?(t.unexpectedRestarts=_.unexpectedRestarts+1,Ja(e,t)):Hn.error(`Thread has been restarted ${_.restarts} times and will not be restarted`))}),_.on("message",c=>{c.type===bl&&za(c.workerType),c.type===Cl&&RO(_),c.type===yl&&gO(_,c)}),ft.push(_),OO(),t.onStarted&&t.onStarted(_),_.name=t.name,_}a(Ja,"startWorker");var SO=[Za.THREAD_TYPES.HTTP];async function za(e=null,t=2,r=!0){if(pl){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=SO.indexOf(n.name)>-1,o=new Promise(_=>{let c=setTimeout(()=>n.terminate(),Il*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:bl,workerType:e})}a(za,"restartWorkers");function fO(e){return za(e,1/0,!1)}a(fO,"shutdownWorkers");var Ll=[];function mO(e){Ll.push(e)}a(mO,"onMessageFromWorkers");function AO(e){for(let t of Ht)try{t.postMessage(e)}catch(r){Hn.error("Unable to send message to worker",r)}}a(AO,"broadcast");function RO(e){e.postMessage({type:Ml,workers:Ul()})}a(RO,"sendThreadInfo");function Ul(){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(Ul,"getChildWorkerInfo");function gO(e,t){e.resources=t,e.resources.updated=Date.now()}a(gO,"recordResourceReport");var Xa;function NO(e){Xa=e}a(NO,"setMonitorListener");var pO=1e3,Nl=!1;function OO(){Nl||(Nl=!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()},pO).unref())}a(OO,"startMonitoring");var IO=1e3;if(it){Bn(it);for(let e of iO.addPorts)Bn(e);setInterval(()=>{let e=process.memoryUsage();it.postMessage({type:yl,heapTotal:e.heapTotal,heapUsed:e.heapUsed,external:e.external,arrayBuffers:e.arrayBuffers})},IO).unref(),Qa=a(()=>new Promise((e,t)=>{it.on("message",r),it.postMessage({type:Cl});function r(s){s.type===Ml&&(it.off("message",r),e(s.workers))}a(r,"receiveThreadInfo")}),"getThreadInfo")}else Qa=Ul;ja.exports.getThreadInfo=Qa;function Bn(e,t){Ht.push(e),e.on("message",r=>{if(r.type===wl)Bn(r.port);else for(let s of Ll)s(r)}).on("close",()=>{Ht.splice(Ht.indexOf(e),1)}).on("exit",()=>{Ht.splice(Ht.indexOf(e),1)}),t||e.unref()}a(Bn,"addPort");pl||it.on("message",async e=>{let{type:t}=e;t===EO.ITC_EVENT_TYPES.SHUTDOWN&&(it.unref(),setTimeout(()=>{Hn.warn("Thread did not voluntarily terminate",nO),process.exit(0)},Il).unref())})});var Hl=T((XH,Pl)=>{"use strict";var eo=B(),bO=N(),Dl=be().LMDB_ERRORS_ENUM;Pl.exports=CO;async function CO(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!==Dl.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!==Dl.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){bO.error(t)}}a(CO,"cleanLMDBMap")});var Ql=T((jH,Wl)=>{"use strict";var to=require("recursive-iterator"),yO=require("alasql"),ro=require("clone"),Bl=p(),{handleHDBError:vl,hdb_errors:MO}=V(),{HDB_ERROR_MSGS:Gl,HTTP_STATUS_CODES:ql}=MO,wO=["DISTINCT_ARRAY"],Fl=Symbol("validateTables"),so=Symbol("validateTable"),zH=Symbol("getAllColumns"),xl=Symbol("validateAllColumns"),Gn=Symbol("findColumn"),Vl=Symbol("validateOrderBy"),es=Symbol("validateSegment"),no=Symbol("validateColumn"),kl=Symbol("setColumnsForTable"),Yl=Symbol("checkColumnsForAsterisk"),$l=Symbol("validateGroupBy"),Kl=Symbol("hasColumns"),qn=class{constructor(t){this.statement=t,this.attributes=[]}validate(){if(!this.statement)throw new Error("invalid sql statement");this[Fl](),this[Yl](),this[xl]()}[Fl](){if(this[Kl]()){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)})}}[Kl](){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 vl(new Error,Gl.SCHEMA_NOT_FOUND(t.databaseid),ql.NOT_FOUND);if(!global.hdb_schema[t.databaseid][t.tableid])throw vl(new Error,Gl.TABLE_NOT_FOUND(t.databaseid,t.tableid),ql.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)}[Yl](){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 yO.yy.Column({columnid:r.attribute,tableid:r.table.as?r.table.as:r.table.tableid}))})}[xl](){this[es](this.statement.columns,!1),this[es](this.statement.joins,!1),this[es](this.statement.where,!1),this[$l](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)!Bl.isEmpty(i)&&!Bl.isEmpty(i.columnid)&&i.columnid!=="*"&&(r?this[Vl](i):n.push(this[no](i)));return n}[$l](t){if(!t)return;let r=[];if(this.statement.columns.forEach(s=>{if(!(s.funcid&&wO.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`}[Vl](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");Wl.exports=qn});var zl=T((tB,Zl)=>{"use strict";var Jl=require("lodash"),ts=require("mathjs"),LO=require("jsonata"),Xl=p();Zl.exports={distinct_array:e=>Array.isArray(e)&&e.length>1?Jl.uniqWith(e,Jl.isEqual):e,searchJSON:UO,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 UO(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(Xl.isEmpty(this.__ala__.res)&&(this.__ala__.res={}),Xl.isEmpty(this.__ala__.res[r])){let s=LO(e);this.__ala__.res[r]=s}return this.__ala__.res[r].evaluate(t)}a(UO,"searchJSON")});var eE=T((sB,jl)=>{"use strict";var K=require("moment"),io="YYYY-MM-DDTHH:mm:ss.SSSZZ";K.suppressDeprecationWarnings=!0;jl.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 nE=T((nB,sE)=>{"use strict";var DO=require("@turf/area"),PO=require("@turf/length"),HO=require("@turf/circle"),BO=require("@turf/difference"),vO=require("@turf/distance"),GO=require("@turf/boolean-contains"),qO=require("@turf/boolean-equal"),FO=require("@turf/boolean-disjoint"),xO=require("@turf/helpers"),tE=f(),w=p();sE.exports={geoArea:VO,geoLength:kO,geoCircle:YO,geoDifference:$O,geoDistance:rE,geoNear:KO,geoContains:WO,geoEqual:QO,geoCrosses:JO,geoConvert:XO};var ao="geo1 is required",oo="geo2 is required";function VO(e){if(w.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),DO.default(e)}a(VO,"geoArea");function kO(e,t){if(w.isEmpty(e))throw new Error("geoJSON is required");return typeof e=="string"&&(e=w.autoCastJSON(e)),PO.default(e,{units:t||"kilometers"})}a(kO,"geoLength");function YO(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)),HO.default(e,t,{units:r||"kilometers"})}a(YO,"geoCircle");function $O(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)),BO(e,t)}a($O,"geoDifference");function rE(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)),vO.default(e,t,{units:r||"kilometers"})}a(rE,"geoDistance");function KO(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 rE(e,t,s)<=r}a(KO,"geoNear");function WO(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)),GO.default(e,t)}a(WO,"geoContains");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,"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)),!FO.default(e,t)}a(JO,"geoCrosses");function XO(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(tE.GEO_CONVERSION_ENUM[t]))throw new Error(`geo_type of ${t} is invalid please use one of the following types: ${Object.keys(tE.GEO_CONVERSION_ENUM).join(",")}`);return xO[t](e,r)}a(XO,"geoConvert")});var aE=T((aB,iE)=>{var Bt=zl(),ge=eE(),Ke=nE();iE.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 cE=T((oB,_E)=>{"use strict";var ss=require("lodash"),z=require("alasql");z.options.cache=!1;var ZO=aE(),oE=require("clone"),Fn=require("recursive-iterator"),I=N(),y=p(),cr=mt(),zO=f(),{hdb_errors:jO}=V(),eI="IS NULL",qe="There was a problem performing this search. Please check the logs and try again.";ZO(z);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(oE(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 z.yy.LogicValue({value:s}):r.right instanceof z.yy.StringValue&&!y.isEmpty(s)&&y.autoCasterIsNumberCheck(s.toString())&&(r.right=new z.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 z.yy.LogicValue({value:i}):s instanceof z.yy.StringValue&&y.autoCasterIsNumberCheck(i.toString())&&(r.right[n]=new z.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(zO.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 z.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(oE(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(eI)>-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 z.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 z.yy.Column;n.columnid=s.as,n.columnid_orig=s.as_orig,t.expression=n}else{t.initial_select_column=Object.assign(new z.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 z.yy.FuncValue:new z.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 z.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 z.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(jO.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");_E.exports=xn});var Vn=T((cB,lE)=>{"use strict";var tI=Ql();lE.exports={searchByConditions:iI,searchByHash:aI,searchByValue:oI,search:_I};var _o=mt(),uE=require("util"),rI=uE.callbackify(_o.searchByHash),sI=uE.callbackify(_o.searchByValue),nI=cE();async function iI(e){return _o.searchByConditions(e)}a(iI,"searchByConditions");function aI(e,t){try{rI(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}a(aI,"searchByHash");function oI(e,t){try{e.hasOwnProperty("desc")===!0&&(e.reverse=e.desc),sI(e,(r,s)=>{if(r){t(r);return}t(null,s)})}catch(r){return t(r)}}a(oI,"searchByValue");function _I(e,t){try{let r=new tI(e);r.validate(),new nI(r.statement,r.attributes).search().then(n=>{t(null,n)}).catch(n=>{t(n,null)})}catch(r){return t(r)}}a(_I,"search")});var uo=T((EB,EE)=>{"use strict";var cI=f(),lB=Ut();function co(e,t){let r=Object.create(null);if(t.length===1&&cI.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 uI(e,t,r,s){let n=co(r,e);s.push(n)}a(uI,"searchAll");function lI(e,t,r,s){let n=co(r,e);s[t]=n}a(lI,"searchAllToMap");function EI(e,t,r){r[e]===void 0&&(r[e]=[]),r[e].push(t)}a(EI,"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 dI(e,t,r,s,n,i){t.toString().endsWith(e)&&vt(t,r,s,n,i)}a(dI,"endsWith");function hI(e,t,r,s,n,i){t.toString().includes(e)&&vt(t,r,s,n,i)}a(hI,"contains");function TI(e,t,r,s,n,i){t>e&&vt(t,r,s,n,i)}a(TI,"greaterThanCompare");function SI(e,t,r,s,n,i){t>=e&&vt(t,r,s,n,i)}a(SI,"greaterThanEqualCompare");function fI(e,t,r,s,n,i){t<e&&vt(t,r,s,n,i)}a(fI,"lessThanCompare");function mI(e,t,r,s,n,i){t<=e&&vt(t,r,s,n,i)}a(mI,"lessThanEqualCompare");EE.exports={parseRow:co,searchAll:uI,searchAllToMap:lI,iterateDBI:EI,endsWith:dI,contains:hI,greaterThanCompare:TI,greaterThanEqualCompare:SI,lessThanCompare:fI,lessThanEqualCompare:mI,pushResults:vt}});var qt=T((fB,AE)=>{"use strict";var At=B(),hB=N(),Ne=Ut(),kn=ee(),Y=be().LMDB_ERRORS_ENUM,TB=p(),AI=f(),Yn=uo(),{parseRow:RI}=Yn,SB=require("lmdb"),{OVERFLOW_MARKER:dE,MAX_SEARCH_KEY_LENGTH:gI}=kn;function hE(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(hE,"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 TE(e,t,r,s){let n;return function(i,o){if(typeof i=="string"&&i.endsWith(dE)){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(TE,"getOverflowCheck");function NI(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=>RI(u.value,r))))}a(NI,"searchAll");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);$n(r),r=is(e.database||e,r);let o=new Map;for(let{key:_,value:c}of hE(e,t,t,s,n,i))o.set(_,Yn.parseRow(c,r));return o}a(pI,"searchAllToMap");function OI(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=hE(e,void 0,t,r,s,n),_=o.transaction,c=TE(_.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(OI,"iterateDBI");function II(e,t){if(Ne.validateEnv(e),t===void 0)throw new Error(Y.HASH_ATTRIBUTE_REQUIRED);return At.statDBI(e,t).entryCount}a(II,"countAll");function bI(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(bI,"equals");function CI(e,t,r){return Rt(e,t,r),At.openDBI(e,t).getValuesCount(r)}a(CI,"count");function yI(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(yI,"startsWith");function MI(e,t,r,s,n=!1,i=void 0,o=void 0){return SE(e,t,r,s,n,i,o,!0)}a(MI,"endsWith");function SE(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=TE(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(dE)?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(SE,"contains");function wI(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(wI,"greaterThan");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,!1,!1)}a(LI,"greaterThanEqual");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="\0":_==="number"?c=-1/0:_==="boolean"&&(c=!1),ns(e,t,r,c,s,n,i,o,!1,!0)}a(UI,"lessThan");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,!1)}a(DI,"lessThanEqual");function PI(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(PI,"between");function HI(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(HI,"searchByHash");function BI(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(BI,"checkHashExists");function vI(e,t,r,s,n=[]){return mE(e,t,r,s,n),fE(e,t,r,s,n).map(i=>i[1])}a(vI,"batchSearchByHash");function GI(e,t,r,s,n=[]){mE(e,t,r,s,n);let i=new Map;for(let[o,_]of fE(e,t,r,s,n))i.set(o,_);return i}a(GI,"batchSearchByHashToMap");function fE(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(fE,"batchHashSearch");function mE(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(mE,"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>gI)throw new Error(Y.SEARCH_VALUE_TOO_LARGE)}a(Rt,"validateComparisonFunctions");function is(e,t){return t.length===1&&AI.SEARCH_WILDCARDS.indexOf(t[0])>=0&&(t=At.listDBIs(e)),t}a(is,"setGetWholeRowAttributes");AE.exports={searchAll:NI,searchAllToMap:pI,count:CI,countAll:II,equals:bI,startsWith:yI,endsWith:MI,contains:SE,searchByHash:HI,setGetWholeRowAttributes:is,batchSearchByHash:vI,batchSearchByHashToMap:GI,checkHashExists:BI,iterateDBI:OI,greaterThan:wI,greaterThanEqual:LI,lessThan:UI,lessThanEqual:DI,between:PI}});var lr=T((AB,CE)=>{"use strict";var gE=Vn(),gt=N(),NE=Nn(),qI=require("lodash"),FI=rn(),pE=p(),{promisify:OE}=require("util"),G=f(),{handleHDBError:Kn,hdb_errors:xI}=V(),{HDB_ERROR_MSGS:Wn,HTTP_STATUS_CODES:IE}=xI,VI=$();VI.initSync();var RE=B(),kI=qt(),{getSchemaPath:YI}=q(),as=OE(gE.searchByValue),$I=OE(gE.searchByHash),ur="name",bE="hash_attribute",lo="schema",KI="schema_table",WI="attribute";CE.exports={describeAll:QI,describeTable:Qn,describeSchema:XI};async function QI(e){try{let t=pE.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:[bE,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(QI,"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=NE.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),IE.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:KI,search_value:r+"."+s,get_attributes:[WI]},E=Array.from(await as(l));E=qI.uniqBy(E,h=>h.attribute),n&&n.length>0&&(E=JI(n)),i.attributes=E,i.clustering_stream_name=FI.createNatsTableStreamName(u.schema,u.name);try{let h=YI(i.schema,i.name),d=await RE.openEnvironment(h,i.name),A=RE.statDBI(d,i.hash_attribute);i.record_count=A.entryCount;for(let{key:R}of kI.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 XI(e){let t=NE.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:[bE,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 $I(o));if(_&&_.length<1)throw Kn(new Error,Wn.SCHEMA_NOT_FOUND(e.schema),IE.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]),pE.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(XI,"describeSchema")});var os=T((gB,UE)=>{var Er=Pt(),{callbackify:wE,promisify:ZI}=require("util");UE.exports={setSchemaDataToGlobal:yE,getTableSchema:eb,getSystemSchema:rb,setSchemaDataToGlobalAsync:ZI(yE)};var LE=lr(),zI=wE(LE.describeAll),jI=wE(LE.describeTable);function yE(e){zI(null,(t,r)=>{if(t){e(t);return}r.system||(r.system=Er),global.hdb_schema=r,e(null,null)})}a(yE,"setSchemaDataToGlobal");function ME(e,t){return e==="system"?Er[t]:global.hdb_schema[e][t]}a(ME,"returnSchema");function eb(e,t,r){!global.hdb_schema||!global.hdb_schema[e]||!global.hdb_schema[e][t]?tb(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,ME(e,t))}):r(null,ME(e,t))}a(eb,"getTableSchema");function tb(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}jI(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(tb,"setTableDataToGlobal");function rb(){return Er}a(rb,"getSystemSchema")});var _s=T((pB,HE)=>{"use strict";var Xn=Fa(),Le=p(),sb=require("util"),Zn=mt(),nb=os(),Eo=N(),{handleHDBError:Nt,hdb_errors:ib}=V(),{HTTP_STATUS_CODES:Ft}=ib,ab=sb.promisify(nb.getTableSchema),ob="updated",DE="inserted",PE="upserted";HE.exports={insert:cb,update:ub,upsert:lb,validation:_b,flush:Eb};async function _b(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 ab(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(_b,"validation");async function cb(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(DE,s.written_hashes,e,s.skipped_hashes,s.new_attributes,s.txn_time)}a(cb,"insertData");async function ub(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(ob,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(ub,"updateData");async function lb(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(PE,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(lb,"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===DE?(o.inserted_hashes=t,o.skipped_hashes=s,o):e===PE?(o.upserted_hashes=t,o):(o.update_hashes=t,o.skipped_hashes=s,o)}a(Jn,"returnObject");function Eb(e){return Zn.flush(e.schema,e.table)}a(Eb,"flush")});var qE=T((IB,GE)=>{var db=Pe(),ho=require("joi"),{hdb_schema_table:BE}=ar(),vE={schema:BE,table:BE},hb={date:ho.date().iso().required()},Tb={timestamp:ho.date().timestamp().required().messages({"date.format":"'timestamp' is invalid"})};GE.exports=function(e,t){let r=t==="timestamp"?{...vE,...Tb}:{...vE,...hb},s=ho.object(r);return db.validateBySchema(e,s)}});var kE=T((bB,VE)=>{var Sb=Pe(),FE=require("joi"),{hdb_schema_table:xE}=ar(),fb=FE.object({schema:xE,table:xE,hash_values:FE.array().required()});VE.exports=function(e){return Sb.validateBySchema(e,fb)}});var $E=T((CB,YE)=>{"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");YE.exports={InsertObject:zn,NoSQLSeachObject:jn,DeleteResponseObject:ei}});var fo=T((MB,XE)=>{"use strict";var WE=qE(),mb=kE(),ti=p(),KE=require("moment"),QE=N(),{promisify:Ab,callbackify:Rb}=require("util"),xt=f(),gb=os(),To=Ab(gb.getTableSchema),So=mt(),{DeleteResponseObject:Nb}=$E(),{handleHDBError:pt,hdb_errors:pb}=V(),{HDB_ERROR_MSGS:ri,HTTP_STATUS_CODES:Ot}=pb,Ob="records successfully deleted",Ib=Rb(JE);XE.exports={delete:Ib,deleteRecord:JE,deleteFilesBefore:bb,deleteAuditLogsBefore:Cb};async function bb(e){let t=WE(e,"date");if(t)throw pt(t,t.message,Ot.BAD_REQUEST,void 0,void 0,!0);if(!KE(e.date,KE.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),QE.info(`Finished deleting files before ${e.date}`),n&&n.message)return n.message}a(bb,"deleteFilesBefore");async function Cb(e){let t=WE(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),QE.info(`Finished deleting audit logs before ${e.timestamp}`),s}a(Cb,"deleteAuditLogsBefore");async function JE(e){let t=mb(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} ${Ob}`),s}catch(s){if(s.message===xt.SEARCH_NOT_FOUND_MESSAGE){let n=new Nb;return n.message=xt.SEARCH_NOT_FOUND_MESSAGE,n.skipped_hashes=e.hash_values.length,n.deleted_hashes=0,n}throw s}}a(JE,"deleteRecord")});var zE=T((LB,ZE)=>{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 yb(e){return ne.password.presence=!0,ne.username.presence=!0,ne.role.presence=!0,ne.active.presence=!0,mo.validateObject(e,ne)}a(yb,"addUserValidation");function Mb(e){return ne.password.presence=!1,ne.username.presence=!0,ne.role.presence=!1,ne.active.presence=!1,mo.validateObject(e,ne)}a(Mb,"alterUserValidation");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,"dropUserValidation");ZE.exports={addUserValidation:yb,alterUserValidation:Mb,dropUserValidation:wb}});var us=T((PB,dd)=>{"use strict";var sd="username is required",nd="nothing to update, must supply active, role or password to update",id="password cannot be an empty string",ad="If role is specified, it cannot be empty.",od="active must be true or false";dd.exports={addUser:Gb,alterUser:qb,dropUser:xb,userInfo:Vb,listUsers:ni,listUsersExternal:kb,setUsersToGlobal:cs,findAndValidateUser:Kb,getClusterUser:Wb,USERNAME_REQUIRED:sd,ALTERUSER_NOTHING_TO_UPDATE:nd,EMPTY_PASSWORD:id,EMPTY_ROLE:ad,ACTIVE_BOOLEAN:od};var _d=_s(),Lb=fo(),Ro=Dn(),cd=zE(),ud=Vn(),go=ls(),pe=p(),ld=require("validate.js"),b=N(),{promisify:No}=require("util"),po=rn(),jE=f(),ed=Lt(),Ub=js(),DB=$(),Db=Wa(),Pb=Pt(),{handleHDBError:We,hdb_errors:Hb}=V(),{HTTP_STATUS_CODES:Qe,AUTHENTICATION_ERROR_MSGS:Ao,HDB_ERROR_MSGS:dr}=Hb,{UserEventMsg:Oo}=Vt(),td=require("lodash"),Ed={username:!0,active:!0,role:!0,password:!0},rd=new Map,si=No(ud.searchByValue),Bb=No(ud.searchByHash),vb=No(Lb.delete);async function Gb(e){let t=ld.cleanAttributes(e,Ed),r=cd.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 _d.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(Gb,"addUser");async function qb(e){let t=ld.cleanAttributes(e,Ed);if(pe.isEmptyOrZeroLength(t.username))throw new Error(sd);if(pe.isEmptyOrZeroLength(t.password)&&pe.isEmptyOrZeroLength(t.role)&&pe.isEmptyOrZeroLength(t.active))throw new Error(nd);if(!pe.isEmpty(t.password)&&pe.isEmptyOrZeroLength(t.password.trim()))throw new Error(id);if(!pe.isEmpty(t.active)&&!pe.isBoolean(t.active))throw new Error(od);let r=Fb(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(ad);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 _d.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(qb,"alterUser");function Fb(e){let t=!1,r=global.hdb_users.get(e);return r&&r.role.permission.cluster_user===!0&&(t=!0),t}a(Fb,"isClusterUser");async function xb(e){try{let t=cd.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 vb(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(xb,"dropUser");async function Vb(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 Bb(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(Vb,"userInfo");async function kb(){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(kb,"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]=td.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=td.cloneDeep(o),o.role=r[o.role],Yb(o.role),i.set(o.username,o);return(await Db.getLicense()).enterprise?i:$b(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 Yb(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(Pb)){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(Yb,"appendSystemTablesToRole");function $b(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($b,"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 Kb(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(rd.get(t)===s.password)return n;if(Ro.validate(s.password,t))rd.set(t,s.password);else throw We(new Error,Ao.GENERIC_AUTH_FAIL,Qe.UNAUTHORIZED,void 0,void 0,!0)}return n}a(Kb,"findAndValidateUser");async function Wb(){let e=await ni(),t=Ub.getConfigFromFile(jE.CONFIG_PARAMS.CLUSTERING_USER),r=e.get(t);if(!pe.isEmpty(r)&&r?.role?.role===jE.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+ed.SERVER_SUFFIX.ADMIN,r.sys_name_encoded=r.uri_encoded_name+ed.SERVER_SUFFIX.ADMIN,r}a(Wb,"getClusterUser")});var ii=T((BB,fd)=>{"use strict";var kt=N(),Oe=f(),Qb=Hl(),hd=os(),Jb=lr(),Xb=us(),{validateEvent:Sd}=Vt(),Es=mt(),Zb=require("process"),zb={[Oe.ITC_EVENT_TYPES.SCHEMA]:jb,[Oe.ITC_EVENT_TYPES.USER]:tC};async function jb(e){let t=Sd(e);if(t){kt.error(t);return}kt.trace("ITC schemaHandler received schema event:",e),await Qb(e.message),await eC(e.message)}a(jb,"schemaHandler");async function eC(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:hd.setSchemaDataToGlobal(Td);break}else hd.setSchemaDataToGlobal(Td)}catch(t){kt.error(t)}}a(eC,"syncSchemaMetadata");function Td(e){e&&kt.error(e)}a(Td,"handleErrorCallback");async function tC(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=Sd(e);if(t){kt.error(t);return}kt.trace(`ITC userHandler ${Oe.HDB_ITC_CLIENT_PREFIX}${Zb.pid} received user event:`,e),await Xb.setUsersToGlobal()}catch(t){kt.error(t)}}a(tC,"userHandler");fd.exports=zb});var Vt=T((xB,Ad)=>{"use strict";var GB=N(),Io=p(),rC=f(),{ITC_ERRORS:ds}=be(),{parentPort:qB,threadId:sC,isMainThread:nC,workerData:FB}=require("worker_threads"),{onMessageFromWorkers:iC,broadcast:aC}=vn();Ad.exports={sendItcEvent:oC,validateEvent:md,SchemaEventMsg:_C,UserEventMsg:cC};var ai;iC(e=>{ai=ai||ii(),md(e),ai[e.type]&&ai[e.type](e)});function oC(e){!nC&&e.message&&(e.message.originator=sC),aC(e)}a(oC,"sendItcEvent");function md(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(rC.ITC_EVENT_TYPES[e.type.toUpperCase()]===void 0)return ds.INVALID_EVENT(e.type)}a(md,"validateEvent");function _C(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(_C,"SchemaEventMsg");function cC(e){this.originator=e}a(cC,"UserEventMsg")});var ls=T((YB,pd)=>{"use strict";var Rd=f(),kB=p(),oi=N(),gd=ul(),hr,{sendItcEvent:Nd}=Vt();function uC(e){try{oi.trace("signalSchemaChange called with message:",e),hr=hr||ii();let t=new gd(Rd.ITC_EVENT_TYPES.SCHEMA,e);hr.schema(t),Nd(t)}catch(t){oi.error(t)}}a(uC,"signalSchemaChange");function lC(e){try{oi.trace("signalUserChange called with message:",e),hr=hr||ii();let t=new gd(Rd.ITC_EVENT_TYPES.USER,e);hr.user(t),Nd(t)}catch(t){oi.error(t)}}a(lC,"signalUserChange");pd.exports={signalSchemaChange:uC,signalUserChange:lC}});var _i=T((KB,Id)=>{"use strict";var Od=p(),EC=f(),dC=N(),hC=bn(),TC=In(),SC=ls(),{SchemaEventMsg:fC}=Vt(),mC="already exists in";Id.exports=AC;async function AC(e,t,r){if(Od.isEmptyOrZeroLength(r))return r;let s=[];Od.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 RC(e,t.schema,t.name,i)})),n}a(AC,"lmdbCheckForNewAttributes");async function RC(e,t,r,s){let n=new TC(t,r,s,void 0,!0);e&&(n.hdb_auth_header=e);try{await gC(n)}catch(i){if(typeof i=="object"&&i.message!==void 0&&i.message.includes(mC))dC.warn(`attribute ${t}.${r}.${s} already exists`);else throw i}}a(RC,"createNewAttribute");async function gC(e){let t;return t=await hC(e),SC.signalSchemaChange(new fC(process.pid,EC.OPERATIONS_ENUM.CREATE_ATTRIBUTE,e.schema,e.table,e.attribute)),t}a(gC,"createAttribute")});var Tr=T((QB,bd)=>{"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");bd.exports=ci});var yd=T((XB,Cd)=>{"use strict";var NC=Tr(),pC=f().OPERATIONS_ENUM,ui=class extends NC{constructor(t,r,s,n,i=void 0){super(pC.INSERT,r,s,n,i),this.records=t}};a(ui,"LMDBInsertTransactionObject");Cd.exports=ui});var wd=T((zB,Md)=>{"use strict";var OC=Tr(),IC=f().OPERATIONS_ENUM,li=class extends OC{constructor(t,r,s,n,i,o=void 0){super(IC.UPDATE,s,n,i,o),this.records=t,this.original_records=r}};a(li,"LMDBUpdateTransactionObject");Md.exports=li});var Ud=T((ev,Ld)=>{"use strict";var bC=Tr(),CC=f().OPERATIONS_ENUM,Ei=class extends bC{constructor(t,r,s,n,i,o=void 0){super(CC.UPSERT,s,n,i,o),this.records=t,this.original_records=r}};a(Ei,"LMDBUpsertTransactionObject");Ld.exports=Ei});var Pd=T((rv,Dd)=>{"use strict";var yC=Tr(),MC=f().OPERATIONS_ENUM,di=class extends yC{constructor(t,r,s,n,i=void 0){super(MC.DELETE,s,n,t,i),this.original_records=r}};a(di,"LMDBDeleteTransactionObject");Dd.exports=di});var hs=T((iv,Gd)=>{"use strict";var nv=require("path"),Hd=B(),wC=yd(),LC=wd(),UC=Ud(),DC=Pd(),Sr=ee(),Bd=p(),{CONFIG_PARAMS:PC}=f(),vd=$();vd.initSync();var hi=f().OPERATIONS_ENUM,{getTransactionAuditStorePath:HC}=q();Gd.exports=BC;async function BC(e,t){if(vd.get(PC.LOGGING_AUDITLOG)===!1)return;let r=HC(e.schema,e.table),s=await Hd.openEnvironment(r,e.table,!0),n=vC(e,t);if(!(n===void 0||n.hash_values.length===0)&&s!==void 0){Hd.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),Bd.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(BC,"writeTransaction");function vC(e,t){let r=Bd.isEmpty(e.hdb_user)?void 0:e.hdb_user.username;if(e.operation===hi.INSERT)return new wC(e.records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.UPDATE)return new LC(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.UPSERT)return new UC(e.records,t.original_records,r,t.txn_time,t.written_hashes,e.__origin);if(e.operation===hi.DELETE)return new DC(t.deleted,t.original_records,r,t.txn_time,e.__origin)}a(vC,"createTransactionObject")});var bo=T((_v,qd)=>{"use strict";var GC=Cn(),ov=Mn(),Ts=f(),qC=Ln(),FC=ir().insertRecords,xC=B(),VC=N(),kC=_i(),{getSchemaPath:YC}=q(),$C=hs();qd.exports=KC;async function KC(e){try{let{schema_table:t,attributes:r}=GC(e);qC(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 kC(e.hdb_auth_header,t,r),n=YC(e.schema,e.table),i=await xC.openEnvironment(n,e.table),o=await FC(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await $C(e,o)}catch(_){VC.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(KC,"lmdbCreateRecords")});var Vd=T((uv,xd)=>{"use strict";var Fd=f(),WC=bo(),QC=Mn(),JC=require("fs-extra"),{getSchemaPath:XC}=q();xd.exports=ZC;async function ZC(e){let t=[{name:e.schema,createddate:Date.now()}],r=new QC(Fd.SYSTEM_SCHEMA_NAME,Fd.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,void 0,t);await WC(r),await JC.mkdirp(XC(e.schema))}a(ZC,"lmdbCreateSchema")});var Yd=T((Ev,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((fv,Wd)=>{"use strict";var $d=B(),Co=Ut(),yo=be().LMDB_ERRORS_ENUM,zC=ee(),Kd=N(),hv=p(),jC=require("lmdb"),ey=Yd(),ty=f(),{OVERFLOW_MARKER:Tv,MAX_SEARCH_KEY_LENGTH:Sv}=zC,ry=ty.TIME_STAMP_NAMES_ENUM.UPDATED_TIME;async function sy(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=$d.listDBIs(e);$d.initializeDBIs(e,t,n);let i=new ey,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[ry]>s){i.skipped.push(o);continue}let R=e.dbis[t].ifVersion(o,jC.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{Kd.warn(`cannot delete from attribute: ${W}, ${F}:${o}`)}}});_.push(R),c.push(o),i.original_records.push(A)}catch(A){Kd.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(sy,"deleteRecords");Wd.exports={deleteRecords:sy}});var Ss=T((Av,Jd)=>{"use strict";var fr=p(),ny=Mo(),iy=B(),{getSchemaPath:ay}=q(),oy=hs(),_y=N();Jd.exports=cy;async function cy(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 Qd([],[]);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=ay(e.schema,e.table),i=await iy.openEnvironment(n,e.table),o=await ny.deleteRecords(i,s,e.hash_values,e.__origin?.timestamp);try{t===!0&&await oy(e,o)}catch(_){_y.error(`unable to write transaction due to ${_.message}`)}return Qd(o.deleted,o.skipped,o.txn_time)}catch(n){throw n}}a(cy,"lmdbDeleteRecords");function Qd(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(Qd,"createDeleteResponse")});var fs=T((Nv,jd)=>{var Xd=require("lodash"),Zd=Pe(),D=require("joi"),uy=p(),{hdb_schema_table:Fe,checkValidTable:zd}=ar(),{handleHDBError:ly,hdb_errors:Ey}=V(),{HTTP_STATUS_CODES:dy}=Ey,gv=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()}),hy=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)}),Ty=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()});jd.exports=function(e,t){let r=null;switch(t){case"value":r=Zd.validateBySchema(e,hy);break;case"hashes":let i=function(o){n?n+=". "+o:n=o};var s=i;a(i,"addError");let n;i(zd("schema",e.schema)),i(zd("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=Zd.validateBySchema(e,Ty);break;default:throw new Error(`Error validating search, unknown type: ${t}`)}if(!r&&e.schema!=="system"){let n=uy.checkGlobalSchemaTable(e.schema,e.table);if(n)return ly(new Error,n,dy.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=Xd.filter(_,u=>u!=="*"&&u.attribute!=="*"&&!Xd.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((Ov,eh)=>{"use strict";var Sy=B(),fy=fs(),{getSchemaPath:my}=q();eh.exports=Ay;function Ay(e){let t=fy(e,"hashes");if(t)throw t;let r=my(e.schema,e.table);return Sy.openEnvironment(r,e.table)}a(Ay,"initialize")});var Lo=T((bv,th)=>{"use strict";var Ry=qt(),gy=wo();th.exports=Ny;async function Ny(e){let t=await gy(e),r=t.useReadTransaction();r.database=t;let s=global.hdb_schema[e.schema][e.table];try{return Ry.batchSearchByHashToMap(r,s.hash_attribute,e.get_attributes,e.hash_values)}finally{r.done()}}a(Ny,"lmdbGetDataByHash")});var fi=T((yv,rh)=>{"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");rh.exports=Si});var nh=T((Lv,sh)=>{"use strict";var wv=fi(),py=qt(),Oy=wo();sh.exports=Iy;async function Iy(e){let t=await Oy(e),r=global.hdb_schema[e.schema][e.table];return py.batchSearchByHash(t,r.hash_attribute,e.get_attributes,e.hash_values)}a(Iy,"lmdbSearchByHash")});var at=T((Dv,ih)=>{"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");ih.exports=mi});var Ai=T((Hv,lh)=>{"use strict";var ie=qt(),by=B(),Cy=p(),g=ee(),Yt=f(),yy=Pt(),ah=be().LMDB_ERRORS_ENUM,{compareKeys:mr}=require("ordered-binary"),{getSchemaPath:My}=q(),ot=Yt.SEARCH_WILDCARDS;async function wy(e,t,r){let s;e.schema===Yt.SYSTEM_SCHEMA_NAME?s=yy[e.table]:s=global.hdb_schema[e.schema][e.table];let n=uh(e,s.hash_attribute,r,t);return _h(e,n,s.hash_attribute,r)}a(wy,"prepSearch");async function _h(e,t,r,s){let n=My(e.schema,e.table),i=await by.openEnvironment(n,e.table),o=ch(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(Uy(e,r)===!1){let l=e.search_attribute;if(l===r)return s?oh(o,()=>!0):o.map(h=>({[r]:h.key}));let E=a(h=>({[r]:h.value,[l]:h.key}),"toObject");return s?oh(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(_h,"executeSearch");function ch(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(ch,"searchByType");function Ly(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(Ly,"filterByType");function oh(e,t){let r=new Map;for(let s of e)r.set(s.value,t(s));return r}a(oh,"createMapFromIterable");function Uy(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(Uy,"checkToFetchMore");function uh(e,t,r,s){if(Cy.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(ah.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(ah.UNKNOWN_SEARCH_TYPE)}}a(uh,"createSearchTypeFromSearchObject");lh.exports={executeSearch:_h,createSearchTypeFromSearchObject:uh,prepSearch:wy,searchByType:ch,filterByType:Ly}});var dh=T((Gv,Eh)=>{"use strict";var vv=at(),Dy=fs(),Py=p(),Hy=f(),By=Ai();Eh.exports=vy;function vy(e,t){if(!Py.isEmpty(t)&&Hy.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=Dy(e,"value");if(s)throw s;let n=!0;return By.prepSearch(e,t,n)}a(vy,"lmdbGetDataByValue")});var Ar=T((xv,hh)=>{"use strict";var Fv=at(),Gy=fs(),qy=p(),Fy=f(),xy=Ai();hh.exports=Vy;async function Vy(e,t){if(!qy.isEmpty(t)&&Fy.VALUE_SEARCH_COMPARATORS_REVERSE_LOOKUP[t]===void 0)throw new Error(`Value search comparator - ${t} - is not valid`);let s=Gy(e,"value");if(s)throw s;return xy.prepSearch(e,t,!1)}a(Vy,"lmdbSearchByValue")});var Sh=T((Yv,Th)=>{"use strict";var kv=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");Th.exports={SearchByConditionsObject:Ri,SearchCondition:gi,SortAttribute:Ni}});var gh=T((Wv,Rh)=>{"use strict";var Kv=Sh().SearchByConditionsObject,ky=at(),Yy=fs(),Uo=qt(),pi=ee(),Ah=Ai(),$y=uo(),Ky=require("lodash"),{getSchemaPath:Wy}=q(),fh=B(),{handleHDBError:Qy,hdb_errors:Jy}=V(),{HTTP_STATUS_CODES:Xy}=Jy,Zy=1e8;Rh.exports=zy;async function zy(e){let t=Yy(e,"conditions");if(t)throw Qy(t,t.message,Xy.BAD_REQUEST,void 0,void 0,!0);e.operator=e.operator?e.operator.toLowerCase():void 0,e.offset=Number.isInteger(e.offset)?e.offset:0;let r=Wy(e.schema,e.table),s=await fh.openEnvironment(r,e.table),n=global.hdb_schema[e.schema][e.table];for(let u of e.conditions)fh.openDBI(s,u.search_attribute);let i=Ky.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 mh(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(Ah.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=>$y.parseRow(d,h))}else{for(let E=1;E<i.length;E++){let h=i[E],d=await mh(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(zy,"lmdbSearchByConditions");async function mh(e,t,r,s){let n=new ky(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,Ah.searchByType(e,n,i,s).map(o=>o.value)}a(mh,"executeConditionSearch")});var ms=T((Jv,Nh)=>{"use strict";var jy=f().OPERATIONS_ENUM,Oi=class{constructor(t,r,s,n=void 0){this.operation=jy.DELETE,this.schema=t,this.table=r,this.hash_values=s,this.__origin=n}};a(Oi,"DeleteObject");Nh.exports=Oi});var Do=T((Zv,wh)=>{"use strict";var bh=at(),Ch=ms(),yh=Ar(),Mh=Ss(),le=f(),ph=p(),Oh=B(),{getTransactionAuditStorePath:eM,getSchemaPath:tM}=q(),Ih=N();wh.exports=rM;async function rM(e){try{if(ph.isEmpty(global.hdb_schema[e.schema])||ph.isEmpty(global.hdb_schema[e.schema][e.table]))throw new Error(`unknown schema:${e.schema} and table ${e.table}`);await sM(e),await nM(e);let t=tM(e.schema,e.table);try{await Oh.deleteEnvironment(t,e.table)}catch(r){if(r.message==="invalid environment")Ih.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}try{let r=eM(e.schema,e.table);await Oh.deleteEnvironment(r,e.table,!0)}catch(r){if(r.message==="invalid environment")Ih.warn(`cannot delete environment for ${e.schema}.${e.table}, environment not found`);else throw r}}catch(t){throw t}}a(rM,"lmdbDropTable");async function sM(e){let t=new bh(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 yh(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 Ch(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,s);await Mh(n)}a(sM,"deleteAttributesFromSystem");async function nM(e){let t=new bh(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 yh(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 Ch(le.SYSTEM_SCHEMA_NAME,le.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME,[s.id]);try{await Mh(n)}catch(i){throw i}}a(nM,"dropTableFromSystem")});var Uh=T((jv,Lh)=>{"use strict";var iM=require("fs-extra"),aM=at(),oM=fi(),_M=ms(),cM=Do(),uM=Ss(),lM=Lo(),EM=Ar(),_t=f(),{getSchemaPath:dM}=q(),{handleHDBError:hM,hdb_errors:TM}=V(),{HDB_ERROR_MSGS:SM,HTTP_STATUS_CODES:fM}=TM;Lh.exports=mM;async function mM(e){let t;try{t=await AM(e.schema);let r=new aM(_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 EM(r));for(let o=0;o<s.length;o++){let _={schema:t,table:s[o].name};try{await cM(_)}catch(c){if(c.message!=="invalid environment")throw c}}let n=new _M(_t.SYSTEM_SCHEMA_NAME,_t.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME,[t]);await uM(n);let i=dM(t);await iM.remove(i)}catch(r){throw r}}a(mM,"lmdbDropSchema");async function AM(e){let t=new oM(_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 lM(t))}catch(n){throw n}for(let[,n]of r)n.name===e&&(s=e);if(!s)throw hM(new Error,SM.SCHEMA_NOT_FOUND(e),fM.NOT_FOUND,void 0,void 0,!0);return s}a(AM,"validateDropSchema")});var Po=T((tG,Dh)=>{"use strict";var Ii=class{constructor(t,r,s){this.schema=t,this.table=r,this.hash_attribute=s}};a(Ii,"CreateTableObject");Dh.exports=Ii});var Hh=T((nG,Ph)=>{"use strict";var RM=require("fs-extra"),bi=B(),{getTransactionAuditStorePath:gM}=q(),Ho=ee(),sG=Po();Ph.exports=NM;async function NM(e){let t;try{let r=gM(e.schema,e.table);await RM.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(NM,"createTransactionsAuditEnvironment")});var qh=T((aG,Gh)=>{"use strict";var Bo=f(),Bh=B(),pM=ir(),{getSystemSchemaPath:OM,getSchemaPath:IM}=q(),bM=Pt(),CM=bn(),vo=In(),yM=N(),MM=Hh(),qo=bM.hdb_table,vh=[];for(let e=0;e<qo.attributes.length;e++)vh.push(qo.attributes[e].attribute);Gh.exports=wM;async function wM(e,t){let r=IM(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 Bh.createEnvironment(r,t.table),e!==void 0){let o=await Bh.openEnvironment(OM(),Bo.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);await pM.insertRecords(o,qo.hash_attribute,vh,[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 MM(t)}catch(o){throw o}}a(wM,"lmdbCreateTable");async function Go(e){try{await CM(e)}catch(t){yM.warn(`failed to create attribute ${e.attribute} due to ${t.message}`)}}a(Go,"createAttribute")});var xh=T((_G,Fh)=>{"use strict";var LM=Cn(),UM=Ln(),DM=_i(),As=f(),PM=ir().updateRecords,HM=B(),{getSchemaPath:BM}=q(),vM=hs(),GM=N();Fh.exports=qM;async function qM(e){try{let{schema_table:t,attributes:r}=LM(e);UM(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 DM(e.hdb_auth_header,t,r),n=BM(e.schema,e.table),i=await HM.openEnvironment(n,e.table),o=await PM(i,t.hash_attribute,r,e.records,e.__origin?.timestamp);try{await vM(e,o)}catch(_){GM.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(qM,"lmdbUpdateRecords")});var kh=T((uG,Vh)=>{"use strict";var FM=f().OPERATIONS_ENUM,Ci=class{constructor(t,r,s,n=void 0){this.operation=FM.UPSERT,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a(Ci,"UpsertObject");Vh.exports=Ci});var $h=T((dG,Yh)=>{"use strict";var EG=kh(),xM=Cn(),VM=Ln(),kM=_i(),Rs=f(),YM=ir().upsertRecords,$M=B(),{getSchemaPath:KM}=q(),WM=hs(),QM=N(),{handleHDBError:JM,hdb_errors:XM}=V();Yh.exports=ZM;async function ZM(e){let t;try{t=xM(e)}catch(c){throw JM(c,c.message,XM.HTTP_STATUS_CODES.BAD_REQUEST,void 0,void 0,!0)}let{schema_table:r,attributes:s}=t;VM(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 kM(e.hdb_auth_header,r,s),i=KM(e.schema,e.table),o=await $M.openEnvironment(i,e.table),_=await YM(o,r.hash_attribute,s,e.records,e.__origin?.timestamp);try{await WM(e,_)}catch(c){QM.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 Zh=T((TG,Xh)=>{"use strict";var zM=at(),Kh=p(),Wh=N(),jM=Ar(),Qh=f(),ew=Mo().deleteRecords,tw=B(),{getSchemaPath:rw}=q(),{promisify:sw}=require("util"),nw=sw(setTimeout),Jh=1e4,iw=10;Xh.exports=aw;async function aw(e){let t=global.hdb_schema[e.schema][e.table].hash_attribute;if(Kh.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 zM(e.schema,e.table,Qh.TIME_STAMP_NAMES_ENUM.CREATED_TIME,r,void 0,[t]);s=Array.from(await jM(n,Qh.VALUE_SEARCH_COMPARATORS.LESS))}catch(n){throw Wh.error(`Error searching for date: ${e.date} in schema: ${e.schema} table: ${e.table}`),n}return Kh.isEmptyOrZeroLength(s)?(Wh.trace("No records found to delete"),{message:"No records found to delete"}):await ow(e,s,t)}a(aw,"lmdbDeleteRecordsBefore");async function ow(e,t,r){let s=rw(e.schema,e.table),n=await tw.openEnvironment(s,e.table),i={message:"",deleted_hashes:[],skipped_hashes:[]};for(let o=0,_=t.length;o<_;o+=Jh){let c=t.slice(o,o+Jh),u=[];for(let l=0,E=c.length;l<E;l++)u.push(c[l][r]);try{let l=await ew(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 nw(iw)}return i.message=`${i.deleted_hashes.length} of ${i.deleted_hashes.length+i.skipped_hashes.length} records successfully deleted`,i}a(ow,"chunkDeletes")});var jh=T((fG,zh)=>{"use strict";var yi=class{constructor(t,r,s){this.schema=t,this.table=r,this.timestamp=s}};a(yi,"DeleteBeforeObject");zh.exports=yi});var tT=T((AG,eT)=>{"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");eT.exports=Mi});var nT=T((NG,sT)=>{"use strict";var Fo=B(),{getTransactionAuditStorePath:_w}=q(),gG=jh(),gs=ee(),cw=p(),rT=tT(),uw=require("util").promisify,lw=uw(setTimeout),Ew=1e4,dw=100;sT.exports=hw;async function hw(e){let t=_w(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 rT;do n=await Tw(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 lw(dw);while(n.transactions_deleted>0);return i}a(hw,"deleteAuditLogsBefore");async function Tw(e,t){let r=new rT;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];cw.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>Ew)break}return await n,r}catch(s){throw s}}a(Tw,"deleteTransactions")});var aT=T((OG,iT)=>{"use strict";var wi=class{constructor(t,r,s){this.schema=t,this.table=r,this.attribute=s}};a(wi,"DropAttributeObject");iT.exports=wi});var _T=T((CG,oT)=>{"use strict";var Sw=at(),fw=ms(),bG=aT(),Je=f(),mw=p(),xo=B(),Aw=Pt(),Rw=Ar(),gw=Ss(),{getSchemaPath:Nw}=q();oT.exports=pw;async function pw(e,t=!0){let r;e.schema===Je.SYSTEM_SCHEMA_NAME?r=Aw[e.table]:r=global.hdb_schema[e.schema][e.table];let s=await Iw(e),n=Nw(e.schema,e.table),i=await xo.openEnvironment(n,e.table);return t===!0&&await Ow(e,i,r.hash_attribute),xo.dropDBI(i,e.attribute),s}a(pw,"lmdbDropAttribute");async function Ow(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(Ow,"removeAttributeFromAllObjects");async function Iw(e){let t=new Sw(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 Rw(t)).filter(o=>o[Je.SYSTEM_DEFAULT_ATTRIBUTE_NAMES.ATTR_ATTRIBUTE_KEY]===e.attribute);if(mw.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 fw(Je.SYSTEM_SCHEMA_NAME,Je.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME,n);return gw(i)}a(Iw,"dropAttributeFromSystem")});var hT=T((wG,dT)=>{"use strict";var Vo=B(),Rr=ee(),MG=Ut(),ko=f(),cT=p(),{getTransactionAuditStorePath:bw}=q(),Cw=qt(),Li=Tr(),yw=N();dT.exports=Mw;async function Mw(e){let t=bw(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 uT(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,Lw(r,e.search_values,n);case ko.READ_AUDIT_LOG_SEARCH_TYPES_ENUM.USERNAME:return ww(r,e.search_values);default:return uT(r)}}a(Mw,"readAuditLog");function uT(e,t=[0,Date.now()]){cT.isEmpty(t[0])&&(t[0]=0),cT.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(uT,"searchTransactionsByTimestamp");function ww(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,ET(e,i))}return Object.fromEntries(r)}a(ww,"searchTransactionsByUsername");function Lw(e,t,r){let s=new Map;for(let _=0,c=t.length;_<c;_++){let u=t[_],l=Cw.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=ET(e,n),o=new Map;for(let _=0;_<i.length;_++){let c=i[_],u=c.timestamp,l=s.get(u);lT(c,"records",r,l,o),lT(c,"original_records",r,l,o)}return Object.fromEntries(o)}a(Lw,"searchTransactionsByHashValues");function lT(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(lT,"loopRecords");function ET(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){yw.warn(i)}return r}catch(s){throw s}}a(ET,"batchSearchTransactions")});var ST=T((UG,TT)=>{"use strict";var{getSchemaPath:Uw}=q(),Dw=B();TT.exports={writeTransaction:Pw};async function Pw(e,t,r){let s=Uw(e,t);return(await Dw.openEnvironment(s,t)).transaction(r)}a(Pw,"writeTransaction")});var RT=T((PG,AT)=>{"use strict";var{getSchemaPath:fT}=q(),mT=B();AT.exports={flush:Hw,resetReadTxn:Bw};async function Hw(e,t){return(await mT.openEnvironment(fT(e,t),t.toString())).flushed}a(Hw,"flush");async function Bw(e,t){try{(await mT.openEnvironment(fT(e,t),t.toString())).resetReadTxn()}catch{}}a(Bw,"resetReadTxn")});var pT=T((BG,NT)=>{"use strict";var vw=N(),{handleHDBError:Gw}=V(),qw=pa(),Fw=bn(),xw=bo(),Vw=Vd(),kw=Ss(),Yw=Lo(),$w=nh(),Kw=dh(),Ww=Ar(),Qw=gh(),Jw=Uh(),Xw=qh(),Zw=xh(),zw=$h(),jw=Zh(),eL=nT(),tL=Do(),rL=_T(),sL=hT(),nL=ST(),gT=RT(),Ui=class extends qw{async searchByConditions(t){return Qw(t)}async getDataByHash(t){return await Yw(t)}async searchByHash(t){return await $w(t)}async getDataByValue(t,r){return await Kw(t,r)}async searchByValue(t){return await Ww(t)}async createSchema(t){return await Vw(t)}async dropSchema(t){return await Jw(t)}async createTable(t,r){return await Xw(t,r)}async dropTable(t){return await tL(t)}async createAttribute(t){return await Fw(t)}async createRecords(t){return await xw(t)}async updateRecords(t){return await Zw(t)}async upsertRecords(t){try{return await zw(t)}catch(r){throw Gw(r,null,null,vw.ERR,r)}}async deleteRecords(t){return await kw(t)}async deleteRecordsBefore(t){return await jw(t)}async dropAttribute(t){return await rL(t)}async deleteAuditLogsBefore(t){return await eL(t)}async readAuditLog(t){return await sL(t)}writeTransaction(t,r,s){return nL.writeTransaction(t,r,s)}flush(t,r){return gT.flush(t,r)}resetReadTxn(t,r){return gT.resetReadTxn(t,r)}};a(Ui,"LMDBBridge");NT.exports=Ui});var mt=T((GG,IT)=>{"use strict";var iL=pT(),aL=pa(),oL=$();oL.initSync();var OT;function _L(){return OT instanceof aL?OT:new iL}a(_L,"getBridge");IT.exports=_L()});var CT=T((FG,bT)=>{"use strict";var cL=mt();bT.exports={writeTransaction:uL};function uL(e,t,r){return cL.writeTransaction(e,t,r)}a(uL,"writeTransaction")});var Yo=T((VG,lL)=>{lL.exports={name:"harperdb",version:"4.1.0",description:"HarperDB is a distributed SQL & NoSQL data platform focused on speed, flexibility, and ease of use.",keywords:["database","sql","nosql","api","distributed","cloud","enterprise","Fastify","NATS"],main:"harperdb.js",bin:{harperdb:"./bin/harperdb.js"},engines:{node:">=14.0.0","preferred-node":"18.15.0","go-lang":"1.19.6","nats-server":"2.9.15"},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.299.0","@aws-sdk/lib-storage":"3.300.0","@aws-sdk/abort-controller":"3.0.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.14.1","fastify-plugin":"~4.5.0","fs-extra":"11.1.0","human-readable-ids":"1.0.4",inquirer:"8.2.2","is-number":"7.0.0",joi:"17.8.3",json2csv:"5.0.7",jsonata:"1.8.6",jsonwebtoken:"9.0.0",lmdb:"2.7.10",lodash:"4.17.21",mathjs:"11.6.0",minimist:"1.2.8",mkcert:"1.5.1",moment:"2.29.4",msgpackr:"1.8.5",nats:"2.12.1",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.11.0",pm2:"5.3.0",prompt:"1.3.0","properties-reader":"2.2.0","recursive-iterator":"3.3.0",semver:"7.3.8","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,$T)=>{"use strict";var j=$();j.initSync();var EL=require("fs-extra"),dL=require("semver"),bs=require("path"),{monotonicFactory:hL}=require("ulidx"),Jo=hL(),TL=require("util"),MT=require("child_process"),SL=TL.promisify(MT.exec),fL=MT.spawn,U=Lt(),P=f(),Di=p(),It=N(),Pi=rn(),mL=CT(),Ns=js(),{encode:Wo,decode:Xo}=require("msgpackr"),{isEmpty:$t}=Di,wT=us(),LT=12e10,{connect:AL,StorageType:UT,RetentionPolicy:DT,AckPolicy:Zo,DeliverPolicy:Cs,DiscardPolicy:RL,NatsConnection:kG,JetStreamManager:YG,JetStreamClient:$G,StringCodec:KG,JSONCodec:gL,createInbox:zo,StreamSource:WG,headers:NL,toJsMsg:PT,nuid:QG,JetStreamOptions:JG,ErrorCode:yT,nanos:XG}=require("nats"),{PACKAGE_ROOT:pL}=f(),OL=Yo(),HT=gL(),IL="clustering",bL=OL.engines[U.NATS_SERVER_NAME],CL=bs.join(pL,"dependencies"),Qo=bs.join(CL,`${process.platform}-${process.arch}`,U.NATS_BINARY_NAME),$o,Ko,ps,Os,Is,xe;$T.exports={runCommand:BT,checkNATSServerInstalled:yL,createConnection:jo,getConnection:Hi,getJetStreamManager:ys,getJetStream:vT,getNATSReferences:Ie,getServerList:wL,createLocalStream:e_,listStreams:GT,deleteLocalStream:LL,getServerConfig:Ms,listRemoteStreams:UL,viewStream:DL,viewStreamIterator:PL,publishToStream:HL,createWorkQueueStream:BL,addSourceToWorkStream:FT,request:vL,removeSourceFromWorkStream:VT,reloadNATS:t_,reloadNATSHub:GL,reloadNATSLeaf:qL,extractServerName:xT,requestErrorHandler:FL,updateWorkStream:xL,createLocalTableStream:kT,createTableStreams:VL,purgeTableStream:YT,purgeSchemaTableStreams:kL,getStreamInfo:YL,updateLocalStreams:KL,closeConnection:ML,getJsmServerName:ws,addNatsMsgHeader:qT};async function BT(e,t=void 0){let{stdout:r,stderr:s}=await SL(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(BT,"runCommand");async function yL(){try{await EL.access(Qo)}catch{return!1}let e=await BT(`${Qo} --version`,void 0),t=e.substring(e.lastIndexOf("v")+1,e.length);return dL.eq(t,bL)}a(yL,"checkNATSServerInstalled");async function jo(e,t,r,s=!0,n="127.0.0.1"){return AL({name:n,port:e,user:t,pass:r,maxReconnectAttempts:-1,waitOnFirstConnect:s,tls:{keyFile:j.get(P.CONFIG_PARAMS.CLUSTERING_TLS_PRIVATEKEY),certFile:j.get(P.CONFIG_PARAMS.CLUSTERING_TLS_CERTIFICATE),caFile:j.get(P.CONFIG_PARAMS.CLUSTERING_TLS_CERT_AUTH),rejectUnauthorized:!1}})}a(jo,"createConnection");async function ML(){xe&&(await xe.drain(),xe=void 0)}a(ML,"closeConnection");async function Hi(){if(!xe){let e=await wT.getClusterUser();if($t(e))throw new Error("Unable to get nats connection. Cluster user is undefined.");let t=j.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 vT(){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(vT,"getJetStream");async function Ie(){let e=xe||await Hi(),t=Os||await ys(),r=Is||await vT();return{connection:e,jsm:t,js:r}}a(Ie,"getNATSReferences");async function wL(e){let t=j.get(P.CONFIG_PARAMS.CLUSTERING_HUBSERVER_NETWORK_PORT),{sys_name:r,decrypt_hash:s}=await wT.getClusterUser(),n=await jo(t,r,s),i=zo(),o=n.subscribe(i),_=[],c,u=(async()=>{for await(let l of o){let E=HT.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(wL,"getServerList");async function e_(e,t){let{jsm:r}=await Ie(),s=j.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXAGE);s=s===null?0:s*1e9;let n=j.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXMSGS);n=n===null?-1:n;let i=j.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES);i=i===null?-1:i,await r.streams.add({name:e,storage:UT.File,retention:DT.Limits,subjects:t,discard:RL.Old,duplicate_window:LT,max_msgs:n,max_bytes:i,max_age:s})}a(e_,"createLocalStream");async function GT(){let{jsm:e}=await Ie(),t=await e.streams.list().next(),r=[];return t.forEach(s=>{r.push(s)}),r}a(GT,"listStreams");async function LL(e){let{jsm:t}=await Ie();await t.streams.delete(e)}a(LL,"deleteLocalStream");async function UL(e){let{connection:t}=await Ie(),r=[],s=zo(),n=t.subscribe(s),i=(async()=>{for await(let o of n)r.push(HT.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(UL,"listRemoteStreams");async function DL(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=PT(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(U.MSG_HEADERS.ORIGIN),d.nats_msg_id=E.headers.get(U.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(DL,"viewStream");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&&(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=PT(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(U.MSG_HEADERS.ORIGIN),d.nats_msg_id=l.headers.get(U.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(PL,"viewStreamIterator");async function HL(e,t,r,s){It.trace(`publishToStream called with subject: ${e}, stream: ${t}, entries:`,s),r=qT(s,r);let{js:n}=await Ie(),i=await ws(),o=`${e}.${i}`;try{It.trace(`publishToStream publishing to subject: ${o}, data:`,s),await n.publish(o,Wo(s),{headers:r})}catch(_){if(_.code&&_.code.toString()==="503")It.trace(`publishToStream creating stream: ${t}`),await e_(t,[o]),await n.publish(o,Wo(s),{headers:r});else throw _}}a(HL,"publishToStream");function qT(e,t){t===void 0&&(t=NL());let r=j.get(P.CONFIG_PARAMS.CLUSTERING_NODENAME);if(!t.has(U.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(U.MSG_HEADERS.NATS_MSG_ID,i)}return t.has(U.MSG_HEADERS.ORIGIN)||t.append(U.MSG_HEADERS.ORIGIN,r),t}a(qT,"addNatsMsgHeader");function Ms(e){e=e.toLowerCase();let t=bs.join(j.get(P.CONFIG_PARAMS.ROOTPATH),IL);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)+U.SERVER_SUFFIX.HUB,config_file:U.NATS_CONFIG_FILES.HUB_SERVER,pid_file_path:bs.join(t,U.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)+U.SERVER_SUFFIX.LEAF,config_file:U.NATS_CONFIG_FILES.LEAF_SERVER,domain:Ns.getConfigFromFile(P.CONFIG_PARAMS.CLUSTERING_NODENAME)+U.SERVER_SUFFIX.LEAF,pid_file_path:bs.join(t,U.PID_FILES.LEAF),hdb_nats_path:t}),$o;It.error(`Unable to get Nats server config. Unrecognized process: ${e}`)}a(Ms,"getServerConfig");async function BL(e){let{jsm:t}=await Ie(),r=await ws();try{await t.streams.add({name:e.stream_name,storage:UT.File,retention:DT.Workqueue,duplicate_window:LT,subjects:[`${U.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(BL,"createWorkQueueStream");async function FT(e,t,r){let{jsm:s}=await Ie(),n=await s.streams.info(t),i=xT(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:`${U.SUBJECT_PREFIXES.TXN}.>`};l||(A.external={api:`$JS.${e}.API`,deliver:""}),n.config.sources.push(A),await s.streams.update(t,n.config)}a(FT,"addSourceToWorkStream");function xT(e){return e.split(".")[1]}a(xT,"extractServerName");async function VT(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(VT,"removeSourceFromWorkStream");async function vL(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(vL,"request");function t_(e){return new Promise(async(t,r)=>{let s=fL(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 GL(){let{pid_file_path:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_HUB);await t_(e)}a(GL,"reloadNATSHub");async function qL(){let{pid_file_path:e}=Ms(P.PROCESS_DESCRIPTORS.CLUSTERING_LEAF);await t_(e)}a(qL,"reloadNATSLeaf");function FL(e,t,r){let s;switch(e.code){case yT.NoResponders:s=`Unable to ${t}, node '${r}' is not listening.`;break;case yT.Timeout:s=`Unable to ${t}, node '${r}' is listening but did not respond.`;break;default:s=e.message;break}return s}a(FL,"requestErrorHandler");async function xL(e,t){let r=t+U.SERVER_SUFFIX.LEAF;await mL.writeTransaction(P.SYSTEM_SCHEMA_NAME,P.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,async()=>{e.subscribe===!0?await FT(r,U.WORK_QUEUE_CONSUMER_NAMES.stream_name,e):await VT(r,U.WORK_QUEUE_CONSUMER_NAMES.stream_name,e)})}a(xL,"updateWorkStream");async function kT(e,t){let r=Pi.createNatsTableStreamName(e,t),s=await ws(),n=$L(e,t,s);await e_(r,[n])}a(kT,"createLocalTableStream");async function VL(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(VL,"createTableStreams");async function YT(e,t){if(j.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(YT,"purgeTableStream");async function kL(e,t){if(j.get(P.CONFIG_PARAMS.CLUSTERING_ENABLED))for(let r=0,s=t.length;r<s;r++)await YT(e,t[r])}a(kL,"purgeSchemaTableStreams");async function YL(e){return(await ys()).streams.info(e)}a(YL,"getStreamInfo");function $L(e,t,r){return`${U.SUBJECT_PREFIXES.TXN}.${e}.${t}.${r}`}a($L,"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 KL(){let e=await ys(),t=await ws(),r=await GT();for(let s of r){let n=s.config,i=n.subjects[0];if(!i)continue;let o=WL(s),_=i.split(".");if(!(_[_.length-1]===t&&!o)){if(n.name===U.SCHEMA_QUEUE_CONSUMER_NAMES.stream_name){let u=`${U.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===U.WORK_QUEUE_CONSUMER_NAMES.stream_name){let u=`${U.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(U.WORK_QUEUE_CONSUMER_NAMES.stream_name,U.WORK_QUEUE_CONSUMER_NAMES.durable_name,{deliver_subject:`${U.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(KL,"updateLocalStreams");function WL(e){let{config:t}=e,r=!1;if(t.name===U.SCHEMA_QUEUE_CONSUMER_NAMES.stream_name||t.name===U.WORK_QUEUE_CONSUMER_NAMES.stream_name)return r;let s=j.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXAGE);s=s===null?0:s*1e9;let n=j.get(P.CONFIG_PARAMS.CLUSTERING_LEAFSERVER_STREAMS_MAXBYTES);n=n===null?-1:n;let i=j.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(WL,"updateStreamLimits")});var XT=T((jG,JT)=>{"use strict";var QT=require("joi"),{string:Us,boolean:KT,array:QL}=QT.types(),WT=f(),JL=Pe();JT.exports=XL;function XL(e){let t=QT.object({operation:Us.valid(WT.OPERATIONS_ENUM.ADD_NODE,WT.OPERATIONS_ENUM.UPDATE_NODE).required(),node_name:Us.required(),subscriptions:QL.items({schema:Us.required(),table:Us.required(),hash_attribute:Us.optional(),subscribe:KT.required(),publish:KT.required()}).min(1).required()});return JL.validateBySchema(e,t)}a(XL,"updateRemoteSourceValidator")});var zT=T((tq,ZT)=>{var ZL=Pe(),zL={user:{presence:!0},schema:{presence:!0},table:{presence:!0},operation:{presence:!0}};ZT.exports=function(e){return ZL.validateObject(e,zL)}});var r_=T((rq,jT)=>{"use strict";var jL=f().OPERATIONS_ENUM,Bi=class{constructor(t,r,s,n=void 0){this.operation=jL.UPDATE,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a(Bi,"UpdateObject");jT.exports=Bi});var tS=T((nq,eS)=>{"use strict";var eU={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");eS.exports={JWTTokens:vi,TOKEN_TYPE_ENUM:eU,JWTRSAKeys:Gi}});var aS=T((aq,iS)=>{"use strict";var Ps=require("jsonwebtoken"),s_=require("fs-extra"),n_=p(),Ue=f(),{handleHDBError:Ee,hdb_errors:tU}=V(),{HTTP_STATUS_CODES:de,AUTHENTICATION_ERROR_MSGS:he}=tU,Ds=N(),rS=Dn(),o_=us(),rU=_s().update,sU=r_(),nU=ls(),{UserEventMsg:iU}=Vt(),bt=$();bt.initSync();var i_=require("path"),{JWTTokens:aU,JWTRSAKeys:oU,TOKEN_TYPE_ENUM:qi}=tS(),_U=bt.get(Ue.HDB_SETTINGS_NAMES.OPERATION_TOKEN_TIMEOUT_KEY)?bt.get(Ue.HDB_SETTINGS_NAMES.OPERATION_TOKEN_TIMEOUT_KEY):"1d",cU=bt.get(Ue.HDB_SETTINGS_NAMES.REFRESH_TOKEN_TIMEOUT_KEY)?bt.get(Ue.HDB_SETTINGS_NAMES.REFRESH_TOKEN_TIMEOUT_KEY):"30d",Fi="RS256",a_;iS.exports={createTokens:uU,validateOperationToken:EU,refreshOperationToken:lU,validateRefreshToken:nS};async function uU(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 sS(i,r.private_key,r.passphrase),_=await Ps.sign(i,{key:r.private_key,passphrase:r.passphrase},{expiresIn:cU,algorithm:Fi,subject:qi.REFRESH}),c=rS.hash(_),u=new sU(Ue.SYSTEM_SCHEMA_NAME,Ue.SYSTEM_TABLE_NAMES.USER_TABLE_NAME,[{username:e.username,refresh_token:c}]),l,E;try{l=await rU(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 nU.signalUserChange(new iU(process.pid)),new aU(o,_)}a(uU,"createTokens");async function sS(e,t,r){return await Ps.sign(e,{key:t,passphrase:r},{expiresIn:_U,algorithm:Fi,subject:qi.OPERATION})}a(sS,"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 oU(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 lU(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 nS(e.refresh_token);let t=await xi(),r=await Ps.decode(e.refresh_token);return{operation_token:await sS({username:r.username,super_user:r.super_user,cluster_user:r.cluster_user},t.private_key,t.passphrase)}}a(lU,"refreshOperationToken");async function EU(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(EU,"validateOperationToken");async function nS(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(!rS.validate(t.refresh_token,e))throw Ee(new Error,he.INVALID_TOKEN,de.UNAUTHORIZED);return t}a(nS,"validateRefreshToken")});var uS=T((cq,cS)=>{"use strict";var dU=zT(),gr=require("passport"),hU=require("passport-local").Strategy,TU=require("passport-http").BasicStrategy,SU=require("util"),fU=us(),_S=SU.callbackify(fU.findAndValidateUser),_q=be(),mU=f(),oS=aS();gr.use(new hU(function(e,t,r){_S(e,t,r)}));gr.use(new TU(function(e,t,r){_S(e,t,r)}));gr.serializeUser(function(e,t){t(null,e)});gr.deserializeUser(function(e,t){t(null,e)});function AU(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===mU.OPERATIONS_ENUM.REFRESH_OPERATION_TOKEN?oS.validateRefreshToken(n).then(o=>{e.body.refresh_token=n,r(null,o)}).catch(o=>{r(o)}):oS.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(AU,"authorize");function RU(e,t){let r=dU(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(RU,"checkPermissions");cS.exports={authorize:AU,checkPermissions:RU}});var Yi=T((lq,lS)=>{"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");lS.exports={Node:Vi,NodeSubscription:ki}});var dS=T((dq,ES)=>{"use strict";var gU=f().OPERATIONS_ENUM,$i=class{constructor(t,r,s,n=void 0){this.operation=gU.UPSERT,this.schema=t,this.table=r,this.records=s,this.__origin=n}};a($i,"UpsertObject");ES.exports=$i});var TS=T((Tq,hS)=>{"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");hS.exports={RemotePayloadObject:Ki,RemotePayloadSubscription:Wi}});var fS=T((fq,SS)=>{"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");SS.exports=Qi});var AS=T((Aq,mS)=>{"use strict";var NU=fS(),pU=ee(),Nr=B(),OU=N(),{getSchemaPath:IU,getTransactionAuditStorePath:bU}=q();mS.exports=CU;async function CU(e){let t=new NU;try{let r=IU(e.schema,e.name),s=await Nr.openEnvironment(r,e.name),n=Nr.statDBI(s,e.hash_attribute),i=bU(e.schema,e.name),o=await Nr.openEnvironment(i,e.name,!0),_=Nr.statDBI(o,pU.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){OU.warn(`unable to stat table dbi due to ${r}`)}return t}a(CU,"lmdbGetTableSize")});var gS=T((gq,RS)=>{"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");RS.exports=Ji});var IS=T((pq,OS)=>{"use strict";var ae=require("systeminformation"),Kt=N(),yU=f(),MU=AS(),pS=lr(),{getThreadInfo:NS}=vn(),wU=$();wU.initSync();var LU=gS(),{openEnvironment:UU}=B(),{getSchemaPath:DU}=q(),Xi;OS.exports={getHDBProcessInfo:l_,getNetworkInfo:d_,getDiskInfo:E_,getMemoryInfo:u_,getCPUInfo:c_,getTimeInfo:__,getSystemInformation:h_,systemInformation:PU,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:cP,raw_load_system:uP,raw_load_user:lP,..._f}=F;x.cpus.push(_f)}),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(yU.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 pS.describeAll();for(let r of Object.values(t))for(let s of Object.values(r))e.push(await MU(s));return e}a(T_,"getTableSize");async function S_(){let e=await pS.describeAll(),t={};for(let r in e){let s=t[r]={};for(let n in e[r])try{let i=DU(i,n),_=(await UU(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 PU(e){let t=new LU;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 NS(),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 NS();break;default:break}return t}a(PU,"systemInformation")});var CS=T((Cq,bS)=>{"use strict";var Iq=require("fs-extra"),bq=N();bS.exports={version:HU,printVersion:vU,nodeVersion:BU};var Ct=Yo();function HU(){if(Ct)return Ct.version}a(HU,"version");function BU(){if(Ct&&Ct.engines&&Ct.engines["preferred-node"])return Ct.engines["preferred-node"]}a(BU,"nodeVersion");function vU(){Ct&&console.log(`HarperDB Version ${Ct.version}`)}a(vU,"printVersion")});var Zi=T((Lq,LS)=>{"use strict";var GU=_s(),f_=p(),m_=require("util"),Wt=f(),yS=$();yS.initSync();var qU=uS(),MS=Vn(),{Node:Mq,NodeSubscription:wq}=Yi(),FU=fi(),xU=dS(),{RemotePayloadObject:VU,RemotePayloadSubscription:kU}=TS(),{handleHDBError:YU,hdb_errors:$U}=V(),{HTTP_STATUS_CODES:KU,HDB_ERROR_MSGS:WU}=$U,QU=at(),JU=IS(),XU=CS(),ZU=m_.promisify(qU.authorize),zU=m_.promisify(MS.searchByHash),jU=m_.promisify(MS.searchByValue);LS.exports={authHeaderToUser:eD,isEmpty:tD,getNodeRecord:rD,upsertNodeRecord:sD,buildNodePayloads:nD,checkClusteringEnabled:iD,getAllNodeRecords:aD,getSystemInfo:oD,reverseSubscription:wS};async function eD(e){let t={headers:{authorization:e.hdb_auth_header}};return e.hdb_user=await ZU(t,null),e}a(eD,"authHeaderToUser");function tD(e){return e==null}a(tD,"isEmpty");async function rD(e){let t=new FU(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[e],["*"]);return zU(t)}a(rD,"getNodeRecord");async function sD(e){let t=new xU(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[e]);return GU.upsert(t)}a(sD,"upsertNodeRecord");function wS(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(wS,"reverseSubscription");function nD(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}=wS(_),d=new kU(c,u,l,h,E,_.start_time);n.push(d)}return new VU(r,t,n,s)}a(nD,"buildNodePayloads");function iD(){if(!yS.get(Wt.CONFIG_PARAMS.CLUSTERING_ENABLED))throw YU(new Error,WU.CLUSTERING_NOT_ENABLED,KU.BAD_REQUEST,void 0,void 0,!0)}a(iD,"checkClusteringEnabled");async function aD(){let e=new QU(Wt.SYSTEM_SCHEMA_NAME,Wt.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,"name","*",void 0,["*"]);return Array.from(await jU(e))}a(aD,"getAllNodeRecords");async function oD(){let e=await JU.getSystemInformation();return{hdb_version:XU.version(),node_version:e.node_version,platform:e.platform}}a(oD,"getSystemInfo")});var PS=T((Dq,DS)=>{"use strict";var R_=lr(),{hdb_errors:A_}=V();DS.exports={checkSchemaExists:US,checkSchemaTableExists:_D,schema_describe:R_};async function US(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(US,"checkSchemaExists");async function _D(e,t){let r=await US(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(_D,"checkSchemaTableExists")});var qS=T((Bq,GS)=>{"use strict";var pr=Nn(),Qt=PS(),cD=N(),uD=require("uuid").v4,Hq=require("clone"),Or=ls(),Jt=f(),lD=require("util"),Xt=mt(),{handleHDBError:Te,hdb_errors:ED}=V(),{HDB_ERROR_MSGS:zi,HTTP_STATUS_CODES:Se}=ED,{SchemaEventMsg:Ir}=Vt(),HS=Ls();GS.exports={createSchema:dD,createSchemaStructure:BS,createTable:hD,createTableStructure:vS,createAttribute:AD,dropSchema:TD,dropTable:SD,dropAttribute:fD};async function dD(e){try{let t=await BS(e);return Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema)),t}catch(t){throw t}}a(dD,"createSchema");async function BS(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(BS,"createSchemaStructure");async function hD(e){let t=await vS(e);return Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table)),t}a(hD,"createTable");async function vS(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:uD(),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(vS,"createTableStructure");async function TD(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 HS.purgeSchemaTableStreams(e.schema,n),`successfully deleted schema '${e.schema}'`}a(TD,"dropSchema");async function SD(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 HS.purgeTableStream(e.schema,e.table),`successfully deleted table '${e.schema}.${e.table}'`}a(SD,"dropTable");async function fD(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),mD(e),Or.signalSchemaChange(new Ir(process.pid,e.operation,e.schema,e.table,e.attribute)),`successfully deleted attribute '${e.attribute}'`}catch(s){throw cD.error(`Got an error deleting attribute ${lD.inspect(e)}.`),s}}a(fD,"dropAttribute");function mD(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(mD,"dropAttributeFromGlobal");async function AD(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(AD,"createAttribute")});var Hs=T((Gq,FS)=>{"use strict";var ji=class{constructor(t,r,s=void 0){this.status=t,this.message=r,this.system_info=s}};a(ji,"UpdateRemoteResponseObject");FS.exports=ji});var $S=T((Fq,YS)=>{"use strict";var RD=XT(),Zt=N(),g_=Lt(),gD=f(),N_=Zi(),xS=Ls(),VS=qS(),ND=Po(),{Node:pD,NodeSubscription:kS}=Yi(),p_=Hs(),O_=p(),OD=$(),{cloneDeep:ID}=require("lodash");YS.exports=bD;async function bD(e){try{let t=RD(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=ID(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 VS.createSchema({operation:"create_schema",schema:h})),!O_.doesTableExist(h,d)){Zt.trace(`updateRemoteSource creating table: ${d} in schema: ${h}`);let A=new ND(h,d,E.hash_attribute);await VS.createTable(A),Zt.trace(`Creating local stream for ${h}.${d}`),await xS.createLocalTableStream(h,d)}if(await xS.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 kS(h,d,E.publish,E.subscribe))}else i.push(new kS(h,d,E.publish,E.subscribe))}_||(o=new pD(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 ${OD.get(gD.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(bD,"updateRemoteSource")});var JS=T((Vq,QS)=>{"use strict";var WS=require("joi"),{string:KS}=WS.types(),CD=f(),yD=Pe();QS.exports=MD;function MD(e){let t=WS.object({operation:KS.valid(CD.OPERATIONS_ENUM.REMOVE_NODE).required(),node_name:KS.required()});return yD.validateBySchema(e,t)}a(MD,"removeRemoteSourceValidator")});var ZS=T((Yq,XS)=>{"use strict";var wD=JS(),ea=N(),ta=Lt(),I_=f(),LD=Zi(),UD=p(),DD=Ls(),PD=$(),ra=Hs(),{NodeSubscription:HD}=Yi(),BD=ms(),vD=fo(),GD=PD.get(I_.CONFIG_PARAMS.CLUSTERING_NODENAME);XS.exports=qD;async function qD(e){try{let t=wD(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 LD.getNodeRecord(r);if(UD.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 HD(_.schema,_.table,!1,!1);await DD.updateWorkStream(c,r)}let n=new BD(I_.SYSTEM_SCHEMA_NAME,I_.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[r]);return await vD.deleteRecord(n),new ra(ta.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,`Node ${GD} 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(qD,"removeRemoteSource")});var rf=T((Kq,tf)=>{"use strict";var sa=N(),na=f(),zS=Lt(),jS=$(),FD=p(),ef=Hs(),xD=Zi(),VD=r_(),kD=_s();tf.exports=YD;async function YD(e){try{sa.trace("getRemoteSourceConfig called");let t=process.uptime()*1e3,r=FD.ms_to_time(t),s=new $D(jS.get(na.CONFIG_PARAMS.CLUSTERING_HUBSERVER_CLUSTER_NETWORK_PORT),jS.get(na.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_PORT),r,await xD.getSystemInfo());try{let n={name:e.node_name,system_info:e.system_info},i=new VD(na.SYSTEM_SCHEMA_NAME,na.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME,[n]);await kD.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 ef(zS.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,s)}catch(t){sa.error(t);let r=t.message?t.message:t;return new ef(zS.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,r)}}a(YD,"getRemoteSourceConfig");function $D(e,t,r,s){this.uptime=r,this.ports={clustering:e,operations_api:t},this.system_info=s}a($D,"ConfigResponseObject")});var of=T((Qq,af)=>{"use strict";var sf=$();sf.initSync();var nf=Ls(),Cr=N(),br=f(),b_=Lt(),KD=$S(),WD=ZS(),QD=rf(),JD=Hs(),{encode:XD,decode:ZD}=require("msgpackr"),zD=os(),jD=lr(),eP=require("util"),tP=f(),{isMainThread:rP,parentPort:sP}=require("worker_threads");vn();var nP=eP.promisify(zD.setSchemaDataToGlobal),C_=sf.get(br.CONFIG_PARAMS.CLUSTERING_NODENAME);af.exports=iP;async function iP(){try{Cr.notify("Starting reply service."),await nP();let e=await nf.getConnection(),t=`${C_}.__request__`,r=e.subscribe(t,{queue:C_});await aP(r)}catch(e){Cr.error(e)}}a(iP,"initialize");async function aP(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 KD(r);break;case br.OPERATIONS_ENUM.REMOVE_NODE:s=await WD(r);break;case br.OPERATIONS_ENUM.CLUSTER_STATUS:s=await QD(r);break;case br.OPERATIONS_ENUM.DESCRIBE_ALL:s=await oP();break;default:let n=`node '${C_}' reply service received unrecognized request operation`;Cr.error(n),s=new JD(b_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,n)}Cr.trace(s),t.respond(XD(s))}}a(aP,"handleRequest");async function oP(){try{return{status:b_.UPDATE_REMOTE_RESPONSE_STATUSES.SUCCESS,message:await jD.describeAll()}}catch(e){return Cr.error(e),{status:b_.UPDATE_REMOTE_RESPONSE_STATUSES.ERROR,message:e.message}}}a(oP,"getRemoteDescribeAll");rP||sP.on("message",async e=>{let{type:t}=e;t===tP.ITC_EVENT_TYPES.SHUTDOWN&&nf.closeConnection()})});var _P=of();(async()=>{try{await _P()}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)}})();
|