mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-01-30 06:22:04 +00:00
81 lines
3.2 KiB
JavaScript
81 lines
3.2 KiB
JavaScript
"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
|