deepsource-mcp-server
Version:
Model Context Protocol server for DeepSource
117 lines (116 loc) • 3.76 kB
TypeScript
/**
* @fileoverview CoveragePercentage value object
*
* This module defines the CoveragePercentage value object which represents
* code coverage as a percentage with specific validation and formatting rules.
*/
import { ValueObject } from '../shared/value-object.js';
/**
* Properties for the CoveragePercentage value object
*/
interface CoveragePercentageProps {
value: number;
decimalPlaces: number;
}
/**
* Value object representing code coverage as a percentage
*
* Ensures that coverage values are always between 0 and 100 (inclusive)
* and provides specialized formatting and comparison methods.
*
* @example
* ```typescript
* const coverage = CoveragePercentage.create(85.567);
* console.log(coverage.toString()); // "85.6%"
* console.log(coverage.isAcceptable(80)); // true
*
* const perfect = CoveragePercentage.perfect();
* console.log(perfect.value); // 100
* ```
*/
export declare class CoveragePercentage extends ValueObject<CoveragePercentageProps> {
private constructor();
/**
* Creates a new CoveragePercentage instance
*
* @param value - The coverage percentage (0-100)
* @param decimalPlaces - Number of decimal places for display (default: 1)
* @returns A new CoveragePercentage instance
* @throws Error if value is outside 0-100 range
*/
static create(value: number, decimalPlaces?: number): CoveragePercentage;
/**
* Creates a zero coverage instance
*
* @returns A new CoveragePercentage with 0% coverage
*/
static zero(): CoveragePercentage;
/**
* Creates a perfect coverage instance
*
* @returns A new CoveragePercentage with 100% coverage
*/
static perfect(): CoveragePercentage;
/**
* Creates a coverage percentage from a fraction
*
* @param covered - Number of covered items
* @param total - Total number of items
* @param decimalPlaces - Number of decimal places for display
* @returns A new CoveragePercentage instance
* @throws Error if total is zero or negative
*/
static fromFraction(covered: number, total: number, decimalPlaces?: number): CoveragePercentage;
/**
* Gets the percentage value
*/
get value(): number;
/**
* Gets the number of decimal places for display
*/
get decimalPlaces(): number;
/**
* Checks if coverage is zero
*/
get isZero(): boolean;
/**
* Checks if coverage is perfect (100%)
*/
get isPerfect(): boolean;
/**
* Gets the coverage level category
*/
get level(): 'excellent' | 'good' | 'fair' | 'poor';
/**
* Checks if the coverage meets or exceeds a threshold
*
* @param threshold - The minimum acceptable percentage
* @returns True if coverage meets the threshold
*/
isAcceptable(threshold: number): boolean;
/**
* Calculates the improvement needed to reach a target
*
* @param target - The target percentage
* @returns The percentage points needed to reach the target
*/
improvementNeeded(target: number): number;
/**
* Combines this coverage with another (weighted average)
*
* @param other - The other coverage percentage
* @param thisWeight - Weight for this coverage (default: 1)
* @param otherWeight - Weight for the other coverage (default: 1)
* @returns A new CoveragePercentage with the weighted average
*/
combine(other: CoveragePercentage, thisWeight?: number, otherWeight?: number): CoveragePercentage;
/**
* Returns a formatted string representation
*/
toString(): string;
/**
* Returns a display string with the coverage level
*/
toDisplayString(): string;
}
export {};