@zubenelakrab/gitstats
Version:
Powerful Git repository analyzer with comprehensive statistics and insights
102 lines • 2.82 kB
TypeScript
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