/** * CoverageReporter — Lightweight code coverage reporting without external deps * * Integrates with Node.js built-in V8 coverage (`NODE_V8_COVERAGE`). * Parses V8 coverage JSON output into a structured report with file-level * line and function coverage metrics. Supports thresholds and reporters. * * Usage: * // Run tests with V8 coverage: * // NODE_V8_COVERAGE=./coverage npx ts-node test.ts * * const reporter = new CoverageReporter({ coverageDir: './coverage' }); * const report = await reporter.collect(); * reporter.printSummary(report); * reporter.enforce(report, { linePct: 80, branchPct: 70 }); * * @module CoverageReporter * @version 1.0.0 */ /** Coverage stats for a single file */ export interface FileCoverage { /** File path (relative to project root) */ file: string; /** Total functions found */ totalFunctions: number; /** Functions with at least one call */ coveredFunctions: number; /** Function coverage percentage (0-100) */ functionPct: number; /** Total byte ranges */ totalRanges: number; /** Ranges with count > 0 */ coveredRanges: number; /** Range coverage percentage (0-100) */ rangePct: number; } /** Aggregate coverage report */ export interface CoverageReport { /** Individual file coverage */ files: FileCoverage[]; /** Aggregate function coverage % */ totalFunctionPct: number; /** Aggregate range coverage % */ totalRangePct: number; /** Total files analyzed */ fileCount: number; /** Timestamp */ generatedAt: number; } /** Coverage thresholds */ export interface CoverageThresholds { /** Minimum function coverage % (0-100) */ functionPct?: number; /** Minimum range/branch coverage % (0-100) */ rangePct?: number; /** Per-file minimum function coverage % */ perFileFunctionPct?: number; } /** Coverage reporter configuration */ export interface CoverageReporterConfig { /** Directory containing V8 coverage JSON files */ coverageDir: string; /** Project root for relative path computation */ projectRoot?: string; /** File patterns to include (substring match) */ include?: string[]; /** File patterns to exclude (substring match) */ exclude?: string[]; } /** * CoverageReporter — Collects and reports V8 code coverage data. */ export declare class CoverageReporter { private readonly config; constructor(config: CoverageReporterConfig); /** * Collect coverage data from V8 coverage directory. */ collect(): Promise; /** * Print a summary table to console. */ printSummary(report: CoverageReport): void; /** * Enforce coverage thresholds. Throws if below threshold. */ enforce(report: CoverageReport, thresholds: CoverageThresholds): void; private findCoverageFiles; private shouldInclude; private toRelativePath; } //# sourceMappingURL=coverage-reporter.d.ts.map