n8n-workflow 2.31.1 → 2.32.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 (408) hide show
  1. package/dist/cjs/augment-object.js +136 -146
  2. package/dist/cjs/augment-object.js.map +1 -1
  3. package/dist/cjs/build.tsbuildinfo +1 -1
  4. package/dist/cjs/common/find-ai-root-node-names.js +36 -46
  5. package/dist/cjs/common/find-ai-root-node-names.js.map +1 -1
  6. package/dist/cjs/common/get-child-nodes.js +8 -18
  7. package/dist/cjs/common/get-child-nodes.js.map +1 -1
  8. package/dist/cjs/common/get-connected-nodes.js +84 -94
  9. package/dist/cjs/common/get-connected-nodes.js.map +1 -1
  10. package/dist/cjs/common/get-node-by-name.js +16 -26
  11. package/dist/cjs/common/get-node-by-name.js.map +1 -1
  12. package/dist/cjs/common/get-parent-nodes.js +14 -24
  13. package/dist/cjs/common/get-parent-nodes.js.map +1 -1
  14. package/dist/cjs/common/index.js +9 -19
  15. package/dist/cjs/common/index.js.map +1 -1
  16. package/dist/cjs/common/map-connections-by-destination.js +31 -41
  17. package/dist/cjs/common/map-connections-by-destination.js.map +1 -1
  18. package/dist/cjs/common/resolve-variables.d.ts +8 -0
  19. package/dist/cjs/common/resolve-variables.d.ts.map +1 -1
  20. package/dist/cjs/common/resolve-variables.js +46 -33
  21. package/dist/cjs/common/resolve-variables.js.map +1 -1
  22. package/dist/cjs/connections-diff.js +58 -68
  23. package/dist/cjs/connections-diff.js.map +1 -1
  24. package/dist/cjs/constants.d.ts +3 -3
  25. package/dist/cjs/constants.d.ts.map +1 -1
  26. package/dist/cjs/constants.js +157 -166
  27. package/dist/cjs/constants.js.map +1 -1
  28. package/dist/cjs/credential-domain-restrictions.js +153 -163
  29. package/dist/cjs/credential-domain-restrictions.js.map +1 -1
  30. package/dist/cjs/cron.d.ts.map +1 -1
  31. package/dist/cjs/cron.js +25 -35
  32. package/dist/cjs/cron.js.map +1 -1
  33. package/dist/cjs/data-table.types.js +10 -20
  34. package/dist/cjs/data-table.types.js.map +1 -1
  35. package/dist/cjs/dynamic-credentials-helpers.js +93 -103
  36. package/dist/cjs/dynamic-credentials-helpers.js.map +1 -1
  37. package/dist/cjs/errors/abstract/execution-base.error.d.ts.map +1 -1
  38. package/dist/cjs/errors/abstract/execution-base.error.js +41 -51
  39. package/dist/cjs/errors/abstract/execution-base.error.js.map +1 -1
  40. package/dist/cjs/errors/abstract/node.error.d.ts.map +1 -1
  41. package/dist/cjs/errors/abstract/node.error.js +142 -152
  42. package/dist/cjs/errors/abstract/node.error.js.map +1 -1
  43. package/dist/cjs/errors/base/base.error.d.ts.map +1 -1
  44. package/dist/cjs/errors/base/base.error.js +35 -45
  45. package/dist/cjs/errors/base/base.error.js.map +1 -1
  46. package/dist/cjs/errors/base/operational.error.d.ts.map +1 -1
  47. package/dist/cjs/errors/base/operational.error.js +17 -27
  48. package/dist/cjs/errors/base/operational.error.js.map +1 -1
  49. package/dist/cjs/errors/base/unexpected.error.d.ts.map +1 -1
  50. package/dist/cjs/errors/base/unexpected.error.js +17 -27
  51. package/dist/cjs/errors/base/unexpected.error.js.map +1 -1
  52. package/dist/cjs/errors/base/user.error.d.ts.map +1 -1
  53. package/dist/cjs/errors/base/user.error.js +17 -27
  54. package/dist/cjs/errors/base/user.error.js.map +1 -1
  55. package/dist/cjs/errors/cli-subworkflow-operation.error.js +7 -17
  56. package/dist/cjs/errors/cli-subworkflow-operation.error.js.map +1 -1
  57. package/dist/cjs/errors/db-connection-timeout-error.d.ts.map +1 -1
  58. package/dist/cjs/errors/db-connection-timeout-error.js +11 -21
  59. package/dist/cjs/errors/db-connection-timeout-error.js.map +1 -1
  60. package/dist/cjs/errors/execution-cancelled.error.d.ts.map +1 -1
  61. package/dist/cjs/errors/execution-cancelled.error.js +33 -43
  62. package/dist/cjs/errors/execution-cancelled.error.js.map +1 -1
  63. package/dist/cjs/errors/expression-class-extension.error.d.ts.map +1 -1
  64. package/dist/cjs/errors/expression-class-extension.error.js +9 -19
  65. package/dist/cjs/errors/expression-class-extension.error.js.map +1 -1
  66. package/dist/cjs/errors/expression-computed-destructuring.error.d.ts.map +1 -1
  67. package/dist/cjs/errors/expression-computed-destructuring.error.js +9 -19
  68. package/dist/cjs/errors/expression-computed-destructuring.error.js.map +1 -1
  69. package/dist/cjs/errors/expression-destructuring.error.d.ts.map +1 -1
  70. package/dist/cjs/errors/expression-destructuring.error.js +9 -19
  71. package/dist/cjs/errors/expression-destructuring.error.js.map +1 -1
  72. package/dist/cjs/errors/expression-extension.error.js +7 -17
  73. package/dist/cjs/errors/expression-extension.error.js.map +1 -1
  74. package/dist/cjs/errors/expression-reserved-variable.error.d.ts.map +1 -1
  75. package/dist/cjs/errors/expression-reserved-variable.error.js +9 -19
  76. package/dist/cjs/errors/expression-reserved-variable.error.js.map +1 -1
  77. package/dist/cjs/errors/expression-with-statement.error.d.ts.map +1 -1
  78. package/dist/cjs/errors/expression-with-statement.error.js +9 -19
  79. package/dist/cjs/errors/expression-with-statement.error.js.map +1 -1
  80. package/dist/cjs/errors/expression.error.d.ts.map +1 -1
  81. package/dist/cjs/errors/expression.error.js +33 -43
  82. package/dist/cjs/errors/expression.error.js.map +1 -1
  83. package/dist/cjs/errors/index.js +62 -72
  84. package/dist/cjs/errors/index.js.map +1 -1
  85. package/dist/cjs/errors/node-api.error.d.ts.map +1 -1
  86. package/dist/cjs/errors/node-api.error.js +227 -237
  87. package/dist/cjs/errors/node-api.error.js.map +1 -1
  88. package/dist/cjs/errors/node-operation.error.d.ts.map +1 -1
  89. package/dist/cjs/errors/node-operation.error.js +43 -53
  90. package/dist/cjs/errors/node-operation.error.js.map +1 -1
  91. package/dist/cjs/errors/node-ssl.error.d.ts.map +1 -1
  92. package/dist/cjs/errors/node-ssl.error.js +9 -19
  93. package/dist/cjs/errors/node-ssl.error.js.map +1 -1
  94. package/dist/cjs/errors/subworkflow-operation.error.d.ts.map +1 -1
  95. package/dist/cjs/errors/subworkflow-operation.error.js +18 -28
  96. package/dist/cjs/errors/subworkflow-operation.error.js.map +1 -1
  97. package/dist/cjs/errors/trigger-close.error.d.ts.map +1 -1
  98. package/dist/cjs/errors/trigger-close.error.js +11 -21
  99. package/dist/cjs/errors/trigger-close.error.js.map +1 -1
  100. package/dist/cjs/errors/webhook-taken.error.d.ts.map +1 -1
  101. package/dist/cjs/errors/webhook-taken.error.js +9 -19
  102. package/dist/cjs/errors/webhook-taken.error.js.map +1 -1
  103. package/dist/cjs/errors/workflow-activation.error.d.ts.map +1 -1
  104. package/dist/cjs/errors/workflow-activation.error.js +54 -64
  105. package/dist/cjs/errors/workflow-activation.error.js.map +1 -1
  106. package/dist/cjs/errors/workflow-configuration.error.js +10 -20
  107. package/dist/cjs/errors/workflow-configuration.error.js.map +1 -1
  108. package/dist/cjs/errors/workflow-deactivation.error.js +7 -17
  109. package/dist/cjs/errors/workflow-deactivation.error.js.map +1 -1
  110. package/dist/cjs/errors/workflow-operation.error.d.ts.map +1 -1
  111. package/dist/cjs/errors/workflow-operation.error.js +20 -30
  112. package/dist/cjs/errors/workflow-operation.error.js.map +1 -1
  113. package/dist/cjs/evaluation-helpers.js +16 -26
  114. package/dist/cjs/evaluation-helpers.js.map +1 -1
  115. package/dist/cjs/execution-context-establishment-hooks.d.ts.map +1 -1
  116. package/dist/cjs/execution-context-establishment-hooks.js +43 -49
  117. package/dist/cjs/execution-context-establishment-hooks.js.map +1 -1
  118. package/dist/cjs/execution-context.d.ts +14 -14
  119. package/dist/cjs/execution-context.d.ts.map +1 -1
  120. package/dist/cjs/execution-context.js +203 -213
  121. package/dist/cjs/execution-context.js.map +1 -1
  122. package/dist/cjs/execution-status.d.ts +2 -2
  123. package/dist/cjs/execution-status.d.ts.map +1 -1
  124. package/dist/cjs/execution-status.js +27 -37
  125. package/dist/cjs/execution-status.js.map +1 -1
  126. package/dist/cjs/expression-evaluator-proxy.d.ts.map +1 -1
  127. package/dist/cjs/expression-evaluator-proxy.js +18 -28
  128. package/dist/cjs/expression-evaluator-proxy.js.map +1 -1
  129. package/dist/cjs/expression-sandboxing.d.ts.map +1 -1
  130. package/dist/cjs/expression-sandboxing.js +447 -457
  131. package/dist/cjs/expression-sandboxing.js.map +1 -1
  132. package/dist/cjs/expression.d.ts.map +1 -1
  133. package/dist/cjs/expression.js +535 -546
  134. package/dist/cjs/expression.js.map +1 -1
  135. package/dist/cjs/expressions/expression-helpers.d.ts.map +1 -1
  136. package/dist/cjs/expressions/expression-helpers.js +13 -23
  137. package/dist/cjs/expressions/expression-helpers.js.map +1 -1
  138. package/dist/cjs/extensions/array-extensions.js +591 -601
  139. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  140. package/dist/cjs/extensions/boolean-extensions.d.ts +1 -1
  141. package/dist/cjs/extensions/boolean-extensions.js +38 -48
  142. package/dist/cjs/extensions/boolean-extensions.js.map +1 -1
  143. package/dist/cjs/extensions/date-extensions.js +507 -517
  144. package/dist/cjs/extensions/date-extensions.js.map +1 -1
  145. package/dist/cjs/extensions/expression-extension.d.ts.map +1 -1
  146. package/dist/cjs/extensions/expression-extension.js +455 -465
  147. package/dist/cjs/extensions/expression-extension.js.map +1 -1
  148. package/dist/cjs/extensions/expression-parser.d.ts.map +1 -1
  149. package/dist/cjs/extensions/expression-parser.js +82 -92
  150. package/dist/cjs/extensions/expression-parser.js.map +1 -1
  151. package/dist/cjs/extensions/extended-functions.d.ts +10 -18
  152. package/dist/cjs/extensions/extended-functions.d.ts.map +1 -1
  153. package/dist/cjs/extensions/extended-functions.js +80 -90
  154. package/dist/cjs/extensions/extended-functions.js.map +1 -1
  155. package/dist/cjs/extensions/extensions.js +2 -12
  156. package/dist/cjs/extensions/index.js +10 -20
  157. package/dist/cjs/extensions/index.js.map +1 -1
  158. package/dist/cjs/extensions/number-extensions.js +226 -236
  159. package/dist/cjs/extensions/number-extensions.js.map +1 -1
  160. package/dist/cjs/extensions/object-extensions.js +274 -284
  161. package/dist/cjs/extensions/object-extensions.js.map +1 -1
  162. package/dist/cjs/extensions/string-extensions.d.ts +1 -1
  163. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -1
  164. package/dist/cjs/extensions/string-extensions.js +769 -779
  165. package/dist/cjs/extensions/string-extensions.js.map +1 -1
  166. package/dist/cjs/extensions/utils.d.ts.map +1 -1
  167. package/dist/cjs/extensions/utils.js +35 -45
  168. package/dist/cjs/extensions/utils.js.map +1 -1
  169. package/dist/cjs/from-ai-parse-utils.js +393 -403
  170. package/dist/cjs/from-ai-parse-utils.js.map +1 -1
  171. package/dist/cjs/global-state.js +12 -22
  172. package/dist/cjs/global-state.js.map +1 -1
  173. package/dist/cjs/graph/graph-utils.js +166 -176
  174. package/dist/cjs/graph/graph-utils.js.map +1 -1
  175. package/dist/cjs/highlighted-data.js +13 -23
  176. package/dist/cjs/highlighted-data.js.map +1 -1
  177. package/dist/cjs/index.js +105 -115
  178. package/dist/cjs/index.js.map +1 -1
  179. package/dist/cjs/interfaces.d.ts +112 -22
  180. package/dist/cjs/interfaces.d.ts.map +1 -1
  181. package/dist/cjs/interfaces.js +62 -72
  182. package/dist/cjs/interfaces.js.map +1 -1
  183. package/dist/cjs/jmespath-query.js +26 -36
  184. package/dist/cjs/jmespath-query.js.map +1 -1
  185. package/dist/cjs/logger-proxy.d.ts.map +1 -1
  186. package/dist/cjs/logger-proxy.js +15 -25
  187. package/dist/cjs/logger-proxy.js.map +1 -1
  188. package/dist/cjs/mcp-helpers.js +10 -20
  189. package/dist/cjs/mcp-helpers.js.map +1 -1
  190. package/dist/cjs/message-event-bus.d.ts +184 -165
  191. package/dist/cjs/message-event-bus.d.ts.map +1 -1
  192. package/dist/cjs/message-event-bus.js +207 -217
  193. package/dist/cjs/message-event-bus.js.map +1 -1
  194. package/dist/cjs/metadata-utils.js +35 -45
  195. package/dist/cjs/metadata-utils.js.map +1 -1
  196. package/dist/cjs/native-methods/array.methods.js +527 -537
  197. package/dist/cjs/native-methods/array.methods.js.map +1 -1
  198. package/dist/cjs/native-methods/boolean.methods.js +18 -28
  199. package/dist/cjs/native-methods/boolean.methods.js.map +1 -1
  200. package/dist/cjs/native-methods/index.js +16 -26
  201. package/dist/cjs/native-methods/index.js.map +1 -1
  202. package/dist/cjs/native-methods/number.methods.js +79 -89
  203. package/dist/cjs/native-methods/number.methods.js.map +1 -1
  204. package/dist/cjs/native-methods/object.methods.js +7 -17
  205. package/dist/cjs/native-methods/object.methods.js.map +1 -1
  206. package/dist/cjs/native-methods/string.methods.js +474 -484
  207. package/dist/cjs/native-methods/string.methods.js.map +1 -1
  208. package/dist/cjs/node-grouping-validation.d.ts +6 -0
  209. package/dist/cjs/node-grouping-validation.d.ts.map +1 -1
  210. package/dist/cjs/node-grouping-validation.js +165 -144
  211. package/dist/cjs/node-grouping-validation.js.map +1 -1
  212. package/dist/cjs/node-helpers.d.ts.map +1 -1
  213. package/dist/cjs/node-helpers.js +1486 -1493
  214. package/dist/cjs/node-helpers.js.map +1 -1
  215. package/dist/cjs/node-parameters/filter-parameter.d.ts.map +1 -1
  216. package/dist/cjs/node-parameters/filter-parameter.js +315 -325
  217. package/dist/cjs/node-parameters/filter-parameter.js.map +1 -1
  218. package/dist/cjs/node-parameters/node-parameter-value-type-guard.js +105 -115
  219. package/dist/cjs/node-parameters/node-parameter-value-type-guard.js.map +1 -1
  220. package/dist/cjs/node-parameters/parameter-type-validation.js +120 -130
  221. package/dist/cjs/node-parameters/parameter-type-validation.js.map +1 -1
  222. package/dist/cjs/node-parameters/path-utils.js +21 -31
  223. package/dist/cjs/node-parameters/path-utils.js.map +1 -1
  224. package/dist/cjs/node-parameters/rename-node-utils.js +22 -32
  225. package/dist/cjs/node-parameters/rename-node-utils.js.map +1 -1
  226. package/dist/cjs/node-reference-parser-utils.js +472 -482
  227. package/dist/cjs/node-reference-parser-utils.js.map +1 -1
  228. package/dist/cjs/node-validation.js +59 -69
  229. package/dist/cjs/node-validation.js.map +1 -1
  230. package/dist/cjs/observable-object.js +56 -66
  231. package/dist/cjs/observable-object.js.map +1 -1
  232. package/dist/cjs/redaction-channels.js +36 -46
  233. package/dist/cjs/redaction-channels.js.map +1 -1
  234. package/dist/cjs/run-execution-data/run-execution-data.js +15 -25
  235. package/dist/cjs/run-execution-data/run-execution-data.js.map +1 -1
  236. package/dist/cjs/run-execution-data/run-execution-data.v0.js +2 -12
  237. package/dist/cjs/run-execution-data/run-execution-data.v1.js +26 -36
  238. package/dist/cjs/run-execution-data/run-execution-data.v1.js.map +1 -1
  239. package/dist/cjs/run-execution-data-factory.js +113 -123
  240. package/dist/cjs/run-execution-data-factory.js.map +1 -1
  241. package/dist/cjs/schemas.d.ts +13 -13
  242. package/dist/cjs/schemas.d.ts.map +1 -1
  243. package/dist/cjs/schemas.js +351 -360
  244. package/dist/cjs/schemas.js.map +1 -1
  245. package/dist/cjs/sub-workflow-output.js +10 -20
  246. package/dist/cjs/sub-workflow-output.js.map +1 -1
  247. package/dist/cjs/telemetry-helpers.d.ts.map +1 -1
  248. package/dist/cjs/telemetry-helpers.js +716 -726
  249. package/dist/cjs/telemetry-helpers.js.map +1 -1
  250. package/dist/cjs/tool-helpers.js +18 -28
  251. package/dist/cjs/tool-helpers.js.map +1 -1
  252. package/dist/cjs/trigger-identity.js +41 -51
  253. package/dist/cjs/trigger-identity.js.map +1 -1
  254. package/dist/cjs/trimmed-task-data.js +21 -31
  255. package/dist/cjs/trimmed-task-data.js.map +1 -1
  256. package/dist/cjs/type-guards.d.ts +3 -3
  257. package/dist/cjs/type-guards.d.ts.map +1 -1
  258. package/dist/cjs/type-guards.js +74 -84
  259. package/dist/cjs/type-guards.js.map +1 -1
  260. package/dist/cjs/type-validation.d.ts.map +1 -1
  261. package/dist/cjs/type-validation.js +383 -393
  262. package/dist/cjs/type-validation.js.map +1 -1
  263. package/dist/cjs/utils.d.ts +2 -2
  264. package/dist/cjs/utils.d.ts.map +1 -1
  265. package/dist/cjs/utils.js +430 -440
  266. package/dist/cjs/utils.js.map +1 -1
  267. package/dist/cjs/versioned-node-type.d.ts.map +1 -1
  268. package/dist/cjs/versioned-node-type.js +20 -30
  269. package/dist/cjs/versioned-node-type.js.map +1 -1
  270. package/dist/cjs/workflow-checksum.js +67 -77
  271. package/dist/cjs/workflow-checksum.js.map +1 -1
  272. package/dist/cjs/workflow-data-proxy-env-provider.js +58 -68
  273. package/dist/cjs/workflow-data-proxy-env-provider.js.map +1 -1
  274. package/dist/cjs/workflow-data-proxy-helpers.js +8 -18
  275. package/dist/cjs/workflow-data-proxy-helpers.js.map +1 -1
  276. package/dist/cjs/workflow-data-proxy.d.ts.map +1 -1
  277. package/dist/cjs/workflow-data-proxy.js +1162 -1172
  278. package/dist/cjs/workflow-data-proxy.js.map +1 -1
  279. package/dist/cjs/workflow-diff.d.ts +2 -1
  280. package/dist/cjs/workflow-diff.d.ts.map +1 -1
  281. package/dist/cjs/workflow-diff.js +292 -300
  282. package/dist/cjs/workflow-diff.js.map +1 -1
  283. package/dist/cjs/workflow-environments-helper.js +23 -33
  284. package/dist/cjs/workflow-environments-helper.js.map +1 -1
  285. package/dist/cjs/workflow-expression.d.ts.map +1 -1
  286. package/dist/cjs/workflow-expression.js +97 -107
  287. package/dist/cjs/workflow-expression.js.map +1 -1
  288. package/dist/cjs/workflow-structure-validation.d.ts.map +1 -1
  289. package/dist/cjs/workflow-structure-validation.js +140 -150
  290. package/dist/cjs/workflow-structure-validation.js.map +1 -1
  291. package/dist/cjs/workflow-validation.js +40 -50
  292. package/dist/cjs/workflow-validation.js.map +1 -1
  293. package/dist/cjs/workflow.d.ts.map +1 -1
  294. package/dist/cjs/workflow.js +612 -622
  295. package/dist/cjs/workflow.js.map +1 -1
  296. package/dist/esm/common/get-child-nodes.js.map +1 -1
  297. package/dist/esm/common/get-connected-nodes.js.map +1 -1
  298. package/dist/esm/common/get-parent-nodes.js.map +1 -1
  299. package/dist/esm/common/resolve-variables.d.ts +8 -0
  300. package/dist/esm/common/resolve-variables.d.ts.map +1 -1
  301. package/dist/esm/common/resolve-variables.js +22 -0
  302. package/dist/esm/common/resolve-variables.js.map +1 -1
  303. package/dist/esm/constants.d.ts +3 -3
  304. package/dist/esm/constants.d.ts.map +1 -1
  305. package/dist/esm/cron.d.ts.map +1 -1
  306. package/dist/esm/errors/abstract/execution-base.error.d.ts.map +1 -1
  307. package/dist/esm/errors/abstract/execution-base.error.js.map +1 -1
  308. package/dist/esm/errors/abstract/node.error.d.ts.map +1 -1
  309. package/dist/esm/errors/abstract/node.error.js.map +1 -1
  310. package/dist/esm/errors/base/base.error.d.ts.map +1 -1
  311. package/dist/esm/errors/base/base.error.js.map +1 -1
  312. package/dist/esm/errors/base/operational.error.d.ts.map +1 -1
  313. package/dist/esm/errors/base/operational.error.js.map +1 -1
  314. package/dist/esm/errors/base/unexpected.error.d.ts.map +1 -1
  315. package/dist/esm/errors/base/unexpected.error.js.map +1 -1
  316. package/dist/esm/errors/base/user.error.d.ts.map +1 -1
  317. package/dist/esm/errors/base/user.error.js.map +1 -1
  318. package/dist/esm/errors/db-connection-timeout-error.d.ts.map +1 -1
  319. package/dist/esm/errors/execution-cancelled.error.d.ts.map +1 -1
  320. package/dist/esm/errors/expression-class-extension.error.d.ts.map +1 -1
  321. package/dist/esm/errors/expression-computed-destructuring.error.d.ts.map +1 -1
  322. package/dist/esm/errors/expression-destructuring.error.d.ts.map +1 -1
  323. package/dist/esm/errors/expression-reserved-variable.error.d.ts.map +1 -1
  324. package/dist/esm/errors/expression-with-statement.error.d.ts.map +1 -1
  325. package/dist/esm/errors/expression.error.d.ts.map +1 -1
  326. package/dist/esm/errors/node-api.error.d.ts.map +1 -1
  327. package/dist/esm/errors/node-api.error.js.map +1 -1
  328. package/dist/esm/errors/node-operation.error.d.ts.map +1 -1
  329. package/dist/esm/errors/node-operation.error.js.map +1 -1
  330. package/dist/esm/errors/node-ssl.error.d.ts.map +1 -1
  331. package/dist/esm/errors/subworkflow-operation.error.d.ts.map +1 -1
  332. package/dist/esm/errors/trigger-close.error.d.ts.map +1 -1
  333. package/dist/esm/errors/trigger-close.error.js.map +1 -1
  334. package/dist/esm/errors/webhook-taken.error.d.ts.map +1 -1
  335. package/dist/esm/errors/workflow-activation.error.d.ts.map +1 -1
  336. package/dist/esm/errors/workflow-activation.error.js.map +1 -1
  337. package/dist/esm/errors/workflow-operation.error.d.ts.map +1 -1
  338. package/dist/esm/execution-context-establishment-hooks.d.ts.map +1 -1
  339. package/dist/esm/execution-context-establishment-hooks.js +7 -3
  340. package/dist/esm/execution-context-establishment-hooks.js.map +1 -1
  341. package/dist/esm/execution-context.d.ts +14 -14
  342. package/dist/esm/execution-context.d.ts.map +1 -1
  343. package/dist/esm/execution-status.d.ts +2 -2
  344. package/dist/esm/execution-status.d.ts.map +1 -1
  345. package/dist/esm/expression-evaluator-proxy.d.ts.map +1 -1
  346. package/dist/esm/expression-sandboxing.d.ts.map +1 -1
  347. package/dist/esm/expression-sandboxing.js.map +1 -1
  348. package/dist/esm/expression.d.ts.map +1 -1
  349. package/dist/esm/expression.js.map +1 -1
  350. package/dist/esm/expressions/expression-helpers.d.ts.map +1 -1
  351. package/dist/esm/extensions/boolean-extensions.d.ts +1 -1
  352. package/dist/esm/extensions/expression-extension.d.ts.map +1 -1
  353. package/dist/esm/extensions/expression-parser.d.ts.map +1 -1
  354. package/dist/esm/extensions/extended-functions.d.ts +10 -18
  355. package/dist/esm/extensions/extended-functions.d.ts.map +1 -1
  356. package/dist/esm/extensions/number-extensions.js.map +1 -1
  357. package/dist/esm/extensions/string-extensions.d.ts +1 -1
  358. package/dist/esm/extensions/string-extensions.d.ts.map +1 -1
  359. package/dist/esm/extensions/string-extensions.js.map +1 -1
  360. package/dist/esm/extensions/utils.d.ts.map +1 -1
  361. package/dist/esm/from-ai-parse-utils.js.map +1 -1
  362. package/dist/esm/interfaces.d.ts +112 -22
  363. package/dist/esm/interfaces.d.ts.map +1 -1
  364. package/dist/esm/interfaces.js.map +1 -1
  365. package/dist/esm/logger-proxy.d.ts.map +1 -1
  366. package/dist/esm/message-event-bus.d.ts +184 -165
  367. package/dist/esm/message-event-bus.d.ts.map +1 -1
  368. package/dist/esm/message-event-bus.js +2 -2
  369. package/dist/esm/message-event-bus.js.map +1 -1
  370. package/dist/esm/node-grouping-validation.d.ts +6 -0
  371. package/dist/esm/node-grouping-validation.d.ts.map +1 -1
  372. package/dist/esm/node-grouping-validation.js +34 -5
  373. package/dist/esm/node-grouping-validation.js.map +1 -1
  374. package/dist/esm/node-helpers.d.ts.map +1 -1
  375. package/dist/esm/node-helpers.js +3 -0
  376. package/dist/esm/node-helpers.js.map +1 -1
  377. package/dist/esm/node-parameters/filter-parameter.d.ts.map +1 -1
  378. package/dist/esm/node-parameters/filter-parameter.js.map +1 -1
  379. package/dist/esm/node-reference-parser-utils.js.map +1 -1
  380. package/dist/esm/run-execution-data-factory.js.map +1 -1
  381. package/dist/esm/schemas.d.ts +13 -13
  382. package/dist/esm/schemas.d.ts.map +1 -1
  383. package/dist/esm/schemas.js +1 -0
  384. package/dist/esm/schemas.js.map +1 -1
  385. package/dist/esm/telemetry-helpers.d.ts.map +1 -1
  386. package/dist/esm/telemetry-helpers.js.map +1 -1
  387. package/dist/esm/type-guards.d.ts +3 -3
  388. package/dist/esm/type-guards.d.ts.map +1 -1
  389. package/dist/esm/type-validation.d.ts.map +1 -1
  390. package/dist/esm/type-validation.js.map +1 -1
  391. package/dist/esm/typecheck.tsbuildinfo +1 -1
  392. package/dist/esm/utils.d.ts +2 -2
  393. package/dist/esm/utils.d.ts.map +1 -1
  394. package/dist/esm/utils.js.map +1 -1
  395. package/dist/esm/versioned-node-type.d.ts.map +1 -1
  396. package/dist/esm/workflow-data-proxy.d.ts.map +1 -1
  397. package/dist/esm/workflow-data-proxy.js.map +1 -1
  398. package/dist/esm/workflow-diff.d.ts +2 -1
  399. package/dist/esm/workflow-diff.d.ts.map +1 -1
  400. package/dist/esm/workflow-diff.js +3 -1
  401. package/dist/esm/workflow-diff.js.map +1 -1
  402. package/dist/esm/workflow-expression.d.ts.map +1 -1
  403. package/dist/esm/workflow-expression.js.map +1 -1
  404. package/dist/esm/workflow-structure-validation.d.ts.map +1 -1
  405. package/dist/esm/workflow-structure-validation.js.map +1 -1
  406. package/dist/esm/workflow.d.ts.map +1 -1
  407. package/dist/esm/workflow.js.map +1 -1
  408. package/package.json +9 -8
