feat(core): Add support for pairedItem (beta) (#3012)

*  Add pairedItem support

* 👕 Fix lint issue

* 🐛 Fix resolution in frontend

* 🐛 Fix resolution issue

* 🐛 Fix resolution in frontend

* 🐛 Fix another resolution issue in frontend

*  Try to automatically add pairedItem data if possible

*  Cleanup

*  Display expression errors in editor UI

* 🐛 Fix issue that it did not display errors in production

* 🐛 Fix auto-fix of missing pairedItem data

* 🐛 Fix frontend resolution for not executed nodes

*  Fail execution on pairedItem resolve issue and display information
about itemIndex and runIndex

*  Allow that pairedItem is only set to number if runIndex is 0

*  Improve Expression Errors

*  Remove no longer needed code

*  Make errors more helpful

*  Add additional errors

* 👕 Fix lint issue

*  Add pairedItem support to core nodes

*  Improve support in Merge-Node

*  Fix issue with not correctly converted incoming pairedItem data

* 🐛 Fix frontend resolve issue

* 🐛 Fix frontend parameter name display issue

*  Improve errors

* 👕 Fix lint issue

*  Improve errors

*  Make it possible to display parameter name in error messages

*  Improve error messages

*  Fix error message

*  Improve error messages

*  Add another error message

*  Simplify
This commit is contained in:
Jan Oberhauser
2022-06-03 17:25:07 +02:00
committed by GitHub
parent 450a9aafea
commit bdb84130d6
52 changed files with 1317 additions and 152 deletions

View File

@@ -1232,6 +1232,9 @@ export class HttpRequest implements INodeType {
json: {
error: response.reason,
},
pairedItem: {
item: itemIndex,
},
},
);
continue;
@@ -1251,6 +1254,9 @@ export class HttpRequest implements INodeType {
const newItem: INodeExecutionData = {
json: {},
binary: {},
pairedItem: {
item: itemIndex,
},
};
if (items[itemIndex].binary !== undefined) {
@@ -1295,12 +1301,20 @@ export class HttpRequest implements INodeType {
returnItem[property] = response![property];
}
returnItems.push({ json: returnItem });
returnItems.push({
json: returnItem,
pairedItem: {
item: itemIndex,
},
});
} else {
returnItems.push({
json: {
[dataPropertyName]: response,
},
pairedItem: {
item: itemIndex,
},
});
}
} else {
@@ -1319,7 +1333,12 @@ export class HttpRequest implements INodeType {
}
}
returnItems.push({ json: returnItem });
returnItems.push({
json: returnItem,
pairedItem: {
item: itemIndex,
},
});
} else {
if (responseFormat === 'json' && typeof response === 'string') {
try {
@@ -1330,9 +1349,19 @@ export class HttpRequest implements INodeType {
}
if (options.splitIntoItems === true && Array.isArray(response)) {
response.forEach(item => returnItems.push({ json: item }));
response.forEach(item => returnItems.push({
json: item,
pairedItem: {
item: itemIndex,
},
}));
} else {
returnItems.push({ json: response });
returnItems.push({
json: response,
pairedItem: {
item: itemIndex,
},
});
}
}
}