@rayburst/sharity
Version:
Analyze shared package usage across monorepos - calculate symbol sharing percentages, track exclusive imports, and identify unused exports
56 lines • 2.09 kB
JavaScript
;
/**
* Consumer tracker - builds per-consumer analysis
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildConsumerAnalyses = buildConsumerAnalyses;
exports.getRiskLevel = getRiskLevel;
exports.getRiskLabel = getRiskLabel;
const line_counter_1 = require("./line-counter");
/**
* Build consumer analyses from symbol analyses
*/
function buildConsumerAnalyses(analyses, consumers) {
const consumerAnalyses = [];
for (const consumer of consumers) {
const totalSymbols = (0, line_counter_1.countSymbolsForConsumer)(analyses, consumer.name);
const exclusiveSymbols = (0, line_counter_1.countExclusiveSymbolsForConsumer)(analyses, consumer.name);
const sharedSymbols = (0, line_counter_1.countSharedSymbolsForConsumer)(analyses, consumer.name);
const estimatedExclusiveLines = (0, line_counter_1.calculateExclusiveLinesForConsumer)(analyses, consumer.name);
const exclusiveSymbolNames = (0, line_counter_1.getExclusiveSymbolNames)(analyses, consumer.name);
consumerAnalyses.push({
name: consumer.name,
path: consumer.path,
totalSymbols,
exclusiveSymbols,
sharedSymbols,
exclusivePercentage: (0, line_counter_1.calculatePercentage)(exclusiveSymbols, totalSymbols),
estimatedExclusiveLines,
exclusiveSymbolNames,
});
}
// Sort by exclusive symbols descending
consumerAnalyses.sort((a, b) => b.exclusiveSymbols - a.exclusiveSymbols);
return consumerAnalyses;
}
/**
* Get risk level for a consumer based on exclusive percentage
*/
function getRiskLevel(exclusivePercentage) {
if (exclusivePercentage >= 70)
return '🔴';
if (exclusivePercentage >= 40)
return '🟡';
return '🟢';
}
/**
* Get risk label for a consumer
*/
function getRiskLabel(exclusivePercentage) {
if (exclusivePercentage >= 70)
return 'HIGH';
if (exclusivePercentage >= 40)
return 'MEDIUM';
return 'LOW';
}
//# sourceMappingURL=consumer-tracker.js.map