n8n-workflow 1.98.0 → 1.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (707) hide show
  1. package/dist/{augment-object.d.ts → cjs/augment-object.d.ts} +1 -0
  2. package/dist/cjs/augment-object.d.ts.map +1 -0
  3. package/dist/cjs/augment-object.js +159 -0
  4. package/dist/cjs/augment-object.js.map +1 -0
  5. package/dist/{constants.d.ts → cjs/constants.d.ts} +12 -0
  6. package/dist/cjs/constants.d.ts.map +1 -0
  7. package/dist/cjs/constants.js +112 -0
  8. package/dist/cjs/constants.js.map +1 -0
  9. package/dist/{cron.d.ts → cjs/cron.d.ts} +1 -0
  10. package/dist/cjs/cron.d.ts.map +1 -0
  11. package/dist/cjs/cron.js +37 -0
  12. package/dist/cjs/cron.js.map +1 -0
  13. package/dist/{deferred-promise.d.ts → cjs/deferred-promise.d.ts} +1 -0
  14. package/dist/cjs/deferred-promise.d.ts.map +1 -0
  15. package/dist/cjs/deferred-promise.js +22 -0
  16. package/dist/cjs/deferred-promise.js.map +1 -0
  17. package/dist/{errors → cjs/errors}/abstract/execution-base.error.d.ts +1 -0
  18. package/dist/cjs/errors/abstract/execution-base.error.d.ts.map +1 -0
  19. package/dist/cjs/errors/abstract/execution-base.error.js +50 -0
  20. package/dist/cjs/errors/abstract/execution-base.error.js.map +1 -0
  21. package/dist/cjs/errors/abstract/node.error.d.ts +48 -0
  22. package/dist/cjs/errors/abstract/node.error.d.ts.map +1 -0
  23. package/dist/cjs/errors/abstract/node.error.js +178 -0
  24. package/dist/cjs/errors/abstract/node.error.js.map +1 -0
  25. package/dist/{errors → cjs/errors}/application.error.d.ts +6 -2
  26. package/dist/cjs/errors/application.error.d.ts.map +1 -0
  27. package/dist/cjs/errors/application.error.js +41 -0
  28. package/dist/cjs/errors/application.error.js.map +1 -0
  29. package/dist/{errors → cjs/errors}/base/base.error.d.ts +12 -0
  30. package/dist/cjs/errors/base/base.error.d.ts.map +1 -0
  31. package/dist/cjs/errors/base/base.error.js +53 -0
  32. package/dist/cjs/errors/base/base.error.js.map +1 -0
  33. package/dist/{errors → cjs/errors}/base/operational.error.d.ts +8 -0
  34. package/dist/cjs/errors/base/operational.error.d.ts.map +1 -0
  35. package/dist/cjs/errors/base/operational.error.js +29 -0
  36. package/dist/cjs/errors/base/operational.error.js.map +1 -0
  37. package/dist/{errors → cjs/errors}/base/unexpected.error.d.ts +8 -0
  38. package/dist/cjs/errors/base/unexpected.error.d.ts.map +1 -0
  39. package/dist/cjs/errors/base/unexpected.error.js +29 -0
  40. package/dist/cjs/errors/base/unexpected.error.js.map +1 -0
  41. package/dist/{errors → cjs/errors}/base/user.error.d.ts +8 -0
  42. package/dist/cjs/errors/base/user.error.d.ts.map +1 -0
  43. package/dist/cjs/errors/base/user.error.js +29 -0
  44. package/dist/cjs/errors/base/user.error.js.map +1 -0
  45. package/dist/{errors → cjs/errors}/cli-subworkflow-operation.error.d.ts +1 -0
  46. package/dist/cjs/errors/cli-subworkflow-operation.error.d.ts.map +1 -0
  47. package/dist/cjs/errors/cli-subworkflow-operation.error.js +18 -0
  48. package/dist/cjs/errors/cli-subworkflow-operation.error.js.map +1 -0
  49. package/dist/{errors → cjs/errors}/db-connection-timeout-error.d.ts +1 -0
  50. package/dist/cjs/errors/db-connection-timeout-error.d.ts.map +1 -0
  51. package/dist/cjs/errors/db-connection-timeout-error.js +23 -0
  52. package/dist/cjs/errors/db-connection-timeout-error.js.map +1 -0
  53. package/dist/cjs/errors/ensure-error.d.ts +3 -0
  54. package/dist/cjs/errors/ensure-error.d.ts.map +1 -0
  55. package/dist/cjs/errors/ensure-error.js +23 -0
  56. package/dist/cjs/errors/ensure-error.js.map +1 -0
  57. package/dist/{errors → cjs/errors}/error.types.d.ts +2 -0
  58. package/dist/cjs/errors/error.types.d.ts.map +1 -0
  59. package/dist/cjs/errors/error.types.js +13 -0
  60. package/dist/{errors → cjs/errors}/error.types.js.map +1 -1
  61. package/dist/{errors → cjs/errors}/execution-cancelled.error.d.ts +1 -0
  62. package/dist/cjs/errors/execution-cancelled.error.d.ts.map +1 -0
  63. package/dist/cjs/errors/execution-cancelled.error.js +24 -0
  64. package/dist/cjs/errors/execution-cancelled.error.js.map +1 -0
  65. package/dist/{errors → cjs/errors}/expression-extension.error.d.ts +1 -0
  66. package/dist/cjs/errors/expression-extension.error.d.ts.map +1 -0
  67. package/dist/cjs/errors/expression-extension.error.js +18 -0
  68. package/dist/cjs/errors/expression-extension.error.js.map +1 -0
  69. package/dist/{errors → cjs/errors}/expression.error.d.ts +4 -0
  70. package/dist/cjs/errors/expression.error.d.ts.map +1 -0
  71. package/dist/cjs/errors/expression.error.js +48 -0
  72. package/dist/cjs/errors/expression.error.js.map +1 -0
  73. package/dist/{errors → cjs/errors}/index.d.ts +1 -0
  74. package/dist/cjs/errors/index.d.ts.map +1 -0
  75. package/dist/cjs/errors/index.js +58 -0
  76. package/dist/cjs/errors/index.js.map +1 -0
  77. package/dist/{errors → cjs/errors}/node-api.error.d.ts +8 -0
  78. package/dist/cjs/errors/node-api.error.d.ts.map +1 -0
  79. package/dist/cjs/errors/node-api.error.js +257 -0
  80. package/dist/cjs/errors/node-api.error.js.map +1 -0
  81. package/dist/{errors → cjs/errors}/node-operation.error.d.ts +4 -0
  82. package/dist/cjs/errors/node-operation.error.d.ts.map +1 -0
  83. package/dist/cjs/errors/node-operation.error.js +50 -0
  84. package/dist/cjs/errors/node-operation.error.js.map +1 -0
  85. package/dist/{errors → cjs/errors}/node-ssl.error.d.ts +1 -0
  86. package/dist/cjs/errors/node-ssl.error.d.ts.map +1 -0
  87. package/dist/cjs/errors/node-ssl.error.js +21 -0
  88. package/dist/cjs/errors/node-ssl.error.js.map +1 -0
  89. package/dist/{errors → cjs/errors}/subworkflow-operation.error.d.ts +1 -0
  90. package/dist/cjs/errors/subworkflow-operation.error.d.ts.map +1 -0
  91. package/dist/cjs/errors/subworkflow-operation.error.js +30 -0
  92. package/dist/cjs/errors/subworkflow-operation.error.js.map +1 -0
  93. package/dist/{errors → cjs/errors}/trigger-close.error.d.ts +1 -0
  94. package/dist/cjs/errors/trigger-close.error.d.ts.map +1 -0
  95. package/dist/cjs/errors/trigger-close.error.js +24 -0
  96. package/dist/cjs/errors/trigger-close.error.js.map +1 -0
  97. package/dist/{errors → cjs/errors}/webhook-taken.error.d.ts +1 -0
  98. package/dist/cjs/errors/webhook-taken.error.d.ts.map +1 -0
  99. package/dist/cjs/errors/webhook-taken.error.js +21 -0
  100. package/dist/cjs/errors/webhook-taken.error.js.map +1 -0
  101. package/dist/{errors → cjs/errors}/workflow-activation.error.d.ts +4 -0
  102. package/dist/cjs/errors/workflow-activation.error.d.ts.map +1 -0
  103. package/dist/cjs/errors/workflow-activation.error.js +54 -0
  104. package/dist/cjs/errors/workflow-activation.error.js.map +1 -0
  105. package/dist/{errors → cjs/errors}/workflow-deactivation.error.d.ts +1 -0
  106. package/dist/cjs/errors/workflow-deactivation.error.d.ts.map +1 -0
  107. package/dist/cjs/errors/workflow-deactivation.error.js +18 -0
  108. package/dist/cjs/errors/workflow-deactivation.error.js.map +1 -0
  109. package/dist/{errors → cjs/errors}/workflow-operation.error.d.ts +4 -0
  110. package/dist/cjs/errors/workflow-operation.error.d.ts.map +1 -0
  111. package/dist/cjs/errors/workflow-operation.error.js +32 -0
  112. package/dist/cjs/errors/workflow-operation.error.js.map +1 -0
  113. package/dist/{execution-status.d.ts → cjs/execution-status.d.ts} +1 -0
  114. package/dist/cjs/execution-status.d.ts.map +1 -0
  115. package/dist/cjs/execution-status.js +24 -0
  116. package/dist/cjs/execution-status.js.map +1 -0
  117. package/dist/{expression-evaluator-proxy.d.ts → cjs/expression-evaluator-proxy.d.ts} +1 -0
  118. package/dist/cjs/expression-evaluator-proxy.d.ts.map +1 -0
  119. package/dist/cjs/expression-evaluator-proxy.js +30 -0
  120. package/dist/cjs/expression-evaluator-proxy.js.map +1 -0
  121. package/dist/{expression-sandboxing.d.ts → cjs/expression-sandboxing.d.ts} +1 -0
  122. package/dist/cjs/expression-sandboxing.d.ts.map +1 -0
  123. package/dist/cjs/expression-sandboxing.js +62 -0
  124. package/dist/cjs/expression-sandboxing.js.map +1 -0
  125. package/dist/{expression.d.ts → cjs/expression.d.ts} +33 -0
  126. package/dist/cjs/expression.d.ts.map +1 -0
  127. package/dist/cjs/expression.js +368 -0
  128. package/dist/cjs/expression.js.map +1 -0
  129. package/dist/cjs/expressions/expression-helpers.d.ts +6 -0
  130. package/dist/cjs/expressions/expression-helpers.d.ts.map +1 -0
  131. package/dist/cjs/expressions/expression-helpers.js +24 -0
  132. package/dist/cjs/expressions/expression-helpers.js.map +1 -0
  133. package/dist/{extensions → cjs/extensions}/array-extensions.d.ts +1 -0
  134. package/dist/cjs/extensions/array-extensions.d.ts.map +1 -0
  135. package/dist/cjs/extensions/array-extensions.js +627 -0
  136. package/dist/cjs/extensions/array-extensions.js.map +1 -0
  137. package/dist/{extensions → cjs/extensions}/boolean-extensions.d.ts +1 -0
  138. package/dist/cjs/extensions/boolean-extensions.d.ts.map +1 -0
  139. package/dist/cjs/extensions/boolean-extensions.js +49 -0
  140. package/dist/cjs/extensions/boolean-extensions.js.map +1 -0
  141. package/dist/{extensions → cjs/extensions}/date-extensions.d.ts +1 -0
  142. package/dist/cjs/extensions/date-extensions.d.ts.map +1 -0
  143. package/dist/cjs/extensions/date-extensions.js +528 -0
  144. package/dist/cjs/extensions/date-extensions.js.map +1 -0
  145. package/dist/{extensions → cjs/extensions}/expression-extension.d.ts +22 -0
  146. package/dist/cjs/extensions/expression-extension.d.ts.map +1 -0
  147. package/dist/cjs/extensions/expression-extension.js +493 -0
  148. package/dist/cjs/extensions/expression-extension.js.map +1 -0
  149. package/dist/{extensions → cjs/extensions}/expression-parser.d.ts +1 -0
  150. package/dist/cjs/extensions/expression-parser.d.ts.map +1 -0
  151. package/dist/cjs/extensions/expression-parser.js +94 -0
  152. package/dist/cjs/extensions/expression-parser.js.map +1 -0
  153. package/dist/{extensions → cjs/extensions}/extended-functions.d.ts +1 -0
  154. package/dist/cjs/extensions/extended-functions.d.ts.map +1 -0
  155. package/dist/cjs/extensions/extended-functions.js +89 -0
  156. package/dist/cjs/extensions/extended-functions.js.map +1 -0
  157. package/dist/{extensions → cjs/extensions}/extensions.d.ts +1 -0
  158. package/dist/cjs/extensions/extensions.d.ts.map +1 -0
  159. package/dist/cjs/extensions/extensions.js +13 -0
  160. package/dist/cjs/extensions/extensions.js.map +1 -0
  161. package/dist/{extensions → cjs/extensions}/index.d.ts +1 -0
  162. package/dist/cjs/extensions/index.d.ts.map +1 -0
  163. package/dist/cjs/extensions/index.js +21 -0
  164. package/dist/cjs/extensions/index.js.map +1 -0
  165. package/dist/{extensions → cjs/extensions}/number-extensions.d.ts +1 -0
  166. package/dist/cjs/extensions/number-extensions.d.ts.map +1 -0
  167. package/dist/cjs/extensions/number-extensions.js +236 -0
  168. package/dist/cjs/extensions/number-extensions.js.map +1 -0
  169. package/dist/{extensions → cjs/extensions}/object-extensions.d.ts +1 -0
  170. package/dist/cjs/extensions/object-extensions.d.ts.map +1 -0
  171. package/dist/cjs/extensions/object-extensions.js +296 -0
  172. package/dist/cjs/extensions/object-extensions.js.map +1 -0
  173. package/dist/{extensions → cjs/extensions}/string-extensions.d.ts +1 -0
  174. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -0
  175. package/dist/cjs/extensions/string-extensions.js +788 -0
  176. package/dist/cjs/extensions/string-extensions.js.map +1 -0
  177. package/dist/{extensions → cjs/extensions}/utils.d.ts +1 -0
  178. package/dist/cjs/extensions/utils.d.ts.map +1 -0
  179. package/dist/cjs/extensions/utils.js +42 -0
  180. package/dist/cjs/extensions/utils.js.map +1 -0
  181. package/dist/cjs/from-ai-parse-utils.d.ts +44 -0
  182. package/dist/cjs/from-ai-parse-utils.d.ts.map +1 -0
  183. package/dist/cjs/from-ai-parse-utils.js +291 -0
  184. package/dist/cjs/from-ai-parse-utils.js.map +1 -0
  185. package/dist/{global-state.d.ts → cjs/global-state.d.ts} +1 -0
  186. package/dist/cjs/global-state.d.ts.map +1 -0
  187. package/dist/cjs/global-state.js +23 -0
  188. package/dist/cjs/global-state.js.map +1 -0
  189. package/dist/{graph → cjs/graph}/graph-utils.d.ts +21 -0
  190. package/dist/cjs/graph/graph-utils.d.ts.map +1 -0
  191. package/dist/cjs/graph/graph-utils.js +195 -0
  192. package/dist/cjs/graph/graph-utils.js.map +1 -0
  193. package/dist/{index.d.ts → cjs/index.d.ts} +2 -0
  194. package/dist/cjs/index.d.ts.map +1 -0
  195. package/dist/cjs/index.js +114 -0
  196. package/dist/cjs/index.js.map +1 -0
  197. package/dist/{interfaces.d.ts → cjs/interfaces.d.ts} +89 -0
  198. package/dist/cjs/interfaces.d.ts.map +1 -0
  199. package/dist/cjs/interfaces.js +53 -0
  200. package/dist/cjs/interfaces.js.map +1 -0
  201. package/dist/{logger-proxy.d.ts → cjs/logger-proxy.d.ts} +1 -0
  202. package/dist/cjs/logger-proxy.d.ts.map +1 -0
  203. package/dist/cjs/logger-proxy.js +26 -0
  204. package/dist/cjs/logger-proxy.js.map +1 -0
  205. package/dist/{message-event-bus.d.ts → cjs/message-event-bus.d.ts} +1 -0
  206. package/dist/cjs/message-event-bus.d.ts.map +1 -0
  207. package/dist/cjs/message-event-bus.js +96 -0
  208. package/dist/cjs/message-event-bus.js.map +1 -0
  209. package/dist/{metadata-utils.d.ts → cjs/metadata-utils.d.ts} +1 -0
  210. package/dist/cjs/metadata-utils.d.ts.map +1 -0
  211. package/dist/cjs/metadata-utils.js +37 -0
  212. package/dist/cjs/metadata-utils.js.map +1 -0
  213. package/dist/{native-methods → cjs/native-methods}/array.methods.d.ts +1 -0
  214. package/dist/cjs/native-methods/array.methods.d.ts.map +1 -0
  215. package/dist/cjs/native-methods/array.methods.js +552 -0
  216. package/dist/cjs/native-methods/array.methods.js.map +1 -0
  217. package/dist/{native-methods → cjs/native-methods}/boolean.methods.d.ts +1 -0
  218. package/dist/cjs/native-methods/boolean.methods.d.ts.map +1 -0
  219. package/dist/cjs/native-methods/boolean.methods.js +31 -0
  220. package/dist/cjs/native-methods/boolean.methods.js.map +1 -0
  221. package/dist/{native-methods → cjs/native-methods}/index.d.ts +1 -0
  222. package/dist/cjs/native-methods/index.d.ts.map +1 -0
  223. package/dist/cjs/native-methods/index.js +27 -0
  224. package/dist/cjs/native-methods/index.js.map +1 -0
  225. package/dist/{native-methods → cjs/native-methods}/number.methods.d.ts +1 -0
  226. package/dist/cjs/native-methods/number.methods.d.ts.map +1 -0
  227. package/dist/cjs/native-methods/number.methods.js +95 -0
  228. package/dist/cjs/native-methods/number.methods.js.map +1 -0
  229. package/dist/{native-methods → cjs/native-methods}/object.methods.d.ts +1 -0
  230. package/dist/cjs/native-methods/object.methods.d.ts.map +1 -0
  231. package/dist/cjs/native-methods/object.methods.js +18 -0
  232. package/dist/cjs/native-methods/object.methods.js.map +1 -0
  233. package/dist/{native-methods → cjs/native-methods}/string.methods.d.ts +1 -0
  234. package/dist/cjs/native-methods/string.methods.d.ts.map +1 -0
  235. package/dist/cjs/native-methods/string.methods.js +499 -0
  236. package/dist/cjs/native-methods/string.methods.js.map +1 -0
  237. package/dist/{node-helpers.d.ts → cjs/node-helpers.d.ts} +109 -1
  238. package/dist/cjs/node-helpers.d.ts.map +1 -0
  239. package/dist/cjs/node-helpers.js +1369 -0
  240. package/dist/cjs/node-helpers.js.map +1 -0
  241. package/dist/{node-parameters → cjs/node-parameters}/filter-parameter.d.ts +1 -0
  242. package/dist/cjs/node-parameters/filter-parameter.d.ts.map +1 -0
  243. package/dist/cjs/node-parameters/filter-parameter.js +383 -0
  244. package/dist/cjs/node-parameters/filter-parameter.js.map +1 -0
  245. package/dist/{node-parameters → cjs/node-parameters}/rename-node-utils.d.ts +2 -1
  246. package/dist/cjs/node-parameters/rename-node-utils.d.ts.map +1 -0
  247. package/dist/cjs/node-parameters/rename-node-utils.js +36 -0
  248. package/dist/cjs/node-parameters/rename-node-utils.js.map +1 -0
  249. package/dist/{node-reference-parser-utils.d.ts → cjs/node-reference-parser-utils.d.ts} +11 -0
  250. package/dist/cjs/node-reference-parser-utils.d.ts.map +1 -0
  251. package/dist/cjs/node-reference-parser-utils.js +468 -0
  252. package/dist/cjs/node-reference-parser-utils.js.map +1 -0
  253. package/dist/{observable-object.d.ts → cjs/observable-object.d.ts} +1 -0
  254. package/dist/cjs/observable-object.d.ts.map +1 -0
  255. package/dist/cjs/observable-object.js +72 -0
  256. package/dist/cjs/observable-object.js.map +1 -0
  257. package/dist/{result.d.ts → cjs/result.d.ts} +7 -0
  258. package/dist/cjs/result.d.ts.map +1 -0
  259. package/dist/cjs/result.js +41 -0
  260. package/dist/cjs/result.js.map +1 -0
  261. package/dist/{telemetry-helpers.d.ts → cjs/telemetry-helpers.d.ts} +7 -0
  262. package/dist/cjs/telemetry-helpers.d.ts.map +1 -0
  263. package/dist/cjs/telemetry-helpers.js +522 -0
  264. package/dist/cjs/telemetry-helpers.js.map +1 -0
  265. package/dist/{type-guards.d.ts → cjs/type-guards.d.ts} +1 -0
  266. package/dist/cjs/type-guards.d.ts.map +1 -0
  267. package/dist/cjs/type-guards.js +56 -0
  268. package/dist/cjs/type-guards.js.map +1 -0
  269. package/dist/{type-validation.d.ts → cjs/type-validation.d.ts} +1 -0
  270. package/dist/cjs/type-validation.d.ts.map +1 -0
  271. package/dist/cjs/type-validation.js +408 -0
  272. package/dist/cjs/type-validation.js.map +1 -0
  273. package/dist/cjs/typecheck.tsbuildinfo +1 -0
  274. package/dist/{utils.d.ts → cjs/utils.d.ts} +31 -0
  275. package/dist/cjs/utils.d.ts.map +1 -0
  276. package/dist/cjs/utils.js +334 -0
  277. package/dist/cjs/utils.js.map +1 -0
  278. package/dist/{versioned-node-type.d.ts → cjs/versioned-node-type.d.ts} +1 -0
  279. package/dist/cjs/versioned-node-type.d.ts.map +1 -0
  280. package/dist/cjs/versioned-node-type.js +36 -0
  281. package/dist/cjs/versioned-node-type.js.map +1 -0
  282. package/dist/cjs/workflow-data-proxy-env-provider.d.ts +25 -0
  283. package/dist/cjs/workflow-data-proxy-env-provider.d.ts.map +1 -0
  284. package/dist/cjs/workflow-data-proxy-env-provider.js +70 -0
  285. package/dist/cjs/workflow-data-proxy-env-provider.js.map +1 -0
  286. package/dist/{workflow-data-proxy-helpers.d.ts → cjs/workflow-data-proxy-helpers.d.ts} +1 -0
  287. package/dist/cjs/workflow-data-proxy-helpers.d.ts.map +1 -0
  288. package/dist/cjs/workflow-data-proxy-helpers.js +20 -0
  289. package/dist/cjs/workflow-data-proxy-helpers.js.map +1 -0
  290. package/dist/{workflow-data-proxy.d.ts → cjs/workflow-data-proxy.d.ts} +45 -0
  291. package/dist/cjs/workflow-data-proxy.d.ts.map +1 -0
  292. package/dist/cjs/workflow-data-proxy.js +1189 -0
  293. package/dist/cjs/workflow-data-proxy.js.map +1 -0
  294. package/dist/cjs/workflow.d.ts +157 -0
  295. package/dist/cjs/workflow.d.ts.map +1 -0
  296. package/dist/cjs/workflow.js +765 -0
  297. package/dist/cjs/workflow.js.map +1 -0
  298. package/dist/esm/augment-object.d.ts +3 -0
  299. package/dist/esm/augment-object.d.ts.map +1 -0
  300. package/dist/{augment-object.js → esm/augment-object.js} +9 -6
  301. package/dist/esm/augment-object.js.map +1 -0
  302. package/dist/esm/constants.d.ts +73 -0
  303. package/dist/esm/constants.d.ts.map +1 -0
  304. package/dist/esm/constants.js +99 -0
  305. package/dist/esm/constants.js.map +1 -0
  306. package/dist/esm/cron.d.ts +35 -0
  307. package/dist/esm/cron.d.ts.map +1 -0
  308. package/dist/{cron.js → esm/cron.js} +4 -8
  309. package/dist/esm/cron.js.map +1 -0
  310. package/dist/esm/deferred-promise.d.ts +10 -0
  311. package/dist/esm/deferred-promise.d.ts.map +1 -0
  312. package/dist/esm/deferred-promise.js +9 -0
  313. package/dist/esm/deferred-promise.js.map +1 -0
  314. package/dist/esm/errors/abstract/execution-base.error.d.ts +28 -0
  315. package/dist/esm/errors/abstract/execution-base.error.d.ts.map +1 -0
  316. package/dist/{errors → esm/errors}/abstract/execution-base.error.js +9 -8
  317. package/dist/esm/errors/abstract/execution-base.error.js.map +1 -0
  318. package/dist/esm/errors/abstract/node.error.d.ts +48 -0
  319. package/dist/esm/errors/abstract/node.error.d.ts.map +1 -0
  320. package/dist/{errors → esm/errors}/abstract/node.error.js +52 -12
  321. package/dist/esm/errors/abstract/node.error.js.map +1 -0
  322. package/dist/esm/errors/application.error.d.ts +13 -0
  323. package/dist/esm/errors/application.error.d.ts.map +1 -0
  324. package/dist/esm/errors/application.error.js +24 -0
  325. package/dist/esm/errors/application.error.js.map +1 -0
  326. package/dist/esm/errors/base/base.error.d.ts +26 -0
  327. package/dist/esm/errors/base/base.error.d.ts.map +1 -0
  328. package/dist/{errors → esm/errors}/base/base.error.js +20 -10
  329. package/dist/esm/errors/base/base.error.js.map +1 -0
  330. package/dist/esm/errors/base/operational.error.d.ts +16 -0
  331. package/dist/esm/errors/base/operational.error.d.ts.map +1 -0
  332. package/dist/esm/errors/base/operational.error.js +15 -0
  333. package/dist/esm/errors/base/operational.error.js.map +1 -0
  334. package/dist/esm/errors/base/unexpected.error.d.ts +16 -0
  335. package/dist/esm/errors/base/unexpected.error.d.ts.map +1 -0
  336. package/dist/esm/errors/base/unexpected.error.js +15 -0
  337. package/dist/esm/errors/base/unexpected.error.js.map +1 -0
  338. package/dist/esm/errors/base/user.error.d.ts +18 -0
  339. package/dist/esm/errors/base/user.error.d.ts.map +1 -0
  340. package/dist/esm/errors/base/user.error.js +15 -0
  341. package/dist/esm/errors/base/user.error.js.map +1 -0
  342. package/dist/esm/errors/cli-subworkflow-operation.error.d.ts +4 -0
  343. package/dist/esm/errors/cli-subworkflow-operation.error.d.ts.map +1 -0
  344. package/dist/esm/errors/cli-subworkflow-operation.error.js +4 -0
  345. package/dist/esm/errors/cli-subworkflow-operation.error.js.map +1 -0
  346. package/dist/esm/errors/db-connection-timeout-error.d.ts +9 -0
  347. package/dist/esm/errors/db-connection-timeout-error.d.ts.map +1 -0
  348. package/dist/{errors → esm/errors}/db-connection-timeout-error.js +2 -6
  349. package/dist/esm/errors/db-connection-timeout-error.js.map +1 -0
  350. package/dist/esm/errors/ensure-error.d.ts +3 -0
  351. package/dist/esm/errors/ensure-error.d.ts.map +1 -0
  352. package/dist/esm/errors/ensure-error.js +10 -0
  353. package/dist/esm/errors/ensure-error.js.map +1 -0
  354. package/dist/esm/errors/error.types.d.ts +12 -0
  355. package/dist/esm/errors/error.types.d.ts.map +1 -0
  356. package/dist/esm/errors/error.types.js +2 -0
  357. package/dist/esm/errors/error.types.js.map +1 -0
  358. package/dist/esm/errors/execution-cancelled.error.d.ts +5 -0
  359. package/dist/esm/errors/execution-cancelled.error.d.ts.map +1 -0
  360. package/dist/esm/errors/execution-cancelled.error.js +10 -0
  361. package/dist/esm/errors/execution-cancelled.error.js.map +1 -0
  362. package/dist/esm/errors/expression-extension.error.d.ts +4 -0
  363. package/dist/esm/errors/expression-extension.error.d.ts.map +1 -0
  364. package/dist/esm/errors/expression-extension.error.js +4 -0
  365. package/dist/esm/errors/expression-extension.error.js.map +1 -0
  366. package/dist/esm/errors/expression.error.d.ts +22 -0
  367. package/dist/esm/errors/expression.error.d.ts.map +1 -0
  368. package/dist/{errors → esm/errors}/expression.error.js +5 -6
  369. package/dist/esm/errors/expression.error.js.map +1 -0
  370. package/dist/esm/errors/index.d.ts +24 -0
  371. package/dist/esm/errors/index.d.ts.map +1 -0
  372. package/dist/esm/errors/index.js +23 -0
  373. package/dist/esm/errors/index.js.map +1 -0
  374. package/dist/esm/errors/node-api.error.d.ts +39 -0
  375. package/dist/esm/errors/node-api.error.d.ts.map +1 -0
  376. package/dist/{errors → esm/errors}/node-api.error.js +55 -19
  377. package/dist/esm/errors/node-api.error.js.map +1 -0
  378. package/dist/esm/errors/node-operation.error.d.ts +11 -0
  379. package/dist/esm/errors/node-operation.error.d.ts.map +1 -0
  380. package/dist/{errors → esm/errors}/node-operation.error.js +9 -9
  381. package/dist/esm/errors/node-operation.error.js.map +1 -0
  382. package/dist/esm/errors/node-ssl.error.d.ts +5 -0
  383. package/dist/esm/errors/node-ssl.error.d.ts.map +1 -0
  384. package/dist/esm/errors/node-ssl.error.js +7 -0
  385. package/dist/esm/errors/node-ssl.error.js.map +1 -0
  386. package/dist/esm/errors/subworkflow-operation.error.d.ts +7 -0
  387. package/dist/esm/errors/subworkflow-operation.error.d.ts.map +1 -0
  388. package/dist/esm/errors/subworkflow-operation.error.js +16 -0
  389. package/dist/esm/errors/subworkflow-operation.error.js.map +1 -0
  390. package/dist/esm/errors/trigger-close.error.d.ts +12 -0
  391. package/dist/esm/errors/trigger-close.error.d.ts.map +1 -0
  392. package/dist/esm/errors/trigger-close.error.js +10 -0
  393. package/dist/esm/errors/trigger-close.error.js.map +1 -0
  394. package/dist/esm/errors/webhook-taken.error.d.ts +5 -0
  395. package/dist/esm/errors/webhook-taken.error.d.ts.map +1 -0
  396. package/dist/esm/errors/webhook-taken.error.js +7 -0
  397. package/dist/esm/errors/webhook-taken.error.js.map +1 -0
  398. package/dist/esm/errors/workflow-activation.error.d.ts +20 -0
  399. package/dist/esm/errors/workflow-activation.error.d.ts.map +1 -0
  400. package/dist/{errors → esm/errors}/workflow-activation.error.js +12 -11
  401. package/dist/esm/errors/workflow-activation.error.js.map +1 -0
  402. package/dist/esm/errors/workflow-deactivation.error.d.ts +4 -0
  403. package/dist/esm/errors/workflow-deactivation.error.d.ts.map +1 -0
  404. package/dist/esm/errors/workflow-deactivation.error.js +4 -0
  405. package/dist/esm/errors/workflow-deactivation.error.js.map +1 -0
  406. package/dist/esm/errors/workflow-operation.error.d.ts +11 -0
  407. package/dist/esm/errors/workflow-operation.error.d.ts.map +1 -0
  408. package/dist/esm/errors/workflow-operation.error.js +18 -0
  409. package/dist/esm/errors/workflow-operation.error.js.map +1 -0
  410. package/dist/esm/execution-status.d.ts +3 -0
  411. package/dist/esm/execution-status.d.ts.map +1 -0
  412. package/dist/esm/execution-status.js +11 -0
  413. package/dist/esm/execution-status.js.map +1 -0
  414. package/dist/esm/expression-evaluator-proxy.d.ts +6 -0
  415. package/dist/esm/expression-evaluator-proxy.d.ts.map +1 -0
  416. package/dist/esm/expression-evaluator-proxy.js +15 -0
  417. package/dist/esm/expression-evaluator-proxy.js.map +1 -0
  418. package/dist/esm/expression-sandboxing.d.ts +5 -0
  419. package/dist/esm/expression-sandboxing.d.ts.map +1 -0
  420. package/dist/esm/expression-sandboxing.js +47 -0
  421. package/dist/esm/expression-sandboxing.js.map +1 -0
  422. package/dist/esm/expression.d.ts +46 -0
  423. package/dist/esm/expression.d.ts.map +1 -0
  424. package/dist/{expression.js → esm/expression.js} +125 -44
  425. package/dist/esm/expression.js.map +1 -0
  426. package/dist/esm/expressions/expression-helpers.d.ts +6 -0
  427. package/dist/esm/expressions/expression-helpers.d.ts.map +1 -0
  428. package/dist/esm/expressions/expression-helpers.js +10 -0
  429. package/dist/esm/expressions/expression-helpers.js.map +1 -0
  430. package/dist/esm/extensions/array-extensions.d.ts +33 -0
  431. package/dist/esm/extensions/array-extensions.d.ts.map +1 -0
  432. package/dist/{extensions → esm/extensions}/array-extensions.js +41 -42
  433. package/dist/esm/extensions/array-extensions.js.map +1 -0
  434. package/dist/esm/extensions/boolean-extensions.d.ts +6 -0
  435. package/dist/esm/extensions/boolean-extensions.d.ts.map +1 -0
  436. package/dist/{extensions → esm/extensions}/boolean-extensions.js +4 -10
  437. package/dist/esm/extensions/boolean-extensions.js.map +1 -0
  438. package/dist/esm/extensions/date-extensions.d.ts +3 -0
  439. package/dist/esm/extensions/date-extensions.d.ts.map +1 -0
  440. package/dist/{extensions → esm/extensions}/date-extensions.js +27 -29
  441. package/dist/esm/extensions/date-extensions.js.map +1 -0
  442. package/dist/esm/extensions/expression-extension.d.ts +32 -0
  443. package/dist/esm/extensions/expression-extension.d.ts.map +1 -0
  444. package/dist/esm/extensions/expression-extension.js +474 -0
  445. package/dist/esm/extensions/expression-extension.js.map +1 -0
  446. package/dist/esm/extensions/expression-parser.d.ts +14 -0
  447. package/dist/esm/extensions/expression-parser.d.ts.map +1 -0
  448. package/dist/{extensions → esm/extensions}/expression-parser.js +9 -11
  449. package/dist/esm/extensions/expression-parser.js.map +1 -0
  450. package/dist/esm/extensions/extended-functions.d.ts +28 -0
  451. package/dist/esm/extensions/extended-functions.d.ts.map +1 -0
  452. package/dist/{extensions → esm/extensions}/extended-functions.js +8 -10
  453. package/dist/esm/extensions/extended-functions.js.map +1 -0
  454. package/dist/esm/extensions/extensions.d.ts +42 -0
  455. package/dist/esm/extensions/extensions.d.ts.map +1 -0
  456. package/dist/esm/extensions/extensions.js +2 -0
  457. package/dist/esm/extensions/extensions.js.map +1 -0
  458. package/dist/esm/extensions/index.d.ts +3 -0
  459. package/dist/esm/extensions/index.d.ts.map +1 -0
  460. package/dist/esm/extensions/index.js +2 -0
  461. package/dist/esm/extensions/index.js.map +1 -0
  462. package/dist/esm/extensions/number-extensions.d.ts +27 -0
  463. package/dist/esm/extensions/number-extensions.d.ts.map +1 -0
  464. package/dist/{extensions → esm/extensions}/number-extensions.js +14 -15
  465. package/dist/esm/extensions/number-extensions.js.map +1 -0
  466. package/dist/esm/extensions/object-extensions.d.ts +46 -0
  467. package/dist/esm/extensions/object-extensions.d.ts.map +1 -0
  468. package/dist/{extensions → esm/extensions}/object-extensions.js +18 -21
  469. package/dist/esm/extensions/object-extensions.js.map +1 -0
  470. package/dist/esm/extensions/string-extensions.d.ts +38 -0
  471. package/dist/esm/extensions/string-extensions.d.ts.map +1 -0
  472. package/dist/{extensions → esm/extensions}/string-extensions.js +121 -40
  473. package/dist/esm/extensions/string-extensions.js.map +1 -0
  474. package/dist/esm/extensions/utils.d.ts +4 -0
  475. package/dist/esm/extensions/utils.d.ts.map +1 -0
  476. package/dist/esm/extensions/utils.js +27 -0
  477. package/dist/esm/extensions/utils.js.map +1 -0
  478. package/dist/esm/from-ai-parse-utils.d.ts +44 -0
  479. package/dist/esm/from-ai-parse-utils.d.ts.map +1 -0
  480. package/dist/{from-ai-parse-utils.js → esm/from-ai-parse-utils.js} +63 -18
  481. package/dist/esm/from-ai-parse-utils.js.map +1 -0
  482. package/dist/esm/global-state.d.ts +6 -0
  483. package/dist/esm/global-state.d.ts.map +1 -0
  484. package/dist/esm/global-state.js +9 -0
  485. package/dist/esm/global-state.js.map +1 -0
  486. package/dist/esm/graph/graph-utils.d.ts +57 -0
  487. package/dist/esm/graph/graph-utils.d.ts.map +1 -0
  488. package/dist/{graph → esm/graph}/graph-utils.js +35 -16
  489. package/dist/esm/graph/graph-utils.js.map +1 -0
  490. package/dist/esm/index.d.ts +49 -0
  491. package/dist/esm/index.d.ts.map +1 -0
  492. package/dist/esm/index.js +33 -0
  493. package/dist/esm/index.js.map +1 -0
  494. package/dist/esm/interfaces.d.ts +2172 -0
  495. package/dist/esm/interfaces.d.ts.map +1 -0
  496. package/dist/{interfaces.js → esm/interfaces.js} +13 -11
  497. package/dist/esm/interfaces.js.map +1 -0
  498. package/dist/esm/logger-proxy.d.ts +7 -0
  499. package/dist/esm/logger-proxy.d.ts.map +1 -0
  500. package/dist/esm/logger-proxy.js +12 -0
  501. package/dist/esm/logger-proxy.js.map +1 -0
  502. package/dist/esm/message-event-bus.d.ts +107 -0
  503. package/dist/esm/message-event-bus.d.ts.map +1 -0
  504. package/dist/{message-event-bus.js → esm/message-event-bus.js} +26 -23
  505. package/dist/esm/message-event-bus.js.map +1 -0
  506. package/dist/esm/metadata-utils.d.ts +5 -0
  507. package/dist/esm/metadata-utils.d.ts.map +1 -0
  508. package/dist/{metadata-utils.js → esm/metadata-utils.js} +6 -7
  509. package/dist/esm/metadata-utils.js.map +1 -0
  510. package/dist/esm/native-methods/array.methods.d.ts +3 -0
  511. package/dist/esm/native-methods/array.methods.d.ts.map +1 -0
  512. package/dist/{native-methods → esm/native-methods}/array.methods.js +1 -4
  513. package/dist/esm/native-methods/array.methods.js.map +1 -0
  514. package/dist/esm/native-methods/boolean.methods.d.ts +3 -0
  515. package/dist/esm/native-methods/boolean.methods.d.ts.map +1 -0
  516. package/dist/{native-methods → esm/native-methods}/boolean.methods.js +1 -4
  517. package/dist/esm/native-methods/boolean.methods.js.map +1 -0
  518. package/dist/esm/native-methods/index.d.ts +4 -0
  519. package/dist/esm/native-methods/index.d.ts.map +1 -0
  520. package/dist/esm/native-methods/index.js +14 -0
  521. package/dist/esm/native-methods/index.js.map +1 -0
  522. package/dist/esm/native-methods/number.methods.d.ts +3 -0
  523. package/dist/esm/native-methods/number.methods.d.ts.map +1 -0
  524. package/dist/{native-methods → esm/native-methods}/number.methods.js +1 -4
  525. package/dist/esm/native-methods/number.methods.js.map +1 -0
  526. package/dist/esm/native-methods/object.methods.d.ts +3 -0
  527. package/dist/esm/native-methods/object.methods.d.ts.map +1 -0
  528. package/dist/esm/native-methods/object.methods.js +5 -0
  529. package/dist/esm/native-methods/object.methods.js.map +1 -0
  530. package/dist/esm/native-methods/string.methods.d.ts +3 -0
  531. package/dist/esm/native-methods/string.methods.d.ts.map +1 -0
  532. package/dist/{native-methods → esm/native-methods}/string.methods.js +1 -4
  533. package/dist/esm/native-methods/string.methods.js.map +1 -0
  534. package/dist/esm/node-helpers.d.ts +145 -0
  535. package/dist/esm/node-helpers.d.ts.map +1 -0
  536. package/dist/{node-helpers.js → esm/node-helpers.js} +302 -106
  537. package/dist/esm/node-helpers.js.map +1 -0
  538. package/dist/esm/node-parameters/filter-parameter.d.ts +21 -0
  539. package/dist/esm/node-parameters/filter-parameter.d.ts.map +1 -0
  540. package/dist/{node-parameters → esm/node-parameters}/filter-parameter.js +13 -51
  541. package/dist/esm/node-parameters/filter-parameter.js.map +1 -0
  542. package/dist/esm/node-parameters/rename-node-utils.d.ts +3 -0
  543. package/dist/esm/node-parameters/rename-node-utils.d.ts.map +1 -0
  544. package/dist/{node-parameters → esm/node-parameters}/rename-node-utils.js +4 -5
  545. package/dist/esm/node-parameters/rename-node-utils.js.map +1 -0
  546. package/dist/esm/node-reference-parser-utils.d.ts +20 -0
  547. package/dist/esm/node-reference-parser-utils.d.ts.map +1 -0
  548. package/dist/{node-reference-parser-utils.js → esm/node-reference-parser-utils.js} +135 -46
  549. package/dist/esm/node-reference-parser-utils.js.map +1 -0
  550. package/dist/esm/observable-object.d.ts +7 -0
  551. package/dist/esm/observable-object.d.ts.map +1 -0
  552. package/dist/{observable-object.js → esm/observable-object.js} +13 -5
  553. package/dist/esm/observable-object.js.map +1 -0
  554. package/dist/esm/result.d.ts +19 -0
  555. package/dist/esm/result.d.ts.map +1 -0
  556. package/dist/esm/result.js +25 -0
  557. package/dist/esm/result.js.map +1 -0
  558. package/dist/esm/telemetry-helpers.d.ts +45 -0
  559. package/dist/esm/telemetry-helpers.d.ts.map +1 -0
  560. package/dist/{telemetry-helpers.js → esm/telemetry-helpers.js} +67 -62
  561. package/dist/esm/telemetry-helpers.js.map +1 -0
  562. package/dist/esm/type-guards.d.ts +12 -0
  563. package/dist/esm/type-guards.d.ts.map +1 -0
  564. package/dist/esm/type-guards.js +33 -0
  565. package/dist/esm/type-guards.js.map +1 -0
  566. package/dist/esm/type-validation.d.ts +22 -0
  567. package/dist/esm/type-validation.d.ts.map +1 -0
  568. package/dist/{type-validation.js → esm/type-validation.js} +66 -78
  569. package/dist/esm/type-validation.js.map +1 -0
  570. package/dist/esm/typecheck.tsbuildinfo +1 -0
  571. package/dist/esm/utils.d.ts +94 -0
  572. package/dist/esm/utils.d.ts.map +1 -0
  573. package/dist/esm/utils.js +300 -0
  574. package/dist/esm/utils.js.map +1 -0
  575. package/dist/esm/versioned-node-type.d.ts +10 -0
  576. package/dist/esm/versioned-node-type.d.ts.map +1 -0
  577. package/dist/{versioned-node-type.js → esm/versioned-node-type.js} +4 -5
  578. package/dist/esm/versioned-node-type.js.map +1 -0
  579. package/dist/esm/workflow-data-proxy-env-provider.d.ts +25 -0
  580. package/dist/esm/workflow-data-proxy-env-provider.d.ts.map +1 -0
  581. package/dist/{workflow-data-proxy-env-provider.js → esm/workflow-data-proxy-env-provider.js} +22 -9
  582. package/dist/esm/workflow-data-proxy-env-provider.js.map +1 -0
  583. package/dist/esm/workflow-data-proxy-helpers.d.ts +3 -0
  584. package/dist/esm/workflow-data-proxy-helpers.d.ts.map +1 -0
  585. package/dist/esm/workflow-data-proxy-helpers.js +7 -0
  586. package/dist/esm/workflow-data-proxy-helpers.js.map +1 -0
  587. package/dist/esm/workflow-data-proxy.d.ts +80 -0
  588. package/dist/esm/workflow-data-proxy.d.ts.map +1 -0
  589. package/dist/{workflow-data-proxy.js → esm/workflow-data-proxy.js} +174 -109
  590. package/dist/esm/workflow-data-proxy.js.map +1 -0
  591. package/dist/esm/workflow.d.ts +157 -0
  592. package/dist/esm/workflow.d.ts.map +1 -0
  593. package/dist/{workflow.js → esm/workflow.js} +223 -73
  594. package/dist/esm/workflow.js.map +1 -0
  595. package/package.json +18 -14
  596. package/dist/augment-object.js.map +0 -1
  597. package/dist/build.tsbuildinfo +0 -1
  598. package/dist/constants.js +0 -89
  599. package/dist/constants.js.map +0 -1
  600. package/dist/cron.js.map +0 -1
  601. package/dist/deferred-promise.js +0 -12
  602. package/dist/deferred-promise.js.map +0 -1
  603. package/dist/errors/abstract/execution-base.error.js.map +0 -1
  604. package/dist/errors/abstract/node.error.d.ts +0 -12
  605. package/dist/errors/abstract/node.error.js.map +0 -1
  606. package/dist/errors/application.error.js +0 -24
  607. package/dist/errors/application.error.js.map +0 -1
  608. package/dist/errors/base/base.error.js.map +0 -1
  609. package/dist/errors/base/operational.error.js +0 -12
  610. package/dist/errors/base/operational.error.js.map +0 -1
  611. package/dist/errors/base/unexpected.error.js +0 -12
  612. package/dist/errors/base/unexpected.error.js.map +0 -1
  613. package/dist/errors/base/user.error.js +0 -12
  614. package/dist/errors/base/user.error.js.map +0 -1
  615. package/dist/errors/cli-subworkflow-operation.error.js +0 -8
  616. package/dist/errors/cli-subworkflow-operation.error.js.map +0 -1
  617. package/dist/errors/db-connection-timeout-error.js.map +0 -1
  618. package/dist/errors/ensure-error.d.ts +0 -1
  619. package/dist/errors/ensure-error.js +0 -11
  620. package/dist/errors/ensure-error.js.map +0 -1
  621. package/dist/errors/error.types.js +0 -3
  622. package/dist/errors/execution-cancelled.error.js +0 -14
  623. package/dist/errors/execution-cancelled.error.js.map +0 -1
  624. package/dist/errors/expression-extension.error.js +0 -8
  625. package/dist/errors/expression-extension.error.js.map +0 -1
  626. package/dist/errors/expression.error.js.map +0 -1
  627. package/dist/errors/index.js +0 -48
  628. package/dist/errors/index.js.map +0 -1
  629. package/dist/errors/node-api.error.js.map +0 -1
  630. package/dist/errors/node-operation.error.js.map +0 -1
  631. package/dist/errors/node-ssl.error.js +0 -11
  632. package/dist/errors/node-ssl.error.js.map +0 -1
  633. package/dist/errors/subworkflow-operation.error.js +0 -19
  634. package/dist/errors/subworkflow-operation.error.js.map +0 -1
  635. package/dist/errors/trigger-close.error.js +0 -13
  636. package/dist/errors/trigger-close.error.js.map +0 -1
  637. package/dist/errors/webhook-taken.error.js +0 -11
  638. package/dist/errors/webhook-taken.error.js.map +0 -1
  639. package/dist/errors/workflow-activation.error.js.map +0 -1
  640. package/dist/errors/workflow-deactivation.error.js +0 -8
  641. package/dist/errors/workflow-deactivation.error.js.map +0 -1
  642. package/dist/errors/workflow-operation.error.js +0 -17
  643. package/dist/errors/workflow-operation.error.js.map +0 -1
  644. package/dist/execution-status.js +0 -14
  645. package/dist/execution-status.js.map +0 -1
  646. package/dist/expression-evaluator-proxy.js +0 -20
  647. package/dist/expression-evaluator-proxy.js.map +0 -1
  648. package/dist/expression-sandboxing.js +0 -43
  649. package/dist/expression-sandboxing.js.map +0 -1
  650. package/dist/expression.js.map +0 -1
  651. package/dist/extensions/array-extensions.js.map +0 -1
  652. package/dist/extensions/boolean-extensions.js.map +0 -1
  653. package/dist/extensions/date-extensions.js.map +0 -1
  654. package/dist/extensions/expression-extension.js +0 -362
  655. package/dist/extensions/expression-extension.js.map +0 -1
  656. package/dist/extensions/expression-parser.js.map +0 -1
  657. package/dist/extensions/extended-functions.js.map +0 -1
  658. package/dist/extensions/extensions.js +0 -3
  659. package/dist/extensions/extensions.js.map +0 -1
  660. package/dist/extensions/index.js +0 -11
  661. package/dist/extensions/index.js.map +0 -1
  662. package/dist/extensions/number-extensions.js.map +0 -1
  663. package/dist/extensions/object-extensions.js.map +0 -1
  664. package/dist/extensions/string-extensions.js.map +0 -1
  665. package/dist/extensions/utils.js +0 -31
  666. package/dist/extensions/utils.js.map +0 -1
  667. package/dist/from-ai-parse-utils.d.ts +0 -12
  668. package/dist/from-ai-parse-utils.js.map +0 -1
  669. package/dist/global-state.js +0 -13
  670. package/dist/global-state.js.map +0 -1
  671. package/dist/graph/graph-utils.js.map +0 -1
  672. package/dist/index.js +0 -103
  673. package/dist/index.js.map +0 -1
  674. package/dist/interfaces.js.map +0 -1
  675. package/dist/logger-proxy.js +0 -16
  676. package/dist/logger-proxy.js.map +0 -1
  677. package/dist/message-event-bus.js.map +0 -1
  678. package/dist/metadata-utils.js.map +0 -1
  679. package/dist/native-methods/array.methods.js.map +0 -1
  680. package/dist/native-methods/boolean.methods.js.map +0 -1
  681. package/dist/native-methods/index.js +0 -17
  682. package/dist/native-methods/index.js.map +0 -1
  683. package/dist/native-methods/number.methods.js.map +0 -1
  684. package/dist/native-methods/object.methods.js +0 -8
  685. package/dist/native-methods/object.methods.js.map +0 -1
  686. package/dist/native-methods/string.methods.js.map +0 -1
  687. package/dist/node-helpers.js.map +0 -1
  688. package/dist/node-parameters/filter-parameter.js.map +0 -1
  689. package/dist/node-parameters/rename-node-utils.js.map +0 -1
  690. package/dist/node-reference-parser-utils.js.map +0 -1
  691. package/dist/observable-object.js.map +0 -1
  692. package/dist/result.js +0 -25
  693. package/dist/result.js.map +0 -1
  694. package/dist/telemetry-helpers.js.map +0 -1
  695. package/dist/type-guards.js +0 -46
  696. package/dist/type-guards.js.map +0 -1
  697. package/dist/type-validation.js.map +0 -1
  698. package/dist/utils.js +0 -259
  699. package/dist/utils.js.map +0 -1
  700. package/dist/versioned-node-type.js.map +0 -1
  701. package/dist/workflow-data-proxy-env-provider.d.ts +0 -7
  702. package/dist/workflow-data-proxy-env-provider.js.map +0 -1
  703. package/dist/workflow-data-proxy-helpers.js +0 -10
  704. package/dist/workflow-data-proxy-helpers.js.map +0 -1
  705. package/dist/workflow-data-proxy.js.map +0 -1
  706. package/dist/workflow.d.ts +0 -54
  707. package/dist/workflow.js.map +0 -1
