/
report-wrap.mjs
66 lines (61 loc) · 2.27 KB
/
report-wrap.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import report from "#report/index.mjs";
import summarize from "#enrich/summarize/index.mjs";
import { applyFilters } from "#graph-utl/filter-bank.mjs";
import consolidateToPattern from "#graph-utl/consolidate-to-pattern.mjs";
import compare from "#graph-utl/compare.mjs";
import stripSelfTransitions from "#graph-utl/strip-self-transitions.mjs";
/**
*
* @param {import('../../types/dependency-cruiser.js').ICruiseResult} pResult
* @param {import('../../types/dependency-cruiser.js').IFormatOptions} pFormatOptions
* @returns {import('../../types/dependency-cruiser.js').ICruiseResult}
*/
function reSummarizeResults(pResult, pFormatOptions) {
let lModules = applyFilters(pResult.modules, pFormatOptions);
if (Object.hasOwn(pFormatOptions, "collapse")) {
lModules = consolidateToPattern(lModules, pFormatOptions.collapse)
.sort(compare.modules)
.map(stripSelfTransitions);
}
return {
...pResult,
summary: {
...pResult.summary,
...summarize(
lModules,
{
...pResult.summary.optionsUsed,
...pFormatOptions,
},
(pResult.summary.optionsUsed.args || "").split(" "),
// TODO: apply filters to the folders too
pResult.folders,
),
},
modules: lModules,
};
}
function getReporterSection(pOutputType) {
return pOutputType === "x-dot-webpage" ? "dot" : pOutputType;
}
/**
*
* @param {import("../..).ICruiseResult} pResult result of a previous run of dependency-cruiser
* @param {import("../../types/dependency-cruiser.js").IFormatOptions} pFormatOptions
* @returns {import("../../types/dependency-cruiser.js").IReporterOutput}
*/
export default async function reportWrap(pResult, pFormatOptions) {
const lReportFunction = await report.getReporter(pFormatOptions.outputType);
const lReportOptions =
pResult.summary.optionsUsed?.reporterOptions?.[
getReporterSection(pFormatOptions.outputType)
] ?? {};
return lReportFunction(
reSummarizeResults(pResult, pFormatOptions),
// passing format options here so reporters that read collapse patterns
// from the result take the one passed in the format options instead
Object.hasOwn(pFormatOptions, "collapse")
? { ...lReportOptions, collapsePattern: pFormatOptions.collapse }
: lReportOptions,
);
}