core/converters/exclusions.converter.ts
core/converters/exclusions.converter.ts is a file in GovLab Quality. 25 lines of code and 8 definitions.
import path from "node:path";
const SEPARATOR = "/";
const NEGATION = "!";
const isAnchored = function isAnchored(pattern: string): boolean {
const body = pattern.endsWith(SEPARATOR) ? pattern.slice(0, -1) : pattern;
return body.includes(SEPARATOR);
};
const anchoredAt = function anchoredAt(pattern: string, prefix: string): string {
if (pattern.startsWith(NEGATION)) {
return NEGATION + anchoredAt(pattern.slice(1), prefix);
}
if (!isAnchored(pattern)) {
return pattern;
}
const tail = pattern.startsWith(SEPARATOR) ? pattern.slice(1) : pattern;
return prefix + SEPARATOR + tail;
};
export const exclusionsFrom = function exclusionsFrom(
patterns: readonly string[],
base: string,
root: string,
): string[] {
const prefix = path.relative(base, root).split(path.sep).join(SEPARATOR);
return prefix.length === 0 ? [...patterns] : patterns.map((pattern) => anchoredAt(pattern, prefix));
};