triyak-react-performance
Version:
Advanced React performance optimization toolkit - Built with modern React best practices and performance optimization techniques
157 lines • 4.36 kB
TypeScript
export interface PerformanceMetrics {
lcp: number;
fid: number;
cls: number;
ttfb: number;
fcp: number;
lcpElement?: Element;
timestamp: number;
}
export interface PerformanceThresholds {
lcp: {
good: number;
needsImprovement: number;
poor: number;
};
fid: {
good: number;
needsImprovement: number;
poor: number;
};
cls: {
good: number;
needsImprovement: number;
poor: number;
};
ttfb: {
good: number;
needsImprovement: number;
poor: number;
};
fcp: {
good: number;
needsImprovement: number;
poor: number;
};
}
export interface PerformanceAlert {
metric: keyof PerformanceMetrics;
value: number;
threshold: number;
severity: 'warning' | 'error' | 'critical';
timestamp: number;
element?: Element;
recommendation?: string;
}
export interface PerformanceOptimization {
type: 'lcp' | 'fid' | 'cls' | 'ttfb' | 'fcp' | 'bundle' | 'memory';
action: string;
priority: 'low' | 'medium' | 'high' | 'critical';
estimatedImpact: number;
implementation: string;
cost: 'low' | 'medium' | 'high';
}
export interface PerformanceReport {
metrics: PerformanceMetrics;
alerts: PerformanceAlert[];
optimizations: PerformanceOptimization[];
score: number;
grade: 'A' | 'B' | 'C' | 'D' | 'F';
timestamp: number;
url: string;
userAgent: string;
}
export interface PerformanceConfig {
enableAIOptimization: boolean;
optimizationMode: 'conservative' | 'aggressive' | 'custom';
monitoring: boolean;
alerts: boolean;
reporting: boolean;
autoOptimize: boolean;
customThresholds?: Partial<PerformanceThresholds>;
alertCallbacks?: {
onAlert?: (alert: PerformanceAlert) => void;
onOptimization?: (optimization: PerformanceOptimization) => void;
onReport?: (report: PerformanceReport) => void;
};
}
export interface BundleMetrics {
size: number;
gzippedSize: number;
modules: number;
chunks: number;
treeShakingEfficiency: number;
duplicateModules: number;
optimizationOpportunities: BundleOptimization[];
}
export interface BundleOptimization {
type: 'code-splitting' | 'tree-shaking' | 'duplicate-removal' | 'minification';
description: string;
potentialSavings: number;
difficulty: 'easy' | 'medium' | 'hard';
priority: 'low' | 'medium' | 'high';
}
export interface MemoryMetrics {
used: number;
total: number;
limit: number;
percentage: number;
leaks: MemoryLeak[];
optimizationOpportunities: MemoryOptimization[];
}
export interface MemoryLeak {
type: 'event-listener' | 'timer' | 'closure' | 'dom-reference';
description: string;
severity: 'low' | 'medium' | 'high' | 'critical';
location: string;
size: number;
}
export interface MemoryOptimization {
type: 'cleanup' | 'garbage-collection' | 'reference-removal';
description: string;
potentialSavings: number;
difficulty: 'easy' | 'medium' | 'hard';
priority: 'low' | 'medium' | 'high';
}
export interface ImageOptimization {
originalSize: number;
optimizedSize: number;
format: 'jpeg' | 'webp' | 'avif' | 'png';
quality: number;
compressionRatio: number;
loading: 'lazy' | 'eager' | 'preload';
responsive: boolean;
}
export interface CoreWebVitalsScore {
lcp: 'good' | 'needs-improvement' | 'poor';
fid: 'good' | 'needs-improvement' | 'poor';
cls: 'good' | 'needs-improvement' | 'poor';
overall: 'good' | 'needs-improvement' | 'poor';
score: number;
}
export interface PerformanceHistory {
reports: PerformanceReport[];
trends: {
lcp: number[];
fid: number[];
cls: number[];
score: number[];
};
improvements: {
metric: keyof PerformanceMetrics;
before: number;
after: number;
improvement: number;
timestamp: number;
}[];
}
export interface AIOptimizationResult {
type: 'performance' | 'bundle' | 'memory' | 'image';
confidence: number;
recommendation: string;
expectedImprovement: number;
implementation: string;
cost: number;
priority: 'low' | 'medium' | 'high' | 'critical';
}
//# sourceMappingURL=performance.d.ts.map