From c574a0d20dbd3794f6ba08dd635bbd518be5ee40 Mon Sep 17 00:00:00 2001 From: Ricardo Espinoza Date: Fri, 19 Nov 2021 09:46:48 -0500 Subject: [PATCH 01/20] :zap: Add components parameter to Jira (#2428) --- .../nodes-base/nodes/Jira/IssueDescription.ts | 12 +++++++++ .../nodes-base/nodes/Jira/IssueInterface.ts | 1 + packages/nodes-base/nodes/Jira/Jira.node.ts | 27 +++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/packages/nodes-base/nodes/Jira/IssueDescription.ts b/packages/nodes-base/nodes/Jira/IssueDescription.ts index d8acd74384..9965921a8a 100644 --- a/packages/nodes-base/nodes/Jira/IssueDescription.ts +++ b/packages/nodes-base/nodes/Jira/IssueDescription.ts @@ -164,6 +164,18 @@ export const issueFields = [ default: '', description: 'Description', }, + { + displayName: 'Components', + name: 'componentIds', + type: 'multiOptions', + typeOptions: { + loadOptionsMethod: 'getProjectComponents', + loadOptionsDependsOn: [ + 'project', + ], + }, + default: [], + }, { displayName: 'Custom Fields', name: 'customFieldsUi', diff --git a/packages/nodes-base/nodes/Jira/IssueInterface.ts b/packages/nodes-base/nodes/Jira/IssueInterface.ts index bef90057a9..1e7b21b0ba 100644 --- a/packages/nodes-base/nodes/Jira/IssueInterface.ts +++ b/packages/nodes-base/nodes/Jira/IssueInterface.ts @@ -12,6 +12,7 @@ export interface IFields { project?: IDataObject; summary?: string; reporter?: IDataObject; + components?: IDataObject[]; } export interface IIssue { diff --git a/packages/nodes-base/nodes/Jira/Jira.node.ts b/packages/nodes-base/nodes/Jira/Jira.node.ts index 579840d3a9..e4520453b8 100644 --- a/packages/nodes-base/nodes/Jira/Jira.node.ts +++ b/packages/nodes-base/nodes/Jira/Jira.node.ts @@ -427,6 +427,30 @@ export class Jira implements INodeType { } return returnData; }, + + // Get all the components to display them to user so that he can + // select them easily + async getProjectComponents(this: ILoadOptionsFunctions): Promise { + const returnData: INodePropertyOptions[] = []; + + const project = this.getCurrentNodeParameter('project'); + const { values: components } = await jiraSoftwareCloudApiRequest.call(this, `/api/2/project/${project}/component`, 'GET'); + + for (const component of components) { + returnData.push({ + name: component.name, + value: component.id, + }); + } + + returnData.sort((a, b) => { + if (a.name < b.name) { return -1; } + if (a.name > b.name) { return 1; } + return 0; + }); + + return returnData; + }, }, }; @@ -492,6 +516,9 @@ export class Jira implements INodeType { if (additionalFields.updateHistory) { qs.updateHistory = additionalFields.updateHistory as boolean; } + if (additionalFields.componentIds) { + fields.components = (additionalFields.componentIds as string[]).map(id => ({ id })); + } if (additionalFields.customFieldsUi) { const customFields = (additionalFields.customFieldsUi as IDataObject).customFieldsValues as IDataObject[]; if (customFields) { From f2c8027e25eb47db878bff5d97639a4e15b9db52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Fri, 19 Nov 2021 16:31:52 +0100 Subject: [PATCH 02/20] :bug: Fix incident urgency and impact values (#2433) --- .../nodes/ServiceNow/IncidentDescription.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/nodes-base/nodes/ServiceNow/IncidentDescription.ts b/packages/nodes-base/nodes/ServiceNow/IncidentDescription.ts index 021a6e4983..5d5ce44656 100644 --- a/packages/nodes-base/nodes/ServiceNow/IncidentDescription.ts +++ b/packages/nodes-base/nodes/ServiceNow/IncidentDescription.ts @@ -186,7 +186,7 @@ export const incidentFields = [ options: [ { name: 'Low', - value: 1, + value: 3, }, { name: 'Medium', @@ -194,7 +194,7 @@ export const incidentFields = [ }, { name: 'High', - value: 3, + value: 1, }, ], default: '', @@ -240,7 +240,7 @@ export const incidentFields = [ options: [ { name: 'Low', - value: 1, + value: 3, }, { name: 'Medium', @@ -248,7 +248,7 @@ export const incidentFields = [ }, { name: 'High', - value: 3, + value: 1, }, ], default: '', @@ -590,7 +590,7 @@ export const incidentFields = [ options: [ { name: 'Low', - value: 1, + value: 3, }, { name: 'Medium', @@ -598,7 +598,7 @@ export const incidentFields = [ }, { name: 'High', - value: 3, + value: 1, }, ], default: '', @@ -654,7 +654,7 @@ export const incidentFields = [ options: [ { name: 'Low', - value: 1, + value: 3, }, { name: 'Medium', @@ -662,7 +662,7 @@ export const incidentFields = [ }, { name: 'High', - value: 3, + value: 1, }, ], default: '', From d22a4b1b11e936c56d1d669bb4b3f43736274c6c Mon Sep 17 00:00:00 2001 From: Tom <19203795+that-one-tom@users.noreply.github.com> Date: Fri, 19 Nov 2021 18:16:00 +0100 Subject: [PATCH 03/20] :bug: CLI: Add windows support to import:workflow --separate (#2441) --- packages/cli/commands/import/workflow.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/cli/commands/import/workflow.ts b/packages/cli/commands/import/workflow.ts index e27ac2dd16..e2b51d26f9 100644 --- a/packages/cli/commands/import/workflow.ts +++ b/packages/cli/commands/import/workflow.ts @@ -86,9 +86,12 @@ export class ImportWorkflowsCommand extends Command { const credentialsEntities = (await Db.collections.Credentials?.find()) ?? []; let i; if (flags.separate) { - const files = await glob( - `${flags.input.endsWith(path.sep) ? flags.input : flags.input + path.sep}*.json`, - ); + let inputPath = flags.input; + if (process.platform === 'win32') { + inputPath = inputPath.replace(/\\/g, '/'); + } + inputPath = inputPath.replace(/\/$/g, ''); + const files = await glob(`${inputPath}/*.json`); for (i = 0; i < files.length; i++) { const workflow = JSON.parse(fs.readFileSync(files[i], { encoding: 'utf8' })); if (credentialsEntities.length > 0) { From a9b809be9e81dd46782d7becb0261b0855ae01a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Fri, 19 Nov 2021 18:17:05 +0100 Subject: [PATCH 04/20] :bug: Fix Xero pagination (#2396) --- packages/nodes-base/nodes/Xero/GenericFunctions.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/nodes-base/nodes/Xero/GenericFunctions.ts b/packages/nodes-base/nodes/Xero/GenericFunctions.ts index 1ee4b040b9..79a20f32ad 100644 --- a/packages/nodes-base/nodes/Xero/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Xero/GenericFunctions.ts @@ -26,7 +26,6 @@ export async function xeroApiRequest(this: IExecuteFunctions | IExecuteSingleFun try { if (body.organizationId) { options.headers = { ...options.headers, 'Xero-tenant-id': body.organizationId }; - delete body.organizationId; } if (Object.keys(headers).length !== 0) { options.headers = Object.assign({}, options.headers, headers); From 37923c27161d27e8410a35c97dfb20277a734c54 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:28:24 +0000 Subject: [PATCH 05/20] =?UTF-8?q?:bookmark:=20Release=C2=A0n8n-workflow@0.?= =?UTF-8?q?77.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/workflow/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/workflow/package.json b/packages/workflow/package.json index 2e35eff0d3..b52d14f925 100644 --- a/packages/workflow/package.json +++ b/packages/workflow/package.json @@ -1,6 +1,6 @@ { "name": "n8n-workflow", - "version": "0.76.0", + "version": "0.77.0", "description": "Workflow base code of n8n", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", From e383e69fff1377a4bf36fc783a89c264e3e929ee Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:28:36 +0000 Subject: [PATCH 06/20] :arrow_up: Set n8n-workflow@0.77.0 on n8n-core --- packages/core/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/package.json b/packages/core/package.json index dfc9c18a51..5e0696ac12 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -50,7 +50,7 @@ "form-data": "^4.0.0", "lodash.get": "^4.4.2", "mime-types": "^2.1.27", - "n8n-workflow": "~0.76.0", + "n8n-workflow": "~0.77.0", "oauth-1.0a": "^2.2.6", "p-cancelable": "^2.0.0", "qs": "^6.10.1", From 7bfc48532404525d3cd10f7fd41c1bc0c87aa4b0 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:28:36 +0000 Subject: [PATCH 07/20] =?UTF-8?q?:bookmark:=20Release=C2=A0n8n-core@0.94.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/package.json b/packages/core/package.json index 5e0696ac12..c32b699888 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "n8n-core", - "version": "0.93.0", + "version": "0.94.0", "description": "Core functionality of n8n", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", From 9e7c6dd3e87d412f8ee02ae1f6b70e39d40010a2 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:28:45 +0000 Subject: [PATCH 08/20] :arrow_up: Set n8n-core@0.94.0 and n8n-workflow@0.77.0 on n8n-node-dev --- packages/node-dev/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/node-dev/package.json b/packages/node-dev/package.json index 3c2de68f43..a7f147a21d 100644 --- a/packages/node-dev/package.json +++ b/packages/node-dev/package.json @@ -60,8 +60,8 @@ "change-case": "^4.1.1", "copyfiles": "^2.1.1", "inquirer": "^7.0.1", - "n8n-core": "~0.93.0", - "n8n-workflow": "~0.76.0", + "n8n-core": "~0.94.0", + "n8n-workflow": "~0.77.0", "oauth-1.0a": "^2.2.6", "replace-in-file": "^6.0.0", "request": "^2.88.2", From 4112e37e5f69c949e113da681e138d01cefcda30 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:28:46 +0000 Subject: [PATCH 09/20] =?UTF-8?q?:bookmark:=20Release=C2=A0n8n-node-dev@0.?= =?UTF-8?q?34.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/node-dev/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node-dev/package.json b/packages/node-dev/package.json index a7f147a21d..5fe6c772e5 100644 --- a/packages/node-dev/package.json +++ b/packages/node-dev/package.json @@ -1,6 +1,6 @@ { "name": "n8n-node-dev", - "version": "0.33.0", + "version": "0.34.0", "description": "CLI to simplify n8n credentials/node development", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", From 877e51763ec336d1e0c6d551e34c52ce9fba8dcf Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:29:01 +0000 Subject: [PATCH 10/20] :arrow_up: Set n8n-core@0.94.0 and n8n-workflow@0.77.0 on n8n-nodes-base --- packages/nodes-base/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index 4047ea2477..39460f12bd 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -670,7 +670,7 @@ "@types/xml2js": "^0.4.3", "gulp": "^4.0.0", "jest": "^26.4.2", - "n8n-workflow": "~0.76.0", + "n8n-workflow": "~0.77.0", "nodelinter": "^0.1.9", "ts-jest": "^26.3.0", "tslint": "^6.1.2", @@ -710,7 +710,7 @@ "mqtt": "4.2.6", "mssql": "^6.2.0", "mysql2": "~2.3.0", - "n8n-core": "~0.93.0", + "n8n-core": "~0.94.0", "node-ssh": "^12.0.0", "nodemailer": "^6.5.0", "pdf-parse": "^1.1.1", From 073df659ed7bdf57039fefa86d9bfd7ee2372157 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:29:01 +0000 Subject: [PATCH 11/20] =?UTF-8?q?:bookmark:=20Release=C2=A0n8n-nodes-base@?= =?UTF-8?q?0.147.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/nodes-base/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index 39460f12bd..50d9a0bbce 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -1,6 +1,6 @@ { "name": "n8n-nodes-base", - "version": "0.146.0", + "version": "0.147.0", "description": "Base nodes of n8n", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", From 5c618580c9d9cbb529738d60c2c68f8ca1453b17 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:29:39 +0000 Subject: [PATCH 12/20] =?UTF-8?q?:bookmark:=20Release=C2=A0n8n-design-syst?= =?UTF-8?q?em@0.7.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/design-system/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/design-system/package.json b/packages/design-system/package.json index 7a1b8c79ad..d42b67bd26 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -1,6 +1,6 @@ { "name": "n8n-design-system", - "version": "0.6.0", + "version": "0.7.0", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", "author": { From c51f171d68affd6ed3d8224c40dbaecd876c2534 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:29:50 +0000 Subject: [PATCH 13/20] :arrow_up: Set n8n-design-system@0.7.0 and n8n-workflow@0.77.0 on n8n-editor-ui --- packages/editor-ui/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/editor-ui/package.json b/packages/editor-ui/package.json index 93be8548eb..e8fb133464 100644 --- a/packages/editor-ui/package.json +++ b/packages/editor-ui/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@fontsource/open-sans": "^4.5.0", - "n8n-design-system": "~0.6.0", + "n8n-design-system": "~0.7.0", "timeago.js": "^4.0.2", "v-click-outside": "^3.1.2", "vue-fragment": "^1.5.2" @@ -71,7 +71,7 @@ "lodash.debounce": "^4.0.8", "lodash.get": "^4.4.2", "lodash.set": "^4.3.2", - "n8n-workflow": "~0.76.0", + "n8n-workflow": "~0.77.0", "sass": "^1.26.5", "normalize-wheel": "^1.0.1", "prismjs": "^1.17.1", From b9ccdb2d19e9f72a53115c97c370712a462eb348 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:29:51 +0000 Subject: [PATCH 14/20] =?UTF-8?q?:bookmark:=20Release=C2=A0n8n-editor-ui@0?= =?UTF-8?q?.117.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor-ui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/editor-ui/package.json b/packages/editor-ui/package.json index e8fb133464..51d7dda510 100644 --- a/packages/editor-ui/package.json +++ b/packages/editor-ui/package.json @@ -1,6 +1,6 @@ { "name": "n8n-editor-ui", - "version": "0.116.0", + "version": "0.117.0", "description": "Workflow Editor UI for n8n", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", From ea38087bcad488f19750731a19974c0f35df4bbf Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:30:30 +0000 Subject: [PATCH 15/20] :arrow_up: Set n8n-core@0.94.0, n8n-editor-ui@0.117.0, n8n-nodes-base@0.147.0 and n8n-workflow@0.77.0 on n8n --- packages/cli/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 8dc2ef1da8..46664fb31b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -110,10 +110,10 @@ "localtunnel": "^2.0.0", "lodash.get": "^4.4.2", "mysql2": "~2.3.0", - "n8n-core": "~0.93.0", - "n8n-editor-ui": "~0.116.0", - "n8n-nodes-base": "~0.146.0", - "n8n-workflow": "~0.76.0", + "n8n-core": "~0.94.0", + "n8n-editor-ui": "~0.117.0", + "n8n-nodes-base": "~0.147.0", + "n8n-workflow": "~0.77.0", "oauth-1.0a": "^2.2.6", "open": "^7.0.0", "pg": "^8.3.0", From c68db308d40f7c4bbe6661a359f14433519c21e4 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 17:30:30 +0000 Subject: [PATCH 16/20] =?UTF-8?q?:bookmark:=20Release=C2=A0n8n@0.150.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 46664fb31b..51d241e33f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "n8n", - "version": "0.149.0", + "version": "0.150.0", "description": "n8n Workflow Automation Tool", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", From be6ab8de1355c4d46a3452aca3b9694380d9ecd7 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 19 Nov 2021 18:41:45 +0100 Subject: [PATCH 17/20] :shirt: Fix lint issue --- packages/cli/commands/import/workflow.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cli/commands/import/workflow.ts b/packages/cli/commands/import/workflow.ts index e2b51d26f9..6ca37d0000 100644 --- a/packages/cli/commands/import/workflow.ts +++ b/packages/cli/commands/import/workflow.ts @@ -6,7 +6,6 @@ import { INode, INodeCredentialsDetails, LoggerProxy } from 'n8n-workflow'; import * as fs from 'fs'; import * as glob from 'fast-glob'; -import * as path from 'path'; import { UserSettings } from 'n8n-core'; import { getLogger } from '../../src/Logger'; import { Db, ICredentialsDb } from '../../src'; From 03a73800426de3a69e3b43b772395f02fca76901 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Sat, 20 Nov 2021 15:05:06 +0000 Subject: [PATCH 18/20] Fixed build issue --- packages/cli/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cli/package.json b/packages/cli/package.json index 51d241e33f..e89fdd5dc5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -55,6 +55,7 @@ ], "devDependencies": { "@oclif/dev-cli": "^1.22.2", + "@types/validator": "^13.7.0", "@types/basic-auth": "^1.1.2", "@types/bcryptjs": "^2.4.2", "@types/bull": "^3.3.10", From 574e07f1f6fc3f6992e53e9f29ea3a2d8cc2fc92 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Sun, 21 Nov 2021 23:13:40 +0100 Subject: [PATCH 19/20] :bug: Improve expression security --- packages/workflow/src/Expression.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/workflow/src/Expression.ts b/packages/workflow/src/Expression.ts index b7fd4d0138..0ecc6e0a93 100644 --- a/packages/workflow/src/Expression.ts +++ b/packages/workflow/src/Expression.ts @@ -117,6 +117,8 @@ export class Expression { // Execute the expression try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + tmpl.tmpl('{{global=this;}}', data); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call const returnValue = tmpl.tmpl(parameterValue, data); if (typeof returnValue === 'function') { From e45781be099a224aef98c230549e473ffe90871d Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Sun, 21 Nov 2021 23:19:41 +0100 Subject: [PATCH 20/20] :zap: Fix order --- packages/cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index e89fdd5dc5..ff8d68d177 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -55,7 +55,6 @@ ], "devDependencies": { "@oclif/dev-cli": "^1.22.2", - "@types/validator": "^13.7.0", "@types/basic-auth": "^1.1.2", "@types/bcryptjs": "^2.4.2", "@types/bull": "^3.3.10", @@ -71,6 +70,7 @@ "@types/open": "^6.1.0", "@types/parseurl": "^1.3.1", "@types/request-promise-native": "~1.0.15", + "@types/validator": "^13.7.0", "concurrently": "^5.1.0", "jest": "^26.4.2", "nodemon": "^2.0.2",