UNPKG

dependency-guardian

Version:

A powerful dependency management and analysis tool for Node.js projects

64 lines (54 loc) 1.97 kB
const path = require('path'); const fs = require('fs').promises; const logger = require('./logger'); const bundleAnalyzer = require('../core/analyzers/bundle-analyzer'); class ImpactAnalyzer { async analyzeImpact(packageName, version) { try { const impacts = { size: await this.analyzeSizeImpact(packageName, version), dependencies: await this.analyzeDependencyImpact(packageName), breaking: await this.analyzeBreakingChanges(packageName, version), security: await this.analyzeSecurityImpact(packageName, version) }; return { ...impacts, score: this.calculateImpactScore(impacts) }; } catch (error) { logger.error(`Failed to analyze impact for ${packageName}:`, error); throw error; } } async analyzeSizeImpact(packageName, version) { const bundleStats = await bundleAnalyzer.analyzeBundleSize({ [packageName]: version }); return { size: bundleStats.size, gzip: bundleStats.gzip, percentage: this.calculatePercentage(bundleStats.size) }; } async analyzeDependencyImpact(packageName) { // Implementation for analyzing dependency tree impact // This would check for potential conflicts, duplicates, etc. } async analyzeBreakingChanges(packageName, version) { // Implementation for detecting breaking changes // This would compare API signatures, check changelogs, etc. } async analyzeSecurityImpact(packageName, version) { // Implementation for security impact analysis // This would check for known vulnerabilities, audit results, etc. } calculateImpactScore(impacts) { // Calculate a normalized impact score (0-100) // based on various impact metrics } calculatePercentage(size) { // Calculate size impact percentage // based on current project size } } module.exports = new ImpactAnalyzer();