@@ -1,340 +1,332 @@
1
+ "use strict";
1
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
2
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
3
4
  };
4
- (function (factory) {
5
- if (typeof module === "object" && typeof module.exports === "object") {
6
- var v = factory(require, exports);
7
- if (v !== undefined) module.exports = v;
8
- }
9
- else if (typeof define === "function" && define.amd) {
10
- define(["require", "exports", "lodash/isEqual", "lodash/pick", "./connections-diff"], factory);
11
- }
12
- })(function (require, exports) {
13
- "use strict";
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.SKIP_RULES = exports.RULES = exports.WorkflowChangeSet = exports.NodeDiffStatus = void 0;
16
- exports.compareNodes = compareNodes;
17
- exports.compareWorkflowsNodes = compareWorkflowsNodes;
18
- exports.stringContainsParts = stringContainsParts;
19
- exports.parametersAreSuperset = parametersAreSuperset;
20
- exports.determineNodeSize = determineNodeSize;
21
- exports.groupWorkflows = groupWorkflows;
22
- exports.hasNonPositionalChanges = hasNonPositionalChanges;
23
- exports.hasCredentialChanges = hasCredentialChanges;
24
- const isEqual_1 = __importDefault(require("lodash/isEqual"));
25
- const pick_1 = __importDefault(require("lodash/pick"));
26
- const connections_diff_1 = require("./connections-diff");
27
- var NodeDiffStatus;
28
- (function (NodeDiffStatus) {
29
- NodeDiffStatus["Eq"] = "equal";
30
- NodeDiffStatus["Modified"] = "modified";
31
- NodeDiffStatus["Added"] = "added";
32
- NodeDiffStatus["Deleted"] = "deleted";
33
- })(NodeDiffStatus || (exports.NodeDiffStatus = NodeDiffStatus = {}));
34
- function compareNodes(base, target) {
35
- const propsToCompare = ['name', 'type', 'typeVersion', 'webhookId', 'credentials', 'parameters'];
36
- const baseNode = (0, pick_1.default)(base, propsToCompare);
37
- const targetNode = (0, pick_1.default)(target, propsToCompare);
38
- return (0, isEqual_1.default)(baseNode, targetNode);
39
- }
40
- function compareWorkflowsNodes(base, target, nodesEqual = compareNodes) {
41
- const baseNodes = base.reduce((acc, node) => {
42
- acc.set(node.id, node);
43
- return acc;
44
- }, new Map());
45
- const targetNodes = target.reduce((acc, node) => {
46
- acc.set(node.id, node);
47
- return acc;
48
- }, new Map());
49
- const diff = new Map();
50
- for (const [id, node] of baseNodes.entries()) {
51
- if (!targetNodes.has(id)) {
52
- diff.set(id, { status: NodeDiffStatus.Deleted, node });
53
- }
54
- else if (!nodesEqual(baseNodes.get(id), targetNodes.get(id))) {
55
- diff.set(id, { status: NodeDiffStatus.Modified, node });
56
- }
57
- else {
58
- diff.set(id, { status: NodeDiffStatus.Eq, node });
59
- }
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SKIP_RULES = exports.RULES = exports.WorkflowChangeSet = exports.NodeDiffStatus = void 0;
7
+ exports.compareNodes = compareNodes;
8
+ exports.compareWorkflowsNodes = compareWorkflowsNodes;
9
+ exports.stringContainsParts = stringContainsParts;
10
+ exports.parametersAreSuperset = parametersAreSuperset;
11
+ exports.determineNodeSize = determineNodeSize;
12
+ exports.groupWorkflows = groupWorkflows;
13
+ exports.hasNonPositionalChanges = hasNonPositionalChanges;
14
+ exports.hasCredentialChanges = hasCredentialChanges;
15
+ const isEqual_1 = __importDefault(require("lodash/isEqual"));
16
+ const pick_1 = __importDefault(require("lodash/pick"));
17
+ const connections_diff_1 = require("./connections-diff");
18
+ var NodeDiffStatus;
19
+ (function (NodeDiffStatus) {
20
+ NodeDiffStatus["Eq"] = "equal";
21
+ NodeDiffStatus["Modified"] = "modified";
22
+ NodeDiffStatus["Added"] = "added";
23
+ NodeDiffStatus["Deleted"] = "deleted";
24
+ })(NodeDiffStatus || (exports.NodeDiffStatus = NodeDiffStatus = {}));
25
+ function compareNodes(base, target) {
26
+ const propsToCompare = ['name', 'type', 'typeVersion', 'webhookId', 'credentials', 'parameters'];
27
+ const baseNode = (0, pick_1.default)(base, propsToCompare);
28
+ const targetNode = (0, pick_1.default)(target, propsToCompare);
29
+ return (0, isEqual_1.default)(baseNode, targetNode);
30
+ }
31
+ function compareWorkflowsNodes(base, target, nodesEqual = compareNodes) {
32
+ const baseNodes = base.reduce((acc, node) => {
33
+ acc.set(node.id, node);
34
+ return acc;
35
+ }, new Map());
36
+ const targetNodes = target.reduce((acc, node) => {
37
+ acc.set(node.id, node);
38
+ return acc;
39
+ }, new Map());
40
+ const diff = new Map();
41
+ for (const [id, node] of baseNodes.entries()) {
42
+ if (!targetNodes.has(id)) {
43
+ diff.set(id, { status: NodeDiffStatus.Deleted, node });
60
44
  }
61
- for (const [id, node] of targetNodes.entries()) {
62
- if (!baseNodes.has(id)) {
63
- diff.set(id, { status: NodeDiffStatus.Added, node });
64
- }
45
+ else if (!nodesEqual(baseNodes.get(id), targetNodes.get(id))) {
46
+ diff.set(id, { status: NodeDiffStatus.Modified, node });
65
47
  }
66
- return diff;
67
- }
68
- class WorkflowChangeSet {
69
- nodes;
70
- connections;
71
- constructor(from, to) {
72
- if (from === to) {
73
- // avoid expensive deep comparison
74
- this.nodes = new Map(from.nodes.map((node) => [node.id, { node, status: NodeDiffStatus.Eq }]));
75
- this.connections = { added: {}, removed: {} };
76
- }
77
- else {
78
- this.nodes = compareWorkflowsNodes(from.nodes, to.nodes);
79
- this.connections = (0, connections_diff_1.compareConnections)(from.connections, to.connections);
80
- }
48
+ else {
49
+ diff.set(id, { status: NodeDiffStatus.Eq, node });
81
50
  }
82
51
  }
83
- exports.WorkflowChangeSet = WorkflowChangeSet;
84
- /**
85
- * Returns true if `s` contains all characters of `substr` in order
86
- * e.g. s='abcde'
87
- * substr:
88
- * 'abde' -> true
89
- * 'abcd' -> false
90
- * 'abced' -> false
91
- */
92
- function stringContainsParts(s, substr) {
93
- if (substr.length > s.length)
94
- return false;
95
- const diffSize = s.length - substr.length;
96
- let marker = 0;
97
- for (let i = 0; i < s.length; ++i) {
98
- if (substr[marker] === s[i])
99
- marker++;
100
- if (i - marker > diffSize)
101
- return false;
52
+ for (const [id, node] of targetNodes.entries()) {
53
+ if (!baseNodes.has(id)) {
54
+ diff.set(id, { status: NodeDiffStatus.Added, node });
102
55
  }
103
- return marker >= substr.length;
104
56
  }
105
- function parametersAreSuperset(prev, next) {
106
- if (typeof prev !== typeof next)
107
- return false;
108
- if (typeof prev !== 'object' || !prev || !next) {
109
- if (typeof prev === 'string') {
110
- // We assert above that these are the same type
111
- return stringContainsParts(next, prev);
112
- }
113
- return prev === next;
57
+ return diff;
58
+ }
59
+ class WorkflowChangeSet {
60
+ nodes;
61
+ connections;
62
+ constructor(from, to) {
63
+ if (from === to) {
64
+ // avoid expensive deep comparison
65
+ this.nodes = new Map(from.nodes.map((node) => [node.id, { node, status: NodeDiffStatus.Eq }]));
66
+ this.connections = { added: {}, removed: {} };
114
67
  }
115
- if (Array.isArray(prev)) {
116
- if (!Array.isArray(next))
117
- return false;
118
- if (prev.length !== next.length)
119
- return false;
120
- return prev.every((v, i) => parametersAreSuperset(v, next[i]));
68
+ else {
69
+ this.nodes = compareWorkflowsNodes(from.nodes, to.nodes);
70
+ this.connections = (0, connections_diff_1.compareConnections)(from.connections, to.connections);
121
71
  }
122
- const params = Object.keys(prev);
123
- if (params.length !== Object.keys(next).length)
124
- return false;
125
- // abort if keys differ
126
- if (params.some((x) => !Object.prototype.hasOwnProperty.call(next, x)))
127
- return false;
128
- return params.every((key) => parametersAreSuperset(prev[key], next[key]));
129
72
  }
130
- /**
131
- * Determines whether the second node is a "superset" of the first one, i.e. whether no data
132
- * is lost if we were to replace `prev` with `next`.
133
- *
134
- * Specifically this is the case if
135
- * - Both nodes have the exact same keys
136
- * - All values are either strings where `next.x` contains `prev.x`, or hold the exact same value
137
- */
138
- function nodeIsSuperset(prevNode, nextNode) {
139
- const { parameters: prevParams, ...prev } = prevNode;
140
- const { parameters: nextParams, ...next } = nextNode;
141
- // abort if the nodes don't match besides parameters
142
- if (!compareNodes({ ...prev, parameters: {} }, { ...next, parameters: {} }))
73
+ }
74
+ exports.WorkflowChangeSet = WorkflowChangeSet;
75
+ /**
76
+ * Returns true if `s` contains all characters of `substr` in order
77
+ * e.g. s='abcde'
78
+ * substr:
79
+ * 'abde' -> true
80
+ * 'abcd' -> false
81
+ * 'abced' -> false
82
+ */
83
+ function stringContainsParts(s, substr) {
84
+ if (substr.length > s.length)
85
+ return false;
86
+ const diffSize = s.length - substr.length;
87
+ let marker = 0;
88
+ for (let i = 0; i < s.length; ++i) {
89
+ if (substr[marker] === s[i])
90
+ marker++;
91
+ if (i - marker > diffSize)
143
92
  return false;
144
- return parametersAreSuperset(prevParams, nextParams);
145
93
  }
146
- /**
147
- * Group changes are additive if they only add groups or group members,
148
- * i.e. no existing group, group name or group member may be removed.
149
- */
150
- function nodeGroupChangesAreAdditive(prev, next) {
151
- const nextGroupsById = new Map((next.nodeGroups ?? []).map((group) => [group.id, group]));
152
- for (const prevGroup of prev.nodeGroups ?? []) {
153
- const nextGroup = nextGroupsById.get(prevGroup.id);
154
- if (!nextGroup || nextGroup.name !== prevGroup.name) {
155
- return false;
156
- }
157
- const nextNodeIds = new Set(nextGroup.nodeIds);
158
- if (!prevGroup.nodeIds.every((id) => nextNodeIds.has(id))) {
159
- return false;
160
- }
94
+ return marker >= substr.length;
95
+ }
96
+ function parametersAreSuperset(prev, next) {
97
+ if (typeof prev !== typeof next)
98
+ return false;
99
+ if (typeof prev !== 'object' || !prev || !next) {
100
+ if (typeof prev === 'string') {
101
+ // We assert above that these are the same type
102
+ return stringContainsParts(next, prev);
161
103
  }
162
- return true;
104
+ return prev === next;
163
105
  }
164
- function mergeAdditiveChanges(prev, next, diff) {
165
- for (const d of diff.nodes.values()) {
166
- if (d.status === NodeDiffStatus.Deleted)
167
- return false;
168
- if (d.status === NodeDiffStatus.Added)
169
- continue;
170
- const nextNode = next.nodes.find((x) => x.id === d.node.id);
171
- if (!nextNode)
172
- throw new Error('invariant broken - no next node');
173
- if (d.status === NodeDiffStatus.Modified && !nodeIsSuperset(d.node, nextNode))
174
- return false;
175
- }
176
- if (Object.keys(diff.connections.removed).length > 0)
106
+ if (Array.isArray(prev)) {
107
+ if (!Array.isArray(next))
177
108
  return false;
178
- if (!nodeGroupChangesAreAdditive(prev, next))
109
+ if (prev.length !== next.length)
179
110
  return false;
180
- return true;
111
+ return prev.every((v, i) => parametersAreSuperset(v, next[i]));
181
112
  }
182
- // We want to avoid merging versions from different editing "sessions"
183
- //
184
- const makeSkipTimeDifference = (timeDiffMs) => {
185
- return (prev, next) => {
186
- const timeDifference = next.createdAt.getTime() - prev.createdAt.getTime();
187
- return Math.abs(timeDifference) > timeDiffMs;
188
- };
189
- };
190
- const makeMergeShortTimeSpan = (timeDiffMs) => {
191
- return (prev, next) => {
192
- const timeDifference = next.createdAt.getTime() - prev.createdAt.getTime();
193
- return Math.abs(timeDifference) < timeDiffMs;
194
- };
195
- };
196
- // Takes a mapping from minimumSize to the minimum time between versions and
197
- // applies the largest one applicable to the given workflow
198
- function makeMergeDependingOnSizeRule(mapping) {
199
- const pairs = [...mapping.entries()]
200
- .sort((a, b) => b[0] - a[0])
201
- .map(([count, time]) => [count, makeMergeShortTimeSpan(time)]);
202
- return (prev, next, _wcs, metaData) => {
203
- if (metaData.workflowSizeScore === undefined) {
204
- console.warn('Called mergeDependingOnSizeRule rule without providing required metaData');
205
- return false;
206
- }
207
- for (const [count, time] of pairs) {
208
- if (metaData.workflowSizeScore > count)
209
- return time(prev, next);
210
- }
113
+ const params = Object.keys(prev);
114
+ if (params.length !== Object.keys(next).length)
115
+ return false;
116
+ // abort if keys differ
117
+ if (params.some((x) => !Object.prototype.hasOwnProperty.call(next, x)))
118
+ return false;
119
+ return params.every((key) => parametersAreSuperset(prev[key], next[key]));
120
+ }
121
+ /**
122
+ * Determines whether the second node is a "superset" of the first one, i.e. whether no data
123
+ * is lost if we were to replace `prev` with `next`.
124
+ *
125
+ * Specifically this is the case if
126
+ * - Both nodes have the exact same keys
127
+ * - All values are either strings where `next.x` contains `prev.x`, or hold the exact same value
128
+ */
129
+ function nodeIsSuperset(prevNode, nextNode) {
130
+ const { parameters: prevParams, ...prev } = prevNode;
131
+ const { parameters: nextParams, ...next } = nextNode;
132
+ // abort if the nodes don't match besides parameters
133
+ if (!compareNodes({ ...prev, parameters: {} }, { ...next, parameters: {} }))
134
+ return false;
135
+ return parametersAreSuperset(prevParams, nextParams);
136
+ }
137
+ /**
138
+ * Group changes are additive if they only add groups or group members,
139
+ * i.e. no existing group, group name or group member may be removed.
140
+ */
141
+ function nodeGroupChangesAreAdditive(prev, next) {
142
+ const nextGroupsById = new Map((next.nodeGroups ?? []).map((group) => [group.id, group]));
143
+ for (const prevGroup of prev.nodeGroups ?? []) {
144
+ const nextGroup = nextGroupsById.get(prevGroup.id);
145
+ if (!nextGroup ||
146
+ nextGroup.name !== prevGroup.name ||
147
+ nextGroup.description !== prevGroup.description) {
211
148
  return false;
212
- };
149
+ }
150
+ const nextNodeIds = new Set(nextGroup.nodeIds);
151
+ if (!prevGroup.nodeIds.every((id) => nextNodeIds.has(id))) {
152
+ return false;
153
+ }
213
154
  }
214
- function skipDifferentUsers(prev, next) {
215
- return next.authors !== prev.authors;
155
+ return true;
156
+ }
157
+ function mergeAdditiveChanges(prev, next, diff) {
158
+ for (const d of diff.nodes.values()) {
159
+ if (d.status === NodeDiffStatus.Deleted)
160
+ return false;
161
+ if (d.status === NodeDiffStatus.Added)
162
+ continue;
163
+ const nextNode = next.nodes.find((x) => x.id === d.node.id);
164
+ if (!nextNode)
165
+ throw new Error('invariant broken - no next node');
166
+ if (d.status === NodeDiffStatus.Modified && !nodeIsSuperset(d.node, nextNode))
167
+ return false;
216
168
  }
217
- exports.RULES = {
218
- mergeAdditiveChanges,
219
- makeMergeDependingOnSizeRule,
169
+ if (Object.keys(diff.connections.removed).length > 0)
170
+ return false;
171
+ if (!nodeGroupChangesAreAdditive(prev, next))
172
+ return false;
173
+ return true;
174
+ }
175
+ // We want to avoid merging versions from different editing "sessions"
176
+ //
177
+ const makeSkipTimeDifference = (timeDiffMs) => {
178
+ return (prev, next) => {
179
+ const timeDifference = next.createdAt.getTime() - prev.createdAt.getTime();
180
+ return Math.abs(timeDifference) > timeDiffMs;
220
181
  };
221
- exports.SKIP_RULES = {
222
- makeSkipTimeDifference,
223
- skipDifferentUsers,
182
+ };
183
+ const makeMergeShortTimeSpan = (timeDiffMs) => {
184
+ return (prev, next) => {
185
+ const timeDifference = next.createdAt.getTime() - prev.createdAt.getTime();
186
+ return Math.abs(timeDifference) < timeDiffMs;
224
187
  };
225
- // Rough estimation of a node's size in abstract "character" count
226
- // Does not care about key names which do technically factor in when stringified
227
- function determineNodeSize(parameters) {
228
- if (!parameters)
229
- return 1;
230
- if (typeof parameters === 'string') {
231
- return parameters.length;
232
- }
233
- else if (typeof parameters !== 'object' || parameters instanceof Date) {
234
- return 1;
235
- }
236
- else if (Array.isArray(parameters)) {
237
- return parameters.reduce((acc, v) => acc + determineNodeSize(v), 1);
188
+ };
189
+ // Takes a mapping from minimumSize to the minimum time between versions and
190
+ // applies the largest one applicable to the given workflow
191
+ function makeMergeDependingOnSizeRule(mapping) {
192
+ const pairs = [...mapping.entries()]
193
+ .sort((a, b) => b[0] - a[0])
194
+ .map(([count, time]) => [count, makeMergeShortTimeSpan(time)]);
195
+ return (prev, next, _wcs, metaData) => {
196
+ if (metaData.workflowSizeScore === undefined) {
197
+ console.warn('Called mergeDependingOnSizeRule rule without providing required metaData');
198
+ return false;
238
199
  }
239
- else {
240
- // Record case
241
- return Object.values(parameters).reduce((acc, v) => acc + determineNodeSize(v), 1);
200
+ for (const [count, time] of pairs) {
201
+ if (metaData.workflowSizeScore > count)
202
+ return time(prev, next);
242
203
  }
204
+ return false;
205
+ };
206
+ }
207
+ function skipDifferentUsers(prev, next) {
208
+ return next.authors !== prev.authors;
209
+ }
210
+ exports.RULES = {
211
+ mergeAdditiveChanges,
212
+ makeMergeDependingOnSizeRule,
213
+ };
214
+ exports.SKIP_RULES = {
215
+ makeSkipTimeDifference,
216
+ skipDifferentUsers,
217
+ };
218
+ // Rough estimation of a node's size in abstract "character" count
219
+ // Does not care about key names which do technically factor in when stringified
220
+ function determineNodeSize(parameters) {
221
+ if (!parameters)
222
+ return 1;
223
+ if (typeof parameters === 'string') {
224
+ return parameters.length;
243
225
  }
244
- function determineNodeParametersSize(workflow) {
245
- return workflow.nodes.reduce((acc, x) => acc + determineNodeSize(x.parameters), 0);
226
+ else if (typeof parameters !== 'object' || parameters instanceof Date) {
227
+ return 1;
246
228
  }
247
- function groupWorkflows(workflows, rules, skipRules = [], metaDataFields) {
248
- if (workflows.length === 0)
249
- return { removed: [], remaining: [] };
250
- if (workflows.length === 1) {
251
- return {
252
- removed: [],
253
- remaining: workflows,
254
- };
255
- }
256
- const remaining = [...workflows];
257
- const removed = [];
258
- const n = remaining.length;
259
- const metaData = {
260
- // check latest and an "average" workflow to get a somewhat accurate representation
261
- // without counting through the entire history
262
- workflowSizeScore: metaDataFields?.workflowSizeScore
263
- ? Math.max(determineNodeParametersSize(workflows[Math.floor(workflows.length / 2)]), determineNodeParametersSize(workflows[workflows.length - 1]))
264
- : undefined,
229
+ else if (Array.isArray(parameters)) {
230
+ return parameters.reduce((acc, v) => acc + determineNodeSize(v), 1);
231
+ }
232
+ else {
233
+ // Record case
234
+ return Object.values(parameters).reduce((acc, v) => acc + determineNodeSize(v), 1);
235
+ }
236
+ }
237
+ function determineNodeParametersSize(workflow) {
238
+ return workflow.nodes.reduce((acc, x) => acc + determineNodeSize(x.parameters), 0);
239
+ }
240
+ function groupWorkflows(workflows, rules, skipRules = [], metaDataFields) {
241
+ if (workflows.length === 0)
242
+ return { removed: [], remaining: [] };
243
+ if (workflows.length === 1) {
244
+ return {
245
+ removed: [],
246
+ remaining: workflows,
265
247
  };
266
- diffLoop: for (let i = n - 1; i > 0; --i) {
267
- const wcs = new WorkflowChangeSet(remaining[i - 1], remaining[i]);
268
- for (const shouldSkip of skipRules) {
269
- if (shouldSkip(remaining[i - 1], remaining[i], wcs, metaData))
270
- continue diffLoop;
271
- }
272
- for (const rule of rules) {
273
- const shouldMerge = rule(remaining[i - 1], remaining[i], wcs, metaData);
274
- if (shouldMerge) {
275
- const left = remaining.splice(i - 1, 1)[0];
276
- removed.push(left);
277
- break;
278
- }
279
- }
280
- }
281
- return { removed, remaining };
282
248
  }
283
- /**
284
- * Checks if workflows have non-positional differences (changes to nodes or connections,
285
- * excluding position changes).
286
- * Returns true if there are meaningful changes, false if only positions changed.
287
- */
288
- function hasNonPositionalChanges(oldNodes, newNodes, oldConnections, newConnections) {
289
- // Check for node changes (compareNodes already excludes position)
290
- const nodesDiff = compareWorkflowsNodes(oldNodes, newNodes);
291
- for (const diff of nodesDiff.values()) {
292
- if (diff.status !== NodeDiffStatus.Eq) {
293
- return true;
249
+ const remaining = [...workflows];
250
+ const removed = [];
251
+ const n = remaining.length;
252
+ const metaData = {
253
+ // check latest and an "average" workflow to get a somewhat accurate representation
254
+ // without counting through the entire history
255
+ workflowSizeScore: metaDataFields?.workflowSizeScore
256
+ ? Math.max(determineNodeParametersSize(workflows[Math.floor(workflows.length / 2)]), determineNodeParametersSize(workflows[workflows.length - 1]))
257
+ : undefined,
258
+ };
259
+ diffLoop: for (let i = n - 1; i > 0; --i) {
260
+ const wcs = new WorkflowChangeSet(remaining[i - 1], remaining[i]);
261
+ for (const shouldSkip of skipRules) {
262
+ if (shouldSkip(remaining[i - 1], remaining[i], wcs, metaData))
263
+ continue diffLoop;
264
+ }
265
+ for (const rule of rules) {
266
+ const shouldMerge = rule(remaining[i - 1], remaining[i], wcs, metaData);
267
+ if (shouldMerge) {
268
+ const left = remaining.splice(i - 1, 1)[0];
269
+ removed.push(left);
270
+ break;
294
271
  }
295
272
  }
296
- // Check for connection changes (connections don't have position data)
297
- if (!(0, isEqual_1.default)(oldConnections, newConnections)) {
273
+ }
274
+ return { removed, remaining };
275
+ }
276
+ /**
277
+ * Checks if workflows have non-positional differences (changes to nodes or connections,
278
+ * excluding position changes).
279
+ * Returns true if there are meaningful changes, false if only positions changed.
280
+ */
281
+ function hasNonPositionalChanges(oldNodes, newNodes, oldConnections, newConnections) {
282
+ // Check for node changes (compareNodes already excludes position)
283
+ const nodesDiff = compareWorkflowsNodes(oldNodes, newNodes);
284
+ for (const diff of nodesDiff.values()) {
285
+ if (diff.status !== NodeDiffStatus.Eq) {
298
286
  return true;
299
287
  }
300
- return false;
301
288
  }
302
- /**
303
- * Checks if any credential IDs changed between old and new workflow nodes.
304
- * Compares node by node - returns true if for any node:
305
- * - A credential was added (new credential type not in old node)
306
- * - A credential was removed (old credential type not in new node)
307
- * - A credential was changed (same credential type but different credential ID)
308
- */
309
- function hasCredentialChanges(oldNodes, newNodes) {
310
- const newNodesMap = new Map(newNodes.map((node) => [node.id, node]));
311
- for (const oldNode of oldNodes) {
312
- const newNode = newNodesMap.get(oldNode.id);
313
- // Skip nodes that were deleted - deletion is not a credential change
314
- if (!newNode)
315
- continue;
316
- const oldCreds = oldNode.credentials ?? {};
317
- const newCreds = newNode.credentials ?? {};
318
- const oldCredTypes = Object.keys(oldCreds);
319
- const newCredTypes = Object.keys(newCreds);
320
- // Check for removed credentials (in old but not in new)
321
- for (const credType of oldCredTypes) {
322
- if (!(credType in newCreds)) {
323
- return true; // Credential removed
324
- }
325
- // Check for changed credentials (same type but different ID)
326
- if (oldCreds[credType]?.id !== newCreds[credType]?.id) {
327
- return true; // Credential changed
328
- }
289
+ // Check for connection changes (connections don't have position data)
290
+ if (!(0, isEqual_1.default)(oldConnections, newConnections)) {
291
+ return true;
292
+ }
293
+ return false;
294
+ }
295
+ /**
296
+ * Checks if any credential IDs changed between old and new workflow nodes.
297
+ * Compares node by node - returns true if for any node:
298
+ * - A credential was added (new credential type not in old node)
299
+ * - A credential was removed (old credential type not in new node)
300
+ * - A credential was changed (same credential type but different credential ID)
301
+ */
302
+ function hasCredentialChanges(oldNodes, newNodes) {
303
+ const newNodesMap = new Map(newNodes.map((node) => [node.id, node]));
304
+ for (const oldNode of oldNodes) {
305
+ const newNode = newNodesMap.get(oldNode.id);
306
+ // Skip nodes that were deleted - deletion is not a credential change
307
+ if (!newNode)
308
+ continue;
309
+ const oldCreds = oldNode.credentials ?? {};
310
+ const newCreds = newNode.credentials ?? {};
311
+ const oldCredTypes = Object.keys(oldCreds);
312
+ const newCredTypes = Object.keys(newCreds);
313
+ // Check for removed credentials (in old but not in new)
314
+ for (const credType of oldCredTypes) {
315
+ if (!(credType in newCreds)) {
316
+ return true; // Credential removed
329
317
  }
330
- // Check for added credentials (in new but not in old)
331
- for (const credType of newCredTypes) {
332
- if (!(credType in oldCreds)) {
333
- return true; // Credential added
334
- }
318
+ // Check for changed credentials (same type but different ID)
319
+ if (oldCreds[credType]?.id !== newCreds[credType]?.id) {
320
+ return true; // Credential changed
321
+ }
322
+ }
323
+ // Check for added credentials (in new but not in old)
324
+ for (const credType of newCredTypes) {
325
+ if (!(credType in oldCreds)) {
326
+ return true; // Credential added
335
327
  }
336
328
  }
337
- return false;
338
329
  }
339
- });
330
+ return false;
331
+ }
340
332
  //# sourceMappingURL=workflow-diff.js.map