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