diff --git a/src/Defaults/index.ts b/src/Defaults/index.ts index 5f22f2d5..78cce3b7 100644 --- a/src/Defaults/index.ts +++ b/src/Defaults/index.ts @@ -169,7 +169,6 @@ export const DEFAULT_CACHE_MAX_KEYS = { LID_GLOBAL: 10_000 } -// NOTE: RETRY_BACKOFF_DELAYS and RETRY_JITTER_FACTOR are defined in retry-utils.ts -// to avoid circular dependency and initialization order issues. -// Import from '@whiskeysockets/baileys' Utils if needed: -// import { getRetryDelayWithJitter, getAllRetryDelaysWithJitter } from './Utils/retry-utils' +// Re-export retry constants for backwards compatibility +// Actual definitions are in retry-utils.ts to avoid ESM initialization order issues +export { RETRY_BACKOFF_DELAYS, RETRY_JITTER_FACTOR } from '../Utils/retry-utils' diff --git a/src/Utils/retry-utils.ts b/src/Utils/retry-utils.ts index 672f0838..e3be6ce0 100644 --- a/src/Utils/retry-utils.ts +++ b/src/Utils/retry-utils.ts @@ -28,7 +28,7 @@ export const RETRY_BACKOFF_DELAYS = [1000, 2000, 5000, 10000, 20000] as const * Jitter factor for retry delays (0.15 = ±15% randomization) * Helps prevent thundering herd problem */ -export const RETRY_JITTER_FACTOR = 0.15 +export const RETRY_JITTER_FACTOR = 0.15 as const /** * Backoff strategies @@ -656,14 +656,19 @@ export const retryConfigs = { /** * RSocket-style retry with stepped delays * Uses fixed delay array: 1s, 2s, 5s, 10s, 20s (with ±15% jitter) - * Values hardcoded to avoid initialization order issues in ESM + * + * NOTE: Values are hardcoded instead of referencing RETRY_BACKOFF_DELAYS/RETRY_JITTER_FACTOR + * to prevent "Cannot access before initialization" errors in ESM environments. + * This occurs when modules are loaded in specific orders due to indirect circular imports + * (e.g., via prometheus-metrics.ts -> circuit-breaker.ts chain). + * Keep these values in sync with the constants above (lines 25, 31). */ rsocket: { - maxAttempts: 5, // RETRY_BACKOFF_DELAYS.length - baseDelay: 1000, // RETRY_BACKOFF_DELAYS[0] - maxDelay: 20000, // RETRY_BACKOFF_DELAYS[4] + maxAttempts: 5, // = RETRY_BACKOFF_DELAYS.length + baseDelay: 1000, // = RETRY_BACKOFF_DELAYS[0] + maxDelay: 20000, // = RETRY_BACKOFF_DELAYS[4] backoffStrategy: 'stepped' as const, - jitter: 0.15, // RETRY_JITTER_FACTOR + jitter: 0.15, // = RETRY_JITTER_FACTOR }, }