core/parsers/tool.dependency-cruiser.parser.ts

core/parsers/tool.dependency-cruiser.parser.ts is a file in GovLab Quality. 27 lines of code and 3 definitions.

import { recordAt, recordsAt, stringField } from "#core/selectors/record.selector";
import type { Finding } from "#types/finding.types";
import { POSITION } from "#configuration/constants/tool.constants";
import { advisoryFinding } from "#core/factories/finding.factory";
import { dependencyEdge } from "#configuration/strings/tool.strings";
import { jsonRecord } from "#core/parsers/record.parser";

const TOOL = "dependency-cruiser";
const UNKNOWN_END = "?";

export const parseDependencyCruiserOutput = function parseDependencyCruiserOutput(
    stdout: string,
    ecosystem: string,
): Finding[] {
    return recordsAt(recordAt(jsonRecord(stdout || "{}"), "summary"), "violations").map((violation) =>
        advisoryFinding({
            column: POSITION,
            ecosystem,
            file: stringField(violation, "from"),
            line: POSITION,
            message: dependencyEdge(
                stringField(violation, "from") || UNKNOWN_END,
                stringField(violation, "to") || UNKNOWN_END,
            ),
            ruleId: stringField(recordAt(violation, "rule"), "name", TOOL),
            tool: TOOL,
        }),
    );
};