UNPKG

intellify

Version:

Detect JavaScript & TypeScript errors and make codes more optimized.

100 lines (75 loc) • 3.26 kB
import chalk from 'chalk'; import boxen from 'boxen'; import path from 'path'; import fs from 'fs'; import { analyzeProject } from './analyzers/project.js'; import { displayResults } from './display/results.js'; import { promptFix } from './display/prompt.js'; import { debugLog } from './utils/helpers.js'; async function analyze() { try { console.clear(); const headerText = `${chalk.bold.cyan('🧠 INTELLIFY')}\n${chalk.cyan('Modern Code Intelligence Tool')}`; console.log(boxen(headerText, { padding: 1, margin: 1, borderStyle: 'double', borderColor: 'cyan', textAlignment: 'center' })); const projectPath = process.cwd(); const projectName = path.basename(projectPath); console.log(`šŸ“‚ Project: ${chalk.cyan(projectName)} (${chalk.gray(projectPath)}) `); const packageJsonPath = path.join(projectPath, 'package.json'); if (fs.existsSync(packageJsonPath)) { try { const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')); const projectInfo = { name: packageJson.name || projectName, version: packageJson.version || 'N/A', description: packageJson.description || 'No description', dependencies: Object.keys(packageJson.dependencies || {}).length, devDependencies: Object.keys(packageJson.devDependencies || {}).length }; const projectInfoText = `${chalk.white.bold(`${projectInfo.name}@${projectInfo.version}`)}\n` + `${chalk.white(projectInfo.description.substring(0,45))}${projectInfo.description.length > 45 ? '...' : ''}\n` + `${chalk.white(`Total Dependencies: ${projectInfo.dependencies + projectInfo.devDependencies}`)}`; console.log(boxen(projectInfoText, { title: 'Project Info', titleAlignment: 'center', padding: 1, margin: {top:0, bottom:1}, borderStyle: 'round', borderColor: 'white' })); } catch (e) { debugLog(`Error reading package.json: ${e.message}`); } } console.log(chalk.cyan('šŸ” Scanning files...')); const { results, stats } = await analyzeProject(projectPath); debugLog('Analysis completed, preparing to display results', { resultsStats: { syntaxErrors: results.syntaxErrors?.length || 0, unusedPackages: results.unusedPackages?.length || 0, unusedVariables: results.unusedVariables?.length || 0, comments: results.comments?.length || 0, analyzedFiles: results.analyzedFiles?.length || 0 } }); try { displayResults(results, stats); } catch (displayError) { console.error(chalk.red(`Error displaying results: ${displayError.message}`)); console.log(chalk.blue.bold('\n✨ Analysis Complete ✨')); console.log(chalk.yellow('There was an error displaying detailed results.')); } await promptFix(results, projectPath); } catch (error) { console.error(chalk.red(`\nāŒ An error occurred during analysis: ${error.message}`)); } } export { analyze }; export default { analyze };