graphql-lint-unused-fields-clint
v1.6.1
Published
Clint-specific tool for detecting unused GraphQL fields
Maintainers
Readme
graphql-lint-unused-fields-clint
🎯 Clint-specific package - GraphQL Lint extension for detecting custom patterns in the Clint platform.
📦 Installation
npm install graphql-lint-unused-fields-clint🎯 Clint-Specific Features
- ✅ Hasura actions.graphql detection
- ✅ Custom Clint patterns (
clint.entity.method) - ✅ Automatic mapping (
owner_get_name→clint.owner.getName) - ✅ Variable tracking with Clint-specific translations
- ✅ Specific usage analysis for Clint architecture
🔗 Detected Patterns
GraphQL Actions → Code Usage
# actions.graphql
type Query {
owner_get_name(id: uuid!): ResultStatusOutput
user_get_profile(id: uuid!): UserProfile
payment_process_order(data: OrderInput!): PaymentResult
}// Usage in Clint code
const ownerName = await clint.owner.getName(id);
const userProfile = await clint.user.getProfile(userId);
const paymentResult = await clint.payment.processOrder(orderData);🔍 Variable Tracking
Clint-Specific Translations
O sistema de tracking do Clint entende traduções especiais de queries:
// Padrões detectados automaticamente:
clint.owner.getName() → owner_get_name
clint.user.createAccount() → user_create_account
thisOwner.getSomething() → owner_get_something
owner.doSomething() → owner_do_somethingVariable Mapping
import { ClintVariableTracker } from "graphql-lint-unused-fields-clint";
const tracker = new ClintVariableTracker();
// Analisa atribuições de variáveis
tracker.analyzeVariableAssignments(sourceFile);
// Busca por padrões Clint específicos
const matches = tracker.findClintPatternMatches(["userData"], "getUserInfo", [
"user_get_data",
"user_create_profile",
]);
console.log("Matches:", matches);🚀 Usage
Clint-Specific CLI
npx graphql-lint-clint /path/to/clintProgrammatic
import {
ClintGraphQLExtractor,
ClintUsageAnalyzer,
ClintVariableTracker,
} from "graphql-lint-unused-fields-clint";
// Extract actions from actions.graphql
const extractor = new ClintGraphQLExtractor();
const actions = await extractor.extractClintQueries("/clint/project");
// Analyze usage with variable tracking
const analyzer = new ClintUsageAnalyzer(actionPatterns);
const result = await analyzer.analyzeUsageInPath("/clint/project", true);
console.log(`Actions detected: ${result.totalActions}`);
console.log(`Variable mappings: ${result.variableTracking.totalMappings}`);🔧 Pattern Converters
import {
actionToClintPattern,
clintPatternToAction,
} from "graphql-lint-unused-fields-clint";
// GraphQL Action → Clint Pattern
actionToClintPattern("owner_get_name"); // → 'clint.owner.getName'
actionToClintPattern("user_update_profile"); // → 'clint.user.updateProfile'
// Clint Pattern → GraphQL Action
clintPatternToAction("clint.owner.getName"); // → 'owner_get_name'
clintPatternToAction("clint.payment.processOrder"); // → 'payment_process_order'📊 Analysis Result
🎯 CLINT ANALYSIS - CUSTOM ACTIONS
📊 STATISTICS:
🎯 Actions detected: 23
📋 Clint patterns found: 156
✅ Actions in use: 19 (83%)
❌ Unused actions: 4 (17%)
🔍 Variable mappings: 45
🎯 Clint patterns tracked: 23
❌ UNUSED ACTIONS:
🔹 owner_get_permissions
• Pattern: clint.owner.getPermissions
• File: actions.graphql:45
🔹 user_archive_data
• Pattern: clint.user.archiveData
• File: actions.graphql:78🏗️ Architecture
graphql-lint-unused-fields-clint
├── ClintGraphQLExtractor # Extract actions.graphql
├── ClintUsageAnalyzer # Analyze clint.* patterns
├── ClintVariableTracker # Track Clint-specific variables
└── Pattern Converters # action_name ↔ clint.entity.method🔗 Core Integration
This package extends graphql-lint-unused-fields with Clint-specific functionality:
import { UnusedFieldsLinter } from "graphql-lint-unused-fields";
import { ClintGraphQLExtractor } from "graphql-lint-unused-fields-clint";
const linter = new UnusedFieldsLinter();
const clintExtractor = new ClintGraphQLExtractor();
// Combine traditional + Clint analysis
const coreQueries = await linter.extractQueries(projectPath);
const clintActions = await clintExtractor.extractClintQueries(projectPath);
const allQueries = [...coreQueries, ...clintActions];📝 License
MIT
