n8n/packages/editor-ui/src/utils/mappingUtils.ts

32 lines
731 B
TypeScript
Raw Normal View History

export function generatePath(root: string, path: Array<string | number>): string {
return path.reduce((accu: string, part: string | number) => {
if (typeof part === 'number') {
return `${accu}[${part}]`;
}
if (part.includes(' ') || part.includes('.')) {
return `${accu}["${part}"]`;
}
return `${accu}.${part}`;
}, root);
}
export function getMappedExpression({
nodeName,
distanceFromActive,
path,
}: {
nodeName: string;
distanceFromActive: number;
path: Array<string | number> | string;
}) {
const root = distanceFromActive === 1 ? '$json' : generatePath('$node', [nodeName, 'json']);
if (typeof path === 'string') {
return `{{ ${root}${path} }}`;
}
return `{{ ${generatePath(root, path)} }}`;
}