image-asset-manager
Version:
A comprehensive image asset management tool for frontend projects
135 lines • 4.59 kB
TypeScript
import { ImageFile, UsageAnalysis, Reference } from "../types";
import { SafeDeletionSuggestion } from "./ImageAnalyzer";
/**
* Interface for usage analysis statistics
*/
export interface UsageStatistics {
totalFiles: number;
usedFiles: number;
unusedFiles: number;
totalReferences: number;
averageReferencesPerFile: number;
mostReferencedFiles: Array<{
file: ImageFile;
count: number;
}>;
}
/**
* Interface for file usage report
*/
export interface FileUsageReport {
file: ImageFile | null;
isUsed: boolean;
usageCount: number;
references: Reference[];
referencesByType: Record<string, number>;
referencesByFile: Record<string, number>;
}
/**
* Interface for cleanup candidates
*/
export interface CleanupCandidates {
unused: ImageFile[];
lowUsage: Array<{
file: ImageFile;
usageCount: number;
}>;
suggestions: SafeDeletionSuggestion[];
}
/**
* Interface for usage patterns analysis
*/
export interface UsagePatterns {
mostUsedFiles: Array<{
file: ImageFile;
count: number;
}>;
leastUsedFiles: Array<{
file: ImageFile;
count: number;
}>;
importTypeDistribution: Record<string, number>;
fileTypeUsage: Record<string, {
used: number;
unused: number;
}>;
directoryUsage: Record<string, {
used: number;
unused: number;
}>;
}
/**
* Class for integrating usage analysis functionality
* This class provides methods for analyzing image usage in a project,
* identifying unused files, and generating reports and suggestions
*/
export declare class UsageAnalysisIntegration {
private codeScanner;
private imageAnalyzer;
constructor();
/**
* Analyze usage of image files in the project
* @param projectPath Path to the project root
* @param imageFiles Array of image files to analyze
* @returns UsageAnalysis object containing usage information
*/
analyzeUsage(projectPath: string, imageFiles: ImageFile[]): Promise<UsageAnalysis>;
/**
* Get detailed usage statistics for the project
* @param usageAnalysis The usage analysis object
* @returns Statistics about image usage in the project
*/
getUsageStatistics(usageAnalysis: UsageAnalysis): UsageStatistics;
/**
* Generate safe deletion suggestions for unused files
* @param unusedFiles Array of unused image files
* @param projectPath Path to the project root
* @returns Array of deletion suggestions with risk assessment
*/
generateSafeDeletionSuggestions(unusedFiles: ImageFile[], projectPath: string): Promise<SafeDeletionSuggestion[]>;
/**
* Get detailed usage report for a specific file
* @param fileId ID of the image file
* @param usageAnalysis The usage analysis object
* @returns Detailed report of how the file is used
*/
getFileUsageReport(fileId: string, usageAnalysis: UsageAnalysis): FileUsageReport;
/**
* Get files that are likely candidates for cleanup
* @param usageAnalysis The usage analysis object
* @param options Options for filtering cleanup candidates
* @returns Object containing unused and low-usage files
*/
getCleanupCandidates(usageAnalysis: UsageAnalysis, options?: {
includeUnused?: boolean;
includeLowUsage?: boolean;
maxUsageCount?: number;
excludePatterns?: string[];
}): Promise<CleanupCandidates>;
/**
* Analyze usage patterns across the project
* @param usageAnalysis The usage analysis object
* @returns Analysis of usage patterns in the project
*/
analyzeUsagePatterns(usageAnalysis: UsageAnalysis): UsagePatterns;
/**
* Find potentially related files based on naming patterns
* @param targetFile The target image file
* @param allFiles Array of all image files
* @returns Array of related image files
*/
findRelatedFiles(targetFile: ImageFile, allFiles: ImageFile[]): ImageFile[];
/**
* Batch process all unused files to generate deletion recommendations
* @param usageAnalysis The usage analysis object
* @returns Object with detailed recommendations for each unused file
*/
generateUnusedFilesReport(usageAnalysis: UsageAnalysis): Promise<{
unusedCount: number;
totalSize: number;
recommendations: SafeDeletionSuggestion[];
byRiskLevel: Record<string, number>;
byDirectory: Record<string, number>;
}>;
}
//# sourceMappingURL=UsageAnalysisIntegration.d.ts.map