mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 02:21:13 +00:00
refactor: rename NodeVersionedType to VersionedNodeType and move it to the workflow package (#4443)
This commit is contained in:
committed by
GitHub
parent
adef6d7083
commit
5c9b40117a
@@ -1144,7 +1144,7 @@ export interface INodeType {
|
||||
};
|
||||
}
|
||||
|
||||
export interface INodeVersionedType {
|
||||
export interface IVersionedNodeType {
|
||||
nodeVersions: {
|
||||
[key: number]: INodeType;
|
||||
};
|
||||
@@ -1423,7 +1423,7 @@ export type WebhookResponseMode = 'onReceived' | 'lastNode';
|
||||
export interface INodeTypes {
|
||||
nodeTypes: INodeTypeData;
|
||||
init(nodeTypes?: INodeTypeData): Promise<void>;
|
||||
getAll(): Array<INodeType | INodeVersionedType>;
|
||||
getAll(): Array<INodeType | IVersionedNodeType>;
|
||||
getByNameAndVersion(nodeType: string, version?: number): INodeType | undefined;
|
||||
}
|
||||
|
||||
@@ -1436,7 +1436,7 @@ export interface ICredentialTypeData {
|
||||
|
||||
export interface INodeTypeData {
|
||||
[key: string]: {
|
||||
type: INodeType | INodeVersionedType;
|
||||
type: INodeType | IVersionedNodeType;
|
||||
sourcePath: string;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ import {
|
||||
INodePropertyModeValidation,
|
||||
INodePropertyRegexValidation,
|
||||
INodeType,
|
||||
INodeVersionedType,
|
||||
IVersionedNodeType,
|
||||
IParameterDependencies,
|
||||
IRunExecutionData,
|
||||
IWebhookData,
|
||||
@@ -1379,18 +1379,18 @@ export function mergeNodeProperties(
|
||||
}
|
||||
|
||||
export function getVersionedNodeType(
|
||||
object: INodeVersionedType | INodeType,
|
||||
object: IVersionedNodeType | INodeType,
|
||||
version?: number,
|
||||
): INodeType {
|
||||
if (isNodeTypeVersioned(object)) {
|
||||
return (object as INodeVersionedType).getNodeType(version);
|
||||
return (object as IVersionedNodeType).getNodeType(version);
|
||||
}
|
||||
return object as INodeType;
|
||||
}
|
||||
|
||||
export function getVersionedNodeTypeAll(object: INodeVersionedType | INodeType): INodeType[] {
|
||||
export function getVersionedNodeTypeAll(object: IVersionedNodeType | INodeType): INodeType[] {
|
||||
if (isNodeTypeVersioned(object)) {
|
||||
return Object.values((object as INodeVersionedType).nodeVersions).map((element) => {
|
||||
return Object.values((object as IVersionedNodeType).nodeVersions).map((element) => {
|
||||
element.description.name = object.description.name;
|
||||
return element;
|
||||
});
|
||||
@@ -1398,6 +1398,6 @@ export function getVersionedNodeTypeAll(object: INodeVersionedType | INodeType):
|
||||
return [object as INodeType];
|
||||
}
|
||||
|
||||
export function isNodeTypeVersioned(object: INodeVersionedType | INodeType): boolean {
|
||||
export function isNodeTypeVersioned(object: IVersionedNodeType | INodeType): boolean {
|
||||
return !!('getNodeType' in object);
|
||||
}
|
||||
|
||||
30
packages/workflow/src/VersionedNodeType.ts
Normal file
30
packages/workflow/src/VersionedNodeType.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import type { INodeTypeBaseDescription, IVersionedNodeType, INodeType } from './Interfaces';
|
||||
|
||||
export class VersionedNodeType implements IVersionedNodeType {
|
||||
currentVersion: number;
|
||||
|
||||
nodeVersions: IVersionedNodeType['nodeVersions'];
|
||||
|
||||
description: INodeTypeBaseDescription;
|
||||
|
||||
constructor(
|
||||
nodeVersions: IVersionedNodeType['nodeVersions'],
|
||||
description: INodeTypeBaseDescription,
|
||||
) {
|
||||
this.nodeVersions = nodeVersions;
|
||||
this.currentVersion = description.defaultVersion ?? this.getLatestVersion();
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
getLatestVersion() {
|
||||
return Math.max(...Object.keys(this.nodeVersions).map(Number));
|
||||
}
|
||||
|
||||
getNodeType(version?: number): INodeType {
|
||||
if (version) {
|
||||
return this.nodeVersions[version];
|
||||
} else {
|
||||
return this.nodeVersions[this.currentVersion];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ export * from './WorkflowActivationError';
|
||||
export * from './WorkflowDataProxy';
|
||||
export * from './WorkflowErrors';
|
||||
export * from './WorkflowHooks';
|
||||
export * from './VersionedNodeType';
|
||||
export { LoggerProxy, NodeHelpers, ObservableObject, TelemetryHelpers };
|
||||
export { deepCopy, jsonParse } from './utils';
|
||||
export {
|
||||
|
||||
@@ -25,7 +25,7 @@ import {
|
||||
INodeType,
|
||||
INodeTypeData,
|
||||
INodeTypes,
|
||||
INodeVersionedType,
|
||||
IVersionedNodeType,
|
||||
IRunExecutionData,
|
||||
ITaskDataConnections,
|
||||
IWorkflowBase,
|
||||
@@ -680,7 +680,7 @@ class NodeTypesClass implements INodeTypes {
|
||||
return Object.values(this.nodeTypes).map((data) => NodeHelpers.getVersionedNodeType(data.type));
|
||||
}
|
||||
|
||||
getByName(nodeType: string): INodeType | INodeVersionedType | undefined {
|
||||
getByName(nodeType: string): INodeType | IVersionedNodeType | undefined {
|
||||
return this.getByNameAndVersion(nodeType);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user