fix(core): delete some of the redundant code in core (#4359)
This commit is contained in:
committed by
GitHub
parent
2e69e2c953
commit
5eb1eb88e4
@@ -1,104 +1,11 @@
|
||||
/* eslint-disable no-restricted-syntax */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||
import type { INodeListSearchResult, IWorkflowExecuteAdditionalData } from 'n8n-workflow';
|
||||
|
||||
import {
|
||||
INode,
|
||||
INodeCredentials,
|
||||
INodeListSearchResult,
|
||||
INodeParameters,
|
||||
INodeTypeNameVersion,
|
||||
INodeTypes,
|
||||
IWorkflowExecuteAdditionalData,
|
||||
Workflow,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
import { NodeExecuteFunctions } from '.';
|
||||
import { LoadNodeDetails } from './LoadNodeDetails';
|
||||
|
||||
const TEMP_NODE_NAME = 'Temp-Node';
|
||||
const TEMP_WORKFLOW_NAME = 'Temp-Workflow';
|
||||
|
||||
export class LoadNodeListSearch {
|
||||
currentNodeParameters: INodeParameters;
|
||||
|
||||
path: string;
|
||||
|
||||
workflow: Workflow;
|
||||
|
||||
constructor(
|
||||
nodeTypeNameAndVersion: INodeTypeNameVersion,
|
||||
nodeTypes: INodeTypes,
|
||||
path: string,
|
||||
currentNodeParameters: INodeParameters,
|
||||
credentials?: INodeCredentials,
|
||||
) {
|
||||
const nodeType = nodeTypes.getByNameAndVersion(
|
||||
nodeTypeNameAndVersion.name,
|
||||
nodeTypeNameAndVersion.version,
|
||||
);
|
||||
this.currentNodeParameters = currentNodeParameters;
|
||||
this.path = path;
|
||||
if (nodeType === undefined) {
|
||||
throw new Error(
|
||||
`The node-type "${nodeTypeNameAndVersion.name} v${nodeTypeNameAndVersion.version}" is not known!`,
|
||||
);
|
||||
}
|
||||
|
||||
const nodeData: INode = {
|
||||
parameters: currentNodeParameters,
|
||||
id: 'uuid-1234',
|
||||
name: TEMP_NODE_NAME,
|
||||
type: nodeTypeNameAndVersion.name,
|
||||
typeVersion: nodeTypeNameAndVersion.version,
|
||||
position: [0, 0],
|
||||
};
|
||||
if (credentials) {
|
||||
nodeData.credentials = credentials;
|
||||
}
|
||||
|
||||
const workflowData = {
|
||||
nodes: [nodeData],
|
||||
connections: {},
|
||||
};
|
||||
|
||||
this.workflow = new Workflow({
|
||||
nodes: workflowData.nodes,
|
||||
connections: workflowData.connections,
|
||||
active: false,
|
||||
nodeTypes,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns data of a fake workflow
|
||||
*
|
||||
* @returns
|
||||
* @memberof LoadNodeParameterOptions
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||||
getWorkflowData() {
|
||||
return {
|
||||
name: TEMP_WORKFLOW_NAME,
|
||||
active: false,
|
||||
connections: {},
|
||||
nodes: Object.values(this.workflow.nodes),
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date(),
|
||||
};
|
||||
}
|
||||
|
||||
export class LoadNodeListSearch extends LoadNodeDetails {
|
||||
/**
|
||||
* Returns the available options via a predefined method
|
||||
*
|
||||
* @param {string} methodName The name of the method of which to get the data from
|
||||
* @param {IWorkflowExecuteAdditionalData} additionalData
|
||||
* @returns {Promise<INodePropertyOptions[]>}
|
||||
* @memberof LoadNodeParameterOptions
|
||||
*/
|
||||
async getOptionsViaMethodName(
|
||||
methodName: string,
|
||||
@@ -106,28 +13,24 @@ export class LoadNodeListSearch {
|
||||
filter?: string,
|
||||
paginationToken?: string,
|
||||
): Promise<INodeListSearchResult> {
|
||||
const node = this.workflow.getNode(TEMP_NODE_NAME);
|
||||
const node = this.getTempNode();
|
||||
|
||||
const nodeType = this.workflow.nodeTypes.getByNameAndVersion(node!.type, node?.typeVersion);
|
||||
const nodeType = this.workflow.nodeTypes.getByNameAndVersion(node.type, node.typeVersion);
|
||||
const method = nodeType?.methods?.listSearch?.[methodName];
|
||||
|
||||
if (
|
||||
!nodeType ||
|
||||
nodeType.methods === undefined ||
|
||||
nodeType.methods.listSearch === undefined ||
|
||||
nodeType.methods.listSearch[methodName] === undefined
|
||||
) {
|
||||
if (typeof method !== 'function') {
|
||||
throw new Error(
|
||||
`The node-type "${node!.type}" does not have the method "${methodName}" defined!`,
|
||||
`The node-type "${node.type}" does not have the method "${methodName}" defined!`,
|
||||
);
|
||||
}
|
||||
|
||||
const thisArgs = NodeExecuteFunctions.getLoadOptionsFunctions(
|
||||
this.workflow,
|
||||
node!,
|
||||
node,
|
||||
this.path,
|
||||
additionalData,
|
||||
);
|
||||
|
||||
return nodeType.methods.listSearch[methodName].call(thisArgs, filter, paginationToken);
|
||||
return method.call(thisArgs, filter, paginationToken);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user