UNPKG

repomix

Version:

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

43 lines (42 loc) 1.24 kB
export const buildTokenCountTree = (filesWithTokens) => { const root = {}; for (const file of filesWithTokens) { if (!file.path || typeof file.path !== 'string') { continue; } const parts = file.path.split('/'); const fileName = parts.pop(); if (!fileName) continue; let current = root; for (const part of parts) { if (!current[part]) { current[part] = {}; } current = current[part]; } if (!current._files) { current._files = []; } current._files.push({ name: fileName, tokens: file.tokens, }); } calculateTokenSums(root); return root; }; const calculateTokenSums = (node) => { let totalTokens = 0; if (node._files) { totalTokens += node._files.reduce((sum, file) => sum + file.tokens, 0); } for (const [key, value] of Object.entries(node)) { if (key.startsWith('_') || !value || typeof value !== 'object' || Array.isArray(value)) { continue; } totalTokens += calculateTokenSums(value); } node._tokenSum = totalTokens; return totalTokens; };