graphql-lint-clint-platform
Version:
GraphQL unused fields linter for Clint platform - Custom patterns and actions.graphql support
87 lines (70 loc) • 2.63 kB
JavaScript
const { AdvancedUsageAnalyzer } = require('./dist/advancedUsageAnalyzer.js');
const fs = require('fs');
const path = require('path');
async function testBruteForce() {
console.log('🧪 Testando análise por força bruta no projeto Clint...');
// Path do projeto Clint
const clintPath = '/Users/franco/Applications/Coded/Clint';
if (!fs.existsSync(clintPath)) {
console.log('❌ Projeto Clint não encontrado em:', clintPath);
return;
}
// Carregar um subconjunto de arquivos do Clint para teste
const testFiles = new Map();
function loadFiles(dir, maxFiles = 20) {
const files = fs.readdirSync(dir);
let count = 0;
for (const file of files) {
if (count >= maxFiles) break;
const fullPath = path.join(dir, file);
const stat = fs.statSync(fullPath);
if (stat.isDirectory() && !file.includes('node_modules') && !file.startsWith('.')) {
loadFiles(fullPath, maxFiles - count);
} else if (file.endsWith('.ts') || file.endsWith('.tsx') || file.endsWith('.js') || file.endsWith('.jsx')) {
try {
const content = fs.readFileSync(fullPath, 'utf8');
testFiles.set(fullPath, content);
count++;
console.log(`📁 Carregado: ${fullPath}`);
} catch (error) {
console.warn(`⚠️ Erro ao ler ${fullPath}: ${error.message}`);
}
}
}
}
console.log('📂 Carregando arquivos de teste...');
loadFiles(clintPath, 50);
console.log(`📊 Total de arquivos carregados: ${testFiles.size}`);
// Criar algumas queries de exemplo para testar
const testQueries = [
{
name: 'balance',
fields: [
{ name: 'balance', path: ['balance'] },
{ name: 'payment_id', path: ['payment_id'] },
{ name: 'user_id', path: ['user_id'] },
{ name: 'amount', path: ['amount'] },
{ name: 'currency', path: ['currency'] },
{ name: 'status', path: ['status'] },
{ name: 'created_at', path: ['created_at'] },
{ name: 'updated_at', path: ['updated_at'] },
]
},
{
name: 'user',
fields: [
{ name: 'id', path: ['id'] },
{ name: 'name', path: ['name'] },
{ name: 'email', path: ['email'] },
{ name: 'avatar', path: ['avatar'] },
{ name: 'role', path: ['role'] },
]
}
];
const analyzer = new AdvancedUsageAnalyzer();
console.log('🔍 Iniciando análise...');
analyzer.analyzeUsage(testQueries, testFiles);
console.log('✅ Análise completa!');
}
testBruteForce().catch(console.error);