@@ -0,0 +1,1189 @@
1
+ /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
2
+ /* eslint-disable @typescript-eslint/no-this-alias */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ (function (factory) {
38
+ if (typeof module === "object" && typeof module.exports === "object") {
39
+ var v = factory(require, exports);
40
+ if (v !== undefined) module.exports = v;
41
+ }
42
+ else if (typeof define === "function" && define.amd) {
43
+ define(["require", "exports", "jmespath", "luxon", "./augment-object", "./constants", "./errors/application.error", "./errors/expression.error", "./global-state", "./interfaces", "./node-helpers", "./result", "./type-guards", "./utils", "./workflow-data-proxy-env-provider", "./workflow-data-proxy-helpers"], factory);
44
+ }
45
+ })(function (require, exports) {
46
+ "use strict";
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.WorkflowDataProxy = void 0;
49
+ const jmespath = __importStar(require("jmespath"));
50
+ const luxon_1 = require("luxon");
51
+ const augment_object_1 = require("./augment-object");
52
+ const constants_1 = require("./constants");
53
+ const application_error_1 = require("./errors/application.error");
54
+ const expression_error_1 = require("./errors/expression.error");
55
+ const global_state_1 = require("./global-state");
56
+ const interfaces_1 = require("./interfaces");
57
+ const NodeHelpers = __importStar(require("./node-helpers"));
58
+ const result_1 = require("./result");
59
+ const type_guards_1 = require("./type-guards");
60
+ const utils_1 = require("./utils");
61
+ const workflow_data_proxy_env_provider_1 = require("./workflow-data-proxy-env-provider");
62
+ const workflow_data_proxy_helpers_1 = require("./workflow-data-proxy-helpers");
63
+ const isScriptingNode = (nodeName, workflow) => {
64
+ const node = workflow.getNode(nodeName);
65
+ return node && constants_1.SCRIPTING_NODE_TYPES.includes(node.type);
66
+ };
67
+ const PAIRED_ITEM_METHOD = {
68
+ PAIRED_ITEM: 'pairedItem',
69
+ ITEM_MATCHING: 'itemMatching',
70
+ ITEM: 'item',
71
+ $GET_PAIRED_ITEM: '$getPairedItem',
72
+ };
73
+ class WorkflowDataProxy {
74
+ workflow;
75
+ runIndex;
76
+ itemIndex;
77
+ activeNodeName;
78
+ siblingParameters;
79
+ mode;
80
+ additionalKeys;
81
+ executeData;
82
+ defaultReturnRunIndex;
83
+ selfData;
84
+ contextNodeName;
85
+ envProviderState;
86
+ runExecutionData;
87
+ connectionInputData;
88
+ timezone;
89
+ // TODO: Clean that up at some point and move all the options into an options object
90
+ constructor(workflow, runExecutionData, runIndex, itemIndex, activeNodeName, connectionInputData, siblingParameters, mode, additionalKeys, executeData, defaultReturnRunIndex = -1, selfData = {}, contextNodeName = activeNodeName, envProviderState) {
91
+ this.workflow = workflow;
92
+ this.runIndex = runIndex;
93
+ this.itemIndex = itemIndex;
94
+ this.activeNodeName = activeNodeName;
95
+ this.siblingParameters = siblingParameters;
96
+ this.mode = mode;
97
+ this.additionalKeys = additionalKeys;
98
+ this.executeData = executeData;
99
+ this.defaultReturnRunIndex = defaultReturnRunIndex;
100
+ this.selfData = selfData;
101
+ this.contextNodeName = contextNodeName;
102
+ this.envProviderState = envProviderState;
103
+ this.runExecutionData = isScriptingNode(this.contextNodeName, workflow)
104
+ ? runExecutionData !== null
105
+ ? (0, augment_object_1.augmentObject)(runExecutionData)
106
+ : null
107
+ : runExecutionData;
108
+ this.connectionInputData = isScriptingNode(this.contextNodeName, workflow)
109
+ ? (0, augment_object_1.augmentArray)(connectionInputData)
110
+ : connectionInputData;
111
+ this.timezone = workflow.settings?.timezone ?? (0, global_state_1.getGlobalState)().defaultTimezone;
112
+ luxon_1.Settings.defaultZone = this.timezone;
113
+ }
114
+ /**
115
+ * Returns a proxy which allows to query context data of a given node
116
+ *
117
+ * @private
118
+ * @param {string} nodeName The name of the node to get the context from
119
+ */
120
+ nodeContextGetter(nodeName) {
121
+ const that = this;
122
+ const node = this.workflow.nodes[nodeName];
123
+ if (!that.runExecutionData?.executionData && that.connectionInputData.length > 0) {
124
+ return {}; // incoming connection has pinned data, so stub context object
125
+ }
126
+ if (!that.runExecutionData?.executionData && !that.runExecutionData?.resultData) {
127
+ throw new expression_error_1.ExpressionError("The workflow hasn't been executed yet, so you can't reference any context data", {
128
+ runIndex: that.runIndex,
129
+ itemIndex: that.itemIndex,
130
+ type: 'no_execution_data',
131
+ });
132
+ }
133
+ return new Proxy({}, {
134
+ has: () => true,
135
+ ownKeys(target) {
136
+ if (Reflect.ownKeys(target).length === 0) {
137
+ // Target object did not get set yet
138
+ Object.assign(target, NodeHelpers.getContext(that.runExecutionData, 'node', node));
139
+ }
140
+ return Reflect.ownKeys(target);
141
+ },
142
+ getOwnPropertyDescriptor() {
143
+ return {
144
+ enumerable: true,
145
+ configurable: true,
146
+ };
147
+ },
148
+ get(_, name) {
149
+ if (name === 'isProxy')
150
+ return true;
151
+ name = name.toString();
152
+ const contextData = NodeHelpers.getContext(that.runExecutionData, 'node', node);
153
+ return contextData[name];
154
+ },
155
+ });
156
+ }
157
+ selfGetter() {
158
+ const that = this;
159
+ return new Proxy({}, {
160
+ has: () => true,
161
+ ownKeys(target) {
162
+ return Reflect.ownKeys(target);
163
+ },
164
+ get(_, name) {
165
+ if (name === 'isProxy')
166
+ return true;
167
+ name = name.toString();
168
+ return that.selfData[name];
169
+ },
170
+ });
171
+ }
172
+ buildAgentToolInfo(node) {
173
+ const nodeType = this.workflow.nodeTypes.getByNameAndVersion(node.type, node.typeVersion);
174
+ const type = nodeType.description.displayName;
175
+ const params = NodeHelpers.getNodeParameters(nodeType.description.properties, node.parameters, true, false, node, nodeType.description);
176
+ const resourceKey = params?.resource;
177
+ const operationKey = params?.operation;
178
+ const resource = nodeType.description.properties
179
+ .find((nodeProperties) => nodeProperties.name === 'resource')
180
+ ?.options?.find((option) => 'value' in option && option.value === resourceKey)?.name ??
181
+ null;
182
+ const operation = nodeType.description.properties
183
+ .find((nodeProperty) => nodeProperty.name === 'operation' &&
184
+ nodeProperty.displayOptions?.show?.resource?.some((y) => y === resourceKey))
185
+ ?.options?.find((y) => 'value' in y && y.value === operationKey)?.name ?? null;
186
+ const hasCredentials = !(0, utils_1.isObjectEmpty)(node.credentials ?? {});
187
+ const hasValidCalendar = nodeType.description.name.includes('googleCalendar')
188
+ ? (0, type_guards_1.isResourceLocatorValue)(node.parameters.calendar) && node.parameters.calendar.value !== ''
189
+ : undefined;
190
+ const aiDefinedFields = Object.entries(node.parameters)
191
+ .map(([key, value]) => [key, (0, type_guards_1.isResourceLocatorValue)(value) ? value.value : value])
192
+ .filter(([_, value]) => value?.toString().toLowerCase().includes('$fromai'))
193
+ .map(([key]) => nodeType.description.properties.find((property) => property.name === key)?.displayName);
194
+ return {
195
+ name: node.name,
196
+ type,
197
+ resource,
198
+ operation,
199
+ hasCredentials,
200
+ hasValidCalendar,
201
+ aiDefinedFields,
202
+ };
203
+ }
204
+ agentInfo() {
205
+ const agentNode = this.workflow.getNode(this.activeNodeName);
206
+ if (!agentNode || agentNode.type !== constants_1.AGENT_LANGCHAIN_NODE_TYPE)
207
+ return undefined;
208
+ const connectedTools = this.workflow
209
+ .getParentNodes(this.activeNodeName, interfaces_1.NodeConnectionTypes.AiTool)
210
+ .map((nodeName) => this.workflow.getNode(nodeName))
211
+ .filter((node) => node);
212
+ const memoryConnectedToAgent = this.workflow.getParentNodes(this.activeNodeName, interfaces_1.NodeConnectionTypes.AiMemory).length > 0;
213
+ const allTools = this.workflow.queryNodes((nodeType) => {
214
+ return nodeType.description.name.toLowerCase().includes('tool');
215
+ });
216
+ const unconnectedTools = allTools
217
+ .filter((node) => this.workflow.getChildNodes(node.name, interfaces_1.NodeConnectionTypes.AiTool, 1).length === 0)
218
+ .filter((node) => !connectedTools.includes(node));
219
+ return {
220
+ memoryConnectedToAgent,
221
+ tools: [
222
+ ...connectedTools.map((node) => ({ connected: true, ...this.buildAgentToolInfo(node) })),
223
+ ...unconnectedTools.map((node) => ({ connected: false, ...this.buildAgentToolInfo(node) })),
224
+ ],
225
+ };
226
+ }
227
+ /**
228
+ * Returns a proxy which allows to query parameter data of a given node
229
+ *
230
+ * @private
231
+ * @param {string} nodeName The name of the node to query data from
232
+ * @param {boolean} [resolveValue=true] If the expression value should get resolved
233
+ */
234
+ nodeParameterGetter(nodeName, resolveValue = true) {
235
+ const that = this;
236
+ const node = this.workflow.nodes[nodeName];
237
+ // `node` is `undefined` only in expressions in credentials
238
+ return new Proxy(node?.parameters ?? {}, {
239
+ has: () => true,
240
+ ownKeys(target) {
241
+ return Reflect.ownKeys(target);
242
+ },
243
+ getOwnPropertyDescriptor() {
244
+ return {
245
+ enumerable: true,
246
+ configurable: true,
247
+ };
248
+ },
249
+ get(target, name) {
250
+ if (name === 'isProxy')
251
+ return true;
252
+ if (name === 'toJSON')
253
+ return () => (0, utils_1.deepCopy)(target);
254
+ name = name.toString();
255
+ let returnValue;
256
+ if (name[0] === '&') {
257
+ const key = name.slice(1);
258
+ if (!that.siblingParameters.hasOwnProperty(key)) {
259
+ throw new application_error_1.ApplicationError('Could not find sibling parameter on node', {
260
+ extra: { nodeName, parameter: key },
261
+ });
262
+ }
263
+ returnValue = that.siblingParameters[key];
264
+ }
265
+ else {
266
+ if (!node.parameters.hasOwnProperty(name)) {
267
+ // Parameter does not exist on node
268
+ return undefined;
269
+ }
270
+ returnValue = node.parameters[name];
271
+ }
272
+ // Avoid recursion
273
+ if (returnValue === `={{ $parameter.${name} }}`)
274
+ return undefined;
275
+ if ((0, type_guards_1.isResourceLocatorValue)(returnValue)) {
276
+ if (returnValue.__regex && typeof returnValue.value === 'string') {
277
+ const expr = new RegExp(returnValue.__regex);
278
+ const extracted = expr.exec(returnValue.value);
279
+ if (extracted && extracted.length >= 2) {
280
+ returnValue = extracted[1];
281
+ }
282
+ else {
283
+ return returnValue.value;
284
+ }
285
+ }
286
+ else {
287
+ returnValue = returnValue.value;
288
+ }
289
+ }
290
+ if (resolveValue && typeof returnValue === 'string' && returnValue.charAt(0) === '=') {
291
+ // The found value is an expression so resolve it
292
+ return that.workflow.expression.getParameterValue(returnValue, that.runExecutionData, that.runIndex, that.itemIndex, that.activeNodeName, that.connectionInputData, that.mode, that.additionalKeys, that.executeData, false, {}, that.contextNodeName);
293
+ }
294
+ return returnValue;
295
+ },
296
+ });
297
+ }
298
+ getNodeExecutionOrPinnedData({ nodeName, branchIndex, runIndex, shortSyntax = false, }) {
299
+ try {
300
+ return this.getNodeExecutionData(nodeName, shortSyntax, branchIndex, runIndex);
301
+ }
302
+ catch (e) {
303
+ const pinData = (0, workflow_data_proxy_helpers_1.getPinDataIfManualExecution)(this.workflow, nodeName, this.mode);
304
+ if (pinData) {
305
+ return pinData;
306
+ }
307
+ throw e;
308
+ }
309
+ }
310
+ /**
311
+ * Returns the node ExecutionData
312
+ *
313
+ * @private
314
+ * @param {string} nodeName The name of the node query data from
315
+ * @param {boolean} [shortSyntax=false] If short syntax got used
316
+ * @param {number} [outputIndex] The index of the output, if not given the first one gets used
317
+ * @param {number} [runIndex] The index of the run, if not given the current one does get used
318
+ */
319
+ getNodeExecutionData(nodeName, shortSyntax = false, outputIndex, runIndex) {
320
+ const that = this;
321
+ let executionData;
322
+ if (!shortSyntax) {
323
+ // Long syntax got used to return data from node in path
324
+ if (that.runExecutionData === null) {
325
+ throw new expression_error_1.ExpressionError("The workflow hasn't been executed yet, so you can't reference any output data", {
326
+ runIndex: that.runIndex,
327
+ itemIndex: that.itemIndex,
328
+ });
329
+ }
330
+ if (!that.workflow.getNode(nodeName)) {
331
+ throw new expression_error_1.ExpressionError("Referenced node doesn't exist", {
332
+ runIndex: that.runIndex,
333
+ itemIndex: that.itemIndex,
334
+ nodeCause: nodeName,
335
+ descriptionKey: 'nodeNotFound',
336
+ });
337
+ }
338
+ if (!that.runExecutionData.resultData.runData.hasOwnProperty(nodeName) &&
339
+ !(0, workflow_data_proxy_helpers_1.getPinDataIfManualExecution)(that.workflow, nodeName, that.mode)) {
340
+ throw new expression_error_1.ExpressionError('Referenced node is unexecuted', {
341
+ runIndex: that.runIndex,
342
+ itemIndex: that.itemIndex,
343
+ type: 'no_node_execution_data',
344
+ descriptionKey: 'noNodeExecutionData',
345
+ nodeCause: nodeName,
346
+ });
347
+ }
348
+ runIndex = runIndex === undefined ? that.defaultReturnRunIndex : runIndex;
349
+ runIndex =
350
+ runIndex === -1 ? that.runExecutionData.resultData.runData[nodeName].length - 1 : runIndex;
351
+ if (that.runExecutionData.resultData.runData[nodeName].length <= runIndex) {
352
+ throw new expression_error_1.ExpressionError(`Run ${runIndex} of node "${nodeName}" not found`, {
353
+ runIndex: that.runIndex,
354
+ itemIndex: that.itemIndex,
355
+ });
356
+ }
357
+ const taskData = that.runExecutionData.resultData.runData[nodeName][runIndex].data;
358
+ if (!taskData.main?.length || taskData.main[0] === null) {
359
+ // throw new ApplicationError('No data found for item-index', { extra: { itemIndex } });
360
+ throw new expression_error_1.ExpressionError('No data found from `main` input', {
361
+ runIndex: that.runIndex,
362
+ itemIndex: that.itemIndex,
363
+ });
364
+ }
365
+ // Check from which output to read the data.
366
+ // Depends on how the nodes are connected.
367
+ // (example "IF" node. If node is connected to "true" or to "false" output)
368
+ if (outputIndex === undefined) {
369
+ const nodeConnection = that.workflow.getNodeConnectionIndexes(that.contextNodeName, nodeName, interfaces_1.NodeConnectionTypes.Main);
370
+ if (nodeConnection === undefined) {
371
+ throw new expression_error_1.ExpressionError(`connect "${that.contextNodeName}" to "${nodeName}"`, {
372
+ runIndex: that.runIndex,
373
+ itemIndex: that.itemIndex,
374
+ });
375
+ }
376
+ outputIndex = nodeConnection.sourceIndex;
377
+ }
378
+ if (outputIndex === undefined) {
379
+ outputIndex = 0;
380
+ }
381
+ if (taskData.main.length <= outputIndex) {
382
+ throw new expression_error_1.ExpressionError(`Node "${nodeName}" has no branch with index ${outputIndex}.`, {
383
+ runIndex: that.runIndex,
384
+ itemIndex: that.itemIndex,
385
+ });
386
+ }
387
+ executionData = taskData.main[outputIndex];
388
+ }
389
+ else {
390
+ // Short syntax got used to return data from active node
391
+ executionData = that.connectionInputData;
392
+ }
393
+ return executionData;
394
+ }
395
+ /**
396
+ * Returns a proxy which allows to query data of a given node
397
+ *
398
+ * @private
399
+ * @param {string} nodeName The name of the node query data from
400
+ * @param {boolean} [shortSyntax=false] If short syntax got used
401
+ * @param {boolean} [throwOnMissingExecutionData=true] If an error should get thrown if no execution data is available
402
+ */
403
+ nodeDataGetter(nodeName, shortSyntax = false, throwOnMissingExecutionData = true) {
404
+ const that = this;
405
+ const node = this.workflow.nodes[nodeName];
406
+ return new Proxy({ binary: undefined, data: undefined, json: undefined }, {
407
+ has: () => true,
408
+ get(target, name, receiver) {
409
+ if (name === 'isProxy')
410
+ return true;
411
+ name = name.toString();
412
+ if (!node) {
413
+ throw new expression_error_1.ExpressionError("Referenced node doesn't exist", {
414
+ runIndex: that.runIndex,
415
+ itemIndex: that.itemIndex,
416
+ nodeCause: nodeName,
417
+ descriptionKey: 'nodeNotFound',
418
+ });
419
+ }
420
+ if (['binary', 'data', 'json'].includes(name)) {
421
+ const executionData = that.getNodeExecutionOrPinnedData({
422
+ nodeName,
423
+ shortSyntax,
424
+ });
425
+ if (executionData.length === 0 && !throwOnMissingExecutionData) {
426
+ return undefined;
427
+ }
428
+ if (executionData.length === 0) {
429
+ if (that.workflow.getParentNodes(nodeName).length === 0) {
430
+ throw new expression_error_1.ExpressionError('No execution data available', {
431
+ messageTemplate: 'No execution data available to expression under ‘%%PARAMETER%%’',
432
+ descriptionKey: 'noInputConnection',
433
+ nodeCause: nodeName,
434
+ runIndex: that.runIndex,
435
+ itemIndex: that.itemIndex,
436
+ type: 'no_input_connection',
437
+ });
438
+ }
439
+ throw new expression_error_1.ExpressionError('No execution data available', {
440
+ runIndex: that.runIndex,
441
+ itemIndex: that.itemIndex,
442
+ type: 'no_execution_data',
443
+ });
444
+ }
445
+ if (executionData.length <= that.itemIndex) {
446
+ throw new expression_error_1.ExpressionError(`No data found for item-index: "${that.itemIndex}"`, {
447
+ runIndex: that.runIndex,
448
+ itemIndex: that.itemIndex,
449
+ });
450
+ }
451
+ if (['data', 'json'].includes(name)) {
452
+ // JSON-Data
453
+ return executionData[that.itemIndex].json;
454
+ }
455
+ if (name === 'binary') {
456
+ // Binary-Data
457
+ const returnData = {};
458
+ if (!executionData[that.itemIndex].binary) {
459
+ return returnData;
460
+ }
461
+ const binaryKeyData = executionData[that.itemIndex].binary;
462
+ for (const keyName of Object.keys(binaryKeyData)) {
463
+ returnData[keyName] = {};
464
+ const binaryData = binaryKeyData[keyName];
465
+ for (const propertyName in binaryData) {
466
+ if (propertyName === 'data') {
467
+ // Skip the data property
468
+ continue;
469
+ }
470
+ returnData[keyName][propertyName] = binaryData[propertyName];
471
+ }
472
+ }
473
+ return returnData;
474
+ }
475
+ }
476
+ else if (name === 'context') {
477
+ return that.nodeContextGetter(nodeName);
478
+ }
479
+ else if (name === 'parameter') {
480
+ // Get node parameter data
481
+ return that.nodeParameterGetter(nodeName);
482
+ }
483
+ else if (name === 'runIndex') {
484
+ if (!that.runExecutionData?.resultData.runData[nodeName]) {
485
+ return -1;
486
+ }
487
+ return that.runExecutionData.resultData.runData[nodeName].length - 1;
488
+ }
489
+ return Reflect.get(target, name, receiver);
490
+ },
491
+ });
492
+ }
493
+ prevNodeGetter() {
494
+ const allowedValues = ['name', 'outputIndex', 'runIndex'];
495
+ const that = this;
496
+ return new Proxy({}, {
497
+ has: () => true,
498
+ ownKeys() {
499
+ return allowedValues;
500
+ },
501
+ getOwnPropertyDescriptor() {
502
+ return {
503
+ enumerable: true,
504
+ configurable: true,
505
+ };
506
+ },
507
+ get(target, name, receiver) {
508
+ if (name === 'isProxy')
509
+ return true;
510
+ if (!that.executeData?.source) {
511
+ // Means the previous node did not get executed yet
512
+ return undefined;
513
+ }
514
+ const sourceData = that.executeData.source.main[0];
515
+ if (name === 'name') {
516
+ return sourceData.previousNode;
517
+ }
518
+ if (name === 'outputIndex') {
519
+ return sourceData.previousNodeOutput || 0;
520
+ }
521
+ if (name === 'runIndex') {
522
+ return sourceData.previousNodeRun || 0;
523
+ }
524
+ return Reflect.get(target, name, receiver);
525
+ },
526
+ });
527
+ }
528
+ /**
529
+ * Returns a proxy to query data from the workflow
530
+ *
531
+ * @private
532
+ */
533
+ workflowGetter() {
534
+ const allowedValues = ['active', 'id', 'name'];
535
+ const that = this;
536
+ return new Proxy({}, {
537
+ has: () => true,
538
+ ownKeys() {
539
+ return allowedValues;
540
+ },
541
+ getOwnPropertyDescriptor() {
542
+ return {
543
+ enumerable: true,
544
+ configurable: true,
545
+ };
546
+ },
547
+ get(target, name, receiver) {
548
+ if (name === 'isProxy')
549
+ return true;
550
+ if (allowedValues.includes(name.toString())) {
551
+ const value = that.workflow[name];
552
+ if (value === undefined && name === 'id') {
553
+ throw new expression_error_1.ExpressionError('save workflow to view', {
554
+ description: 'Please save the workflow first to use $workflow',
555
+ runIndex: that.runIndex,
556
+ itemIndex: that.itemIndex,
557
+ });
558
+ }
559
+ return value;
560
+ }
561
+ return Reflect.get(target, name, receiver);
562
+ },
563
+ });
564
+ }
565
+ /**
566
+ * Returns a proxy to query data of all nodes
567
+ *
568
+ * @private
569
+ */
570
+ nodeGetter() {
571
+ const that = this;
572
+ return new Proxy({}, {
573
+ has: () => true,
574
+ get(_, name) {
575
+ if (name === 'isProxy')
576
+ return true;
577
+ const nodeName = name.toString();
578
+ if (that.workflow.getNode(nodeName) === null) {
579
+ throw new expression_error_1.ExpressionError("Referenced node doesn't exist", {
580
+ runIndex: that.runIndex,
581
+ itemIndex: that.itemIndex,
582
+ nodeCause: nodeName,
583
+ descriptionKey: 'nodeNotFound',
584
+ });
585
+ }
586
+ return that.nodeDataGetter(nodeName);
587
+ },
588
+ });
589
+ }
590
+ /**
591
+ * Returns the data proxy object which allows to query data from current run
592
+ *
593
+ */
594
+ getDataProxy(opts) {
595
+ const that = this;
596
+ // replacing proxies with the actual data.
597
+ const jmespathWrapper = (data, query) => {
598
+ if (typeof data !== 'object' || typeof query !== 'string') {
599
+ throw new expression_error_1.ExpressionError('expected two arguments (Object, string) for this function', {
600
+ runIndex: that.runIndex,
601
+ itemIndex: that.itemIndex,
602
+ });
603
+ }
604
+ if (!Array.isArray(data) && typeof data === 'object') {
605
+ return jmespath.search({ ...data }, query);
606
+ }
607
+ return jmespath.search(data, query);
608
+ };
609
+ const createExpressionError = (message, context) => {
610
+ if (isScriptingNode(that.activeNodeName, that.workflow) && context?.functionOverrides) {
611
+ // If the node in which the error is thrown is a function node,
612
+ // display a different error message in case there is one defined
613
+ message = context.functionOverrides.message || message;
614
+ context.description = context.functionOverrides.description || context.description;
615
+ // The error will be in the code and not on an expression on a parameter
616
+ // so remove the messageTemplate as it would overwrite the message
617
+ context.messageTemplate = undefined;
618
+ }
619
+ if (context?.nodeCause) {
620
+ const nodeName = context.nodeCause;
621
+ const pinData = (0, workflow_data_proxy_helpers_1.getPinDataIfManualExecution)(that.workflow, nodeName, that.mode);
622
+ if (pinData) {
623
+ if (!context) {
624
+ context = {};
625
+ }
626
+ message = `Unpin '${nodeName}' to execute`;
627
+ context.messageTemplate = undefined;
628
+ context.descriptionKey = 'pairedItemPinned';
629
+ }
630
+ if (context.moreInfoLink && (pinData || isScriptingNode(nodeName, that.workflow))) {
631
+ const moreInfoLink = ' <a target="_blank" href="https://docs.n8n.io/data/data-mapping/data-item-linking/item-linking-errors/">More info</a>';
632
+ context.description += moreInfoLink;
633
+ if (context.descriptionTemplate)
634
+ context.descriptionTemplate += moreInfoLink;
635
+ }
636
+ }
637
+ return new expression_error_1.ExpressionError(message, {
638
+ runIndex: that.runIndex,
639
+ itemIndex: that.itemIndex,
640
+ ...context,
641
+ });
642
+ };
643
+ const createInvalidPairedItemError = ({ nodeName }) => {
644
+ return createExpressionError("Can't get data for expression", {
645
+ messageTemplate: 'Expression info invalid',
646
+ functionality: 'pairedItem',
647
+ functionOverrides: {
648
+ message: "Can't get data",
649
+ },
650
+ nodeCause: nodeName,
651
+ descriptionKey: 'pairedItemInvalidInfo',
652
+ type: 'paired_item_invalid_info',
653
+ });
654
+ };
655
+ const createMissingPairedItemError = (nodeCause, usedMethodName = PAIRED_ITEM_METHOD.PAIRED_ITEM) => {
656
+ const pinData = (0, workflow_data_proxy_helpers_1.getPinDataIfManualExecution)(that.workflow, nodeCause, that.mode);
657
+ const message = pinData
658
+ ? `Using the ${usedMethodName} method doesn't work with pinned data in this scenario. Please unpin '${nodeCause}' and try again.`
659
+ : `Paired item data for ${usedMethodName} from node '${nodeCause}' is unavailable. Ensure '${nodeCause}' is providing the required output.`;
660
+ return new expression_error_1.ExpressionError(message, {
661
+ runIndex: that.runIndex,
662
+ itemIndex: that.itemIndex,
663
+ functionality: 'pairedItem',
664
+ descriptionKey: isScriptingNode(nodeCause, that.workflow)
665
+ ? 'pairedItemNoInfoCodeNode'
666
+ : 'pairedItemNoInfo',
667
+ nodeCause,
668
+ causeDetailed: `Missing pairedItem data (node '${nodeCause}' probably didn't supply it)`,
669
+ type: 'paired_item_no_info',
670
+ });
671
+ };
672
+ const createNoConnectionError = (nodeCause) => {
673
+ return createExpressionError('Invalid expression', {
674
+ messageTemplate: 'No path back to referenced node',
675
+ functionality: 'pairedItem',
676
+ descriptionKey: isScriptingNode(nodeCause, that.workflow)
677
+ ? 'pairedItemNoConnectionCodeNode'
678
+ : 'pairedItemNoConnection',
679
+ type: 'paired_item_no_connection',
680
+ moreInfoLink: true,
681
+ nodeCause,
682
+ });
683
+ };
684
+ function createBranchNotFoundError(node, item, cause) {
685
+ return createExpressionError('Branch not found', {
686
+ messageTemplate: 'Paired item references non-existent branch',
687
+ functionality: 'pairedItem',
688
+ nodeCause: cause,
689
+ functionOverrides: { message: 'Invalid branch reference' },
690
+ description: `Item ${item} in node ${node} references a branch that doesn't exist.`,
691
+ type: 'paired_item_invalid_info',
692
+ });
693
+ }
694
+ function createPairedItemNotFound(destNode, cause) {
695
+ return createExpressionError('Paired item resolution failed', {
696
+ messageTemplate: 'Unable to find paired item source',
697
+ functionality: 'pairedItem',
698
+ nodeCause: cause,
699
+ functionOverrides: { message: 'Data not found' },
700
+ description: `Could not trace back to node '${destNode}'`,
701
+ type: 'paired_item_no_info',
702
+ moreInfoLink: true,
703
+ });
704
+ }
705
+ function createPairedItemMultipleItemsFound(destNode, itemIndex) {
706
+ return createExpressionError('Multiple matches found', {
707
+ messageTemplate: `Multiple matching items for item [${itemIndex}]`,
708
+ functionality: 'pairedItem',
709
+ functionOverrides: { message: 'Multiple matches' },
710
+ nodeCause: destNode,
711
+ descriptionKey: isScriptingNode(destNode, that.workflow)
712
+ ? 'pairedItemMultipleMatchesCodeNode'
713
+ : 'pairedItemMultipleMatches',
714
+ type: 'paired_item_multiple_matches',
715
+ });
716
+ }
717
+ function normalizeInputs(pairedItem, sourceData) {
718
+ if (typeof pairedItem === 'number') {
719
+ pairedItem = { item: pairedItem };
720
+ }
721
+ const finalSource = pairedItem.sourceOverwrite || sourceData;
722
+ return [pairedItem, finalSource];
723
+ }
724
+ function pinDataToTask(pinData) {
725
+ if (!pinData)
726
+ return undefined;
727
+ return {
728
+ data: { main: [pinData] },
729
+ startTime: 0,
730
+ executionTime: 0,
731
+ executionIndex: 0,
732
+ source: [],
733
+ };
734
+ }
735
+ function getTaskData(source) {
736
+ return (that.runExecutionData?.resultData?.runData?.[source.previousNode]?.[source.previousNodeRun || 0] ??
737
+ pinDataToTask((0, workflow_data_proxy_helpers_1.getPinDataIfManualExecution)(that.workflow, source.previousNode, that.mode)));
738
+ }
739
+ function getNodeOutput(taskData, source, nodeCause) {
740
+ const outputIndex = source.previousNodeOutput || 0;
741
+ const outputs = taskData?.data?.main?.[outputIndex];
742
+ if (!outputs) {
743
+ throw createExpressionError('Can’t get data for expression', {
744
+ messageTemplate: 'Missing output data',
745
+ functionOverrides: { message: 'Missing output' },
746
+ nodeCause,
747
+ description: `Expected output #${outputIndex} from node ${source.previousNode}`,
748
+ type: 'internal',
749
+ });
750
+ }
751
+ return outputs;
752
+ }
753
+ const normalizePairedItem = (paired) => {
754
+ if (paired === null || paired === undefined) {
755
+ return [];
756
+ }
757
+ const pairedItems = Array.isArray(paired) ? paired : [paired];
758
+ return pairedItems.map((p) => (typeof p === 'number' ? { item: p } : p));
759
+ };
760
+ const getPairedItem = (destinationNodeName, incomingSourceData, initialPairedItem, usedMethodName = PAIRED_ITEM_METHOD.$GET_PAIRED_ITEM, nodeBeforeLast) => {
761
+ // Normalize inputs
762
+ const [pairedItem, sourceData] = normalizeInputs(initialPairedItem, incomingSourceData);
763
+ if (!sourceData) {
764
+ throw createPairedItemNotFound(destinationNodeName, nodeBeforeLast);
765
+ }
766
+ const taskData = getTaskData(sourceData);
767
+ const outputData = getNodeOutput(taskData, sourceData, nodeBeforeLast);
768
+ const item = outputData[pairedItem.item];
769
+ const sourceArray = taskData?.source ?? [];
770
+ // Done: reached the destination node in the ancestry chain
771
+ if (sourceData.previousNode === destinationNodeName) {
772
+ if (pairedItem.item >= outputData.length) {
773
+ throw createInvalidPairedItemError({ nodeName: sourceData.previousNode });
774
+ }
775
+ return item;
776
+ }
777
+ // Normalize paired item to always be IPairedItemData[]
778
+ const nextPairedItems = normalizePairedItem(item.pairedItem);
779
+ if (nextPairedItems.length === 0) {
780
+ throw createMissingPairedItemError(sourceData.previousNode, usedMethodName);
781
+ }
782
+ // Recursively traverse ancestry to find the destination node + paired item
783
+ const results = nextPairedItems.flatMap((nextPairedItem) => {
784
+ const inputIndex = nextPairedItem.input ?? 0;
785
+ if (inputIndex >= sourceArray.length)
786
+ return [];
787
+ const nextSource = nextPairedItem.sourceOverwrite ?? sourceArray[inputIndex];
788
+ try {
789
+ return (0, result_1.createResultOk)(getPairedItem(destinationNodeName, nextSource, { ...nextPairedItem, input: inputIndex }, usedMethodName, sourceData.previousNode));
790
+ }
791
+ catch (error) {
792
+ return (0, result_1.createResultError)(error);
793
+ }
794
+ });
795
+ if (results.every((result) => !result.ok)) {
796
+ throw results[0].error;
797
+ }
798
+ const matchedItems = results.filter((result) => result.ok).map((result) => result.result);
799
+ if (matchedItems.length === 0) {
800
+ if (sourceArray.length === 0)
801
+ throw createNoConnectionError(destinationNodeName);
802
+ throw createBranchNotFoundError(sourceData.previousNode, pairedItem.item, nodeBeforeLast);
803
+ }
804
+ const [first, ...rest] = matchedItems;
805
+ if (rest.some((r) => r !== first)) {
806
+ throw createPairedItemMultipleItemsFound(destinationNodeName, pairedItem.item);
807
+ }
808
+ return first;
809
+ };
810
+ const handleFromAi = (name, _description, _type = 'string', defaultValue) => {
811
+ const { itemIndex, runIndex } = that;
812
+ if (!name || name === '') {
813
+ throw new expression_error_1.ExpressionError("Add a key, e.g. $fromAI('placeholder_name')", {
814
+ runIndex,
815
+ itemIndex,
816
+ });
817
+ }
818
+ const nameValidationRegex = /^[a-zA-Z0-9_-]{0,64}$/;
819
+ if (!nameValidationRegex.test(name)) {
820
+ throw new expression_error_1.ExpressionError('Invalid parameter key, must be between 1 and 64 characters long and only contain lowercase letters, uppercase letters, numbers, underscores, and hyphens', {
821
+ runIndex,
822
+ itemIndex,
823
+ });
824
+ }
825
+ const inputData = that.runExecutionData?.resultData.runData[that.activeNodeName]?.[runIndex].inputOverride;
826
+ const placeholdersDataInputData = inputData?.[interfaces_1.NodeConnectionTypes.AiTool]?.[0]?.[itemIndex].json;
827
+ if (Boolean(!placeholdersDataInputData)) {
828
+ throw new expression_error_1.ExpressionError('No execution data available', {
829
+ runIndex,
830
+ itemIndex,
831
+ type: 'no_execution_data',
832
+ });
833
+ }
834
+ return (
835
+ // TS does not know that the key exists, we need to address this in refactor
836
+ placeholdersDataInputData?.query?.[name] ??
837
+ placeholdersDataInputData?.[name] ??
838
+ defaultValue);
839
+ };
840
+ const base = {
841
+ $: (nodeName) => {
842
+ if (!nodeName) {
843
+ throw createExpressionError('When calling $(), please specify a node');
844
+ }
845
+ const referencedNode = that.workflow.getNode(nodeName);
846
+ if (referencedNode === null) {
847
+ throw createExpressionError("Referenced node doesn't exist", {
848
+ runIndex: that.runIndex,
849
+ itemIndex: that.itemIndex,
850
+ nodeCause: nodeName,
851
+ descriptionKey: 'nodeNotFound',
852
+ });
853
+ }
854
+ const ensureNodeExecutionData = () => {
855
+ if (!that?.runExecutionData?.resultData?.runData.hasOwnProperty(nodeName) &&
856
+ !(0, workflow_data_proxy_helpers_1.getPinDataIfManualExecution)(that.workflow, nodeName, that.mode)) {
857
+ throw createExpressionError('Referenced node is unexecuted', {
858
+ runIndex: that.runIndex,
859
+ itemIndex: that.itemIndex,
860
+ type: 'no_node_execution_data',
861
+ descriptionKey: 'noNodeExecutionData',
862
+ nodeCause: nodeName,
863
+ });
864
+ }
865
+ };
866
+ return new Proxy({}, {
867
+ has: () => true,
868
+ ownKeys() {
869
+ return [
870
+ PAIRED_ITEM_METHOD.PAIRED_ITEM,
871
+ 'isExecuted',
872
+ PAIRED_ITEM_METHOD.ITEM_MATCHING,
873
+ PAIRED_ITEM_METHOD.ITEM,
874
+ 'first',
875
+ 'last',
876
+ 'all',
877
+ 'context',
878
+ 'params',
879
+ ];
880
+ },
881
+ get(target, property, receiver) {
882
+ if (property === 'isProxy')
883
+ return true;
884
+ if (property === 'isExecuted') {
885
+ return (that?.runExecutionData?.resultData?.runData.hasOwnProperty(nodeName) ?? false);
886
+ }
887
+ if (property === PAIRED_ITEM_METHOD.PAIRED_ITEM ||
888
+ property === PAIRED_ITEM_METHOD.ITEM_MATCHING ||
889
+ property === PAIRED_ITEM_METHOD.ITEM) {
890
+ // Before resolving the pairedItem make sure that the requested node comes in the
891
+ // graph before the current one
892
+ const activeNode = that.workflow.getNode(that.activeNodeName);
893
+ let contextNode = that.contextNodeName;
894
+ if (activeNode) {
895
+ const parentMainInputNode = that.workflow.getParentMainInputNode(activeNode);
896
+ contextNode = parentMainInputNode.name ?? contextNode;
897
+ }
898
+ const parentNodes = that.workflow.getParentNodes(contextNode);
899
+ if (!parentNodes.includes(nodeName)) {
900
+ throw createNoConnectionError(nodeName);
901
+ }
902
+ ensureNodeExecutionData();
903
+ const pairedItemMethod = (itemIndex) => {
904
+ if (itemIndex === undefined) {
905
+ if (property === PAIRED_ITEM_METHOD.ITEM_MATCHING) {
906
+ throw createExpressionError('Missing item index for .itemMatching()', {
907
+ itemIndex,
908
+ });
909
+ }
910
+ itemIndex = that.itemIndex;
911
+ }
912
+ if (!that.connectionInputData.length) {
913
+ const pinnedData = (0, workflow_data_proxy_helpers_1.getPinDataIfManualExecution)(that.workflow, nodeName, that.mode);
914
+ if (pinnedData) {
915
+ return pinnedData[itemIndex];
916
+ }
917
+ }
918
+ const executionData = that.connectionInputData;
919
+ const input = executionData?.[itemIndex];
920
+ if (!input) {
921
+ throw createExpressionError('Can’t get data for expression', {
922
+ messageTemplate: 'Can’t get data for expression under ‘%%PARAMETER%%’ field',
923
+ functionality: 'pairedItem',
924
+ functionOverrides: {
925
+ description: `Some intermediate nodes between ‘<strong>${nodeName}</strong>‘ and ‘<strong>${that.activeNodeName}</strong>‘ have not executed yet.`,
926
+ message: 'Can’t get data',
927
+ },
928
+ description: `Some intermediate nodes between ‘<strong>${nodeName}</strong>‘ and ‘<strong>${that.activeNodeName}</strong>‘ have not executed yet.`,
929
+ causeDetailed: `pairedItem can\'t be found when intermediate nodes between ‘<strong>${nodeName}</strong>‘ and ‘<strong>${that.activeNodeName}</strong> have not executed yet.`,
930
+ itemIndex,
931
+ type: 'paired_item_intermediate_nodes',
932
+ });
933
+ }
934
+ // As we operate on the incoming item we can be sure that pairedItem is not an
935
+ // array. After all can it only come from exactly one previous node via a certain
936
+ // input. For that reason do we not have to consider the array case.
937
+ const pairedItem = input.pairedItem;
938
+ if (pairedItem === undefined) {
939
+ throw createMissingPairedItemError(that.activeNodeName, property);
940
+ }
941
+ if (!that.executeData?.source) {
942
+ throw createExpressionError('Can’t get data for expression', {
943
+ messageTemplate: 'Can’t get data for expression under ‘%%PARAMETER%%’ field',
944
+ functionality: 'pairedItem',
945
+ functionOverrides: {
946
+ message: 'Can’t get data',
947
+ },
948
+ description: 'Apologies, this is an internal error. See details for more information',
949
+ causeDetailed: 'Missing sourceData (probably an internal error)',
950
+ itemIndex,
951
+ });
952
+ }
953
+ const sourceData = that.executeData.source.main[pairedItem.input || 0] ??
954
+ that.executeData.source.main[0];
955
+ return getPairedItem(nodeName, sourceData, pairedItem, property);
956
+ };
957
+ if (property === PAIRED_ITEM_METHOD.ITEM) {
958
+ return pairedItemMethod();
959
+ }
960
+ return pairedItemMethod;
961
+ }
962
+ if (property === 'first') {
963
+ ensureNodeExecutionData();
964
+ return (branchIndex, runIndex) => {
965
+ branchIndex =
966
+ branchIndex ??
967
+ // default to the output the active node is connected to
968
+ that.workflow.getNodeConnectionIndexes(that.activeNodeName, nodeName)
969
+ ?.sourceIndex ??
970
+ 0;
971
+ const executionData = that.getNodeExecutionOrPinnedData({
972
+ nodeName,
973
+ branchIndex,
974
+ runIndex,
975
+ });
976
+ if (executionData[0])
977
+ return executionData[0];
978
+ return undefined;
979
+ };
980
+ }
981
+ if (property === 'last') {
982
+ ensureNodeExecutionData();
983
+ return (branchIndex, runIndex) => {
984
+ branchIndex =
985
+ branchIndex ??
986
+ // default to the output the active node is connected to
987
+ that.workflow.getNodeConnectionIndexes(that.activeNodeName, nodeName)
988
+ ?.sourceIndex ??
989
+ 0;
990
+ const executionData = that.getNodeExecutionOrPinnedData({
991
+ nodeName,
992
+ branchIndex,
993
+ runIndex,
994
+ });
995
+ if (!executionData.length)
996
+ return undefined;
997
+ if (executionData[executionData.length - 1]) {
998
+ return executionData[executionData.length - 1];
999
+ }
1000
+ return undefined;
1001
+ };
1002
+ }
1003
+ if (property === 'all') {
1004
+ ensureNodeExecutionData();
1005
+ return (branchIndex, runIndex) => {
1006
+ branchIndex =
1007
+ branchIndex ??
1008
+ // default to the output the active node is connected to
1009
+ that.workflow.getNodeConnectionIndexes(that.activeNodeName, nodeName)
1010
+ ?.sourceIndex ??
1011
+ 0;
1012
+ return that.getNodeExecutionOrPinnedData({ nodeName, branchIndex, runIndex });
1013
+ };
1014
+ }
1015
+ if (property === 'context') {
1016
+ return that.nodeContextGetter(nodeName);
1017
+ }
1018
+ if (property === 'params') {
1019
+ return that.workflow.getNode(nodeName)?.parameters;
1020
+ }
1021
+ return Reflect.get(target, property, receiver);
1022
+ },
1023
+ });
1024
+ },
1025
+ $input: new Proxy({}, {
1026
+ has: () => true,
1027
+ ownKeys() {
1028
+ return ['all', 'context', 'first', 'item', 'last', 'params'];
1029
+ },
1030
+ getOwnPropertyDescriptor() {
1031
+ return {
1032
+ enumerable: true,
1033
+ configurable: true,
1034
+ };
1035
+ },
1036
+ get(target, property, receiver) {
1037
+ if (property === 'isProxy')
1038
+ return true;
1039
+ if (that.connectionInputData.length === 0) {
1040
+ throw createExpressionError('No execution data available', {
1041
+ runIndex: that.runIndex,
1042
+ itemIndex: that.itemIndex,
1043
+ type: 'no_execution_data',
1044
+ });
1045
+ }
1046
+ if (property === 'item') {
1047
+ return that.connectionInputData[that.itemIndex];
1048
+ }
1049
+ if (property === 'first') {
1050
+ return (...args) => {
1051
+ if (args.length) {
1052
+ throw createExpressionError('$input.first() should have no arguments');
1053
+ }
1054
+ const result = that.connectionInputData;
1055
+ if (result[0]) {
1056
+ return result[0];
1057
+ }
1058
+ return undefined;
1059
+ };
1060
+ }
1061
+ if (property === 'last') {
1062
+ return (...args) => {
1063
+ if (args.length) {
1064
+ throw createExpressionError('$input.last() should have no arguments');
1065
+ }
1066
+ const result = that.connectionInputData;
1067
+ if (result.length && result[result.length - 1]) {
1068
+ return result[result.length - 1];
1069
+ }
1070
+ return undefined;
1071
+ };
1072
+ }
1073
+ if (property === 'all') {
1074
+ return () => {
1075
+ const result = that.connectionInputData;
1076
+ if (result.length) {
1077
+ return result;
1078
+ }
1079
+ return [];
1080
+ };
1081
+ }
1082
+ if (['context', 'params'].includes(property)) {
1083
+ // For the following properties we need the source data so fail in case it is missing
1084
+ // for some reason (even though that should actually never happen)
1085
+ if (!that.executeData?.source) {
1086
+ throw createExpressionError('Can’t get data for expression', {
1087
+ messageTemplate: 'Can’t get data for expression under ‘%%PARAMETER%%’ field',
1088
+ functionOverrides: {
1089
+ message: 'Can’t get data',
1090
+ },
1091
+ description: 'Apologies, this is an internal error. See details for more information',
1092
+ causeDetailed: 'Missing sourceData (probably an internal error)',
1093
+ runIndex: that.runIndex,
1094
+ });
1095
+ }
1096
+ const sourceData = that.executeData.source.main[0];
1097
+ if (property === 'context') {
1098
+ return that.nodeContextGetter(sourceData.previousNode);
1099
+ }
1100
+ if (property === 'params') {
1101
+ return that.workflow.getNode(sourceData.previousNode)?.parameters;
1102
+ }
1103
+ }
1104
+ return Reflect.get(target, property, receiver);
1105
+ },
1106
+ }),
1107
+ $binary: {}, // Placeholder
1108
+ $data: {}, // Placeholder
1109
+ $env: (0, workflow_data_proxy_env_provider_1.createEnvProvider)(that.runIndex, that.itemIndex, that.envProviderState ?? (0, workflow_data_proxy_env_provider_1.createEnvProviderState)()),
1110
+ $evaluateExpression: (expression, itemIndex) => {
1111
+ itemIndex = itemIndex || that.itemIndex;
1112
+ return that.workflow.expression.getParameterValue(`=${expression}`, that.runExecutionData, that.runIndex, itemIndex, that.activeNodeName, that.connectionInputData, that.mode, that.additionalKeys, that.executeData, false, {}, that.contextNodeName);
1113
+ },
1114
+ $item: (itemIndex, runIndex) => {
1115
+ const defaultReturnRunIndex = runIndex === undefined ? -1 : runIndex;
1116
+ const dataProxy = new WorkflowDataProxy(this.workflow, this.runExecutionData, this.runIndex, itemIndex, this.activeNodeName, this.connectionInputData, that.siblingParameters, that.mode, that.additionalKeys, that.executeData, defaultReturnRunIndex, {}, that.contextNodeName);
1117
+ return dataProxy.getDataProxy();
1118
+ },
1119
+ $fromAI: handleFromAi,
1120
+ // Make sure mis-capitalized $fromAI is handled correctly even though we don't auto-complete it
1121
+ $fromai: handleFromAi,
1122
+ $fromAi: handleFromAi,
1123
+ $items: (nodeName, outputIndex, runIndex) => {
1124
+ if (nodeName === undefined) {
1125
+ nodeName = that.prevNodeGetter().name;
1126
+ const node = this.workflow.nodes[nodeName];
1127
+ let result = that.connectionInputData;
1128
+ if (node.executeOnce === true) {
1129
+ result = result.slice(0, 1);
1130
+ }
1131
+ if (result.length) {
1132
+ return result;
1133
+ }
1134
+ return [];
1135
+ }
1136
+ outputIndex = outputIndex || 0;
1137
+ runIndex = runIndex === undefined ? -1 : runIndex;
1138
+ return that.getNodeExecutionData(nodeName, false, outputIndex, runIndex);
1139
+ },
1140
+ $json: {}, // Placeholder
1141
+ $node: this.nodeGetter(),
1142
+ $self: this.selfGetter(),
1143
+ $parameter: this.nodeParameterGetter(this.activeNodeName),
1144
+ $rawParameter: this.nodeParameterGetter(this.activeNodeName, false),
1145
+ $prevNode: this.prevNodeGetter(),
1146
+ $runIndex: this.runIndex,
1147
+ $mode: this.mode,
1148
+ $workflow: this.workflowGetter(),
1149
+ $itemIndex: this.itemIndex,
1150
+ $now: luxon_1.DateTime.now(),
1151
+ $today: luxon_1.DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }),
1152
+ $jmesPath: jmespathWrapper,
1153
+ DateTime: luxon_1.DateTime,
1154
+ Interval: luxon_1.Interval,
1155
+ Duration: luxon_1.Duration,
1156
+ ...that.additionalKeys,
1157
+ $getPairedItem: getPairedItem,
1158
+ // deprecated
1159
+ $jmespath: jmespathWrapper,
1160
+ $position: this.itemIndex,
1161
+ $thisItem: that.connectionInputData[that.itemIndex],
1162
+ $thisItemIndex: this.itemIndex,
1163
+ $thisRunIndex: this.runIndex,
1164
+ $nodeVersion: that.workflow.getNode(that.activeNodeName)?.typeVersion,
1165
+ $nodeId: that.workflow.getNode(that.activeNodeName)?.id,
1166
+ $agentInfo: this.agentInfo(),
1167
+ $webhookId: that.workflow.getNode(that.activeNodeName)?.webhookId,
1168
+ };
1169
+ const throwOnMissingExecutionData = opts?.throwOnMissingExecutionData ?? true;
1170
+ return new Proxy(base, {
1171
+ has: () => true,
1172
+ get(target, name, receiver) {
1173
+ if (name === 'isProxy')
1174
+ return true;
1175
+ if (['$data', '$json'].includes(name)) {
1176
+ return that.nodeDataGetter(that.contextNodeName, true, throwOnMissingExecutionData)?.json;
1177
+ }
1178
+ if (name === '$binary') {
1179
+ return that.nodeDataGetter(that.contextNodeName, true, throwOnMissingExecutionData)
1180
+ ?.binary;
1181
+ }
1182
+ return Reflect.get(target, name, receiver);
1183
+ },
1184
+ });
1185
+ }
1186
+ }
1187
+ exports.WorkflowDataProxy = WorkflowDataProxy;
1188
+ });
1189
+ //# sourceMappingURL=workflow-data-proxy.js.map