n8n-workflow 1.97.0 → 1.99.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 (707) hide show
  1. package/dist/{augment-object.d.ts → cjs/augment-object.d.ts} +1 -0
  2. package/dist/cjs/augment-object.d.ts.map +1 -0
  3. package/dist/cjs/augment-object.js +159 -0
  4. package/dist/cjs/augment-object.js.map +1 -0
  5. package/dist/{constants.d.ts → cjs/constants.d.ts} +12 -0
  6. package/dist/cjs/constants.d.ts.map +1 -0
  7. package/dist/cjs/constants.js +112 -0
  8. package/dist/cjs/constants.js.map +1 -0
  9. package/dist/{cron.d.ts → cjs/cron.d.ts} +1 -0
  10. package/dist/cjs/cron.d.ts.map +1 -0
  11. package/dist/cjs/cron.js +37 -0
  12. package/dist/cjs/cron.js.map +1 -0
  13. package/dist/{deferred-promise.d.ts → cjs/deferred-promise.d.ts} +1 -0
  14. package/dist/cjs/deferred-promise.d.ts.map +1 -0
  15. package/dist/cjs/deferred-promise.js +22 -0
  16. package/dist/cjs/deferred-promise.js.map +1 -0
  17. package/dist/{errors → cjs/errors}/abstract/execution-base.error.d.ts +1 -0
  18. package/dist/cjs/errors/abstract/execution-base.error.d.ts.map +1 -0
  19. package/dist/cjs/errors/abstract/execution-base.error.js +50 -0
  20. package/dist/cjs/errors/abstract/execution-base.error.js.map +1 -0
  21. package/dist/cjs/errors/abstract/node.error.d.ts +48 -0
  22. package/dist/cjs/errors/abstract/node.error.d.ts.map +1 -0
  23. package/dist/cjs/errors/abstract/node.error.js +178 -0
  24. package/dist/cjs/errors/abstract/node.error.js.map +1 -0
  25. package/dist/{errors → cjs/errors}/application.error.d.ts +6 -2
  26. package/dist/cjs/errors/application.error.d.ts.map +1 -0
  27. package/dist/cjs/errors/application.error.js +41 -0
  28. package/dist/cjs/errors/application.error.js.map +1 -0
  29. package/dist/{errors → cjs/errors}/base/base.error.d.ts +12 -0
  30. package/dist/cjs/errors/base/base.error.d.ts.map +1 -0
  31. package/dist/cjs/errors/base/base.error.js +53 -0
  32. package/dist/cjs/errors/base/base.error.js.map +1 -0
  33. package/dist/{errors → cjs/errors}/base/operational.error.d.ts +8 -0
  34. package/dist/cjs/errors/base/operational.error.d.ts.map +1 -0
  35. package/dist/cjs/errors/base/operational.error.js +29 -0
  36. package/dist/cjs/errors/base/operational.error.js.map +1 -0
  37. package/dist/{errors → cjs/errors}/base/unexpected.error.d.ts +8 -0
  38. package/dist/cjs/errors/base/unexpected.error.d.ts.map +1 -0
  39. package/dist/cjs/errors/base/unexpected.error.js +29 -0
  40. package/dist/cjs/errors/base/unexpected.error.js.map +1 -0
  41. package/dist/{errors → cjs/errors}/base/user.error.d.ts +8 -0
  42. package/dist/cjs/errors/base/user.error.d.ts.map +1 -0
  43. package/dist/cjs/errors/base/user.error.js +29 -0
  44. package/dist/cjs/errors/base/user.error.js.map +1 -0
  45. package/dist/{errors → cjs/errors}/cli-subworkflow-operation.error.d.ts +1 -0
  46. package/dist/cjs/errors/cli-subworkflow-operation.error.d.ts.map +1 -0
  47. package/dist/cjs/errors/cli-subworkflow-operation.error.js +18 -0
  48. package/dist/cjs/errors/cli-subworkflow-operation.error.js.map +1 -0
  49. package/dist/{errors → cjs/errors}/db-connection-timeout-error.d.ts +1 -0
  50. package/dist/cjs/errors/db-connection-timeout-error.d.ts.map +1 -0
  51. package/dist/cjs/errors/db-connection-timeout-error.js +23 -0
  52. package/dist/cjs/errors/db-connection-timeout-error.js.map +1 -0
  53. package/dist/cjs/errors/ensure-error.d.ts +3 -0
  54. package/dist/cjs/errors/ensure-error.d.ts.map +1 -0
  55. package/dist/cjs/errors/ensure-error.js +23 -0
  56. package/dist/cjs/errors/ensure-error.js.map +1 -0
  57. package/dist/{errors → cjs/errors}/error.types.d.ts +2 -0
  58. package/dist/cjs/errors/error.types.d.ts.map +1 -0
  59. package/dist/cjs/errors/error.types.js +13 -0
  60. package/dist/{errors → cjs/errors}/error.types.js.map +1 -1
  61. package/dist/{errors → cjs/errors}/execution-cancelled.error.d.ts +1 -0
  62. package/dist/cjs/errors/execution-cancelled.error.d.ts.map +1 -0
  63. package/dist/cjs/errors/execution-cancelled.error.js +24 -0
  64. package/dist/cjs/errors/execution-cancelled.error.js.map +1 -0
  65. package/dist/{errors → cjs/errors}/expression-extension.error.d.ts +1 -0
  66. package/dist/cjs/errors/expression-extension.error.d.ts.map +1 -0
  67. package/dist/cjs/errors/expression-extension.error.js +18 -0
  68. package/dist/cjs/errors/expression-extension.error.js.map +1 -0
  69. package/dist/{errors → cjs/errors}/expression.error.d.ts +4 -0
  70. package/dist/cjs/errors/expression.error.d.ts.map +1 -0
  71. package/dist/cjs/errors/expression.error.js +48 -0
  72. package/dist/cjs/errors/expression.error.js.map +1 -0
  73. package/dist/{errors → cjs/errors}/index.d.ts +1 -0
  74. package/dist/cjs/errors/index.d.ts.map +1 -0
  75. package/dist/cjs/errors/index.js +58 -0
  76. package/dist/cjs/errors/index.js.map +1 -0
  77. package/dist/{errors → cjs/errors}/node-api.error.d.ts +8 -0
  78. package/dist/cjs/errors/node-api.error.d.ts.map +1 -0
  79. package/dist/cjs/errors/node-api.error.js +257 -0
  80. package/dist/cjs/errors/node-api.error.js.map +1 -0
  81. package/dist/{errors → cjs/errors}/node-operation.error.d.ts +4 -0
  82. package/dist/cjs/errors/node-operation.error.d.ts.map +1 -0
  83. package/dist/cjs/errors/node-operation.error.js +50 -0
  84. package/dist/cjs/errors/node-operation.error.js.map +1 -0
  85. package/dist/{errors → cjs/errors}/node-ssl.error.d.ts +1 -0
  86. package/dist/cjs/errors/node-ssl.error.d.ts.map +1 -0
  87. package/dist/cjs/errors/node-ssl.error.js +21 -0
  88. package/dist/cjs/errors/node-ssl.error.js.map +1 -0
  89. package/dist/{errors → cjs/errors}/subworkflow-operation.error.d.ts +1 -0
  90. package/dist/cjs/errors/subworkflow-operation.error.d.ts.map +1 -0
  91. package/dist/cjs/errors/subworkflow-operation.error.js +30 -0
  92. package/dist/cjs/errors/subworkflow-operation.error.js.map +1 -0
  93. package/dist/{errors → cjs/errors}/trigger-close.error.d.ts +1 -0
  94. package/dist/cjs/errors/trigger-close.error.d.ts.map +1 -0
  95. package/dist/cjs/errors/trigger-close.error.js +24 -0
  96. package/dist/cjs/errors/trigger-close.error.js.map +1 -0
  97. package/dist/{errors → cjs/errors}/webhook-taken.error.d.ts +1 -0
  98. package/dist/cjs/errors/webhook-taken.error.d.ts.map +1 -0
  99. package/dist/cjs/errors/webhook-taken.error.js +21 -0
  100. package/dist/cjs/errors/webhook-taken.error.js.map +1 -0
  101. package/dist/{errors → cjs/errors}/workflow-activation.error.d.ts +4 -0
  102. package/dist/cjs/errors/workflow-activation.error.d.ts.map +1 -0
  103. package/dist/cjs/errors/workflow-activation.error.js +54 -0
  104. package/dist/cjs/errors/workflow-activation.error.js.map +1 -0
  105. package/dist/{errors → cjs/errors}/workflow-deactivation.error.d.ts +1 -0
  106. package/dist/cjs/errors/workflow-deactivation.error.d.ts.map +1 -0
  107. package/dist/cjs/errors/workflow-deactivation.error.js +18 -0
  108. package/dist/cjs/errors/workflow-deactivation.error.js.map +1 -0
  109. package/dist/{errors → cjs/errors}/workflow-operation.error.d.ts +4 -0
  110. package/dist/cjs/errors/workflow-operation.error.d.ts.map +1 -0
  111. package/dist/cjs/errors/workflow-operation.error.js +32 -0
  112. package/dist/cjs/errors/workflow-operation.error.js.map +1 -0
  113. package/dist/{execution-status.d.ts → cjs/execution-status.d.ts} +1 -0
  114. package/dist/cjs/execution-status.d.ts.map +1 -0
  115. package/dist/cjs/execution-status.js +24 -0
  116. package/dist/cjs/execution-status.js.map +1 -0
  117. package/dist/{expression-evaluator-proxy.d.ts → cjs/expression-evaluator-proxy.d.ts} +1 -0
  118. package/dist/cjs/expression-evaluator-proxy.d.ts.map +1 -0
  119. package/dist/cjs/expression-evaluator-proxy.js +30 -0
  120. package/dist/cjs/expression-evaluator-proxy.js.map +1 -0
  121. package/dist/{expression-sandboxing.d.ts → cjs/expression-sandboxing.d.ts} +1 -0
  122. package/dist/cjs/expression-sandboxing.d.ts.map +1 -0
  123. package/dist/cjs/expression-sandboxing.js +62 -0
  124. package/dist/cjs/expression-sandboxing.js.map +1 -0
  125. package/dist/{expression.d.ts → cjs/expression.d.ts} +33 -0
  126. package/dist/cjs/expression.d.ts.map +1 -0
  127. package/dist/cjs/expression.js +368 -0
  128. package/dist/cjs/expression.js.map +1 -0
  129. package/dist/cjs/expressions/expression-helpers.d.ts +6 -0
  130. package/dist/cjs/expressions/expression-helpers.d.ts.map +1 -0
  131. package/dist/cjs/expressions/expression-helpers.js +24 -0
  132. package/dist/cjs/expressions/expression-helpers.js.map +1 -0
  133. package/dist/{extensions → cjs/extensions}/array-extensions.d.ts +1 -0
  134. package/dist/cjs/extensions/array-extensions.d.ts.map +1 -0
  135. package/dist/cjs/extensions/array-extensions.js +627 -0
  136. package/dist/cjs/extensions/array-extensions.js.map +1 -0
  137. package/dist/{extensions → cjs/extensions}/boolean-extensions.d.ts +1 -0
  138. package/dist/cjs/extensions/boolean-extensions.d.ts.map +1 -0
  139. package/dist/cjs/extensions/boolean-extensions.js +49 -0
  140. package/dist/cjs/extensions/boolean-extensions.js.map +1 -0
  141. package/dist/{extensions → cjs/extensions}/date-extensions.d.ts +1 -0
  142. package/dist/cjs/extensions/date-extensions.d.ts.map +1 -0
  143. package/dist/cjs/extensions/date-extensions.js +528 -0
  144. package/dist/cjs/extensions/date-extensions.js.map +1 -0
  145. package/dist/{extensions → cjs/extensions}/expression-extension.d.ts +22 -0
  146. package/dist/cjs/extensions/expression-extension.d.ts.map +1 -0
  147. package/dist/cjs/extensions/expression-extension.js +493 -0
  148. package/dist/cjs/extensions/expression-extension.js.map +1 -0
  149. package/dist/{extensions → cjs/extensions}/expression-parser.d.ts +1 -0
  150. package/dist/cjs/extensions/expression-parser.d.ts.map +1 -0
  151. package/dist/cjs/extensions/expression-parser.js +94 -0
  152. package/dist/cjs/extensions/expression-parser.js.map +1 -0
  153. package/dist/{extensions → cjs/extensions}/extended-functions.d.ts +1 -0
  154. package/dist/cjs/extensions/extended-functions.d.ts.map +1 -0
  155. package/dist/cjs/extensions/extended-functions.js +89 -0
  156. package/dist/cjs/extensions/extended-functions.js.map +1 -0
  157. package/dist/{extensions → cjs/extensions}/extensions.d.ts +1 -0
  158. package/dist/cjs/extensions/extensions.d.ts.map +1 -0
  159. package/dist/cjs/extensions/extensions.js +13 -0
  160. package/dist/cjs/extensions/extensions.js.map +1 -0
  161. package/dist/{extensions → cjs/extensions}/index.d.ts +1 -0
  162. package/dist/cjs/extensions/index.d.ts.map +1 -0
  163. package/dist/cjs/extensions/index.js +21 -0
  164. package/dist/cjs/extensions/index.js.map +1 -0
  165. package/dist/{extensions → cjs/extensions}/number-extensions.d.ts +1 -0
  166. package/dist/cjs/extensions/number-extensions.d.ts.map +1 -0
  167. package/dist/cjs/extensions/number-extensions.js +236 -0
  168. package/dist/cjs/extensions/number-extensions.js.map +1 -0
  169. package/dist/{extensions → cjs/extensions}/object-extensions.d.ts +1 -0
  170. package/dist/cjs/extensions/object-extensions.d.ts.map +1 -0
  171. package/dist/cjs/extensions/object-extensions.js +296 -0
  172. package/dist/cjs/extensions/object-extensions.js.map +1 -0
  173. package/dist/{extensions → cjs/extensions}/string-extensions.d.ts +1 -0
  174. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -0
  175. package/dist/cjs/extensions/string-extensions.js +788 -0
  176. package/dist/cjs/extensions/string-extensions.js.map +1 -0
  177. package/dist/{extensions → cjs/extensions}/utils.d.ts +1 -0
  178. package/dist/cjs/extensions/utils.d.ts.map +1 -0
  179. package/dist/cjs/extensions/utils.js +42 -0
  180. package/dist/cjs/extensions/utils.js.map +1 -0
  181. package/dist/cjs/from-ai-parse-utils.d.ts +44 -0
  182. package/dist/cjs/from-ai-parse-utils.d.ts.map +1 -0
  183. package/dist/cjs/from-ai-parse-utils.js +291 -0
  184. package/dist/cjs/from-ai-parse-utils.js.map +1 -0
  185. package/dist/{global-state.d.ts → cjs/global-state.d.ts} +1 -0
  186. package/dist/cjs/global-state.d.ts.map +1 -0
  187. package/dist/cjs/global-state.js +23 -0
  188. package/dist/cjs/global-state.js.map +1 -0
  189. package/dist/{graph → cjs/graph}/graph-utils.d.ts +21 -0
  190. package/dist/cjs/graph/graph-utils.d.ts.map +1 -0
  191. package/dist/cjs/graph/graph-utils.js +195 -0
  192. package/dist/cjs/graph/graph-utils.js.map +1 -0
  193. package/dist/{index.d.ts → cjs/index.d.ts} +3 -1
  194. package/dist/cjs/index.d.ts.map +1 -0
  195. package/dist/cjs/index.js +114 -0
  196. package/dist/cjs/index.js.map +1 -0
  197. package/dist/{interfaces.d.ts → cjs/interfaces.d.ts} +106 -3
  198. package/dist/cjs/interfaces.d.ts.map +1 -0
  199. package/dist/cjs/interfaces.js +53 -0
  200. package/dist/cjs/interfaces.js.map +1 -0
  201. package/dist/{logger-proxy.d.ts → cjs/logger-proxy.d.ts} +1 -0
  202. package/dist/cjs/logger-proxy.d.ts.map +1 -0
  203. package/dist/cjs/logger-proxy.js +26 -0
  204. package/dist/cjs/logger-proxy.js.map +1 -0
  205. package/dist/{message-event-bus.d.ts → cjs/message-event-bus.d.ts} +1 -0
  206. package/dist/cjs/message-event-bus.d.ts.map +1 -0
  207. package/dist/cjs/message-event-bus.js +96 -0
  208. package/dist/cjs/message-event-bus.js.map +1 -0
  209. package/dist/{metadata-utils.d.ts → cjs/metadata-utils.d.ts} +1 -0
  210. package/dist/cjs/metadata-utils.d.ts.map +1 -0
  211. package/dist/cjs/metadata-utils.js +37 -0
  212. package/dist/cjs/metadata-utils.js.map +1 -0
  213. package/dist/{native-methods → cjs/native-methods}/array.methods.d.ts +1 -0
  214. package/dist/cjs/native-methods/array.methods.d.ts.map +1 -0
  215. package/dist/cjs/native-methods/array.methods.js +552 -0
  216. package/dist/cjs/native-methods/array.methods.js.map +1 -0
  217. package/dist/{native-methods → cjs/native-methods}/boolean.methods.d.ts +1 -0
  218. package/dist/cjs/native-methods/boolean.methods.d.ts.map +1 -0
  219. package/dist/cjs/native-methods/boolean.methods.js +31 -0
  220. package/dist/cjs/native-methods/boolean.methods.js.map +1 -0
  221. package/dist/{native-methods → cjs/native-methods}/index.d.ts +1 -0
  222. package/dist/cjs/native-methods/index.d.ts.map +1 -0
  223. package/dist/cjs/native-methods/index.js +27 -0
  224. package/dist/cjs/native-methods/index.js.map +1 -0
  225. package/dist/{native-methods → cjs/native-methods}/number.methods.d.ts +1 -0
  226. package/dist/cjs/native-methods/number.methods.d.ts.map +1 -0
  227. package/dist/cjs/native-methods/number.methods.js +95 -0
  228. package/dist/cjs/native-methods/number.methods.js.map +1 -0
  229. package/dist/{native-methods → cjs/native-methods}/object.methods.d.ts +1 -0
  230. package/dist/cjs/native-methods/object.methods.d.ts.map +1 -0
  231. package/dist/cjs/native-methods/object.methods.js +18 -0
  232. package/dist/cjs/native-methods/object.methods.js.map +1 -0
  233. package/dist/{native-methods → cjs/native-methods}/string.methods.d.ts +1 -0
  234. package/dist/cjs/native-methods/string.methods.d.ts.map +1 -0
  235. package/dist/cjs/native-methods/string.methods.js +499 -0
  236. package/dist/cjs/native-methods/string.methods.js.map +1 -0
  237. package/dist/{node-helpers.d.ts → cjs/node-helpers.d.ts} +109 -1
  238. package/dist/cjs/node-helpers.d.ts.map +1 -0
  239. package/dist/cjs/node-helpers.js +1369 -0
  240. package/dist/cjs/node-helpers.js.map +1 -0
  241. package/dist/{node-parameters → cjs/node-parameters}/filter-parameter.d.ts +1 -0
  242. package/dist/cjs/node-parameters/filter-parameter.d.ts.map +1 -0
  243. package/dist/cjs/node-parameters/filter-parameter.js +383 -0
  244. package/dist/cjs/node-parameters/filter-parameter.js.map +1 -0
  245. package/dist/{node-parameters → cjs/node-parameters}/rename-node-utils.d.ts +2 -1
  246. package/dist/cjs/node-parameters/rename-node-utils.d.ts.map +1 -0
  247. package/dist/cjs/node-parameters/rename-node-utils.js +36 -0
  248. package/dist/cjs/node-parameters/rename-node-utils.js.map +1 -0
  249. package/dist/{node-reference-parser-utils.d.ts → cjs/node-reference-parser-utils.d.ts} +11 -0
  250. package/dist/cjs/node-reference-parser-utils.d.ts.map +1 -0
  251. package/dist/cjs/node-reference-parser-utils.js +468 -0
  252. package/dist/cjs/node-reference-parser-utils.js.map +1 -0
  253. package/dist/{observable-object.d.ts → cjs/observable-object.d.ts} +1 -0
  254. package/dist/cjs/observable-object.d.ts.map +1 -0
  255. package/dist/cjs/observable-object.js +72 -0
  256. package/dist/cjs/observable-object.js.map +1 -0
  257. package/dist/{result.d.ts → cjs/result.d.ts} +7 -0
  258. package/dist/cjs/result.d.ts.map +1 -0
  259. package/dist/cjs/result.js +41 -0
  260. package/dist/cjs/result.js.map +1 -0
  261. package/dist/{telemetry-helpers.d.ts → cjs/telemetry-helpers.d.ts} +7 -0
  262. package/dist/cjs/telemetry-helpers.d.ts.map +1 -0
  263. package/dist/cjs/telemetry-helpers.js +522 -0
  264. package/dist/cjs/telemetry-helpers.js.map +1 -0
  265. package/dist/{type-guards.d.ts → cjs/type-guards.d.ts} +1 -0
  266. package/dist/cjs/type-guards.d.ts.map +1 -0
  267. package/dist/cjs/type-guards.js +56 -0
  268. package/dist/cjs/type-guards.js.map +1 -0
  269. package/dist/{type-validation.d.ts → cjs/type-validation.d.ts} +1 -0
  270. package/dist/cjs/type-validation.d.ts.map +1 -0
  271. package/dist/cjs/type-validation.js +408 -0
  272. package/dist/cjs/type-validation.js.map +1 -0
  273. package/dist/cjs/typecheck.tsbuildinfo +1 -0
  274. package/dist/{utils.d.ts → cjs/utils.d.ts} +32 -0
  275. package/dist/cjs/utils.d.ts.map +1 -0
  276. package/dist/cjs/utils.js +334 -0
  277. package/dist/cjs/utils.js.map +1 -0
  278. package/dist/{versioned-node-type.d.ts → cjs/versioned-node-type.d.ts} +1 -0
  279. package/dist/cjs/versioned-node-type.d.ts.map +1 -0
  280. package/dist/cjs/versioned-node-type.js +36 -0
  281. package/dist/cjs/versioned-node-type.js.map +1 -0
  282. package/dist/cjs/workflow-data-proxy-env-provider.d.ts +25 -0
  283. package/dist/cjs/workflow-data-proxy-env-provider.d.ts.map +1 -0
  284. package/dist/cjs/workflow-data-proxy-env-provider.js +70 -0
  285. package/dist/cjs/workflow-data-proxy-env-provider.js.map +1 -0
  286. package/dist/{workflow-data-proxy-helpers.d.ts → cjs/workflow-data-proxy-helpers.d.ts} +1 -0
  287. package/dist/cjs/workflow-data-proxy-helpers.d.ts.map +1 -0
  288. package/dist/cjs/workflow-data-proxy-helpers.js +20 -0
  289. package/dist/cjs/workflow-data-proxy-helpers.js.map +1 -0
  290. package/dist/{workflow-data-proxy.d.ts → cjs/workflow-data-proxy.d.ts} +45 -0
  291. package/dist/cjs/workflow-data-proxy.d.ts.map +1 -0
  292. package/dist/cjs/workflow-data-proxy.js +1189 -0
  293. package/dist/cjs/workflow-data-proxy.js.map +1 -0
  294. package/dist/cjs/workflow.d.ts +157 -0
  295. package/dist/cjs/workflow.d.ts.map +1 -0
  296. package/dist/cjs/workflow.js +765 -0
  297. package/dist/cjs/workflow.js.map +1 -0
  298. package/dist/esm/augment-object.d.ts +3 -0
  299. package/dist/esm/augment-object.d.ts.map +1 -0
  300. package/dist/{augment-object.js → esm/augment-object.js} +9 -6
  301. package/dist/esm/augment-object.js.map +1 -0
  302. package/dist/esm/constants.d.ts +73 -0
  303. package/dist/esm/constants.d.ts.map +1 -0
  304. package/dist/esm/constants.js +99 -0
  305. package/dist/esm/constants.js.map +1 -0
  306. package/dist/esm/cron.d.ts +35 -0
  307. package/dist/esm/cron.d.ts.map +1 -0
  308. package/dist/{cron.js → esm/cron.js} +4 -8
  309. package/dist/esm/cron.js.map +1 -0
  310. package/dist/esm/deferred-promise.d.ts +10 -0
  311. package/dist/esm/deferred-promise.d.ts.map +1 -0
  312. package/dist/esm/deferred-promise.js +9 -0
  313. package/dist/esm/deferred-promise.js.map +1 -0
  314. package/dist/esm/errors/abstract/execution-base.error.d.ts +28 -0
  315. package/dist/esm/errors/abstract/execution-base.error.d.ts.map +1 -0
  316. package/dist/{errors → esm/errors}/abstract/execution-base.error.js +9 -8
  317. package/dist/esm/errors/abstract/execution-base.error.js.map +1 -0
  318. package/dist/esm/errors/abstract/node.error.d.ts +48 -0
  319. package/dist/esm/errors/abstract/node.error.d.ts.map +1 -0
  320. package/dist/{errors → esm/errors}/abstract/node.error.js +52 -12
  321. package/dist/esm/errors/abstract/node.error.js.map +1 -0
  322. package/dist/esm/errors/application.error.d.ts +13 -0
  323. package/dist/esm/errors/application.error.d.ts.map +1 -0
  324. package/dist/esm/errors/application.error.js +24 -0
  325. package/dist/esm/errors/application.error.js.map +1 -0
  326. package/dist/esm/errors/base/base.error.d.ts +26 -0
  327. package/dist/esm/errors/base/base.error.d.ts.map +1 -0
  328. package/dist/{errors → esm/errors}/base/base.error.js +20 -10
  329. package/dist/esm/errors/base/base.error.js.map +1 -0
  330. package/dist/esm/errors/base/operational.error.d.ts +16 -0
  331. package/dist/esm/errors/base/operational.error.d.ts.map +1 -0
  332. package/dist/esm/errors/base/operational.error.js +15 -0
  333. package/dist/esm/errors/base/operational.error.js.map +1 -0
  334. package/dist/esm/errors/base/unexpected.error.d.ts +16 -0
  335. package/dist/esm/errors/base/unexpected.error.d.ts.map +1 -0
  336. package/dist/esm/errors/base/unexpected.error.js +15 -0
  337. package/dist/esm/errors/base/unexpected.error.js.map +1 -0
  338. package/dist/esm/errors/base/user.error.d.ts +18 -0
  339. package/dist/esm/errors/base/user.error.d.ts.map +1 -0
  340. package/dist/esm/errors/base/user.error.js +15 -0
  341. package/dist/esm/errors/base/user.error.js.map +1 -0
  342. package/dist/esm/errors/cli-subworkflow-operation.error.d.ts +4 -0
  343. package/dist/esm/errors/cli-subworkflow-operation.error.d.ts.map +1 -0
  344. package/dist/esm/errors/cli-subworkflow-operation.error.js +4 -0
  345. package/dist/esm/errors/cli-subworkflow-operation.error.js.map +1 -0
  346. package/dist/esm/errors/db-connection-timeout-error.d.ts +9 -0
  347. package/dist/esm/errors/db-connection-timeout-error.d.ts.map +1 -0
  348. package/dist/{errors → esm/errors}/db-connection-timeout-error.js +2 -6
  349. package/dist/esm/errors/db-connection-timeout-error.js.map +1 -0
  350. package/dist/esm/errors/ensure-error.d.ts +3 -0
  351. package/dist/esm/errors/ensure-error.d.ts.map +1 -0
  352. package/dist/esm/errors/ensure-error.js +10 -0
  353. package/dist/esm/errors/ensure-error.js.map +1 -0
  354. package/dist/esm/errors/error.types.d.ts +12 -0
  355. package/dist/esm/errors/error.types.d.ts.map +1 -0
  356. package/dist/esm/errors/error.types.js +2 -0
  357. package/dist/esm/errors/error.types.js.map +1 -0
  358. package/dist/esm/errors/execution-cancelled.error.d.ts +5 -0
  359. package/dist/esm/errors/execution-cancelled.error.d.ts.map +1 -0
  360. package/dist/esm/errors/execution-cancelled.error.js +10 -0
  361. package/dist/esm/errors/execution-cancelled.error.js.map +1 -0
  362. package/dist/esm/errors/expression-extension.error.d.ts +4 -0
  363. package/dist/esm/errors/expression-extension.error.d.ts.map +1 -0
  364. package/dist/esm/errors/expression-extension.error.js +4 -0
  365. package/dist/esm/errors/expression-extension.error.js.map +1 -0
  366. package/dist/esm/errors/expression.error.d.ts +22 -0
  367. package/dist/esm/errors/expression.error.d.ts.map +1 -0
  368. package/dist/{errors → esm/errors}/expression.error.js +5 -6
  369. package/dist/esm/errors/expression.error.js.map +1 -0
  370. package/dist/esm/errors/index.d.ts +24 -0
  371. package/dist/esm/errors/index.d.ts.map +1 -0
  372. package/dist/esm/errors/index.js +23 -0
  373. package/dist/esm/errors/index.js.map +1 -0
  374. package/dist/esm/errors/node-api.error.d.ts +39 -0
  375. package/dist/esm/errors/node-api.error.d.ts.map +1 -0
  376. package/dist/{errors → esm/errors}/node-api.error.js +55 -19
  377. package/dist/esm/errors/node-api.error.js.map +1 -0
  378. package/dist/esm/errors/node-operation.error.d.ts +11 -0
  379. package/dist/esm/errors/node-operation.error.d.ts.map +1 -0
  380. package/dist/{errors → esm/errors}/node-operation.error.js +9 -9
  381. package/dist/esm/errors/node-operation.error.js.map +1 -0
  382. package/dist/esm/errors/node-ssl.error.d.ts +5 -0
  383. package/dist/esm/errors/node-ssl.error.d.ts.map +1 -0
  384. package/dist/esm/errors/node-ssl.error.js +7 -0
  385. package/dist/esm/errors/node-ssl.error.js.map +1 -0
  386. package/dist/esm/errors/subworkflow-operation.error.d.ts +7 -0
  387. package/dist/esm/errors/subworkflow-operation.error.d.ts.map +1 -0
  388. package/dist/esm/errors/subworkflow-operation.error.js +16 -0
  389. package/dist/esm/errors/subworkflow-operation.error.js.map +1 -0
  390. package/dist/esm/errors/trigger-close.error.d.ts +12 -0
  391. package/dist/esm/errors/trigger-close.error.d.ts.map +1 -0
  392. package/dist/esm/errors/trigger-close.error.js +10 -0
  393. package/dist/esm/errors/trigger-close.error.js.map +1 -0
  394. package/dist/esm/errors/webhook-taken.error.d.ts +5 -0
  395. package/dist/esm/errors/webhook-taken.error.d.ts.map +1 -0
  396. package/dist/esm/errors/webhook-taken.error.js +7 -0
  397. package/dist/esm/errors/webhook-taken.error.js.map +1 -0
  398. package/dist/esm/errors/workflow-activation.error.d.ts +20 -0
  399. package/dist/esm/errors/workflow-activation.error.d.ts.map +1 -0
  400. package/dist/{errors → esm/errors}/workflow-activation.error.js +12 -11
  401. package/dist/esm/errors/workflow-activation.error.js.map +1 -0
  402. package/dist/esm/errors/workflow-deactivation.error.d.ts +4 -0
  403. package/dist/esm/errors/workflow-deactivation.error.d.ts.map +1 -0
  404. package/dist/esm/errors/workflow-deactivation.error.js +4 -0
  405. package/dist/esm/errors/workflow-deactivation.error.js.map +1 -0
  406. package/dist/esm/errors/workflow-operation.error.d.ts +11 -0
  407. package/dist/esm/errors/workflow-operation.error.d.ts.map +1 -0
  408. package/dist/esm/errors/workflow-operation.error.js +18 -0
  409. package/dist/esm/errors/workflow-operation.error.js.map +1 -0
  410. package/dist/esm/execution-status.d.ts +3 -0
  411. package/dist/esm/execution-status.d.ts.map +1 -0
  412. package/dist/esm/execution-status.js +11 -0
  413. package/dist/esm/execution-status.js.map +1 -0
  414. package/dist/esm/expression-evaluator-proxy.d.ts +6 -0
  415. package/dist/esm/expression-evaluator-proxy.d.ts.map +1 -0
  416. package/dist/esm/expression-evaluator-proxy.js +15 -0
  417. package/dist/esm/expression-evaluator-proxy.js.map +1 -0
  418. package/dist/esm/expression-sandboxing.d.ts +5 -0
  419. package/dist/esm/expression-sandboxing.d.ts.map +1 -0
  420. package/dist/esm/expression-sandboxing.js +47 -0
  421. package/dist/esm/expression-sandboxing.js.map +1 -0
  422. package/dist/esm/expression.d.ts +46 -0
  423. package/dist/esm/expression.d.ts.map +1 -0
  424. package/dist/{expression.js → esm/expression.js} +125 -44
  425. package/dist/esm/expression.js.map +1 -0
  426. package/dist/esm/expressions/expression-helpers.d.ts +6 -0
  427. package/dist/esm/expressions/expression-helpers.d.ts.map +1 -0
  428. package/dist/esm/expressions/expression-helpers.js +10 -0
  429. package/dist/esm/expressions/expression-helpers.js.map +1 -0
  430. package/dist/esm/extensions/array-extensions.d.ts +33 -0
  431. package/dist/esm/extensions/array-extensions.d.ts.map +1 -0
  432. package/dist/{extensions → esm/extensions}/array-extensions.js +41 -42
  433. package/dist/esm/extensions/array-extensions.js.map +1 -0
  434. package/dist/esm/extensions/boolean-extensions.d.ts +6 -0
  435. package/dist/esm/extensions/boolean-extensions.d.ts.map +1 -0
  436. package/dist/{extensions → esm/extensions}/boolean-extensions.js +4 -10
  437. package/dist/esm/extensions/boolean-extensions.js.map +1 -0
  438. package/dist/esm/extensions/date-extensions.d.ts +3 -0
  439. package/dist/esm/extensions/date-extensions.d.ts.map +1 -0
  440. package/dist/{extensions → esm/extensions}/date-extensions.js +27 -29
  441. package/dist/esm/extensions/date-extensions.js.map +1 -0
  442. package/dist/esm/extensions/expression-extension.d.ts +32 -0
  443. package/dist/esm/extensions/expression-extension.d.ts.map +1 -0
  444. package/dist/esm/extensions/expression-extension.js +474 -0
  445. package/dist/esm/extensions/expression-extension.js.map +1 -0
  446. package/dist/esm/extensions/expression-parser.d.ts +14 -0
  447. package/dist/esm/extensions/expression-parser.d.ts.map +1 -0
  448. package/dist/{extensions → esm/extensions}/expression-parser.js +9 -11
  449. package/dist/esm/extensions/expression-parser.js.map +1 -0
  450. package/dist/esm/extensions/extended-functions.d.ts +28 -0
  451. package/dist/esm/extensions/extended-functions.d.ts.map +1 -0
  452. package/dist/{extensions → esm/extensions}/extended-functions.js +8 -10
  453. package/dist/esm/extensions/extended-functions.js.map +1 -0
  454. package/dist/esm/extensions/extensions.d.ts +42 -0
  455. package/dist/esm/extensions/extensions.d.ts.map +1 -0
  456. package/dist/esm/extensions/extensions.js +2 -0
  457. package/dist/esm/extensions/extensions.js.map +1 -0
  458. package/dist/esm/extensions/index.d.ts +3 -0
  459. package/dist/esm/extensions/index.d.ts.map +1 -0
  460. package/dist/esm/extensions/index.js +2 -0
  461. package/dist/esm/extensions/index.js.map +1 -0
  462. package/dist/esm/extensions/number-extensions.d.ts +27 -0
  463. package/dist/esm/extensions/number-extensions.d.ts.map +1 -0
  464. package/dist/{extensions → esm/extensions}/number-extensions.js +14 -15
  465. package/dist/esm/extensions/number-extensions.js.map +1 -0
  466. package/dist/esm/extensions/object-extensions.d.ts +46 -0
  467. package/dist/esm/extensions/object-extensions.d.ts.map +1 -0
  468. package/dist/{extensions → esm/extensions}/object-extensions.js +18 -21
  469. package/dist/esm/extensions/object-extensions.js.map +1 -0
  470. package/dist/esm/extensions/string-extensions.d.ts +38 -0
  471. package/dist/esm/extensions/string-extensions.d.ts.map +1 -0
  472. package/dist/{extensions → esm/extensions}/string-extensions.js +121 -40
  473. package/dist/esm/extensions/string-extensions.js.map +1 -0
  474. package/dist/esm/extensions/utils.d.ts +4 -0
  475. package/dist/esm/extensions/utils.d.ts.map +1 -0
  476. package/dist/esm/extensions/utils.js +27 -0
  477. package/dist/esm/extensions/utils.js.map +1 -0
  478. package/dist/esm/from-ai-parse-utils.d.ts +44 -0
  479. package/dist/esm/from-ai-parse-utils.d.ts.map +1 -0
  480. package/dist/{from-ai-parse-utils.js → esm/from-ai-parse-utils.js} +63 -18
  481. package/dist/esm/from-ai-parse-utils.js.map +1 -0
  482. package/dist/esm/global-state.d.ts +6 -0
  483. package/dist/esm/global-state.d.ts.map +1 -0
  484. package/dist/esm/global-state.js +9 -0
  485. package/dist/esm/global-state.js.map +1 -0
  486. package/dist/esm/graph/graph-utils.d.ts +57 -0
  487. package/dist/esm/graph/graph-utils.d.ts.map +1 -0
  488. package/dist/{graph → esm/graph}/graph-utils.js +35 -16
  489. package/dist/esm/graph/graph-utils.js.map +1 -0
  490. package/dist/esm/index.d.ts +49 -0
  491. package/dist/esm/index.d.ts.map +1 -0
  492. package/dist/esm/index.js +33 -0
  493. package/dist/esm/index.js.map +1 -0
  494. package/dist/esm/interfaces.d.ts +2172 -0
  495. package/dist/esm/interfaces.d.ts.map +1 -0
  496. package/dist/{interfaces.js → esm/interfaces.js} +13 -11
  497. package/dist/esm/interfaces.js.map +1 -0
  498. package/dist/esm/logger-proxy.d.ts +7 -0
  499. package/dist/esm/logger-proxy.d.ts.map +1 -0
  500. package/dist/esm/logger-proxy.js +12 -0
  501. package/dist/esm/logger-proxy.js.map +1 -0
  502. package/dist/esm/message-event-bus.d.ts +107 -0
  503. package/dist/esm/message-event-bus.d.ts.map +1 -0
  504. package/dist/{message-event-bus.js → esm/message-event-bus.js} +26 -23
  505. package/dist/esm/message-event-bus.js.map +1 -0
  506. package/dist/esm/metadata-utils.d.ts +5 -0
  507. package/dist/esm/metadata-utils.d.ts.map +1 -0
  508. package/dist/{metadata-utils.js → esm/metadata-utils.js} +6 -7
  509. package/dist/esm/metadata-utils.js.map +1 -0
  510. package/dist/esm/native-methods/array.methods.d.ts +3 -0
  511. package/dist/esm/native-methods/array.methods.d.ts.map +1 -0
  512. package/dist/{native-methods → esm/native-methods}/array.methods.js +1 -4
  513. package/dist/esm/native-methods/array.methods.js.map +1 -0
  514. package/dist/esm/native-methods/boolean.methods.d.ts +3 -0
  515. package/dist/esm/native-methods/boolean.methods.d.ts.map +1 -0
  516. package/dist/{native-methods → esm/native-methods}/boolean.methods.js +1 -4
  517. package/dist/esm/native-methods/boolean.methods.js.map +1 -0
  518. package/dist/esm/native-methods/index.d.ts +4 -0
  519. package/dist/esm/native-methods/index.d.ts.map +1 -0
  520. package/dist/esm/native-methods/index.js +14 -0
  521. package/dist/esm/native-methods/index.js.map +1 -0
  522. package/dist/esm/native-methods/number.methods.d.ts +3 -0
  523. package/dist/esm/native-methods/number.methods.d.ts.map +1 -0
  524. package/dist/{native-methods → esm/native-methods}/number.methods.js +1 -4
  525. package/dist/esm/native-methods/number.methods.js.map +1 -0
  526. package/dist/esm/native-methods/object.methods.d.ts +3 -0
  527. package/dist/esm/native-methods/object.methods.d.ts.map +1 -0
  528. package/dist/esm/native-methods/object.methods.js +5 -0
  529. package/dist/esm/native-methods/object.methods.js.map +1 -0
  530. package/dist/esm/native-methods/string.methods.d.ts +3 -0
  531. package/dist/esm/native-methods/string.methods.d.ts.map +1 -0
  532. package/dist/{native-methods → esm/native-methods}/string.methods.js +1 -4
  533. package/dist/esm/native-methods/string.methods.js.map +1 -0
  534. package/dist/esm/node-helpers.d.ts +145 -0
  535. package/dist/esm/node-helpers.d.ts.map +1 -0
  536. package/dist/{node-helpers.js → esm/node-helpers.js} +302 -106
  537. package/dist/esm/node-helpers.js.map +1 -0
  538. package/dist/esm/node-parameters/filter-parameter.d.ts +21 -0
  539. package/dist/esm/node-parameters/filter-parameter.d.ts.map +1 -0
  540. package/dist/{node-parameters → esm/node-parameters}/filter-parameter.js +13 -51
  541. package/dist/esm/node-parameters/filter-parameter.js.map +1 -0
  542. package/dist/esm/node-parameters/rename-node-utils.d.ts +3 -0
  543. package/dist/esm/node-parameters/rename-node-utils.d.ts.map +1 -0
  544. package/dist/{node-parameters → esm/node-parameters}/rename-node-utils.js +4 -5
  545. package/dist/esm/node-parameters/rename-node-utils.js.map +1 -0
  546. package/dist/esm/node-reference-parser-utils.d.ts +20 -0
  547. package/dist/esm/node-reference-parser-utils.d.ts.map +1 -0
  548. package/dist/{node-reference-parser-utils.js → esm/node-reference-parser-utils.js} +135 -46
  549. package/dist/esm/node-reference-parser-utils.js.map +1 -0
  550. package/dist/esm/observable-object.d.ts +7 -0
  551. package/dist/esm/observable-object.d.ts.map +1 -0
  552. package/dist/{observable-object.js → esm/observable-object.js} +13 -5
  553. package/dist/esm/observable-object.js.map +1 -0
  554. package/dist/esm/result.d.ts +19 -0
  555. package/dist/esm/result.d.ts.map +1 -0
  556. package/dist/esm/result.js +25 -0
  557. package/dist/esm/result.js.map +1 -0
  558. package/dist/esm/telemetry-helpers.d.ts +45 -0
  559. package/dist/esm/telemetry-helpers.d.ts.map +1 -0
  560. package/dist/{telemetry-helpers.js → esm/telemetry-helpers.js} +67 -62
  561. package/dist/esm/telemetry-helpers.js.map +1 -0
  562. package/dist/esm/type-guards.d.ts +12 -0
  563. package/dist/esm/type-guards.d.ts.map +1 -0
  564. package/dist/esm/type-guards.js +33 -0
  565. package/dist/esm/type-guards.js.map +1 -0
  566. package/dist/esm/type-validation.d.ts +22 -0
  567. package/dist/esm/type-validation.d.ts.map +1 -0
  568. package/dist/{type-validation.js → esm/type-validation.js} +66 -78
  569. package/dist/esm/type-validation.js.map +1 -0
  570. package/dist/esm/typecheck.tsbuildinfo +1 -0
  571. package/dist/esm/utils.d.ts +94 -0
  572. package/dist/esm/utils.d.ts.map +1 -0
  573. package/dist/esm/utils.js +300 -0
  574. package/dist/esm/utils.js.map +1 -0
  575. package/dist/esm/versioned-node-type.d.ts +10 -0
  576. package/dist/esm/versioned-node-type.d.ts.map +1 -0
  577. package/dist/{versioned-node-type.js → esm/versioned-node-type.js} +4 -5
  578. package/dist/esm/versioned-node-type.js.map +1 -0
  579. package/dist/esm/workflow-data-proxy-env-provider.d.ts +25 -0
  580. package/dist/esm/workflow-data-proxy-env-provider.d.ts.map +1 -0
  581. package/dist/{workflow-data-proxy-env-provider.js → esm/workflow-data-proxy-env-provider.js} +22 -9
  582. package/dist/esm/workflow-data-proxy-env-provider.js.map +1 -0
  583. package/dist/esm/workflow-data-proxy-helpers.d.ts +3 -0
  584. package/dist/esm/workflow-data-proxy-helpers.d.ts.map +1 -0
  585. package/dist/esm/workflow-data-proxy-helpers.js +7 -0
  586. package/dist/esm/workflow-data-proxy-helpers.js.map +1 -0
  587. package/dist/esm/workflow-data-proxy.d.ts +80 -0
  588. package/dist/esm/workflow-data-proxy.d.ts.map +1 -0
  589. package/dist/{workflow-data-proxy.js → esm/workflow-data-proxy.js} +174 -109
  590. package/dist/esm/workflow-data-proxy.js.map +1 -0
  591. package/dist/esm/workflow.d.ts +157 -0
  592. package/dist/esm/workflow.d.ts.map +1 -0
  593. package/dist/{workflow.js → esm/workflow.js} +223 -73
  594. package/dist/esm/workflow.js.map +1 -0
  595. package/package.json +20 -16
  596. package/dist/augment-object.js.map +0 -1
  597. package/dist/build.tsbuildinfo +0 -1
  598. package/dist/constants.js +0 -89
  599. package/dist/constants.js.map +0 -1
  600. package/dist/cron.js.map +0 -1
  601. package/dist/deferred-promise.js +0 -12
  602. package/dist/deferred-promise.js.map +0 -1
  603. package/dist/errors/abstract/execution-base.error.js.map +0 -1
  604. package/dist/errors/abstract/node.error.d.ts +0 -12
  605. package/dist/errors/abstract/node.error.js.map +0 -1
  606. package/dist/errors/application.error.js +0 -24
  607. package/dist/errors/application.error.js.map +0 -1
  608. package/dist/errors/base/base.error.js.map +0 -1
  609. package/dist/errors/base/operational.error.js +0 -12
  610. package/dist/errors/base/operational.error.js.map +0 -1
  611. package/dist/errors/base/unexpected.error.js +0 -12
  612. package/dist/errors/base/unexpected.error.js.map +0 -1
  613. package/dist/errors/base/user.error.js +0 -12
  614. package/dist/errors/base/user.error.js.map +0 -1
  615. package/dist/errors/cli-subworkflow-operation.error.js +0 -8
  616. package/dist/errors/cli-subworkflow-operation.error.js.map +0 -1
  617. package/dist/errors/db-connection-timeout-error.js.map +0 -1
  618. package/dist/errors/ensure-error.d.ts +0 -1
  619. package/dist/errors/ensure-error.js +0 -11
  620. package/dist/errors/ensure-error.js.map +0 -1
  621. package/dist/errors/error.types.js +0 -3
  622. package/dist/errors/execution-cancelled.error.js +0 -14
  623. package/dist/errors/execution-cancelled.error.js.map +0 -1
  624. package/dist/errors/expression-extension.error.js +0 -8
  625. package/dist/errors/expression-extension.error.js.map +0 -1
  626. package/dist/errors/expression.error.js.map +0 -1
  627. package/dist/errors/index.js +0 -48
  628. package/dist/errors/index.js.map +0 -1
  629. package/dist/errors/node-api.error.js.map +0 -1
  630. package/dist/errors/node-operation.error.js.map +0 -1
  631. package/dist/errors/node-ssl.error.js +0 -11
  632. package/dist/errors/node-ssl.error.js.map +0 -1
  633. package/dist/errors/subworkflow-operation.error.js +0 -19
  634. package/dist/errors/subworkflow-operation.error.js.map +0 -1
  635. package/dist/errors/trigger-close.error.js +0 -13
  636. package/dist/errors/trigger-close.error.js.map +0 -1
  637. package/dist/errors/webhook-taken.error.js +0 -11
  638. package/dist/errors/webhook-taken.error.js.map +0 -1
  639. package/dist/errors/workflow-activation.error.js.map +0 -1
  640. package/dist/errors/workflow-deactivation.error.js +0 -8
  641. package/dist/errors/workflow-deactivation.error.js.map +0 -1
  642. package/dist/errors/workflow-operation.error.js +0 -17
  643. package/dist/errors/workflow-operation.error.js.map +0 -1
  644. package/dist/execution-status.js +0 -14
  645. package/dist/execution-status.js.map +0 -1
  646. package/dist/expression-evaluator-proxy.js +0 -20
  647. package/dist/expression-evaluator-proxy.js.map +0 -1
  648. package/dist/expression-sandboxing.js +0 -43
  649. package/dist/expression-sandboxing.js.map +0 -1
  650. package/dist/expression.js.map +0 -1
  651. package/dist/extensions/array-extensions.js.map +0 -1
  652. package/dist/extensions/boolean-extensions.js.map +0 -1
  653. package/dist/extensions/date-extensions.js.map +0 -1
  654. package/dist/extensions/expression-extension.js +0 -362
  655. package/dist/extensions/expression-extension.js.map +0 -1
  656. package/dist/extensions/expression-parser.js.map +0 -1
  657. package/dist/extensions/extended-functions.js.map +0 -1
  658. package/dist/extensions/extensions.js +0 -3
  659. package/dist/extensions/extensions.js.map +0 -1
  660. package/dist/extensions/index.js +0 -11
  661. package/dist/extensions/index.js.map +0 -1
  662. package/dist/extensions/number-extensions.js.map +0 -1
  663. package/dist/extensions/object-extensions.js.map +0 -1
  664. package/dist/extensions/string-extensions.js.map +0 -1
  665. package/dist/extensions/utils.js +0 -31
  666. package/dist/extensions/utils.js.map +0 -1
  667. package/dist/from-ai-parse-utils.d.ts +0 -12
  668. package/dist/from-ai-parse-utils.js.map +0 -1
  669. package/dist/global-state.js +0 -13
  670. package/dist/global-state.js.map +0 -1
  671. package/dist/graph/graph-utils.js.map +0 -1
  672. package/dist/index.js +0 -102
  673. package/dist/index.js.map +0 -1
  674. package/dist/interfaces.js.map +0 -1
  675. package/dist/logger-proxy.js +0 -16
  676. package/dist/logger-proxy.js.map +0 -1
  677. package/dist/message-event-bus.js.map +0 -1
  678. package/dist/metadata-utils.js.map +0 -1
  679. package/dist/native-methods/array.methods.js.map +0 -1
  680. package/dist/native-methods/boolean.methods.js.map +0 -1
  681. package/dist/native-methods/index.js +0 -17
  682. package/dist/native-methods/index.js.map +0 -1
  683. package/dist/native-methods/number.methods.js.map +0 -1
  684. package/dist/native-methods/object.methods.js +0 -8
  685. package/dist/native-methods/object.methods.js.map +0 -1
  686. package/dist/native-methods/string.methods.js.map +0 -1
  687. package/dist/node-helpers.js.map +0 -1
  688. package/dist/node-parameters/filter-parameter.js.map +0 -1
  689. package/dist/node-parameters/rename-node-utils.js.map +0 -1
  690. package/dist/node-reference-parser-utils.js.map +0 -1
  691. package/dist/observable-object.js.map +0 -1
  692. package/dist/result.js +0 -25
  693. package/dist/result.js.map +0 -1
  694. package/dist/telemetry-helpers.js.map +0 -1
  695. package/dist/type-guards.js +0 -46
  696. package/dist/type-guards.js.map +0 -1
  697. package/dist/type-validation.js.map +0 -1
  698. package/dist/utils.js +0 -245
  699. package/dist/utils.js.map +0 -1
  700. package/dist/versioned-node-type.js.map +0 -1
  701. package/dist/workflow-data-proxy-env-provider.d.ts +0 -7
  702. package/dist/workflow-data-proxy-env-provider.js.map +0 -1
  703. package/dist/workflow-data-proxy-helpers.js +0 -10
  704. package/dist/workflow-data-proxy-helpers.js.map +0 -1
  705. package/dist/workflow-data-proxy.js.map +0 -1
  706. package/dist/workflow.d.ts +0 -54
  707. package/dist/workflow.js.map +0 -1
