fix(resource locator): add back extract value logic (#4178)

add back extract value logic
This commit is contained in:
Mutasem Aldmour
2022-09-23 11:56:57 +02:00
committed by GitHub
parent 87e6877f1d
commit 46f95622e3
7 changed files with 342 additions and 40 deletions

View File

@@ -543,6 +543,10 @@ export interface IN8nRequestOperationPaginationOffset extends IN8nRequestOperati
};
}
export interface IGetNodeParameterOptions {
extractValue?: boolean;
}
export interface IExecuteFunctions {
continueOnFail(): boolean;
evaluateExpression(expression: string, itemIndex: number): NodeParameterValueType;
@@ -564,6 +568,7 @@ export interface IExecuteFunctions {
parameterName: string,
itemIndex: number,
fallbackValue?: any,
options?: IGetNodeParameterOptions,
): NodeParameterValueType | object;
getWorkflowDataProxy(itemIndex: number): IWorkflowDataProxyData;
getWorkflowStaticData(type: string): IDataObject;
@@ -601,7 +606,11 @@ export interface IExecuteSingleFunctions {
getItemIndex(): number;
getMode(): WorkflowExecuteMode;
getNode(): INode;
getNodeParameter(parameterName: string, fallbackValue?: any): NodeParameterValueType | object;
getNodeParameter(
parameterName: string,
fallbackValue?: any,
options?: IGetNodeParameterOptions,
): NodeParameterValueType | object;
getRestApiUrl(): string;
getTimezone(): string;
getExecuteData(): IExecuteData;
@@ -647,7 +656,11 @@ export interface ICredentialTestFunctions {
export interface ILoadOptionsFunctions {
getCredentials(type: string): Promise<ICredentialDataDecryptedObject>;
getNode(): INode;
getNodeParameter(parameterName: string, fallbackValue?: any): NodeParameterValueType | object;
getNodeParameter(
parameterName: string,
fallbackValue?: any,
options?: IGetNodeParameterOptions,
): NodeParameterValueType | object;
getCurrentNodeParameter(parameterName: string): NodeParameterValueType | object | undefined;
getCurrentNodeParameters(): INodeParameters | undefined;
getTimezone(): string;
@@ -680,7 +693,11 @@ export interface IHookFunctions {
getActivationMode(): WorkflowActivateMode;
getNode(): INode;
getNodeWebhookUrl: (name: string) => string | undefined;
getNodeParameter(parameterName: string, fallbackValue?: any): NodeParameterValueType | object;
getNodeParameter(
parameterName: string,
fallbackValue?: any,
options?: IGetNodeParameterOptions,
): NodeParameterValueType | object;
getTimezone(): string;
getWebhookDescription(name: string): IWebhookDescription | undefined;
getWebhookName(): string;
@@ -706,7 +723,11 @@ export interface IPollFunctions {
getMode(): WorkflowExecuteMode;
getActivationMode(): WorkflowActivateMode;
getNode(): INode;
getNodeParameter(parameterName: string, fallbackValue?: any): NodeParameterValueType | object;
getNodeParameter(
parameterName: string,
fallbackValue?: any,
options?: IGetNodeParameterOptions,
): NodeParameterValueType | object;
getRestApiUrl(): string;
getTimezone(): string;
getWorkflow(): IWorkflowMetadata;
@@ -736,7 +757,11 @@ export interface ITriggerFunctions {
getMode(): WorkflowExecuteMode;
getActivationMode(): WorkflowActivateMode;
getNode(): INode;
getNodeParameter(parameterName: string, fallbackValue?: any): NodeParameterValueType | object;
getNodeParameter(
parameterName: string,
fallbackValue?: any,
options?: IGetNodeParameterOptions,
): NodeParameterValueType | object;
getRestApiUrl(): string;
getTimezone(): string;
getWorkflow(): IWorkflowMetadata;
@@ -761,7 +786,11 @@ export interface IWebhookFunctions {
getHeaderData(): object;
getMode(): WorkflowExecuteMode;
getNode(): INode;
getNodeParameter(parameterName: string, fallbackValue?: any): NodeParameterValueType | object;
getNodeParameter(
parameterName: string,
fallbackValue?: any,
options?: IGetNodeParameterOptions,
): NodeParameterValueType | object;
getNodeWebhookUrl: (name: string) => string | undefined;
getParamsData(): object;
getQueryData(): object;

View File

@@ -643,8 +643,15 @@ export class RoutingNode {
if (nodeProperties.routing) {
let parameterValue: string | undefined;
if (basePath + nodeProperties.name && 'type' in nodeProperties) {
// Extract value if it has extractValue defined or if it's a
// resourceLocator component. Resource locators are likely to have extractors
// and we can't know if the mode has one unless we dig all the way in.
const shouldExtractValue =
nodeProperties.extractValue !== undefined || nodeProperties.type === 'resourceLocator';
parameterValue = executeSingleFunctions.getNodeParameter(
basePath + nodeProperties.name,
undefined,
{ extractValue: shouldExtractValue },
) as string;
}