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