fix(core): Handle versioned custom nodes correctly (#5313)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2023-02-10 18:33:04 +01:00
committed by GitHub
parent 309c995364
commit 59f5c4221e
3 changed files with 11 additions and 12 deletions

View File

@@ -1,7 +1,7 @@
import * as path from 'path'; import * as path from 'path';
import { readFile } from 'fs/promises'; import { readFile } from 'fs/promises';
import glob from 'fast-glob'; import glob from 'fast-glob';
import { jsonParse, LoggerProxy as Logger } from 'n8n-workflow'; import { jsonParse, getVersionedNodeTypeAll, LoggerProxy as Logger } from 'n8n-workflow';
import type { import type {
CodexData, CodexData,
DocumentationLink, DocumentationLink,
@@ -133,7 +133,9 @@ export abstract class DirectoryLoader {
version: nodeVersion, version: nodeVersion,
}); });
this.types.nodes.push(tempNode.description); getVersionedNodeTypeAll(tempNode).forEach(({ description }) => {
this.types.nodes.push(description);
});
} }
protected loadCredentialFromFile(credentialName: string, filePath: string): void { protected loadCredentialFromFile(credentialName: string, filePath: string): void {

View File

@@ -1395,22 +1395,18 @@ export function getVersionedNodeType(
object: IVersionedNodeType | INodeType, object: IVersionedNodeType | INodeType,
version?: number, version?: number,
): INodeType { ): INodeType {
if (isNodeTypeVersioned(object)) { if ('nodeVersions' in object) {
return (object as IVersionedNodeType).getNodeType(version); return object.getNodeType(version);
} }
return object as INodeType; return object;
} }
export function getVersionedNodeTypeAll(object: IVersionedNodeType | INodeType): INodeType[] { export function getVersionedNodeTypeAll(object: IVersionedNodeType | INodeType): INodeType[] {
if (isNodeTypeVersioned(object)) { if ('nodeVersions' in object) {
return Object.values((object as IVersionedNodeType).nodeVersions).map((element) => { return Object.values(object.nodeVersions).map((element) => {
element.description.name = object.description.name; element.description.name = object.description.name;
return element; return element;
}); });
} }
return [object as INodeType]; return [object];
}
export function isNodeTypeVersioned(object: IVersionedNodeType | INodeType): boolean {
return !!('getNodeType' in object);
} }

View File

@@ -11,6 +11,7 @@ export * from './MessageEventBus';
export * from './Expression'; export * from './Expression';
export * from './ExpressionError'; export * from './ExpressionError';
export * from './NodeErrors'; export * from './NodeErrors';
export * from './NodeHelpers';
export * from './RoutingNode'; export * from './RoutingNode';
export * from './Workflow'; export * from './Workflow';
export * from './WorkflowActivationError'; export * from './WorkflowActivationError';