@projectwallace/css-code-coverage
Version:
Generate useful CSS Code Coverage report from browser-reported coverage
68 lines (67 loc) • 1.91 kB
TypeScript
import * as v from "valibot";
//#region src/lib/parse-coverage.d.ts
declare let RangeSchema: v.ObjectSchema<{
readonly start: v.NumberSchema<undefined>;
readonly end: v.NumberSchema<undefined>;
}, undefined>;
type Range = v.InferInput<typeof RangeSchema>;
declare let CoverageSchema: v.ObjectSchema<{
readonly text: v.StringSchema<undefined>;
readonly url: v.StringSchema<undefined>;
readonly ranges: v.ArraySchema<v.ObjectSchema<{
readonly start: v.NumberSchema<undefined>;
readonly end: v.NumberSchema<undefined>;
}, undefined>, undefined>;
}, undefined>;
type Coverage = v.InferInput<typeof CoverageSchema>;
declare function parse_coverage(input: string): {
text: string;
url: string;
ranges: {
start: number;
end: number;
}[];
}[];
//#endregion
//#region src/lib/chunkify.d.ts
type Chunk = {
start_offset: number;
end_offset: number;
is_covered: boolean;
};
type ChunkedCoverage = Omit<Coverage, 'ranges'> & {
chunks: Chunk[];
};
//#endregion
//#region src/lib/prettify.d.ts
type PrettifiedChunk = ChunkedCoverage['chunks'][number] & {
start_line: number;
end_line: number;
total_lines: number;
css: string;
};
//#endregion
//#region src/lib/index.d.ts
type CoverageData = {
uncovered_bytes: number;
covered_bytes: number;
total_bytes: number;
line_coverage_ratio: number;
byte_coverage_ratio: number;
total_lines: number;
covered_lines: number;
uncovered_lines: number;
};
type StylesheetCoverage = CoverageData & {
url: string;
text: string;
chunks: PrettifiedChunk[];
};
type CoverageResult = CoverageData & {
total_files_found: number;
total_stylesheets: number;
coverage_per_stylesheet: StylesheetCoverage[];
};
declare function calculate_coverage(coverage: Coverage[]): CoverageResult;
//#endregion
export { type Coverage, CoverageData, CoverageResult, type Range, StylesheetCoverage, calculate_coverage, parse_coverage };