UNPKG

deepsource-mcp-server

Version:
117 lines (116 loc) 3.76 kB
/** * @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 {};