intellify
Version:
Detect JavaScript & TypeScript errors and make codes more optimized.
100 lines (75 loc) ⢠3.26 kB
JavaScript
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 };