UNPKG

repomix

Version:

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

38 lines (37 loc) 1.54 kB
import { logger } from '../../shared/logger.js'; import { runTokenCount } from './metricsWorkerRunner.js'; export const calculateGitDiffMetrics = async (config, gitDiffResult, deps) => { if (!config.output.git?.includeDiffs || !gitDiffResult) { return 0; } if (!gitDiffResult.workTreeDiffContent && !gitDiffResult.stagedDiffContent) { return 0; } try { const startTime = process.hrtime.bigint(); logger.trace('Starting git diff token calculation using worker'); const countPromises = []; if (gitDiffResult.workTreeDiffContent) { countPromises.push(runTokenCount(deps.taskRunner, { content: gitDiffResult.workTreeDiffContent, encoding: config.tokenCount.encoding, })); } if (gitDiffResult.stagedDiffContent) { countPromises.push(runTokenCount(deps.taskRunner, { content: gitDiffResult.stagedDiffContent, encoding: config.tokenCount.encoding, })); } const results = await Promise.all(countPromises); const totalTokens = results.reduce((sum, count) => sum + count, 0); const endTime = process.hrtime.bigint(); const duration = Number(endTime - startTime) / 1e6; logger.trace(`Git diff token calculation completed in ${duration.toFixed(2)}ms`); return totalTokens; } catch (error) { logger.error('Error during git diff token calculation:', error); throw error; } };