fix: address Copilot code review findings (PR #137)
Fixes 3 critical issues identified in Copilot/Codex review: ## 1. Fixed Partial Config Override Bug (P1 - CRITICAL) **File:** src/Socket/socket.ts **Issue:** Using `||` operator caused partial configs to bypass defaults, resulting in undefined fields (cleanupHour, intervalMs, etc.) **Example bug:** ```typescript // ❌ BEFORE - Broken! sessionCleanupConfig: { autoCleanCorrupted: false } // Results in: { autoCleanCorrupted: false } ← missing all other fields! ``` **Fix:** Proper object spread merge ```typescript // ✅ AFTER - Correct! const sessionCleanupConfig = { ...DEFAULT_SESSION_CLEANUP_CONFIG, ...(config.sessionCleanupConfig || {}) } // Results in: { enabled: true, intervalMs: 86400000, ..., autoCleanCorrupted: false } ``` **Impact:** Prevents hot cleanup loops and undefined behavior --- ## 2. Fixed Nullish Coalescing Bug **File:** src/Socket/messages-recv.ts **Issue:** Using `||` instead of `??` caused undefined when config exists but lacks specific field **Fix:** ```typescript // ❌ BEFORE const autoCleanCorrupted = (sessionCleanupConfig || DEFAULT).autoCleanCorrupted // If sessionCleanupConfig = {}, this returns undefined! // ✅ AFTER const autoCleanCorrupted = sessionCleanupConfig?.autoCleanCorrupted ?? DEFAULT.autoCleanCorrupted ``` **Impact:** Always gets correct default value --- ## 3. Improved API Usability **File:** src/Types/Socket.ts **Change:** `SessionCleanupConfig` → `Partial<SessionCleanupConfig>` **Benefit:** Users can now override single fields without TypeScript errors ```typescript // Now valid: makeWASocket({ sessionCleanupConfig: { autoCleanCorrupted: false } }) ``` ## Validation - ✅ TypeScript compilation: 0 errors - ✅ Proper config merging tested - ✅ Backward compatible ## Related - PR #137 (Copilot review findings) - Original fixes: PR #136 https://claude.ai/code/session_01SoNUGBEWbJwWWws3F2fuzh
This commit is contained in:
+2
-2
@@ -254,6 +254,6 @@ export type SocketConfig = {
|
||||
*/
|
||||
enableUnifiedSession?: boolean
|
||||
|
||||
/** Session cleanup configuration (optional, uses DEFAULT_SESSION_CLEANUP_CONFIG if not provided) */
|
||||
sessionCleanupConfig?: SessionCleanupConfig
|
||||
/** Session cleanup configuration (optional, partial overrides merged with defaults) */
|
||||
sessionCleanupConfig?: Partial<SessionCleanupConfig>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user