n8n-workflow 2.22.1 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/execution-context.d.ts +2 -2
- package/dist/cjs/execution-context.js +6 -6
- package/dist/cjs/execution-context.js.map +1 -1
- package/dist/cjs/expression.d.ts.map +1 -1
- package/dist/cjs/expression.js +18 -7
- package/dist/cjs/expression.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces.d.ts +29 -0
- package/dist/cjs/interfaces.d.ts.map +1 -1
- package/dist/cjs/interfaces.js.map +1 -1
- package/dist/cjs/node-grouping-validation.d.ts +50 -0
- package/dist/cjs/node-grouping-validation.d.ts.map +1 -0
- package/dist/cjs/node-grouping-validation.js +158 -0
- package/dist/cjs/node-grouping-validation.js.map +1 -0
- package/dist/cjs/sub-workflow-output.d.ts +6 -0
- package/dist/cjs/sub-workflow-output.d.ts.map +1 -0
- package/dist/cjs/sub-workflow-output.js +21 -0
- package/dist/cjs/sub-workflow-output.js.map +1 -0
- package/dist/cjs/typecheck.tsbuildinfo +1 -1
- package/dist/cjs/workflow-checksum.d.ts +3 -2
- package/dist/cjs/workflow-checksum.d.ts.map +1 -1
- package/dist/cjs/workflow-checksum.js +1 -0
- package/dist/cjs/workflow-checksum.js.map +1 -1
- package/dist/cjs/workflow.d.ts.map +1 -1
- package/dist/cjs/workflow.js +4 -0
- package/dist/cjs/workflow.js.map +1 -1
- package/dist/esm/execution-context.d.ts +2 -2
- package/dist/esm/execution-context.js +6 -6
- package/dist/esm/execution-context.js.map +1 -1
- package/dist/esm/expression.d.ts.map +1 -1
- package/dist/esm/expression.js +18 -7
- package/dist/esm/expression.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.d.ts +29 -0
- package/dist/esm/interfaces.d.ts.map +1 -1
- package/dist/esm/interfaces.js.map +1 -1
- package/dist/esm/node-grouping-validation.d.ts +50 -0
- package/dist/esm/node-grouping-validation.d.ts.map +1 -0
- package/dist/esm/node-grouping-validation.js +144 -0
- package/dist/esm/node-grouping-validation.js.map +1 -0
- package/dist/esm/sub-workflow-output.d.ts +6 -0
- package/dist/esm/sub-workflow-output.d.ts.map +1 -0
- package/dist/esm/sub-workflow-output.js +8 -0
- package/dist/esm/sub-workflow-output.js.map +1 -0
- package/dist/esm/typecheck.tsbuildinfo +1 -1
- package/dist/esm/workflow-checksum.d.ts +3 -2
- package/dist/esm/workflow-checksum.d.ts.map +1 -1
- package/dist/esm/workflow-checksum.js +1 -0
- package/dist/esm/workflow-checksum.js.map +1 -1
- package/dist/esm/workflow.d.ts.map +1 -1
- package/dist/esm/workflow.js +4 -0
- package/dist/esm/workflow.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports", "./graph/graph-utils", "./interfaces", "./node-helpers"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.validateNodeSelectionForExtraction = validateNodeSelectionForExtraction;
|
|
13
|
+
exports.validateNodeSelectionForGrouping = validateNodeSelectionForGrouping;
|
|
14
|
+
const graph_utils_1 = require("./graph/graph-utils");
|
|
15
|
+
const interfaces_1 = require("./interfaces");
|
|
16
|
+
const node_helpers_1 = require("./node-helpers");
|
|
17
|
+
function validateNodeSelectionForExtraction({ nodes, connectionsBySourceNode, getNodeType, getNodeInputs, getNodeOutputs, }) {
|
|
18
|
+
const triggers = nodes.filter((node) => {
|
|
19
|
+
const nodeType = getNodeType(node);
|
|
20
|
+
return nodeType ? (0, node_helpers_1.isTriggerNode)(nodeType) : false;
|
|
21
|
+
});
|
|
22
|
+
if (triggers.length > 0) {
|
|
23
|
+
return {
|
|
24
|
+
valid: false,
|
|
25
|
+
reason: 'trigger-selected',
|
|
26
|
+
triggers: triggers.map((node) => node.name),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const adjacencyList = (0, graph_utils_1.buildAdjacencyList)(connectionsBySourceNode);
|
|
30
|
+
const selectedNodeNames = new Set(nodes.map((node) => node.name));
|
|
31
|
+
const selection = (0, graph_utils_1.parseExtractableSubgraphSelection)(selectedNodeNames, adjacencyList);
|
|
32
|
+
if (Array.isArray(selection)) {
|
|
33
|
+
return { valid: false, reason: 'invalid-subgraph', errors: selection };
|
|
34
|
+
}
|
|
35
|
+
const disconnectedSelectionError = findDisconnectedSelectionError(selectedNodeNames, adjacencyList);
|
|
36
|
+
if (disconnectedSelectionError) {
|
|
37
|
+
return { valid: false, reason: 'invalid-subgraph', errors: [disconnectedSelectionError] };
|
|
38
|
+
}
|
|
39
|
+
const nodesByName = new Map(nodes.map((node) => [node.name, node]));
|
|
40
|
+
const { start, end } = selection;
|
|
41
|
+
if (start &&
|
|
42
|
+
!hasSingleMainIO(start, 'inputs', nodesByName, getNodeType, getNodeInputs, getNodeOutputs)) {
|
|
43
|
+
return { valid: false, reason: 'multiple-input-branches', node: start };
|
|
44
|
+
}
|
|
45
|
+
if (end &&
|
|
46
|
+
!hasSingleMainIO(end, 'outputs', nodesByName, getNodeType, getNodeInputs, getNodeOutputs)) {
|
|
47
|
+
return { valid: false, reason: 'multiple-output-branches', node: end };
|
|
48
|
+
}
|
|
49
|
+
return { valid: true, subGraph: nodes, subGraphData: selection };
|
|
50
|
+
}
|
|
51
|
+
function validateNodeSelectionForGrouping(input) {
|
|
52
|
+
if (input.nodes.length < 2) {
|
|
53
|
+
return { valid: false, reason: 'too-few-nodes' };
|
|
54
|
+
}
|
|
55
|
+
const alreadyGroupedNodeIds = findAlreadyGroupedNodeIds(input.nodes.map((node) => node.id), input.existingNodeGroups ?? []);
|
|
56
|
+
if (alreadyGroupedNodeIds.length > 0) {
|
|
57
|
+
return { valid: false, reason: 'node-already-grouped', nodeIds: alreadyGroupedNodeIds };
|
|
58
|
+
}
|
|
59
|
+
const extractableResult = validateNodeSelectionForExtraction(input);
|
|
60
|
+
if (!extractableResult.valid)
|
|
61
|
+
return extractableResult;
|
|
62
|
+
const nodeNames = new Set(extractableResult.subGraph.map((node) => node.name));
|
|
63
|
+
const boundaryConnection = findNonMainBoundaryConnection(nodeNames, input.connectionsBySourceNode);
|
|
64
|
+
if (boundaryConnection) {
|
|
65
|
+
return { valid: false, reason: 'non-main-boundary', connection: boundaryConnection };
|
|
66
|
+
}
|
|
67
|
+
return extractableResult;
|
|
68
|
+
}
|
|
69
|
+
function findAlreadyGroupedNodeIds(selectionNodeIds, existingNodeGroups) {
|
|
70
|
+
const groupedNodeIds = new Set(existingNodeGroups.flatMap((group) => group.nodeIds));
|
|
71
|
+
return selectionNodeIds.filter((nodeId) => groupedNodeIds.has(nodeId));
|
|
72
|
+
}
|
|
73
|
+
function hasSingleMainIO(nodeName, direction, nodesByName, getNodeType, getNodeInputs, getNodeOutputs) {
|
|
74
|
+
const node = nodesByName.get(nodeName);
|
|
75
|
+
if (!node)
|
|
76
|
+
return true;
|
|
77
|
+
const nodeType = getNodeType(node);
|
|
78
|
+
if (!nodeType)
|
|
79
|
+
return true;
|
|
80
|
+
const ios = direction === 'inputs'
|
|
81
|
+
? (getNodeInputs?.(node, nodeType) ?? nodeType.inputs)
|
|
82
|
+
: (getNodeOutputs?.(node, nodeType) ?? nodeType.outputs);
|
|
83
|
+
if (!Array.isArray(ios))
|
|
84
|
+
return true;
|
|
85
|
+
return ios.filter(isMainIo).length <= 1;
|
|
86
|
+
}
|
|
87
|
+
function isMainIo(io) {
|
|
88
|
+
return typeof io === 'string'
|
|
89
|
+
? io === interfaces_1.NodeConnectionTypes.Main
|
|
90
|
+
: io.type === interfaces_1.NodeConnectionTypes.Main;
|
|
91
|
+
}
|
|
92
|
+
function findDisconnectedSelectionError(nodeNames, currentAdjacencyList) {
|
|
93
|
+
if (nodeNames.size <= 1)
|
|
94
|
+
return null;
|
|
95
|
+
const neighborsByNodeName = new Map();
|
|
96
|
+
for (const nodeName of nodeNames) {
|
|
97
|
+
neighborsByNodeName.set(nodeName, new Set());
|
|
98
|
+
}
|
|
99
|
+
for (const [sourceNodeName, connections] of currentAdjacencyList.entries()) {
|
|
100
|
+
if (!nodeNames.has(sourceNodeName))
|
|
101
|
+
continue;
|
|
102
|
+
const sourceNeighbors = neighborsByNodeName.get(sourceNodeName);
|
|
103
|
+
if (!sourceNeighbors)
|
|
104
|
+
continue;
|
|
105
|
+
for (const connection of connections) {
|
|
106
|
+
const targetNodeName = connection.node;
|
|
107
|
+
if (!nodeNames.has(targetNodeName) || targetNodeName === sourceNodeName)
|
|
108
|
+
continue;
|
|
109
|
+
sourceNeighbors.add(targetNodeName);
|
|
110
|
+
neighborsByNodeName.get(targetNodeName)?.add(sourceNodeName);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const firstNodeName = nodeNames.values().next().value;
|
|
114
|
+
if (!firstNodeName)
|
|
115
|
+
return null;
|
|
116
|
+
const visited = new Set([firstNodeName]);
|
|
117
|
+
const queue = [firstNodeName];
|
|
118
|
+
while (queue.length > 0) {
|
|
119
|
+
const currentNodeName = queue.shift();
|
|
120
|
+
if (!currentNodeName)
|
|
121
|
+
continue;
|
|
122
|
+
for (const neighborNodeName of neighborsByNodeName.get(currentNodeName) ?? []) {
|
|
123
|
+
if (visited.has(neighborNodeName))
|
|
124
|
+
continue;
|
|
125
|
+
visited.add(neighborNodeName);
|
|
126
|
+
queue.push(neighborNodeName);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (visited.size === nodeNames.size)
|
|
130
|
+
return null;
|
|
131
|
+
const disconnectedNodeName = Array.from(nodeNames).find((nodeName) => !visited.has(nodeName));
|
|
132
|
+
if (!disconnectedNodeName)
|
|
133
|
+
return null;
|
|
134
|
+
return {
|
|
135
|
+
errorCode: 'No Continuous Path From Root To Leaf In Selection',
|
|
136
|
+
start: firstNodeName,
|
|
137
|
+
end: disconnectedNodeName,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function findNonMainBoundaryConnection(nodeNames, connectionsBySourceNode) {
|
|
141
|
+
for (const [sourceNodeName, sourceConnections] of Object.entries(connectionsBySourceNode)) {
|
|
142
|
+
const sourceInside = nodeNames.has(sourceNodeName);
|
|
143
|
+
for (const [type, connectionsByOutputIndex] of Object.entries(sourceConnections)) {
|
|
144
|
+
if (type === interfaces_1.NodeConnectionTypes.Main)
|
|
145
|
+
continue;
|
|
146
|
+
for (const connections of connectionsByOutputIndex) {
|
|
147
|
+
for (const connection of connections ?? []) {
|
|
148
|
+
if (sourceInside === nodeNames.has(connection.node))
|
|
149
|
+
continue;
|
|
150
|
+
return { source: sourceNodeName, target: connection.node, type };
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=node-grouping-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-grouping-validation.js","sourceRoot":"","sources":["../../src/node-grouping-validation.ts"],"names":[],"mappings":";;;;;;;;;;;IAsDA,gFAqDC;IAED,4EA6BC;IA1ID,qDAM6B;IAC7B,6CASsB;IACtB,iDAA+C;IAqC/C,SAAgB,kCAAkC,CAAsB,EACvE,KAAK,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,cAAc,GACsB;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,4BAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,kBAAkB;gBAC1B,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aAC3C,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,gCAAkB,EAAC,uBAAuB,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAA,+CAAiC,EAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAEtF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACxE,CAAC;QAED,MAAM,0BAA0B,GAAG,8BAA8B,CAChE,iBAAiB,EACjB,aAAa,CACb,CAAC;QACF,IAAI,0BAA0B,EAAE,CAAC;YAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC3F,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;QAEjC,IACC,KAAK;YACL,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,EACzF,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACzE,CAAC;QAED,IACC,GAAG;YACH,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,CAAC,EACxF,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QACxE,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IAClE,CAAC;IAED,SAAgB,gCAAgC,CAC/C,KAAyC;QAEzC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,qBAAqB,GAAG,yBAAyB,CACtD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAClC,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAC9B,CAAC;QACF,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACzF,CAAC;QAED,MAAM,iBAAiB,GAAG,kCAAkC,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,CAAC,KAAK;YAAE,OAAO,iBAAiB,CAAC;QAEvD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,MAAM,kBAAkB,GAAG,6BAA6B,CACvD,SAAS,EACT,KAAK,CAAC,uBAAuB,CAC7B,CAAC;QAEF,IAAI,kBAAkB,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;QACtF,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC1B,CAAC;IAED,SAAS,yBAAyB,CACjC,gBAA0B,EAC1B,kBAAoC;QAEpC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,SAAS,eAAe,CACvB,QAAgB,EAChB,SAAsB,EACtB,WAA+B,EAC/B,WAAqE,EACrE,aAGwD,EACxD,cAGyD;QAEzD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,GAAG,GACR,SAAS,KAAK,QAAQ;YACrB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;YACtD,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,QAAQ,CAAC,EAAU;QAC3B,OAAO,OAAO,EAAE,KAAK,QAAQ;YAC5B,CAAC,CAAC,EAAE,KAAK,gCAAmB,CAAC,IAAI;YACjC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,gCAAmB,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,SAAS,8BAA8B,CACtC,SAAsB,EACtB,oBAA8C;QAE9C,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC3D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;gBAAE,SAAS;YAE7C,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAChE,IAAI,CAAC,eAAe;gBAAE,SAAS;YAE/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,cAAc,KAAK,cAAc;oBAAE,SAAS;gBAElF,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACpC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC;QAED,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAEhC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe;gBAAE,SAAS;YAE/B,KAAK,MAAM,gBAAgB,IAAI,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC/E,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;oBAAE,SAAS;gBAE5C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9B,CAAC;QACF,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEjD,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,oBAAoB;YAAE,OAAO,IAAI,CAAC;QAEvC,OAAO;YACN,SAAS,EAAE,mDAAmD;YAC9D,KAAK,EAAE,aAAa;YACpB,GAAG,EAAE,oBAAoB;SACzB,CAAC;IACH,CAAC;IAED,SAAS,6BAA6B,CACrC,SAAsB,EACtB,uBAAqC;QAErC,KAAK,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC3F,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEnD,KAAK,MAAM,CAAC,IAAI,EAAE,wBAAwB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAClF,IAAI,IAAI,KAAK,gCAAmB,CAAC,IAAI;oBAAE,SAAS;gBAEhD,KAAK,MAAM,WAAW,IAAI,wBAAwB,EAAE,CAAC;oBACpD,KAAK,MAAM,UAAU,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;wBAC5C,IAAI,YAAY,KAAK,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;4BAAE,SAAS;wBAE9D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;oBAClE,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { INodeExecutionData, ITaskData } from './interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* For each output branch, concatenate items from every run in the order they were produced.
|
|
4
|
+
*/
|
|
5
|
+
export declare function mergeRunsPerBranch(runs: ITaskData[]): Array<INodeExecutionData[] | null>;
|
|
6
|
+
//# sourceMappingURL=sub-workflow-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-workflow-output.d.ts","sourceRoot":"","sources":["../../src/sub-workflow-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAElE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAKxF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.mergeRunsPerBranch = mergeRunsPerBranch;
|
|
13
|
+
/**
|
|
14
|
+
* For each output branch, concatenate items from every run in the order they were produced.
|
|
15
|
+
*/
|
|
16
|
+
function mergeRunsPerBranch(runs) {
|
|
17
|
+
const branchCount = runs.reduce((max, run) => Math.max(max, run.data?.main?.length ?? 0), 0);
|
|
18
|
+
return Array.from({ length: branchCount }, (_, branch) => runs.flatMap((run) => run.data?.main?.[branch] ?? []));
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=sub-workflow-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-workflow-output.js","sourceRoot":"","sources":["../../src/sub-workflow-output.ts"],"names":[],"mappings":";;;;;;;;;;;IAKA,gDAKC;IARD;;OAEG;IACH,SAAgB,kBAAkB,CAAC,IAAiB;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACxD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CACrD,CAAC;IACH,CAAC"}
|