Skip to main content
Glama
NamingValidator.ts3.22 kB
import WorkflowValidator from '../resources/WorkflowValidator.js'; /** * Validateur pour les conventions de nommage dans les workflows n8n */ class NamingValidator implements WorkflowValidator { /** * Valide les conventions de nommage dans un workflow n8n * @param workflow Les données du workflow à valider * @param strictness Le niveau de rigueur de la validation * @returns Résultat de la validation avec les problèmes détectés */ validate(workflow: any, strictness: 'low' | 'medium' | 'high') { const issues: Array<{ message: string; recommendation: string; severity: 'low' | 'medium' | 'high'; location?: string; }> = []; // Vérifier le nom du workflow if (!workflow.name) { issues.push({ message: 'Le workflow n\'a pas de nom', recommendation: 'Donnez un nom descriptif au workflow', severity: 'high', }); } else { // Vérifier la longueur du nom if (workflow.name.length < 5) { issues.push({ message: 'Le nom du workflow est trop court', recommendation: 'Utilisez un nom plus descriptif (au moins 5 caractères)', severity: strictness === 'low' ? 'low' : 'medium', }); } // Vérifier le format du nom selon le niveau de rigueur if (strictness === 'high') { // Format recommandé: [Domaine]_[Action]_[Entité] const namingPattern = /^[A-Z][a-z]+_[A-Za-z]+_[A-Za-z]+$/; if (!namingPattern.test(workflow.name)) { issues.push({ message: 'Le nom du workflow ne suit pas le format recommandé', recommendation: 'Utilisez le format [Domaine]_[Action]_[Entité] (ex: Marketing_Send_Newsletter)', severity: 'medium', }); } } } // Vérifier les noms des nœuds si le workflow contient des nœuds if (workflow.nodes && Array.isArray(workflow.nodes)) { workflow.nodes.forEach((node: any) => { if (!node.name) { issues.push({ message: `Un nœud de type ${node.type || 'inconnu'} n'a pas de nom`, recommendation: 'Donnez un nom descriptif à chaque nœud', severity: 'medium', location: node.id, }); } else if (node.name === node.type) { // Le nœud a le même nom que son type (nom par défaut) issues.push({ message: `Le nœud "${node.name}" utilise le nom par défaut`, recommendation: 'Renommez le nœud pour décrire son rôle spécifique dans le workflow', severity: 'low', location: node.id, }); } // Pour les niveaux de rigueur medium et high, vérifier la longueur des noms if (strictness !== 'low' && node.name && node.name.length < 3) { issues.push({ message: `Le nom du nœud "${node.name}" est trop court`, recommendation: 'Utilisez un nom plus descriptif (au moins 3 caractères)', severity: 'low', location: node.id, }); } }); } return { valid: issues.length === 0, issues, }; } } export default NamingValidator;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lowprofix/n8n-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server