# JavaScript Duplication Audit Report **Generated:** 2026-02-26 **Scope:** static/js/**/*.js (13 files) **Files Audited:** api.js, utils.js, auth.js, main.js, tabs.js, anime.js, series-search.js, downloads.js, watchlist/main.js, anime-details.js, recommendations.js, watchlist.js, watchlist-ui.js --- ## CRITICAL DUPLICATIONS (Potential Syntax Errors) ### 1. translateStatus() Function - DUPLICATED DEFINITION - **File 1:** `static/js/utils.js:35` - Primary definition - **File 2:** `static/js/anime-details.js:428` - Duplicate definition **Impact:** HIGH - If both files are loaded, the second definition will overwrite the first, causing unpredictable behavior. The utils.js version is used by downloads.js and recommendations.js, while anime-details.js has its own localized version. **Recommendation:** Remove duplicate in anime-details.js and ensure anime-details.js imports from utils.js --- ## MINOR DUPLICATIONS (Non-Breaking) ### 2. Redundant const Declarations in Same Function Scope (Different Functions) #### auth.js - Duplicate variable declarations across functions - `mainContent` declared at line 70 and line 76 (in different functions showMainContent/hideMainContent) - `userInfo` declared at line 57 and line 82 (in showUserInfo/showLoginPrompt) - `loginPrompt` declared at line 58 and line 83 - `mainTabs` declared at line 59 and line 84 **Impact:** LOW - These are in different function scopes, not causing syntax errors but creating redundant code #### recommendations.js - Duplicate variable names in different functions - `container` declared at lines 5, 54, 105 (in different functions) - `section` declared at lines 6, 55 (in different functions) **Impact:** LOW - Different function scopes #### tabs.js - Duplicate container variable - `container` declared at lines 115, 152, 160, 178, 186, 235, 252, 329 **Impact:** LOW - Different function scopes #### anime.js - Duplicate variable names across functions - `selectElement` declared at lines 156, 245, 253, 261, 307, 352 - `seasonSelectElement` declared at lines 156, 245 - `actionsDiv` declared at lines 287, 325 **Impact:** LOW - Different function scopes --- ## PATTERN OBSERVATIONS ### Utility Functions Shared Across Files The following functions are defined once but used across multiple files: - `escapeHtml()` - Defined in utils.js:26, used in 8 files - `translateStatus()` - DEFINED TWICE (CRITICAL ISSUE) - `formatBytes()` - Defined in utils.js - `formatSpeed()` - Defined in utils.js - `extractSeriesName()` - Defined in utils.js - `getDayString()` - Defined in utils.js ### Cross-File Function Usage - `renderReleaseCard()` - Defined in recommendations.js:195, called in tabs.js:171 - `renderAnimeCard()` - Defined in anime.js:58, called in anime-details.js - `loadDownloads()` - Defined in downloads.js, called from multiple files --- ## SUMMARY | Severity | Count | Issue | |----------|-------|-------| | CRITICAL | 1 | translateStatus() defined twice (utils.js + anime-details.js) | | MINOR | 4+ | Redundant const declarations across functions (auth.js) | | MINOR | 3+ | Duplicate container/section variables (recommendations.js, tabs.js, anime.js) | --- ## RECOMMENDATIONS 1. **FIX CRITICAL:** Remove duplicate `translateStatus()` from anime-details.js and use the version from utils.js 2. **Consider:** Consolidating utility functions into a single utils module that all files import 3. **Future Cleanup:** Review auth.js for redundant variable declarations (minor optimization) --- ## VERIFICATION Audit completed: 13 JavaScript files scanned Duplicate function definitions: 1 CRITICAL Redundant const declarations: Multiple (non-critical)