core/parsers/tool.madge.parser.ts
core/parsers/tool.madge.parser.ts is a file in GovLab Quality. 25 lines of code and 4 definitions.
import type { Finding } from "#types/finding.types";
import { POSITION } from "#configuration/constants/tool.constants";
import { advisoryFinding } from "#core/factories/finding.factory";
import { circularDependency } from "#configuration/strings/tool.strings";
import { jsonArray } from "#core/parsers/record.parser";
const TOOL = "madge";
const CHAIN_SEPARATOR = " → ";
const isCycle = function isCycle(cycle: unknown): cycle is string[] {
return Array.isArray(cycle) && cycle.length > 0 && typeof cycle[0] === "string";
};
export const parseMadgeOutput = function parseMadgeOutput(stdout: string, ecosystem: string): Finding[] {
return jsonArray(stdout || "[]")
.filter(isCycle)
.map((cycle) =>
advisoryFinding({
column: POSITION,
ecosystem,
file: cycle[0] ?? "",
line: POSITION,
message: circularDependency([...cycle, cycle[0]].join(CHAIN_SEPARATOR)),
ruleId: "circular-dependency",
tool: TOOL,
}),
);
};