n8n-nodes-base 1.92.0 → 1.94.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 (274) hide show
  1. package/dist/credentials/AirtopApi.credentials.js +2 -1
  2. package/dist/credentials/AirtopApi.credentials.js.map +1 -1
  3. package/dist/credentials/JinaAiApi.credentials.js +1 -1
  4. package/dist/credentials/JinaAiApi.credentials.js.map +1 -1
  5. package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js +0 -9
  6. package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js.map +1 -1
  7. package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js +13 -0
  8. package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js.map +1 -1
  9. package/dist/credentials/Snowflake.credentials.js +46 -2
  10. package/dist/credentials/Snowflake.credentials.js.map +1 -1
  11. package/dist/known/credentials.json +10 -1
  12. package/dist/known/nodes.json +20 -4
  13. package/dist/methods/defined.json +6 -0
  14. package/dist/methods/referenced.json +3 -0
  15. package/dist/nodes/Airtop/Airtop.node.js +14 -8
  16. package/dist/nodes/Airtop/Airtop.node.js.map +1 -1
  17. package/dist/nodes/Airtop/GenericFunctions.js +87 -15
  18. package/dist/nodes/Airtop/GenericFunctions.js.map +1 -1
  19. package/dist/nodes/Airtop/actions/common/fields.js +9 -0
  20. package/dist/nodes/Airtop/actions/common/fields.js.map +1 -1
  21. package/dist/nodes/Airtop/actions/common/output.utils.js +79 -0
  22. package/dist/nodes/Airtop/actions/common/output.utils.js.map +1 -0
  23. package/dist/nodes/Airtop/actions/common/session.utils.js +2 -2
  24. package/dist/nodes/Airtop/actions/common/session.utils.js.map +1 -1
  25. package/dist/nodes/Airtop/actions/extraction/getPaginated.operation.js +13 -4
  26. package/dist/nodes/Airtop/actions/extraction/getPaginated.operation.js.map +1 -1
  27. package/dist/nodes/Airtop/actions/extraction/query.operation.js +21 -3
  28. package/dist/nodes/Airtop/actions/extraction/query.operation.js.map +1 -1
  29. package/dist/nodes/Airtop/actions/extraction/scrape.operation.js +2 -1
  30. package/dist/nodes/Airtop/actions/extraction/scrape.operation.js.map +1 -1
  31. package/dist/nodes/Airtop/actions/file/File.resource.js +104 -0
  32. package/dist/nodes/Airtop/actions/file/File.resource.js.map +1 -0
  33. package/dist/nodes/Airtop/actions/file/delete.operation.js +60 -0
  34. package/dist/nodes/Airtop/actions/file/delete.operation.js.map +1 -0
  35. package/dist/nodes/Airtop/actions/file/get.operation.js +91 -0
  36. package/dist/nodes/Airtop/actions/file/get.operation.js.map +1 -0
  37. package/dist/nodes/Airtop/actions/file/getMany.operation.js +100 -0
  38. package/dist/nodes/Airtop/actions/file/getMany.operation.js.map +1 -0
  39. package/dist/nodes/Airtop/actions/file/helpers.js +199 -0
  40. package/dist/nodes/Airtop/actions/file/helpers.js.map +1 -0
  41. package/dist/nodes/Airtop/actions/file/load.operation.js +85 -0
  42. package/dist/nodes/Airtop/actions/file/load.operation.js.map +1 -0
  43. package/dist/nodes/Airtop/actions/file/upload.operation.js +186 -0
  44. package/dist/nodes/Airtop/actions/file/upload.operation.js.map +1 -0
  45. package/dist/nodes/Airtop/actions/interaction/Interaction.resource.js +22 -1
  46. package/dist/nodes/Airtop/actions/interaction/Interaction.resource.js.map +1 -1
  47. package/dist/nodes/Airtop/actions/interaction/fill.operation.js +89 -0
  48. package/dist/nodes/Airtop/actions/interaction/fill.operation.js.map +1 -0
  49. package/dist/nodes/Airtop/actions/interaction/scroll.operation.js +219 -0
  50. package/dist/nodes/Airtop/actions/interaction/scroll.operation.js.map +1 -0
  51. package/dist/nodes/Airtop/actions/node.type.js.map +1 -1
  52. package/dist/nodes/Airtop/actions/router.js +13 -4
  53. package/dist/nodes/Airtop/actions/router.js.map +1 -1
  54. package/dist/nodes/Airtop/actions/session/create.operation.js +85 -32
  55. package/dist/nodes/Airtop/actions/session/create.operation.js.map +1 -1
  56. package/dist/nodes/Airtop/actions/window/Window.resource.js +2 -1
  57. package/dist/nodes/Airtop/actions/window/Window.resource.js.map +1 -1
  58. package/dist/nodes/Airtop/actions/window/create.operation.js +1 -1
  59. package/dist/nodes/Airtop/actions/window/create.operation.js.map +1 -1
  60. package/dist/nodes/Airtop/actions/window/takeScreenshot.operation.js +26 -3
  61. package/dist/nodes/Airtop/actions/window/takeScreenshot.operation.js.map +1 -1
  62. package/dist/nodes/Airtop/constants.js +38 -5
  63. package/dist/nodes/Airtop/constants.js.map +1 -1
  64. package/dist/nodes/Airtop/countries.js +1026 -0
  65. package/dist/nodes/Airtop/countries.js.map +1 -0
  66. package/dist/nodes/Airtop/transport/index.js +6 -3
  67. package/dist/nodes/Airtop/transport/index.js.map +1 -1
  68. package/dist/nodes/Airtop/transport/types.js.map +1 -1
  69. package/dist/nodes/Aws/IAM/AwsIam.node.js +95 -0
  70. package/dist/nodes/Aws/IAM/AwsIam.node.js.map +1 -0
  71. package/dist/nodes/Aws/IAM/AwsIam.node.json +18 -0
  72. package/dist/nodes/Aws/IAM/AwsIam.svg +18 -0
  73. package/dist/nodes/Aws/IAM/descriptions/common.js +188 -0
  74. package/dist/nodes/Aws/IAM/descriptions/common.js.map +1 -0
  75. package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js +175 -0
  76. package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js.map +1 -0
  77. package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js +66 -0
  78. package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js.map +1 -0
  79. package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js +43 -0
  80. package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js.map +1 -0
  81. package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js +50 -0
  82. package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js.map +1 -0
  83. package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js +47 -0
  84. package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js.map +1 -0
  85. package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js +70 -0
  86. package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js.map +1 -0
  87. package/dist/nodes/Aws/IAM/descriptions/index.js +42 -0
  88. package/dist/nodes/Aws/IAM/descriptions/index.js.map +1 -0
  89. package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js +231 -0
  90. package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js.map +1 -0
  91. package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js +47 -0
  92. package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js.map +1 -0
  93. package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js +118 -0
  94. package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js.map +1 -0
  95. package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js +43 -0
  96. package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js.map +1 -0
  97. package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js +43 -0
  98. package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js.map +1 -0
  99. package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js +66 -0
  100. package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js.map +1 -0
  101. package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js +74 -0
  102. package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js.map +1 -0
  103. package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js +68 -0
  104. package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js.map +1 -0
  105. package/dist/nodes/Aws/IAM/helpers/constants.js +47 -0
  106. package/dist/nodes/Aws/IAM/helpers/constants.js.map +1 -0
  107. package/dist/nodes/Aws/IAM/helpers/errorHandler.js +90 -0
  108. package/dist/nodes/Aws/IAM/helpers/errorHandler.js.map +1 -0
  109. package/dist/nodes/Aws/IAM/helpers/types.js +17 -0
  110. package/dist/nodes/Aws/IAM/helpers/types.js.map +1 -0
  111. package/dist/nodes/Aws/IAM/helpers/utils.js +279 -0
  112. package/dist/nodes/Aws/IAM/helpers/utils.js.map +1 -0
  113. package/dist/nodes/Aws/IAM/methods/index.js +39 -0
  114. package/dist/nodes/Aws/IAM/methods/index.js.map +1 -0
  115. package/dist/nodes/Aws/IAM/methods/listSearch.js +132 -0
  116. package/dist/nodes/Aws/IAM/methods/listSearch.js.map +1 -0
  117. package/dist/nodes/Aws/IAM/transport/index.js +64 -0
  118. package/dist/nodes/Aws/IAM/transport/index.js.map +1 -0
  119. package/dist/nodes/Cron/Cron.node.js +1 -1
  120. package/dist/nodes/Cron/Cron.node.js.map +1 -1
  121. package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js +2 -2
  122. package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js.map +1 -1
  123. package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js +2 -2
  124. package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js.map +1 -1
  125. package/dist/nodes/Evaluation/Evaluation/Description.node.js +146 -0
  126. package/dist/nodes/Evaluation/Evaluation/Description.node.js.map +1 -0
  127. package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js +117 -0
  128. package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js.map +1 -0
  129. package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js +187 -0
  130. package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js.map +1 -0
  131. package/dist/nodes/Evaluation/methods/index.js +42 -0
  132. package/dist/nodes/Evaluation/methods/index.js.map +1 -0
  133. package/dist/nodes/Evaluation/methods/loadOptions.js +40 -0
  134. package/dist/nodes/Evaluation/methods/loadOptions.js.map +1 -0
  135. package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js +119 -0
  136. package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js.map +1 -0
  137. package/dist/nodes/Evaluation/utils/evaluationUtils.js +171 -0
  138. package/dist/nodes/Evaluation/utils/evaluationUtils.js.map +1 -0
  139. package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js +4 -3
  140. package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js.map +1 -1
  141. package/dist/nodes/Form/common.descriptions.js +2 -2
  142. package/dist/nodes/Form/common.descriptions.js.map +1 -1
  143. package/dist/nodes/Google/Drive/v2/actions/file/upload.operation.js +4 -1
  144. package/dist/nodes/Google/Drive/v2/actions/file/upload.operation.js.map +1 -1
  145. package/dist/nodes/Google/Firebase/CloudFirestore/GenericFunctions.js +1 -2
  146. package/dist/nodes/Google/Firebase/CloudFirestore/GenericFunctions.js.map +1 -1
  147. package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js +113 -107
  148. package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js.map +1 -1
  149. package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js +52 -106
  150. package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js.map +1 -1
  151. package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js +97 -0
  152. package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js.map +1 -0
  153. package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +20 -17
  154. package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
  155. package/dist/nodes/Google/YouTube/YouTube.node.js +4 -2
  156. package/dist/nodes/Google/YouTube/YouTube.node.js.map +1 -1
  157. package/dist/nodes/HttpRequest/GenericFunctions.js +1 -1
  158. package/dist/nodes/HttpRequest/GenericFunctions.js.map +1 -1
  159. package/dist/nodes/Interval/Interval.node.js +1 -1
  160. package/dist/nodes/Interval/Interval.node.js.map +1 -1
  161. package/dist/nodes/Jira/Jira.node.js +34 -15
  162. package/dist/nodes/Jira/Jira.node.js.map +1 -1
  163. package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js +2 -2
  164. package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js.map +1 -1
  165. package/dist/nodes/MQTT/MqttTrigger.node.js +2 -2
  166. package/dist/nodes/MQTT/MqttTrigger.node.js.map +1 -1
  167. package/dist/nodes/ManualTrigger/ManualTrigger.node.js +1 -1
  168. package/dist/nodes/ManualTrigger/ManualTrigger.node.js.map +1 -1
  169. package/dist/nodes/Merge/Merge.node.js +3 -2
  170. package/dist/nodes/Merge/Merge.node.js.map +1 -1
  171. package/dist/nodes/Merge/v3/actions/mode/combineBySql.js +42 -4
  172. package/dist/nodes/Merge/v3/actions/mode/combineBySql.js.map +1 -1
  173. package/dist/nodes/Merge/v3/actions/versionDescription.js +1 -1
  174. package/dist/nodes/Merge/v3/actions/versionDescription.js.map +1 -1
  175. package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js +93 -0
  176. package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js.map +1 -0
  177. package/dist/nodes/Microsoft/SharePoint/MicrosoftSharepoint.node.json +18 -0
  178. package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js +190 -0
  179. package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js.map +1 -0
  180. package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js +108 -0
  181. package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js.map +1 -0
  182. package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js +62 -0
  183. package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js.map +1 -0
  184. package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js +129 -0
  185. package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js.map +1 -0
  186. package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js +77 -0
  187. package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js.map +1 -0
  188. package/dist/nodes/Microsoft/SharePoint/descriptions/index.js +45 -0
  189. package/dist/nodes/Microsoft/SharePoint/descriptions/index.js.map +1 -0
  190. package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js +175 -0
  191. package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js.map +1 -0
  192. package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js +100 -0
  193. package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js.map +1 -0
  194. package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js +62 -0
  195. package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js.map +1 -0
  196. package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js +83 -0
  197. package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js.map +1 -0
  198. package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js +203 -0
  199. package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js.map +1 -0
  200. package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js +100 -0
  201. package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js.map +1 -0
  202. package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js +100 -0
  203. package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js.map +1 -0
  204. package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js +99 -0
  205. package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js.map +1 -0
  206. package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js +65 -0
  207. package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js.map +1 -0
  208. package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js +105 -0
  209. package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js.map +1 -0
  210. package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js +17 -0
  211. package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js.map +1 -0
  212. package/dist/nodes/Microsoft/SharePoint/helpers/utils.js +252 -0
  213. package/dist/nodes/Microsoft/SharePoint/helpers/utils.js.map +1 -0
  214. package/dist/nodes/Microsoft/SharePoint/methods/index.js +42 -0
  215. package/dist/nodes/Microsoft/SharePoint/methods/index.js.map +1 -0
  216. package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js +222 -0
  217. package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js.map +1 -0
  218. package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js +104 -0
  219. package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js.map +1 -0
  220. package/dist/nodes/Microsoft/SharePoint/test/credentials.js +54 -0
  221. package/dist/nodes/Microsoft/SharePoint/test/credentials.js.map +1 -0
  222. package/dist/nodes/Microsoft/SharePoint/transport/index.js +46 -0
  223. package/dist/nodes/Microsoft/SharePoint/transport/index.js.map +1 -0
  224. package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js +387 -0
  225. package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js.map +1 -0
  226. package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.json +18 -0
  227. package/dist/nodes/Microsoft/Teams/v2/helpers/types.js +17 -0
  228. package/dist/nodes/Microsoft/Teams/v2/helpers/types.js.map +1 -0
  229. package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js +147 -0
  230. package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js.map +1 -0
  231. package/dist/nodes/Microsoft/Teams/v2/transport/index.js.map +1 -1
  232. package/dist/nodes/MongoDb/GenericFunctions.js +9 -2
  233. package/dist/nodes/MongoDb/GenericFunctions.js.map +1 -1
  234. package/dist/nodes/MongoDb/MongoDb.node.js +25 -5
  235. package/dist/nodes/MongoDb/MongoDb.node.js.map +1 -1
  236. package/dist/nodes/PostBin/BinDescription.js +1 -1
  237. package/dist/nodes/PostBin/BinDescription.js.map +1 -1
  238. package/dist/nodes/PostBin/GenericFunctions.js +5 -5
  239. package/dist/nodes/PostBin/GenericFunctions.js.map +1 -1
  240. package/dist/nodes/PostBin/PostBin.node.js +1 -1
  241. package/dist/nodes/PostBin/PostBin.node.js.map +1 -1
  242. package/dist/nodes/PostBin/RequestDescription.js +2 -2
  243. package/dist/nodes/PostBin/RequestDescription.js.map +1 -1
  244. package/dist/nodes/Postgres/PostgresTrigger.node.js +2 -2
  245. package/dist/nodes/Postgres/PostgresTrigger.node.js.map +1 -1
  246. package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js +2 -2
  247. package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js.map +1 -1
  248. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js +8 -3
  249. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js.map +1 -1
  250. package/dist/nodes/RespondToWebhook/utils.js +43 -0
  251. package/dist/nodes/RespondToWebhook/utils.js.map +1 -0
  252. package/dist/nodes/Schedule/ScheduleTrigger.node.js +1 -1
  253. package/dist/nodes/Schedule/ScheduleTrigger.node.js.map +1 -1
  254. package/dist/nodes/Snowflake/GenericFunctions.js +34 -2
  255. package/dist/nodes/Snowflake/GenericFunctions.js.map +1 -1
  256. package/dist/nodes/Snowflake/Snowflake.node.js +5 -7
  257. package/dist/nodes/Snowflake/Snowflake.node.js.map +1 -1
  258. package/dist/nodes/SseTrigger/SseTrigger.node.js +2 -2
  259. package/dist/nodes/SseTrigger/SseTrigger.node.js.map +1 -1
  260. package/dist/nodes/Telegram/Telegram.node.js +5 -1
  261. package/dist/nodes/Telegram/Telegram.node.js.map +1 -1
  262. package/dist/nodes/Transform/Summarize/utils.js +2 -1
  263. package/dist/nodes/Transform/Summarize/utils.js.map +1 -1
  264. package/dist/test/setup.js +1 -0
  265. package/dist/test/setup.js.map +1 -1
  266. package/dist/types/credentials.json +7 -7
  267. package/dist/types/nodes.json +27 -23
  268. package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js +12 -2
  269. package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js.map +1 -1
  270. package/package.json +15 -12
  271. package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.js +0 -119
  272. package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.js.map +0 -1
  273. package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.json +0 -14
  274. /package/dist/{credentials/icons/SharePoint.svg → nodes/Microsoft/SharePoint/microsoftSharePoint.svg} +0 -0
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var EvaluationTrigger_node_ee_exports = {};
20
+ __export(EvaluationTrigger_node_ee_exports, {
21
+ EvaluationTrigger: () => EvaluationTrigger,
22
+ startingRow: () => startingRow
23
+ });
24
+ module.exports = __toCommonJS(EvaluationTrigger_node_ee_exports);
25
+ var import_n8n_workflow = require("n8n-workflow");
26
+ var import_GoogleSheetsTrigger = require("../../Google/Sheet/GoogleSheetsTrigger.node");
27
+ var import_read = require("../../Google/Sheet/v2/actions/sheet/read.operation");
28
+ var import_versionDescription = require("../../Google/Sheet/v2/actions/versionDescription");
29
+ var import_methods = require("../methods");
30
+ var import_evaluationTriggerUtils = require("../utils/evaluationTriggerUtils");
31
+ let startingRow = 2;
32
+ class EvaluationTrigger {
33
+ constructor() {
34
+ this.description = {
35
+ displayName: "Evaluation Trigger",
36
+ icon: "fa:check-double",
37
+ name: "evaluationTrigger",
38
+ group: ["trigger"],
39
+ version: 4.6,
40
+ description: "Run a test dataset through your workflow to check performance",
41
+ eventTriggerDescription: "",
42
+ defaults: {
43
+ name: "When fetching a dataset row",
44
+ color: "#c3c9d5"
45
+ },
46
+ inputs: [],
47
+ outputs: [import_n8n_workflow.NodeConnectionTypes.Main],
48
+ properties: [
49
+ {
50
+ displayName: 'Pulls a test dataset from a Google Sheet. The workflow will run once for each row, in sequence. Tips for wiring this node up <a href="https://docs.n8n.io/advanced-ai/evaluations/tips-and-common-issues/#combining-multiple-triggers">here</a>.',
51
+ name: "notice",
52
+ type: "notice",
53
+ default: ""
54
+ },
55
+ {
56
+ displayName: "Credentials",
57
+ name: "credentials",
58
+ type: "credentials",
59
+ default: ""
60
+ },
61
+ import_versionDescription.authentication,
62
+ {
63
+ ...import_GoogleSheetsTrigger.document,
64
+ displayName: "Document Containing Dataset",
65
+ hint: 'Example dataset format <a href="https://docs.google.com/spreadsheets/d/1vD_IdeFUg7sHsK9okL6Doy1rGOkWTnPJV3Dro4FBUsY/edit?gid=0#gid=0">here</a>'
66
+ },
67
+ { ...import_GoogleSheetsTrigger.sheet, displayName: "Sheet Containing Dataset" },
68
+ {
69
+ displayName: "Limit Rows",
70
+ name: "limitRows",
71
+ type: "boolean",
72
+ default: false,
73
+ noDataExpression: true,
74
+ description: "Whether to limit number of rows to process"
75
+ },
76
+ {
77
+ displayName: "Max Rows to Process",
78
+ name: "maxRows",
79
+ type: "number",
80
+ default: 10,
81
+ description: "Maximum number of rows to process",
82
+ noDataExpression: false,
83
+ displayOptions: { show: { limitRows: [true] } }
84
+ },
85
+ import_read.readFilter
86
+ ],
87
+ codex: {
88
+ alias: ["Test", "Metrics", "Evals", "Set Output", "Set Metrics"]
89
+ },
90
+ credentials: [
91
+ {
92
+ name: "googleApi",
93
+ required: true,
94
+ displayOptions: {
95
+ show: {
96
+ authentication: ["serviceAccount"]
97
+ }
98
+ },
99
+ testedBy: "googleApiCredentialTest"
100
+ },
101
+ {
102
+ name: "googleSheetsOAuth2Api",
103
+ required: true,
104
+ displayOptions: {
105
+ show: {
106
+ authentication: ["oAuth2"]
107
+ }
108
+ }
109
+ }
110
+ ]
111
+ };
112
+ this.methods = { loadOptions: import_methods.loadOptions, listSearch: import_methods.listSearch };
113
+ }
114
+ async execute(startRow) {
115
+ if (startRow) {
116
+ startingRow = startRow;
117
+ }
118
+ const inputData = this.getInputData();
119
+ const MAX_ROWS = 1e3;
120
+ const maxRows = this.getNodeParameter("limitRows", 0) ? this.getNodeParameter("maxRows", 0) + 1 : MAX_ROWS;
121
+ const rangeOptions = {
122
+ rangeDefinition: "specifyRange",
123
+ headerRow: 1,
124
+ firstDataRow: startingRow
125
+ };
126
+ const googleSheetInstance = import_evaluationTriggerUtils.getGoogleSheet.call(this);
127
+ const googleSheet = await import_evaluationTriggerUtils.getSheet.call(this, googleSheetInstance);
128
+ const allRows = await import_evaluationTriggerUtils.getResults.call(this, [], googleSheetInstance, googleSheet, rangeOptions);
129
+ if (inputData[0].json.requestDataset) {
130
+ const testRunnerResult = await import_evaluationTriggerUtils.getResults.call(
131
+ this,
132
+ [],
133
+ googleSheetInstance,
134
+ googleSheet,
135
+ {}
136
+ );
137
+ const result = testRunnerResult.filter((row) => row?.json?.row_number <= maxRows);
138
+ return [result];
139
+ }
140
+ const hasFilter = this.getNodeParameter("filtersUI.values", 0, []);
141
+ if (hasFilter.length > 0) {
142
+ const currentRow = allRows[0];
143
+ const currentRowNumber = currentRow.json?.row_number;
144
+ if (currentRow === void 0) {
145
+ startingRow = 2;
146
+ throw new import_n8n_workflow.NodeOperationError(this.getNode(), "No row found");
147
+ }
148
+ const rowsLeft = await import_evaluationTriggerUtils.getNumberOfRowsLeftFiltered.call(
149
+ this,
150
+ googleSheetInstance,
151
+ googleSheet.title,
152
+ currentRowNumber + 1,
153
+ maxRows
154
+ );
155
+ currentRow.json._rowsLeft = rowsLeft;
156
+ startingRow = currentRowNumber + 1;
157
+ if (rowsLeft === 0) {
158
+ startingRow = 2;
159
+ }
160
+ return [[currentRow]];
161
+ } else {
162
+ const currentRow = allRows.find((row) => row?.json?.row_number === startingRow);
163
+ const rowsLeft = await import_evaluationTriggerUtils.getRowsLeft.call(
164
+ this,
165
+ googleSheetInstance,
166
+ googleSheet.title,
167
+ `${googleSheet.title}!${startingRow}:${maxRows}`
168
+ );
169
+ if (currentRow === void 0) {
170
+ startingRow = 2;
171
+ throw new import_n8n_workflow.NodeOperationError(this.getNode(), "No row found");
172
+ }
173
+ currentRow.json._rowsLeft = rowsLeft;
174
+ startingRow += 1;
175
+ if (rowsLeft === 0) {
176
+ startingRow = 2;
177
+ }
178
+ return [[currentRow]];
179
+ }
180
+ }
181
+ }
182
+ // Annotate the CommonJS export names for ESM import in node:
183
+ 0 && (module.exports = {
184
+ EvaluationTrigger,
185
+ startingRow
186
+ });
187
+ //# sourceMappingURL=EvaluationTrigger.node.ee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-filename-against-convention */\nimport type {\n\tINodeType,\n\tINodeTypeDescription,\n\tIExecuteFunctions,\n\tINodeExecutionData,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nimport { document, sheet } from '../../Google/Sheet/GoogleSheetsTrigger.node';\nimport { readFilter } from '../../Google/Sheet/v2/actions/sheet/read.operation';\nimport { authentication } from '../../Google/Sheet/v2/actions/versionDescription';\nimport type { ILookupValues } from '../../Google/Sheet/v2/helpers/GoogleSheets.types';\nimport { listSearch, loadOptions } from '../methods';\nimport {\n\tgetGoogleSheet,\n\tgetResults,\n\tgetRowsLeft,\n\tgetNumberOfRowsLeftFiltered,\n\tgetSheet,\n} from '../utils/evaluationTriggerUtils';\n\nexport let startingRow = 2;\n\nexport class EvaluationTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Evaluation Trigger',\n\t\ticon: 'fa:check-double',\n\t\tname: 'evaluationTrigger',\n\t\tgroup: ['trigger'],\n\t\tversion: 4.6,\n\t\tdescription: 'Run a test dataset through your workflow to check performance',\n\t\teventTriggerDescription: '',\n\t\tdefaults: {\n\t\t\tname: 'When fetching a dataset row',\n\t\t\tcolor: '#c3c9d5',\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'Pulls a test dataset from a Google Sheet. The workflow will run once for each row, in sequence. Tips for wiring this node up <a href=\"https://docs.n8n.io/advanced-ai/evaluations/tips-and-common-issues/#combining-multiple-triggers\">here</a>.',\n\t\t\t\tname: 'notice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Credentials',\n\t\t\t\tname: 'credentials',\n\t\t\t\ttype: 'credentials',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\tauthentication,\n\t\t\t{\n\t\t\t\t...document,\n\t\t\t\tdisplayName: 'Document Containing Dataset',\n\t\t\t\thint: 'Example dataset format <a href=\"https://docs.google.com/spreadsheets/d/1vD_IdeFUg7sHsK9okL6Doy1rGOkWTnPJV3Dro4FBUsY/edit?gid=0#gid=0\">here</a>',\n\t\t\t},\n\t\t\t{ ...sheet, displayName: 'Sheet Containing Dataset' },\n\t\t\t{\n\t\t\t\tdisplayName: 'Limit Rows',\n\t\t\t\tname: 'limitRows',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tnoDataExpression: true,\n\t\t\t\tdescription: 'Whether to limit number of rows to process',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Max Rows to Process',\n\t\t\t\tname: 'maxRows',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 10,\n\t\t\t\tdescription: 'Maximum number of rows to process',\n\t\t\t\tnoDataExpression: false,\n\t\t\t\tdisplayOptions: { show: { limitRows: [true] } },\n\t\t\t},\n\t\t\treadFilter,\n\t\t],\n\t\tcodex: {\n\t\t\talias: ['Test', 'Metrics', 'Evals', 'Set Output', 'Set Metrics'],\n\t\t},\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'googleApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tauthentication: ['serviceAccount'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\ttestedBy: 'googleApiCredentialTest',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'googleSheetsOAuth2Api',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tauthentication: ['oAuth2'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t};\n\n\tmethods = { loadOptions, listSearch };\n\n\tasync execute(this: IExecuteFunctions, startRow?: number): Promise<INodeExecutionData[][]> {\n\t\t// We need to allow tests to reset the startingRow\n\t\tif (startRow) {\n\t\t\tstartingRow = startRow;\n\t\t}\n\n\t\tconst inputData = this.getInputData();\n\n\t\tconst MAX_ROWS = 1000;\n\n\t\tconst maxRows = this.getNodeParameter('limitRows', 0)\n\t\t\t? (this.getNodeParameter('maxRows', 0) as number) + 1\n\t\t\t: MAX_ROWS;\n\n\t\tconst rangeOptions = {\n\t\t\trangeDefinition: 'specifyRange',\n\t\t\theaderRow: 1,\n\t\t\tfirstDataRow: startingRow,\n\t\t};\n\n\t\tconst googleSheetInstance = getGoogleSheet.call(this);\n\n\t\tconst googleSheet = await getSheet.call(this, googleSheetInstance);\n\n\t\tconst allRows = await getResults.call(this, [], googleSheetInstance, googleSheet, rangeOptions);\n\n\t\t// This is for test runner which requires a different return format\n\t\tif (inputData[0].json.requestDataset) {\n\t\t\tconst testRunnerResult = await getResults.call(\n\t\t\t\tthis,\n\t\t\t\t[],\n\t\t\t\tgoogleSheetInstance,\n\t\t\t\tgoogleSheet,\n\t\t\t\t{},\n\t\t\t);\n\n\t\t\tconst result = testRunnerResult.filter((row) => (row?.json?.row_number as number) <= maxRows);\n\n\t\t\treturn [result];\n\t\t}\n\n\t\tconst hasFilter = this.getNodeParameter('filtersUI.values', 0, []) as ILookupValues[];\n\n\t\tif (hasFilter.length > 0) {\n\t\t\tconst currentRow = allRows[0];\n\t\t\tconst currentRowNumber = currentRow.json?.row_number as number;\n\n\t\t\tif (currentRow === undefined) {\n\t\t\t\tstartingRow = 2;\n\n\t\t\t\tthrow new NodeOperationError(this.getNode(), 'No row found');\n\t\t\t}\n\n\t\t\tconst rowsLeft = await getNumberOfRowsLeftFiltered.call(\n\t\t\t\tthis,\n\t\t\t\tgoogleSheetInstance,\n\t\t\t\tgoogleSheet.title,\n\t\t\t\tcurrentRowNumber + 1,\n\t\t\t\tmaxRows,\n\t\t\t);\n\n\t\t\tcurrentRow.json._rowsLeft = rowsLeft;\n\n\t\t\tstartingRow = currentRowNumber + 1;\n\n\t\t\tif (rowsLeft === 0) {\n\t\t\t\tstartingRow = 2;\n\t\t\t}\n\n\t\t\treturn [[currentRow]];\n\t\t} else {\n\t\t\tconst currentRow = allRows.find((row) => (row?.json?.row_number as number) === startingRow);\n\n\t\t\tconst rowsLeft = await getRowsLeft.call(\n\t\t\t\tthis,\n\t\t\t\tgoogleSheetInstance,\n\t\t\t\tgoogleSheet.title,\n\t\t\t\t`${googleSheet.title}!${startingRow}:${maxRows}`,\n\t\t\t);\n\n\t\t\tif (currentRow === undefined) {\n\t\t\t\tstartingRow = 2;\n\n\t\t\t\tthrow new NodeOperationError(this.getNode(), 'No row found');\n\t\t\t}\n\n\t\t\tcurrentRow.json._rowsLeft = rowsLeft;\n\n\t\t\tstartingRow += 1;\n\n\t\t\tif (rowsLeft === 0) {\n\t\t\t\tstartingRow = 2;\n\t\t\t}\n\n\t\t\treturn [[currentRow]];\n\t\t}\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var methods_exports = {};
30
+ __export(methods_exports, {
31
+ listSearch: () => listSearch,
32
+ loadOptions: () => loadOptions
33
+ });
34
+ module.exports = __toCommonJS(methods_exports);
35
+ var loadOptions = __toESM(require("./loadOptions"));
36
+ var listSearch = __toESM(require("./../../Google/Sheet/v2/methods/listSearch"));
37
+ // Annotate the CommonJS export names for ESM import in node:
38
+ 0 && (module.exports = {
39
+ listSearch,
40
+ loadOptions
41
+ });
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/Evaluation/methods/index.ts"],"sourcesContent":["export * as loadOptions from './loadOptions';\nexport * as listSearch from './../../Google/Sheet/v2/methods/listSearch';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B;AAC7B,iBAA4B;","names":[]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var loadOptions_exports = {};
20
+ __export(loadOptions_exports, {
21
+ getSheetHeaderRowWithGeneratedColumnNames: () => getSheetHeaderRowWithGeneratedColumnNames
22
+ });
23
+ module.exports = __toCommonJS(loadOptions_exports);
24
+ var import_loadOptions = require("../../Google/Sheet/v2/methods/loadOptions");
25
+ async function getSheetHeaderRowWithGeneratedColumnNames() {
26
+ const returnData = await import_loadOptions.getSheetHeaderRow.call(this);
27
+ return returnData.map((column, i) => {
28
+ if (column.value !== "") return column;
29
+ const indexBasedValue = `col_${i + 1}`;
30
+ return {
31
+ name: indexBasedValue,
32
+ value: indexBasedValue
33
+ };
34
+ });
35
+ }
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ getSheetHeaderRowWithGeneratedColumnNames
39
+ });
40
+ //# sourceMappingURL=loadOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/Evaluation/methods/loadOptions.ts"],"sourcesContent":["import type { ILoadOptionsFunctions, INodePropertyOptions } from 'n8n-workflow';\n\nimport { getSheetHeaderRow } from '../../Google/Sheet/v2/methods/loadOptions';\n\nexport async function getSheetHeaderRowWithGeneratedColumnNames(\n\tthis: ILoadOptionsFunctions,\n): Promise<INodePropertyOptions[]> {\n\tconst returnData = await getSheetHeaderRow.call(this);\n\treturn returnData.map((column, i) => {\n\t\tif (column.value !== '') return column;\n\t\tconst indexBasedValue = `col_${i + 1}`;\n\t\treturn {\n\t\t\tname: indexBasedValue,\n\t\t\tvalue: indexBasedValue,\n\t\t};\n\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,yBAAkC;AAElC,eAAsB,4CAEa;AAClC,QAAM,aAAa,MAAM,qCAAkB,KAAK,IAAI;AACpD,SAAO,WAAW,IAAI,CAAC,QAAQ,MAAM;AACpC,QAAI,OAAO,UAAU,GAAI,QAAO;AAChC,UAAM,kBAAkB,OAAO,IAAI,CAAC;AACpC,WAAO;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,EACD,CAAC;AACF;","names":[]}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var evaluationTriggerUtils_exports = {};
20
+ __export(evaluationTriggerUtils_exports, {
21
+ getFilteredResults: () => getFilteredResults,
22
+ getGoogleSheet: () => getGoogleSheet,
23
+ getNumberOfRowsLeftFiltered: () => getNumberOfRowsLeftFiltered,
24
+ getResults: () => getResults,
25
+ getRowsLeft: () => getRowsLeft,
26
+ getSheet: () => getSheet
27
+ });
28
+ module.exports = __toCommonJS(evaluationTriggerUtils_exports);
29
+ var import_readOperation = require("../../Google/Sheet/v2/actions/utils/readOperation");
30
+ var import_GoogleSheet = require("../../Google/Sheet/v2/helpers/GoogleSheet");
31
+ var import_GoogleSheets = require("../../Google/Sheet/v2/helpers/GoogleSheets.utils");
32
+ async function getSheet(googleSheet) {
33
+ const sheetWithinDocument = this.getNodeParameter("sheetName", 0, void 0, {
34
+ extractValue: true
35
+ });
36
+ const { mode: sheetMode } = this.getNodeParameter("sheetName", 0);
37
+ return await googleSheet.spreadsheetGetSheet(this.getNode(), sheetMode, sheetWithinDocument);
38
+ }
39
+ function getGoogleSheet() {
40
+ const { mode, value } = this.getNodeParameter("documentId", 0);
41
+ const spreadsheetId = (0, import_GoogleSheets.getSpreadsheetId)(this.getNode(), mode, value);
42
+ const googleSheet = new import_GoogleSheet.GoogleSheet(spreadsheetId, this);
43
+ return googleSheet;
44
+ }
45
+ async function getFilteredResults(operationResult, googleSheet, result, startingRow, endingRow) {
46
+ const sheetName = result.title;
47
+ operationResult = await import_readOperation.readSheet.call(
48
+ this,
49
+ googleSheet,
50
+ sheetName,
51
+ 0,
52
+ operationResult,
53
+ this.getNode().typeVersion,
54
+ [],
55
+ void 0,
56
+ {
57
+ rangeDefinition: "specifyRange",
58
+ headerRow: 1,
59
+ firstDataRow: startingRow
60
+ }
61
+ );
62
+ return operationResult.filter((row) => row?.json?.row_number <= endingRow);
63
+ }
64
+ async function getNumberOfRowsLeftFiltered(googleSheet, sheetName, startingRow, endingRow) {
65
+ const remainderSheet = await import_readOperation.readSheet.call(
66
+ this,
67
+ googleSheet,
68
+ sheetName,
69
+ 0,
70
+ [],
71
+ this.getNode().typeVersion,
72
+ [],
73
+ void 0,
74
+ {
75
+ rangeDefinition: "specifyRange",
76
+ headerRow: 1,
77
+ firstDataRow: startingRow
78
+ }
79
+ );
80
+ return remainderSheet.filter((row) => row?.json?.row_number <= endingRow).length;
81
+ }
82
+ async function getResults(operationResult, googleSheet, result, rangeOptions) {
83
+ const sheetName = result.title;
84
+ operationResult = await import_readOperation.readSheet.call(
85
+ this,
86
+ googleSheet,
87
+ sheetName,
88
+ 0,
89
+ operationResult,
90
+ this.getNode().typeVersion,
91
+ [],
92
+ void 0,
93
+ rangeOptions
94
+ );
95
+ return operationResult;
96
+ }
97
+ async function getRowsLeft(googleSheet, sheetName, rangeString) {
98
+ const remainderSheet = await import_readOperation.readSheet.call(
99
+ this,
100
+ googleSheet,
101
+ sheetName,
102
+ 0,
103
+ [],
104
+ this.getNode().typeVersion,
105
+ [],
106
+ rangeString
107
+ );
108
+ return remainderSheet.length;
109
+ }
110
+ // Annotate the CommonJS export names for ESM import in node:
111
+ 0 && (module.exports = {
112
+ getFilteredResults,
113
+ getGoogleSheet,
114
+ getNumberOfRowsLeftFiltered,
115
+ getResults,
116
+ getRowsLeft,
117
+ getSheet
118
+ });
119
+ //# sourceMappingURL=evaluationTriggerUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/Evaluation/utils/evaluationTriggerUtils.ts"],"sourcesContent":["import type { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';\n\nimport { readSheet } from '../../Google/Sheet/v2/actions/utils/readOperation';\nimport { GoogleSheet } from '../../Google/Sheet/v2/helpers/GoogleSheet';\nimport type { ResourceLocator } from '../../Google/Sheet/v2/helpers/GoogleSheets.types';\nimport { getSpreadsheetId } from '../../Google/Sheet/v2/helpers/GoogleSheets.utils';\n\nexport async function getSheet(\n\tthis: IExecuteFunctions,\n\tgoogleSheet: GoogleSheet,\n): Promise<{\n\ttitle: string;\n\tsheetId: number;\n}> {\n\tconst sheetWithinDocument = this.getNodeParameter('sheetName', 0, undefined, {\n\t\textractValue: true,\n\t}) as string;\n\tconst { mode: sheetMode } = this.getNodeParameter('sheetName', 0) as {\n\t\tmode: ResourceLocator;\n\t};\n\n\treturn await googleSheet.spreadsheetGetSheet(this.getNode(), sheetMode, sheetWithinDocument);\n}\n\nexport function getGoogleSheet(this: IExecuteFunctions) {\n\tconst { mode, value } = this.getNodeParameter('documentId', 0) as IDataObject;\n\tconst spreadsheetId = getSpreadsheetId(this.getNode(), mode as ResourceLocator, value as string);\n\n\tconst googleSheet = new GoogleSheet(spreadsheetId, this);\n\n\treturn googleSheet;\n}\n\nexport async function getFilteredResults(\n\tthis: IExecuteFunctions,\n\toperationResult: INodeExecutionData[],\n\tgoogleSheet: GoogleSheet,\n\tresult: { title: string; sheetId: number },\n\tstartingRow: number,\n\tendingRow: number,\n): Promise<INodeExecutionData[]> {\n\tconst sheetName = result.title;\n\n\toperationResult = await readSheet.call(\n\t\tthis,\n\t\tgoogleSheet,\n\t\tsheetName,\n\t\t0,\n\t\toperationResult,\n\t\tthis.getNode().typeVersion,\n\t\t[],\n\t\tundefined,\n\t\t{\n\t\t\trangeDefinition: 'specifyRange',\n\t\t\theaderRow: 1,\n\t\t\tfirstDataRow: startingRow,\n\t\t},\n\t);\n\n\treturn operationResult.filter((row) => (row?.json?.row_number as number) <= endingRow);\n}\n\nexport async function getNumberOfRowsLeftFiltered(\n\tthis: IExecuteFunctions,\n\tgoogleSheet: GoogleSheet,\n\tsheetName: string,\n\tstartingRow: number,\n\tendingRow: number,\n) {\n\tconst remainderSheet: INodeExecutionData[] = await readSheet.call(\n\t\tthis,\n\t\tgoogleSheet,\n\t\tsheetName,\n\t\t0,\n\t\t[],\n\t\tthis.getNode().typeVersion,\n\t\t[],\n\t\tundefined,\n\t\t{\n\t\t\trangeDefinition: 'specifyRange',\n\t\t\theaderRow: 1,\n\t\t\tfirstDataRow: startingRow,\n\t\t},\n\t);\n\n\treturn remainderSheet.filter((row) => (row?.json?.row_number as number) <= endingRow).length;\n}\n\nexport async function getResults(\n\tthis: IExecuteFunctions,\n\toperationResult: INodeExecutionData[],\n\tgoogleSheet: GoogleSheet,\n\tresult: { title: string; sheetId: number },\n\trangeOptions: IDataObject,\n): Promise<INodeExecutionData[]> {\n\tconst sheetName = result.title;\n\n\toperationResult = await readSheet.call(\n\t\tthis,\n\t\tgoogleSheet,\n\t\tsheetName,\n\t\t0,\n\t\toperationResult,\n\t\tthis.getNode().typeVersion,\n\t\t[],\n\t\tundefined,\n\t\trangeOptions,\n\t);\n\n\treturn operationResult;\n}\n\nexport async function getRowsLeft(\n\tthis: IExecuteFunctions,\n\tgoogleSheet: GoogleSheet,\n\tsheetName: string,\n\trangeString: string,\n) {\n\tconst remainderSheet: INodeExecutionData[] = await readSheet.call(\n\t\tthis,\n\t\tgoogleSheet,\n\t\tsheetName,\n\t\t0,\n\t\t[],\n\t\tthis.getNode().typeVersion,\n\t\t[],\n\t\trangeString,\n\t);\n\n\treturn remainderSheet.length;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,2BAA0B;AAC1B,yBAA4B;AAE5B,0BAAiC;AAEjC,eAAsB,SAErB,aAIE;AACF,QAAM,sBAAsB,KAAK,iBAAiB,aAAa,GAAG,QAAW;AAAA,IAC5E,cAAc;AAAA,EACf,CAAC;AACD,QAAM,EAAE,MAAM,UAAU,IAAI,KAAK,iBAAiB,aAAa,CAAC;AAIhE,SAAO,MAAM,YAAY,oBAAoB,KAAK,QAAQ,GAAG,WAAW,mBAAmB;AAC5F;AAEO,SAAS,iBAAwC;AACvD,QAAM,EAAE,MAAM,MAAM,IAAI,KAAK,iBAAiB,cAAc,CAAC;AAC7D,QAAM,oBAAgB,sCAAiB,KAAK,QAAQ,GAAG,MAAyB,KAAe;AAE/F,QAAM,cAAc,IAAI,+BAAY,eAAe,IAAI;AAEvD,SAAO;AACR;AAEA,eAAsB,mBAErB,iBACA,aACA,QACA,aACA,WACgC;AAChC,QAAM,YAAY,OAAO;AAEzB,oBAAkB,MAAM,+BAAU;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK,QAAQ,EAAE;AAAA,IACf,CAAC;AAAA,IACD;AAAA,IACA;AAAA,MACC,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,cAAc;AAAA,IACf;AAAA,EACD;AAEA,SAAO,gBAAgB,OAAO,CAAC,QAAS,KAAK,MAAM,cAAyB,SAAS;AACtF;AAEA,eAAsB,4BAErB,aACA,WACA,aACA,WACC;AACD,QAAM,iBAAuC,MAAM,+BAAU;AAAA,IAC5D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,IACD,KAAK,QAAQ,EAAE;AAAA,IACf,CAAC;AAAA,IACD;AAAA,IACA;AAAA,MACC,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,cAAc;AAAA,IACf;AAAA,EACD;AAEA,SAAO,eAAe,OAAO,CAAC,QAAS,KAAK,MAAM,cAAyB,SAAS,EAAE;AACvF;AAEA,eAAsB,WAErB,iBACA,aACA,QACA,cACgC;AAChC,QAAM,YAAY,OAAO;AAEzB,oBAAkB,MAAM,+BAAU;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK,QAAQ,EAAE;AAAA,IACf,CAAC;AAAA,IACD;AAAA,IACA;AAAA,EACD;AAEA,SAAO;AACR;AAEA,eAAsB,YAErB,aACA,WACA,aACC;AACD,QAAM,iBAAuC,MAAM,+BAAU;AAAA,IAC5D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,IACD,KAAK,QAAQ,EAAE;AAAA,IACf,CAAC;AAAA,IACD;AAAA,EACD;AAEA,SAAO,eAAe;AACvB;","names":[]}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var evaluationUtils_exports = {};
20
+ __export(evaluationUtils_exports, {
21
+ checkIfEvaluating: () => checkIfEvaluating,
22
+ setMetrics: () => setMetrics,
23
+ setOutput: () => setOutput,
24
+ setOutputs: () => setOutputs
25
+ });
26
+ module.exports = __toCommonJS(evaluationUtils_exports);
27
+ var import_n8n_workflow = require("n8n-workflow");
28
+ var import_evaluationTriggerUtils = require("./evaluationTriggerUtils");
29
+ var import_utils = require("../../Set/v2/helpers/utils");
30
+ async function setOutput() {
31
+ const evaluationNode = this.getNode();
32
+ const parentNodes = this.getParentNodes(evaluationNode.name);
33
+ const evalTrigger = parentNodes.find((node) => node.type === "n8n-nodes-base.evaluationTrigger");
34
+ const evalTriggerOutput = evalTrigger ? this.evaluateExpression(`{{ $('${evalTrigger?.name}').isExecuted }}`, 0) : void 0;
35
+ if (!evalTrigger || !evalTriggerOutput) {
36
+ this.addExecutionHints({
37
+ message: "No outputs were set since the execution didn't start from an evaluation trigger",
38
+ location: "outputPane"
39
+ });
40
+ return [this.getInputData()];
41
+ }
42
+ const outputFields = this.getNodeParameter("outputs.values", 0, []);
43
+ if (outputFields.length === 0) {
44
+ throw new import_n8n_workflow.UserError("No outputs to set", {
45
+ description: "Add outputs to write back to the Google Sheet using the \u2018Add Output\u2019 button"
46
+ });
47
+ }
48
+ const googleSheetInstance = import_evaluationTriggerUtils.getGoogleSheet.call(this);
49
+ const googleSheet = await import_evaluationTriggerUtils.getSheet.call(this, googleSheetInstance);
50
+ const evaluationTrigger = this.evaluateExpression(
51
+ `{{ $('${evalTrigger.name}').first().json }}`,
52
+ 0
53
+ );
54
+ const rowNumber = evaluationTrigger.row_number === "row_number" ? 1 : evaluationTrigger.row_number;
55
+ const columnNames = Object.keys(evaluationTrigger).filter(
56
+ (key) => key !== "row_number" && key !== "_rowsLeft"
57
+ );
58
+ outputFields.forEach(({ outputName }) => {
59
+ if (!columnNames.includes(outputName)) {
60
+ columnNames.push(outputName);
61
+ }
62
+ });
63
+ await googleSheetInstance.updateRows(
64
+ googleSheet.title,
65
+ [columnNames],
66
+ "RAW",
67
+ // default value for Value Input Mode
68
+ 1
69
+ // header row
70
+ );
71
+ const outputs = outputFields.reduce((acc, { outputName, outputValue }) => {
72
+ acc[outputName] = outputValue;
73
+ return acc;
74
+ }, {});
75
+ const preparedData = googleSheetInstance.prepareDataForUpdatingByRowNumber(
76
+ [
77
+ {
78
+ row_number: rowNumber,
79
+ ...outputs
80
+ }
81
+ ],
82
+ `${googleSheet.title}!A:Z`,
83
+ [columnNames]
84
+ );
85
+ await googleSheetInstance.batchUpdate(
86
+ preparedData.updateData,
87
+ "RAW"
88
+ // default value for Value Input Mode
89
+ );
90
+ return [this.getInputData()];
91
+ }
92
+ async function setMetrics() {
93
+ const items = this.getInputData();
94
+ const metrics = [];
95
+ for (let i = 0; i < items.length; i++) {
96
+ const dataToSave = this.getNodeParameter("metrics", i, {});
97
+ const newItem = {
98
+ json: {},
99
+ pairedItem: { item: i }
100
+ };
101
+ const newData = Object.fromEntries(
102
+ (dataToSave?.assignments ?? []).map((assignment) => {
103
+ const assignmentValue = typeof assignment.value === "number" ? assignment.value : Number(assignment.value);
104
+ if (isNaN(assignmentValue)) {
105
+ throw new import_n8n_workflow.NodeOperationError(
106
+ this.getNode(),
107
+ `Value for '${assignment.name}' isn't a number`,
108
+ {
109
+ description: `It\u2019s currently '${assignment.value}'. Metrics must be numeric.`
110
+ }
111
+ );
112
+ }
113
+ if (!assignment.name || isNaN(assignmentValue)) {
114
+ throw new import_n8n_workflow.NodeOperationError(this.getNode(), "Metric name missing", {
115
+ description: "Make sure each metric you define has a name"
116
+ });
117
+ }
118
+ const { name, value } = (0, import_utils.validateEntry)(
119
+ assignment.name,
120
+ assignment.type,
121
+ assignmentValue,
122
+ this.getNode(),
123
+ i,
124
+ false,
125
+ 1
126
+ );
127
+ return [name, value];
128
+ })
129
+ );
130
+ const returnItem = import_utils.composeReturnItem.call(
131
+ this,
132
+ i,
133
+ newItem,
134
+ newData,
135
+ { dotNotation: false, include: "none" },
136
+ 1
137
+ );
138
+ metrics.push(returnItem);
139
+ }
140
+ return [metrics];
141
+ }
142
+ async function checkIfEvaluating() {
143
+ const evaluationExecutionResult = [];
144
+ const normalExecutionResult = [];
145
+ const evaluationNode = this.getNode();
146
+ const parentNodes = this.getParentNodes(evaluationNode.name);
147
+ const evalTrigger = parentNodes.find((node) => node.type === "n8n-nodes-base.evaluationTrigger");
148
+ const evalTriggerOutput = evalTrigger ? this.evaluateExpression(`{{ $('${evalTrigger?.name}').isExecuted }}`, 0) : void 0;
149
+ if (evalTriggerOutput) {
150
+ return [this.getInputData(), normalExecutionResult];
151
+ } else {
152
+ return [evaluationExecutionResult, this.getInputData()];
153
+ }
154
+ }
155
+ function setOutputs(parameters) {
156
+ if (parameters.operation === "checkIfEvaluating") {
157
+ return [
158
+ { type: "main", displayName: "Evaluation" },
159
+ { type: "main", displayName: "Normal" }
160
+ ];
161
+ }
162
+ return [{ type: "main" }];
163
+ }
164
+ // Annotate the CommonJS export names for ESM import in node:
165
+ 0 && (module.exports = {
166
+ checkIfEvaluating,
167
+ setMetrics,
168
+ setOutput,
169
+ setOutputs
170
+ });
171
+ //# sourceMappingURL=evaluationUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/Evaluation/utils/evaluationUtils.ts"],"sourcesContent":["import { NodeOperationError, UserError } from 'n8n-workflow';\nimport type {\n\tFieldType,\n\tINodeParameters,\n\tAssignmentCollectionValue,\n\tIDataObject,\n\tIExecuteFunctions,\n\tINodeExecutionData,\n} from 'n8n-workflow';\n\nimport { getGoogleSheet, getSheet } from './evaluationTriggerUtils';\nimport { composeReturnItem, validateEntry } from '../../Set/v2/helpers/utils';\n\nexport async function setOutput(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\tconst evaluationNode = this.getNode();\n\tconst parentNodes = this.getParentNodes(evaluationNode.name);\n\n\tconst evalTrigger = parentNodes.find((node) => node.type === 'n8n-nodes-base.evaluationTrigger');\n\tconst evalTriggerOutput = evalTrigger\n\t\t? this.evaluateExpression(`{{ $('${evalTrigger?.name}').isExecuted }}`, 0)\n\t\t: undefined;\n\n\tif (!evalTrigger || !evalTriggerOutput) {\n\t\tthis.addExecutionHints({\n\t\t\tmessage: \"No outputs were set since the execution didn't start from an evaluation trigger\",\n\t\t\tlocation: 'outputPane',\n\t\t});\n\t\treturn [this.getInputData()];\n\t}\n\n\tconst outputFields = this.getNodeParameter('outputs.values', 0, []) as Array<{\n\t\toutputName: string;\n\t\toutputValue: string;\n\t}>;\n\n\tif (outputFields.length === 0) {\n\t\tthrow new UserError('No outputs to set', {\n\t\t\tdescription: 'Add outputs to write back to the Google Sheet using the ‘Add Output’ button',\n\t\t});\n\t}\n\n\tconst googleSheetInstance = getGoogleSheet.call(this);\n\tconst googleSheet = await getSheet.call(this, googleSheetInstance);\n\n\tconst evaluationTrigger = this.evaluateExpression(\n\t\t`{{ $('${evalTrigger.name}').first().json }}`,\n\t\t0,\n\t) as IDataObject;\n\n\tconst rowNumber =\n\t\tevaluationTrigger.row_number === 'row_number' ? 1 : evaluationTrigger.row_number;\n\n\tconst columnNames = Object.keys(evaluationTrigger).filter(\n\t\t(key) => key !== 'row_number' && key !== '_rowsLeft',\n\t);\n\n\toutputFields.forEach(({ outputName }) => {\n\t\tif (!columnNames.includes(outputName)) {\n\t\t\tcolumnNames.push(outputName);\n\t\t}\n\t});\n\n\tawait googleSheetInstance.updateRows(\n\t\tgoogleSheet.title,\n\t\t[columnNames],\n\t\t'RAW', // default value for Value Input Mode\n\t\t1, // header row\n\t);\n\n\tconst outputs = outputFields.reduce((acc, { outputName, outputValue }) => {\n\t\tacc[outputName] = outputValue;\n\t\treturn acc;\n\t}, {} as IDataObject);\n\n\tconst preparedData = googleSheetInstance.prepareDataForUpdatingByRowNumber(\n\t\t[\n\t\t\t{\n\t\t\t\trow_number: rowNumber,\n\t\t\t\t...outputs,\n\t\t\t},\n\t\t],\n\t\t`${googleSheet.title}!A:Z`,\n\t\t[columnNames],\n\t);\n\n\tawait googleSheetInstance.batchUpdate(\n\t\tpreparedData.updateData,\n\t\t'RAW', // default value for Value Input Mode\n\t);\n\n\treturn [this.getInputData()];\n}\n\nexport async function setMetrics(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\tconst items = this.getInputData();\n\tconst metrics: INodeExecutionData[] = [];\n\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst dataToSave = this.getNodeParameter('metrics', i, {}) as AssignmentCollectionValue;\n\n\t\tconst newItem: INodeExecutionData = {\n\t\t\tjson: {},\n\t\t\tpairedItem: { item: i },\n\t\t};\n\t\tconst newData = Object.fromEntries(\n\t\t\t(dataToSave?.assignments ?? []).map((assignment) => {\n\t\t\t\tconst assignmentValue =\n\t\t\t\t\ttypeof assignment.value === 'number' ? assignment.value : Number(assignment.value);\n\n\t\t\t\tif (isNaN(assignmentValue)) {\n\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t`Value for '${assignment.name}' isn't a number`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdescription: `It’s currently '${assignment.value}'. Metrics must be numeric.`,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!assignment.name || isNaN(assignmentValue)) {\n\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Metric name missing', {\n\t\t\t\t\t\tdescription: 'Make sure each metric you define has a name',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst { name, value } = validateEntry(\n\t\t\t\t\tassignment.name,\n\t\t\t\t\tassignment.type as FieldType,\n\t\t\t\t\tassignmentValue,\n\t\t\t\t\tthis.getNode(),\n\t\t\t\t\ti,\n\t\t\t\t\tfalse,\n\t\t\t\t\t1,\n\t\t\t\t);\n\n\t\t\t\treturn [name, value];\n\t\t\t}),\n\t\t);\n\n\t\tconst returnItem = composeReturnItem.call(\n\t\t\tthis,\n\t\t\ti,\n\t\t\tnewItem,\n\t\t\tnewData,\n\t\t\t{ dotNotation: false, include: 'none' },\n\t\t\t1,\n\t\t);\n\t\tmetrics.push(returnItem);\n\t}\n\n\treturn [metrics];\n}\n\nexport async function checkIfEvaluating(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\tconst evaluationExecutionResult: INodeExecutionData[] = [];\n\tconst normalExecutionResult: INodeExecutionData[] = [];\n\n\tconst evaluationNode = this.getNode();\n\tconst parentNodes = this.getParentNodes(evaluationNode.name);\n\n\tconst evalTrigger = parentNodes.find((node) => node.type === 'n8n-nodes-base.evaluationTrigger');\n\tconst evalTriggerOutput = evalTrigger\n\t\t? this.evaluateExpression(`{{ $('${evalTrigger?.name}').isExecuted }}`, 0)\n\t\t: undefined;\n\n\tif (evalTriggerOutput) {\n\t\treturn [this.getInputData(), normalExecutionResult];\n\t} else {\n\t\treturn [evaluationExecutionResult, this.getInputData()];\n\t}\n}\n\nexport function setOutputs(parameters: INodeParameters) {\n\tif (parameters.operation === 'checkIfEvaluating') {\n\t\treturn [\n\t\t\t{ type: 'main', displayName: 'Evaluation' },\n\t\t\t{ type: 'main', displayName: 'Normal' },\n\t\t];\n\t}\n\n\treturn [{ type: 'main' }];\n}\n"],"mappings":"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","names":[]}
@@ -209,14 +209,15 @@ class ExecuteWorkflowTrigger {
209
209
  } else {
210
210
  const newParams = (0, import_GenericFunctions.getFieldEntries)(this);
211
211
  const newKeys = new Set(newParams.fields.map((x) => x.name));
212
- const itemsInSchema = inputData.map((row, index) => ({
212
+ const itemsInSchema = inputData.map(({ json, binary }, index) => ({
213
213
  json: {
214
214
  ...Object.fromEntries(newParams.fields.map((x) => [x.name, import_constants.FALLBACK_DEFAULT_VALUE])),
215
215
  // Need to trim to the expected schema to support legacy Execute Workflow callers passing through all their data
216
216
  // which we do not want to expose past this node.
217
- ...import_lodash.default.pickBy(row.json, (_value, key) => newKeys.has(key))
217
+ ...import_lodash.default.pickBy(json, (_value, key) => newKeys.has(key))
218
218
  },
219
- index
219
+ index,
220
+ binary
220
221
  }));
221
222
  return [itemsInSchema];
222
223
  }