UNPKG

@re-shell/cli

Version:

Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja

471 lines (470 loc) 12.6 kB
import { EventEmitter } from 'events'; import * as os from 'os'; export interface PerformanceProfileConfig { profileDuration?: number; sampleInterval?: number; includeMemoryProfile?: boolean; includeCpuProfile?: boolean; includeIOProfile?: boolean; includeNetworkProfile?: boolean; outputPath?: string; generateReport?: boolean; optimization?: OptimizationConfig; benchmarks?: BenchmarkConfig[]; thresholds?: PerformanceThresholds; } export interface OptimizationConfig { analyzeBundleSize?: boolean; analyzeDependencies?: boolean; analyzeStartupTime?: boolean; analyzeMemoryUsage?: boolean; analyzeBuildTime?: boolean; generateRecommendations?: boolean; } export interface BenchmarkConfig { name: string; command: string; iterations?: number; warmupIterations?: number; timeout?: number; env?: Record<string, string>; } export interface PerformanceThresholds { cpuUsage: number; memoryUsage: number; startupTime: number; buildTime: number; bundleSize: number; networkLatency: number; } export interface PerformanceMetrics { timestamp: Date; duration: number; cpu: CpuMetrics; memory: MemoryMetrics; io: IOMetrics; network?: NetworkMetrics; process: ProcessMetrics; system: SystemMetrics; } export interface CpuMetrics { usage: number; userTime: number; systemTime: number; idleTime: number; loadAverage: number[]; cores: number; } export interface MemoryMetrics { used: number; total: number; heap: HeapMetrics; external: number; rss: number; arrayBuffers: number; } export interface HeapMetrics { used: number; total: number; limit: number; available: number; } export interface IOMetrics { read: IOOperation; write: IOOperation; total: IOSummary; } export interface IOOperation { bytes: number; operations: number; time: number; throughput: number; } export interface IOSummary { bytes: number; operations: number; time: number; efficiency: number; } export interface NetworkMetrics { requests: number; totalBytes: number; averageLatency: number; errors: number; connections: number; } export interface ProcessMetrics { pid: number; ppid: number; startTime: Date; uptime: number; threads: number; handles: number; } export interface SystemMetrics { platform: string; arch: string; nodeVersion: string; v8Version: string; totalMemory: number; freeMemory: number; uptime: number; loadAverage: number[]; } export interface PerformanceProfile { config: PerformanceProfileConfig; startTime: Date; endTime: Date; duration: number; metrics: PerformanceMetrics[]; benchmarks: BenchmarkResult[]; analysis: PerformanceAnalysis; optimizations: OptimizationRecommendation[]; summary: PerformanceSummary; } export interface BenchmarkResult { name: string; command: string; iterations: number; results: BenchmarkIteration[]; statistics: BenchmarkStatistics; baseline?: BenchmarkBaseline; regression?: RegressionAnalysis; } export interface BenchmarkIteration { iteration: number; duration: number; exitCode: number; memory: MemorySnapshot; cpu: number; success: boolean; error?: string; } export interface BenchmarkStatistics { mean: number; median: number; min: number; max: number; stdDev: number; variance: number; percentiles: Record<number, number>; successRate: number; throughput: number; } export interface BenchmarkBaseline { version: string; date: Date; mean: number; environment: string; } export interface RegressionAnalysis { significant: boolean; change: number; confidence: number; trend: 'improving' | 'degrading' | 'stable'; pValue: number; } export interface MemorySnapshot { timestamp: Date; heap: HeapMetrics; rss: number; external: number; total: number; } export interface PerformanceAnalysis { bottlenecks: PerformanceBottleneck[]; patterns: PerformancePattern[]; trends: PerformanceTrend[]; anomalies: PerformanceAnomaly[]; efficiency: EfficiencyMetrics; } export interface PerformanceBottleneck { type: 'cpu' | 'memory' | 'io' | 'network' | 'startup' | 'build'; severity: 'critical' | 'high' | 'medium' | 'low'; description: string; impact: string; location?: string; metrics: Record<string, number>; recommendations: string[]; } export interface PerformancePattern { name: string; frequency: number; impact: 'positive' | 'negative' | 'neutral'; description: string; occurrences: PatternOccurrence[]; } export interface PatternOccurrence { timestamp: Date; duration: number; context: string; metrics: Record<string, number>; } export interface PerformanceTrend { metric: string; direction: 'increasing' | 'decreasing' | 'stable'; rate: number; confidence: number; significance: boolean; prediction?: TrendPrediction; } export interface TrendPrediction { timeframe: number; expectedValue: number; confidence: number; range: { min: number; max: number; }; } export interface PerformanceAnomaly { timestamp: Date; type: 'spike' | 'drop' | 'outlier' | 'pattern_break'; metric: string; value: number; expectedValue: number; deviation: number; severity: 'critical' | 'high' | 'medium' | 'low'; description: string; possibleCauses: string[]; } export interface EfficiencyMetrics { overall: number; cpu: number; memory: number; io: number; network?: number; improvement: number; } export interface OptimizationRecommendation { id: string; type: 'startup' | 'memory' | 'cpu' | 'io' | 'bundle' | 'dependency' | 'build' | 'network'; priority: 'critical' | 'high' | 'medium' | 'low'; title: string; description: string; impact: OptimizationImpact; effort: 'low' | 'medium' | 'high'; implementation: OptimizationImplementation; benefits: string[]; risks: string[]; metrics: OptimizationMetrics; } export interface OptimizationImpact { performance: number; memory: number; size: number; speed: number; } export interface OptimizationImplementation { steps: string[]; code?: string; config?: Record<string, any>; dependencies?: string[]; automatizable: boolean; timeEstimate: string; } export interface OptimizationMetrics { before: Record<string, number>; after: Record<string, number>; improvement: Record<string, number>; } export interface PerformanceSummary { overall: PerformanceScore; categories: Record<string, PerformanceScore>; improvements: SummaryImprovement[]; warnings: SummaryWarning[]; achievements: SummaryAchievement[]; } export interface PerformanceScore { score: number; grade: 'A' | 'B' | 'C' | 'D' | 'F'; trend: 'improving' | 'degrading' | 'stable'; change: number; } export interface SummaryImprovement { area: string; potential: number; effort: 'low' | 'medium' | 'high'; impact: 'high' | 'medium' | 'low'; } export interface SummaryWarning { severity: 'critical' | 'high' | 'medium' | 'low'; message: string; metric: string; threshold: number; current: number; } export interface SummaryAchievement { title: string; description: string; metric: string; value: number; } export interface PerformanceReport { profile: PerformanceProfile; executive: ExecutiveSummary; technical: TechnicalDetails; actionPlan: ActionPlan; appendices: ReportAppendices; timestamp: Date; } export interface ExecutiveSummary { overallScore: number; keyFindings: string[]; criticalIssues: number; potentialSavings: PotentialSavings; recommendations: ExecutiveRecommendation[]; } export interface PotentialSavings { timeReduction: number; memoryReduction: number; costSavings: number; efficiencyGain: number; } export interface ExecutiveRecommendation { priority: 'critical' | 'high' | 'medium' | 'low'; category: string; impact: string; effort: string; timeline: string; roi: number; } export interface TechnicalDetails { methodology: string; environment: EnvironmentInfo; dataCollection: DataCollectionInfo; analysis: AnalysisMethodology; limitations: string[]; } export interface EnvironmentInfo { platform: string; nodeVersion: string; cpuInfo: os.CpuInfo[]; memory: number; timestamp: Date; } export interface DataCollectionInfo { duration: number; sampleCount: number; sampleRate: number; metrics: string[]; } export interface AnalysisMethodology { algorithms: string[]; thresholds: PerformanceThresholds; statisticalMethods: string[]; confidence: number; } export interface ActionPlan { immediate: ActionItem[]; shortTerm: ActionItem[]; longTerm: ActionItem[]; monitoring: MonitoringPlan; } export interface ActionItem { id: string; title: string; description: string; priority: 'critical' | 'high' | 'medium' | 'low'; effort: string; timeline: string; owner: string; dependencies: string[]; success: SuccessCriteria; } export interface SuccessCriteria { metrics: string[]; targets: Record<string, number>; validation: string[]; } export interface MonitoringPlan { frequency: string; metrics: string[]; alerts: AlertConfiguration[]; reporting: ReportingSchedule; } export interface AlertConfiguration { metric: string; threshold: number; severity: 'critical' | 'high' | 'medium' | 'low'; action: string; } export interface ReportingSchedule { frequency: 'daily' | 'weekly' | 'monthly' | 'quarterly'; format: 'summary' | 'detailed' | 'executive'; recipients: string[]; } export interface ReportAppendices { rawData: PerformanceMetrics[]; benchmarkData: BenchmarkResult[]; statisticalAnalysis: StatisticalSummary; methodologyDetails: string; } export interface StatisticalSummary { sampleSize: number; confidence: number; margin: number; significance: number; correlations: CorrelationMatrix; } export interface CorrelationMatrix { [metric: string]: Record<string, number>; } export declare class PerformanceProfiler extends EventEmitter { private config; private startTime; private endTime; private metrics; private intervalId?; constructor(config?: PerformanceProfileConfig); profile(projectPath: string): Promise<PerformanceProfile>; private startMetricsCollection; private stopMetricsCollection; private collectMetrics; private collectCpuMetrics; private calculateCpuUsage; private collectMemoryMetrics; private getHeapLimit; private collectIOMetrics; private collectNetworkMetrics; private collectProcessMetrics; private collectSystemMetrics; private runBenchmarks; private runBenchmark; private executeBenchmarkIteration; private calculateBenchmarkStatistics; private loadBenchmarkBaseline; private analyzeRegression; private analyzePerformance; private identifyBottlenecks; private identifyPatterns; private analyzeMemoryGrowth; private analyzeTrends; private calculateTrend; private detectAnomalies; private calculateEfficiency; private generateOptimizations; private analyzeStartupOptimizations; private analyzeMemoryOptimizations; private analyzeBundleOptimizations; private analyzeDependencyOptimizations; private analyzeBuildOptimizations; private generateSummary; private calculateOverallScore; private calculateCategoryScore; private scoreToGrade; private generateImprovements; private generateWarnings; private getThresholdForType; private generateAchievements; generateReport(profile: PerformanceProfile): Promise<PerformanceReport>; private generateExecutiveSummary; private generateTechnicalDetails; private generateActionPlan; private optimizationToActionItem; private generateAppendices; private saveReport; private generateHtmlReport; } export declare function profilePerformance(projectPath: string, config?: Partial<PerformanceProfileConfig>): Promise<PerformanceReport>; export declare function createBenchmark(name: string, command: string, options?: Partial<BenchmarkConfig>): BenchmarkConfig;