Skip to main content
Glama
node-utils.js3.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeNodeType = normalizeNodeType; exports.getNodeTypeAlternatives = getNodeTypeAlternatives; exports.getWorkflowNodeType = getWorkflowNodeType; function normalizeNodeType(nodeType) { if (nodeType.startsWith('n8n-nodes-base.')) { return nodeType.replace('n8n-nodes-base.', 'nodes-base.'); } if (nodeType.startsWith('@n8n/n8n-nodes-langchain.')) { return nodeType.replace('@n8n/n8n-nodes-langchain.', 'nodes-langchain.'); } if (nodeType.startsWith('n8n-nodes-langchain.')) { return nodeType.replace('n8n-nodes-langchain.', 'nodes-langchain.'); } return nodeType; } function getNodeTypeAlternatives(nodeType) { if (!nodeType || typeof nodeType !== 'string' || nodeType.trim() === '') { return []; } const alternatives = []; alternatives.push(nodeType.toLowerCase()); if (nodeType.includes('.')) { const [prefix, nodeName] = nodeType.split('.'); if (nodeName && nodeName.toLowerCase() !== nodeName) { alternatives.push(`${prefix}.${nodeName.toLowerCase()}`); } if (nodeName && nodeName.toLowerCase() === nodeName && nodeName.length > 1) { const camelCaseVariants = generateCamelCaseVariants(nodeName); camelCaseVariants.forEach(variant => { alternatives.push(`${prefix}.${variant}`); }); } } if (!nodeType.includes('.')) { alternatives.push(`nodes-base.${nodeType}`); alternatives.push(`nodes-langchain.${nodeType}`); const camelCaseVariants = generateCamelCaseVariants(nodeType); camelCaseVariants.forEach(variant => { alternatives.push(`nodes-base.${variant}`); alternatives.push(`nodes-langchain.${variant}`); }); } const normalizedAlternatives = alternatives.map(alt => normalizeNodeType(alt)); return [...new Set([...alternatives, ...normalizedAlternatives])]; } function generateCamelCaseVariants(str) { const variants = []; const patterns = [ /^(.+)(trigger|node|request|response)$/i, /^(http|mysql|postgres|mongo|redis|mqtt|smtp|imap|ftp|ssh|api)(.+)$/i, /^(google|microsoft|amazon|slack|discord|telegram)(.+)$/i, ]; for (const pattern of patterns) { const match = str.toLowerCase().match(pattern); if (match) { const [, first, second] = match; variants.push(first.toLowerCase() + second.charAt(0).toUpperCase() + second.slice(1).toLowerCase()); } } if (variants.length === 0) { const words = str.split(/[-_\s]+/); if (words.length > 1) { const camelCase = words[0].toLowerCase() + words.slice(1).map(w => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()).join(''); variants.push(camelCase); } } return variants; } function getWorkflowNodeType(packageName, nodeType) { const nodeName = nodeType.split('.').pop() || nodeType; if (packageName === 'n8n-nodes-base') { return `n8n-nodes-base.${nodeName}`; } else if (packageName === '@n8n/n8n-nodes-langchain') { return `@n8n/n8n-nodes-langchain.${nodeName}`; } return nodeType; } //# sourceMappingURL=node-utils.js.map

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/czlonkowski/n8n-mcp'

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