UNPKG

@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
"use strict"; /** * 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