@@ -54,19 +54,19 @@ export const WEBHOOK_FORWARD_BUSINESS_ACCOUNT_ID = process.env.WEBHOOK_FORWARD_B
5454export const WEBHOOK_FORWARD_TOKEN = process . env . WEBHOOK_FORWARD_TOKEN || ''
5555export const WEBHOOK_FORWARD_VERSION = process . env . WEBHOOK_FORWARD_VERSION || 'v17.0'
5656export const WEBHOOK_FORWARD_URL = process . env . WEBHOOK_FORWARD_URL || 'https://graph.facebook.com'
57- export const WEBHOOK_FORWARD_TIMEOUT_MS = parseInt ( process . env . WEBHOOK_TIMEOUT_MS || '6000' )
57+ export const WEBHOOK_FORWARD_TIMEOUT_MS = parseInt ( process . env . WEBHOOK_TIMEOUT_MS || '6000' )
5858
5959// comunication
6060export const UNOAPI_URL = process . env . UNOAPI_URL || 'http://localhost:9876'
6161export const WEBHOOK_URL_ABSOLUTE = process . env . WEBHOOK_URL_ABSOLUTE || ''
6262export const WEBHOOK_URL = process . env . WEBHOOK_URL || 'http://localhost:9876/webhooks/fake'
6363export const WEBHOOK_HEADER = process . env . WEBHOOK_HEADER || 'Authorization'
6464export const WEBHOOK_TOKEN = process . env . WEBHOOK_TOKEN || UNOAPI_AUTH_TOKEN || '123abc'
65- export const WEBHOOK_TIMEOUT_MS = parseInt ( process . env . WEBHOOK_TIMEOUT_MS || '6000' )
66- export const FETCH_TIMEOUT_MS = parseInt ( process . env . FETCH_TIMEOUT_MS || '6000' )
65+ export const WEBHOOK_TIMEOUT_MS = parseInt ( process . env . WEBHOOK_TIMEOUT_MS || '6000' )
66+ export const FETCH_TIMEOUT_MS = parseInt ( process . env . FETCH_TIMEOUT_MS || '6000' )
6767export const CONNECTION_TYPE = process . env . CONNECTION_TYPE || 'qrcode'
6868
69- export const CONSUMER_TIMEOUT_MS = parseInt ( process . env . CONSUMER_TIMEOUT_MS || '15000' )
69+ export const CONSUMER_TIMEOUT_MS = parseInt ( process . env . CONSUMER_TIMEOUT_MS || '15000' )
7070export const WEBHOOK_SEND_NEW_MESSAGES = process . env . WEBHOOK_SEND_NEW_MESSAGES == _undefined ? false : process . env . WEBHOOK_SEND_NEW_MESSAGES == 'true'
7171export const WEBHOOK_SEND_INCOMING_MESSAGES = process . env . WEBHOOK_SEND_INCOMING_MESSAGES == _undefined ? true : process . env . WEBHOOK_SEND_INCOMING_MESSAGES == 'true'
7272export const WEBHOOK_SEND_GROUP_MESSAGES = process . env . WEBHOOK_SEND_GROUP_MESSAGES == _undefined ? true : process . env . WEBHOOK_SEND_GROUP_MESSAGES == 'true'
@@ -89,13 +89,13 @@ export const WEBHOOK_SESSION = process.env.WEBHOOK_SESSION || ''
8989// Webhook circuit breaker (fail fast when endpoints are offline)
9090export const WEBHOOK_CB_ENABLED =
9191 process . env . WEBHOOK_CB_ENABLED == _undefined ? true : process . env . WEBHOOK_CB_ENABLED == 'true'
92- export const WEBHOOK_CB_FAILURE_THRESHOLD = parseInt ( process . env . WEBHOOK_CB_FAILURE_THRESHOLD || '1' )
93- export const WEBHOOK_CB_OPEN_MS = parseInt ( process . env . WEBHOOK_CB_OPEN_MS || '120000' )
94- export const WEBHOOK_CB_FAILURE_TTL_MS = parseInt ( process . env . WEBHOOK_CB_FAILURE_TTL_MS || '300000' )
95- export const WEBHOOK_CB_REQUEUE_DELAY_MS = parseInt ( process . env . WEBHOOK_CB_REQUEUE_DELAY_MS || '300000' )
96- export const WEBHOOK_CB_LOCAL_CLEANUP_INTERVAL_MS = parseInt ( process . env . WEBHOOK_CB_LOCAL_CLEANUP_INTERVAL_MS || '3600000' )
97- export const CONTACT_SYNC_ENABLED =
98- process . env . CONTACT_SYNC_ENABLED == _undefined ? false : process . env . CONTACT_SYNC_ENABLED == 'true'
92+ export const WEBHOOK_CB_FAILURE_THRESHOLD = parseInt ( process . env . WEBHOOK_CB_FAILURE_THRESHOLD || '1' )
93+ export const WEBHOOK_CB_OPEN_MS = parseInt ( process . env . WEBHOOK_CB_OPEN_MS || '120000' )
94+ export const WEBHOOK_CB_FAILURE_TTL_MS = parseInt ( process . env . WEBHOOK_CB_FAILURE_TTL_MS || '300000' )
95+ export const WEBHOOK_CB_REQUEUE_DELAY_MS = parseInt ( process . env . WEBHOOK_CB_REQUEUE_DELAY_MS || '300000' )
96+ export const WEBHOOK_CB_LOCAL_CLEANUP_INTERVAL_MS = parseInt ( process . env . WEBHOOK_CB_LOCAL_CLEANUP_INTERVAL_MS || '3600000' )
97+ export const CONTACT_SYNC_ENABLED =
98+ process . env . CONTACT_SYNC_ENABLED == _undefined ? false : process . env . CONTACT_SYNC_ENABLED == 'true'
9999export const CONTACT_SYNC_INTERVAL_MS = parseInt ( process . env . CONTACT_SYNC_INTERVAL_MS || `${ 8 * 60 * 60 * 1000 } ` )
100100export const CONTACT_SYNC_SCAN_COUNT = parseInt ( process . env . CONTACT_SYNC_SCAN_COUNT || '500' )
101101export const CONTACT_SYNC_PENDING_TTL_SEC = parseInt ( process . env . CONTACT_SYNC_PENDING_TTL_SEC || '900' )
@@ -114,12 +114,12 @@ export const PROXY_URL = process.env.PROXY_URL
114114
115115// behavior of unoapi
116116export const UNOAPI_SERVER_NAME = process . env . UNOAPI_SERVER_NAME || 'server_1'
117- export const CONNECTING_TIMEOUT_MS = parseInt ( process . env . CONNECTING_TIMEOUT_MS || '180000' )
118- export const BAILEYS_IDLE_RECONNECT_ENABLED =
119- process . env . BAILEYS_IDLE_RECONNECT_ENABLED === _undefined ? false : process . env . BAILEYS_IDLE_RECONNECT_ENABLED == 'true'
120- export const BAILEYS_IDLE_RECONNECT_MS = parseInt ( process . env . BAILEYS_IDLE_RECONNECT_MS || `${ 30 * 60 * 1000 } ` )
121- export const BAILEYS_IDLE_RECONNECT_CHECK_MS = parseInt ( process . env . BAILEYS_IDLE_RECONNECT_CHECK_MS || '60000' )
122- export const UNOAPI_RETRY_REQUEST_DELAY_MS = parseInt ( process . env . UNOAPI_RETRY_REQUEST_DELAY || process . env . UNOAPI_RETRY_REQUEST_DELAY_MS || '5000' )
117+ export const CONNECTING_TIMEOUT_MS = parseInt ( process . env . CONNECTING_TIMEOUT_MS || '180000' )
118+ export const BAILEYS_IDLE_RECONNECT_ENABLED =
119+ process . env . BAILEYS_IDLE_RECONNECT_ENABLED === _undefined ? false : process . env . BAILEYS_IDLE_RECONNECT_ENABLED == 'true'
120+ export const BAILEYS_IDLE_RECONNECT_MS = parseInt ( process . env . BAILEYS_IDLE_RECONNECT_MS || `${ 30 * 60 * 1000 } ` )
121+ export const BAILEYS_IDLE_RECONNECT_CHECK_MS = parseInt ( process . env . BAILEYS_IDLE_RECONNECT_CHECK_MS || '60000' )
122+ export const UNOAPI_RETRY_REQUEST_DELAY_MS = parseInt ( process . env . UNOAPI_RETRY_REQUEST_DELAY || process . env . UNOAPI_RETRY_REQUEST_DELAY_MS || '5000' )
123123// export const QR_TIMEOUT = parseInt(process.env.QR_TIMEOUT || '30000')
124124// export const SLEEP_TIME = parseInt(process.env.SLEEP_TIME || '5000')
125125// export const MAX_QRCODE_GENERATE = process.env.MAX_QRCODE_GENERATE || 6
@@ -152,12 +152,12 @@ export const UNOAPI_QUEUE_BULK_SENDER = `${UNOAPI_QUEUE_NAME}.bulk.sender`
152152export const UNOAPI_QUEUE_BULK_STATUS = `${ UNOAPI_QUEUE_NAME } .bulk.status`
153153export const UNOAPI_QUEUE_BULK_REPORT = `${ UNOAPI_QUEUE_NAME } .bulk.report`
154154export const UNOAPI_QUEUE_BULK_WEBHOOK = `${ UNOAPI_QUEUE_NAME } .bulk.webhook`
155- export const UNOAPI_QUEUE_COMMANDER = `${ UNOAPI_QUEUE_NAME } .commander`
156- export const UNOAPI_QUEUE_INCOMING = `${ UNOAPI_QUEUE_NAME } .incoming`
157- export const UNOAPI_QUEUE_TRANSCRIBER = `${ UNOAPI_QUEUE_NAME } .transcribe`
158- export const RELOAD_PUBLISH_BROKER = process . env . RELOAD_PUBLISH_BROKER === _undefined ? false : process . env . RELOAD_PUBLISH_BROKER == 'true'
159- export const RELOAD_BAILEYS_DEBOUNCE_MS = parseInt ( process . env . RELOAD_BAILEYS_DEBOUNCE_MS || '15000' )
160- export const UNOAPI_MESSAGE_RETRY_LIMIT = parseInt ( process . env . UNOAPI_MESSAGE_RETRY_LIMIT || '5' )
155+ export const UNOAPI_QUEUE_COMMANDER = `${ UNOAPI_QUEUE_NAME } .commander`
156+ export const UNOAPI_QUEUE_INCOMING = `${ UNOAPI_QUEUE_NAME } .incoming`
157+ export const UNOAPI_QUEUE_TRANSCRIBER = `${ UNOAPI_QUEUE_NAME } .transcribe`
158+ export const RELOAD_PUBLISH_BROKER = process . env . RELOAD_PUBLISH_BROKER === _undefined ? false : process . env . RELOAD_PUBLISH_BROKER == 'true'
159+ export const RELOAD_BAILEYS_DEBOUNCE_MS = parseInt ( process . env . RELOAD_BAILEYS_DEBOUNCE_MS || '15000' )
160+ export const UNOAPI_MESSAGE_RETRY_LIMIT = parseInt ( process . env . UNOAPI_MESSAGE_RETRY_LIMIT || '5' )
161161export const UNOAPI_MESSAGE_RETRY_DELAY = parseInt ( process . env . UNOAPI_MESSAGE_RETRY_DELAY || '10000' )
162162export const UNOAPI_DELAY_BETWEEN_MESSAGES_MS = parseInt ( process . env . UNOAPI_DELAY_BETWEEN_MESSAGES_MS || '0' )
163163export const UNOAPI_DELAY_AFTER_FIRST_MESSAGE_MS = parseInt ( process . env . UNOAPI_DELAY_AFTER_FIRST_MESSAGE_MS || '0' )
@@ -235,19 +235,19 @@ export const CONFIG_SESSION_PHONE_CLIENT = process.env.CONFIG_SESSION_PHONE_CLIE
235235export const CONFIG_SESSION_PHONE_NAME = process . env . CONFIG_SESSION_PHONE_NAME || 'Chrome'
236236export const MESSAGE_CHECK_WAAPP = process . env . MESSAGE_CHECK_WAAPP || ''
237237export const WHATSAPP_VERSION = process . env . WHATSAPP_VERSION ? JSON . parse ( process . env . WHATSAPP_VERSION ) as WAVersion : undefined
238- export const AVAILABLE_LOCALES = JSON . parse ( process . env . AVAILABLE_LOCALES || '["en", "pt_BR", "pt"]' )
239- export const BAILEYS_COUNTRY_CODE = ( process . env . BAILEYS_COUNTRY_CODE || 'BR' ) . toUpperCase ( )
240- export const ONLY_HELLO_TEMPLATE : boolean = process . env . ONLY_HELLO_TEMPLATE === _undefined ? false : process . env . ONLY_HELLO_TEMPLATE == 'true'
241- export const DEFAULT_BROWSER = [ CONFIG_SESSION_PHONE_CLIENT , CONFIG_SESSION_PHONE_NAME , release ( ) ]
238+ export const AVAILABLE_LOCALES = JSON . parse ( process . env . AVAILABLE_LOCALES || '["en", "pt_BR", "pt"]' )
239+ export const BAILEYS_COUNTRY_CODE = ( process . env . BAILEYS_COUNTRY_CODE || 'BR' ) . toUpperCase ( )
240+ export const ONLY_HELLO_TEMPLATE : boolean = process . env . ONLY_HELLO_TEMPLATE === _undefined ? false : process . env . ONLY_HELLO_TEMPLATE == 'true'
241+ export const DEFAULT_BROWSER = [ CONFIG_SESSION_PHONE_CLIENT , CONFIG_SESSION_PHONE_NAME , release ( ) ]
242242
243243// Embedded Signup (WhatsApp Cloud)
244244export const EMBEDDED_SIGNUP_APP_ID = process . env . EMBEDDED_SIGNUP_APP_ID || ''
245245export const EMBEDDED_SIGNUP_APP_SECRET = process . env . EMBEDDED_SIGNUP_APP_SECRET || ''
246246export const EMBEDDED_SIGNUP_REDIRECT_URI = process . env . EMBEDDED_SIGNUP_REDIRECT_URI || ''
247247export const EMBEDDED_SIGNUP_GRAPH_VERSION = process . env . EMBEDDED_SIGNUP_GRAPH_VERSION || 'v24.0'
248- export const QR_TIMEOUT_MS = parseInt ( process . env . QR_TIMEOUT_MS || '60000' )
249- export const QR_POST_LOGIN_SUPPRESS_MS = parseInt ( process . env . QR_POST_LOGIN_SUPPRESS_MS || '45000' )
250- export const STATUS_FAILED_WEBHOOK_URL = process . env . STATUS_FAILED_WEBHOOK_URL || ''
248+ export const QR_TIMEOUT_MS = parseInt ( process . env . QR_TIMEOUT_MS || '60000' )
249+ export const QR_POST_LOGIN_SUPPRESS_MS = parseInt ( process . env . QR_POST_LOGIN_SUPPRESS_MS || '45000' )
250+ export const STATUS_FAILED_WEBHOOK_URL = process . env . STATUS_FAILED_WEBHOOK_URL || ''
251251// Status broadcast behavior
252252export const STATUS_ALLOW_LID : boolean = process . env . STATUS_ALLOW_LID === _undefined ? true : process . env . STATUS_ALLOW_LID == 'true'
253253// Enable/disable sending Status (status@broadcast). When disabled, outgoing status
@@ -301,14 +301,15 @@ export const GROUP_ONLY_DELIVERED_STATUS =
301301export const RECEIPT_RETRY_ASSERT_COOLDOWN_MS = parseInt ( process . env . RECEIPT_RETRY_ASSERT_COOLDOWN_MS || '15000' )
302302export const RECEIPT_RETRY_ASSERT_MAX_TARGETS = parseInt ( process . env . RECEIPT_RETRY_ASSERT_MAX_TARGETS || '400' )
303303
304- // JID mapping cache (PN <-> LID)
305- export const JIDMAP_CACHE_ENABLED = process . env . JIDMAP_CACHE_ENABLED === _undefined ? true : process . env . JIDMAP_CACHE_ENABLED == 'true'
306- // Enable/disable jidmap list endpoint.
307- export const JIDMAP_LIST_ENABLED = process . env . JIDMAP_LIST_ENABLED === _undefined ? true : process . env . JIDMAP_LIST_ENABLED == 'true'
304+ // JID mapping cache (PN <-> LID)
305+ export const JIDMAP_CACHE_ENABLED = process . env . JIDMAP_CACHE_ENABLED === _undefined ? true : process . env . JIDMAP_CACHE_ENABLED == 'true'
306+ // Enable/disable jidmap list endpoint.
307+ export const JIDMAP_LIST_ENABLED = process . env . JIDMAP_LIST_ENABLED === _undefined ? true : process . env . JIDMAP_LIST_ENABLED == 'true'
308308// Enable/disable lookups against stored jidmap cache (unoapi-jidmap:*).
309- export const JIDMAP_STORED_LOOKUP_ENABLED =
310- process . env . JIDMAP_STORED_LOOKUP_ENABLED === _undefined ? false : process . env . JIDMAP_STORED_LOOKUP_ENABLED == 'true'
311- export const JIDMAP_TTL_SECONDS = parseInt ( process . env . JIDMAP_TTL_SECONDS || '604800' ) // 7 days
309+ export const JIDMAP_STORED_LOOKUP_ENABLED =
310+ process . env . JIDMAP_STORED_LOOKUP_ENABLED === _undefined ? true : process . env . JIDMAP_STORED_LOOKUP_ENABLED == 'true'
311+ // 0 or negative => do not expire mappings
312+ export const JIDMAP_TTL_SECONDS = parseInt ( process . env . JIDMAP_TTL_SECONDS || '0' )
312313
313314// Self-heal: assert sessions when decrypt stub is detected in inbound messages
314315export const SELFHEAL_ASSERT_ON_DECRYPT =
@@ -390,9 +391,9 @@ export const ONE_TO_ONE_ADDRESSING_MODE: 'lid' | 'pn' = (() => {
390391 return ( v === 'lid' ? 'lid' : 'pn' )
391392} ) ( )
392393
393- // Background resolver: try to map LIDs seen to PN asynchronously (accelerates JIDMAP population)
394- export const LID_RESOLVER_ENABLED : boolean =
395- process . env . LID_RESOLVER_ENABLED === _undefined ? true : process . env . LID_RESOLVER_ENABLED == 'true'
394+ // Background resolver: try to map LIDs seen to PN asynchronously (accelerates JIDMAP population)
395+ export const LID_RESOLVER_ENABLED : boolean =
396+ process . env . LID_RESOLVER_ENABLED === _undefined ? true : process . env . LID_RESOLVER_ENABLED == 'true'
396397export const LID_RESOLVER_BACKOFF_MS : number [ ] = ( ( ) => {
397398 try {
398399 const raw = ( process . env . LID_RESOLVER_BACKOFF_MS || '30000,120000,300000' ) . toString ( )
@@ -405,8 +406,8 @@ export const LID_RESOLVER_MAX_PENDING = parseInt(process.env.LID_RESOLVER_MAX_PE
405406// Enriquecimento do JIDMAP (PN<->LID) a partir do contact-info
406407export const JIDMAP_ENRICH_ENABLED = process . env . JIDMAP_ENRICH_ENABLED === _undefined ? false : process . env . JIDMAP_ENRICH_ENABLED == 'true'
407408export const JIDMAP_ENRICH_PER_SWEEP = parseInt ( process . env . JIDMAP_ENRICH_PER_SWEEP || '20' )
408- // Espelhar periodicamente o cache interno (unoapi-auth:*:lid-mapping-*) no JIDMAP
409- export const JIDMAP_ENRICH_AUTH_ENABLED = process . env . JIDMAP_ENRICH_AUTH_ENABLED === _undefined ? true : process . env . JIDMAP_ENRICH_AUTH_ENABLED == 'true'
409+ // Espelhar periodicamente o cache interno (unoapi-auth:*:lid-mapping-*) no JIDMAP
410+ export const JIDMAP_ENRICH_AUTH_ENABLED = process . env . JIDMAP_ENRICH_AUTH_ENABLED === _undefined ? true : process . env . JIDMAP_ENRICH_AUTH_ENABLED == 'true'
410411
411412// Watchdog purge scan batch size (Redis SCAN COUNT per pattern)
412413export const WATCHDOG_PURGE_SCAN_COUNT = parseInt ( process . env . WATCHDOG_PURGE_SCAN_COUNT || '20' )
@@ -422,10 +423,10 @@ export const ACK_RETRY_DELAYS_MS: number[] = (() => {
422423 return raw . split ( ',' ) . map ( ( s ) => parseInt ( s . trim ( ) ) ) . filter ( ( n ) => Number . isFinite ( n ) && n > 0 )
423424 } catch { return [ 8000 , 30000 , 60000 ] }
424425} ) ( )
425- // Optional hard cap for attempts; if set lower than delays length, it limits retries
426- export const ACK_RETRY_MAX_ATTEMPTS : number = parseInt ( process . env . ACK_RETRY_MAX_ATTEMPTS || '0' ) || 0
427- // Enable/disable ACK-retry scheduling entirely (default true)
428- export const ACK_RETRY_ENABLED : boolean = process . env . ACK_RETRY_ENABLED === _undefined ? false : process . env . ACK_RETRY_ENABLED == 'true'
426+ // Optional hard cap for attempts; if set lower than delays length, it limits retries
427+ export const ACK_RETRY_MAX_ATTEMPTS : number = parseInt ( process . env . ACK_RETRY_MAX_ATTEMPTS || '0' ) || 0
428+ // Enable/disable ACK-retry scheduling entirely (default true)
429+ export const ACK_RETRY_ENABLED : boolean = process . env . ACK_RETRY_ENABLED === _undefined ? false : process . env . ACK_RETRY_ENABLED == 'true'
429430
430431// Media send retry (ex.: presigned URL 403 enquanto objeto não ficou disponível)
431432export const MEDIA_RETRY_ENABLED : boolean =
0 commit comments