n8n
Version:
n8n Workflow Automation Tool
445 lines • 19.1 kB
JavaScript
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.directNodeReplacementRules = exports.WriteBinaryFileRemovedRule = exports.WorkflowTriggerRemovedRule = exports.SupabaseLoadRemovedRule = exports.SupabaseInsertRemovedRule = exports.SerpApiGoogleSearchRemovedRule = exports.ReadPdfRemovedRule = exports.ReadBinaryFilesRemovedRule = exports.ReadBinaryFileRemovedRule = exports.PineconeLoadRemovedRule = exports.PineconeInsertRemovedRule = exports.OpenAiModelRemovedRule = exports.OpenAiRemovedRule = exports.OpenAiAssistantRemovedRule = exports.ManualChatTriggerRemovedRule = exports.JsonInputLoaderRemovedRule = exports.IntervalRemovedRule = exports.InMemoryVectorStoreLoadRemovedRule = exports.InMemoryVectorStoreInsertRemovedRule = exports.ItemListsRemovedRule = exports.ICalendarRemovedRule = exports.HttpRequestToolRemovedRule = exports.HtmlExtractRemovedRule = exports.FunctionItemRemovedRule = exports.FunctionRemovedRule = exports.CronRemovedRule = exports.ConvertToFromBinaryDataRemovedRule = exports.ChatMessagesRetrieverRemovedRule = exports.BinaryInputLoaderRemovedRule = void 0;
const decorators_1 = require("@n8n/decorators");
function createNodeReplacementRule({ id, removedNodeName, removedNodeType, recommendations, }) {
let NodeReplacementRule = class NodeReplacementRule {
constructor() {
this.id = `${id}-v3`;
}
getMetadata() {
return {
version: 'v3',
title: `${removedNodeName} node removed`,
description: `The ${removedNodeName} node is no longer supported. ${recommendations.map(({ description }) => description).join(' ')}`,
category: "workflow",
severity: 'medium',
};
}
async getRecommendations(_workflowResults) {
await Promise.resolve();
return recommendations;
}
async detectWorkflow(_workflow, nodesGroupedByType) {
const removedNodes = nodesGroupedByType.get(removedNodeType) ?? [];
if (removedNodes.length === 0)
return { isAffected: false, issues: [] };
await Promise.resolve();
return {
isAffected: true,
issues: removedNodes.map((node) => ({
title: `${removedNodeName} node '${node.name}' is no longer supported`,
description: recommendations
.map((recommendation) => recommendation.description)
.join(' '),
level: 'error',
nodeId: node.id,
nodeName: node.name,
})),
};
}
};
NodeReplacementRule = __decorate([
(0, decorators_1.BreakingChangeRule)({ version: 'v3' })
], NodeReplacementRule);
return NodeReplacementRule;
}
exports.BinaryInputLoaderRemovedRule = createNodeReplacementRule({
id: 'binary-input-loader-removed',
removedNodeName: 'Binary Input Loader',
removedNodeType: '@n8n/n8n-nodes-langchain.documentBinaryInputLoader',
recommendations: [
{
action: 'Replace with Default Data Loader',
description: 'Replace this node with Default Data Loader and set Type of Data to Binary.',
},
],
});
exports.ChatMessagesRetrieverRemovedRule = createNodeReplacementRule({
id: 'chat-messages-retriever-removed',
removedNodeName: 'Chat Messages Retriever',
removedNodeType: '@n8n/n8n-nodes-langchain.memoryChatRetriever',
recommendations: [
{
action: 'Replace with Memory Manager',
description: 'Replace this node with Memory Manager and set Operation Mode to Get Many Messages.',
},
],
});
exports.ConvertToFromBinaryDataRemovedRule = createNodeReplacementRule({
id: 'convert-to-from-binary-data-removed',
removedNodeName: 'Convert to/from binary data',
removedNodeType: 'n8n-nodes-base.moveBinaryData',
recommendations: [
{
action: 'Replace with Convert to File',
description: 'For Base64 data to a binary file, replace this node with Convert to File and select Move Base64 String to File.',
},
{
action: 'Replace with Extract From File',
description: 'For a binary file to Base64 data, replace this node with Extract From File and select Move File to Base64 String.',
},
],
});
exports.CronRemovedRule = createNodeReplacementRule({
id: 'cron-removed',
removedNodeName: 'Cron',
removedNodeType: 'n8n-nodes-base.cron',
recommendations: [
{
action: 'Replace with Schedule Trigger',
description: 'Replace this node with Schedule Trigger and recreate its schedule rules.',
},
],
});
exports.FunctionRemovedRule = createNodeReplacementRule({
id: 'function-removed',
removedNodeName: 'Function',
removedNodeType: 'n8n-nodes-base.function',
recommendations: [
{
action: 'Replace with Code',
description: 'Replace this node with Code and set Mode to Run Once for All Items.',
},
],
});
exports.FunctionItemRemovedRule = createNodeReplacementRule({
id: 'function-item-removed',
removedNodeName: 'Function Item',
removedNodeType: 'n8n-nodes-base.functionItem',
recommendations: [
{
action: 'Replace with Code',
description: 'Replace this node with Code and set Mode to Run Once for Each Item.',
},
],
});
exports.HtmlExtractRemovedRule = createNodeReplacementRule({
id: 'html-extract-removed',
removedNodeName: 'HTML Extract',
removedNodeType: 'n8n-nodes-base.htmlExtract',
recommendations: [
{
action: 'Replace with HTML',
description: 'Replace this node with HTML and select Extract HTML Content.',
},
],
});
exports.HttpRequestToolRemovedRule = createNodeReplacementRule({
id: 'http-request-tool-removed',
removedNodeName: 'HTTP Request Tool',
removedNodeType: '@n8n/n8n-nodes-langchain.toolHttpRequest',
recommendations: [
{
action: 'Replace with HTTP Request',
description: 'Replace this node with HTTP Request and configure it for AI tool use.',
},
],
});
exports.ICalendarRemovedRule = createNodeReplacementRule({
id: 'i-calendar-removed',
removedNodeName: 'iCalendar',
removedNodeType: 'n8n-nodes-base.iCal',
recommendations: [
{
action: 'Replace with Convert to File',
description: 'Replace this node with Convert to File and select Convert to ICS.',
},
],
});
exports.ItemListsRemovedRule = createNodeReplacementRule({
id: 'item-lists-removed',
removedNodeName: 'Item Lists',
removedNodeType: 'n8n-nodes-base.itemLists',
recommendations: [
{
action: 'Replace with Aggregate',
description: 'For Concatenate Items, replace this node with Aggregate.',
},
{
action: 'Replace with Limit',
description: 'For Limit, replace this node with Limit.',
},
{
action: 'Replace with Remove Duplicates',
description: 'For Remove Duplicates, replace this node with Remove Duplicates.',
},
{
action: 'Replace with Sort',
description: 'For Sort, replace this node with Sort.',
},
{
action: 'Replace with Split Out',
description: 'For Split Out Items, replace this node with Split Out.',
},
{
action: 'Replace with Summarize',
description: 'For Summarize, replace this node with Summarize.',
},
],
});
exports.InMemoryVectorStoreInsertRemovedRule = createNodeReplacementRule({
id: 'in-memory-vector-store-insert-removed',
removedNodeName: 'In Memory Vector Store Insert',
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStoreInMemoryInsert',
recommendations: [
{
action: 'Replace with In-Memory Vector Store',
description: 'Replace this node with In-Memory Vector Store and select Insert Documents.',
},
],
});
exports.InMemoryVectorStoreLoadRemovedRule = createNodeReplacementRule({
id: 'in-memory-vector-store-load-removed',
removedNodeName: 'In Memory Vector Store Load',
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStoreInMemoryLoad',
recommendations: [
{
action: 'Replace with In-Memory Vector Store',
description: 'Replace this node with In-Memory Vector Store and select Get Many.',
},
],
});
exports.IntervalRemovedRule = createNodeReplacementRule({
id: 'interval-removed',
removedNodeName: 'Interval',
removedNodeType: 'n8n-nodes-base.interval',
recommendations: [
{
action: 'Replace with Schedule Trigger',
description: 'Replace this node with Schedule Trigger and recreate its interval.',
},
],
});
exports.JsonInputLoaderRemovedRule = createNodeReplacementRule({
id: 'json-input-loader-removed',
removedNodeName: 'JSON Input Loader',
removedNodeType: '@n8n/n8n-nodes-langchain.documentJsonInputLoader',
recommendations: [
{
action: 'Replace with Default Data Loader',
description: 'Replace this node with Default Data Loader and set Type of Data to JSON.',
},
],
});
exports.ManualChatTriggerRemovedRule = createNodeReplacementRule({
id: 'manual-chat-trigger-removed',
removedNodeName: 'Manual Chat Trigger',
removedNodeType: '@n8n/n8n-nodes-langchain.manualChatTrigger',
recommendations: [
{
action: 'Replace with Chat Trigger',
description: 'Replace this node with Chat Trigger and recreate its chat settings.',
},
],
});
exports.OpenAiAssistantRemovedRule = createNodeReplacementRule({
id: 'openai-assistant-removed',
removedNodeName: 'OpenAI Assistant',
removedNodeType: '@n8n/n8n-nodes-langchain.openAiAssistant',
recommendations: [
{
action: 'Replace with OpenAI',
description: 'Replace this node with OpenAI and select the Assistant resource.',
},
],
});
exports.OpenAiRemovedRule = createNodeReplacementRule({
id: 'openai-removed',
removedNodeName: 'OpenAI',
removedNodeType: 'n8n-nodes-base.openAi',
recommendations: [
{
action: 'Replace with OpenAI',
description: 'Replace this node with the new OpenAI node and recreate its settings.',
},
],
});
exports.OpenAiModelRemovedRule = createNodeReplacementRule({
id: 'openai-model-removed',
removedNodeName: 'OpenAI Model',
removedNodeType: '@n8n/n8n-nodes-langchain.lmOpenAi',
recommendations: [
{
action: 'Replace with OpenAI Chat Model',
description: 'Replace this node with OpenAI Chat Model and recreate its model settings.',
},
],
});
exports.PineconeInsertRemovedRule = createNodeReplacementRule({
id: 'pinecone-insert-removed',
removedNodeName: 'Pinecone: Insert',
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStorePineconeInsert',
recommendations: [
{
action: 'Replace with Pinecone Vector Store',
description: 'Replace this node with Pinecone Vector Store and select Insert Documents.',
},
],
});
exports.PineconeLoadRemovedRule = createNodeReplacementRule({
id: 'pinecone-load-removed',
removedNodeName: 'Pinecone: Load',
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStorePineconeLoad',
recommendations: [
{
action: 'Replace with Pinecone Vector Store',
description: 'Replace this node with Pinecone Vector Store and select Get Many.',
},
],
});
exports.ReadBinaryFileRemovedRule = createNodeReplacementRule({
id: 'read-binary-file-removed',
removedNodeName: 'Read Binary File',
removedNodeType: 'n8n-nodes-base.readBinaryFile',
recommendations: [
{
action: 'Replace with Read/Write Files from Disk',
description: 'Replace this node with Read/Write Files from Disk and select Read File(s) From Disk.',
},
],
});
exports.ReadBinaryFilesRemovedRule = createNodeReplacementRule({
id: 'read-binary-files-removed',
removedNodeName: 'Read Binary Files',
removedNodeType: 'n8n-nodes-base.readBinaryFiles',
recommendations: [
{
action: 'Replace with Read/Write Files from Disk',
description: 'Replace this node with Read/Write Files from Disk and select Read File(s) From Disk.',
},
],
});
exports.ReadPdfRemovedRule = createNodeReplacementRule({
id: 'read-pdf-removed',
removedNodeName: 'Read PDF',
removedNodeType: 'n8n-nodes-base.readPDF',
recommendations: [
{
action: 'Replace with Extract From File',
description: 'Replace this node with Extract From File and select Extract From PDF.',
},
],
});
exports.SerpApiGoogleSearchRemovedRule = createNodeReplacementRule({
id: 'serpapi-google-search-removed',
removedNodeName: 'SerpApi (Google Search)',
removedNodeType: '@n8n/n8n-nodes-langchain.toolSerpApi',
recommendations: [
{
action: 'Replace with SerpApi',
description: 'Replace this node with the verified SerpApi community node and recreate its search settings.',
},
],
});
exports.SupabaseInsertRemovedRule = createNodeReplacementRule({
id: 'supabase-insert-removed',
removedNodeName: 'Supabase: Insert',
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStoreSupabaseInsert',
recommendations: [
{
action: 'Replace with Supabase Vector Store',
description: 'Replace this node with Supabase Vector Store and select Insert Documents.',
},
],
});
exports.SupabaseLoadRemovedRule = createNodeReplacementRule({
id: 'supabase-load-removed',
removedNodeName: 'Supabase: Load',
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStoreSupabaseLoad',
recommendations: [
{
action: 'Replace with Supabase Vector Store',
description: 'Replace this node with Supabase Vector Store and select Get Many.',
},
],
});
exports.WorkflowTriggerRemovedRule = createNodeReplacementRule({
id: 'workflow-trigger-removed',
removedNodeName: 'Workflow Trigger',
removedNodeType: 'n8n-nodes-base.workflowTrigger',
recommendations: [
{
action: 'Replace with n8n Trigger',
description: 'Replace this node with n8n Trigger and recreate its event settings.',
},
],
});
exports.WriteBinaryFileRemovedRule = createNodeReplacementRule({
id: 'write-binary-file-removed',
removedNodeName: 'Write Binary File',
removedNodeType: 'n8n-nodes-base.writeBinaryFile',
recommendations: [
{
action: 'Replace with Read/Write Files from Disk',
description: 'Replace this node with Read/Write Files from Disk and select Write File to Disk.',
},
],
});
exports.directNodeReplacementRules = [
{
rule: exports.BinaryInputLoaderRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.documentBinaryInputLoader',
},
{
rule: exports.ChatMessagesRetrieverRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.memoryChatRetriever',
},
{ rule: exports.ConvertToFromBinaryDataRemovedRule, removedNodeType: 'n8n-nodes-base.moveBinaryData' },
{ rule: exports.CronRemovedRule, removedNodeType: 'n8n-nodes-base.cron' },
{ rule: exports.FunctionRemovedRule, removedNodeType: 'n8n-nodes-base.function' },
{ rule: exports.FunctionItemRemovedRule, removedNodeType: 'n8n-nodes-base.functionItem' },
{ rule: exports.HtmlExtractRemovedRule, removedNodeType: 'n8n-nodes-base.htmlExtract' },
{ rule: exports.HttpRequestToolRemovedRule, removedNodeType: '@n8n/n8n-nodes-langchain.toolHttpRequest' },
{ rule: exports.ICalendarRemovedRule, removedNodeType: 'n8n-nodes-base.iCal' },
{ rule: exports.ItemListsRemovedRule, removedNodeType: 'n8n-nodes-base.itemLists' },
{
rule: exports.InMemoryVectorStoreInsertRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStoreInMemoryInsert',
},
{
rule: exports.InMemoryVectorStoreLoadRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStoreInMemoryLoad',
},
{ rule: exports.IntervalRemovedRule, removedNodeType: 'n8n-nodes-base.interval' },
{
rule: exports.JsonInputLoaderRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.documentJsonInputLoader',
},
{
rule: exports.ManualChatTriggerRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.manualChatTrigger',
},
{ rule: exports.OpenAiAssistantRemovedRule, removedNodeType: '@n8n/n8n-nodes-langchain.openAiAssistant' },
{ rule: exports.OpenAiRemovedRule, removedNodeType: 'n8n-nodes-base.openAi' },
{ rule: exports.OpenAiModelRemovedRule, removedNodeType: '@n8n/n8n-nodes-langchain.lmOpenAi' },
{
rule: exports.PineconeInsertRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStorePineconeInsert',
},
{
rule: exports.PineconeLoadRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStorePineconeLoad',
},
{ rule: exports.ReadBinaryFileRemovedRule, removedNodeType: 'n8n-nodes-base.readBinaryFile' },
{ rule: exports.ReadBinaryFilesRemovedRule, removedNodeType: 'n8n-nodes-base.readBinaryFiles' },
{ rule: exports.ReadPdfRemovedRule, removedNodeType: 'n8n-nodes-base.readPDF' },
{ rule: exports.SerpApiGoogleSearchRemovedRule, removedNodeType: '@n8n/n8n-nodes-langchain.toolSerpApi' },
{
rule: exports.SupabaseInsertRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStoreSupabaseInsert',
},
{
rule: exports.SupabaseLoadRemovedRule,
removedNodeType: '@n8n/n8n-nodes-langchain.vectorStoreSupabaseLoad',
},
{ rule: exports.WorkflowTriggerRemovedRule, removedNodeType: 'n8n-nodes-base.workflowTrigger' },
{ rule: exports.WriteBinaryFileRemovedRule, removedNodeType: 'n8n-nodes-base.writeBinaryFile' },
];
//# sourceMappingURL=removed-nodes-with-replacements.rule.js.map