@@ -0,0 +1,1369 @@
1
+ var __importDefault = (this && this.__importDefault) || function (mod) {
2
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
+ };
4
+ (function (factory) {
5
+ if (typeof module === "object" && typeof module.exports === "object") {
6
+ var v = factory(require, exports);
7
+ if (v !== undefined) module.exports = v;
8
+ }
9
+ else if (typeof define === "function" && define.amd) {
10
+ define(["require", "exports", "lodash/get", "lodash/isEqual", "./constants", "./errors/application.error", "./interfaces", "./node-parameters/filter-parameter", "./type-guards", "./type-validation", "./utils"], factory);
11
+ }
12
+ })(function (require, exports) {
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getUpdatedToolDescription = exports.cronNodeOptions = void 0;
16
+ exports.isSubNodeType = isSubNodeType;
17
+ exports.displayParameter = displayParameter;
18
+ exports.displayParameterPath = displayParameterPath;
19
+ exports.getContext = getContext;
20
+ exports.getNodeParameters = getNodeParameters;
21
+ exports.getNodeWebhookPath = getNodeWebhookPath;
22
+ exports.getNodeWebhookUrl = getNodeWebhookUrl;
23
+ exports.getConnectionTypes = getConnectionTypes;
24
+ exports.getNodeInputs = getNodeInputs;
25
+ exports.getNodeOutputs = getNodeOutputs;
26
+ exports.getNodeParametersIssues = getNodeParametersIssues;
27
+ exports.getParameterValueByPath = getParameterValueByPath;
28
+ exports.getParameterIssues = getParameterIssues;
29
+ exports.mergeIssues = mergeIssues;
30
+ exports.mergeNodeProperties = mergeNodeProperties;
31
+ exports.getVersionedNodeType = getVersionedNodeType;
32
+ exports.isTriggerNode = isTriggerNode;
33
+ exports.isExecutable = isExecutable;
34
+ exports.isNodeWithWorkflowSelector = isNodeWithWorkflowSelector;
35
+ exports.makeDescription = makeDescription;
36
+ exports.isTool = isTool;
37
+ exports.makeNodeName = makeNodeName;
38
+ exports.isDefaultNodeName = isDefaultNodeName;
39
+ exports.getToolDescriptionForNode = getToolDescriptionForNode;
40
+ exports.getSubworkflowId = getSubworkflowId;
41
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
42
+ /* eslint-disable @typescript-eslint/no-use-before-define */
43
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
44
+ /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
45
+ /* eslint-disable prefer-spread */
46
+ const get_1 = __importDefault(require("lodash/get"));
47
+ const isEqual_1 = __importDefault(require("lodash/isEqual"));
48
+ const constants_1 = require("./constants");
49
+ const application_error_1 = require("./errors/application.error");
50
+ const interfaces_1 = require("./interfaces");
51
+ const filter_parameter_1 = require("./node-parameters/filter-parameter");
52
+ const type_guards_1 = require("./type-guards");
53
+ const type_validation_1 = require("./type-validation");
54
+ const utils_1 = require("./utils");
55
+ exports.cronNodeOptions = [
56
+ {
57
+ name: 'item',
58
+ displayName: 'Item',
59
+ values: [
60
+ {
61
+ displayName: 'Mode',
62
+ name: 'mode',
63
+ type: 'options',
64
+ options: [
65
+ {
66
+ name: 'Every Minute',
67
+ value: 'everyMinute',
68
+ },
69
+ {
70
+ name: 'Every Hour',
71
+ value: 'everyHour',
72
+ },
73
+ {
74
+ name: 'Every Day',
75
+ value: 'everyDay',
76
+ },
77
+ {
78
+ name: 'Every Week',
79
+ value: 'everyWeek',
80
+ },
81
+ {
82
+ name: 'Every Month',
83
+ value: 'everyMonth',
84
+ },
85
+ {
86
+ name: 'Every X',
87
+ value: 'everyX',
88
+ },
89
+ {
90
+ name: 'Custom',
91
+ value: 'custom',
92
+ },
93
+ ],
94
+ default: 'everyDay',
95
+ description: 'How often to trigger.',
96
+ },
97
+ {
98
+ displayName: 'Hour',
99
+ name: 'hour',
100
+ type: 'number',
101
+ typeOptions: {
102
+ minValue: 0,
103
+ maxValue: 23,
104
+ },
105
+ displayOptions: {
106
+ hide: {
107
+ mode: ['custom', 'everyHour', 'everyMinute', 'everyX'],
108
+ },
109
+ },
110
+ default: 14,
111
+ description: 'The hour of the day to trigger (24h format)',
112
+ },
113
+ {
114
+ displayName: 'Minute',
115
+ name: 'minute',
116
+ type: 'number',
117
+ typeOptions: {
118
+ minValue: 0,
119
+ maxValue: 59,
120
+ },
121
+ displayOptions: {
122
+ hide: {
123
+ mode: ['custom', 'everyMinute', 'everyX'],
124
+ },
125
+ },
126
+ default: 0,
127
+ description: 'The minute of the day to trigger',
128
+ },
129
+ {
130
+ displayName: 'Day of Month',
131
+ name: 'dayOfMonth',
132
+ type: 'number',
133
+ displayOptions: {
134
+ show: {
135
+ mode: ['everyMonth'],
136
+ },
137
+ },
138
+ typeOptions: {
139
+ minValue: 1,
140
+ maxValue: 31,
141
+ },
142
+ default: 1,
143
+ description: 'The day of the month to trigger',
144
+ },
145
+ {
146
+ displayName: 'Weekday',
147
+ name: 'weekday',
148
+ type: 'options',
149
+ displayOptions: {
150
+ show: {
151
+ mode: ['everyWeek'],
152
+ },
153
+ },
154
+ options: [
155
+ {
156
+ name: 'Monday',
157
+ value: '1',
158
+ },
159
+ {
160
+ name: 'Tuesday',
161
+ value: '2',
162
+ },
163
+ {
164
+ name: 'Wednesday',
165
+ value: '3',
166
+ },
167
+ {
168
+ name: 'Thursday',
169
+ value: '4',
170
+ },
171
+ {
172
+ name: 'Friday',
173
+ value: '5',
174
+ },
175
+ {
176
+ name: 'Saturday',
177
+ value: '6',
178
+ },
179
+ {
180
+ name: 'Sunday',
181
+ value: '0',
182
+ },
183
+ ],
184
+ default: '1',
185
+ description: 'The weekday to trigger',
186
+ },
187
+ {
188
+ displayName: 'Cron Expression',
189
+ name: 'cronExpression',
190
+ type: 'string',
191
+ displayOptions: {
192
+ show: {
193
+ mode: ['custom'],
194
+ },
195
+ },
196
+ default: '* * * * * *',
197
+ description: 'Use custom cron expression. Values and ranges as follows:<ul><li>Seconds: 0-59</li><li>Minutes: 0 - 59</li><li>Hours: 0 - 23</li><li>Day of Month: 1 - 31</li><li>Months: 0 - 11 (Jan - Dec)</li><li>Day of Week: 0 - 6 (Sun - Sat)</li></ul>',
198
+ },
199
+ {
200
+ displayName: 'Value',
201
+ name: 'value',
202
+ type: 'number',
203
+ typeOptions: {
204
+ minValue: 0,
205
+ maxValue: 1000,
206
+ },
207
+ displayOptions: {
208
+ show: {
209
+ mode: ['everyX'],
210
+ },
211
+ },
212
+ default: 2,
213
+ description: 'All how many X minutes/hours it should trigger',
214
+ },
215
+ {
216
+ displayName: 'Unit',
217
+ name: 'unit',
218
+ type: 'options',
219
+ displayOptions: {
220
+ show: {
221
+ mode: ['everyX'],
222
+ },
223
+ },
224
+ options: [
225
+ {
226
+ name: 'Minutes',
227
+ value: 'minutes',
228
+ },
229
+ {
230
+ name: 'Hours',
231
+ value: 'hours',
232
+ },
233
+ ],
234
+ default: 'hours',
235
+ description: 'If it should trigger all X minutes or hours',
236
+ },
237
+ ],
238
+ },
239
+ ];
240
+ /**
241
+ * Determines if the provided node type has any output types other than the main connection type.
242
+ * @param typeDescription The node's type description to check.
243
+ */
244
+ function isSubNodeType(typeDescription) {
245
+ if (!typeDescription?.outputs || typeof typeDescription.outputs === 'string') {
246
+ return false;
247
+ }
248
+ const outputTypes = getConnectionTypes(typeDescription.outputs);
249
+ return outputTypes
250
+ ? outputTypes.filter((output) => output !== interfaces_1.NodeConnectionTypes.Main).length > 0
251
+ : false;
252
+ }
253
+ const getPropertyValues = (nodeValues, propertyName, node, nodeTypeDescription, nodeValuesRoot) => {
254
+ let value;
255
+ if (propertyName.charAt(0) === '/') {
256
+ // Get the value from the root of the node
257
+ value = (0, get_1.default)(nodeValuesRoot, propertyName.slice(1));
258
+ }
259
+ else if (propertyName === '@version') {
260
+ value = node?.typeVersion || 0;
261
+ }
262
+ else if (propertyName === '@tool') {
263
+ value = nodeTypeDescription?.name.endsWith('Tool') ?? false;
264
+ }
265
+ else {
266
+ // Get the value from current level
267
+ value = (0, get_1.default)(nodeValues, propertyName);
268
+ }
269
+ if (value && typeof value === 'object' && '__rl' in value && value.__rl) {
270
+ value = value.value;
271
+ }
272
+ if (!Array.isArray(value)) {
273
+ return [value];
274
+ }
275
+ else {
276
+ return value;
277
+ }
278
+ };
279
+ const checkConditions = (conditions, actualValues) => {
280
+ return conditions.some((condition) => {
281
+ if (condition &&
282
+ typeof condition === 'object' &&
283
+ condition._cnd &&
284
+ Object.keys(condition).length === 1) {
285
+ const [key, targetValue] = Object.entries(condition._cnd)[0];
286
+ return actualValues.every((propertyValue) => {
287
+ if (key === 'eq') {
288
+ return (0, isEqual_1.default)(propertyValue, targetValue);
289
+ }
290
+ if (key === 'not') {
291
+ return !(0, isEqual_1.default)(propertyValue, targetValue);
292
+ }
293
+ if (key === 'gte') {
294
+ return propertyValue >= targetValue;
295
+ }
296
+ if (key === 'lte') {
297
+ return propertyValue <= targetValue;
298
+ }
299
+ if (key === 'gt') {
300
+ return propertyValue > targetValue;
301
+ }
302
+ if (key === 'lt') {
303
+ return propertyValue < targetValue;
304
+ }
305
+ if (key === 'between') {
306
+ const { from, to } = targetValue;
307
+ return propertyValue >= from && propertyValue <= to;
308
+ }
309
+ if (key === 'includes') {
310
+ return propertyValue.includes(targetValue);
311
+ }
312
+ if (key === 'startsWith') {
313
+ return propertyValue.startsWith(targetValue);
314
+ }
315
+ if (key === 'endsWith') {
316
+ return propertyValue.endsWith(targetValue);
317
+ }
318
+ if (key === 'regex') {
319
+ return new RegExp(targetValue).test(propertyValue);
320
+ }
321
+ if (key === 'exists') {
322
+ return propertyValue !== null && propertyValue !== undefined && propertyValue !== '';
323
+ }
324
+ return false;
325
+ });
326
+ }
327
+ return actualValues.includes(condition);
328
+ });
329
+ };
330
+ /**
331
+ * Returns if the parameter should be displayed or not
332
+ *
333
+ * @param {INodeParameters} nodeValues The data on the node which decides if the parameter
334
+ * should be displayed
335
+ * @param {(INodeProperties | INodeCredentialDescription)} parameter The parameter to check if it should be displayed
336
+ * @param {INodeParameters} [nodeValuesRoot] The root node-parameter-data
337
+ */
338
+ function displayParameter(nodeValues, parameter, node, // Allow null as it does also get used by credentials and they do not have versioning yet
339
+ nodeTypeDescription, nodeValuesRoot, displayKey = 'displayOptions') {
340
+ if (!parameter[displayKey]) {
341
+ return true;
342
+ }
343
+ const { show, hide } = parameter[displayKey];
344
+ nodeValuesRoot = nodeValuesRoot || nodeValues;
345
+ if (show) {
346
+ // All the defined rules have to match to display parameter
347
+ for (const propertyName of Object.keys(show)) {
348
+ const values = getPropertyValues(nodeValues, propertyName, node, nodeTypeDescription, nodeValuesRoot);
349
+ if (values.some((v) => typeof v === 'string' && v.charAt(0) === '=')) {
350
+ return true;
351
+ }
352
+ if (values.length === 0 || !checkConditions(show[propertyName], values)) {
353
+ return false;
354
+ }
355
+ }
356
+ }
357
+ if (hide) {
358
+ // Any of the defined hide rules have to match to hide the parameter
359
+ for (const propertyName of Object.keys(hide)) {
360
+ const values = getPropertyValues(nodeValues, propertyName, node, nodeTypeDescription, nodeValuesRoot);
361
+ if (values.length !== 0 && checkConditions(hide[propertyName], values)) {
362
+ return false;
363
+ }
364
+ }
365
+ }
366
+ return true;
367
+ }
368
+ /**
369
+ * Returns if the given parameter should be displayed or not considering the path
370
+ * to the properties
371
+ *
372
+ * @param {INodeParameters} nodeValues The data on the node which decides if the parameter
373
+ * should be displayed
374
+ * @param {(INodeProperties | INodeCredentialDescription)} parameter The parameter to check if it should be displayed
375
+ * @param {string} path The path to the property
376
+ */
377
+ function displayParameterPath(nodeValues, parameter, path, node, nodeTypeDescription, displayKey = 'displayOptions') {
378
+ let resolvedNodeValues = nodeValues;
379
+ if (path !== '') {
380
+ resolvedNodeValues = (0, get_1.default)(nodeValues, path);
381
+ }
382
+ // Get the root parameter data
383
+ let nodeValuesRoot = nodeValues;
384
+ if (path && path.split('.').indexOf('parameters') === 0) {
385
+ nodeValuesRoot = (0, get_1.default)(nodeValues, 'parameters');
386
+ }
387
+ return displayParameter(resolvedNodeValues, parameter, node, nodeTypeDescription, nodeValuesRoot, displayKey);
388
+ }
389
+ /**
390
+ * Returns the context data
391
+ *
392
+ * @param {IRunExecutionData} runExecutionData The run execution data
393
+ * @param {string} type The data type. "node"/"flow"
394
+ * @param {INode} [node] If type "node" is set the node to return the context of has to be supplied
395
+ */
396
+ function getContext(runExecutionData, type, node) {
397
+ if (runExecutionData.executionData === undefined) {
398
+ // TODO: Should not happen leave it for test now
399
+ throw new application_error_1.ApplicationError('`executionData` is not initialized');
400
+ }
401
+ let key;
402
+ if (type === 'flow') {
403
+ key = 'flow';
404
+ }
405
+ else if (type === 'node') {
406
+ if (node === undefined) {
407
+ // @TODO: What does this mean?
408
+ throw new application_error_1.ApplicationError('The request data of context type "node" the node parameter has to be set!');
409
+ }
410
+ key = `node:${node.name}`;
411
+ }
412
+ else {
413
+ throw new application_error_1.ApplicationError('Unknown context type. Only `flow` and `node` are supported.', {
414
+ extra: { contextType: type },
415
+ });
416
+ }
417
+ if (runExecutionData.executionData.contextData[key] === undefined) {
418
+ runExecutionData.executionData.contextData[key] = {};
419
+ }
420
+ return runExecutionData.executionData.contextData[key];
421
+ }
422
+ /**
423
+ * Returns which parameters are dependent on which
424
+ */
425
+ function getParameterDependencies(nodePropertiesArray) {
426
+ const dependencies = {};
427
+ for (const nodeProperties of nodePropertiesArray) {
428
+ const { name, displayOptions } = nodeProperties;
429
+ if (!dependencies[name]) {
430
+ dependencies[name] = [];
431
+ }
432
+ if (!displayOptions) {
433
+ // Does not have any dependencies
434
+ continue;
435
+ }
436
+ for (const displayRule of Object.values(displayOptions)) {
437
+ for (const parameterName of Object.keys(displayRule)) {
438
+ if (!dependencies[name].includes(parameterName)) {
439
+ if (parameterName.charAt(0) === '@') {
440
+ // Is a special parameter so can be skipped
441
+ continue;
442
+ }
443
+ dependencies[name].push(parameterName);
444
+ }
445
+ }
446
+ }
447
+ }
448
+ return dependencies;
449
+ }
450
+ /**
451
+ * Returns in which order the parameters should be resolved
452
+ * to have the parameters available they depend on
453
+ */
454
+ function getParameterResolveOrder(nodePropertiesArray, parameterDependencies) {
455
+ const executionOrder = [];
456
+ const indexToResolve = Array.from({ length: nodePropertiesArray.length }, (_, k) => k);
457
+ const resolvedParameters = [];
458
+ let index;
459
+ let property;
460
+ let lastIndexLength = indexToResolve.length;
461
+ let lastIndexReduction = -1;
462
+ let iterations = 0;
463
+ while (indexToResolve.length !== 0) {
464
+ iterations += 1;
465
+ index = indexToResolve.shift();
466
+ property = nodePropertiesArray[index];
467
+ if (parameterDependencies[property.name].length === 0) {
468
+ // Does not have any dependencies so simply add
469
+ executionOrder.push(index);
470
+ resolvedParameters.push(property.name);
471
+ continue;
472
+ }
473
+ // Parameter has dependencies
474
+ for (const dependency of parameterDependencies[property.name]) {
475
+ if (!resolvedParameters.includes(dependency)) {
476
+ if (dependency.charAt(0) === '/') {
477
+ // Assume that root level dependencies are resolved
478
+ continue;
479
+ }
480
+ // Dependencies for that parameter are still missing so
481
+ // try to add again later
482
+ indexToResolve.push(index);
483
+ continue;
484
+ }
485
+ }
486
+ // All dependencies got found so add
487
+ executionOrder.push(index);
488
+ resolvedParameters.push(property.name);
489
+ if (indexToResolve.length < lastIndexLength) {
490
+ lastIndexReduction = iterations;
491
+ }
492
+ if (iterations > lastIndexReduction + nodePropertiesArray.length) {
493
+ throw new application_error_1.ApplicationError('Could not resolve parameter dependencies. Max iterations reached! Hint: If `displayOptions` are specified in any child parameter of a parent `collection` or `fixedCollection`, remove the `displayOptions` from the child parameter.');
494
+ }
495
+ lastIndexLength = indexToResolve.length;
496
+ }
497
+ return executionOrder;
498
+ }
499
+ /**
500
+ * Returns the node parameter values. Depending on the settings it either just returns the none
501
+ * default values or it applies all the default values.
502
+ *
503
+ * @param {INodeProperties[]} nodePropertiesArray The properties which exist and their settings
504
+ * @param {INodeParameters} nodeValues The node parameter data
505
+ * @param {boolean} returnDefaults If default values get added or only none default values returned
506
+ * @param {boolean} returnNoneDisplayed If also values which should not be displayed should be returned
507
+ * @param {GetNodeParametersOptions} options Optional properties
508
+ */
509
+ // eslint-disable-next-line complexity
510
+ function getNodeParameters(nodePropertiesArray, nodeValues, returnDefaults, returnNoneDisplayed, node, nodeTypeDescription, options) {
511
+ let { nodeValuesRoot, parameterDependencies } = options ?? {};
512
+ const { onlySimpleTypes = false, dataIsResolved = false, parentType } = options ?? {};
513
+ if (parameterDependencies === undefined) {
514
+ parameterDependencies = getParameterDependencies(nodePropertiesArray);
515
+ }
516
+ // Get the parameter names which get used multiple times as for this
517
+ // ones we have to always check which ones get displayed and which ones not
518
+ const duplicateParameterNames = [];
519
+ const parameterNames = [];
520
+ for (const nodeProperties of nodePropertiesArray) {
521
+ if (parameterNames.includes(nodeProperties.name)) {
522
+ if (!duplicateParameterNames.includes(nodeProperties.name)) {
523
+ duplicateParameterNames.push(nodeProperties.name);
524
+ }
525
+ }
526
+ else {
527
+ parameterNames.push(nodeProperties.name);
528
+ }
529
+ }
530
+ const nodeParameters = {};
531
+ const nodeParametersFull = {};
532
+ let nodeValuesDisplayCheck = nodeParametersFull;
533
+ if (!dataIsResolved && !returnNoneDisplayed) {
534
+ nodeValuesDisplayCheck = getNodeParameters(nodePropertiesArray, nodeValues, true, true, node, nodeTypeDescription, {
535
+ onlySimpleTypes: true,
536
+ dataIsResolved: true,
537
+ nodeValuesRoot,
538
+ parentType,
539
+ parameterDependencies,
540
+ });
541
+ }
542
+ nodeValuesRoot = nodeValuesRoot || nodeValuesDisplayCheck;
543
+ // Go through the parameters in order of their dependencies
544
+ const parameterIterationOrderIndex = getParameterResolveOrder(nodePropertiesArray, parameterDependencies);
545
+ for (const parameterIndex of parameterIterationOrderIndex) {
546
+ const nodeProperties = nodePropertiesArray[parameterIndex];
547
+ if (!nodeValues ||
548
+ (nodeValues[nodeProperties.name] === undefined &&
549
+ (!returnDefaults || parentType === 'collection'))) {
550
+ // The value is not defined so go to the next
551
+ continue;
552
+ }
553
+ if (!returnNoneDisplayed &&
554
+ !displayParameter(nodeValuesDisplayCheck, nodeProperties, node, nodeTypeDescription, nodeValuesRoot)) {
555
+ if (!returnNoneDisplayed || !returnDefaults) {
556
+ continue;
557
+ }
558
+ }
559
+ if (!['collection', 'fixedCollection'].includes(nodeProperties.type)) {
560
+ // Is a simple property so can be set as it is
561
+ if (duplicateParameterNames.includes(nodeProperties.name)) {
562
+ if (!displayParameter(nodeValuesDisplayCheck, nodeProperties, node, nodeTypeDescription, nodeValuesRoot)) {
563
+ continue;
564
+ }
565
+ }
566
+ if (returnDefaults) {
567
+ // Set also when it has the default value
568
+ if (['boolean', 'number', 'options'].includes(nodeProperties.type)) {
569
+ // Boolean, numbers and options are special as false and 0 are valid values
570
+ // and should not be replaced with default value
571
+ nodeParameters[nodeProperties.name] =
572
+ nodeValues[nodeProperties.name] !== undefined
573
+ ? nodeValues[nodeProperties.name]
574
+ : nodeProperties.default;
575
+ }
576
+ else if (nodeProperties.type === 'resourceLocator' &&
577
+ typeof nodeProperties.default === 'object') {
578
+ nodeParameters[nodeProperties.name] =
579
+ nodeValues[nodeProperties.name] !== undefined
580
+ ? nodeValues[nodeProperties.name]
581
+ : { __rl: true, ...nodeProperties.default };
582
+ }
583
+ else {
584
+ nodeParameters[nodeProperties.name] =
585
+ nodeValues[nodeProperties.name] ?? nodeProperties.default;
586
+ }
587
+ nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
588
+ }
589
+ else if ((nodeValues[nodeProperties.name] !== nodeProperties.default &&
590
+ typeof nodeValues[nodeProperties.name] !== 'object') ||
591
+ (typeof nodeValues[nodeProperties.name] === 'object' &&
592
+ !(0, isEqual_1.default)(nodeValues[nodeProperties.name], nodeProperties.default)) ||
593
+ (nodeValues[nodeProperties.name] !== undefined && parentType === 'collection')) {
594
+ // Set only if it is different to the default value
595
+ nodeParameters[nodeProperties.name] = nodeValues[nodeProperties.name];
596
+ nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
597
+ continue;
598
+ }
599
+ }
600
+ if (onlySimpleTypes) {
601
+ // It is only supposed to resolve the simple types. So continue.
602
+ continue;
603
+ }
604
+ // Is a complex property so check lower levels
605
+ let tempValue;
606
+ if (nodeProperties.type === 'collection') {
607
+ // Is collection
608
+ if (nodeProperties.typeOptions !== undefined &&
609
+ nodeProperties.typeOptions.multipleValues === true) {
610
+ // Multiple can be set so will be an array
611
+ // Return directly the values like they are
612
+ if (nodeValues[nodeProperties.name] !== undefined) {
613
+ nodeParameters[nodeProperties.name] = nodeValues[nodeProperties.name];
614
+ }
615
+ else if (returnDefaults) {
616
+ // Does not have values defined but defaults should be returned
617
+ if (Array.isArray(nodeProperties.default)) {
618
+ nodeParameters[nodeProperties.name] = (0, utils_1.deepCopy)(nodeProperties.default);
619
+ }
620
+ else {
621
+ // As it is probably wrong for many nodes, do we keep on returning an empty array if
622
+ // anything else than an array is set as default
623
+ nodeParameters[nodeProperties.name] = [];
624
+ }
625
+ }
626
+ nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
627
+ }
628
+ else if (nodeValues[nodeProperties.name] !== undefined) {
629
+ // Has values defined so get them
630
+ const tempNodeParameters = getNodeParameters(nodeProperties.options, nodeValues[nodeProperties.name], returnDefaults, returnNoneDisplayed, node, nodeTypeDescription, {
631
+ onlySimpleTypes: false,
632
+ dataIsResolved: false,
633
+ nodeValuesRoot,
634
+ parentType: nodeProperties.type,
635
+ });
636
+ if (tempNodeParameters !== null) {
637
+ nodeParameters[nodeProperties.name] = tempNodeParameters;
638
+ nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
639
+ }
640
+ }
641
+ else if (returnDefaults) {
642
+ // Does not have values defined but defaults should be returned
643
+ nodeParameters[nodeProperties.name] = (0, utils_1.deepCopy)(nodeProperties.default);
644
+ nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
645
+ }
646
+ }
647
+ else if (nodeProperties.type === 'fixedCollection') {
648
+ // Is fixedCollection
649
+ const collectionValues = {};
650
+ let tempNodeParameters;
651
+ let tempNodePropertiesArray;
652
+ let nodePropertyOptions;
653
+ let propertyValues = nodeValues[nodeProperties.name];
654
+ if (returnDefaults) {
655
+ if (propertyValues === undefined) {
656
+ propertyValues = (0, utils_1.deepCopy)(nodeProperties.default);
657
+ }
658
+ }
659
+ if (!returnDefaults &&
660
+ nodeProperties.typeOptions?.multipleValues === false &&
661
+ propertyValues &&
662
+ Object.keys(propertyValues).length === 0) {
663
+ // For fixedCollections, which only allow one value, it is important to still return
664
+ // the empty object which indicates that a value got added, even if it does not have
665
+ // anything set. If that is not done, the value would get lost.
666
+ return nodeValues;
667
+ }
668
+ // Iterate over all collections
669
+ for (const itemName of Object.keys(propertyValues || {})) {
670
+ if (nodeProperties.typeOptions !== undefined &&
671
+ nodeProperties.typeOptions.multipleValues === true) {
672
+ // Multiple can be set so will be an array
673
+ const tempArrayValue = [];
674
+ // Iterate over all items as it contains multiple ones
675
+ for (const nodeValue of propertyValues[itemName]) {
676
+ nodePropertyOptions = nodeProperties.options.find(
677
+ // eslint-disable-next-line @typescript-eslint/no-shadow
678
+ (nodePropertyOptions) => nodePropertyOptions.name === itemName);
679
+ if (nodePropertyOptions === undefined) {
680
+ throw new application_error_1.ApplicationError('Could not find property option', {
681
+ extra: { propertyOption: itemName, property: nodeProperties.name },
682
+ });
683
+ }
684
+ tempNodePropertiesArray = nodePropertyOptions.values;
685
+ tempValue = getNodeParameters(tempNodePropertiesArray, nodeValue, returnDefaults, returnNoneDisplayed, node, nodeTypeDescription, {
686
+ onlySimpleTypes: false,
687
+ dataIsResolved: false,
688
+ nodeValuesRoot,
689
+ parentType: nodeProperties.type,
690
+ });
691
+ if (tempValue !== null) {
692
+ tempArrayValue.push(tempValue);
693
+ }
694
+ }
695
+ collectionValues[itemName] = tempArrayValue;
696
+ }
697
+ else {
698
+ // Only one can be set so is an object of objects
699
+ tempNodeParameters = {};
700
+ // Get the options of the current item
701
+ // eslint-disable-next-line @typescript-eslint/no-shadow
702
+ const nodePropertyOptions = nodeProperties.options.find((data) => data.name === itemName);
703
+ if (nodePropertyOptions !== undefined) {
704
+ tempNodePropertiesArray = nodePropertyOptions.values;
705
+ tempValue = getNodeParameters(tempNodePropertiesArray, nodeValues[nodeProperties.name][itemName], returnDefaults, returnNoneDisplayed, node, nodeTypeDescription, {
706
+ onlySimpleTypes: false,
707
+ dataIsResolved: false,
708
+ nodeValuesRoot,
709
+ parentType: nodeProperties.type,
710
+ });
711
+ if (tempValue !== null) {
712
+ Object.assign(tempNodeParameters, tempValue);
713
+ }
714
+ }
715
+ if (Object.keys(tempNodeParameters).length !== 0) {
716
+ collectionValues[itemName] = tempNodeParameters;
717
+ }
718
+ }
719
+ }
720
+ if (!returnDefaults &&
721
+ nodeProperties.typeOptions?.multipleValues === false &&
722
+ collectionValues &&
723
+ Object.keys(collectionValues).length === 0 &&
724
+ propertyValues &&
725
+ propertyValues?.constructor.name === 'Object' &&
726
+ Object.keys(propertyValues).length !== 0) {
727
+ // For fixedCollections, which only allow one value, it is important to still return
728
+ // the object with an empty collection property which indicates that a value got added
729
+ // which contains all default values. If that is not done, the value would get lost.
730
+ const returnValue = {};
731
+ Object.keys(propertyValues || {}).forEach((value) => {
732
+ returnValue[value] = {};
733
+ });
734
+ nodeParameters[nodeProperties.name] = returnValue;
735
+ }
736
+ if (Object.keys(collectionValues).length !== 0 || returnDefaults) {
737
+ // Set only if value got found
738
+ if (returnDefaults) {
739
+ // Set also when it has the default value
740
+ if (collectionValues === undefined) {
741
+ nodeParameters[nodeProperties.name] = (0, utils_1.deepCopy)(nodeProperties.default);
742
+ }
743
+ else {
744
+ nodeParameters[nodeProperties.name] = collectionValues;
745
+ }
746
+ nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
747
+ }
748
+ else if (collectionValues !== nodeProperties.default) {
749
+ // Set only if values got found and it is not the default
750
+ nodeParameters[nodeProperties.name] = collectionValues;
751
+ nodeParametersFull[nodeProperties.name] = nodeParameters[nodeProperties.name];
752
+ }
753
+ }
754
+ }
755
+ }
756
+ return nodeParameters;
757
+ }
758
+ /**
759
+ * Returns the webhook path
760
+ */
761
+ function getNodeWebhookPath(workflowId, node, path, isFullPath, restartWebhook) {
762
+ let webhookPath = '';
763
+ if (restartWebhook === true) {
764
+ return path;
765
+ }
766
+ if (node.webhookId === undefined) {
767
+ const nodeName = encodeURIComponent(node.name.toLowerCase());
768
+ webhookPath = `${workflowId}/${nodeName}/${path}`;
769
+ }
770
+ else {
771
+ if (isFullPath === true) {
772
+ return path || node.webhookId;
773
+ }
774
+ webhookPath = `${node.webhookId}/${path}`;
775
+ }
776
+ return webhookPath;
777
+ }
778
+ /**
779
+ * Returns the webhook URL
780
+ */
781
+ function getNodeWebhookUrl(baseUrl, workflowId, node, path, isFullPath) {
782
+ if ((path.startsWith(':') || path.includes('/:')) && node.webhookId) {
783
+ // setting this to false to prefix the webhookId
784
+ isFullPath = false;
785
+ }
786
+ if (path.startsWith('/')) {
787
+ path = path.slice(1);
788
+ }
789
+ return `${baseUrl}/${getNodeWebhookPath(workflowId, node, path, isFullPath)}`;
790
+ }
791
+ function getConnectionTypes(connections) {
792
+ return connections
793
+ .map((connection) => {
794
+ if (typeof connection === 'string') {
795
+ return connection;
796
+ }
797
+ return connection.type;
798
+ })
799
+ .filter((connection) => connection !== undefined);
800
+ }
801
+ function getNodeInputs(workflow, node, nodeTypeData) {
802
+ if (Array.isArray(nodeTypeData?.inputs)) {
803
+ return nodeTypeData.inputs;
804
+ }
805
+ // Calculate the outputs dynamically
806
+ try {
807
+ return (workflow.expression.getSimpleParameterValue(node, nodeTypeData.inputs, 'internal', {}) || []);
808
+ }
809
+ catch (e) {
810
+ console.warn('Could not calculate inputs dynamically for node: ', node.name);
811
+ return [];
812
+ }
813
+ }
814
+ function getNodeOutputs(workflow, node, nodeTypeData) {
815
+ let outputs = [];
816
+ if (Array.isArray(nodeTypeData.outputs)) {
817
+ outputs = nodeTypeData.outputs;
818
+ }
819
+ else {
820
+ // Calculate the outputs dynamically
821
+ try {
822
+ outputs = (workflow.expression.getSimpleParameterValue(node, nodeTypeData.outputs, 'internal', {}) || []);
823
+ }
824
+ catch (e) {
825
+ console.warn('Could not calculate outputs dynamically for node: ', node.name);
826
+ }
827
+ }
828
+ if (node.onError === 'continueErrorOutput') {
829
+ // Copy the data to make sure that we do not change the data of the
830
+ // node type and so change the displayNames for all nodes in the flow
831
+ outputs = (0, utils_1.deepCopy)(outputs);
832
+ if (outputs.length === 1) {
833
+ // Set the displayName to "Success"
834
+ if (typeof outputs[0] === 'string') {
835
+ outputs[0] = {
836
+ type: outputs[0],
837
+ };
838
+ }
839
+ outputs[0].displayName = 'Success';
840
+ }
841
+ return [
842
+ ...outputs,
843
+ {
844
+ category: 'error',
845
+ type: interfaces_1.NodeConnectionTypes.Main,
846
+ displayName: 'Error',
847
+ },
848
+ ];
849
+ }
850
+ return outputs;
851
+ }
852
+ /**
853
+ * Returns all the parameter-issues of the node
854
+ *
855
+ * @param {INodeProperties[]} nodePropertiesArray The properties of the node
856
+ * @param {INode} node The data of the node
857
+ */
858
+ function getNodeParametersIssues(nodePropertiesArray, node, nodeTypeDescription, pinDataNodeNames) {
859
+ const foundIssues = {};
860
+ let propertyIssues;
861
+ if (node.disabled === true || pinDataNodeNames?.includes(node.name)) {
862
+ // Ignore issues on disabled and pindata nodes
863
+ return null;
864
+ }
865
+ for (const nodeProperty of nodePropertiesArray) {
866
+ propertyIssues = getParameterIssues(nodeProperty, node.parameters, '', node, nodeTypeDescription);
867
+ mergeIssues(foundIssues, propertyIssues);
868
+ }
869
+ if (Object.keys(foundIssues).length === 0) {
870
+ return null;
871
+ }
872
+ return foundIssues;
873
+ }
874
+ /*
875
+ * Validates resource locator node parameters based on validation ruled defined in each parameter mode
876
+ */
877
+ const validateResourceLocatorParameter = (value, parameterMode) => {
878
+ const valueToValidate = value?.value?.toString() || '';
879
+ if (valueToValidate.startsWith('=')) {
880
+ return [];
881
+ }
882
+ const validationErrors = [];
883
+ // Each mode can have multiple validations specified
884
+ if (parameterMode.validation) {
885
+ for (const validation of parameterMode.validation) {
886
+ if (validation && validation.type === 'regex') {
887
+ const regexValidation = validation;
888
+ const regex = new RegExp(`^${regexValidation.properties.regex}$`);
889
+ if (!regex.test(valueToValidate)) {
890
+ validationErrors.push(regexValidation.properties.errorMessage);
891
+ }
892
+ }
893
+ }
894
+ }
895
+ return validationErrors;
896
+ };
897
+ /*
898
+ * Validates resource mapper values based on service schema
899
+ */
900
+ const validateResourceMapperParameter = (nodeProperties, value, skipRequiredCheck = false) => {
901
+ // No issues to raise in automatic mapping mode, no user input to validate
902
+ if (value.mappingMode === 'autoMapInputData') {
903
+ return {};
904
+ }
905
+ const issues = {};
906
+ let fieldWordSingular = nodeProperties.typeOptions?.resourceMapper?.fieldWords?.singular || 'Field';
907
+ fieldWordSingular = fieldWordSingular.charAt(0).toUpperCase() + fieldWordSingular.slice(1);
908
+ value.schema.forEach((field) => {
909
+ const fieldValue = value.value ? value.value[field.id] : null;
910
+ const key = `${nodeProperties.name}.${field.id}`;
911
+ const fieldErrors = [];
912
+ if (field.required && !skipRequiredCheck) {
913
+ if (value.value === null || fieldValue === undefined) {
914
+ const error = `${fieldWordSingular} "${field.id}" is required`;
915
+ fieldErrors.push(error);
916
+ }
917
+ }
918
+ if (!fieldValue?.toString().startsWith('=') && field.type) {
919
+ const validationResult = (0, type_validation_1.validateFieldType)(field.id, fieldValue, field.type, {
920
+ valueOptions: field.options,
921
+ });
922
+ if (!validationResult.valid && validationResult.errorMessage) {
923
+ fieldErrors.push(validationResult.errorMessage);
924
+ }
925
+ }
926
+ if (fieldErrors.length > 0) {
927
+ issues[key] = fieldErrors;
928
+ }
929
+ });
930
+ return issues;
931
+ };
932
+ const validateParameter = (nodeProperties, value, type) => {
933
+ const nodeName = nodeProperties.name;
934
+ const options = type === 'options' ? nodeProperties.options : undefined;
935
+ if (!value?.toString().startsWith('=')) {
936
+ const validationResult = (0, type_validation_1.validateFieldType)(nodeName, value, type, {
937
+ valueOptions: options,
938
+ });
939
+ if (!validationResult.valid && validationResult.errorMessage) {
940
+ return validationResult.errorMessage;
941
+ }
942
+ }
943
+ return undefined;
944
+ };
945
+ /**
946
+ * Adds an issue if the parameter is not defined
947
+ *
948
+ * @param {INodeIssues} foundIssues The already found issues
949
+ * @param {INodeProperties} nodeProperties The properties of the node
950
+ * @param {NodeParameterValue} value The value of the parameter
951
+ */
952
+ function addToIssuesIfMissing(foundIssues, nodeProperties, value) {
953
+ // TODO: Check what it really has when undefined
954
+ if ((nodeProperties.type === 'string' && (value === '' || value === undefined)) ||
955
+ (nodeProperties.type === 'multiOptions' && Array.isArray(value) && value.length === 0) ||
956
+ (nodeProperties.type === 'dateTime' && (value === '' || value === undefined)) ||
957
+ (nodeProperties.type === 'options' && (value === '' || value === undefined)) ||
958
+ ((nodeProperties.type === 'resourceLocator' || nodeProperties.type === 'workflowSelector') &&
959
+ !(0, type_guards_1.isValidResourceLocatorParameterValue)(value))) {
960
+ // Parameter is required but empty
961
+ if (foundIssues.parameters === undefined) {
962
+ foundIssues.parameters = {};
963
+ }
964
+ if (foundIssues.parameters[nodeProperties.name] === undefined) {
965
+ foundIssues.parameters[nodeProperties.name] = [];
966
+ }
967
+ foundIssues.parameters[nodeProperties.name].push(`Parameter "${nodeProperties.displayName}" is required.`);
968
+ }
969
+ }
970
+ /**
971
+ * Returns the parameter value
972
+ *
973
+ * @param {INodeParameters} nodeValues The values of the node
974
+ * @param {string} parameterName The name of the parameter to return the value of
975
+ * @param {string} path The path to the properties
976
+ */
977
+ function getParameterValueByPath(nodeValues, parameterName, path) {
978
+ return (0, get_1.default)(nodeValues, path ? `${path}.${parameterName}` : parameterName);
979
+ }
980
+ function isINodeParameterResourceLocator(value) {
981
+ return typeof value === 'object' && value !== null && 'value' in value && 'mode' in value;
982
+ }
983
+ /**
984
+ * Returns all the issues with the given node-values
985
+ *
986
+ * @param {INodeProperties} nodeProperties The properties of the node
987
+ * @param {INodeParameters} nodeValues The values of the node
988
+ * @param {string} path The path to the properties
989
+ */
990
+ // eslint-disable-next-line complexity
991
+ function getParameterIssues(nodeProperties, nodeValues, path, node, nodeTypeDescription) {
992
+ const foundIssues = {};
993
+ const isDisplayed = displayParameterPath(nodeValues, nodeProperties, path, node, nodeTypeDescription);
994
+ if (nodeProperties.required === true) {
995
+ if (isDisplayed) {
996
+ const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
997
+ if (
998
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
999
+ nodeProperties.typeOptions !== undefined &&
1000
+ nodeProperties.typeOptions.multipleValues !== undefined) {
1001
+ // Multiple can be set so will be an array
1002
+ if (Array.isArray(value)) {
1003
+ for (const singleValue of value) {
1004
+ addToIssuesIfMissing(foundIssues, nodeProperties, singleValue);
1005
+ }
1006
+ }
1007
+ }
1008
+ else {
1009
+ // Only one can be set so will be a single value
1010
+ addToIssuesIfMissing(foundIssues, nodeProperties, value);
1011
+ }
1012
+ }
1013
+ }
1014
+ if ((nodeProperties.type === 'resourceLocator' || nodeProperties.type === 'workflowSelector') &&
1015
+ isDisplayed) {
1016
+ const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
1017
+ if (isINodeParameterResourceLocator(value)) {
1018
+ const mode = nodeProperties.modes?.find((option) => option.name === value.mode);
1019
+ if (mode) {
1020
+ const errors = validateResourceLocatorParameter(value, mode);
1021
+ errors.forEach((error) => {
1022
+ if (foundIssues.parameters === undefined) {
1023
+ foundIssues.parameters = {};
1024
+ }
1025
+ if (foundIssues.parameters[nodeProperties.name] === undefined) {
1026
+ foundIssues.parameters[nodeProperties.name] = [];
1027
+ }
1028
+ foundIssues.parameters[nodeProperties.name].push(error);
1029
+ });
1030
+ }
1031
+ }
1032
+ }
1033
+ else if (nodeProperties.type === 'resourceMapper' && isDisplayed) {
1034
+ const skipRequiredCheck = nodeProperties.typeOptions?.resourceMapper?.mode !== 'add';
1035
+ const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
1036
+ if ((0, type_guards_1.isResourceMapperValue)(value)) {
1037
+ const issues = validateResourceMapperParameter(nodeProperties, value, skipRequiredCheck);
1038
+ if (Object.keys(issues).length > 0) {
1039
+ if (foundIssues.parameters === undefined) {
1040
+ foundIssues.parameters = {};
1041
+ }
1042
+ if (foundIssues.parameters[nodeProperties.name] === undefined) {
1043
+ foundIssues.parameters[nodeProperties.name] = [];
1044
+ }
1045
+ foundIssues.parameters = { ...foundIssues.parameters, ...issues };
1046
+ }
1047
+ }
1048
+ }
1049
+ else if (nodeProperties.type === 'filter' && isDisplayed) {
1050
+ const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
1051
+ if ((0, type_guards_1.isFilterValue)(value)) {
1052
+ const issues = (0, filter_parameter_1.validateFilterParameter)(nodeProperties, value);
1053
+ if (Object.keys(issues).length > 0) {
1054
+ foundIssues.parameters = { ...foundIssues.parameters, ...issues };
1055
+ }
1056
+ }
1057
+ }
1058
+ else if (nodeProperties.validateType) {
1059
+ const value = getParameterValueByPath(nodeValues, nodeProperties.name, path);
1060
+ const error = validateParameter(nodeProperties, value, nodeProperties.validateType);
1061
+ if (error) {
1062
+ if (foundIssues.parameters === undefined) {
1063
+ foundIssues.parameters = {};
1064
+ }
1065
+ if (foundIssues.parameters[nodeProperties.name] === undefined) {
1066
+ foundIssues.parameters[nodeProperties.name] = [];
1067
+ }
1068
+ foundIssues.parameters[nodeProperties.name].push(error);
1069
+ }
1070
+ }
1071
+ // Check if there are any child parameters
1072
+ if (nodeProperties.options === undefined) {
1073
+ // There are none so nothing else to check
1074
+ return foundIssues;
1075
+ }
1076
+ // Check the child parameters
1077
+ // Important:
1078
+ // Checks the child properties only if the property is defined on current level.
1079
+ // That means that the required flag works only for the current level only. If
1080
+ // it is set on a lower level it means that the property is only required in case
1081
+ // the parent property got set.
1082
+ let basePath = path ? `${path}.` : '';
1083
+ const checkChildNodeProperties = [];
1084
+ // Collect all the properties to check
1085
+ if (nodeProperties.type === 'collection') {
1086
+ for (const option of nodeProperties.options) {
1087
+ checkChildNodeProperties.push({
1088
+ basePath,
1089
+ data: option,
1090
+ });
1091
+ }
1092
+ }
1093
+ else if (nodeProperties.type === 'fixedCollection' && isDisplayed) {
1094
+ basePath = basePath ? `${basePath}.` : `${nodeProperties.name}.`;
1095
+ let propertyOptions;
1096
+ for (propertyOptions of nodeProperties.options) {
1097
+ // Check if the option got set and if not skip it
1098
+ const value = getParameterValueByPath(nodeValues, propertyOptions.name, basePath.slice(0, -1));
1099
+ // Validate allowed field counts
1100
+ const valueArray = Array.isArray(value) ? value : [];
1101
+ const { minRequiredFields, maxAllowedFields } = nodeProperties.typeOptions ?? {};
1102
+ let error = '';
1103
+ if (minRequiredFields && valueArray.length < minRequiredFields) {
1104
+ error = `At least ${minRequiredFields} ${minRequiredFields === 1 ? 'field is' : 'fields are'} required.`;
1105
+ }
1106
+ if (maxAllowedFields && valueArray.length > maxAllowedFields) {
1107
+ error = `At most ${maxAllowedFields} ${maxAllowedFields === 1 ? 'field is' : 'fields are'} allowed.`;
1108
+ }
1109
+ if (error) {
1110
+ foundIssues.parameters ??= {};
1111
+ foundIssues.parameters[nodeProperties.name] ??= [];
1112
+ foundIssues.parameters[nodeProperties.name].push(error);
1113
+ }
1114
+ if (value === undefined) {
1115
+ continue;
1116
+ }
1117
+ if (
1118
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
1119
+ nodeProperties.typeOptions !== undefined &&
1120
+ nodeProperties.typeOptions.multipleValues !== undefined) {
1121
+ // Multiple can be set so will be an array of objects
1122
+ if (Array.isArray(value)) {
1123
+ for (let i = 0; i < value.length; i++) {
1124
+ for (const option of propertyOptions.values) {
1125
+ checkChildNodeProperties.push({
1126
+ basePath: `${basePath}${propertyOptions.name}[${i}]`,
1127
+ data: option,
1128
+ });
1129
+ }
1130
+ }
1131
+ }
1132
+ }
1133
+ else {
1134
+ // Only one can be set so will be an object
1135
+ for (const option of propertyOptions.values) {
1136
+ checkChildNodeProperties.push({
1137
+ basePath: basePath + propertyOptions.name,
1138
+ data: option,
1139
+ });
1140
+ }
1141
+ }
1142
+ }
1143
+ }
1144
+ else {
1145
+ // For all other types there is nothing to check so return
1146
+ return foundIssues;
1147
+ }
1148
+ let propertyIssues;
1149
+ for (const optionData of checkChildNodeProperties) {
1150
+ propertyIssues = getParameterIssues(optionData.data, nodeValues, optionData.basePath, node, nodeTypeDescription);
1151
+ mergeIssues(foundIssues, propertyIssues);
1152
+ }
1153
+ return foundIssues;
1154
+ }
1155
+ /**
1156
+ * Merges multiple NodeIssues together
1157
+ *
1158
+ * @param {INodeIssues} destination The issues to merge into
1159
+ * @param {(INodeIssues | null)} source The issues to merge
1160
+ */
1161
+ function mergeIssues(destination, source) {
1162
+ if (source === null) {
1163
+ // Nothing to merge
1164
+ return;
1165
+ }
1166
+ if (source.execution === true) {
1167
+ destination.execution = true;
1168
+ }
1169
+ const objectProperties = ['parameters', 'credentials'];
1170
+ let destinationProperty;
1171
+ for (const propertyName of objectProperties) {
1172
+ if (source[propertyName] !== undefined) {
1173
+ if (destination[propertyName] === undefined) {
1174
+ destination[propertyName] = {};
1175
+ }
1176
+ let parameterName;
1177
+ for (parameterName of Object.keys(source[propertyName])) {
1178
+ destinationProperty = destination[propertyName];
1179
+ if (destinationProperty[parameterName] === undefined) {
1180
+ destinationProperty[parameterName] = [];
1181
+ }
1182
+ destinationProperty[parameterName].push.apply(destinationProperty[parameterName], source[propertyName][parameterName]);
1183
+ }
1184
+ }
1185
+ }
1186
+ if (source.typeUnknown === true) {
1187
+ destination.typeUnknown = true;
1188
+ }
1189
+ }
1190
+ /**
1191
+ * Merges the given node properties
1192
+ */
1193
+ function mergeNodeProperties(mainProperties, addProperties) {
1194
+ let existingIndex;
1195
+ for (const property of addProperties) {
1196
+ if (property.doNotInherit)
1197
+ continue;
1198
+ existingIndex = mainProperties.findIndex((element) => element.name === property.name);
1199
+ if (existingIndex === -1) {
1200
+ // Property does not exist yet, so add
1201
+ mainProperties.push(property);
1202
+ }
1203
+ else {
1204
+ // Property exists already, so overwrite
1205
+ mainProperties[existingIndex] = property;
1206
+ }
1207
+ }
1208
+ }
1209
+ function getVersionedNodeType(object, version) {
1210
+ if ('nodeVersions' in object) {
1211
+ return object.getNodeType(version);
1212
+ }
1213
+ return object;
1214
+ }
1215
+ function isTriggerNode(nodeTypeData) {
1216
+ return nodeTypeData.group.includes('trigger');
1217
+ }
1218
+ function isExecutable(workflow, node, nodeTypeData) {
1219
+ const outputs = getNodeOutputs(workflow, node, nodeTypeData);
1220
+ const outputNames = getConnectionTypes(outputs);
1221
+ return (outputNames.includes(interfaces_1.NodeConnectionTypes.Main) ||
1222
+ outputNames.includes(interfaces_1.NodeConnectionTypes.AiTool) ||
1223
+ isTriggerNode(nodeTypeData));
1224
+ }
1225
+ function isNodeWithWorkflowSelector(node) {
1226
+ return [constants_1.EXECUTE_WORKFLOW_NODE_TYPE, constants_1.WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE].includes(node.type);
1227
+ }
1228
+ /**
1229
+ * @returns An object containing either the resolved operation's action if available,
1230
+ * else the resource and operation if both exist.
1231
+ * If neither can be resolved, returns an empty object.
1232
+ */
1233
+ function resolveResourceAndOperation(nodeParameters, nodeTypeDescription) {
1234
+ const resource = nodeParameters.resource;
1235
+ const operation = nodeParameters.operation;
1236
+ const nodeTypeOperation = nodeTypeDescription.properties.find((p) => p.name === 'operation' && p.displayOptions?.show?.resource?.includes(resource));
1237
+ if (nodeTypeOperation?.options && (0, type_guards_1.isINodePropertyOptionsList)(nodeTypeOperation.options)) {
1238
+ const foundOperation = nodeTypeOperation.options.find((option) => option.value === operation);
1239
+ if (foundOperation?.action) {
1240
+ return { action: foundOperation.action };
1241
+ }
1242
+ }
1243
+ if (resource && operation) {
1244
+ return { operation, resource };
1245
+ }
1246
+ else {
1247
+ return {};
1248
+ }
1249
+ }
1250
+ /**
1251
+ * Generates a human-readable description for a node based on its parameters and type definition.
1252
+ *
1253
+ * This function creates a descriptive string that represents what the node does,
1254
+ * based on its resource, operation, and node type information. The description is
1255
+ * formatted in one of the following ways:
1256
+ *
1257
+ * 1. "{action} in {displayName}" if the operation has a defined action
1258
+ * 2. "{operation} {resource} in {displayName}" if resource and operation exist
1259
+ * 3. The node type's description field as a fallback
1260
+ */
1261
+ function makeDescription(nodeParameters, nodeTypeDescription) {
1262
+ const { action, operation, resource } = resolveResourceAndOperation(nodeParameters, nodeTypeDescription);
1263
+ if (action) {
1264
+ return `${action} in ${nodeTypeDescription.defaults.name}`;
1265
+ }
1266
+ if (resource && operation) {
1267
+ return `${operation} ${resource} in ${nodeTypeDescription.defaults.name}`;
1268
+ }
1269
+ return nodeTypeDescription.description;
1270
+ }
1271
+ function isTool(nodeTypeDescription, parameters) {
1272
+ // Check if node is a vector store in retrieve-as-tool mode
1273
+ if (nodeTypeDescription.name.includes('vectorStore')) {
1274
+ const mode = parameters.mode;
1275
+ return mode === 'retrieve-as-tool';
1276
+ }
1277
+ // Check for other tool nodes
1278
+ for (const output of nodeTypeDescription.outputs) {
1279
+ if (typeof output === 'string') {
1280
+ return output === interfaces_1.NodeConnectionTypes.AiTool;
1281
+ }
1282
+ else if (output?.type && output.type === interfaces_1.NodeConnectionTypes.AiTool) {
1283
+ return true;
1284
+ }
1285
+ }
1286
+ return false;
1287
+ }
1288
+ /**
1289
+ * Generates a resource and operation aware node name.
1290
+ *
1291
+ * Appends `in {nodeTypeDisplayName}` if nodeType is a tool
1292
+ *
1293
+ * 1. "{action}" if the operation has a defined action
1294
+ * 2. "{operation} {resource}" if resource and operation exist
1295
+ * 3. The node type's defaults.name field or displayName as a fallback
1296
+ */
1297
+ function makeNodeName(nodeParameters, nodeTypeDescription) {
1298
+ const { action, operation, resource } = resolveResourceAndOperation(nodeParameters, nodeTypeDescription);
1299
+ const postfix = isTool(nodeTypeDescription, nodeParameters)
1300
+ ? ` in ${nodeTypeDescription.defaults.name}`
1301
+ : '';
1302
+ if (action) {
1303
+ return `${action}${postfix}`;
1304
+ }
1305
+ if (resource && operation) {
1306
+ const operationProper = operation[0].toUpperCase() + operation.slice(1);
1307
+ return `${operationProper} ${resource}${postfix}`;
1308
+ }
1309
+ return nodeTypeDescription.defaults.name ?? nodeTypeDescription.displayName;
1310
+ }
1311
+ /**
1312
+ * Returns true if the node name is of format `<defaultNodeName>\d*` , which includes auto-renamed nodes
1313
+ */
1314
+ function isDefaultNodeName(name, nodeType, parameters) {
1315
+ const legacyDefaultName = nodeType.defaults.name ?? nodeType.displayName;
1316
+ const currentDefaultName = makeNodeName(parameters, nodeType);
1317
+ for (const defaultName of [legacyDefaultName, currentDefaultName]) {
1318
+ if (name.startsWith(defaultName) && /^\d*$/.test(name.slice(defaultName.length)))
1319
+ return true;
1320
+ }
1321
+ return false;
1322
+ }
1323
+ /**
1324
+ * Determines whether a tool description should be updated and returns the new description if needed.
1325
+ * Returns undefined if no update is needed.
1326
+ */
1327
+ const getUpdatedToolDescription = (currentNodeType, newParameters, currentParameters) => {
1328
+ if (!currentNodeType)
1329
+ return;
1330
+ if (newParameters?.descriptionType === 'manual' && currentParameters) {
1331
+ const previousDescription = makeDescription(currentParameters, currentNodeType);
1332
+ const newDescription = makeDescription(newParameters, currentNodeType);
1333
+ if (newParameters.toolDescription === previousDescription ||
1334
+ !newParameters.toolDescription?.toString().trim() ||
1335
+ newParameters.toolDescription === currentNodeType.description) {
1336
+ return newDescription;
1337
+ }
1338
+ }
1339
+ return;
1340
+ };
1341
+ exports.getUpdatedToolDescription = getUpdatedToolDescription;
1342
+ /**
1343
+ * Generates a tool description for a given node based on its parameters and type.
1344
+ */
1345
+ function getToolDescriptionForNode(node, nodeType) {
1346
+ let toolDescription;
1347
+ if (node.parameters.descriptionType === 'auto' ||
1348
+ !node?.parameters.toolDescription?.toString().trim()) {
1349
+ toolDescription = makeDescription(node.parameters, nodeType.description);
1350
+ }
1351
+ else if (node?.parameters.toolDescription) {
1352
+ toolDescription = node.parameters.toolDescription;
1353
+ }
1354
+ else {
1355
+ toolDescription = nodeType.description.description;
1356
+ }
1357
+ return toolDescription;
1358
+ }
1359
+ /**
1360
+ * Attempts to retrieve the ID of a subworkflow from a execute workflow node.
1361
+ */
1362
+ function getSubworkflowId(node) {
1363
+ if (isNodeWithWorkflowSelector(node) && (0, type_guards_1.isResourceLocatorValue)(node.parameters.workflowId)) {
1364
+ return node.parameters.workflowId.value;
1365
+ }
1366
+ return;
1367
+ }
1368
+ });
1369
+ //# sourceMappingURL=node-helpers.js.map