n8n-nodes-base 1.95.1 → 1.96.1

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 (148) hide show
  1. package/dist/credentials/PerplexityApi.credentials.js +1 -1
  2. package/dist/credentials/PerplexityApi.credentials.js.map +1 -1
  3. package/dist/nodes/Adalo/__schema__/v1.0.0/collection/getAll.json +21 -0
  4. package/dist/nodes/Airtable/test/v2/node/helpers.js +12 -2
  5. package/dist/nodes/Airtable/test/v2/node/helpers.js.map +1 -1
  6. package/dist/nodes/Airtop/__schema__/v1.0.0/extraction/query.json +7 -1
  7. package/dist/nodes/Airtop/__schema__/v1.0.0/session/create.json +9 -0
  8. package/dist/nodes/Airtop/__schema__/v1.0.0/window/create.json +40 -0
  9. package/dist/nodes/Airtop/test/node/helpers.js +12 -2
  10. package/dist/nodes/Airtop/test/node/helpers.js.map +1 -1
  11. package/dist/nodes/Asana/__schema__/v1.0.0/subtask/getAll.json +4 -1
  12. package/dist/nodes/Aws/S3/__schema__/v2.0.0/file/getAll.json +7 -1
  13. package/dist/nodes/Aws/S3/__schema__/v2.0.0/folder/getAll.json +7 -1
  14. package/dist/nodes/BambooHr/__schema__/v1.0.0/employee/getAll.json +1 -4
  15. package/dist/nodes/ClickUp/__schema__/v1.0.0/list/customFields.json +23 -1
  16. package/dist/nodes/Code/Pyodide.js +24 -0
  17. package/dist/nodes/Code/Pyodide.js.map +1 -1
  18. package/dist/nodes/CompareDatasets/GenericFunctions.js +5 -5
  19. package/dist/nodes/CompareDatasets/GenericFunctions.js.map +1 -1
  20. package/dist/nodes/Discord/__schema__/v2.0.0/message/sendAndWait.json +14 -0
  21. package/dist/nodes/Discord/v2/helpers/utils.js +2 -2
  22. package/dist/nodes/Discord/v2/helpers/utils.js.map +1 -1
  23. package/dist/nodes/Dropbox/__schema__/v1.0.0/file/download.json +31 -1
  24. package/dist/nodes/Dropcontact/__schema__/v1.0.0/contact/enrich.json +15 -1
  25. package/dist/nodes/Dropcontact/__schema__/v1.0.0/contact/fetchRequest.json +50 -0
  26. package/dist/nodes/EmailReadImap/v2/utils.js +16 -3
  27. package/dist/nodes/EmailReadImap/v2/utils.js.map +1 -1
  28. package/dist/nodes/EmailSend/__schema__/v2.1.0/email/send.json +1 -7
  29. package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js +1 -1
  30. package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js.map +1 -1
  31. package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js +2 -2
  32. package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js.map +1 -1
  33. package/dist/nodes/Form/Form.node.js +3 -3
  34. package/dist/nodes/Form/Form.node.js.map +1 -1
  35. package/dist/nodes/Form/utils/formCompletionUtils.js.map +1 -0
  36. package/dist/nodes/Form/utils/formNodeUtils.js.map +1 -0
  37. package/dist/nodes/Form/{utils.js → utils/utils.js} +21 -7
  38. package/dist/nodes/Form/utils/utils.js.map +1 -0
  39. package/dist/nodes/Form/v1/FormTriggerV1.node.js +1 -1
  40. package/dist/nodes/Form/v1/FormTriggerV1.node.js.map +1 -1
  41. package/dist/nodes/Form/v2/FormTriggerV2.node.js +1 -1
  42. package/dist/nodes/Form/v2/FormTriggerV2.node.js.map +1 -1
  43. package/dist/nodes/Freshservice/GenericFunctions.js +12 -2
  44. package/dist/nodes/Freshservice/GenericFunctions.js.map +1 -1
  45. package/dist/nodes/Google/Ads/__schema__/v1.0.0/campaign/getAll.json +13 -1
  46. package/dist/nodes/Google/Analytics/__schema__/v2.0.0/report/get.json +1 -4
  47. package/dist/nodes/Google/Calendar/__schema__/v1.3.0/event/getAll.json +1 -4
  48. package/dist/nodes/Google/Chat/__schema__/v1.0.0/message/create.json +30 -1
  49. package/dist/nodes/Google/Drive/__schema__/v3.0.0/file/upload.json +4 -1
  50. package/dist/nodes/Google/Drive/test/v2/node/helpers.js +12 -2
  51. package/dist/nodes/Google/Drive/test/v2/node/helpers.js.map +1 -1
  52. package/dist/nodes/Google/Firebase/CloudFirestore/__schema__/v1.1.0/document/query.json +1 -7
  53. package/dist/nodes/Google/Gmail/__schema__/v2.1.0/message/addLabels.json +13 -1
  54. package/dist/nodes/Google/Gmail/__schema__/v2.1.0/message/get.json +1 -7
  55. package/dist/nodes/Google/Gmail/__schema__/v2.1.0/message/markAsRead.json +13 -1
  56. package/dist/nodes/Google/Gmail/__schema__/v2.1.0/thread/addLabels.json +16 -1
  57. package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.js +10 -4
  58. package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.js.map +1 -1
  59. package/dist/nodes/HaloPSA/__schema__/v1.0.0/ticket/getAll.json +1 -268
  60. package/dist/nodes/HttpRequest/shared/optimizeResponse.js +5 -3
  61. package/dist/nodes/HttpRequest/shared/optimizeResponse.js.map +1 -1
  62. package/dist/nodes/Hubspot/__schema__/v2.1.0/company/getAll.json +1 -4
  63. package/dist/nodes/Hubspot/__schema__/v2.1.0/deal/getAll.json +64 -1
  64. package/dist/nodes/Hubspot/__schema__/v2.1.0/deal/search.json +1 -4
  65. package/dist/nodes/Hubspot/__schema__/v2.1.0/ticket/get.json +1 -61
  66. package/dist/nodes/JinaAI/__schema__/v1.0.0/reader/read.json +26 -0
  67. package/dist/nodes/Jira/__schema__/v1.0.0/issue/get.json +604 -7
  68. package/dist/nodes/Jira/__schema__/v1.0.0/issue/getAll.json +1 -110
  69. package/dist/nodes/Lemlist/__schema__/v2.0.0/lead/create.json +1 -4
  70. package/dist/nodes/Lemlist/__schema__/v2.0.0/lead/get.json +30 -0
  71. package/dist/nodes/Line/__schema__/v1.0.0/notification/send.json +4 -7
  72. package/dist/nodes/Linear/__schema__/v1.0.0/issue/getAll.json +12 -1
  73. package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js +23 -3
  74. package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js.map +1 -1
  75. package/dist/nodes/Microsoft/Entra/__schema__/v1.0.0/user/getAll.json +1 -7
  76. package/dist/nodes/Microsoft/Entra/descriptions/GroupDescription.js +12 -2
  77. package/dist/nodes/Microsoft/Entra/descriptions/GroupDescription.js.map +1 -1
  78. package/dist/nodes/Microsoft/Entra/descriptions/UserDescription.js +13 -3
  79. package/dist/nodes/Microsoft/Entra/descriptions/UserDescription.js.map +1 -1
  80. package/dist/nodes/Microsoft/OneDrive/__schema__/v1.0.0/file/download.json +23 -10
  81. package/dist/nodes/Microsoft/OneDrive/__schema__/v1.0.0/folder/create.json +1 -15
  82. package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/event/getAll.json +1 -4
  83. package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/folderMessage/getAll.json +124 -1
  84. package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/message/getAll.json +1 -56
  85. package/dist/nodes/Microsoft/Sql/MicrosoftSql.node.js +12 -2
  86. package/dist/nodes/Microsoft/Sql/MicrosoftSql.node.js.map +1 -1
  87. package/dist/nodes/Microsoft/Storage/__schema__/v1.0.0/blob/create.json +39 -0
  88. package/dist/nodes/Microsoft/Storage/__schema__/v1.0.0/blob/get.json +44 -0
  89. package/dist/nodes/Microsoft/ToDo/__schema__/v1.0.0/task/getAll.json +5 -21
  90. package/dist/nodes/N8n/WorkflowDescription.js +40 -0
  91. package/dist/nodes/N8n/WorkflowDescription.js.map +1 -1
  92. package/dist/nodes/Nasa/__schema__/v1.0.0/donkiSolarFlare/get.json +1 -4
  93. package/dist/nodes/Notion/__schema__/v2.2.0/database/get.json +2 -149
  94. package/dist/nodes/Odoo/__schema__/v1.0.0/contact/get.json +1 -4
  95. package/dist/nodes/Odoo/__schema__/v1.0.0/contact/getAll.json +1 -10
  96. package/dist/nodes/Odoo/__schema__/v1.0.0/opportunity/getAll.json +1 -40
  97. package/dist/nodes/OpenAi/__schema__/v1.1.0/chat/complete.json +29 -1
  98. package/dist/nodes/Pipedrive/__schema__/v1.0.0/person/search.json +7 -1
  99. package/dist/nodes/QuickBase/__schema__/v1.0.0/record/getAll.json +9 -0
  100. package/dist/nodes/QuickBooks/__schema__/v1.0.0/transaction/getReport.json +4 -1
  101. package/dist/nodes/RssFeedRead/RssFeedRead.node.js +9 -3
  102. package/dist/nodes/RssFeedRead/RssFeedRead.node.js.map +1 -1
  103. package/dist/nodes/S3/__schema__/v1.0.0/file/download.json +21 -0
  104. package/dist/nodes/Salesforce/__schema__/v1.0.0/customObject/getAll.json +1 -4
  105. package/dist/nodes/Salesforce/__schema__/v1.0.0/lead/getAll.json +1 -4
  106. package/dist/nodes/Salesforce/__schema__/v1.0.0/opportunity/getAll.json +1 -4
  107. package/dist/nodes/Salesforce/__schema__/v1.0.0/search/query.json +1 -4
  108. package/dist/nodes/Shopify/__schema__/v1.0.0/order/getAll.json +250 -3
  109. package/dist/nodes/Slack/__schema__/v2.3.0/channel/history.json +1 -50
  110. package/dist/nodes/Slack/__schema__/v2.3.0/channel/member.json +168 -2
  111. package/dist/nodes/Slack/__schema__/v2.3.0/message/post.json +1 -4
  112. package/dist/nodes/Sms77/__schema__/v1.0.0/sms/send.json +1 -10
  113. package/dist/nodes/Strapi/__schema__/v1.0.0/entry/getAll.json +10 -1
  114. package/dist/nodes/Telegram/__schema__/v1.2.0/chat/member.json +1 -4
  115. package/dist/nodes/Telegram/__schema__/v1.2.0/message/editMessageText.json +4 -1
  116. package/dist/nodes/Telegram/__schema__/v1.2.0/message/sendAndWait.json +14 -0
  117. package/dist/nodes/Telegram/__schema__/v1.2.0/message/sendMessage.json +4 -21
  118. package/dist/nodes/Telegram/__schema__/v1.2.0/message/sendPhoto.json +1 -7
  119. package/dist/nodes/Telegram/tests/Helpers.js +12 -2
  120. package/dist/nodes/Telegram/tests/Helpers.js.map +1 -1
  121. package/dist/nodes/Transform/RemoveDuplicates/utils.js +8 -6
  122. package/dist/nodes/Transform/RemoveDuplicates/utils.js.map +1 -1
  123. package/dist/nodes/Trello/__schema__/v1.0.0/list/getAll.json +1 -4
  124. package/dist/nodes/Trello/__schema__/v1.0.0/list/getCards.json +1 -4
  125. package/dist/nodes/Twitter/__schema__/v2.0.0/tweet/search.json +7 -1
  126. package/dist/nodes/Wait/Wait.node.js +1 -1
  127. package/dist/nodes/Wait/Wait.node.js.map +1 -1
  128. package/dist/nodes/Wordpress/__schema__/v1.0.0/post/get.json +1 -7
  129. package/dist/nodes/Zoho/__schema__/v1.0.0/contact/getAll.json +1 -4
  130. package/dist/nodes/Zoho/__schema__/v1.0.0/lead/getAll.json +99 -1
  131. package/dist/test/nodes/Helpers.js +12 -2
  132. package/dist/test/nodes/Helpers.js.map +1 -1
  133. package/dist/types/credentials.json +1 -1
  134. package/dist/types/nodes.json +13 -13
  135. package/dist/utils/binary.js +12 -9
  136. package/dist/utils/binary.js.map +1 -1
  137. package/dist/utils/sendAndWait/utils.js +21 -6
  138. package/dist/utils/sendAndWait/utils.js.map +1 -1
  139. package/dist/utils/utilities.js +31 -16
  140. package/dist/utils/utilities.js.map +1 -1
  141. package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js +2 -2
  142. package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js.map +1 -1
  143. package/package.json +9 -9
  144. package/dist/nodes/Form/formCompletionUtils.js.map +0 -1
  145. package/dist/nodes/Form/formNodeUtils.js.map +0 -1
  146. package/dist/nodes/Form/utils.js.map +0 -1
  147. /package/dist/nodes/Form/{formCompletionUtils.js → utils/formCompletionUtils.js} +0 -0
  148. /package/dist/nodes/Form/{formNodeUtils.js → utils/formNodeUtils.js} +0 -0
