sicua
Version:
A tool for analyzing project structure and dependencies
95 lines (94 loc) • 4.31 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProgressTracker = exports.ConfigManager = exports.ProjectAnalyzer = void 0;
exports.analyzeProject = analyzeProject;
const projectAnalyzer_1 = require("./core/projectAnalyzer");
Object.defineProperty(exports, "ProjectAnalyzer", { enumerable: true, get: function () { return projectAnalyzer_1.ProjectAnalyzer; } });
const configManager_1 = require("./core/configManager");
Object.defineProperty(exports, "ConfigManager", { enumerable: true, get: function () { return configManager_1.ConfigManager; } });
const progressTracker_1 = require("./core/progressTracker");
Object.defineProperty(exports, "ProgressTracker", { enumerable: true, get: function () { return progressTracker_1.ProgressTracker; } });
const fs = __importStar(require("fs/promises"));
const path_1 = __importDefault(require("path"));
/**
* Analyzes a React project and generates a comprehensive analysis report
*
* @param options Analysis configuration options or path to project
* @returns Promise that resolves when analysis is complete
*/
async function analyzeProject(options) {
// Handle the case where only a string path is provided
const config = typeof options === "string" ? { projectPath: options } : options;
// Normalize project path
const projectPath = path_1.default.resolve(config.projectPath);
try {
// Check if the project path exists
await fs.access(projectPath);
}
catch (error) {
throw new Error(`Project path ${projectPath} does not exist or is not accessible`);
}
// Create the project analyzer
const analyzer = new projectAnalyzer_1.ProjectAnalyzer(projectPath);
// Configure the analyzer with options if provided
if (config.outputFileName ||
config.srcDir ||
config.rootComponentNames ||
config.fileExtensions) {
// Get the config manager and apply options
const configManager = analyzer.config;
// Wait for the config to load first to get proper default values
await configManager.loadConfig();
// Apply CLI options to override config file settings
if (config.outputFileName) {
configManager.outputFileName = path_1.default.resolve(projectPath, config.outputFileName);
}
if (config.srcDir) {
configManager.srcDir = path_1.default.resolve(projectPath, config.srcDir);
}
if (config.rootComponentNames) {
configManager.rootComponentNames = config.rootComponentNames;
}
if (config.fileExtensions) {
configManager.fileExtensions = config.fileExtensions;
}
}
// Enable verbose logging if requested
if (config.verbose) {
// Simple wrapper that adds timestamps to all console logs
const originalConsoleLog = console.log;
console.log = function (...args) {
originalConsoleLog(`[sicua] [${new Date().toISOString()}]`, ...args);
};
}
// Run the analysis
await analyzer.analyze();
}
// Default export for CommonJS compatibility
exports.default = analyzeProject;