@bernierllc/commit-analyzer
v1.2.2
Published
Commit interest analysis and filtering
Readme
@bernierllc/commit-analyzer
Commit interest analysis and filtering
Installation
npm install @bernierllc/commit-analyzerFeatures
- Size-based filtering - Filter by additions, deletions, total changes
- File pattern matching - Include/exclude files by glob patterns
- Branch filtering - Ignore specific branches
- Author filtering - Ignore specific authors
- Interest scoring - Calculate interest score (0-100)
- Configurable criteria - Dynamic criteria updates
Usage
Basic Usage
import { CommitAnalyzer } from '@bernierllc/commit-analyzer';
const analyzer = new CommitAnalyzer({
minAdditions: 10,
minDeletions: 5,
ignoredBranches: ['develop', 'staging'],
ignoredAuthors: ['[email protected]'],
filePatterns: {
include: ['src/**/*.ts', 'docs/**/*.md'],
exclude: ['*.test.ts', '*.spec.ts']
}
});
const commit = {
sha: 'abc123',
message: 'Add new feature',
author: { name: 'Developer', email: '[email protected]' },
branch: 'main',
additions: 50,
deletions: 10,
files: ['src/feature.ts', 'src/utils.ts'],
timestamp: new Date()
};
const result = analyzer.analyze(commit);
if (result.interesting) {
console.log('Commit is interesting!', result.reasons);
console.log('Score:', result.score);
}Quick Check
const isInteresting = analyzer.isInteresting(commit);
if (isInteresting) {
// Process commit
}Calculate Score
const score = analyzer.calculateScore(commit);
console.log('Interest score:', score); // 0-100Update Criteria
analyzer.updateCriteria({
minAdditions: 20,
minDeletions: 10
});File Pattern Matching
const analyzer = new CommitAnalyzer({
filePatterns: {
include: ['src/**/*.ts'], // Only TypeScript files
exclude: ['*.test.ts'] // Exclude test files
},
requiredFilePatterns: ['src/**/*.ts'] // Must have TypeScript files
});API
new CommitAnalyzer(criteria?: CommitAnalysisCriteria)
Creates a new commit analyzer with optional criteria.
analyzer.analyze(commit: CommitData): CommitAnalysisResult
Analyzes a commit and returns detailed results.
analyzer.isInteresting(commit: CommitData): boolean
Quick check if a commit is interesting.
analyzer.calculateScore(commit: CommitData): number
Calculates interest score (0-100).
analyzer.updateCriteria(criteria: Partial<CommitAnalysisCriteria>): void
Updates analysis criteria dynamically.
Integration Status
Logger Integration
Status: ✅ Integrated
Uses @bernierllc/logger for analysis events, filtering decisions, and scoring calculations.
NeverHub Integration
Status: ⚠️ Optional
Can emit analysis events to NeverHub for distributed monitoring and observability. Commit analyzer can publish events like commit.analyzed, commit.interesting, and commit.filtered to NeverHub when available.
Pattern: Optional service discovery integration - package can emit analysis events to NeverHub for distributed monitoring.
Example Integration:
// If NeverHub is available, emit events
if (typeof detectNeverHub === 'function') {
const result = analyzer.analyze(commit);
neverhub.emit('commit-analyzer.commit.analyzed', result);
}Docs-Suite Integration
Status: ✅ Ready
TypeDoc-compatible JSDoc comments are included throughout the source code. All public APIs are documented with examples and type information.
License
Copyright (c) 2025 Bernier LLC. All rights reserved.
