depsweep
Version:
🌱 Automated intelligent dependency cleanup with environmental impact reporting
83 lines (82 loc) • 2.39 kB
TypeScript
export interface DependencyContext {
scripts?: Record<string, string>;
configs?: Record<string, any>;
projectRoot: string;
dependencyGraph?: Map<string, Set<string>>;
}
export interface PackageJson {
dependencies?: Record<string, string>;
devDependencies?: Record<string, string>;
peerDependencies?: Record<string, string>;
optionalDependencies?: Record<string, string>;
workspaces?: string[] | {
packages: string[];
};
scripts?: Record<string, string>;
repository?: {
url: string;
};
homepage?: string;
}
export interface WorkspaceInfo {
root: string;
packages: string[];
}
export interface ProgressOptions {
onProgress?: (filePath: string, subdepIndex?: number, subdepCount?: number) => void;
totalAnalysisSteps: number;
}
export interface DependencyInfo {
usedInFiles: string[];
requiredByPackages: Set<string>;
hasSubDependencyUsage: boolean;
}
export interface EnvironmentalImpact {
carbonSavings: number;
energySavings: number;
waterSavings: number;
treesEquivalent: number;
carMilesEquivalent: number;
efficiencyGain: number;
networkSavings: number;
storageSavings: number;
transferEnergy: number;
cpuEnergy: number;
memoryEnergy: number;
latencyEnergy: number;
buildEnergy: number;
ciCdEnergy: number;
registryEnergy: number;
lifecycleEnergy: number;
carbonOffsetValue: number;
waterTreatmentValue: number;
totalFinancialValue: number;
carbonIntensityUsed: number;
regionalMultiplier: number;
peakEnergySavings: number;
offPeakEnergySavings: number;
timeOfDayMultiplier: number;
renewableEnergySavings: number;
fossilFuelSavings: number;
renewablePercentage: number;
ewasteReduction: number;
serverUtilizationImprovement: number;
developerProductivityGain: number;
buildTimeReduction: number;
}
export interface ImpactMetrics {
installTime: number;
diskSpace: number;
errors?: string[];
environmentalImpact?: EnvironmentalImpact;
}
export interface EnvironmentalReport {
totalImpact: EnvironmentalImpact;
perPackageImpact: Record<string, EnvironmentalImpact>;
timeframes: {
daily: EnvironmentalImpact;
monthly: EnvironmentalImpact;
yearly?: EnvironmentalImpact;
};
recommendations: string[];
}