#!/usr/bin/env node /** * Migration script to replace deprecated $updateSettings calls * with the appropriate new methods ($saveSettings, $saveUserSettings, $saveMySettings) * * Usage: node scripts/migrate-update-settings.js * * This script will: * 1. Find all files containing $updateSettings calls * 2. Show the migration suggestions for each call * 3. Optionally perform the replacements */ const fs = require('fs'); const path = require('path'); const glob = require('glob'); // Migration patterns const MIGRATION_PATTERNS = [ { pattern: /\$updateSettings\(\s*(\{[^}]*\})\s*\)/g, replacement: '$saveMySettings($1)', description: 'Single parameter (changes only) -> $saveMySettings' }, { pattern: /\$updateSettings\(\s*(\{[^}]*\})\s*,\s*([^)]+)\s*\)/g, replacement: '$saveUserSettings($2, $1)', description: 'Two parameters (changes, did) -> $saveUserSettings(did, changes)' } ]; // Find all Vue and TypeScript files function findFiles() { const patterns = [ 'src/**/*.vue', 'src/**/*.ts', 'src/**/*.js' ]; let files = []; patterns.forEach(pattern => { files = files.concat(glob.sync(pattern, { ignore: ['node_modules/**', 'dist/**'] })); }); return files; } // Analyze a file for $updateSettings usage function analyzeFile(filePath) { const content = fs.readFileSync(filePath, 'utf8'); const lines = content.split('\n'); const usages = []; lines.forEach((line, index) => { if (line.includes('$updateSettings')) { usages.push({ line: index + 1, content: line.trim(), file: filePath }); console.log(`\n${filePath}:${index + 1}`); console.log(` ${line.trim()}`); // Show migration suggestion MIGRATION_PATTERNS.forEach(pattern => { if (pattern.pattern.test(line)) { const replacement = line.replace(pattern.pattern, pattern.replacement); console.log(` → ${replacement.trim()}`); console.log(` ${pattern.description}`); } }); } }); return usages; } // Main execution function main() { console.log('šŸ” Finding files with $updateSettings usage...\n'); const files = findFiles(); let totalUsages = 0; files.forEach(file => { const usages = analyzeFile(file); totalUsages += usages.length; }); console.log(`\nšŸ“Š Summary:`); console.log(` Files scanned: ${files.length}`); console.log(` Total usages: ${totalUsages}`); if (totalUsages > 0) { console.log(`\nšŸ“ Migration Guide:`); console.log(` 1. For global/default settings: use $saveSettings(changes)`); console.log(` 2. For user-specific settings: use $saveUserSettings(did, changes)`); console.log(` 3. For current user settings: use $saveMySettings(changes)`); console.log(`\nāš ļø Note: $updateSettings is deprecated and will be removed in a future version.`); } else { console.log(`\nāœ… No $updateSettings usage found!`); } } if (require.main === module) { main(); } module.exports = { findFiles, analyzeFile, MIGRATION_PATTERNS };