UNPKG

@zubenelakrab/gitstats

Version:

Powerful Git repository analyzer with comprehensive statistics and insights

102 lines 2.82 kB
import type { Commit, AnalysisConfig, Analyzer, Tag } from '../types/index.js'; export interface VelocityStats { commitsPerDay: number; commitsPerWeek: number; commitsPerMonth: number; trend: 'accelerating' | 'stable' | 'decelerating'; trendPercentage: number; weeklyVelocity: WeeklyVelocity[]; authorVelocity: AuthorVelocity[]; busiestWeek: { week: string; commits: number; }; slowestWeek: { week: string; commits: number; }; consistencyScore: number; averageTimeBetweenCommits: number; mtblc: number; largeCommitFrequency: string; releaseRhythm: ReleaseRhythm; velocityByDayOfWeek: number[]; sprintCycles: SprintCycle[]; codebaseEvolution: CodebaseEvolution; } export interface CodebaseEvolution { monthly: MonthlyEvolution[]; totalGrowth: number; averageMonthlyGrowth: number; largestExpansion: { month: string; additions: number; }; largestRefactor: { month: string; deletions: number; }; fileCountTrend: 'growing' | 'stable' | 'shrinking'; } export interface MonthlyEvolution { month: string; additions: number; deletions: number; netChange: number; filesAdded: number; filesDeleted: number; filesModified: number; cumulativeLOC: number; cumulativeFiles: number; } export interface WeeklyVelocity { week: string; year: number; weekNumber: number; commits: number; additions: number; deletions: number; authors: number; } export interface AuthorVelocity { name: string; email: string; commitsPerDay: number; averageTimeBetweenCommits: number; activeDays: number; totalDays: number; } export interface ReleaseRhythm { averageDaysBetweenReleases: number; releases: ReleaseInfo[]; releaseFrequency: string; lastRelease: Date | null; daysSinceLastRelease: number; } export interface ReleaseInfo { tag: string; date: Date; commitsSinceLastRelease: number; daysSinceLastRelease: number; } export interface SprintCycle { startDate: string; endDate: string; commits: number; authors: number; intensity: 'high' | 'medium' | 'low'; } export declare class VelocityAnalyzer implements Analyzer<VelocityStats> { name: string; description: string; analyze(commits: Commit[], _config: AnalysisConfig, tags?: Tag[]): Promise<VelocityStats>; private calculateAverageTimeBetween; private calculateConsistencyScore; private formatTimeDuration; private calculateReleaseRhythm; private detectSprintCycles; private calculateCodebaseEvolution; private emptyStats; } export declare function createVelocityAnalyzer(): VelocityAnalyzer; //# sourceMappingURL=velocity-analyzer.d.ts.map