UNPKG

graphql-lint-clint-platform

Version:

GraphQL unused fields linter for Clint platform - Custom patterns and actions.graphql support

134 lines (96 loc) 3.45 kB
# @graphql-lint/clint 🎯 **Package específica da Clint** - Extensão do GraphQL Lint para detectar padrões customizados da plataforma Clint. ## 📦 Instalação ```bash npm install @graphql-lint/clint ``` ## 🎯 Funcionalidades Específicas da Clint - ✅ **Detecção de actions.graphql** do Hasura - ✅ **Padrões Clint customizados** (`clint.entity.method`) - ✅ **Mapeamento automático** (`owner_get_name` → `clint.owner.getName`) - ✅ **Análise de uso específica** para arquitetura Clint ## 🔗 Padrões Detectados ### Actions GraphQL → Uso no Código ```graphql # actions.graphql type Query { owner_get_name(id: uuid!): ResultStatusOutput user_get_profile(id: uuid!): UserProfile payment_process_order(data: OrderInput!): PaymentResult } ``` ```typescript // Uso no código Clint const ownerName = await clint.owner.getName(id); const userProfile = await clint.user.getProfile(userId); const paymentResult = await clint.payment.processOrder(orderData); ``` ## 🚀 Uso ### CLI Específico da Clint ```bash npx graphql-lint-clint /caminho/da/clint ``` ### Programático ```typescript import { ClintGraphQLExtractor, ClintUsageAnalyzer } from "@graphql-lint/clint"; // Extrair actions do actions.graphql const extractor = new ClintGraphQLExtractor(); const actions = await extractor.extractClintQueries("/projeto/clint"); // Analisar uso dos padrões clint.entity.method const analyzer = new ClintUsageAnalyzer(); const usageMap = await analyzer.analyzeClintUsagePatterns( actions, fileContents ); console.log(`Actions detectadas: ${actions.length}`); ``` ## 🔧 Conversores de Padrões ```typescript import { actionToClintPattern, clintPatternToAction, } from "@graphql-lint/clint"; // Action GraphQL → Padrão Clint actionToClintPattern("owner_get_name"); // → 'clint.owner.getName' actionToClintPattern("user_update_profile"); // → 'clint.user.updateProfile' // Padrão Clint → Action GraphQL clintPatternToAction("clint.owner.getName"); // → 'owner_get_name' clintPatternToAction("clint.payment.processOrder"); // → 'payment_process_order' ``` ## 📊 Resultado de Análise ``` 🎯 ANÁLISE CLINT - ACTIONS CUSTOMIZADAS 📊 ESTATÍSTICAS: 🎯 Actions detectadas: 23 📋 Padrões Clint encontrados: 156 ✅ Actions em uso: 19 (83%) ❌ Actions não utilizadas: 4 (17%) ❌ ACTIONS NÃO UTILIZADAS: 🔹 owner_get_permissions • Padrão: clint.owner.getPermissions • Arquivo: actions.graphql:45 🔹 user_archive_data • Padrão: clint.user.archiveData • Arquivo: actions.graphql:78 ``` ## 🏗️ Arquitetura ``` @graphql-lint/clint ├── ClintGraphQLExtractor # Extrai actions.graphql ├── ClintUsageAnalyzer # Analisa padrões clint.* └── Pattern Converters # action_name ↔ clint.entity.method ``` ## 🔗 Integração com Core Esta package estende `@graphql-lint/core` com funcionalidades específicas da Clint: ```typescript import { UnusedFieldsLinter } from "@graphql-lint/core"; import { ClintGraphQLExtractor } from "@graphql-lint/clint"; const linter = new UnusedFieldsLinter(); const clintExtractor = new ClintGraphQLExtractor(); // Combinar análise tradicional + Clint const coreQueries = await linter.extractQueries(projectPath); const clintActions = await clintExtractor.extractClintQueries(projectPath); const allQueries = [...coreQueries, ...clintActions]; ``` ## 📝 Licença MIT