n8n/packages/cli/test/shared/helpers.ts
Danny Martini 3c2d14fb5a
refactor(core, editor): Split logic based on payload type / manual execution type (#22219)
Co-authored-by: Michael Siega <michael.siega@n8n.io>
Co-authored-by: mfsiega <93014743+mfsiega@users.noreply.github.com>
2025-11-27 14:16:06 +01:00

44 lines
1.0 KiB
TypeScript

import {
NodeConnectionTypes,
type IDataObject,
type ITaskData,
type NodeConnectionType,
} from 'n8n-workflow';
type TaskData = {
data: IDataObject;
outputIndex?: number;
nodeConnectionType?: NodeConnectionType;
};
export function toITaskData(taskData: TaskData[], overrides?: Partial<ITaskData>): ITaskData {
const result: ITaskData = {
executionStatus: 'success',
executionTime: 0,
startTime: 0,
executionIndex: 0,
source: [],
data: {},
...(overrides ?? {}),
};
// NOTE: Here to make TS happy.
result.data = result.data ?? {};
for (const taskDatum of taskData) {
const type = taskDatum.nodeConnectionType ?? NodeConnectionTypes.Main;
const outputIndex = taskDatum.outputIndex ?? 0;
result.data[type] = result.data[type] ?? [];
const dataConnection = result.data[type];
dataConnection[outputIndex] = [{ json: taskDatum.data }];
}
for (const [type, dataConnection] of Object.entries(result.data)) {
for (const [index, maybe] of dataConnection.entries()) {
result.data[type][index] = maybe ?? null;
}
}
return result;
}