@@ -16,14 +16,8 @@
16
16
  "id": {
17
17
  "type": "integer"
18
18
  },
19
- "last_name": {
20
- "type": "string"
21
- },
22
19
  "type": {
23
20
  "type": "string"
24
- },
25
- "username": {
26
- "type": "string"
27
21
  }
28
22
  }
29
23
  },
@@ -76,5 +70,5 @@
76
70
  }
77
71
  }
78
72
  },
79
- "version": 2
73
+ "version": 3
80
74
  }
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
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
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var Helpers_exports = {};
20
30
  __export(Helpers_exports, {
@@ -22,7 +32,7 @@ __export(Helpers_exports, {
22
32
  telegramNode: () => telegramNode
23
33
  });
24
34
  module.exports = __toCommonJS(Helpers_exports);
25
- var import_lodash = require("lodash");
35
+ var import_get = __toESM(require("lodash/get"));
26
36
  const telegramNode = {
27
37
  id: "b3039263-29ad-4476-9894-51dfcc5a706d",
28
38
  name: "Telegram node",
@@ -41,7 +51,7 @@ const createMockExecuteFunction = (nodeParameters) => {
41
51
  },
42
52
  getNodeParameter(parameterName, _itemIndex, fallbackValue, options) {
43
53
  const parameter = options?.extractValue ? `${parameterName}.value` : parameterName;
44
- return (0, import_lodash.get)(nodeParameters, parameter, fallbackValue);
54
+ return (0, import_get.default)(nodeParameters, parameter, fallbackValue);
45
55
  },
46
56
  getNode() {
47
57
  return telegramNode;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../nodes/Telegram/tests/Helpers.ts"],"sourcesContent":["import { get } from 'lodash';\nimport type { IDataObject, IExecuteFunctions, IGetNodeParameterOptions, INode } from 'n8n-workflow';\n\nexport const telegramNode: INode = {\n\tid: 'b3039263-29ad-4476-9894-51dfcc5a706d',\n\tname: 'Telegram node',\n\ttypeVersion: 1.2,\n\ttype: 'n8n-nodes-base.telegram',\n\tposition: [0, 0],\n\tparameters: {\n\t\tresource: 'callback',\n\t\toperation: 'answerQuery',\n\t},\n};\n\nexport const createMockExecuteFunction = (nodeParameters: IDataObject) => {\n\tconst fakeExecuteFunction = {\n\t\tgetInputData() {\n\t\t\treturn [{ json: {} }];\n\t\t},\n\t\tgetNodeParameter(\n\t\t\tparameterName: string,\n\t\t\t_itemIndex: number,\n\t\t\tfallbackValue?: IDataObject | undefined,\n\t\t\toptions?: IGetNodeParameterOptions | undefined,\n\t\t) {\n\t\t\tconst parameter = options?.extractValue ? `${parameterName}.value` : parameterName;\n\t\t\treturn get(nodeParameters, parameter, fallbackValue);\n\t\t},\n\t\tgetNode() {\n\t\t\treturn telegramNode;\n\t\t},\n\t\thelpers: {},\n\t\tcontinueOnFail: () => false,\n\t} as unknown as IExecuteFunctions;\n\treturn fakeExecuteFunction;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoB;AAGb,MAAM,eAAsB;AAAA,EAClC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU,CAAC,GAAG,CAAC;AAAA,EACf,YAAY;AAAA,IACX,UAAU;AAAA,IACV,WAAW;AAAA,EACZ;AACD;AAEO,MAAM,4BAA4B,CAAC,mBAAgC;AACzE,QAAM,sBAAsB;AAAA,IAC3B,eAAe;AACd,aAAO,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;AAAA,IACrB;AAAA,IACA,iBACC,eACA,YACA,eACA,SACC;AACD,YAAM,YAAY,SAAS,eAAe,GAAG,aAAa,WAAW;AACrE,iBAAO,mBAAI,gBAAgB,WAAW,aAAa;AAAA,IACpD;AAAA,IACA,UAAU;AACT,aAAO;AAAA,IACR;AAAA,IACA,SAAS,CAAC;AAAA,IACV,gBAAgB,MAAM;AAAA,EACvB;AACA,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../../nodes/Telegram/tests/Helpers.ts"],"sourcesContent":["import get from 'lodash/get';\nimport type { IDataObject, IExecuteFunctions, IGetNodeParameterOptions, INode } from 'n8n-workflow';\n\nexport const telegramNode: INode = {\n\tid: 'b3039263-29ad-4476-9894-51dfcc5a706d',\n\tname: 'Telegram node',\n\ttypeVersion: 1.2,\n\ttype: 'n8n-nodes-base.telegram',\n\tposition: [0, 0],\n\tparameters: {\n\t\tresource: 'callback',\n\t\toperation: 'answerQuery',\n\t},\n};\n\nexport const createMockExecuteFunction = (nodeParameters: IDataObject) => {\n\tconst fakeExecuteFunction = {\n\t\tgetInputData() {\n\t\t\treturn [{ json: {} }];\n\t\t},\n\t\tgetNodeParameter(\n\t\t\tparameterName: string,\n\t\t\t_itemIndex: number,\n\t\t\tfallbackValue?: IDataObject | undefined,\n\t\t\toptions?: IGetNodeParameterOptions | undefined,\n\t\t) {\n\t\t\tconst parameter = options?.extractValue ? `${parameterName}.value` : parameterName;\n\t\t\treturn get(nodeParameters, parameter, fallbackValue);\n\t\t},\n\t\tgetNode() {\n\t\t\treturn telegramNode;\n\t\t},\n\t\thelpers: {},\n\t\tcontinueOnFail: () => false,\n\t} as unknown as IExecuteFunctions;\n\treturn fakeExecuteFunction;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAgB;AAGT,MAAM,eAAsB;AAAA,EAClC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU,CAAC,GAAG,CAAC;AAAA,EACf,YAAY;AAAA,IACX,UAAU;AAAA,IACV,WAAW;AAAA,EACZ;AACD;AAEO,MAAM,4BAA4B,CAAC,mBAAgC;AACzE,QAAM,sBAAsB;AAAA,IAC3B,eAAe;AACd,aAAO,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;AAAA,IACrB;AAAA,IACA,iBACC,eACA,YACA,eACA,SACC;AACD,YAAM,YAAY,SAAS,eAAe,GAAG,aAAa,WAAW;AACrE,iBAAO,WAAAA,SAAI,gBAAgB,WAAW,aAAa;AAAA,IACpD;AAAA,IACA,UAAU;AACT,aAAO;AAAA,IACR;AAAA,IACA,SAAS,CAAC;AAAA,IACV,gBAAgB,MAAM;AAAA,EACvB;AACA,SAAO;AACR;","names":["get"]}
@@ -32,8 +32,10 @@ __export(utils_exports, {
32
32
  validateInputData: () => validateInputData
33
33
  });
34
34
  module.exports = __toCommonJS(utils_exports);
35
- var import_lodash = require("lodash");
36
35
  var import_get = __toESM(require("lodash/get"));
36
+ var import_isEqual = __toESM(require("lodash/isEqual"));
37
+ var import_lt = __toESM(require("lodash/lt"));
38
+ var import_pick = __toESM(require("lodash/pick"));
37
39
  var import_n8n_workflow = require("n8n-workflow");
38
40
  var import_utilities = require("../../../utils/utilities");
39
41
  var import_utils = require("../utils/utils");
@@ -128,16 +130,16 @@ function removeDuplicateInputItems(context, items) {
128
130
  for (const key of keys) {
129
131
  let equal;
130
132
  if (!disableDotNotation) {
131
- equal = (0, import_lodash.isEqual)((0, import_get.default)(a.json, key), (0, import_get.default)(b.json, key));
133
+ equal = (0, import_isEqual.default)((0, import_get.default)(a.json, key), (0, import_get.default)(b.json, key));
132
134
  } else {
133
- equal = (0, import_lodash.isEqual)(a.json[key], b.json[key]);
135
+ equal = (0, import_isEqual.default)(a.json[key], b.json[key]);
134
136
  }
135
137
  if (!equal) {
136
138
  let lessThan;
137
139
  if (!disableDotNotation) {
138
- lessThan = (0, import_lodash.lt)((0, import_get.default)(a.json, key), (0, import_get.default)(b.json, key));
140
+ lessThan = (0, import_lt.default)((0, import_get.default)(a.json, key), (0, import_get.default)(b.json, key));
139
141
  } else {
140
- lessThan = (0, import_lodash.lt)(a.json[key], b.json[key]);
142
+ lessThan = (0, import_lt.default)(a.json[key], b.json[key]);
141
143
  }
142
144
  result = lessThan ? -1 : 1;
143
145
  break;
@@ -160,7 +162,7 @@ function removeDuplicateInputItems(context, items) {
160
162
  );
161
163
  if (removeOtherFields) {
162
164
  updatedItems = updatedItems.map((item, index) => ({
163
- json: (0, import_lodash.pick)(item.json, ...keys),
165
+ json: (0, import_pick.default)(item.json, ...keys),
164
166
  pairedItem: { item: index }
165
167
  }));
166
168
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../nodes/Transform/RemoveDuplicates/utils.ts"],"sourcesContent":["import { isEqual, lt, pick } from 'lodash';\nimport get from 'lodash/get';\nimport { NodeOperationError } from 'n8n-workflow';\nimport type { IExecuteFunctions, INode, INodeExecutionData } from 'n8n-workflow';\n\nimport { compareItems, flattenKeys } from '@utils/utilities';\n\nimport { prepareFieldsArray } from '../utils/utils';\n\nexport const validateInputData = (\n\tnode: INode,\n\titems: INodeExecutionData[],\n\tkeysToCompare: string[],\n\tdisableDotNotation: boolean,\n) => {\n\tfor (const key of keysToCompare) {\n\t\tlet type: any = undefined;\n\t\tfor (const [i, item] of items.entries()) {\n\t\t\tif (key === '') {\n\t\t\t\tthrow new NodeOperationError(node, 'Name of field to compare is blank');\n\t\t\t}\n\t\t\tconst value = !disableDotNotation ? get(item.json, key) : item.json[key];\n\t\t\tif (value === null && node.typeVersion > 1) continue;\n\n\t\t\tif (value === undefined && disableDotNotation && key.includes('.')) {\n\t\t\t\tthrow new NodeOperationError(node, `'${key}' field is missing from some input items`, {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"If you're trying to use a nested field, make sure you turn off 'disable dot notation' in the node options\",\n\t\t\t\t});\n\t\t\t} else if (value === undefined) {\n\t\t\t\tthrow new NodeOperationError(node, `'${key}' field is missing from some input items`);\n\t\t\t}\n\t\t\tif (type !== undefined && value !== undefined && type !== typeof value) {\n\t\t\t\tconst description =\n\t\t\t\t\t'The type of this field varies between items' +\n\t\t\t\t\t(node.typeVersion > 1\n\t\t\t\t\t\t? `, in item [${i - 1}] it's a ${type} and in item [${i}] it's a ${typeof value} `\n\t\t\t\t\t\t: '');\n\t\t\t\tthrow new NodeOperationError(node, `'${key}' isn't always the same type`, {\n\t\t\t\t\tdescription,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttype = typeof value;\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport function removeDuplicateInputItems(context: IExecuteFunctions, items: INodeExecutionData[]) {\n\tconst compare = context.getNodeParameter('compare', 0) as string;\n\tconst disableDotNotation = context.getNodeParameter(\n\t\t'options.disableDotNotation',\n\t\t0,\n\t\tfalse,\n\t) as boolean;\n\tconst removeOtherFields = context.getNodeParameter(\n\t\t'options.removeOtherFields',\n\t\t0,\n\t\tfalse,\n\t) as boolean;\n\n\tlet keys = disableDotNotation\n\t\t? Object.keys(items[0].json)\n\t\t: Object.keys(flattenKeys(items[0].json));\n\n\tfor (const item of items) {\n\t\tconst itemKeys = disableDotNotation\n\t\t\t? Object.keys(item.json)\n\t\t\t: Object.keys(flattenKeys(item.json));\n\t\tfor (const key of itemKeys) {\n\t\t\tif (!keys.includes(key)) {\n\t\t\t\tkeys.push(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (compare === 'allFieldsExcept') {\n\t\tconst fieldsToExclude = prepareFieldsArray(\n\t\t\tcontext.getNodeParameter('fieldsToExclude', 0, '') as string,\n\t\t\t'Fields To Exclude',\n\t\t);\n\n\t\tif (!fieldsToExclude.length) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tcontext.getNode(),\n\t\t\t\t'No fields specified. Please add a field to exclude from comparison',\n\t\t\t);\n\t\t}\n\t\tif (!disableDotNotation) {\n\t\t\tkeys = Object.keys(flattenKeys(items[0].json));\n\t\t}\n\t\tkeys = keys.filter((key) => !fieldsToExclude.includes(key));\n\t}\n\tif (compare === 'selectedFields') {\n\t\tconst fieldsToCompare = prepareFieldsArray(\n\t\t\tcontext.getNodeParameter('fieldsToCompare', 0, '') as string,\n\t\t\t'Fields To Compare',\n\t\t);\n\t\tif (!fieldsToCompare.length) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tcontext.getNode(),\n\t\t\t\t'No fields specified. Please add a field to compare on',\n\t\t\t);\n\t\t}\n\t\tif (!disableDotNotation) {\n\t\t\tkeys = Object.keys(flattenKeys(items[0].json));\n\t\t}\n\t\tkeys = fieldsToCompare.map((key) => key.trim());\n\t}\n\n\t// This solution is O(nlogn)\n\t// add original index to the items\n\tconst newItems = items.map(\n\t\t(item, index) =>\n\t\t\t({\n\t\t\t\tjson: { ...item.json, __INDEX: index },\n\t\t\t\tpairedItem: { item: index },\n\t\t\t}) as INodeExecutionData,\n\t);\n\t//sort items using the compare keys\n\tnewItems.sort((a, b) => {\n\t\tlet result = 0;\n\n\t\tfor (const key of keys) {\n\t\t\tlet equal;\n\t\t\tif (!disableDotNotation) {\n\t\t\t\tequal = isEqual(get(a.json, key), get(b.json, key));\n\t\t\t} else {\n\t\t\t\tequal = isEqual(a.json[key], b.json[key]);\n\t\t\t}\n\t\t\tif (!equal) {\n\t\t\t\tlet lessThan;\n\t\t\t\tif (!disableDotNotation) {\n\t\t\t\t\tlessThan = lt(get(a.json, key), get(b.json, key));\n\t\t\t\t} else {\n\t\t\t\t\tlessThan = lt(a.json[key], b.json[key]);\n\t\t\t\t}\n\t\t\t\tresult = lessThan ? -1 : 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t});\n\n\tvalidateInputData(context.getNode(), newItems, keys, disableDotNotation);\n\n\t// collect the original indexes of items to be removed\n\tconst removedIndexes: number[] = [];\n\tlet temp = newItems[0];\n\tfor (let index = 1; index < newItems.length; index++) {\n\t\tif (compareItems(newItems[index], temp, keys, disableDotNotation)) {\n\t\t\tremovedIndexes.push(newItems[index].json.__INDEX as unknown as number);\n\t\t} else {\n\t\t\ttemp = newItems[index];\n\t\t}\n\t}\n\tlet updatedItems: INodeExecutionData[] = items.filter(\n\t\t(_, index) => !removedIndexes.includes(index),\n\t);\n\n\tif (removeOtherFields) {\n\t\tupdatedItems = updatedItems.map((item, index) => ({\n\t\t\tjson: pick(item.json, ...keys),\n\t\t\tpairedItem: { item: index },\n\t\t}));\n\t}\n\treturn [updatedItems];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAkC;AAClC,iBAAgB;AAChB,0BAAmC;AAGnC,uBAA0C;AAE1C,mBAAmC;AAE5B,MAAM,oBAAoB,CAChC,MACA,OACA,eACA,uBACI;AACJ,aAAW,OAAO,eAAe;AAChC,QAAI,OAAY;AAChB,eAAW,CAAC,GAAG,IAAI,KAAK,MAAM,QAAQ,GAAG;AACxC,UAAI,QAAQ,IAAI;AACf,cAAM,IAAI,uCAAmB,MAAM,mCAAmC;AAAA,MACvE;AACA,YAAM,QAAQ,CAAC,yBAAqB,WAAAA,SAAI,KAAK,MAAM,GAAG,IAAI,KAAK,KAAK,GAAG;AACvE,UAAI,UAAU,QAAQ,KAAK,cAAc,EAAG;AAE5C,UAAI,UAAU,UAAa,sBAAsB,IAAI,SAAS,GAAG,GAAG;AACnE,cAAM,IAAI,uCAAmB,MAAM,IAAI,GAAG,4CAA4C;AAAA,UACrF,aACC;AAAA,QACF,CAAC;AAAA,MACF,WAAW,UAAU,QAAW;AAC/B,cAAM,IAAI,uCAAmB,MAAM,IAAI,GAAG,0CAA0C;AAAA,MACrF;AACA,UAAI,SAAS,UAAa,UAAU,UAAa,SAAS,OAAO,OAAO;AACvE,cAAM,cACL,iDACC,KAAK,cAAc,IACjB,cAAc,IAAI,CAAC,YAAY,IAAI,iBAAiB,CAAC,YAAY,OAAO,KAAK,MAC7E;AACJ,cAAM,IAAI,uCAAmB,MAAM,IAAI,GAAG,gCAAgC;AAAA,UACzE;AAAA,QACD,CAAC;AAAA,MACF,OAAO;AACN,eAAO,OAAO;AAAA,MACf;AAAA,IACD;AAAA,EACD;AACD;AAEO,SAAS,0BAA0B,SAA4B,OAA6B;AAClG,QAAM,UAAU,QAAQ,iBAAiB,WAAW,CAAC;AACrD,QAAM,qBAAqB,QAAQ;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,QAAM,oBAAoB,QAAQ;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,MAAI,OAAO,qBACR,OAAO,KAAK,MAAM,CAAC,EAAE,IAAI,IACzB,OAAO,SAAK,8BAAY,MAAM,CAAC,EAAE,IAAI,CAAC;AAEzC,aAAW,QAAQ,OAAO;AACzB,UAAM,WAAW,qBACd,OAAO,KAAK,KAAK,IAAI,IACrB,OAAO,SAAK,8BAAY,KAAK,IAAI,CAAC;AACrC,eAAW,OAAO,UAAU;AAC3B,UAAI,CAAC,KAAK,SAAS,GAAG,GAAG;AACxB,aAAK,KAAK,GAAG;AAAA,MACd;AAAA,IACD;AAAA,EACD;AAEA,MAAI,YAAY,mBAAmB;AAClC,UAAM,sBAAkB;AAAA,MACvB,QAAQ,iBAAiB,mBAAmB,GAAG,EAAE;AAAA,MACjD;AAAA,IACD;AAEA,QAAI,CAAC,gBAAgB,QAAQ;AAC5B,YAAM,IAAI;AAAA,QACT,QAAQ,QAAQ;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AACA,QAAI,CAAC,oBAAoB;AACxB,aAAO,OAAO,SAAK,8BAAY,MAAM,CAAC,EAAE,IAAI,CAAC;AAAA,IAC9C;AACA,WAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,gBAAgB,SAAS,GAAG,CAAC;AAAA,EAC3D;AACA,MAAI,YAAY,kBAAkB;AACjC,UAAM,sBAAkB;AAAA,MACvB,QAAQ,iBAAiB,mBAAmB,GAAG,EAAE;AAAA,MACjD;AAAA,IACD;AACA,QAAI,CAAC,gBAAgB,QAAQ;AAC5B,YAAM,IAAI;AAAA,QACT,QAAQ,QAAQ;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AACA,QAAI,CAAC,oBAAoB;AACxB,aAAO,OAAO,SAAK,8BAAY,MAAM,CAAC,EAAE,IAAI,CAAC;AAAA,IAC9C;AACA,WAAO,gBAAgB,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;AAAA,EAC/C;AAIA,QAAM,WAAW,MAAM;AAAA,IACtB,CAAC,MAAM,WACL;AAAA,MACA,MAAM,EAAE,GAAG,KAAK,MAAM,SAAS,MAAM;AAAA,MACrC,YAAY,EAAE,MAAM,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,WAAS,KAAK,CAAC,GAAG,MAAM;AACvB,QAAI,SAAS;AAEb,eAAW,OAAO,MAAM;AACvB,UAAI;AACJ,UAAI,CAAC,oBAAoB;AACxB,oBAAQ,2BAAQ,WAAAA,SAAI,EAAE,MAAM,GAAG,OAAG,WAAAA,SAAI,EAAE,MAAM,GAAG,CAAC;AAAA,MACnD,OAAO;AACN,oBAAQ,uBAAQ,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC;AAAA,MACzC;AACA,UAAI,CAAC,OAAO;AACX,YAAI;AACJ,YAAI,CAAC,oBAAoB;AACxB,yBAAW,sBAAG,WAAAA,SAAI,EAAE,MAAM,GAAG,OAAG,WAAAA,SAAI,EAAE,MAAM,GAAG,CAAC;AAAA,QACjD,OAAO;AACN,yBAAW,kBAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC;AAAA,QACvC;AACA,iBAAS,WAAW,KAAK;AACzB;AAAA,MACD;AAAA,IACD;AACA,WAAO;AAAA,EACR,CAAC;AAED,oBAAkB,QAAQ,QAAQ,GAAG,UAAU,MAAM,kBAAkB;AAGvE,QAAM,iBAA2B,CAAC;AAClC,MAAI,OAAO,SAAS,CAAC;AACrB,WAAS,QAAQ,GAAG,QAAQ,SAAS,QAAQ,SAAS;AACrD,YAAI,+BAAa,SAAS,KAAK,GAAG,MAAM,MAAM,kBAAkB,GAAG;AAClE,qBAAe,KAAK,SAAS,KAAK,EAAE,KAAK,OAA4B;AAAA,IACtE,OAAO;AACN,aAAO,SAAS,KAAK;AAAA,IACtB;AAAA,EACD;AACA,MAAI,eAAqC,MAAM;AAAA,IAC9C,CAAC,GAAG,UAAU,CAAC,eAAe,SAAS,KAAK;AAAA,EAC7C;AAEA,MAAI,mBAAmB;AACtB,mBAAe,aAAa,IAAI,CAAC,MAAM,WAAW;AAAA,MACjD,UAAM,oBAAK,KAAK,MAAM,GAAG,IAAI;AAAA,MAC7B,YAAY,EAAE,MAAM,MAAM;AAAA,IAC3B,EAAE;AAAA,EACH;AACA,SAAO,CAAC,YAAY;AACrB;","names":["get"]}
1
+ {"version":3,"sources":["../../../../nodes/Transform/RemoveDuplicates/utils.ts"],"sourcesContent":["import get from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport lt from 'lodash/lt';\nimport pick from 'lodash/pick';\nimport { NodeOperationError } from 'n8n-workflow';\nimport type { IExecuteFunctions, INode, INodeExecutionData } from 'n8n-workflow';\n\nimport { compareItems, flattenKeys } from '@utils/utilities';\n\nimport { prepareFieldsArray } from '../utils/utils';\n\nexport const validateInputData = (\n\tnode: INode,\n\titems: INodeExecutionData[],\n\tkeysToCompare: string[],\n\tdisableDotNotation: boolean,\n) => {\n\tfor (const key of keysToCompare) {\n\t\tlet type: any = undefined;\n\t\tfor (const [i, item] of items.entries()) {\n\t\t\tif (key === '') {\n\t\t\t\tthrow new NodeOperationError(node, 'Name of field to compare is blank');\n\t\t\t}\n\t\t\tconst value = !disableDotNotation ? get(item.json, key) : item.json[key];\n\t\t\tif (value === null && node.typeVersion > 1) continue;\n\n\t\t\tif (value === undefined && disableDotNotation && key.includes('.')) {\n\t\t\t\tthrow new NodeOperationError(node, `'${key}' field is missing from some input items`, {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"If you're trying to use a nested field, make sure you turn off 'disable dot notation' in the node options\",\n\t\t\t\t});\n\t\t\t} else if (value === undefined) {\n\t\t\t\tthrow new NodeOperationError(node, `'${key}' field is missing from some input items`);\n\t\t\t}\n\t\t\tif (type !== undefined && value !== undefined && type !== typeof value) {\n\t\t\t\tconst description =\n\t\t\t\t\t'The type of this field varies between items' +\n\t\t\t\t\t(node.typeVersion > 1\n\t\t\t\t\t\t? `, in item [${i - 1}] it's a ${type} and in item [${i}] it's a ${typeof value} `\n\t\t\t\t\t\t: '');\n\t\t\t\tthrow new NodeOperationError(node, `'${key}' isn't always the same type`, {\n\t\t\t\t\tdescription,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttype = typeof value;\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport function removeDuplicateInputItems(context: IExecuteFunctions, items: INodeExecutionData[]) {\n\tconst compare = context.getNodeParameter('compare', 0) as string;\n\tconst disableDotNotation = context.getNodeParameter(\n\t\t'options.disableDotNotation',\n\t\t0,\n\t\tfalse,\n\t) as boolean;\n\tconst removeOtherFields = context.getNodeParameter(\n\t\t'options.removeOtherFields',\n\t\t0,\n\t\tfalse,\n\t) as boolean;\n\n\tlet keys = disableDotNotation\n\t\t? Object.keys(items[0].json)\n\t\t: Object.keys(flattenKeys(items[0].json));\n\n\tfor (const item of items) {\n\t\tconst itemKeys = disableDotNotation\n\t\t\t? Object.keys(item.json)\n\t\t\t: Object.keys(flattenKeys(item.json));\n\t\tfor (const key of itemKeys) {\n\t\t\tif (!keys.includes(key)) {\n\t\t\t\tkeys.push(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (compare === 'allFieldsExcept') {\n\t\tconst fieldsToExclude = prepareFieldsArray(\n\t\t\tcontext.getNodeParameter('fieldsToExclude', 0, '') as string,\n\t\t\t'Fields To Exclude',\n\t\t);\n\n\t\tif (!fieldsToExclude.length) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tcontext.getNode(),\n\t\t\t\t'No fields specified. Please add a field to exclude from comparison',\n\t\t\t);\n\t\t}\n\t\tif (!disableDotNotation) {\n\t\t\tkeys = Object.keys(flattenKeys(items[0].json));\n\t\t}\n\t\tkeys = keys.filter((key) => !fieldsToExclude.includes(key));\n\t}\n\tif (compare === 'selectedFields') {\n\t\tconst fieldsToCompare = prepareFieldsArray(\n\t\t\tcontext.getNodeParameter('fieldsToCompare', 0, '') as string,\n\t\t\t'Fields To Compare',\n\t\t);\n\t\tif (!fieldsToCompare.length) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tcontext.getNode(),\n\t\t\t\t'No fields specified. Please add a field to compare on',\n\t\t\t);\n\t\t}\n\t\tif (!disableDotNotation) {\n\t\t\tkeys = Object.keys(flattenKeys(items[0].json));\n\t\t}\n\t\tkeys = fieldsToCompare.map((key) => key.trim());\n\t}\n\n\t// This solution is O(nlogn)\n\t// add original index to the items\n\tconst newItems = items.map(\n\t\t(item, index) =>\n\t\t\t({\n\t\t\t\tjson: { ...item.json, __INDEX: index },\n\t\t\t\tpairedItem: { item: index },\n\t\t\t}) as INodeExecutionData,\n\t);\n\t//sort items using the compare keys\n\tnewItems.sort((a, b) => {\n\t\tlet result = 0;\n\n\t\tfor (const key of keys) {\n\t\t\tlet equal;\n\t\t\tif (!disableDotNotation) {\n\t\t\t\tequal = isEqual(get(a.json, key), get(b.json, key));\n\t\t\t} else {\n\t\t\t\tequal = isEqual(a.json[key], b.json[key]);\n\t\t\t}\n\t\t\tif (!equal) {\n\t\t\t\tlet lessThan;\n\t\t\t\tif (!disableDotNotation) {\n\t\t\t\t\tlessThan = lt(get(a.json, key), get(b.json, key));\n\t\t\t\t} else {\n\t\t\t\t\tlessThan = lt(a.json[key], b.json[key]);\n\t\t\t\t}\n\t\t\t\tresult = lessThan ? -1 : 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t});\n\n\tvalidateInputData(context.getNode(), newItems, keys, disableDotNotation);\n\n\t// collect the original indexes of items to be removed\n\tconst removedIndexes: number[] = [];\n\tlet temp = newItems[0];\n\tfor (let index = 1; index < newItems.length; index++) {\n\t\tif (compareItems(newItems[index], temp, keys, disableDotNotation)) {\n\t\t\tremovedIndexes.push(newItems[index].json.__INDEX as unknown as number);\n\t\t} else {\n\t\t\ttemp = newItems[index];\n\t\t}\n\t}\n\tlet updatedItems: INodeExecutionData[] = items.filter(\n\t\t(_, index) => !removedIndexes.includes(index),\n\t);\n\n\tif (removeOtherFields) {\n\t\tupdatedItems = updatedItems.map((item, index) => ({\n\t\t\tjson: pick(item.json, ...keys),\n\t\t\tpairedItem: { item: index },\n\t\t}));\n\t}\n\treturn [updatedItems];\n}\n"],"mappings":"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","names":["get","isEqual","lt","pick"]}
@@ -4,9 +4,6 @@
4
4
  "closed": {
5
5
  "type": "boolean"
6
6
  },
7
- "color": {
8
- "type": "null"
9
- },
10
7
  "datasource": {
11
8
  "type": "object",
12
9
  "properties": {
@@ -34,5 +31,5 @@
34
31
  "type": "null"
35
32
  }
36
33
  },
37
- "version": 3
34
+ "version": 4
38
35
  }
@@ -64,9 +64,6 @@
64
64
  }
65
65
  }
66
66
  },
67
- "cardRole": {
68
- "type": "null"
69
- },
70
67
  "checkItemStates": {
71
68
  "type": "array",
72
69
  "items": {
@@ -203,5 +200,5 @@
203
200
  "type": "string"
204
201
  }
205
202
  },
206
- "version": 3
203
+ "version": 4
207
204
  }
@@ -1,6 +1,12 @@
1
1
  {
2
2
  "type": "object",
3
3
  "properties": {
4
+ "author_id": {
5
+ "type": "string"
6
+ },
7
+ "conversation_id": {
8
+ "type": "string"
9
+ },
4
10
  "edit_history_tweet_ids": {
5
11
  "type": "array",
6
12
  "items": {
@@ -14,5 +20,5 @@
14
20
  "type": "string"
15
21
  }
16
22
  },
17
- "version": 2
23
+ "version": 3
18
24
  }
@@ -24,7 +24,7 @@ module.exports = __toCommonJS(Wait_node_exports);
24
24
  var import_n8n_workflow = require("n8n-workflow");
25
25
  var import_utilities = require("../../utils/utilities");
26
26
  var import_common = require("../Form/common.descriptions");
27
- var import_utils = require("../Form/utils");
27
+ var import_utils = require("../Form/utils/utils");
28
28
  var import_description = require("../Webhook/description");
29
29
  var import_Webhook = require("../Webhook/Webhook.node");
30
30
  const toWaitAmount = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../nodes/Wait/Wait.node.ts"],"sourcesContent":["import type {\n\tIExecuteFunctions,\n\tINodeExecutionData,\n\tINodeTypeDescription,\n\tINodeProperties,\n\tIDisplayOptions,\n\tIWebhookFunctions,\n} from 'n8n-workflow';\nimport {\n\tNodeConnectionTypes,\n\tWAIT_INDEFINITELY,\n\tFORM_TRIGGER_NODE_TYPE,\n\ttryToParseDateTime,\n\tNodeOperationError,\n} from 'n8n-workflow';\n\nimport { updateDisplayOptions } from '../../utils/utilities';\nimport {\n\tformDescription,\n\tformFields,\n\trespondWithOptions,\n\tformRespondMode,\n\tformTitle,\n\tappendAttributionToForm,\n} from '../Form/common.descriptions';\nimport { formWebhook } from '../Form/utils';\nimport {\n\tauthenticationProperty,\n\tcredentialsProperty,\n\tdefaultWebhookDescription,\n\thttpMethodsProperty,\n\toptionsProperty,\n\tresponseBinaryPropertyNameProperty,\n\tresponseCodeProperty,\n\tresponseDataProperty,\n\tresponseModeProperty,\n} from '../Webhook/description';\nimport { Webhook } from '../Webhook/Webhook.node';\n\nconst toWaitAmount: INodeProperties = {\n\tdisplayName: 'Wait Amount',\n\tname: 'amount',\n\ttype: 'number',\n\ttypeOptions: {\n\t\tminValue: 0,\n\t\tnumberPrecision: 2,\n\t},\n\tdefault: 1,\n\tdescription: 'The time to wait',\n};\n\nconst unitSelector: INodeProperties = {\n\tdisplayName: 'Wait Unit',\n\tname: 'unit',\n\ttype: 'options',\n\toptions: [\n\t\t{\n\t\t\tname: 'Seconds',\n\t\t\tvalue: 'seconds',\n\t\t},\n\t\t{\n\t\t\tname: 'Minutes',\n\t\t\tvalue: 'minutes',\n\t\t},\n\t\t{\n\t\t\tname: 'Hours',\n\t\t\tvalue: 'hours',\n\t\t},\n\t\t{\n\t\t\tname: 'Days',\n\t\t\tvalue: 'days',\n\t\t},\n\t],\n\tdefault: 'hours',\n\tdescription: 'The time unit of the Wait Amount value',\n};\n\nconst waitTimeProperties: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Limit Wait Time',\n\t\tname: 'limitWaitTime',\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t\tdescription:\n\t\t\t'Whether to limit the time this node should wait for a user response before execution resumes',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Limit Type',\n\t\tname: 'limitType',\n\t\ttype: 'options',\n\t\tdefault: 'afterTimeInterval',\n\t\tdescription:\n\t\t\t'Sets the condition for the execution to resume. Can be a specified date or after some time.',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tlimitWaitTime: [true],\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'After Time Interval',\n\t\t\t\tdescription: 'Waits for a certain amount of time',\n\t\t\t\tvalue: 'afterTimeInterval',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'At Specified Time',\n\t\t\t\tdescription: 'Waits until the set date and time to continue',\n\t\t\t\tvalue: 'atSpecifiedTime',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tdisplayName: 'Amount',\n\t\tname: 'resumeAmount',\n\t\ttype: 'number',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tlimitType: ['afterTimeInterval'],\n\t\t\t\tlimitWaitTime: [true],\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t\ttypeOptions: {\n\t\t\tminValue: 0,\n\t\t\tnumberPrecision: 2,\n\t\t},\n\t\tdefault: 1,\n\t\tdescription: 'The time to wait',\n\t},\n\t{\n\t\tdisplayName: 'Unit',\n\t\tname: 'resumeUnit',\n\t\ttype: 'options',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tlimitType: ['afterTimeInterval'],\n\t\t\t\tlimitWaitTime: [true],\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Seconds',\n\t\t\t\tvalue: 'seconds',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Minutes',\n\t\t\t\tvalue: 'minutes',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Hours',\n\t\t\t\tvalue: 'hours',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Days',\n\t\t\t\tvalue: 'days',\n\t\t\t},\n\t\t],\n\t\tdefault: 'hours',\n\t\tdescription: 'Unit of the interval value',\n\t},\n\t{\n\t\tdisplayName: 'Max Date and Time',\n\t\tname: 'maxDateAndTime',\n\t\ttype: 'dateTime',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tlimitType: ['atSpecifiedTime'],\n\t\t\t\tlimitWaitTime: [true],\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t\tdescription: 'Continue execution after the specified date and time',\n\t},\n];\n\nconst webhookSuffix: INodeProperties = {\n\tdisplayName: 'Webhook Suffix',\n\tname: 'webhookSuffix',\n\ttype: 'string',\n\tdefault: '',\n\tplaceholder: 'webhook',\n\tnoDataExpression: true,\n\tdescription:\n\t\t'This suffix path will be appended to the restart URL. Helpful when using multiple wait nodes.',\n};\n\nconst displayOnWebhook: IDisplayOptions = {\n\tshow: {\n\t\tresume: ['webhook'],\n\t},\n};\n\nconst displayOnFormSubmission = {\n\tshow: {\n\t\tresume: ['form'],\n\t},\n};\n\nconst onFormSubmitProperties = updateDisplayOptions(displayOnFormSubmission, [\n\tformTitle,\n\tformDescription,\n\tformFields,\n\tformRespondMode,\n]);\n\nconst onWebhookCallProperties = updateDisplayOptions(displayOnWebhook, [\n\t{\n\t\t...httpMethodsProperty,\n\t\tdescription: 'The HTTP method of the Webhook call',\n\t},\n\tresponseCodeProperty,\n\tresponseModeProperty,\n\tresponseDataProperty,\n\tresponseBinaryPropertyNameProperty,\n]);\n\nconst webhookPath = '={{$parameter[\"options\"][\"webhookSuffix\"] || \"\"}}';\n\nexport class Wait extends Webhook {\n\tauthPropertyName = 'incomingAuthentication';\n\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Wait',\n\t\tname: 'wait',\n\t\ticon: 'fa:pause-circle',\n\t\ticonColor: 'crimson',\n\t\tgroup: ['organization'],\n\t\tversion: [1, 1.1],\n\t\tdescription: 'Wait before continue with execution',\n\t\tdefaults: {\n\t\t\tname: 'Wait',\n\t\t\tcolor: '#804050',\n\t\t},\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: credentialsProperty(this.authPropertyName),\n\t\twebhooks: [\n\t\t\t{\n\t\t\t\t...defaultWebhookDescription,\n\t\t\t\tresponseData: '={{$parameter[\"responseData\"]}}',\n\t\t\t\tpath: webhookPath,\n\t\t\t\trestartWebhook: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'default',\n\t\t\t\thttpMethod: 'GET',\n\t\t\t\tresponseMode: 'onReceived',\n\t\t\t\tpath: webhookPath,\n\t\t\t\trestartWebhook: true,\n\t\t\t\tisFullPath: true,\n\t\t\t\tnodeType: 'form',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'default',\n\t\t\t\thttpMethod: 'POST',\n\t\t\t\tresponseMode: '={{$parameter[\"responseMode\"]}}',\n\t\t\t\tresponseData: '={{$parameter[\"responseMode\"] === \"lastNode\" ? \"noData\" : undefined}}',\n\t\t\t\tpath: webhookPath,\n\t\t\t\trestartWebhook: true,\n\t\t\t\tisFullPath: true,\n\t\t\t\tnodeType: 'form',\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Resume',\n\t\t\t\tname: 'resume',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'After Time Interval',\n\t\t\t\t\t\tvalue: 'timeInterval',\n\t\t\t\t\t\tdescription: 'Waits for a certain amount of time',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'At Specified Time',\n\t\t\t\t\t\tvalue: 'specificTime',\n\t\t\t\t\t\tdescription: 'Waits until a specific date and time to continue',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'On Webhook Call',\n\t\t\t\t\t\tvalue: 'webhook',\n\t\t\t\t\t\tdescription: 'Waits for a webhook call before continuing',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'On Form Submitted',\n\t\t\t\t\t\tvalue: 'form',\n\t\t\t\t\t\tdescription: 'Waits for a form submission before continuing',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'timeInterval',\n\t\t\t\tdescription: 'Determines the waiting mode to use before the workflow continues',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Authentication',\n\t\t\t\tname: 'incomingAuthentication',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Basic Auth',\n\t\t\t\t\t\tvalue: 'basicAuth',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'None',\n\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'none',\n\t\t\t\tdescription:\n\t\t\t\t\t'If and how incoming resume-webhook-requests to $execution.resumeFormUrl should be authenticated for additional security',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['form'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...authenticationProperty(this.authPropertyName),\n\t\t\t\tdescription:\n\t\t\t\t\t'If and how incoming resume-webhook-requests to $execution.resumeUrl should be authenticated for additional security',\n\t\t\t\tdisplayOptions: displayOnWebhook,\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// resume:specificTime\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\tdisplayName: 'Date and Time',\n\t\t\t\tname: 'dateTime',\n\t\t\t\ttype: 'dateTime',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['specificTime'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'The date and time to wait for before continuing',\n\t\t\t\trequired: true,\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// resume:timeInterval\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\t...toWaitAmount,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['timeInterval'],\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...toWaitAmount,\n\t\t\t\tdefault: 5,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['timeInterval'],\n\t\t\t\t\t},\n\t\t\t\t\thide: {\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...unitSelector,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['timeInterval'],\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...unitSelector,\n\t\t\t\tdefault: 'seconds',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['timeInterval'],\n\t\t\t\t\t},\n\t\t\t\t\thide: {\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// resume:webhook & form\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'The webhook URL will be generated at run time. It can be referenced with the <strong>$execution.resumeUrl</strong> variable. Send it somewhere before getting to this node. <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/?utm_source=n8n_app&utm_medium=node_settings_modal-credential_link&utm_campaign=n8n-nodes-base.wait\" target=\"_blank\">More info</a>',\n\t\t\t\tname: 'webhookNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdisplayOptions: displayOnWebhook,\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'The form url will be generated at run time. It can be referenced with the <strong>$execution.resumeFormUrl</strong> variable. Send it somewhere before getting to this node. <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/?utm_source=n8n_app&utm_medium=node_settings_modal-credential_link&utm_campaign=n8n-nodes-base.wait\" target=\"_blank\">More info</a>',\n\t\t\t\tname: 'formNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdisplayOptions: displayOnFormSubmission,\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t...onFormSubmitProperties,\n\t\t\t...onWebhookCallProperties,\n\t\t\t...waitTimeProperties,\n\t\t\t{\n\t\t\t\t...optionsProperty,\n\t\t\t\tdisplayOptions: displayOnWebhook,\n\t\t\t\toptions: [...(optionsProperty.options as INodeProperties[]), webhookSuffix],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add option',\n\t\t\t\tdefault: {},\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['form'],\n\t\t\t\t\t},\n\t\t\t\t\thide: {\n\t\t\t\t\t\tresponseMode: ['responseNode'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [appendAttributionToForm, respondWithOptions, webhookSuffix],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add option',\n\t\t\t\tdefault: {},\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['form'],\n\t\t\t\t\t},\n\t\t\t\t\thide: {\n\t\t\t\t\t\tresponseMode: ['onReceived', 'lastNode'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [appendAttributionToForm, webhookSuffix],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync webhook(context: IWebhookFunctions) {\n\t\tconst resume = context.getNodeParameter('resume', 0) as string;\n\t\tif (resume === 'form') return await formWebhook(context, this.authPropertyName);\n\t\treturn await super.webhook(context);\n\t}\n\n\tasync execute(context: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst resume = context.getNodeParameter('resume', 0) as string;\n\n\t\tif (['webhook', 'form'].includes(resume)) {\n\t\t\tlet hasFormTrigger = false;\n\n\t\t\tif (resume === 'form') {\n\t\t\t\tconst parentNodes = context.getParentNodes(context.getNode().name);\n\t\t\t\thasFormTrigger = parentNodes.some((node) => node.type === FORM_TRIGGER_NODE_TYPE);\n\t\t\t}\n\n\t\t\tconst returnData = await this.configureAndPutToWait(context);\n\n\t\t\tif (resume === 'form' && hasFormTrigger) {\n\t\t\t\tcontext.sendResponse({\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tlocation: context.evaluateExpression('{{ $execution.resumeFormUrl }}', 0),\n\t\t\t\t\t},\n\t\t\t\t\tstatusCode: 307,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn returnData;\n\t\t}\n\n\t\tlet waitTill: Date;\n\t\tif (resume === 'timeInterval') {\n\t\t\tconst unit = context.getNodeParameter('unit', 0) as string;\n\n\t\t\tlet waitAmount = context.getNodeParameter('amount', 0) as number;\n\t\t\tif (unit === 'minutes') {\n\t\t\t\twaitAmount *= 60;\n\t\t\t}\n\t\t\tif (unit === 'hours') {\n\t\t\t\twaitAmount *= 60 * 60;\n\t\t\t}\n\t\t\tif (unit === 'days') {\n\t\t\t\twaitAmount *= 60 * 60 * 24;\n\t\t\t}\n\n\t\t\twaitAmount *= 1000;\n\n\t\t\t// Timezone does not change relative dates, since they are just\n\t\t\t// a number of seconds added to the current timestamp\n\t\t\twaitTill = new Date(new Date().getTime() + waitAmount);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst dateTimeStrRaw = context.getNodeParameter('dateTime', 0);\n\t\t\t\tconst parsedDateTime = tryToParseDateTime(dateTimeStrRaw, context.getTimezone());\n\n\t\t\t\twaitTill = parsedDateTime.toUTC().toJSDate();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\tcontext.getNode(),\n\t\t\t\t\t'[Wait node] Cannot put execution to wait because `dateTime` parameter is not a valid date. Please pick a specific date and time to wait until.',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst waitValue = Math.max(waitTill.getTime() - new Date().getTime(), 0);\n\n\t\tif (waitValue < 65000) {\n\t\t\t// If wait time is shorter than 65 seconds leave execution active because\n\t\t\t// we just check the database every 60 seconds.\n\t\t\treturn await new Promise((resolve) => {\n\t\t\t\tconst timer = setTimeout(() => resolve([context.getInputData()]), waitValue);\n\t\t\t\tcontext.onExecutionCancellation(() => clearTimeout(timer));\n\t\t\t});\n\t\t}\n\n\t\t// If longer than 65 seconds put execution to wait\n\t\treturn await this.putToWait(context, waitTill);\n\t}\n\n\tprivate async configureAndPutToWait(context: IExecuteFunctions) {\n\t\tlet waitTill = WAIT_INDEFINITELY;\n\t\tconst limitWaitTime = context.getNodeParameter('limitWaitTime', 0);\n\n\t\tif (limitWaitTime === true) {\n\t\t\tconst limitType = context.getNodeParameter('limitType', 0);\n\n\t\t\tif (limitType === 'afterTimeInterval') {\n\t\t\t\tlet waitAmount = context.getNodeParameter('resumeAmount', 0) as number;\n\t\t\t\tconst resumeUnit = context.getNodeParameter('resumeUnit', 0);\n\n\t\t\t\tif (resumeUnit === 'minutes') {\n\t\t\t\t\twaitAmount *= 60;\n\t\t\t\t}\n\t\t\t\tif (resumeUnit === 'hours') {\n\t\t\t\t\twaitAmount *= 60 * 60;\n\t\t\t\t}\n\t\t\t\tif (resumeUnit === 'days') {\n\t\t\t\t\twaitAmount *= 60 * 60 * 24;\n\t\t\t\t}\n\n\t\t\t\twaitAmount *= 1000;\n\t\t\t\twaitTill = new Date(new Date().getTime() + waitAmount);\n\t\t\t} else {\n\t\t\t\twaitTill = new Date(context.getNodeParameter('maxDateAndTime', 0) as string);\n\t\t\t}\n\t\t}\n\n\t\treturn await this.putToWait(context, waitTill);\n\t}\n\n\tprivate async putToWait(context: IExecuteFunctions, waitTill: Date) {\n\t\tawait context.putExecutionToWait(waitTill);\n\t\treturn [context.getInputData()];\n\t}\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../nodes/Wait/Wait.node.ts"],"sourcesContent":["import type {\n\tIExecuteFunctions,\n\tINodeExecutionData,\n\tINodeTypeDescription,\n\tINodeProperties,\n\tIDisplayOptions,\n\tIWebhookFunctions,\n} from 'n8n-workflow';\nimport {\n\tNodeConnectionTypes,\n\tWAIT_INDEFINITELY,\n\tFORM_TRIGGER_NODE_TYPE,\n\ttryToParseDateTime,\n\tNodeOperationError,\n} from 'n8n-workflow';\n\nimport { updateDisplayOptions } from '../../utils/utilities';\nimport {\n\tformDescription,\n\tformFields,\n\trespondWithOptions,\n\tformRespondMode,\n\tformTitle,\n\tappendAttributionToForm,\n} from '../Form/common.descriptions';\nimport { formWebhook } from '../Form/utils/utils';\nimport {\n\tauthenticationProperty,\n\tcredentialsProperty,\n\tdefaultWebhookDescription,\n\thttpMethodsProperty,\n\toptionsProperty,\n\tresponseBinaryPropertyNameProperty,\n\tresponseCodeProperty,\n\tresponseDataProperty,\n\tresponseModeProperty,\n} from '../Webhook/description';\nimport { Webhook } from '../Webhook/Webhook.node';\n\nconst toWaitAmount: INodeProperties = {\n\tdisplayName: 'Wait Amount',\n\tname: 'amount',\n\ttype: 'number',\n\ttypeOptions: {\n\t\tminValue: 0,\n\t\tnumberPrecision: 2,\n\t},\n\tdefault: 1,\n\tdescription: 'The time to wait',\n};\n\nconst unitSelector: INodeProperties = {\n\tdisplayName: 'Wait Unit',\n\tname: 'unit',\n\ttype: 'options',\n\toptions: [\n\t\t{\n\t\t\tname: 'Seconds',\n\t\t\tvalue: 'seconds',\n\t\t},\n\t\t{\n\t\t\tname: 'Minutes',\n\t\t\tvalue: 'minutes',\n\t\t},\n\t\t{\n\t\t\tname: 'Hours',\n\t\t\tvalue: 'hours',\n\t\t},\n\t\t{\n\t\t\tname: 'Days',\n\t\t\tvalue: 'days',\n\t\t},\n\t],\n\tdefault: 'hours',\n\tdescription: 'The time unit of the Wait Amount value',\n};\n\nconst waitTimeProperties: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Limit Wait Time',\n\t\tname: 'limitWaitTime',\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t\tdescription:\n\t\t\t'Whether to limit the time this node should wait for a user response before execution resumes',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Limit Type',\n\t\tname: 'limitType',\n\t\ttype: 'options',\n\t\tdefault: 'afterTimeInterval',\n\t\tdescription:\n\t\t\t'Sets the condition for the execution to resume. Can be a specified date or after some time.',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tlimitWaitTime: [true],\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'After Time Interval',\n\t\t\t\tdescription: 'Waits for a certain amount of time',\n\t\t\t\tvalue: 'afterTimeInterval',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'At Specified Time',\n\t\t\t\tdescription: 'Waits until the set date and time to continue',\n\t\t\t\tvalue: 'atSpecifiedTime',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tdisplayName: 'Amount',\n\t\tname: 'resumeAmount',\n\t\ttype: 'number',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tlimitType: ['afterTimeInterval'],\n\t\t\t\tlimitWaitTime: [true],\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t\ttypeOptions: {\n\t\t\tminValue: 0,\n\t\t\tnumberPrecision: 2,\n\t\t},\n\t\tdefault: 1,\n\t\tdescription: 'The time to wait',\n\t},\n\t{\n\t\tdisplayName: 'Unit',\n\t\tname: 'resumeUnit',\n\t\ttype: 'options',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tlimitType: ['afterTimeInterval'],\n\t\t\t\tlimitWaitTime: [true],\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Seconds',\n\t\t\t\tvalue: 'seconds',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Minutes',\n\t\t\t\tvalue: 'minutes',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Hours',\n\t\t\t\tvalue: 'hours',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Days',\n\t\t\t\tvalue: 'days',\n\t\t\t},\n\t\t],\n\t\tdefault: 'hours',\n\t\tdescription: 'Unit of the interval value',\n\t},\n\t{\n\t\tdisplayName: 'Max Date and Time',\n\t\tname: 'maxDateAndTime',\n\t\ttype: 'dateTime',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tlimitType: ['atSpecifiedTime'],\n\t\t\t\tlimitWaitTime: [true],\n\t\t\t\tresume: ['webhook', 'form'],\n\t\t\t},\n\t\t},\n\t\tdefault: '',\n\t\tdescription: 'Continue execution after the specified date and time',\n\t},\n];\n\nconst webhookSuffix: INodeProperties = {\n\tdisplayName: 'Webhook Suffix',\n\tname: 'webhookSuffix',\n\ttype: 'string',\n\tdefault: '',\n\tplaceholder: 'webhook',\n\tnoDataExpression: true,\n\tdescription:\n\t\t'This suffix path will be appended to the restart URL. Helpful when using multiple wait nodes.',\n};\n\nconst displayOnWebhook: IDisplayOptions = {\n\tshow: {\n\t\tresume: ['webhook'],\n\t},\n};\n\nconst displayOnFormSubmission = {\n\tshow: {\n\t\tresume: ['form'],\n\t},\n};\n\nconst onFormSubmitProperties = updateDisplayOptions(displayOnFormSubmission, [\n\tformTitle,\n\tformDescription,\n\tformFields,\n\tformRespondMode,\n]);\n\nconst onWebhookCallProperties = updateDisplayOptions(displayOnWebhook, [\n\t{\n\t\t...httpMethodsProperty,\n\t\tdescription: 'The HTTP method of the Webhook call',\n\t},\n\tresponseCodeProperty,\n\tresponseModeProperty,\n\tresponseDataProperty,\n\tresponseBinaryPropertyNameProperty,\n]);\n\nconst webhookPath = '={{$parameter[\"options\"][\"webhookSuffix\"] || \"\"}}';\n\nexport class Wait extends Webhook {\n\tauthPropertyName = 'incomingAuthentication';\n\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Wait',\n\t\tname: 'wait',\n\t\ticon: 'fa:pause-circle',\n\t\ticonColor: 'crimson',\n\t\tgroup: ['organization'],\n\t\tversion: [1, 1.1],\n\t\tdescription: 'Wait before continue with execution',\n\t\tdefaults: {\n\t\t\tname: 'Wait',\n\t\t\tcolor: '#804050',\n\t\t},\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: credentialsProperty(this.authPropertyName),\n\t\twebhooks: [\n\t\t\t{\n\t\t\t\t...defaultWebhookDescription,\n\t\t\t\tresponseData: '={{$parameter[\"responseData\"]}}',\n\t\t\t\tpath: webhookPath,\n\t\t\t\trestartWebhook: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'default',\n\t\t\t\thttpMethod: 'GET',\n\t\t\t\tresponseMode: 'onReceived',\n\t\t\t\tpath: webhookPath,\n\t\t\t\trestartWebhook: true,\n\t\t\t\tisFullPath: true,\n\t\t\t\tnodeType: 'form',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'default',\n\t\t\t\thttpMethod: 'POST',\n\t\t\t\tresponseMode: '={{$parameter[\"responseMode\"]}}',\n\t\t\t\tresponseData: '={{$parameter[\"responseMode\"] === \"lastNode\" ? \"noData\" : undefined}}',\n\t\t\t\tpath: webhookPath,\n\t\t\t\trestartWebhook: true,\n\t\t\t\tisFullPath: true,\n\t\t\t\tnodeType: 'form',\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Resume',\n\t\t\t\tname: 'resume',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'After Time Interval',\n\t\t\t\t\t\tvalue: 'timeInterval',\n\t\t\t\t\t\tdescription: 'Waits for a certain amount of time',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'At Specified Time',\n\t\t\t\t\t\tvalue: 'specificTime',\n\t\t\t\t\t\tdescription: 'Waits until a specific date and time to continue',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'On Webhook Call',\n\t\t\t\t\t\tvalue: 'webhook',\n\t\t\t\t\t\tdescription: 'Waits for a webhook call before continuing',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'On Form Submitted',\n\t\t\t\t\t\tvalue: 'form',\n\t\t\t\t\t\tdescription: 'Waits for a form submission before continuing',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'timeInterval',\n\t\t\t\tdescription: 'Determines the waiting mode to use before the workflow continues',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Authentication',\n\t\t\t\tname: 'incomingAuthentication',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Basic Auth',\n\t\t\t\t\t\tvalue: 'basicAuth',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'None',\n\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'none',\n\t\t\t\tdescription:\n\t\t\t\t\t'If and how incoming resume-webhook-requests to $execution.resumeFormUrl should be authenticated for additional security',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['form'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...authenticationProperty(this.authPropertyName),\n\t\t\t\tdescription:\n\t\t\t\t\t'If and how incoming resume-webhook-requests to $execution.resumeUrl should be authenticated for additional security',\n\t\t\t\tdisplayOptions: displayOnWebhook,\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// resume:specificTime\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\tdisplayName: 'Date and Time',\n\t\t\t\tname: 'dateTime',\n\t\t\t\ttype: 'dateTime',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['specificTime'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'The date and time to wait for before continuing',\n\t\t\t\trequired: true,\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// resume:timeInterval\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\t...toWaitAmount,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['timeInterval'],\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...toWaitAmount,\n\t\t\t\tdefault: 5,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['timeInterval'],\n\t\t\t\t\t},\n\t\t\t\t\thide: {\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...unitSelector,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['timeInterval'],\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...unitSelector,\n\t\t\t\tdefault: 'seconds',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['timeInterval'],\n\t\t\t\t\t},\n\t\t\t\t\thide: {\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// resume:webhook & form\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'The webhook URL will be generated at run time. It can be referenced with the <strong>$execution.resumeUrl</strong> variable. Send it somewhere before getting to this node. <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/?utm_source=n8n_app&utm_medium=node_settings_modal-credential_link&utm_campaign=n8n-nodes-base.wait\" target=\"_blank\">More info</a>',\n\t\t\t\tname: 'webhookNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdisplayOptions: displayOnWebhook,\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'The form url will be generated at run time. It can be referenced with the <strong>$execution.resumeFormUrl</strong> variable. Send it somewhere before getting to this node. <a href=\"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/?utm_source=n8n_app&utm_medium=node_settings_modal-credential_link&utm_campaign=n8n-nodes-base.wait\" target=\"_blank\">More info</a>',\n\t\t\t\tname: 'formNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdisplayOptions: displayOnFormSubmission,\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t...onFormSubmitProperties,\n\t\t\t...onWebhookCallProperties,\n\t\t\t...waitTimeProperties,\n\t\t\t{\n\t\t\t\t...optionsProperty,\n\t\t\t\tdisplayOptions: displayOnWebhook,\n\t\t\t\toptions: [...(optionsProperty.options as INodeProperties[]), webhookSuffix],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add option',\n\t\t\t\tdefault: {},\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['form'],\n\t\t\t\t\t},\n\t\t\t\t\thide: {\n\t\t\t\t\t\tresponseMode: ['responseNode'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [appendAttributionToForm, respondWithOptions, webhookSuffix],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add option',\n\t\t\t\tdefault: {},\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresume: ['form'],\n\t\t\t\t\t},\n\t\t\t\t\thide: {\n\t\t\t\t\t\tresponseMode: ['onReceived', 'lastNode'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [appendAttributionToForm, webhookSuffix],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync webhook(context: IWebhookFunctions) {\n\t\tconst resume = context.getNodeParameter('resume', 0) as string;\n\t\tif (resume === 'form') return await formWebhook(context, this.authPropertyName);\n\t\treturn await super.webhook(context);\n\t}\n\n\tasync execute(context: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst resume = context.getNodeParameter('resume', 0) as string;\n\n\t\tif (['webhook', 'form'].includes(resume)) {\n\t\t\tlet hasFormTrigger = false;\n\n\t\t\tif (resume === 'form') {\n\t\t\t\tconst parentNodes = context.getParentNodes(context.getNode().name);\n\t\t\t\thasFormTrigger = parentNodes.some((node) => node.type === FORM_TRIGGER_NODE_TYPE);\n\t\t\t}\n\n\t\t\tconst returnData = await this.configureAndPutToWait(context);\n\n\t\t\tif (resume === 'form' && hasFormTrigger) {\n\t\t\t\tcontext.sendResponse({\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tlocation: context.evaluateExpression('{{ $execution.resumeFormUrl }}', 0),\n\t\t\t\t\t},\n\t\t\t\t\tstatusCode: 307,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn returnData;\n\t\t}\n\n\t\tlet waitTill: Date;\n\t\tif (resume === 'timeInterval') {\n\t\t\tconst unit = context.getNodeParameter('unit', 0) as string;\n\n\t\t\tlet waitAmount = context.getNodeParameter('amount', 0) as number;\n\t\t\tif (unit === 'minutes') {\n\t\t\t\twaitAmount *= 60;\n\t\t\t}\n\t\t\tif (unit === 'hours') {\n\t\t\t\twaitAmount *= 60 * 60;\n\t\t\t}\n\t\t\tif (unit === 'days') {\n\t\t\t\twaitAmount *= 60 * 60 * 24;\n\t\t\t}\n\n\t\t\twaitAmount *= 1000;\n\n\t\t\t// Timezone does not change relative dates, since they are just\n\t\t\t// a number of seconds added to the current timestamp\n\t\t\twaitTill = new Date(new Date().getTime() + waitAmount);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst dateTimeStrRaw = context.getNodeParameter('dateTime', 0);\n\t\t\t\tconst parsedDateTime = tryToParseDateTime(dateTimeStrRaw, context.getTimezone());\n\n\t\t\t\twaitTill = parsedDateTime.toUTC().toJSDate();\n\t\t\t} catch (e) {\n\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\tcontext.getNode(),\n\t\t\t\t\t'[Wait node] Cannot put execution to wait because `dateTime` parameter is not a valid date. Please pick a specific date and time to wait until.',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst waitValue = Math.max(waitTill.getTime() - new Date().getTime(), 0);\n\n\t\tif (waitValue < 65000) {\n\t\t\t// If wait time is shorter than 65 seconds leave execution active because\n\t\t\t// we just check the database every 60 seconds.\n\t\t\treturn await new Promise((resolve) => {\n\t\t\t\tconst timer = setTimeout(() => resolve([context.getInputData()]), waitValue);\n\t\t\t\tcontext.onExecutionCancellation(() => clearTimeout(timer));\n\t\t\t});\n\t\t}\n\n\t\t// If longer than 65 seconds put execution to wait\n\t\treturn await this.putToWait(context, waitTill);\n\t}\n\n\tprivate async configureAndPutToWait(context: IExecuteFunctions) {\n\t\tlet waitTill = WAIT_INDEFINITELY;\n\t\tconst limitWaitTime = context.getNodeParameter('limitWaitTime', 0);\n\n\t\tif (limitWaitTime === true) {\n\t\t\tconst limitType = context.getNodeParameter('limitType', 0);\n\n\t\t\tif (limitType === 'afterTimeInterval') {\n\t\t\t\tlet waitAmount = context.getNodeParameter('resumeAmount', 0) as number;\n\t\t\t\tconst resumeUnit = context.getNodeParameter('resumeUnit', 0);\n\n\t\t\t\tif (resumeUnit === 'minutes') {\n\t\t\t\t\twaitAmount *= 60;\n\t\t\t\t}\n\t\t\t\tif (resumeUnit === 'hours') {\n\t\t\t\t\twaitAmount *= 60 * 60;\n\t\t\t\t}\n\t\t\t\tif (resumeUnit === 'days') {\n\t\t\t\t\twaitAmount *= 60 * 60 * 24;\n\t\t\t\t}\n\n\t\t\t\twaitAmount *= 1000;\n\t\t\t\twaitTill = new Date(new Date().getTime() + waitAmount);\n\t\t\t} else {\n\t\t\t\twaitTill = new Date(context.getNodeParameter('maxDateAndTime', 0) as string);\n\t\t\t}\n\t\t}\n\n\t\treturn await this.putToWait(context, waitTill);\n\t}\n\n\tprivate async putToWait(context: IExecuteFunctions, waitTill: Date) {\n\t\tawait context.putExecutionToWait(waitTill);\n\t\treturn [context.getInputData()];\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -174,12 +174,6 @@
174
174
  "type": "integer"
175
175
  }
176
176
  },
177
- "class_list": {
178
- "type": "array",
179
- "items": {
180
- "type": "string"
181
- }
182
- },
183
177
  "comment_status": {
184
178
  "type": "string"
185
179
  },
@@ -278,5 +272,5 @@
278
272
  "type": "string"
279
273
  }
280
274
  },
281
- "version": 2
275
+ "version": 3
282
276
  }
@@ -155,10 +155,7 @@
155
155
  }
156
156
  }
157
157
  }
158
- },
159
- "Vendor_Name": {
160
- "type": "null"
161
158
  }
162
159
  },
163
- "version": 3
160
+ "version": 4
164
161
  }
@@ -1,6 +1,87 @@
1
1
  {
2
2
  "type": "object",
3
3
  "properties": {
4
+ "$approval": {
5
+ "type": "object",
6
+ "properties": {
7
+ "approve": {
8
+ "type": "boolean"
9
+ },
10
+ "delegate": {
11
+ "type": "boolean"
12
+ },
13
+ "reject": {
14
+ "type": "boolean"
15
+ },
16
+ "resubmit": {
17
+ "type": "boolean"
18
+ },
19
+ "takeover": {
20
+ "type": "boolean"
21
+ }
22
+ }
23
+ },
24
+ "$approval_state": {
25
+ "type": "string"
26
+ },
27
+ "$approved": {
28
+ "type": "boolean"
29
+ },
30
+ "$converted": {
31
+ "type": "boolean"
32
+ },
33
+ "$currency_symbol": {
34
+ "type": "string"
35
+ },
36
+ "$editable": {
37
+ "type": "boolean"
38
+ },
39
+ "$field_states": {
40
+ "type": "null"
41
+ },
42
+ "$in_merge": {
43
+ "type": "boolean"
44
+ },
45
+ "$layout_id": {
46
+ "type": "object",
47
+ "properties": {
48
+ "id": {
49
+ "type": "string"
50
+ },
51
+ "name": {
52
+ "type": "string"
53
+ }
54
+ }
55
+ },
56
+ "$locked_for_me": {
57
+ "type": "boolean"
58
+ },
59
+ "$process_flow": {
60
+ "type": "boolean"
61
+ },
62
+ "$review": {
63
+ "type": "null"
64
+ },
65
+ "$review_process": {
66
+ "type": "object",
67
+ "properties": {
68
+ "approve": {
69
+ "type": "boolean"
70
+ },
71
+ "reject": {
72
+ "type": "boolean"
73
+ },
74
+ "resubmit": {
75
+ "type": "boolean"
76
+ }
77
+ }
78
+ },
79
+ "$state": {
80
+ "type": "string"
81
+ },
82
+ "Created_Time": {
83
+ "type": "string"
84
+ },
4
85
  "Full_Name": {
5
86
  "type": "string"
6
87
  },
@@ -10,6 +91,9 @@
10
91
  "Last_Name": {
11
92
  "type": "string"
12
93
  },
94
+ "Locked__s": {
95
+ "type": "boolean"
96
+ },
13
97
  "Owner": {
14
98
  "type": "object",
15
99
  "properties": {
@@ -23,7 +107,21 @@
23
107
  "type": "string"
24
108
  }
25
109
  }
110
+ },
111
+ "Tag": {
112
+ "type": "array",
113
+ "items": {
114
+ "type": "object",
115
+ "properties": {
116
+ "id": {
117
+ "type": "string"
118
+ },
119
+ "name": {
120
+ "type": "string"
121
+ }
122
+ }
123
+ }
26
124
  }
27
125
  },
28
- "version": 2
126
+ "version": 3
29
127
  }
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,18 +17,26 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
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
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var Helpers_exports = {};
20
30
  __export(Helpers_exports, {
21
31
  createMockExecuteFunction: () => createMockExecuteFunction
22
32
  });
23
33
  module.exports = __toCommonJS(Helpers_exports);
24
- var import_lodash = require("lodash");
34
+ var import_get = __toESM(require("lodash/get"));
25
35
  var import_n8n_core = require("n8n-core");
26
36
  const createMockExecuteFunction = (nodeParameters, nodeMock, continueBool = false) => ({
27
37
  getNodeParameter(parameterName, _itemIndex, fallbackValue, options) {
28
38
  const parameter = options?.extractValue ? `${parameterName}.value` : parameterName;
29
- return (0, import_lodash.get)(nodeParameters, parameter, fallbackValue);
39
+ return (0, import_get.default)(nodeParameters, parameter, fallbackValue);
30
40
  },
31
41
  getNode() {
32
42
  return nodeMock;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../test/nodes/Helpers.ts"],"sourcesContent":["import { get } from 'lodash';\nimport { constructExecutionMetaData } from 'n8n-core';\nimport type { IDataObject, IExecuteFunctions, IGetNodeParameterOptions, INode } from 'n8n-workflow';\n\nexport const createMockExecuteFunction = <T = IExecuteFunctions>(\n\tnodeParameters: IDataObject,\n\tnodeMock: INode,\n\tcontinueBool = false,\n) =>\n\t({\n\t\tgetNodeParameter(\n\t\t\tparameterName: string,\n\t\t\t_itemIndex: number,\n\t\t\tfallbackValue?: IDataObject | undefined,\n\t\t\toptions?: IGetNodeParameterOptions | undefined,\n\t\t) {\n\t\t\tconst parameter = options?.extractValue ? `${parameterName}.value` : parameterName;\n\t\t\treturn get(nodeParameters, parameter, fallbackValue);\n\t\t},\n\t\tgetNode() {\n\t\t\treturn nodeMock;\n\t\t},\n\t\tcontinueOnFail() {\n\t\t\treturn continueBool;\n\t\t},\n\t\thelpers: {\n\t\t\tconstructExecutionMetaData,\n\t\t},\n\t}) as unknown as T;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoB;AACpB,sBAA2C;AAGpC,MAAM,4BAA4B,CACxC,gBACA,UACA,eAAe,WAEd;AAAA,EACA,iBACC,eACA,YACA,eACA,SACC;AACD,UAAM,YAAY,SAAS,eAAe,GAAG,aAAa,WAAW;AACrE,eAAO,mBAAI,gBAAgB,WAAW,aAAa;AAAA,EACpD;AAAA,EACA,UAAU;AACT,WAAO;AAAA,EACR;AAAA,EACA,iBAAiB;AAChB,WAAO;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACR;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../test/nodes/Helpers.ts"],"sourcesContent":["import get from 'lodash/get';\nimport { constructExecutionMetaData } from 'n8n-core';\nimport type { IDataObject, IExecuteFunctions, IGetNodeParameterOptions, INode } from 'n8n-workflow';\n\nexport const createMockExecuteFunction = <T = IExecuteFunctions>(\n\tnodeParameters: IDataObject,\n\tnodeMock: INode,\n\tcontinueBool = false,\n) =>\n\t({\n\t\tgetNodeParameter(\n\t\t\tparameterName: string,\n\t\t\t_itemIndex: number,\n\t\t\tfallbackValue?: IDataObject | undefined,\n\t\t\toptions?: IGetNodeParameterOptions | undefined,\n\t\t) {\n\t\t\tconst parameter = options?.extractValue ? `${parameterName}.value` : parameterName;\n\t\t\treturn get(nodeParameters, parameter, fallbackValue);\n\t\t},\n\t\tgetNode() {\n\t\t\treturn nodeMock;\n\t\t},\n\t\tcontinueOnFail() {\n\t\t\treturn continueBool;\n\t\t},\n\t\thelpers: {\n\t\t\tconstructExecutionMetaData,\n\t\t},\n\t}) as unknown as T;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAgB;AAChB,sBAA2C;AAGpC,MAAM,4BAA4B,CACxC,gBACA,UACA,eAAe,WAEd;AAAA,EACA,iBACC,eACA,YACA,eACA,SACC;AACD,UAAM,YAAY,SAAS,eAAe,GAAG,aAAa,WAAW;AACrE,eAAO,WAAAA,SAAI,gBAAgB,WAAW,aAAa;AAAA,EACpD;AAAA,EACA,UAAU;AACT,WAAO;AAAA,EACR;AAAA,EACA,iBAAiB;AAChB,WAAO;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACR;AAAA,EACD;AACD;","names":["get"]}
@@ -256,7 +256,7 @@
256
256
  {"name":"pagerDutyOAuth2Api","extends":["oAuth2Api"],"displayName":"PagerDuty OAuth2 API","documentationUrl":"pagerDuty","properties":[{"displayName":"Grant Type","name":"grantType","type":"hidden","default":"authorizationCode"},{"displayName":"Authorization URL","name":"authUrl","type":"hidden","default":"https://app.pagerduty.com/oauth/authorize"},{"displayName":"Access Token URL","name":"accessTokenUrl","type":"hidden","default":"https://app.pagerduty.com/oauth/token"},{"displayName":"Auth URI Query Parameters","name":"authQueryParameters","type":"hidden","default":""},{"displayName":"Scope","name":"scope","type":"hidden","default":"write"},{"displayName":"Authentication","name":"authentication","type":"hidden","default":"header"}],"supportedNodes":["pagerDuty"],"iconUrl":"icons/n8n-nodes-base/dist/nodes/PagerDuty/pagerDuty.svg"},
257
257
  {"name":"payPalApi","displayName":"PayPal API","documentationUrl":"payPal","properties":[{"displayName":"Client ID","name":"clientId","type":"string","default":""},{"displayName":"Secret","name":"secret","type":"string","typeOptions":{"password":true},"default":""},{"displayName":"Environment","name":"env","type":"options","default":"live","options":[{"name":"Sandbox","value":"sanbox"},{"name":"Live","value":"live"}]}],"supportedNodes":["payPal","payPalTrigger"],"iconUrl":"icons/n8n-nodes-base/dist/nodes/PayPal/paypal.svg"},
258
258
  {"name":"peekalinkApi","displayName":"Peekalink API","documentationUrl":"peekalink","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"default":""}],"supportedNodes":["peekalink"],"iconUrl":"icons/n8n-nodes-base/dist/nodes/Peekalink/peekalink.png"},
259
- {"name":"perplexityApi","displayName":"Perplexity API","documentationUrl":"https://docs.perplexity.ai","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":"","description":"Your Perplexity API key. Get it from your Perplexity account."}],"authenticate":{"type":"generic","properties":{"headers":{"Authorization":"=Bearer {{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"https://api.perplexity.ai","url":"/chat/completions","method":"POST","body":{"model":"r1-1776","messages":[{"role":"user","content":"test"}]},"headers":{"Authorization":"=Bearer {{$credentials.apiKey}}","Content-Type":"application/json"},"json":true}},"supportedNodes":["perplexity"],"iconUrl":{"light":"icons/n8n-nodes-base/dist/nodes/Perplexity/perplexity.svg","dark":"icons/n8n-nodes-base/dist/nodes/Perplexity/perplexity.dark.svg"}},
259
+ {"name":"perplexityApi","displayName":"Perplexity API","documentationUrl":"perplexity","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":"","description":"Your Perplexity API key. Get it from your Perplexity account."}],"authenticate":{"type":"generic","properties":{"headers":{"Authorization":"=Bearer {{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"https://api.perplexity.ai","url":"/chat/completions","method":"POST","body":{"model":"r1-1776","messages":[{"role":"user","content":"test"}]},"headers":{"Authorization":"=Bearer {{$credentials.apiKey}}","Content-Type":"application/json"},"json":true}},"supportedNodes":["perplexity"],"iconUrl":{"light":"icons/n8n-nodes-base/dist/nodes/Perplexity/perplexity.svg","dark":"icons/n8n-nodes-base/dist/nodes/Perplexity/perplexity.dark.svg"}},
260
260
  {"name":"phantombusterApi","displayName":"Phantombuster API","documentationUrl":"phantombuster","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"default":""}],"authenticate":{"type":"generic","properties":{"headers":{"X-Phantombuster-Key":"={{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"https://api.phantombuster.com/api/v2","url":"/agents/fetch-all"}},"supportedNodes":["phantombuster"],"iconUrl":"icons/n8n-nodes-base/dist/nodes/Phantombuster/phantombuster.png"},
261
261
  {"name":"philipsHueOAuth2Api","extends":["oAuth2Api"],"displayName":"PhilipHue OAuth2 API","documentationUrl":"philipsHue","properties":[{"displayName":"Grant Type","name":"grantType","type":"hidden","default":"authorizationCode"},{"displayName":"APP ID","name":"appId","type":"string","default":""},{"displayName":"Authorization URL","name":"authUrl","type":"hidden","default":"https://api.meethue.com/v2/oauth2/authorize"},{"displayName":"Access Token URL","name":"accessTokenUrl","type":"hidden","default":"https://api.meethue.com/v2/oauth2/token"},{"displayName":"Auth URI Query Parameters","name":"authQueryParameters","type":"hidden","default":"={{\"appid=\"+$self[\"appId\"]}}"},{"displayName":"Scope","name":"scope","type":"hidden","default":""},{"displayName":"Authentication","name":"authentication","type":"hidden","default":"header"}],"supportedNodes":["philipsHue"],"iconUrl":"icons/n8n-nodes-base/dist/nodes/PhilipsHue/philipshue.png"},
262
262
  {"name":"pipedriveApi","displayName":"Pipedrive API","documentationUrl":"pipedrive","properties":[{"displayName":"API Token","name":"apiToken","type":"string","typeOptions":{"password":true},"default":""}],"authenticate":{"type":"generic","properties":{"qs":{"api_token":"={{$credentials.apiToken}}"}}},"supportedNodes":["pipedrive","pipedriveTrigger"],"iconUrl":"icons/n8n-nodes-base/dist/nodes/Pipedrive/pipedrive.svg"},