import TreesitterSemanticChunker from './lib/treesitter-semantic-chunker.js';
const chunker = new TreesitterSemanticChunker({
namingStrategy: 'domain-based'
});
console.log('π TREESITTER SEMANTIC CHUNKING TEST');
console.log('====================================\n');
console.log('π Testing treesitter-based analysis...\n');
try {
const result = await chunker.analyzeProject('.', ['web/src/**/*.{js,jsx,ts,tsx}']);
// Project Overview
console.log('π PROJECT OVERVIEW');
console.log(`π Files analyzed: ${result.summary.totalFiles}`);
console.log(`π¦ Semantic chunks created: ${result.summary.totalChunks}`);
console.log(`πΎ Total code size: ${Math.round(result.summary.totalSize / 1024)}KB`);
console.log(`π Total lines of code: ${result.summary.totalLines.toLocaleString()}`);
// Semantic Types
console.log('\nπ― SEMANTIC TYPES');
Object.entries(result.summary.semanticTypes).forEach(([type, count]) => {
console.log(` ${type}: ${count} files`);
});
// Business Domains
console.log('\nπ’ BUSINESS DOMAINS');
Object.entries(result.summary.businessDomains).forEach(([domain, count]) => {
console.log(` ${domain}: ${count} occurrences`);
});
// Technical Patterns
console.log('\nβοΈ TECHNICAL PATTERNS');
Object.entries(result.summary.technicalPatterns).forEach(([pattern, count]) => {
console.log(` ${pattern}: ${count} files`);
});
// Smart Chunks
console.log('\nπ§© SMART SEMANTIC CHUNKS');
console.log('==========================');
result.chunks.forEach((chunk, i) => {
console.log(`\n${i + 1}. π¦ ${chunk.name.toUpperCase()}`);
console.log(` π ${chunk.files.length} files | ${Math.round(chunk.size / 1024)}KB | ${chunk.purpose}`);
console.log(` π― Cohesion: ${chunk.cohesion.toFixed(2)} | Complexity: ${chunk.complexity.level}`);
console.log(` π’ Domains: ${chunk.businessDomains.join(', ') || 'none'}`);
console.log(` βοΈ Patterns: ${chunk.technicalPatterns.join(', ') || 'none'}`);
console.log(` π Files: ${chunk.files.slice(0, 3).map(f => f.split('/').pop()).join(', ')}${chunk.files.length > 3 ? `... +${chunk.files.length - 3} more` : ''}`);
if (chunk.recommendations.length > 0) {
console.log(` π‘ ${chunk.recommendations[0].message}`);
}
});
console.log('\n⨠TREESITTER ANALYSIS COMPLETE!');
console.log('=================================');
console.log('π Treesitter provides deeper semantic understanding');
console.log('π§ Smart clustering based on AST analysis');
console.log('π― Business domain extraction from code structure');
console.log('π Technical pattern recognition');
console.log('π Dependency relationship mapping');
} catch (error) {
console.error('β Treesitter analysis failed:', error.message);
console.error(error.stack);
}