UNPKG

repomix

Version:

A tool to pack repository contents to single file for AI consumption

54 lines 3.01 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { calculateAllFileMetrics, calculateSelectiveFileMetrics } from './calculateAllFileMetrics.js'; import { calculateOutputMetrics } from './calculateOutputMetrics.js'; import { calculateGitDiffMetrics } from './calculateGitDiffMetrics.js'; export const calculateMetrics = (processedFiles_1, output_1, progressCallback_1, config_1, gitDiffResult_1, ...args_1) => __awaiter(void 0, [processedFiles_1, output_1, progressCallback_1, config_1, gitDiffResult_1, ...args_1], void 0, function* (processedFiles, output, progressCallback, config, gitDiffResult, deps = { calculateAllFileMetrics, calculateSelectiveFileMetrics, calculateOutputMetrics, calculateGitDiffMetrics, }) { progressCallback('Calculating metrics...'); // For top files display optimization: calculate token counts only for top files by character count const topFilesLength = config.output.topFilesLength; const candidateFilesCount = Math.min(processedFiles.length, Math.max(topFilesLength * 10, topFilesLength)); // Get top files by character count first const topFilesByChar = [...processedFiles] .sort((a, b) => b.content.length - a.content.length) .slice(0, candidateFilesCount); const topFilePaths = topFilesByChar.map((file) => file.path); const [selectiveFileMetrics, totalTokens, gitDiffTokenCount] = yield Promise.all([ deps.calculateSelectiveFileMetrics(processedFiles, topFilePaths, config.tokenCount.encoding, progressCallback), deps.calculateOutputMetrics(output, config.tokenCount.encoding, config.output.filePath), deps.calculateGitDiffMetrics(config, gitDiffResult), ]); const totalFiles = processedFiles.length; const totalCharacters = output.length; // Build character counts for all files const fileCharCounts = {}; for (const file of processedFiles) { fileCharCounts[file.path] = file.content.length; } // Build token counts only for top files const fileTokenCounts = {}; for (const file of selectiveFileMetrics) { fileTokenCounts[file.path] = file.tokenCount; } return { totalFiles, totalCharacters, totalTokens, fileCharCounts, fileTokenCounts, gitDiffTokenCount: gitDiffTokenCount, }; }); //# sourceMappingURL=calculateMetrics.js.map