param( [switch]$modules, [switch]$dist, [switch]$cache, [switch]$tsbuildinfo, [switch]$all, [switch]$fresh, [switch]$force ) function Remove-DirectoriesByName { param([string]$Name, [string]$Description) Write-Host "Removing $Description..." -ForegroundColor Blue $directories = Get-ChildItem -Path . -Name $Name -Recurse -Directory -ErrorAction SilentlyContinue if ($directories.Count -gt 0) { Write-Host "Found $($directories.Count) $Description to remove" -ForegroundColor Gray $directories | ForEach-Object { Remove-Item $_ -Recurse -Force -ErrorAction SilentlyContinue Write-Host " Removed: $_" -ForegroundColor Gray } } else { Write-Host "No $Description found" -ForegroundColor Gray } } function Remove-FilesByPattern { param([string]$Pattern, [string]$Description) Write-Host "Removing $Description..." -ForegroundColor Blue $files = Get-ChildItem -Path . -Name $Pattern -Recurse -File -ErrorAction SilentlyContinue if ($files.Count -gt 0) { Write-Host "Found $($files.Count) $Description to remove" -ForegroundColor Gray $files | ForEach-Object { Remove-Item $_ -Force -ErrorAction SilentlyContinue Write-Host " Removed: $_" -ForegroundColor Gray } } else { Write-Host "No $Description found" -ForegroundColor Gray } } Write-Host "Starting cleanup..." -ForegroundColor Yellow if ($all -or $fresh) { if (-not $force) { Write-Host "WARNING: This will remove ALL build artifacts, caches, dependencies, and temporary files!" -ForegroundColor Red Write-Host "This includes: node_modules, dist, all caches, logs, databases, and lock files" -ForegroundColor Yellow $confirmation = Read-Host "Are you sure you want to continue? (y/N)" if ($confirmation -ne 'y' -and $confirmation -ne 'Y') { Write-Host "Operation cancelled." -ForegroundColor Yellow exit 0 } } Write-Host "=== NUCLEAR CLEAN: Removing EVERYTHING ===" -ForegroundColor Red # Dependencies and packages Remove-DirectoriesByName "node_modules" "node_modules directories" # Build outputs Remove-DirectoriesByName "dist" "dist directories" Remove-DirectoriesByName "build" "build directories" Remove-DirectoriesByName "lib" "lib directories" Remove-DirectoriesByName "out" "out directories" Remove-DirectoriesByName ".out" "build output directories" # Cache directories Remove-DirectoriesByName ".turbo" "Turborepo cache directories" Remove-DirectoriesByName ".next" "Next.js cache directories" Remove-DirectoriesByName ".parcel-cache" "Parcel cache directories" Remove-DirectoriesByName ".angular" "Angular CLI cache directories" Remove-DirectoriesByName ".nuxt" "Nuxt.js cache directories" Remove-DirectoriesByName ".vite" "Vite cache directories" Remove-DirectoriesByName ".webpack" "Webpack cache directories" Remove-DirectoriesByName ".rollup.cache" "Rollup cache directories" # Test and coverage Remove-DirectoriesByName "coverage" "test coverage directories" Remove-DirectoriesByName ".nyc_output" "NYC coverage directories" Remove-DirectoriesByName ".jest" "Jest cache directories" Remove-DirectoriesByName ".vitest" "Vitest cache directories" # Storybook Remove-DirectoriesByName ".storybook-out" "Storybook build directories" Remove-DirectoriesByName "storybook-static" "Storybook static directories" # Temporary and log directories Remove-DirectoriesByName "tmp" "temporary directories" Remove-DirectoriesByName "temp" "temp directories" Remove-DirectoriesByName ".tmp" "hidden temp directories" Remove-DirectoriesByName "logs" "log directories" Remove-DirectoriesByName ".logs" "hidden log directories" # Project specific (from .gitignore) Remove-DirectoriesByName ".data" "data directories" Remove-DirectoriesByName ".backtest-results" "backtest result directories" Remove-DirectoriesByName ".old" "old backup directories" Remove-DirectoriesByName ".mongo" "MongoDB data directories" Remove-DirectoriesByName ".chat" "chat directories" Write-Host "Removing lock files..." -ForegroundColor Blue Remove-Item -Path "bun.lockb" -Force -ErrorAction SilentlyContinue Remove-Item -Path "package-lock.json" -Force -ErrorAction SilentlyContinue Remove-Item -Path "yarn.lock" -Force -ErrorAction SilentlyContinue Remove-Item -Path "pnpm-lock.yaml" -Force -ErrorAction SilentlyContinue Get-ChildItem -Path . -Name "bun.lockb" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue Get-ChildItem -Path . -Name "package-lock.json" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue Get-ChildItem -Path . -Name "yarn.lock" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue Get-ChildItem -Path . -Name "pnpm-lock.yaml" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue # TypeScript and build files Remove-FilesByPattern "*.tsbuildinfo" "TypeScript build info files" Remove-FilesByPattern ".eslintcache" "ESLint cache files" Remove-FilesByPattern ".stylelintcache" "Stylelint cache files" Remove-FilesByPattern ".prettiercache" "Prettier cache files" Remove-FilesByPattern "*.d.ts" "TypeScript build info files" # Database files Remove-FilesByPattern "*.db" "database files" Remove-FilesByPattern "*.sqlite" "SQLite database files" Remove-FilesByPattern "*.sqlite3" "SQLite3 database files" # Log files Remove-FilesByPattern "*.log" "log files" Remove-FilesByPattern "npm-debug.log*" "npm debug logs" Remove-FilesByPattern "yarn-debug.log*" "yarn debug logs" Remove-FilesByPattern "yarn-error.log*" "yarn error logs" Remove-FilesByPattern "lerna-debug.log*" "lerna debug logs" # OS generated files Remove-FilesByPattern ".DS_Store" "macOS .DS_Store files" Remove-FilesByPattern "Thumbs.db" "Windows thumbnail files" Remove-FilesByPattern "ehthumbs.db" "Windows thumbnail cache files" Remove-FilesByPattern "Desktop.ini" "Windows desktop files" Write-Host "=== NUCLEAR CLEAN COMPLETE ===" -ForegroundColor Red Write-Host "Cleanup complete - no need for turbo clean" -ForegroundColor Blue } elseif ($modules) { Remove-DirectoriesByName "node_modules" "node_modules directories" Write-Host "Removing lock files..." -ForegroundColor Blue Remove-Item -Path "bun.lockb" -Force -ErrorAction SilentlyContinue Get-ChildItem -Path . -Name "bun.lockb" -Recurse -File | Remove-Item -Force -ErrorAction SilentlyContinue } elseif ($dist) { Remove-DirectoriesByName "dist" "dist directories" Remove-DirectoriesByName ".turbo" "Turborepo cache directories" Remove-DirectoriesByName ".next" "Next.js cache directories" Remove-DirectoriesByName ".parcel-cache" "Parcel cache directories" Remove-DirectoriesByName ".angular" "Angular CLI cache directories" Remove-FilesByPattern "*.tsbuildinfo" "TypeScript build info files" Remove-FilesByPattern ".eslintcache" "ESLint cache files" } elseif ($cache) { Remove-DirectoriesByName ".turbo" "Turborepo cache directories" Remove-DirectoriesByName ".next" "Next.js cache directories" Remove-DirectoriesByName ".parcel-cache" "Parcel cache directories" Remove-DirectoriesByName ".angular" "Angular CLI cache directories" Remove-DirectoriesByName "coverage" "test coverage directories" Remove-DirectoriesByName ".nyc_output" "NYC coverage directories" Remove-FilesByPattern ".eslintcache" "ESLint cache files" } elseif ($tsbuildinfo) { Remove-FilesByPattern "*.tsbuildinfo" "TypeScript build info files" } else { Write-Host "Running turbo clean..." -ForegroundColor Blue # Only run turbo clean for the default case turbo run clean } if ($fresh) { Write-Host "Installing dependencies..." -ForegroundColor Green bun install } Write-Host "Cleanup complete!" -ForegroundColor Green