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
Markdown
# @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