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.
- package/dist/credentials/AirtopApi.credentials.js +2 -1
- package/dist/credentials/AirtopApi.credentials.js.map +1 -1
- package/dist/credentials/JinaAiApi.credentials.js +1 -1
- package/dist/credentials/JinaAiApi.credentials.js.map +1 -1
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js +0 -9
- package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js +13 -0
- package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js.map +1 -1
- package/dist/credentials/Snowflake.credentials.js +46 -2
- package/dist/credentials/Snowflake.credentials.js.map +1 -1
- package/dist/known/credentials.json +10 -1
- package/dist/known/nodes.json +20 -4
- package/dist/methods/defined.json +6 -0
- package/dist/methods/referenced.json +3 -0
- package/dist/nodes/Airtop/Airtop.node.js +14 -8
- package/dist/nodes/Airtop/Airtop.node.js.map +1 -1
- package/dist/nodes/Airtop/GenericFunctions.js +87 -15
- package/dist/nodes/Airtop/GenericFunctions.js.map +1 -1
- package/dist/nodes/Airtop/actions/common/fields.js +9 -0
- package/dist/nodes/Airtop/actions/common/fields.js.map +1 -1
- package/dist/nodes/Airtop/actions/common/output.utils.js +79 -0
- package/dist/nodes/Airtop/actions/common/output.utils.js.map +1 -0
- package/dist/nodes/Airtop/actions/common/session.utils.js +2 -2
- package/dist/nodes/Airtop/actions/common/session.utils.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/getPaginated.operation.js +13 -4
- package/dist/nodes/Airtop/actions/extraction/getPaginated.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/query.operation.js +21 -3
- package/dist/nodes/Airtop/actions/extraction/query.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/extraction/scrape.operation.js +2 -1
- package/dist/nodes/Airtop/actions/extraction/scrape.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/file/File.resource.js +104 -0
- package/dist/nodes/Airtop/actions/file/File.resource.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/delete.operation.js +60 -0
- package/dist/nodes/Airtop/actions/file/delete.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/get.operation.js +91 -0
- package/dist/nodes/Airtop/actions/file/get.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/getMany.operation.js +100 -0
- package/dist/nodes/Airtop/actions/file/getMany.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/helpers.js +199 -0
- package/dist/nodes/Airtop/actions/file/helpers.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/load.operation.js +85 -0
- package/dist/nodes/Airtop/actions/file/load.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/file/upload.operation.js +186 -0
- package/dist/nodes/Airtop/actions/file/upload.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/interaction/Interaction.resource.js +22 -1
- package/dist/nodes/Airtop/actions/interaction/Interaction.resource.js.map +1 -1
- package/dist/nodes/Airtop/actions/interaction/fill.operation.js +89 -0
- package/dist/nodes/Airtop/actions/interaction/fill.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/interaction/scroll.operation.js +219 -0
- package/dist/nodes/Airtop/actions/interaction/scroll.operation.js.map +1 -0
- package/dist/nodes/Airtop/actions/node.type.js.map +1 -1
- package/dist/nodes/Airtop/actions/router.js +13 -4
- package/dist/nodes/Airtop/actions/router.js.map +1 -1
- package/dist/nodes/Airtop/actions/session/create.operation.js +85 -32
- package/dist/nodes/Airtop/actions/session/create.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/Window.resource.js +2 -1
- package/dist/nodes/Airtop/actions/window/Window.resource.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/create.operation.js +1 -1
- package/dist/nodes/Airtop/actions/window/create.operation.js.map +1 -1
- package/dist/nodes/Airtop/actions/window/takeScreenshot.operation.js +26 -3
- package/dist/nodes/Airtop/actions/window/takeScreenshot.operation.js.map +1 -1
- package/dist/nodes/Airtop/constants.js +38 -5
- package/dist/nodes/Airtop/constants.js.map +1 -1
- package/dist/nodes/Airtop/countries.js +1026 -0
- package/dist/nodes/Airtop/countries.js.map +1 -0
- package/dist/nodes/Airtop/transport/index.js +6 -3
- package/dist/nodes/Airtop/transport/index.js.map +1 -1
- package/dist/nodes/Airtop/transport/types.js.map +1 -1
- package/dist/nodes/Aws/IAM/AwsIam.node.js +95 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.js.map +1 -0
- package/dist/nodes/Aws/IAM/AwsIam.node.json +18 -0
- package/dist/nodes/Aws/IAM/AwsIam.svg +18 -0
- package/dist/nodes/Aws/IAM/descriptions/common.js +188 -0
- package/dist/nodes/Aws/IAM/descriptions/common.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js +175 -0
- package/dist/nodes/Aws/IAM/descriptions/group/Group.resource.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js +66 -0
- package/dist/nodes/Aws/IAM/descriptions/group/create.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/group/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js +50 -0
- package/dist/nodes/Aws/IAM/descriptions/group/get.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js +47 -0
- package/dist/nodes/Aws/IAM/descriptions/group/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js +70 -0
- package/dist/nodes/Aws/IAM/descriptions/group/update.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/index.js +42 -0
- package/dist/nodes/Aws/IAM/descriptions/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js +231 -0
- package/dist/nodes/Aws/IAM/descriptions/user/User.resource.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js +47 -0
- package/dist/nodes/Aws/IAM/descriptions/user/addToGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js +118 -0
- package/dist/nodes/Aws/IAM/descriptions/user/create.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/user/delete.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js +43 -0
- package/dist/nodes/Aws/IAM/descriptions/user/get.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js +66 -0
- package/dist/nodes/Aws/IAM/descriptions/user/getAll.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js +74 -0
- package/dist/nodes/Aws/IAM/descriptions/user/removeFromGroup.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js +68 -0
- package/dist/nodes/Aws/IAM/descriptions/user/update.operation.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/constants.js +47 -0
- package/dist/nodes/Aws/IAM/helpers/constants.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/errorHandler.js +90 -0
- package/dist/nodes/Aws/IAM/helpers/errorHandler.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/types.js +17 -0
- package/dist/nodes/Aws/IAM/helpers/types.js.map +1 -0
- package/dist/nodes/Aws/IAM/helpers/utils.js +279 -0
- package/dist/nodes/Aws/IAM/helpers/utils.js.map +1 -0
- package/dist/nodes/Aws/IAM/methods/index.js +39 -0
- package/dist/nodes/Aws/IAM/methods/index.js.map +1 -0
- package/dist/nodes/Aws/IAM/methods/listSearch.js +132 -0
- package/dist/nodes/Aws/IAM/methods/listSearch.js.map +1 -0
- package/dist/nodes/Aws/IAM/transport/index.js +64 -0
- package/dist/nodes/Aws/IAM/transport/index.js.map +1 -0
- package/dist/nodes/Cron/Cron.node.js +1 -1
- package/dist/nodes/Cron/Cron.node.js.map +1 -1
- package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js +2 -2
- package/dist/nodes/EmailReadImap/v1/EmailReadImapV1.node.js.map +1 -1
- package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js +2 -2
- package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js.map +1 -1
- package/dist/nodes/Evaluation/Evaluation/Description.node.js +146 -0
- package/dist/nodes/Evaluation/Evaluation/Description.node.js.map +1 -0
- package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js +117 -0
- package/dist/nodes/Evaluation/Evaluation/Evaluation.node.ee.js.map +1 -0
- package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js +187 -0
- package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js.map +1 -0
- package/dist/nodes/Evaluation/methods/index.js +42 -0
- package/dist/nodes/Evaluation/methods/index.js.map +1 -0
- package/dist/nodes/Evaluation/methods/loadOptions.js +40 -0
- package/dist/nodes/Evaluation/methods/loadOptions.js.map +1 -0
- package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js +119 -0
- package/dist/nodes/Evaluation/utils/evaluationTriggerUtils.js.map +1 -0
- package/dist/nodes/Evaluation/utils/evaluationUtils.js +171 -0
- package/dist/nodes/Evaluation/utils/evaluationUtils.js.map +1 -0
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js +4 -3
- package/dist/nodes/ExecuteWorkflow/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js.map +1 -1
- package/dist/nodes/Form/common.descriptions.js +2 -2
- package/dist/nodes/Form/common.descriptions.js.map +1 -1
- package/dist/nodes/Google/Drive/v2/actions/file/upload.operation.js +4 -1
- package/dist/nodes/Google/Drive/v2/actions/file/upload.operation.js.map +1 -1
- package/dist/nodes/Google/Firebase/CloudFirestore/GenericFunctions.js +1 -2
- package/dist/nodes/Google/Firebase/CloudFirestore/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js +113 -107
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js +52 -106
- package/dist/nodes/Google/Sheet/v2/actions/sheet/read.operation.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js +97 -0
- package/dist/nodes/Google/Sheet/v2/actions/utils/readOperation.js.map +1 -0
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +20 -17
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Google/YouTube/YouTube.node.js +4 -2
- package/dist/nodes/Google/YouTube/YouTube.node.js.map +1 -1
- package/dist/nodes/HttpRequest/GenericFunctions.js +1 -1
- package/dist/nodes/HttpRequest/GenericFunctions.js.map +1 -1
- package/dist/nodes/Interval/Interval.node.js +1 -1
- package/dist/nodes/Interval/Interval.node.js.map +1 -1
- package/dist/nodes/Jira/Jira.node.js +34 -15
- package/dist/nodes/Jira/Jira.node.js.map +1 -1
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js +2 -2
- package/dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js.map +1 -1
- package/dist/nodes/MQTT/MqttTrigger.node.js +2 -2
- package/dist/nodes/MQTT/MqttTrigger.node.js.map +1 -1
- package/dist/nodes/ManualTrigger/ManualTrigger.node.js +1 -1
- package/dist/nodes/ManualTrigger/ManualTrigger.node.js.map +1 -1
- package/dist/nodes/Merge/Merge.node.js +3 -2
- package/dist/nodes/Merge/Merge.node.js.map +1 -1
- package/dist/nodes/Merge/v3/actions/mode/combineBySql.js +42 -4
- package/dist/nodes/Merge/v3/actions/mode/combineBySql.js.map +1 -1
- package/dist/nodes/Merge/v3/actions/versionDescription.js +1 -1
- package/dist/nodes/Merge/v3/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js +93 -0
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharePoint.node.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/MicrosoftSharepoint.node.json +18 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js +190 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/common.descriptions.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js +108 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/File.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js +62 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/download.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js +129 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/update.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js +77 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/file/upload.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/index.js +45 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/index.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js +175 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/Item.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/create.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js +62 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/delete.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js +83 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/get.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js +203 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/getAll.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/update.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js +100 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/item/upsert.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js +99 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/List.resource.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js +65 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/get.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js +105 -0
- package/dist/nodes/Microsoft/SharePoint/descriptions/list/getAll.operation.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js +17 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/interfaces.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/utils.js +252 -0
- package/dist/nodes/Microsoft/SharePoint/helpers/utils.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/index.js +42 -0
- package/dist/nodes/Microsoft/SharePoint/methods/index.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js +222 -0
- package/dist/nodes/Microsoft/SharePoint/methods/listSearch.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js +104 -0
- package/dist/nodes/Microsoft/SharePoint/methods/resourceMapping.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/test/credentials.js +54 -0
- package/dist/nodes/Microsoft/SharePoint/test/credentials.js.map +1 -0
- package/dist/nodes/Microsoft/SharePoint/transport/index.js +46 -0
- package/dist/nodes/Microsoft/SharePoint/transport/index.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js +387 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/MicrosoftTeamsTrigger.node.json +18 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.js +17 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/types.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js +147 -0
- package/dist/nodes/Microsoft/Teams/v2/helpers/utils-trigger.js.map +1 -0
- package/dist/nodes/Microsoft/Teams/v2/transport/index.js.map +1 -1
- package/dist/nodes/MongoDb/GenericFunctions.js +9 -2
- package/dist/nodes/MongoDb/GenericFunctions.js.map +1 -1
- package/dist/nodes/MongoDb/MongoDb.node.js +25 -5
- package/dist/nodes/MongoDb/MongoDb.node.js.map +1 -1
- package/dist/nodes/PostBin/BinDescription.js +1 -1
- package/dist/nodes/PostBin/BinDescription.js.map +1 -1
- package/dist/nodes/PostBin/GenericFunctions.js +5 -5
- package/dist/nodes/PostBin/GenericFunctions.js.map +1 -1
- package/dist/nodes/PostBin/PostBin.node.js +1 -1
- package/dist/nodes/PostBin/PostBin.node.js.map +1 -1
- package/dist/nodes/PostBin/RequestDescription.js +2 -2
- package/dist/nodes/PostBin/RequestDescription.js.map +1 -1
- package/dist/nodes/Postgres/PostgresTrigger.node.js +2 -2
- package/dist/nodes/Postgres/PostgresTrigger.node.js.map +1 -1
- package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js +2 -2
- package/dist/nodes/RabbitMQ/RabbitMQTrigger.node.js.map +1 -1
- package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js +8 -3
- package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js.map +1 -1
- package/dist/nodes/RespondToWebhook/utils.js +43 -0
- package/dist/nodes/RespondToWebhook/utils.js.map +1 -0
- package/dist/nodes/Schedule/ScheduleTrigger.node.js +1 -1
- package/dist/nodes/Schedule/ScheduleTrigger.node.js.map +1 -1
- package/dist/nodes/Snowflake/GenericFunctions.js +34 -2
- package/dist/nodes/Snowflake/GenericFunctions.js.map +1 -1
- package/dist/nodes/Snowflake/Snowflake.node.js +5 -7
- package/dist/nodes/Snowflake/Snowflake.node.js.map +1 -1
- package/dist/nodes/SseTrigger/SseTrigger.node.js +2 -2
- package/dist/nodes/SseTrigger/SseTrigger.node.js.map +1 -1
- package/dist/nodes/Telegram/Telegram.node.js +5 -1
- package/dist/nodes/Telegram/Telegram.node.js.map +1 -1
- package/dist/nodes/Transform/Summarize/utils.js +2 -1
- package/dist/nodes/Transform/Summarize/utils.js.map +1 -1
- package/dist/test/setup.js +1 -0
- package/dist/test/setup.js.map +1 -1
- package/dist/types/credentials.json +7 -7
- package/dist/types/nodes.json +27 -23
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js +12 -2
- package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js.map +1 -1
- package/package.json +15 -12
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.js +0 -119
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.js.map +0 -1
- package/dist/nodes/EvaluationMetrics/EvaluationMetrics.node.json +0 -14
- /package/dist/{credentials/icons/SharePoint.svg → nodes/Microsoft/SharePoint/microsoftSharePoint.svg} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/Jira/Jira.node.ts"],"sourcesContent":["import mergeWith from 'lodash/mergeWith';\nimport type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodeListSearchItems,\n\tINodeListSearchResult,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { BINARY_ENCODING, NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\nimport type { Readable } from 'stream';\n\nimport {\n\tfilterSortSearchListItems,\n\tgetUsers,\n\tjiraSoftwareCloudApiRequest,\n\tjiraSoftwareCloudApiRequestAllItems,\n\tsimplifyIssueOutput,\n\tvalidateJSON,\n} from './GenericFunctions';\nimport { issueAttachmentFields, issueAttachmentOperations } from './IssueAttachmentDescription';\nimport { issueCommentFields, issueCommentOperations } from './IssueCommentDescription';\nimport { issueFields, issueOperations } from './IssueDescription';\nimport type {\n\tIFields,\n\tIIssue,\n\tINotificationRecipients,\n\tINotify,\n\tNotificationRecipientsRestrictions,\n} from './IssueInterface';\nimport { userFields, userOperations } from './UserDescription';\n\nexport class Jira implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Jira Software',\n\t\tname: 'jira',\n\t\ticon: 'file:jira.svg',\n\t\tgroup: ['output'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume Jira Software API',\n\t\tdefaults: {\n\t\t\tname: 'Jira Software',\n\t\t},\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tusableAsTool: true,\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareCloudApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['cloud'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareServerApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['server'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareServerPatApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['serverPat'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Jira Version',\n\t\t\t\tname: 'jiraVersion',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Cloud',\n\t\t\t\t\t\tvalue: 'cloud',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Server (Self Hosted)',\n\t\t\t\t\t\tvalue: 'server',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Server Pat (Self Hosted)',\n\t\t\t\t\t\tvalue: 'serverPat',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'cloud',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue',\n\t\t\t\t\t\tvalue: 'issue',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue Attachment',\n\t\t\t\t\t\tvalue: 'issueAttachment',\n\t\t\t\t\t\tdescription: 'Add, remove, and get an attachment from an issue',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue Comment',\n\t\t\t\t\t\tvalue: 'issueComment',\n\t\t\t\t\t\tdescription: 'Get, create, update, and delete a comment from an issue',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'User',\n\t\t\t\t\t\tvalue: 'user',\n\t\t\t\t\t\tdescription: 'Get, create and delete a user',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'issue',\n\t\t\t},\n\t\t\t...issueOperations,\n\t\t\t...issueFields,\n\t\t\t...issueAttachmentOperations,\n\t\t\t...issueAttachmentFields,\n\t\t\t...issueCommentOperations,\n\t\t\t...issueCommentFields,\n\t\t\t...userOperations,\n\t\t\t...userFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tlistSearch: {\n\t\t\t// Get all the projects to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getProjects(\n\t\t\t\tthis: ILoadOptionsFunctions,\n\t\t\t\tfilter?: string,\n\t\t\t): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string;\n\t\t\t\tlet endpoint = '';\n\t\t\t\tlet projects;\n\n\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\tendpoint = '/api/2/project';\n\t\t\t\t\tprojects = await jiraSoftwareCloudApiRequest.call(this, endpoint, 'GET');\n\t\t\t\t} else {\n\t\t\t\t\tendpoint = '/api/2/project/search';\n\t\t\t\t\tprojects = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'values',\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (projects.values && Array.isArray(projects.values)) {\n\t\t\t\t\tprojects = projects.values;\n\t\t\t\t}\n\t\t\t\tfor (const project of projects) {\n\t\t\t\t\tconst projectName = project.name;\n\t\t\t\t\tconst projectId = project.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: projectName,\n\t\t\t\t\t\tvalue: projectId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn { results: filterSortSearchListItems(returnData, filter) };\n\t\t\t},\n\n\t\t\t// Get all the issue types to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getIssueTypes(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst projectId = this.getCurrentNodeParameter('project', { extractValue: true });\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst { issueTypes } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/project/${projectId}`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tif (!issueTypes) return { results: [] };\n\n\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\tconst issueTypeName = issueType.name;\n\t\t\t\t\tconst issueTypeId = issueType.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: issueTypeName,\n\t\t\t\t\t\tvalue: issueTypeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the users to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getUsers(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult> {\n\t\t\t\tconst users = await getUsers.call(this);\n\n\t\t\t\treturn { results: filterSortSearchListItems(users, filter) };\n\t\t\t},\n\n\t\t\t// Get all the priorities to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getPriorities(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\n\t\t\t\tconst priorities = await jiraSoftwareCloudApiRequest.call(this, '/api/2/priority', 'GET');\n\n\t\t\t\tfor (const priority of priorities) {\n\t\t\t\t\tconst priorityName = priority.name;\n\t\t\t\t\tconst priorityId = priority.id;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: priorityName,\n\t\t\t\t\t\tvalue: priorityId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the transitions (status) to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getTransitions(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\n\t\t\t\tconst issueKey = this.getCurrentNodeParameter('issueKey');\n\t\t\t\tconst transitions = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tfor (const transition of transitions.transitions) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: transition.name,\n\t\t\t\t\t\tvalue: transition.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the custom fields to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getCustomFields(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst operation = this.getCurrentNodeParameter('operation') as string;\n\t\t\t\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\t\t\t\tlet projectId: string;\n\t\t\t\tlet issueTypeId: string;\n\t\t\t\tlet issueId: string = ''; // /editmeta endpoint requires issueId\n\n\t\t\t\tif (operation === 'create') {\n\t\t\t\t\tprojectId = this.getCurrentNodeParameter('project', { extractValue: true }) as string;\n\t\t\t\t\tissueTypeId = this.getCurrentNodeParameter('issueType', { extractValue: true }) as string;\n\t\t\t\t} else {\n\t\t\t\t\tconst issueKey = this.getCurrentNodeParameter('issueKey') as string;\n\t\t\t\t\tconst res = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{},\n\t\t\t\t\t);\n\t\t\t\t\tprojectId = res.fields.project.id;\n\t\t\t\t\tissueTypeId = res.fields.issuetype.id;\n\t\t\t\t\tissueId = res.id;\n\t\t\t\t}\n\n\t\t\t\tif (jiraVersion === 'server' && operation === 'update' && issueId) {\n\t\t\t\t\t// https://developer.atlassian.com/server/jira/platform/jira-rest-api-example-edit-issues-6291632/?utm_source=chatgpt.com\n\t\t\t\t\tconst { fields } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueId}/editmeta`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\n\t\t\t\t\tfor (const field of Object.keys(fields || {})) {\n\t\t\t\t\t\tif (field.startsWith('customfield_')) {\n\t\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\t\tname: fields[field].name,\n\t\t\t\t\t\t\t\tvalue: field,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn { results: returnData };\n\t\t\t\t}\n\n\t\t\t\tconst res = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/issue/createmeta?projectIds=${projectId}&issueTypeIds=${issueTypeId}&expand=projects.issuetypes.fields`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tconst fields = res.projects\n\t\t\t\t\t.find((o: any) => o.id === projectId)\n\t\t\t\t\t.issuetypes.find((o: any) => o.id === issueTypeId).fields;\n\n\t\t\t\tfor (const key of Object.keys(fields as IDataObject)) {\n\t\t\t\t\tconst field = fields[key];\n\t\t\t\t\tif (field.schema && Object.keys(field.schema as IDataObject).includes('customId')) {\n\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\t\tvalue: field.key || field.fieldId,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\t\t},\n\t\tloadOptions: {\n\t\t\t// Get all the labels to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getLabels(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst labels = await jiraSoftwareCloudApiRequest.call(this, '/api/2/label', 'GET');\n\n\t\t\t\tfor (const label of labels.values) {\n\t\t\t\t\tconst labelName = label;\n\t\t\t\t\tconst labelId = label;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: labelName,\n\t\t\t\t\t\tvalue: labelId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\n\t\t\t// Get all the users to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getUsers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\treturn await getUsers.call(this);\n\t\t\t},\n\n\t\t\t// Get all the groups to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getGroups(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst groups = await jiraSoftwareCloudApiRequest.call(this, '/api/2/groups/picker', 'GET');\n\n\t\t\t\tfor (const group of groups.groups) {\n\t\t\t\t\tconst groupName = group.name;\n\t\t\t\t\tconst groupId = group.name;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: groupName,\n\t\t\t\t\t\tvalue: groupId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\n\t\t\t// Get all the components to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getProjectComponents(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst project = this.getCurrentNodeParameter('project', { extractValue: true });\n\t\t\t\tconst { values: components } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/project/${project}/component`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tfor (const component of components) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: component.name,\n\t\t\t\t\t\tvalue: component.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t},\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: INodeExecutionData[] = [];\n\t\tconst length = items.length;\n\t\tlet responseData;\n\t\tconst qs: IDataObject = {};\n\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\t\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\t\tif (resource === 'issue') {\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-post\n\t\t\tif (operation === 'create') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst summary = this.getNodeParameter('summary', i) as string;\n\t\t\t\t\tconst projectId = this.getNodeParameter('project', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t}) as string;\n\t\t\t\t\tconst issueTypeId = this.getNodeParameter('issueType', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t}) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\n\t\t\t\t\tconst assignee = this.getNodeParameter('additionalFields.assignee', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (assignee) additionalFields.assignee = assignee;\n\n\t\t\t\t\tconst reporter = this.getNodeParameter('additionalFields.reporter', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (reporter) additionalFields.reporter = reporter;\n\n\t\t\t\t\tconst priority = this.getNodeParameter('additionalFields.priority', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (priority) additionalFields.priority = priority;\n\n\t\t\t\t\tconst body: IIssue = {};\n\t\t\t\t\tconst fields: IFields = {\n\t\t\t\t\t\tsummary,\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\tid: projectId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tissuetype: {\n\t\t\t\t\t\t\tid: issueTypeId,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tif (additionalFields.labels) {\n\t\t\t\t\t\tfields.labels = additionalFields.labels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.serverLabels) {\n\t\t\t\t\t\tfields.labels = additionalFields.serverLabels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.priority) {\n\t\t\t\t\t\tfields.priority = {\n\t\t\t\t\t\t\tid: additionalFields.priority as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.assignee) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tname: additionalFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tid: additionalFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.reporter) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tname: additionalFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tid: additionalFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.description) {\n\t\t\t\t\t\tfields.description = additionalFields.description as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.updateHistory) {\n\t\t\t\t\t\tqs.updateHistory = additionalFields.updateHistory as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.componentIds) {\n\t\t\t\t\t\tfields.components = (additionalFields.componentIds as string[]).map((id) => ({ id }));\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.customFieldsUi) {\n\t\t\t\t\t\tconst customFields = (additionalFields.customFieldsUi as IDataObject)\n\t\t\t\t\t\t\t.customFieldsValues as IDataObject[];\n\t\t\t\t\t\tif (customFields) {\n\t\t\t\t\t\t\t// resolve resource locator fieldId value\n\t\t\t\t\t\t\tcustomFields.forEach((cf) => {\n\t\t\t\t\t\t\t\tif (typeof cf.fieldId !== 'string') {\n\t\t\t\t\t\t\t\t\tcf.fieldId = ((cf.fieldId as IDataObject).value as string).trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst data = customFields.reduce(\n\t\t\t\t\t\t\t\t(obj, value) => Object.assign(obj, { [`${value.fieldId}`]: value.fieldValue }),\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tObject.assign(fields, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst issueTypes = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'/api/2/issuetype',\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tconst subtaskIssues = [];\n\t\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\t\tif (issueType.subtask) {\n\t\t\t\t\t\t\tsubtaskIssues.push(issueType.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!additionalFields.parentIssueKey && subtaskIssues.includes(issueTypeId)) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'You must define a Parent Issue Key when Issue type is sub-task',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (additionalFields.parentIssueKey && subtaskIssues.includes(issueTypeId)) {\n\t\t\t\t\t\tfields.parent = {\n\t\t\t\t\t\t\tkey: (additionalFields.parentIssueKey as string).toUpperCase(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = fields;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(this, '/api/2/issue', 'POST', body);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-put\n\t\t\tif (operation === 'update') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\tconst assignee = this.getNodeParameter('updateFields.assignee', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (assignee) updateFields.assignee = assignee;\n\n\t\t\t\t\tconst reporter = this.getNodeParameter('updateFields.reporter', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (reporter) updateFields.reporter = reporter;\n\n\t\t\t\t\tconst priority = this.getNodeParameter('updateFields.priority', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (priority) updateFields.priority = priority;\n\n\t\t\t\t\tconst statusId = this.getNodeParameter('updateFields.statusId', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (statusId) updateFields.statusId = statusId;\n\n\t\t\t\t\tconst body: IIssue = {};\n\t\t\t\t\tconst fields: IFields = {};\n\t\t\t\t\tif (updateFields.summary) {\n\t\t\t\t\t\tfields.summary = updateFields.summary as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.issueType) {\n\t\t\t\t\t\tfields.issuetype = {\n\t\t\t\t\t\t\tid: updateFields.issueType as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.labels) {\n\t\t\t\t\t\tfields.labels = updateFields.labels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.serverLabels) {\n\t\t\t\t\t\tfields.labels = updateFields.serverLabels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.priority) {\n\t\t\t\t\t\tfields.priority = {\n\t\t\t\t\t\t\tid: updateFields.priority as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.assignee) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tname: updateFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tid: updateFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.reporter) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tname: updateFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tid: updateFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\tfields.description = updateFields.description as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.customFieldsUi) {\n\t\t\t\t\t\tconst customFields = (updateFields.customFieldsUi as IDataObject)\n\t\t\t\t\t\t\t.customFieldsValues as IDataObject[];\n\t\t\t\t\t\tif (customFields) {\n\t\t\t\t\t\t\t// resolve resource locator fieldId value\n\t\t\t\t\t\t\tcustomFields.forEach((cf) => {\n\t\t\t\t\t\t\t\tif (typeof cf.fieldId !== 'string') {\n\t\t\t\t\t\t\t\t\tcf.fieldId = ((cf.fieldId as IDataObject).value as string).trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst data = customFields.reduce(\n\t\t\t\t\t\t\t\t(obj, value) => Object.assign(obj, { [`${value.fieldId}`]: value.fieldValue }),\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tObject.assign(fields, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst issueTypes = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'/api/2/issuetype',\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\t\t\t\t\tconst subtaskIssues = [];\n\t\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\t\tif (issueType.subtask) {\n\t\t\t\t\t\t\tsubtaskIssues.push(issueType.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!updateFields.parentIssueKey && subtaskIssues.includes(updateFields.issueType)) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'You must define a Parent Issue Key when Issue type is sub-task',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tupdateFields.parentIssueKey &&\n\t\t\t\t\t\tsubtaskIssues.includes(updateFields.issueType)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfields.parent = {\n\t\t\t\t\t\t\tkey: (updateFields.parentIssueKey as string).toUpperCase(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = fields;\n\n\t\t\t\t\tif (updateFields.statusId) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t{ transition: { id: updateFields.statusId } },\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t);\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst simplifyOutput = this.getNodeParameter('simplifyOutput', i) as boolean;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tif (additionalFields.fields) {\n\t\t\t\t\t\tqs.fields = additionalFields.fields as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.fieldsByKey) {\n\t\t\t\t\t\tqs.fieldsByKey = additionalFields.fieldsByKey as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.expand) {\n\t\t\t\t\t\tqs.expand = additionalFields.expand as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (simplifyOutput) {\n\t\t\t\t\t\tqs.expand = `${qs.expand || ''},names`;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.properties) {\n\t\t\t\t\t\tqs.properties = additionalFields.properties as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.updateHistory) {\n\t\t\t\t\t\tqs.updateHistory = additionalFields.updateHistory as string;\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (simplifyOutput) {\n\t\t\t\t\t\t// Use rendered fields if requested and available\n\t\t\t\t\t\tqs.expand = qs.expand || '';\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(qs.expand as string).toLowerCase().indexOf('renderedfields') !== -1 &&\n\t\t\t\t\t\t\tresponseData.renderedFields &&\n\t\t\t\t\t\t\tObject.keys(responseData.renderedFields as IDataObject[]).length\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresponseData.fields = mergeWith(\n\t\t\t\t\t\t\t\tresponseData.fields,\n\t\t\t\t\t\t\t\tresponseData.renderedFields,\n\t\t\t\t\t\t\t\t(a, b) => (b === null ? a : b),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(simplifyIssueOutput(responseData)),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-post\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (!options.fields) {\n\t\t\t\t\t\t// By default, the new endpoint returns only the ids, before it used to return `*navigable` fields\n\t\t\t\t\t\toptions.fields = '*navigable';\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = (options.fields as string).split(',');\n\t\t\t\t\tif (!options.jql) {\n\t\t\t\t\t\t// Jira API returns an error if the JQL query is unbounded (i.e. does not include any filters)\n\t\t\t\t\t\toptions.jql = 'created >= \"1970-01-01\"';\n\t\t\t\t\t}\n\t\t\t\t\tbody.jql = options.jql as string;\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tif (typeof options.expand === 'string') {\n\t\t\t\t\t\t\tbody.expand = options.expand.split(',');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbody.expand = options.expand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'issues',\n\t\t\t\t\t\t\t'/api/2/search/jql',\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t'token',\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tbody.maxResults = limit;\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'/api/2/search/jql',\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.issues;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-changelog-get\n\t\t\tif (operation === 'changelog') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'values',\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/changelog`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/changelog`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.values;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-notify-post\n\t\t\tif (operation === 'notify') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tconst jsonActive = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst body: INotify = {};\n\t\t\t\t\tif (additionalFields.textBody) {\n\t\t\t\t\t\tbody.textBody = additionalFields.textBody as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.htmlBody) {\n\t\t\t\t\t\tbody.htmlBody = additionalFields.htmlBody as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (!jsonActive) {\n\t\t\t\t\t\tconst notificationRecipientsValues = (\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsUi', i) as IDataObject\n\t\t\t\t\t\t).notificationRecipientsValues as IDataObject;\n\t\t\t\t\t\tconst notificationRecipients: INotificationRecipients = {};\n\t\t\t\t\t\tif (notificationRecipientsValues) {\n\t\t\t\t\t\t\tif (notificationRecipientsValues.reporter) {\n\t\t\t\t\t\t\t\tnotificationRecipients.reporter = notificationRecipientsValues.reporter as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.assignee) {\n\t\t\t\t\t\t\t\tnotificationRecipients.assignee = notificationRecipientsValues.assignee as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.assignee) {\n\t\t\t\t\t\t\t\tnotificationRecipients.watchers = notificationRecipientsValues.watchers as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.voters) {\n\t\t\t\t\t\t\t\tnotificationRecipients.watchers = notificationRecipientsValues.voters as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (((notificationRecipientsValues.users as IDataObject[]) || []).length > 0) {\n\t\t\t\t\t\t\t\tnotificationRecipients.users = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsValues.users as IDataObject[]\n\t\t\t\t\t\t\t\t).map((user) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\taccountId: user,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (((notificationRecipientsValues.groups as IDataObject[]) || []).length > 0) {\n\t\t\t\t\t\t\t\tnotificationRecipients.groups = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsValues.groups as IDataObject[]\n\t\t\t\t\t\t\t\t).map((group) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: group,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.to = notificationRecipients;\n\t\t\t\t\t\tconst notificationRecipientsRestrictionsValues = (\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsRestrictionsUi', i) as IDataObject\n\t\t\t\t\t\t).notificationRecipientsRestrictionsValues as IDataObject;\n\t\t\t\t\t\tconst notificationRecipientsRestrictions: NotificationRecipientsRestrictions = {};\n\t\t\t\t\t\tif (notificationRecipientsRestrictionsValues) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t((notificationRecipientsRestrictionsValues.groups as IDataObject[]) || []).length >\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnotificationRecipientsRestrictions.groups = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsRestrictionsValues.groups as IDataObject[]\n\t\t\t\t\t\t\t\t).map((group) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: group,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.restrict = notificationRecipientsRestrictions;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst notificationRecipientsJson = validateJSON(\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsJson', i) as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (notificationRecipientsJson) {\n\t\t\t\t\t\t\tbody.to = notificationRecipientsJson;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst notificationRecipientsRestrictionsJson = validateJSON(\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsRestrictionsJson', i) as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (notificationRecipientsRestrictionsJson) {\n\t\t\t\t\t\t\tbody.restrict = notificationRecipientsRestrictionsJson;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}/notify`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }), //endpoint returns no content\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-transitions-get\n\t\t\tif (operation === 'transitions') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tif (additionalFields.transitionId) {\n\t\t\t\t\t\tqs.transitionId = additionalFields.transitionId as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.expand) {\n\t\t\t\t\t\tqs.expand = additionalFields.expand as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.skipRemoteOnlyCondition) {\n\t\t\t\t\t\tqs.skipRemoteOnlyCondition = additionalFields.skipRemoteOnlyCondition as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tresponseData = responseData.transitions;\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-delete\n\t\t\tif (operation === 'delete') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst deleteSubtasks = this.getNodeParameter('deleteSubtasks', i) as boolean;\n\t\t\t\t\tqs.deleteSubtasks = deleteSubtasks;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (resource === 'issueAttachment') {\n\t\t\tconst apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-issue-issueidorkey-attachments-post\n\t\t\tif (operation === 'add') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);\n\n\t\t\t\t\tlet uploadData: Buffer | Readable;\n\t\t\t\t\tif (binaryData.id) {\n\t\t\t\t\t\tuploadData = await this.helpers.getBinaryStream(binaryData.id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tuploadData = Buffer.from(binaryData.data, BINARY_ENCODING);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/attachments`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformData: {\n\t\t\t\t\t\t\t\tfile: {\n\t\t\t\t\t\t\t\t\tvalue: uploadData,\n\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\tfilename: binaryData.fileName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-delete\n\t\t\tif (operation === 'remove') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst attachmentId = this.getNodeParameter('attachmentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/attachment/${attachmentId}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tconst download = this.getNodeParameter('download', 0);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst attachmentId = this.getNodeParameter('attachmentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/attachment/${attachmentId}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t\tif (download) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryProperty', 0);\n\t\t\t\t\tfor (const [index, attachment] of returnData.entries()) {\n\t\t\t\t\t\treturnData[index].binary = {};\n\n\t\t\t\t\t\tconst buffer = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tattachment?.json.content as string,\n\t\t\t\t\t\t\t{ json: false, encoding: null, useStream: true },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tbuffer as Buffer,\n\t\t\t\t\t\t\tattachment.json.filename as string,\n\t\t\t\t\t\t\tattachment.json.mimeType as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tconst download = this.getNodeParameter('download', 0);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst {\n\t\t\t\t\t\tfields: { attachment },\n\t\t\t\t\t} = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tresponseData = attachment;\n\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tresponseData = responseData.slice(0, limit);\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = responseData.map((data: IDataObject) => ({ json: data }));\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t\tif (download) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryProperty', 0);\n\t\t\t\t\tfor (const [index, attachment] of returnData.entries()) {\n\t\t\t\t\t\treturnData[index].binary = {};\n\t\t\t\t\t\tconst buffer = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tattachment.json.content as string,\n\t\t\t\t\t\t\t{ json: false, encoding: null, useStream: true },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tbuffer as Buffer,\n\t\t\t\t\t\t\tattachment.json.filename as string,\n\t\t\t\t\t\t\tattachment.json.mimeType as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (resource === 'issueComment') {\n\t\t\tlet apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-post\n\t\t\tif (operation === 'add') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst jsonParameters = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\tif (options.wikiMarkup) {\n\t\t\t\t\t\tapiVersion = '2';\n\t\t\t\t\t}\n\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tqs.expand = options.expand as string;\n\t\t\t\t\t\tdelete options.expand;\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(body, options);\n\t\t\t\t\tif (!jsonParameters) {\n\t\t\t\t\t\tconst comment = this.getNodeParameter('comment', i) as string;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat' || options.wikiMarkup) {\n\t\t\t\t\t\t\tObject.assign(body, { body: comment });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tObject.assign(body, {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\ttype: 'doc',\n\t\t\t\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: 'paragraph',\n\t\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext: comment,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst commentJson = this.getNodeParameter('commentJson', i) as string;\n\t\t\t\t\t\tconst json = validateJSON(commentJson);\n\t\t\t\t\t\tif (json === '') {\n\t\t\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Document Format must be a valid JSON', {\n\t\t\t\t\t\t\t\titemIndex: i,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(body, { body: json });\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-get\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'comments',\n\t\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tqs.maxResults = limit;\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.comments;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-id-delete\n\t\t\tif (operation === 'remove') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-id-put\n\t\t\tif (operation === 'update') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst jsonParameters = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tqs.expand = options.expand as string;\n\t\t\t\t\t\tdelete options.expand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.wikiMarkup) {\n\t\t\t\t\t\tapiVersion = '2';\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tif (!jsonParameters) {\n\t\t\t\t\t\tconst comment = this.getNodeParameter('comment', i) as string;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat' || options.wikiMarkup) {\n\t\t\t\t\t\t\tObject.assign(body, { body: comment });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tObject.assign(body, {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\ttype: 'doc',\n\t\t\t\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: 'paragraph',\n\t\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext: comment,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst commentJson = this.getNodeParameter('commentJson', i) as string;\n\t\t\t\t\t\tconst json = validateJSON(commentJson);\n\t\t\t\t\t\tif (json === '') {\n\t\t\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Document Format must be a valid JSON', {\n\t\t\t\t\t\t\t\titemIndex: i,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(body, { body: json });\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (resource === 'user') {\n\t\t\tconst apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\tif (operation === 'create') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-post\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst body = {\n\t\t\t\t\t\tname: this.getNodeParameter('username', i),\n\t\t\t\t\t\temailAddress: this.getNodeParameter('emailAddress', i),\n\t\t\t\t\t\tdisplayName: this.getNodeParameter('displayName', i),\n\t\t\t\t\t};\n\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\n\t\t\t\t\tObject.assign(body, additionalFields);\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\t{},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t} else if (operation === 'delete') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-delete\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs.accountId = this.getNodeParameter('accountId', i);\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t} else if (operation === 'get') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-get\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs.accountId = this.getNodeParameter('accountId', i);\n\n\t\t\t\t\tconst { expand } = this.getNodeParameter('additionalFields', i) as { expand: string[] };\n\n\t\t\t\t\tif (expand) {\n\t\t\t\t\t\tqs.expand = expand.join(',');\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["res","fields","mergeWith"]}
|
|
1
|
+
{"version":3,"sources":["../../../nodes/Jira/Jira.node.ts"],"sourcesContent":["import mergeWith from 'lodash/mergeWith';\nimport type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodeListSearchItems,\n\tINodeListSearchResult,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { BINARY_ENCODING, NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\nimport type { Readable } from 'stream';\n\nimport {\n\tfilterSortSearchListItems,\n\tgetUsers,\n\tjiraSoftwareCloudApiRequest,\n\tjiraSoftwareCloudApiRequestAllItems,\n\tsimplifyIssueOutput,\n\tvalidateJSON,\n} from './GenericFunctions';\nimport { issueAttachmentFields, issueAttachmentOperations } from './IssueAttachmentDescription';\nimport { issueCommentFields, issueCommentOperations } from './IssueCommentDescription';\nimport { issueFields, issueOperations } from './IssueDescription';\nimport type {\n\tIFields,\n\tIIssue,\n\tINotificationRecipients,\n\tINotify,\n\tNotificationRecipientsRestrictions,\n} from './IssueInterface';\nimport { userFields, userOperations } from './UserDescription';\n\nexport class Jira implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Jira Software',\n\t\tname: 'jira',\n\t\ticon: 'file:jira.svg',\n\t\tgroup: ['output'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume Jira Software API',\n\t\tdefaults: {\n\t\t\tname: 'Jira Software',\n\t\t},\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tusableAsTool: true,\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareCloudApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['cloud'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareServerApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['server'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareServerPatApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['serverPat'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Jira Version',\n\t\t\t\tname: 'jiraVersion',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Cloud',\n\t\t\t\t\t\tvalue: 'cloud',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Server (Self Hosted)',\n\t\t\t\t\t\tvalue: 'server',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Server Pat (Self Hosted)',\n\t\t\t\t\t\tvalue: 'serverPat',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'cloud',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue',\n\t\t\t\t\t\tvalue: 'issue',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue Attachment',\n\t\t\t\t\t\tvalue: 'issueAttachment',\n\t\t\t\t\t\tdescription: 'Add, remove, and get an attachment from an issue',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue Comment',\n\t\t\t\t\t\tvalue: 'issueComment',\n\t\t\t\t\t\tdescription: 'Get, create, update, and delete a comment from an issue',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'User',\n\t\t\t\t\t\tvalue: 'user',\n\t\t\t\t\t\tdescription: 'Get, create and delete a user',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'issue',\n\t\t\t},\n\t\t\t...issueOperations,\n\t\t\t...issueFields,\n\t\t\t...issueAttachmentOperations,\n\t\t\t...issueAttachmentFields,\n\t\t\t...issueCommentOperations,\n\t\t\t...issueCommentFields,\n\t\t\t...userOperations,\n\t\t\t...userFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tlistSearch: {\n\t\t\t// Get all the projects to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getProjects(\n\t\t\t\tthis: ILoadOptionsFunctions,\n\t\t\t\tfilter?: string,\n\t\t\t): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string;\n\t\t\t\tlet endpoint = '';\n\t\t\t\tlet projects;\n\n\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\tendpoint = '/api/2/project';\n\t\t\t\t\tprojects = await jiraSoftwareCloudApiRequest.call(this, endpoint, 'GET');\n\t\t\t\t} else {\n\t\t\t\t\tendpoint = '/api/2/project/search';\n\t\t\t\t\tprojects = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'values',\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (projects.values && Array.isArray(projects.values)) {\n\t\t\t\t\tprojects = projects.values;\n\t\t\t\t}\n\t\t\t\tfor (const project of projects) {\n\t\t\t\t\tconst projectName = project.name;\n\t\t\t\t\tconst projectId = project.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: projectName,\n\t\t\t\t\t\tvalue: projectId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn { results: filterSortSearchListItems(returnData, filter) };\n\t\t\t},\n\n\t\t\t// Get all the issue types to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getIssueTypes(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst projectId = this.getCurrentNodeParameter('project', { extractValue: true });\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst { issueTypes } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/project/${projectId}`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tif (!issueTypes) return { results: [] };\n\n\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\tconst issueTypeName = issueType.name;\n\t\t\t\t\tconst issueTypeId = issueType.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: issueTypeName,\n\t\t\t\t\t\tvalue: issueTypeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the users to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getUsers(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult> {\n\t\t\t\tconst users = await getUsers.call(this);\n\n\t\t\t\treturn { results: filterSortSearchListItems(users, filter) };\n\t\t\t},\n\n\t\t\t// Get all the priorities to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getPriorities(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\n\t\t\t\tconst priorities = await jiraSoftwareCloudApiRequest.call(this, '/api/2/priority', 'GET');\n\n\t\t\t\tfor (const priority of priorities) {\n\t\t\t\t\tconst priorityName = priority.name;\n\t\t\t\t\tconst priorityId = priority.id;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: priorityName,\n\t\t\t\t\t\tvalue: priorityId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the transitions (status) to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getTransitions(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\n\t\t\t\tconst issueKey = this.getCurrentNodeParameter('issueKey');\n\t\t\t\tconst transitions = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tfor (const transition of transitions.transitions) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: transition.name,\n\t\t\t\t\t\tvalue: transition.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the custom fields to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getCustomFields(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst operation = this.getCurrentNodeParameter('operation') as string;\n\t\t\t\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\t\t\t\tlet projectId: string;\n\t\t\t\tlet issueTypeId: string;\n\t\t\t\tlet issueId: string = ''; // /editmeta endpoint requires issueId\n\n\t\t\t\tif (operation === 'create') {\n\t\t\t\t\tprojectId = this.getCurrentNodeParameter('project', { extractValue: true }) as string;\n\t\t\t\t\tissueTypeId = this.getCurrentNodeParameter('issueType', { extractValue: true }) as string;\n\t\t\t\t} else {\n\t\t\t\t\tconst issueKey = this.getCurrentNodeParameter('issueKey') as string;\n\t\t\t\t\tconst res = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{},\n\t\t\t\t\t);\n\t\t\t\t\tprojectId = res.fields.project.id;\n\t\t\t\t\tissueTypeId = res.fields.issuetype.id;\n\t\t\t\t\tissueId = res.id;\n\t\t\t\t}\n\n\t\t\t\tif (jiraVersion === 'server' && operation === 'update' && issueId) {\n\t\t\t\t\t// https://developer.atlassian.com/server/jira/platform/jira-rest-api-example-edit-issues-6291632/?utm_source=chatgpt.com\n\t\t\t\t\tconst { fields } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueId}/editmeta`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\n\t\t\t\t\tfor (const field of Object.keys(fields || {})) {\n\t\t\t\t\t\tif (field.startsWith('customfield_')) {\n\t\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\t\tname: fields[field].name,\n\t\t\t\t\t\t\t\tvalue: field,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn { results: returnData };\n\t\t\t\t}\n\n\t\t\t\tconst res = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/issue/createmeta?projectIds=${projectId}&issueTypeIds=${issueTypeId}&expand=projects.issuetypes.fields`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tconst fields = res.projects\n\t\t\t\t\t.find((o: any) => o.id === projectId)\n\t\t\t\t\t.issuetypes.find((o: any) => o.id === issueTypeId).fields;\n\n\t\t\t\tfor (const key of Object.keys(fields as IDataObject)) {\n\t\t\t\t\tconst field = fields[key];\n\t\t\t\t\tif (field.schema && Object.keys(field.schema as IDataObject).includes('customId')) {\n\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\t\tvalue: field.key || field.fieldId,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\t\t},\n\t\tloadOptions: {\n\t\t\t// Get all the labels to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getLabels(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst labels = await jiraSoftwareCloudApiRequest.call(this, '/api/2/label', 'GET');\n\n\t\t\t\tfor (const label of labels.values) {\n\t\t\t\t\tconst labelName = label;\n\t\t\t\t\tconst labelId = label;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: labelName,\n\t\t\t\t\t\tvalue: labelId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\n\t\t\t// Get all the users to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getUsers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\treturn await getUsers.call(this);\n\t\t\t},\n\n\t\t\t// Get all the groups to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getGroups(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst groups = await jiraSoftwareCloudApiRequest.call(this, '/api/2/groups/picker', 'GET');\n\n\t\t\t\tfor (const group of groups.groups) {\n\t\t\t\t\tconst groupName = group.name;\n\t\t\t\t\tconst groupId = group.name;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: groupName,\n\t\t\t\t\t\tvalue: groupId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\n\t\t\t// Get all the components to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getProjectComponents(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst project = this.getCurrentNodeParameter('project', { extractValue: true });\n\t\t\t\tconst { values: components } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/project/${project}/component`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tfor (const component of components) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: component.name,\n\t\t\t\t\t\tvalue: component.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\t\t},\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: INodeExecutionData[] = [];\n\t\tconst length = items.length;\n\t\tlet responseData;\n\t\tconst qs: IDataObject = {};\n\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\t\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\t\tif (resource === 'issue') {\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-post\n\t\t\tif (operation === 'create') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst summary = this.getNodeParameter('summary', i) as string;\n\t\t\t\t\tconst projectId = this.getNodeParameter('project', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t}) as string;\n\t\t\t\t\tconst issueTypeId = this.getNodeParameter('issueType', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t}) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\n\t\t\t\t\tconst assignee = this.getNodeParameter('additionalFields.assignee', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (assignee) additionalFields.assignee = assignee;\n\n\t\t\t\t\tconst reporter = this.getNodeParameter('additionalFields.reporter', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (reporter) additionalFields.reporter = reporter;\n\n\t\t\t\t\tconst priority = this.getNodeParameter('additionalFields.priority', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (priority) additionalFields.priority = priority;\n\n\t\t\t\t\tconst body: IIssue = {};\n\t\t\t\t\tconst fields: IFields = {\n\t\t\t\t\t\tsummary,\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\tid: projectId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tissuetype: {\n\t\t\t\t\t\t\tid: issueTypeId,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tif (additionalFields.labels) {\n\t\t\t\t\t\tfields.labels = additionalFields.labels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.serverLabels) {\n\t\t\t\t\t\tfields.labels = additionalFields.serverLabels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.priority) {\n\t\t\t\t\t\tfields.priority = {\n\t\t\t\t\t\t\tid: additionalFields.priority as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.assignee) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tname: additionalFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tid: additionalFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.reporter) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tname: additionalFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tid: additionalFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.description) {\n\t\t\t\t\t\tfields.description = additionalFields.description as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.updateHistory) {\n\t\t\t\t\t\tqs.updateHistory = additionalFields.updateHistory as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.componentIds) {\n\t\t\t\t\t\tfields.components = (additionalFields.componentIds as string[]).map((id) => ({ id }));\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.customFieldsUi) {\n\t\t\t\t\t\tconst customFields = (additionalFields.customFieldsUi as IDataObject)\n\t\t\t\t\t\t\t.customFieldsValues as IDataObject[];\n\t\t\t\t\t\tif (customFields) {\n\t\t\t\t\t\t\t// resolve resource locator fieldId value\n\t\t\t\t\t\t\tcustomFields.forEach((cf) => {\n\t\t\t\t\t\t\t\tif (typeof cf.fieldId !== 'string') {\n\t\t\t\t\t\t\t\t\tcf.fieldId = ((cf.fieldId as IDataObject).value as string).trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst data = customFields.reduce(\n\t\t\t\t\t\t\t\t(obj, value) => Object.assign(obj, { [`${value.fieldId}`]: value.fieldValue }),\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tObject.assign(fields, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst issueTypes = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'/api/2/issuetype',\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tconst subtaskIssues = [];\n\t\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\t\tif (issueType.subtask) {\n\t\t\t\t\t\t\tsubtaskIssues.push(issueType.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!additionalFields.parentIssueKey && subtaskIssues.includes(issueTypeId)) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'You must define a Parent Issue Key when Issue type is sub-task',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (additionalFields.parentIssueKey && subtaskIssues.includes(issueTypeId)) {\n\t\t\t\t\t\tfields.parent = {\n\t\t\t\t\t\t\tkey: (additionalFields.parentIssueKey as string).toUpperCase(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = fields;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(this, '/api/2/issue', 'POST', body);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-put\n\t\t\tif (operation === 'update') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\tconst assignee = this.getNodeParameter('updateFields.assignee', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (assignee) updateFields.assignee = assignee;\n\n\t\t\t\t\tconst reporter = this.getNodeParameter('updateFields.reporter', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (reporter) updateFields.reporter = reporter;\n\n\t\t\t\t\tconst priority = this.getNodeParameter('updateFields.priority', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (priority) updateFields.priority = priority;\n\n\t\t\t\t\tconst statusId = this.getNodeParameter('updateFields.statusId', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (statusId) updateFields.statusId = statusId;\n\n\t\t\t\t\tconst body: IIssue = {};\n\t\t\t\t\tconst fields: IFields = {};\n\t\t\t\t\tif (updateFields.summary) {\n\t\t\t\t\t\tfields.summary = updateFields.summary as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.issueType) {\n\t\t\t\t\t\tfields.issuetype = {\n\t\t\t\t\t\t\tid: updateFields.issueType as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.labels) {\n\t\t\t\t\t\tfields.labels = updateFields.labels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.serverLabels) {\n\t\t\t\t\t\tfields.labels = updateFields.serverLabels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.priority) {\n\t\t\t\t\t\tfields.priority = {\n\t\t\t\t\t\t\tid: updateFields.priority as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.assignee) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tname: updateFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tid: updateFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.reporter) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tname: updateFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tid: updateFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\tfields.description = updateFields.description as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.customFieldsUi) {\n\t\t\t\t\t\tconst customFields = (updateFields.customFieldsUi as IDataObject)\n\t\t\t\t\t\t\t.customFieldsValues as IDataObject[];\n\t\t\t\t\t\tif (customFields) {\n\t\t\t\t\t\t\t// resolve resource locator fieldId value\n\t\t\t\t\t\t\tcustomFields.forEach((cf) => {\n\t\t\t\t\t\t\t\tif (typeof cf.fieldId !== 'string') {\n\t\t\t\t\t\t\t\t\tcf.fieldId = ((cf.fieldId as IDataObject).value as string).trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst data = customFields.reduce(\n\t\t\t\t\t\t\t\t(obj, value) => Object.assign(obj, { [`${value.fieldId}`]: value.fieldValue }),\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tObject.assign(fields, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst issueTypes = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'/api/2/issuetype',\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\t\t\t\t\tconst subtaskIssues = [];\n\t\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\t\tif (issueType.subtask) {\n\t\t\t\t\t\t\tsubtaskIssues.push(issueType.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!updateFields.parentIssueKey && subtaskIssues.includes(updateFields.issueType)) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'You must define a Parent Issue Key when Issue type is sub-task',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tupdateFields.parentIssueKey &&\n\t\t\t\t\t\tsubtaskIssues.includes(updateFields.issueType)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfields.parent = {\n\t\t\t\t\t\t\tkey: (updateFields.parentIssueKey as string).toUpperCase(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = fields;\n\n\t\t\t\t\tif (updateFields.statusId) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t{ transition: { id: updateFields.statusId } },\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t);\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst simplifyOutput = this.getNodeParameter('simplifyOutput', i) as boolean;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tif (additionalFields.fields) {\n\t\t\t\t\t\tqs.fields = additionalFields.fields as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.fieldsByKey) {\n\t\t\t\t\t\tqs.fieldsByKey = additionalFields.fieldsByKey as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.expand) {\n\t\t\t\t\t\tqs.expand = additionalFields.expand as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (simplifyOutput) {\n\t\t\t\t\t\tqs.expand = `${qs.expand || ''},names`;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.properties) {\n\t\t\t\t\t\tqs.properties = additionalFields.properties as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.updateHistory) {\n\t\t\t\t\t\tqs.updateHistory = additionalFields.updateHistory as string;\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (simplifyOutput) {\n\t\t\t\t\t\t// Use rendered fields if requested and available\n\t\t\t\t\t\tqs.expand = qs.expand || '';\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(qs.expand as string).toLowerCase().indexOf('renderedfields') !== -1 &&\n\t\t\t\t\t\t\tresponseData.renderedFields &&\n\t\t\t\t\t\t\tObject.keys(responseData.renderedFields as IDataObject[]).length\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresponseData.fields = mergeWith(\n\t\t\t\t\t\t\t\tresponseData.fields,\n\t\t\t\t\t\t\t\tresponseData.renderedFields,\n\t\t\t\t\t\t\t\t(a, b) => (b === null ? a : b),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(simplifyIssueOutput(responseData)),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-post\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (!options.fields) {\n\t\t\t\t\t\t// By default, the new endpoint returns only the ids, before it used to return `*navigable` fields\n\t\t\t\t\t\toptions.fields = '*navigable';\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = (options.fields as string).split(',');\n\t\t\t\t\tif (!options.jql) {\n\t\t\t\t\t\t// Jira API returns an error if the JQL query is unbounded (i.e. does not include any filters)\n\t\t\t\t\t\toptions.jql = 'created >= \"1970-01-01\"';\n\t\t\t\t\t}\n\t\t\t\t\tbody.jql = options.jql as string;\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tif (typeof options.expand === 'string') {\n\t\t\t\t\t\t\tbody.expand = options.expand.split(',');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbody.expand = options.expand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'issues',\n\t\t\t\t\t\t\t\t'/api/2/search',\n\t\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'issues',\n\t\t\t\t\t\t\t\t'/api/2/search/jql',\n\t\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t'token',\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tbody.maxResults = limit;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'/api/2/search',\n\t\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t'/api/2/search/jql',\n\t\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresponseData = responseData.issues;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-changelog-get\n\t\t\tif (operation === 'changelog') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'values',\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/changelog`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/changelog`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.values;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-notify-post\n\t\t\tif (operation === 'notify') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tconst jsonActive = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst body: INotify = {};\n\t\t\t\t\tif (additionalFields.textBody) {\n\t\t\t\t\t\tbody.textBody = additionalFields.textBody as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.htmlBody) {\n\t\t\t\t\t\tbody.htmlBody = additionalFields.htmlBody as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (!jsonActive) {\n\t\t\t\t\t\tconst notificationRecipientsValues = (\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsUi', i) as IDataObject\n\t\t\t\t\t\t).notificationRecipientsValues as IDataObject;\n\t\t\t\t\t\tconst notificationRecipients: INotificationRecipients = {};\n\t\t\t\t\t\tif (notificationRecipientsValues) {\n\t\t\t\t\t\t\tif (notificationRecipientsValues.reporter) {\n\t\t\t\t\t\t\t\tnotificationRecipients.reporter = notificationRecipientsValues.reporter as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.assignee) {\n\t\t\t\t\t\t\t\tnotificationRecipients.assignee = notificationRecipientsValues.assignee as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.assignee) {\n\t\t\t\t\t\t\t\tnotificationRecipients.watchers = notificationRecipientsValues.watchers as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.voters) {\n\t\t\t\t\t\t\t\tnotificationRecipients.watchers = notificationRecipientsValues.voters as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (((notificationRecipientsValues.users as IDataObject[]) || []).length > 0) {\n\t\t\t\t\t\t\t\tnotificationRecipients.users = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsValues.users as IDataObject[]\n\t\t\t\t\t\t\t\t).map((user) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\taccountId: user,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (((notificationRecipientsValues.groups as IDataObject[]) || []).length > 0) {\n\t\t\t\t\t\t\t\tnotificationRecipients.groups = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsValues.groups as IDataObject[]\n\t\t\t\t\t\t\t\t).map((group) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: group,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.to = notificationRecipients;\n\t\t\t\t\t\tconst notificationRecipientsRestrictionsValues = (\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsRestrictionsUi', i) as IDataObject\n\t\t\t\t\t\t).notificationRecipientsRestrictionsValues as IDataObject;\n\t\t\t\t\t\tconst notificationRecipientsRestrictions: NotificationRecipientsRestrictions = {};\n\t\t\t\t\t\tif (notificationRecipientsRestrictionsValues) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t((notificationRecipientsRestrictionsValues.groups as IDataObject[]) || []).length >\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnotificationRecipientsRestrictions.groups = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsRestrictionsValues.groups as IDataObject[]\n\t\t\t\t\t\t\t\t).map((group) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: group,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.restrict = notificationRecipientsRestrictions;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst notificationRecipientsJson = validateJSON(\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsJson', i) as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (notificationRecipientsJson) {\n\t\t\t\t\t\t\tbody.to = notificationRecipientsJson;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst notificationRecipientsRestrictionsJson = validateJSON(\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsRestrictionsJson', i) as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (notificationRecipientsRestrictionsJson) {\n\t\t\t\t\t\t\tbody.restrict = notificationRecipientsRestrictionsJson;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}/notify`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }), //endpoint returns no content\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-transitions-get\n\t\t\tif (operation === 'transitions') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tif (additionalFields.transitionId) {\n\t\t\t\t\t\tqs.transitionId = additionalFields.transitionId as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.expand) {\n\t\t\t\t\t\tqs.expand = additionalFields.expand as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.skipRemoteOnlyCondition) {\n\t\t\t\t\t\tqs.skipRemoteOnlyCondition = additionalFields.skipRemoteOnlyCondition as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tresponseData = responseData.transitions;\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-delete\n\t\t\tif (operation === 'delete') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst deleteSubtasks = this.getNodeParameter('deleteSubtasks', i) as boolean;\n\t\t\t\t\tqs.deleteSubtasks = deleteSubtasks;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (resource === 'issueAttachment') {\n\t\t\tconst apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-issue-issueidorkey-attachments-post\n\t\t\tif (operation === 'add') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);\n\n\t\t\t\t\tlet uploadData: Buffer | Readable;\n\t\t\t\t\tif (binaryData.id) {\n\t\t\t\t\t\tuploadData = await this.helpers.getBinaryStream(binaryData.id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tuploadData = Buffer.from(binaryData.data, BINARY_ENCODING);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/attachments`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformData: {\n\t\t\t\t\t\t\t\tfile: {\n\t\t\t\t\t\t\t\t\tvalue: uploadData,\n\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\tfilename: binaryData.fileName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-delete\n\t\t\tif (operation === 'remove') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst attachmentId = this.getNodeParameter('attachmentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/attachment/${attachmentId}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tconst download = this.getNodeParameter('download', 0);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst attachmentId = this.getNodeParameter('attachmentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/attachment/${attachmentId}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t\tif (download) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryProperty', 0);\n\t\t\t\t\tfor (const [index, attachment] of returnData.entries()) {\n\t\t\t\t\t\treturnData[index].binary = {};\n\n\t\t\t\t\t\tconst buffer = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tattachment?.json.content as string,\n\t\t\t\t\t\t\t{ json: false, encoding: null, useStream: true },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tbuffer as Buffer,\n\t\t\t\t\t\t\tattachment.json.filename as string,\n\t\t\t\t\t\t\tattachment.json.mimeType as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tconst download = this.getNodeParameter('download', 0);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst {\n\t\t\t\t\t\tfields: { attachment },\n\t\t\t\t\t} = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tresponseData = attachment;\n\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tresponseData = responseData.slice(0, limit);\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = responseData.map((data: IDataObject) => ({ json: data }));\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t\tif (download) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryProperty', 0);\n\t\t\t\t\tfor (const [index, attachment] of returnData.entries()) {\n\t\t\t\t\t\treturnData[index].binary = {};\n\t\t\t\t\t\tconst buffer = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tattachment.json.content as string,\n\t\t\t\t\t\t\t{ json: false, encoding: null, useStream: true },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tbuffer as Buffer,\n\t\t\t\t\t\t\tattachment.json.filename as string,\n\t\t\t\t\t\t\tattachment.json.mimeType as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (resource === 'issueComment') {\n\t\t\tlet apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-post\n\t\t\tif (operation === 'add') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst jsonParameters = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\tif (options.wikiMarkup) {\n\t\t\t\t\t\tapiVersion = '2';\n\t\t\t\t\t}\n\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tqs.expand = options.expand as string;\n\t\t\t\t\t\tdelete options.expand;\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(body, options);\n\t\t\t\t\tif (!jsonParameters) {\n\t\t\t\t\t\tconst comment = this.getNodeParameter('comment', i) as string;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat' || options.wikiMarkup) {\n\t\t\t\t\t\t\tObject.assign(body, { body: comment });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tObject.assign(body, {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\ttype: 'doc',\n\t\t\t\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: 'paragraph',\n\t\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext: comment,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst commentJson = this.getNodeParameter('commentJson', i) as string;\n\t\t\t\t\t\tconst json = validateJSON(commentJson);\n\t\t\t\t\t\tif (json === '') {\n\t\t\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Document Format must be a valid JSON', {\n\t\t\t\t\t\t\t\titemIndex: i,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(body, { body: json });\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-get\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'comments',\n\t\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tqs.maxResults = limit;\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.comments;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-id-delete\n\t\t\tif (operation === 'remove') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-id-put\n\t\t\tif (operation === 'update') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst jsonParameters = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tqs.expand = options.expand as string;\n\t\t\t\t\t\tdelete options.expand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.wikiMarkup) {\n\t\t\t\t\t\tapiVersion = '2';\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tif (!jsonParameters) {\n\t\t\t\t\t\tconst comment = this.getNodeParameter('comment', i) as string;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat' || options.wikiMarkup) {\n\t\t\t\t\t\t\tObject.assign(body, { body: comment });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tObject.assign(body, {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\ttype: 'doc',\n\t\t\t\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: 'paragraph',\n\t\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext: comment,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst commentJson = this.getNodeParameter('commentJson', i) as string;\n\t\t\t\t\t\tconst json = validateJSON(commentJson);\n\t\t\t\t\t\tif (json === '') {\n\t\t\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Document Format must be a valid JSON', {\n\t\t\t\t\t\t\t\titemIndex: i,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(body, { body: json });\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (resource === 'user') {\n\t\t\tconst apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\tif (operation === 'create') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-post\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst body = {\n\t\t\t\t\t\tname: this.getNodeParameter('username', i),\n\t\t\t\t\t\temailAddress: this.getNodeParameter('emailAddress', i),\n\t\t\t\t\t\tdisplayName: this.getNodeParameter('displayName', i),\n\t\t\t\t\t};\n\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\n\t\t\t\t\tObject.assign(body, additionalFields);\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\t{},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t} else if (operation === 'delete') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-delete\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs.accountId = this.getNodeParameter('accountId', i);\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t} else if (operation === 'get') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-get\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs.accountId = this.getNodeParameter('accountId', i);\n\n\t\t\t\t\tconst { expand } = this.getNodeParameter('additionalFields', i) as { expand: string[] };\n\n\t\t\t\t\tif (expand) {\n\t\t\t\t\t\tqs.expand = expand.join(',');\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["res","fields","mergeWith"]}
|
|
@@ -42,8 +42,8 @@ class LocalFileTrigger {
|
|
|
42
42
|
triggerPanel: {
|
|
43
43
|
header: "",
|
|
44
44
|
executionsHelp: {
|
|
45
|
-
inactive: "<b>While building your workflow</b>, click the '
|
|
46
|
-
active: "<b>While building your workflow</b>, click the '
|
|
45
|
+
inactive: "<b>While building your workflow</b>, click the 'execute step' button, then make a change to your watched file or folder. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Once you're happy with your workflow</b>, <a data-key='activate'>activate</a> it. Then every time a change is detected, the workflow will execute. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.",
|
|
46
|
+
active: "<b>While building your workflow</b>, click the 'execute step' button, then make a change to your watched file or folder. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Your workflow will also execute automatically</b>, since it's activated. Every time a change is detected, this node will trigger an execution. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor."
|
|
47
47
|
},
|
|
48
48
|
activationHint: "Once you\u2019ve finished building your workflow, <a data-key='activate'>activate</a> it to have it also listen continuously (you just won\u2019t see those executions here)."
|
|
49
49
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/LocalFileTrigger/LocalFileTrigger.node.ts"],"sourcesContent":["import { watch } from 'chokidar';\nimport {\n\ttype ITriggerFunctions,\n\ttype IDataObject,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ITriggerResponse,\n\tNodeConnectionTypes,\n} from 'n8n-workflow';\n\nexport class LocalFileTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Local File Trigger',\n\t\tname: 'localFileTrigger',\n\t\ticon: 'fa:folder-open',\n\t\ticonColor: 'black',\n\t\tgroup: ['trigger'],\n\t\tversion: 1,\n\t\tsubtitle: '=Path: {{$parameter[\"path\"]}}',\n\t\tdescription: 'Triggers a workflow on file system changes',\n\t\teventTriggerDescription: '',\n\t\tdefaults: {\n\t\t\tname: 'Local File Trigger',\n\t\t\tcolor: '#404040',\n\t\t},\n\t\ttriggerPanel: {\n\t\t\theader: '',\n\t\t\texecutionsHelp: {\n\t\t\t\tinactive:\n\t\t\t\t\t\"<b>While building your workflow</b>, click the 'test step' button, then make a change to your watched file or folder. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Once you're happy with your workflow</b>, <a data-key='activate'>activate</a> it. Then every time a change is detected, the workflow will execute. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.\",\n\t\t\t\tactive:\n\t\t\t\t\t\"<b>While building your workflow</b>, click the 'test step' button, then make a change to your watched file or folder. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Your workflow will also execute automatically</b>, since it's activated. Every time a change is detected, this node will trigger an execution. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.\",\n\t\t\t},\n\t\t\tactivationHint:\n\t\t\t\t\"Once you’ve finished building your workflow, <a data-key='activate'>activate</a> it to have it also listen continuously (you just won’t see those executions here).\",\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Trigger On',\n\t\t\t\tname: 'triggerOn',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Changes to a Specific File',\n\t\t\t\t\t\tvalue: 'file',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Changes Involving a Specific Folder',\n\t\t\t\t\t\tvalue: 'folder',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\trequired: true,\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'File to Watch',\n\t\t\t\tname: 'path',\n\t\t\t\ttype: 'string',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\ttriggerOn: ['file'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: '/data/invoices/1.pdf',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Folder to Watch',\n\t\t\t\tname: 'path',\n\t\t\t\ttype: 'string',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\ttriggerOn: ['folder'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: '/data/invoices',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Watch for',\n\t\t\t\tname: 'events',\n\t\t\t\ttype: 'multiOptions',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\ttriggerOn: ['folder'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'File Added',\n\t\t\t\t\t\tvalue: 'add',\n\t\t\t\t\t\tdescription: 'Triggers whenever a new file was added',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'File Changed',\n\t\t\t\t\t\tvalue: 'change',\n\t\t\t\t\t\tdescription: 'Triggers whenever a file was changed',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'File Deleted',\n\t\t\t\t\t\tvalue: 'unlink',\n\t\t\t\t\t\tdescription: 'Triggers whenever a file was deleted',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Folder Added',\n\t\t\t\t\t\tvalue: 'addDir',\n\t\t\t\t\t\tdescription: 'Triggers whenever a new folder was added',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Folder Deleted',\n\t\t\t\t\t\tvalue: 'unlinkDir',\n\t\t\t\t\t\tdescription: 'Triggers whenever a folder was deleted',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\trequired: true,\n\t\t\t\tdefault: [],\n\t\t\t\tdescription: 'The events to listen to',\n\t\t\t},\n\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\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Await Write Finish',\n\t\t\t\t\t\tname: 'awaitWriteFinish',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\tdescription: 'Whether to wait until files finished writing to avoid partially read',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Include Linked Files/Folders',\n\t\t\t\t\t\tname: 'followSymlinks',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Whether linked files/folders will also be watched (this includes symlinks, aliases on MacOS and shortcuts on Windows). Otherwise only the links themselves will be monitored).',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Ignore',\n\t\t\t\t\t\tname: 'ignored',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tplaceholder: '**/*.txt',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Files or paths to ignore. The whole path is tested, not just the filename. Supports <a href=\"https://github.com/micromatch/anymatch\">Anymatch</a>- syntax.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Ignore Existing Files/Folders',\n\t\t\t\t\t\tname: 'ignoreInitial',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\tdescription: 'Whether to ignore existing files/folders to not trigger an event',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Max Folder Depth',\n\t\t\t\t\t\tname: 'depth',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '1 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '2 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 2,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '3 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '4 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 4,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '5 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 5,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Top Folder Only',\n\t\t\t\t\t\t\t\tvalue: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Unlimited',\n\t\t\t\t\t\t\t\tvalue: -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: -1,\n\t\t\t\t\t\tdescription: 'How deep into the folder structure to watch for changes',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Use Polling',\n\t\t\t\t\t\tname: 'usePolling',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Whether to use polling for watching. Typically necessary to successfully watch files over a network.',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync trigger(this: ITriggerFunctions): Promise<ITriggerResponse> {\n\t\tconst triggerOn = this.getNodeParameter('triggerOn') as string;\n\t\tconst path = this.getNodeParameter('path') as string;\n\t\tconst options = this.getNodeParameter('options', {}) as IDataObject;\n\n\t\tlet events: string[];\n\t\tif (triggerOn === 'file') {\n\t\t\tevents = ['change'];\n\t\t} else {\n\t\t\tevents = this.getNodeParameter('events', []) as string[];\n\t\t}\n\n\t\tconst watcher = watch(path, {\n\t\t\tignored: options.ignored === '' ? undefined : (options.ignored as string),\n\t\t\tpersistent: true,\n\t\t\tignoreInitial:\n\t\t\t\toptions.ignoreInitial === undefined ? true : (options.ignoreInitial as boolean),\n\t\t\tfollowSymlinks:\n\t\t\t\toptions.followSymlinks === undefined ? true : (options.followSymlinks as boolean),\n\t\t\tdepth: [-1, undefined].includes(options.depth as number)\n\t\t\t\t? undefined\n\t\t\t\t: (options.depth as number),\n\t\t\tusePolling: options.usePolling as boolean,\n\t\t\tawaitWriteFinish: options.awaitWriteFinish as boolean,\n\t\t});\n\n\t\tconst executeTrigger = (event: string, pathString: string) => {\n\t\t\tthis.emit([this.helpers.returnJsonArray([{ event, path: pathString }])]);\n\t\t};\n\n\t\tfor (const eventName of events) {\n\t\t\twatcher.on(eventName, (pathString) => executeTrigger(eventName, pathString as string));\n\t\t}\n\n\t\tasync function closeFunction() {\n\t\t\treturn await watcher.close();\n\t\t}\n\n\t\treturn {\n\t\t\tcloseFunction,\n\t\t};\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../nodes/LocalFileTrigger/LocalFileTrigger.node.ts"],"sourcesContent":["import { watch } from 'chokidar';\nimport {\n\ttype ITriggerFunctions,\n\ttype IDataObject,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ITriggerResponse,\n\tNodeConnectionTypes,\n} from 'n8n-workflow';\n\nexport class LocalFileTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Local File Trigger',\n\t\tname: 'localFileTrigger',\n\t\ticon: 'fa:folder-open',\n\t\ticonColor: 'black',\n\t\tgroup: ['trigger'],\n\t\tversion: 1,\n\t\tsubtitle: '=Path: {{$parameter[\"path\"]}}',\n\t\tdescription: 'Triggers a workflow on file system changes',\n\t\teventTriggerDescription: '',\n\t\tdefaults: {\n\t\t\tname: 'Local File Trigger',\n\t\t\tcolor: '#404040',\n\t\t},\n\t\ttriggerPanel: {\n\t\t\theader: '',\n\t\t\texecutionsHelp: {\n\t\t\t\tinactive:\n\t\t\t\t\t\"<b>While building your workflow</b>, click the 'execute step' button, then make a change to your watched file or folder. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Once you're happy with your workflow</b>, <a data-key='activate'>activate</a> it. Then every time a change is detected, the workflow will execute. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.\",\n\t\t\t\tactive:\n\t\t\t\t\t\"<b>While building your workflow</b>, click the 'execute step' button, then make a change to your watched file or folder. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Your workflow will also execute automatically</b>, since it's activated. Every time a change is detected, this node will trigger an execution. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.\",\n\t\t\t},\n\t\t\tactivationHint:\n\t\t\t\t\"Once you’ve finished building your workflow, <a data-key='activate'>activate</a> it to have it also listen continuously (you just won’t see those executions here).\",\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Trigger On',\n\t\t\t\tname: 'triggerOn',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Changes to a Specific File',\n\t\t\t\t\t\tvalue: 'file',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Changes Involving a Specific Folder',\n\t\t\t\t\t\tvalue: 'folder',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\trequired: true,\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'File to Watch',\n\t\t\t\tname: 'path',\n\t\t\t\ttype: 'string',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\ttriggerOn: ['file'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: '/data/invoices/1.pdf',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Folder to Watch',\n\t\t\t\tname: 'path',\n\t\t\t\ttype: 'string',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\ttriggerOn: ['folder'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: '/data/invoices',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Watch for',\n\t\t\t\tname: 'events',\n\t\t\t\ttype: 'multiOptions',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\ttriggerOn: ['folder'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'File Added',\n\t\t\t\t\t\tvalue: 'add',\n\t\t\t\t\t\tdescription: 'Triggers whenever a new file was added',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'File Changed',\n\t\t\t\t\t\tvalue: 'change',\n\t\t\t\t\t\tdescription: 'Triggers whenever a file was changed',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'File Deleted',\n\t\t\t\t\t\tvalue: 'unlink',\n\t\t\t\t\t\tdescription: 'Triggers whenever a file was deleted',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Folder Added',\n\t\t\t\t\t\tvalue: 'addDir',\n\t\t\t\t\t\tdescription: 'Triggers whenever a new folder was added',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Folder Deleted',\n\t\t\t\t\t\tvalue: 'unlinkDir',\n\t\t\t\t\t\tdescription: 'Triggers whenever a folder was deleted',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\trequired: true,\n\t\t\t\tdefault: [],\n\t\t\t\tdescription: 'The events to listen to',\n\t\t\t},\n\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\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Await Write Finish',\n\t\t\t\t\t\tname: 'awaitWriteFinish',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\tdescription: 'Whether to wait until files finished writing to avoid partially read',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Include Linked Files/Folders',\n\t\t\t\t\t\tname: 'followSymlinks',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Whether linked files/folders will also be watched (this includes symlinks, aliases on MacOS and shortcuts on Windows). Otherwise only the links themselves will be monitored).',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Ignore',\n\t\t\t\t\t\tname: 'ignored',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tplaceholder: '**/*.txt',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Files or paths to ignore. The whole path is tested, not just the filename. Supports <a href=\"https://github.com/micromatch/anymatch\">Anymatch</a>- syntax.',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Ignore Existing Files/Folders',\n\t\t\t\t\t\tname: 'ignoreInitial',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\tdescription: 'Whether to ignore existing files/folders to not trigger an event',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Max Folder Depth',\n\t\t\t\t\t\tname: 'depth',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '1 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '2 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 2,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '3 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '4 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 4,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: '5 Levels Down',\n\t\t\t\t\t\t\t\tvalue: 5,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Top Folder Only',\n\t\t\t\t\t\t\t\tvalue: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'Unlimited',\n\t\t\t\t\t\t\t\tvalue: -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdefault: -1,\n\t\t\t\t\t\tdescription: 'How deep into the folder structure to watch for changes',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Use Polling',\n\t\t\t\t\t\tname: 'usePolling',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Whether to use polling for watching. Typically necessary to successfully watch files over a network.',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync trigger(this: ITriggerFunctions): Promise<ITriggerResponse> {\n\t\tconst triggerOn = this.getNodeParameter('triggerOn') as string;\n\t\tconst path = this.getNodeParameter('path') as string;\n\t\tconst options = this.getNodeParameter('options', {}) as IDataObject;\n\n\t\tlet events: string[];\n\t\tif (triggerOn === 'file') {\n\t\t\tevents = ['change'];\n\t\t} else {\n\t\t\tevents = this.getNodeParameter('events', []) as string[];\n\t\t}\n\n\t\tconst watcher = watch(path, {\n\t\t\tignored: options.ignored === '' ? undefined : (options.ignored as string),\n\t\t\tpersistent: true,\n\t\t\tignoreInitial:\n\t\t\t\toptions.ignoreInitial === undefined ? true : (options.ignoreInitial as boolean),\n\t\t\tfollowSymlinks:\n\t\t\t\toptions.followSymlinks === undefined ? true : (options.followSymlinks as boolean),\n\t\t\tdepth: [-1, undefined].includes(options.depth as number)\n\t\t\t\t? undefined\n\t\t\t\t: (options.depth as number),\n\t\t\tusePolling: options.usePolling as boolean,\n\t\t\tawaitWriteFinish: options.awaitWriteFinish as boolean,\n\t\t});\n\n\t\tconst executeTrigger = (event: string, pathString: string) => {\n\t\t\tthis.emit([this.helpers.returnJsonArray([{ event, path: pathString }])]);\n\t\t};\n\n\t\tfor (const eventName of events) {\n\t\t\twatcher.on(eventName, (pathString) => executeTrigger(eventName, pathString as string));\n\t\t}\n\n\t\tasync function closeFunction() {\n\t\t\treturn await watcher.close();\n\t\t}\n\n\t\treturn {\n\t\t\tcloseFunction,\n\t\t};\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -39,8 +39,8 @@ class MqttTrigger {
|
|
|
39
39
|
triggerPanel: {
|
|
40
40
|
header: "",
|
|
41
41
|
executionsHelp: {
|
|
42
|
-
inactive: "<b>While building your workflow</b>, click the '
|
|
43
|
-
active: "<b>While building your workflow</b>, click the '
|
|
42
|
+
inactive: "<b>While building your workflow</b>, click the 'execute step' button, then trigger an MQTT event. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Once you're happy with your workflow</b>, <a data-key='activate'>activate</a> it. Then every time a change is detected, the workflow will execute. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.",
|
|
43
|
+
active: "<b>While building your workflow</b>, click the 'execute step' button, then trigger an MQTT event. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Your workflow will also execute automatically</b>, since it's activated. Every time a change is detected, this node will trigger an execution. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor."
|
|
44
44
|
},
|
|
45
45
|
activationHint: "Once you\u2019ve finished building your workflow, <a data-key='activate'>activate</a> it to have it also listen continuously (you just won\u2019t see those executions here)."
|
|
46
46
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/MQTT/MqttTrigger.node.ts"],"sourcesContent":["import type { ISubscriptionMap } from 'mqtt';\nimport type { QoS } from 'mqtt-packet';\nimport type {\n\tITriggerFunctions,\n\tIDataObject,\n\tINodeType,\n\tINodeTypeDescription,\n\tITriggerResponse,\n\tIRun,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nimport { createClient, type MqttCredential } from './GenericFunctions';\n\ninterface Options {\n\tjsonParseBody: boolean;\n\tonlyMessage: boolean;\n\tparallelProcessing: boolean;\n}\n\nexport class MqttTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'MQTT Trigger',\n\t\tname: 'mqttTrigger',\n\t\ticon: 'file:mqtt.svg',\n\t\tgroup: ['trigger'],\n\t\tversion: 1,\n\t\tdescription: 'Listens to MQTT events',\n\t\teventTriggerDescription: '',\n\t\tdefaults: {\n\t\t\tname: 'MQTT Trigger',\n\t\t},\n\t\ttriggerPanel: {\n\t\t\theader: '',\n\t\t\texecutionsHelp: {\n\t\t\t\tinactive:\n\t\t\t\t\t\"<b>While building your workflow</b>, click the '
|
|
1
|
+
{"version":3,"sources":["../../../nodes/MQTT/MqttTrigger.node.ts"],"sourcesContent":["import type { ISubscriptionMap } from 'mqtt';\nimport type { QoS } from 'mqtt-packet';\nimport type {\n\tITriggerFunctions,\n\tIDataObject,\n\tINodeType,\n\tINodeTypeDescription,\n\tITriggerResponse,\n\tIRun,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nimport { createClient, type MqttCredential } from './GenericFunctions';\n\ninterface Options {\n\tjsonParseBody: boolean;\n\tonlyMessage: boolean;\n\tparallelProcessing: boolean;\n}\n\nexport class MqttTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'MQTT Trigger',\n\t\tname: 'mqttTrigger',\n\t\ticon: 'file:mqtt.svg',\n\t\tgroup: ['trigger'],\n\t\tversion: 1,\n\t\tdescription: 'Listens to MQTT events',\n\t\teventTriggerDescription: '',\n\t\tdefaults: {\n\t\t\tname: 'MQTT Trigger',\n\t\t},\n\t\ttriggerPanel: {\n\t\t\theader: '',\n\t\t\texecutionsHelp: {\n\t\t\t\tinactive:\n\t\t\t\t\t\"<b>While building your workflow</b>, click the 'execute step' button, then trigger an MQTT event. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Once you're happy with your workflow</b>, <a data-key='activate'>activate</a> it. Then every time a change is detected, the workflow will execute. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.\",\n\t\t\t\tactive:\n\t\t\t\t\t\"<b>While building your workflow</b>, click the 'execute step' button, then trigger an MQTT event. This will trigger an execution, which will show up in this editor.<br /> <br /><b>Your workflow will also execute automatically</b>, since it's activated. Every time a change is detected, this node will trigger an execution. These executions will show up in the <a data-key='executions'>executions list</a>, but not in the editor.\",\n\t\t\t},\n\t\t\tactivationHint:\n\t\t\t\t\"Once you’ve finished building your workflow, <a data-key='activate'>activate</a> it to have it also listen continuously (you just won’t see those executions here).\",\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'mqtt',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Topics',\n\t\t\t\tname: 'topics',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription:\n\t\t\t\t\t'Topics to subscribe to, multiple can be defined with comma. Wildcard characters are supported (+ - for single level and # - for multi level). By default all subscription used QoS=0. To set a different QoS, write the QoS desired after the topic preceded by a colom. For Example: topicA:1,topicB:2',\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\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'JSON Parse Body',\n\t\t\t\t\t\tname: 'jsonParseBody',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\tdescription: 'Whether to try parse the message to an object',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Only Message',\n\t\t\t\t\t\tname: 'onlyMessage',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\tdescription: 'Whether to return only the message property',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Parallel Processing',\n\t\t\t\t\t\tname: 'parallelProcessing',\n\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Whether to process messages in parallel or by keeping the message in order',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync trigger(this: ITriggerFunctions): Promise<ITriggerResponse> {\n\t\tconst topics = (this.getNodeParameter('topics') as string).split(',');\n\t\tif (!topics?.length) {\n\t\t\tthrow new NodeOperationError(this.getNode(), 'Topics are mandatory!');\n\t\t}\n\n\t\tconst topicsQoS: ISubscriptionMap = {};\n\t\tfor (const data of topics) {\n\t\t\tconst [topic, qosString] = data.split(':');\n\t\t\tlet qos = qosString ? parseInt(qosString, 10) : 0;\n\t\t\tif (qos < 0 || qos > 2) qos = 0;\n\t\t\ttopicsQoS[topic] = { qos: qos as QoS };\n\t\t}\n\n\t\tconst options = this.getNodeParameter('options') as Options;\n\t\tconst credentials = await this.getCredentials<MqttCredential>('mqtt');\n\t\tconst client = await createClient(credentials);\n\n\t\tconst parsePayload = (topic: string, payload: Buffer) => {\n\t\t\tlet message = payload.toString();\n\n\t\t\tif (options.jsonParseBody) {\n\t\t\t\ttry {\n\t\t\t\t\tmessage = JSON.parse(message);\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\tlet result: IDataObject = { message, topic };\n\n\t\t\tif (options.onlyMessage) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tresult = [message];\n\t\t\t}\n\n\t\t\treturn [this.helpers.returnJsonArray([result])];\n\t\t};\n\n\t\tconst manualTriggerFunction = async () =>\n\t\t\tawait new Promise<void>(async (resolve) => {\n\t\t\t\tclient.once('message', (topic, payload) => {\n\t\t\t\t\tthis.emit(parsePayload(topic, payload));\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t\tawait client.subscribeAsync(topicsQoS);\n\t\t\t});\n\n\t\tif (this.getMode() === 'trigger') {\n\t\t\tconst donePromise = !options.parallelProcessing\n\t\t\t\t? this.helpers.createDeferredPromise<IRun>()\n\t\t\t\t: undefined;\n\t\t\tclient.on('message', async (topic, payload) => {\n\t\t\t\tthis.emit(parsePayload(topic, payload), undefined, donePromise);\n\t\t\t\tawait donePromise?.promise;\n\t\t\t});\n\t\t\tawait client.subscribeAsync(topicsQoS);\n\t\t}\n\n\t\tasync function closeFunction() {\n\t\t\tawait client.endAsync();\n\t\t}\n\n\t\treturn {\n\t\t\tcloseFunction,\n\t\t\tmanualTriggerFunction,\n\t\t};\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../nodes/ManualTrigger/ManualTrigger.node.ts"],"sourcesContent":["import type {\n\tITriggerFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tITriggerResponse,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes } from 'n8n-workflow';\n\nexport class ManualTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Manual Trigger',\n\t\tname: 'manualTrigger',\n\t\ticon: 'fa:mouse-pointer',\n\t\tgroup: ['trigger'],\n\t\tversion: 1,\n\t\tdescription: 'Runs the flow on clicking a button in n8n',\n\t\teventTriggerDescription: '',\n\t\tmaxNodes: 1,\n\t\tdefaults: {\n\t\t\tname: 'When clicking ‘
|
|
1
|
+
{"version":3,"sources":["../../../nodes/ManualTrigger/ManualTrigger.node.ts"],"sourcesContent":["import type {\n\tITriggerFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tITriggerResponse,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes } from 'n8n-workflow';\n\nexport class ManualTrigger implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Manual Trigger',\n\t\tname: 'manualTrigger',\n\t\ticon: 'fa:mouse-pointer',\n\t\tgroup: ['trigger'],\n\t\tversion: 1,\n\t\tdescription: 'Runs the flow on clicking a button in n8n',\n\t\teventTriggerDescription: '',\n\t\tmaxNodes: 1,\n\t\tdefaults: {\n\t\t\tname: 'When clicking ‘Execute workflow’',\n\t\t\tcolor: '#909298',\n\t\t},\n\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'This node is where the workflow execution starts (when you click the ‘test’ button on the canvas).<br><br> <a data-action=\"showNodeCreator\">Explore other ways to trigger your workflow</a> (e.g on a schedule, or a webhook)',\n\t\t\t\tname: 'notice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t],\n\t};\n\n\tasync trigger(this: ITriggerFunctions): Promise<ITriggerResponse> {\n\t\tconst manualTriggerFunction = async () => {\n\t\t\tthis.emit([this.helpers.returnJsonArray([{}])]);\n\t\t};\n\n\t\treturn {\n\t\t\tmanualTriggerFunction,\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,0BAAoC;AAE7B,MAAM,cAAmC;AAAA,EAAzC;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,SAAS;AAAA,MACjB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,yBAAyB;AAAA,MACzB,UAAU;AAAA,MACV,UAAU;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACR;AAAA,MAEA,QAAQ,CAAC;AAAA,MACT,SAAS,CAAC,wCAAoB,IAAI;AAAA,MAClC,YAAY;AAAA,QACX;AAAA,UACC,aACC;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,UAA4D;AACjE,UAAM,wBAAwB,YAAY;AACzC,WAAK,KAAK,CAAC,KAAK,QAAQ,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IAC/C;AAEA,WAAO;AAAA,MACN;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
|
|
@@ -34,14 +34,15 @@ class Merge extends import_n8n_workflow.VersionedNodeType {
|
|
|
34
34
|
group: ["transform"],
|
|
35
35
|
subtitle: '={{$parameter["mode"]}}',
|
|
36
36
|
description: "Merges data of multiple streams once data from both is available",
|
|
37
|
-
defaultVersion: 3.
|
|
37
|
+
defaultVersion: 3.2
|
|
38
38
|
};
|
|
39
39
|
const nodeVersions = {
|
|
40
40
|
1: new import_MergeV1.MergeV1(baseDescription),
|
|
41
41
|
2: new import_MergeV2.MergeV2(baseDescription),
|
|
42
42
|
2.1: new import_MergeV2.MergeV2(baseDescription),
|
|
43
43
|
3: new import_MergeV3.MergeV3(baseDescription),
|
|
44
|
-
3.1: new import_MergeV3.MergeV3(baseDescription)
|
|
44
|
+
3.1: new import_MergeV3.MergeV3(baseDescription),
|
|
45
|
+
3.2: new import_MergeV3.MergeV3(baseDescription)
|
|
45
46
|
};
|
|
46
47
|
super(nodeVersions, baseDescription);
|
|
47
48
|
}
|