import * as path from 'path' import { extractFunctions } from './parsing/extract-functions' import { extractImportsAndTypes } from './parsing/extract-imports-and-types' import { buildFunctionContent } from './io/build-function-content' import { buildClassWrapper } from './io/build-class-wrapper' import { buildIndexContent } from './io/build-index-content' import { writeFileSafely } from './io/write-file' import { runLintFix } from './workflow/run-lint' import { FunctionInfo } from './lambda/types' export async function bulkRefactor(files: string[]): Promise { console.log(`\nšŸ“¦ Bulk Lambda Refactoring Tool`) console.log(` Mode: ${this.dryRun ? 'DRY RUN' : 'LIVE'}`) console.log(` Files to process: ${files.length}\n`) const results: RefactorResult[] = [] let successCount = 0 let skipCount = 0 let errorCount = 0 for (let i = 0; i < files.length; i++) { const file = files[i] console.log(`[${i + 1}/${files.length}] Processing: ${file}`) const result = await this.refactorFile(file) results.push(result) if (result.success) { successCount++ } else if (result.errors.some(e => e.includes('skipping'))) { skipCount++ } else { errorCount++ } await new Promise(resolve => setTimeout(resolve, 100)) } console.log(`\nšŸ“Š Summary:`) console.log(` āœ… Success: ${successCount}`) console.log(` ā­ļø Skipped: ${skipCount}`) console.log(` āŒ Errors: ${errorCount}`) console.log(` šŸ“ Total new files: ${results.reduce((acc, r) => acc + r.newFiles.length, 0)}`) return results }