refactor: remove inline conf comments

This commit is contained in:
Anton Voylenko 2025-10-02 11:43:40 +03:00
commit 4c2745fcc3
4 changed files with 54 additions and 36 deletions

View file

@ -1,31 +1,54 @@
## Application ##
PORT=3000 # OPTIONAL, DEFAULT 3000
API_KEY=SET_YOUR_API_KEY_HERE # OPTIONAL, IF SET, ALL REQUESTS MUST INCLUDE THIS IN THE 'x-api-key' HEADER
BASE_WEBHOOK_URL=http://localhost:3000/localCallbackExample # MANDATORY
ENABLE_LOCAL_CALLBACK_EXAMPLE=TRUE # OPTIONAL, DISABLE FOR PRODUCTION
RATE_LIMIT_MAX=1000 # OPTIONAL, THE MAXIMUM NUMBER OF CONNECTIONS TO ALLOW PER TIME FRAME
RATE_LIMIT_WINDOW_MS=1000 # OPTIONAL, TIME FRAME FOR WHICH REQUESTS ARE CHECKED IN MS
# OPTIONAL, DEFAULT 3000
PORT=3000
# OPTIONAL, IF SET, ALL REQUESTS MUST INCLUDE THIS IN THE 'x-api-key' HEADER
API_KEY=SET_YOUR_API_KEY_HERE
# MANDATORY
BASE_WEBHOOK_URL=http://localhost:3000/localCallbackExample
# OPTIONAL, DISABLE FOR PRODUCTION
ENABLE_LOCAL_CALLBACK_EXAMPLE=TRUE
# OPTIONAL, THE MAXIMUM NUMBER OF CONNECTIONS TO ALLOW PER TIME FRAME
RATE_LIMIT_MAX=1000
# OPTIONAL, TIME FRAME FOR WHICH REQUESTS ARE CHECKED IN MS
RATE_LIMIT_WINDOW_MS=1000
## Client ##
MAX_ATTACHMENT_SIZE=10000000 # IF REACHED, MEDIA ATTACHMENT BODY WILL BE NULL
SET_MESSAGES_AS_SEEN=TRUE # WILL MARK THE MESSAGES AS READ AUTOMATICALLY
# IF REACHED, MEDIA ATTACHMENT BODY WILL BE NULL
MAX_ATTACHMENT_SIZE=10000000
# WILL MARK THE MESSAGES AS READ AUTOMATICALLY
SET_MESSAGES_AS_SEEN=TRUE
# PREVENT SENDING CERTAIN TYPES OF CALLBACKS BACK TO THE WEBHOOK
# ALL CALLBACKS: auth_failure|authenticated|call|change_state|disconnected|group_join|group_leave|group_update|loading_screen|media_uploaded|message|message_ack|message_create|message_reaction|message_revoke_everyone|qr|ready|contact_changed|unread_count|message_edit|message_ciphertext
DISABLED_CALLBACKS=message_ack|message_reaction|unread_count|message_edit|message_ciphertext # PREVENT SENDING CERTAIN TYPES OF CALLBACKS BACK TO THE WEBHOOK
WEB_VERSION='2.2328.5' # OPTIONAL, THE VERSION OF WHATSAPP WEB TO USE
WEB_VERSION_CACHE_TYPE=none # OPTIONAL, DETERMINES WHERE TO GET THE WHATSAPP WEB VERSION(local, remote or none), DEFAULT 'none'
RECOVER_SESSIONS=TRUE # OPTIONAL, SHOULD WE RECOVER THE SESSION IN CASE OF PAGE FAILURES
CHROME_BIN= # OPTIONAL, PATH TO CHROME BINARY
HEADLESS=TRUE # OPTIONAL, RUN CHROME IN HEADLESS MODE
RELEASE_BROWSER_LOCK=TRUE # OPTIONAL, RELEASE THE BROWSER LOCK ON SESSION INITIALIZATION
LOG_LEVEL=info # OPTIONAL, SET THE LOG LEVEL
ENABLE_WEBHOOK=TRUE # OPTIONAL, ENABLE WEBHOOK FOR REALTIME UPDATES(TRUE BY DEFAULT)
ENABLE_WEBSOCKET=FALSE # OPTIONAL, ENABLE WEBSOCKET FOR REALTIME UPDATES(FALSE BY DEFAULT)
AUTO_START_SESSIONS=TRUE # OPTIONAL, AUTO START SESSIONS ON SERVER STARTUP(TRUE BY DEFAULT)
DISABLED_CALLBACKS=message_ack|message_reaction|unread_count|message_edit|message_ciphertext
# OPTIONAL, THE VERSION OF WHATSAPP WEB TO USE
WEB_VERSION='2.2328.5'
# OPTIONAL, DETERMINES WHERE TO GET THE WHATSAPP WEB VERSION(local, remote or none), DEFAULT 'none'
WEB_VERSION_CACHE_TYPE=none
# OPTIONAL, SHOULD WE RECOVER THE SESSION IN CASE OF PAGE FAILURES
RECOVER_SESSIONS=TRUE
# OPTIONAL, PATH TO CHROME BINARY
CHROME_BIN=
# OPTIONAL, RUN CHROME IN HEADLESS MODE
HEADLESS=TRUE
# OPTIONAL, RELEASE THE BROWSER LOCK ON SESSION INITIALIZATION
RELEASE_BROWSER_LOCK=TRUE
# OPTIONAL, SET THE LOG LEVEL
LOG_LEVEL=info
# OPTIONAL, ENABLE WEBHOOK FOR REALTIME UPDATES(TRUE BY DEFAULT)
ENABLE_WEBHOOK=TRUE
# OPTIONAL, ENABLE WEBSOCKET FOR REALTIME UPDATES(FALSE BY DEFAULT)
ENABLE_WEBSOCKET=FALSE
# OPTIONAL, AUTO START SESSIONS ON SERVER STARTUP(TRUE BY DEFAULT)
AUTO_START_SESSIONS=TRUE
## Session File Storage ##
SESSIONS_PATH=./sessions # OPTIONAL
ENABLE_SWAGGER_ENDPOINT=TRUE # OPTIONAL, ENABLE SWAGGER ENDPOINT FOR API DOCUMENTATION
# OPTIONAL
SESSIONS_PATH=./sessions
# OPTIONAL, ENABLE SWAGGER ENDPOINT FOR API DOCUMENTATION
ENABLE_SWAGGER_ENDPOINT=TRUE
## Reverse Proxy / Load Balancer ##
BASE_PATH= # OPTIONAL, BASE PATH FOR MOUNTING ROUTES (e.g., /api/v1/whatsapp)
TRUST_PROXY=FALSE # OPTIONAL, ENABLE WHEN BEHIND REVERSE PROXY/LOAD BALANCER
# OPTIONAL, BASE PATH FOR MOUNTING ROUTES (e.g., /api/v1/whatsapp)
BASE_PATH=
# OPTIONAL, ENABLE WHEN BEHIND REVERSE PROXY/LOAD BALANCER
TRUST_PROXY=FALSE

