archunit
Version:
ArchUnit TypeScript is an architecture testing library, to specify and assert architecture rules in your TypeScript app
51 lines (50 loc) • 1.71 kB
TypeScript
import { Filter, Logger } from '../../common';
import { ClassInfo, Metric } from '../extraction';
import { MetricComparison } from './types';
import type { CheckOptions } from '../../common/fluentapi';
/**
* Filter classes by class name using regex patterns
*/
export declare class ClassFilter {
private readonly filter;
constructor(filter: Filter);
apply(classes: ClassInfo[], logger?: Logger, options?: CheckOptions): ClassInfo[];
getFilter(): Filter;
}
/**
* Combine multiple filters with AND logic
*/
export declare class CompositeFilter {
private readonly filters;
constructor(filters: ClassFilter[]);
apply(classes: ClassInfo[], logger?: Logger, options?: CheckOptions): ClassInfo[];
}
/**
* Projects class information to calculate specific metrics
*/
export interface MetricProjection {
apply(classes: ClassInfo[]): {
[className: string]: number;
};
}
/**
* Creates a projection for a specific metric calculation
* @param metricCalculation Function that calculates the metric for a single class
*/
export declare const projectToMetric: (metricCalculation: (classInfo: ClassInfo) => number) => MetricProjection;
/**
* Represents the result of a metric calculation for violation checking
*/
export interface MetricResult {
className: string;
filePath: string;
metricName: string;
metricValue: number;
threshold: number;
comparison: MetricComparison;
isViolation: boolean;
}
/**
* Projects class information into metric results for violation checking
*/
export declare function projectToMetricResults<T extends ClassInfo>(classes: T[], metric: Metric, threshold: number, comparison: MetricComparison): MetricResult[];