fix(core): delete some of the redundant code in core (#4359)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2022-10-21 11:38:56 +02:00
committed by GitHub
parent 2e69e2c953
commit 5eb1eb88e4
4 changed files with 131 additions and 259 deletions

View File

@@ -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);
}
}