knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
33 lines (32 loc) • 1.59 kB
JavaScript
import picocolors from 'picocolors';
import { perfObserver } from "../util/Performance.js";
import { prettyMilliseconds } from "../util/string.js";
import { flattenIssues, getIssueTypeTitle, getTableForType } from "./util/util.js";
export default (options, { issues, streamer, duration, size }) => {
const reportMultipleGroups = Object.values(options.includedIssueTypes).filter(Boolean).length > 1;
let totalIssues = 0;
const lines = [];
for (const [reportType, isReportType] of Object.entries(options.includedIssueTypes)) {
if (isReportType) {
const title = reportMultipleGroups && getIssueTypeTitle(reportType);
const issuesForType = flattenIssues(issues[reportType]);
if (issuesForType.length > 0) {
if (title) {
lines.push(`${picocolors.yellowBright(picocolors.underline(title))} (${issuesForType.length})`);
}
lines.push(...getTableForType(issuesForType, options.cwd).toRows());
}
totalIssues = totalIssues + issuesForType.length;
}
}
const mem = perfObserver.getCurrentMemUsageInMb();
const ms = duration ?? perfObserver.getCurrentDurationInMs();
const summary = `${size} files (${prettyMilliseconds(ms)} • ${mem}MB)`;
const messages = totalIssues === 0
? ['✂️ Excellent, Knip found no issues.', '', picocolors.gray(summary)]
: [...lines, '', picocolors.gray(summary)];
if (options.isDebug)
console.log(messages.join('\n'));
else
streamer.cast(messages);
};