rxcc
Version:
A tool to pack repository contents to single file for AI consumption
43 lines • 2.14 kB
JavaScript
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 } from "./calculateAllFileMetrics.js";
import { calculateOutputMetrics } from "./calculateOutputMetrics.js";
export const calculateMetrics = (processedFiles_1, output_1, progressCallback_1, config_1, ...args_1) => __awaiter(void 0, [processedFiles_1, output_1, progressCallback_1, config_1, ...args_1], void 0, function* (processedFiles, output, progressCallback, config, deps = {
calculateAllFileMetrics,
calculateOutputMetrics,
}) {
progressCallback("Calculating metrics...");
const [fileMetrics, totalTokens] = yield Promise.all([
deps.calculateAllFileMetrics(processedFiles, config.tokenCount.encoding, progressCallback),
deps.calculateOutputMetrics(output, config.tokenCount.encoding, config.output.filePath),
]);
const totalFiles = processedFiles.length;
const totalCharacters = output.length;
const fileCharCounts = {};
const fileTokenCounts = {};
const fileLineCounts = {};
let totalLines = 0;
for (const file of fileMetrics) {
fileCharCounts[file.path] = file.charCount;
fileTokenCounts[file.path] = file.tokenCount;
fileLineCounts[file.path] = file.lineCount;
totalLines += file.lineCount;
}
return {
totalFiles,
totalCharacters,
totalTokens,
fileCharCounts,
fileTokenCounts,
fileLineCounts,
totalLines,
};
});
//# sourceMappingURL=calculateMetrics.js.map