@fsai-flow/workflow 0.0.1
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/.eslintrc.json +33 -0
- package/README.md +11 -0
- package/dist/README.md +11 -0
- package/dist/package.json +42 -0
- package/dist/src/index.d.ts +21 -0
- package/dist/src/index.js +33 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/Constants.d.ts +68 -0
- package/dist/src/lib/Constants.js +106 -0
- package/dist/src/lib/Constants.js.map +1 -0
- package/dist/src/lib/DeferredPromise.d.ts +6 -0
- package/dist/src/lib/DeferredPromise.js +11 -0
- package/dist/src/lib/DeferredPromise.js.map +1 -0
- package/dist/src/lib/Expression.d.ts +65 -0
- package/dist/src/lib/Expression.js +215 -0
- package/dist/src/lib/Expression.js.map +1 -0
- package/dist/src/lib/Interfaces.d.ts +1569 -0
- package/dist/src/lib/Interfaces.js +44 -0
- package/dist/src/lib/Interfaces.js.map +1 -0
- package/dist/src/lib/LoggerProxy.d.ts +9 -0
- package/dist/src/lib/LoggerProxy.js +40 -0
- package/dist/src/lib/LoggerProxy.js.map +1 -0
- package/dist/src/lib/MetadataUtils.d.ts +4 -0
- package/dist/src/lib/MetadataUtils.js +27 -0
- package/dist/src/lib/MetadataUtils.js.map +1 -0
- package/dist/src/lib/NodeErrors.d.ts +82 -0
- package/dist/src/lib/NodeErrors.js +289 -0
- package/dist/src/lib/NodeErrors.js.map +1 -0
- package/dist/src/lib/NodeHelpers.d.ts +198 -0
- package/dist/src/lib/NodeHelpers.js +1348 -0
- package/dist/src/lib/NodeHelpers.js.map +1 -0
- package/dist/src/lib/ObservableObject.d.ts +5 -0
- package/dist/src/lib/ObservableObject.js +61 -0
- package/dist/src/lib/ObservableObject.js.map +1 -0
- package/dist/src/lib/RoutingNode.d.ts +18 -0
- package/dist/src/lib/RoutingNode.js +508 -0
- package/dist/src/lib/RoutingNode.js.map +1 -0
- package/dist/src/lib/TelemetryHelpers.d.ts +3 -0
- package/dist/src/lib/TelemetryHelpers.js +69 -0
- package/dist/src/lib/TelemetryHelpers.js.map +1 -0
- package/dist/src/lib/TypeValidation.d.ts +21 -0
- package/dist/src/lib/TypeValidation.js +385 -0
- package/dist/src/lib/TypeValidation.js.map +1 -0
- package/dist/src/lib/VersionedNodeType.d.ts +9 -0
- package/dist/src/lib/VersionedNodeType.js +26 -0
- package/dist/src/lib/VersionedNodeType.js.map +1 -0
- package/dist/src/lib/Workflow.d.ts +248 -0
- package/dist/src/lib/Workflow.js +901 -0
- package/dist/src/lib/Workflow.js.map +1 -0
- package/dist/src/lib/WorkflowDataProxy.d.ts +87 -0
- package/dist/src/lib/WorkflowDataProxy.js +556 -0
- package/dist/src/lib/WorkflowDataProxy.js.map +1 -0
- package/dist/src/lib/WorkflowErrors.d.ts +9 -0
- package/dist/src/lib/WorkflowErrors.js +18 -0
- package/dist/src/lib/WorkflowErrors.js.map +1 -0
- package/dist/src/lib/WorkflowHooks.d.ts +11 -0
- package/dist/src/lib/WorkflowHooks.js +34 -0
- package/dist/src/lib/WorkflowHooks.js.map +1 -0
- package/dist/src/lib/errors/base/base.error.d.ts +30 -0
- package/dist/src/lib/errors/base/base.error.js +45 -0
- package/dist/src/lib/errors/base/base.error.js.map +1 -0
- package/dist/src/lib/errors/base/operational.error.d.ts +15 -0
- package/dist/src/lib/errors/base/operational.error.js +19 -0
- package/dist/src/lib/errors/base/operational.error.js.map +1 -0
- package/dist/src/lib/errors/error.types.d.ts +11 -0
- package/dist/src/lib/errors/error.types.js +3 -0
- package/dist/src/lib/errors/error.types.js.map +1 -0
- package/dist/src/lib/errors/index.d.ts +1 -0
- package/dist/src/lib/errors/index.js +6 -0
- package/dist/src/lib/errors/index.js.map +1 -0
- package/dist/src/lib/result.d.ts +19 -0
- package/dist/src/lib/result.js +36 -0
- package/dist/src/lib/result.js.map +1 -0
- package/dist/src/lib/utils.d.ts +50 -0
- package/dist/src/lib/utils.js +110 -0
- package/dist/src/lib/utils.js.map +1 -0
- package/eslint.config.js +19 -0
- package/jest.config.ts +10 -0
- package/package.json +40 -0
- package/project.json +19 -0
- package/src/index.ts +33 -0
- package/src/lib/Constants.ts +124 -0
- package/src/lib/DeferredPromise.ts +14 -0
- package/src/lib/Expression.ts +375 -0
- package/src/lib/Interfaces.ts +2229 -0
- package/src/lib/LoggerProxy.ts +43 -0
- package/src/lib/MetadataUtils.ts +34 -0
- package/src/lib/NodeErrors.ts +332 -0
- package/src/lib/NodeHelpers.ts +1666 -0
- package/src/lib/ObservableObject.ts +77 -0
- package/src/lib/RoutingNode.ts +862 -0
- package/src/lib/TelemetryHelpers.ts +86 -0
- package/src/lib/TypeValidation.ts +431 -0
- package/src/lib/VersionedNodeType.ts +30 -0
- package/src/lib/Workflow.ts +1266 -0
- package/src/lib/WorkflowDataProxy.ts +708 -0
- package/src/lib/WorkflowErrors.ts +18 -0
- package/src/lib/WorkflowHooks.ts +51 -0
- package/src/lib/errors/base/base.error.ts +68 -0
- package/src/lib/errors/base/operational.error.ts +21 -0
- package/src/lib/errors/error.types.ts +14 -0
- package/src/lib/errors/index.ts +1 -0
- package/src/lib/result.ts +34 -0
- package/src/lib/utils.ts +132 -0
- package/tests/Helpers.ts +667 -0
- package/tests/NodeHelpers.test.ts +3053 -0
- package/tests/ObservableObject.test.ts +171 -0
- package/tests/RoutingNode.test.ts +1680 -0
- package/tests/Workflow.test.ts +1284 -0
- package/tests/WorkflowDataProxy.test.ts +199 -0
- package/tsconfig.json +27 -0
- package/tsconfig.lib.json +11 -0
- package/tsconfig.spec.json +14 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Expression = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
// @ts-ignore
|
|
6
|
+
const tmpl = tslib_1.__importStar(require("riot-tmpl"));
|
|
7
|
+
const luxon_1 = require("luxon");
|
|
8
|
+
// eslint-disable-next-line import/no-cycle
|
|
9
|
+
const __1 = require("..");
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
// Set it to use double curly brackets instead of single ones
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
|
13
|
+
tmpl.brackets.set('{{ }}');
|
|
14
|
+
// Make sure that it does not always print an error when it could not resolve
|
|
15
|
+
// a variable
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
17
|
+
tmpl.tmpl.errorHandler = () => { };
|
|
18
|
+
class Expression {
|
|
19
|
+
workflow;
|
|
20
|
+
constructor(workflow) {
|
|
21
|
+
this.workflow = workflow;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Converts an object to a string in a way to make it clear that
|
|
25
|
+
* the value comes from an object
|
|
26
|
+
*
|
|
27
|
+
* @param {object} value
|
|
28
|
+
* @returns {string}
|
|
29
|
+
* @memberof Workflow
|
|
30
|
+
*/
|
|
31
|
+
convertObjectValueToString(value) {
|
|
32
|
+
const typeName = Array.isArray(value) ? 'Array' : 'Object';
|
|
33
|
+
return `[${typeName}: ${JSON.stringify(value)}]`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolves the paramter value. If it is an expression it will execute it and
|
|
37
|
+
* return the result. For everything simply the supplied value will be returned.
|
|
38
|
+
*
|
|
39
|
+
* @param {NodeParameterValue} parameterValue
|
|
40
|
+
* @param {(IRunExecutionData | null)} runExecutionData
|
|
41
|
+
* @param {number} runIndex
|
|
42
|
+
* @param {number} itemIndex
|
|
43
|
+
* @param {string} activeNodeName
|
|
44
|
+
* @param {INodeExecutionData[]} connectionInputData
|
|
45
|
+
* @param {boolean} [returnObjectAsString=false]
|
|
46
|
+
* @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])}
|
|
47
|
+
* @memberof Workflow
|
|
48
|
+
*/
|
|
49
|
+
resolveSimpleParameterValue(parameterValue, siblingParameters, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString = false, selfData = {}) {
|
|
50
|
+
// Check if it is an expression
|
|
51
|
+
if (typeof parameterValue !== 'string' || parameterValue.charAt(0) !== '=') {
|
|
52
|
+
// Is no expression so return value
|
|
53
|
+
return parameterValue;
|
|
54
|
+
}
|
|
55
|
+
// Is an expression
|
|
56
|
+
// Remove the equal sign
|
|
57
|
+
// eslint-disable-next-line no-param-reassign
|
|
58
|
+
parameterValue = parameterValue.substr(1);
|
|
59
|
+
// Generate a data proxy which allows to query workflow data
|
|
60
|
+
const dataProxy = new __1.WorkflowDataProxy(this.workflow, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, siblingParameters, mode, additionalKeys, -1, selfData);
|
|
61
|
+
const data = dataProxy.getDataProxy();
|
|
62
|
+
// Support only a subset of process properties
|
|
63
|
+
// @ts-ignore
|
|
64
|
+
data.process = {
|
|
65
|
+
arch: process.arch,
|
|
66
|
+
env: process.env,
|
|
67
|
+
platform: process.platform,
|
|
68
|
+
pid: process.pid,
|
|
69
|
+
ppid: process.ppid,
|
|
70
|
+
release: process.release,
|
|
71
|
+
version: process.pid,
|
|
72
|
+
versions: process.versions,
|
|
73
|
+
};
|
|
74
|
+
// @ts-ignore
|
|
75
|
+
data.document = {};
|
|
76
|
+
// @ts-ignore
|
|
77
|
+
data.DateTime = luxon_1.DateTime;
|
|
78
|
+
data['Interval'] = luxon_1.Interval;
|
|
79
|
+
data['Duration'] = luxon_1.Duration;
|
|
80
|
+
// @ts-ignore
|
|
81
|
+
data.constructor = {};
|
|
82
|
+
// Execute the expression
|
|
83
|
+
try {
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
|
85
|
+
const returnValue = tmpl.tmpl(parameterValue, data);
|
|
86
|
+
if (typeof returnValue === 'function') {
|
|
87
|
+
throw new Error('Expression resolved to a function. Please add "()"');
|
|
88
|
+
}
|
|
89
|
+
else if (returnValue !== null && typeof returnValue === 'object') {
|
|
90
|
+
if (returnObjectAsString) {
|
|
91
|
+
return this.convertObjectValueToString(returnValue);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
95
|
+
return returnValue;
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-member-access
|
|
99
|
+
throw new Error(`Expression is not valid: ${e.message}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolves value of parameter. But does not work for workflow-data.
|
|
104
|
+
*
|
|
105
|
+
* @param {INode} node
|
|
106
|
+
* @param {(string | undefined)} parameterValue
|
|
107
|
+
* @param {string} [defaultValue]
|
|
108
|
+
* @returns {(string | undefined)}
|
|
109
|
+
* @memberof Workflow
|
|
110
|
+
*/
|
|
111
|
+
getSimpleParameterValue(node, parameterValue, mode, additionalKeys, defaultValue) {
|
|
112
|
+
if (parameterValue === undefined) {
|
|
113
|
+
// Value is not set so return the default
|
|
114
|
+
return defaultValue;
|
|
115
|
+
}
|
|
116
|
+
// Get the value of the node (can be an expression)
|
|
117
|
+
const runIndex = 0;
|
|
118
|
+
const itemIndex = 0;
|
|
119
|
+
const connectionInputData = [];
|
|
120
|
+
const runData = {
|
|
121
|
+
resultData: {
|
|
122
|
+
runData: {},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
return this.getParameterValue(parameterValue, runData, runIndex, itemIndex, node.name, connectionInputData, mode, additionalKeys);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Resolves value of complex parameter. But does not work for workflow-data.
|
|
129
|
+
*
|
|
130
|
+
* @param {INode} node
|
|
131
|
+
* @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])} parameterValue
|
|
132
|
+
* @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[] | undefined)} [defaultValue]
|
|
133
|
+
* @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[] | undefined)}
|
|
134
|
+
* @memberof Workflow
|
|
135
|
+
*/
|
|
136
|
+
getComplexParameterValue(node, parameterValue, mode, additionalKeys, defaultValue = undefined, selfData = {}) {
|
|
137
|
+
if (parameterValue === undefined) {
|
|
138
|
+
// Value is not set so return the default
|
|
139
|
+
return defaultValue;
|
|
140
|
+
}
|
|
141
|
+
// Get the value of the node (can be an expression)
|
|
142
|
+
const runIndex = 0;
|
|
143
|
+
const itemIndex = 0;
|
|
144
|
+
const connectionInputData = [];
|
|
145
|
+
const runData = {
|
|
146
|
+
resultData: {
|
|
147
|
+
runData: {},
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
// Resolve the "outer" main values
|
|
151
|
+
const returnData = this.getParameterValue(parameterValue, runData, runIndex, itemIndex, node.name, connectionInputData, mode, additionalKeys, false, selfData);
|
|
152
|
+
// Resolve the "inner" values
|
|
153
|
+
return this.getParameterValue(returnData, runData, runIndex, itemIndex, node.name, connectionInputData, mode, additionalKeys, false, selfData);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Returns the resolved node parameter value. If it is an expression it will execute it and
|
|
157
|
+
* return the result. If the value to resolve is an array or object it will do the same
|
|
158
|
+
* for all of the items and values.
|
|
159
|
+
*
|
|
160
|
+
* @param {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])} parameterValue
|
|
161
|
+
* @param {(IRunExecutionData | null)} runExecutionData
|
|
162
|
+
* @param {number} runIndex
|
|
163
|
+
* @param {number} itemIndex
|
|
164
|
+
* @param {string} activeNodeName
|
|
165
|
+
* @param {INodeExecutionData[]} connectionInputData
|
|
166
|
+
* @param {boolean} [returnObjectAsString=false]
|
|
167
|
+
* @returns {(NodeParameterValue | INodeParameters | NodeParameterValue[] | INodeParameters[])}
|
|
168
|
+
* @memberof Workflow
|
|
169
|
+
*/
|
|
170
|
+
getParameterValue(parameterValue, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString = false, selfData = {}) {
|
|
171
|
+
// Helper function which returns true when the parameter is a complex one or array
|
|
172
|
+
const isComplexParameter = (value) => {
|
|
173
|
+
return typeof value === 'object';
|
|
174
|
+
};
|
|
175
|
+
// Helper function which resolves a parameter value depending on if it is simply or not
|
|
176
|
+
const resolveParameterValue = (value, siblingParameters) => {
|
|
177
|
+
if (isComplexParameter(value)) {
|
|
178
|
+
return this.getParameterValue(value, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString, selfData);
|
|
179
|
+
}
|
|
180
|
+
return this.resolveSimpleParameterValue(value, siblingParameters, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString, selfData);
|
|
181
|
+
};
|
|
182
|
+
// Check if it value is a simple one that we can get it resolved directly
|
|
183
|
+
if (!isComplexParameter(parameterValue)) {
|
|
184
|
+
return this.resolveSimpleParameterValue(parameterValue, {}, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, mode, additionalKeys, returnObjectAsString, selfData);
|
|
185
|
+
}
|
|
186
|
+
// The parameter value is complex so resolve depending on type
|
|
187
|
+
if (Array.isArray(parameterValue)) {
|
|
188
|
+
// Data is an array
|
|
189
|
+
const returnData = [];
|
|
190
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
191
|
+
for (const item of parameterValue) {
|
|
192
|
+
returnData.push(resolveParameterValue(item, {}));
|
|
193
|
+
}
|
|
194
|
+
if (returnObjectAsString && typeof returnData === 'object') {
|
|
195
|
+
return this.convertObjectValueToString(returnData);
|
|
196
|
+
}
|
|
197
|
+
return returnData;
|
|
198
|
+
}
|
|
199
|
+
if (parameterValue === null || parameterValue === undefined) {
|
|
200
|
+
return parameterValue;
|
|
201
|
+
}
|
|
202
|
+
// Data is an object
|
|
203
|
+
const returnData = {};
|
|
204
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
205
|
+
for (const key of Object.keys(parameterValue)) {
|
|
206
|
+
returnData[key] = resolveParameterValue(parameterValue[key], parameterValue);
|
|
207
|
+
}
|
|
208
|
+
if (returnObjectAsString && typeof returnData === 'object') {
|
|
209
|
+
return this.convertObjectValueToString(returnData);
|
|
210
|
+
}
|
|
211
|
+
return returnData;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
exports.Expression = Expression;
|
|
215
|
+
//# sourceMappingURL=Expression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Expression.js","sourceRoot":"","sources":["../../../src/lib/Expression.ts"],"names":[],"mappings":"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"}
|