View file

@ -1,23 +1,17 @@
// Load environment variables first
require('dotenv').config({ path: process.env.ENV_PATH || '.env' })
const app = require('./src/app')
const { baseWebhookURL, enableWebHook, enableWebSocket, autoStartSessions } = require('./src/config')
const { servicePort, baseWebhookURL, enableWebHook, enableWebSocket, autoStartSessions } = require('./src/config')
const { logger } = require('./src/logger')
const { handleUpgrade } = require('./src/websocket')
const { restoreSessions } = require('./src/sessions')
// Start the server
const port = process.env.PORT || 3000
// Check if BASE_WEBHOOK_URL environment variable is available when WebHook is enabled
if (!baseWebhookURL && enableWebHook) {
logger.error('BASE_WEBHOOK_URL environment variable is not set. Exiting...')
process.exit(1) // Terminate the application with an error code
}
const server = app.listen(port, () => {
logger.info(`Server running on port ${port}`)
const server = app.listen(servicePort, () => {
logger.info(`Server running on port ${servicePort}`)
logger.debug({ configuration: require('./src/config') }, 'Service configuration')
if (autoStartSessions) {
logger.info('Starting all sessions')

View file

@ -17,7 +17,6 @@ app.use(express.json({ limit: maxAttachmentSize + 1000000 }))
app.use(express.urlencoded({ limit: maxAttachmentSize + 1000000, extended: true }))
// Mount routes with configurable base path
const mountPath = basePath || '/'
app.use(mountPath, routes)
app.use(basePath, routes)
module.exports = app

View file

@ -1,7 +1,8 @@
// Load environment variables from .env file
require('dotenv').config()
require('dotenv').config({ path: process.env.ENV_PATH || '.env' })
// setup global const
const servicePort = process.env.PORT || 3000
const sessionFolderPath = process.env.SESSIONS_PATH || './sessions'
const enableLocalCallbackExample = (process.env.ENABLE_LOCAL_CALLBACK_EXAMPLE || '').toLowerCase() === 'true'
const globalApiKey = process.env.API_KEY
@ -22,10 +23,11 @@ const logLevel = process.env.LOG_LEVEL || 'info'
const enableWebHook = process.env.ENABLE_WEBHOOK ? (process.env.ENABLE_WEBHOOK).toLowerCase() === 'true' : true
const enableWebSocket = process.env.ENABLE_WEBSOCKET ? (process.env.ENABLE_WEBSOCKET).toLowerCase() === 'true' : false
const autoStartSessions = process.env.AUTO_START_SESSIONS ? (process.env.AUTO_START_SESSIONS).toLowerCase() === 'true' : true
const basePath = process.env.BASE_PATH || ''
const basePath = process.env.BASE_PATH || '/'
const trustProxy = process.env.TRUST_PROXY ? (process.env.TRUST_PROXY).toLowerCase() === 'true' : false
module.exports = {
servicePort,
sessionFolderPath,
enableLocalCallbackExample,
globalApiKey,