From 9989ea645ce3a85994738ba854e307af83d7948f Mon Sep 17 00:00:00 2001 From: Dylan Mendelowitz Date: Thu, 1 Jul 2021 13:02:57 -0400 Subject: [PATCH 1/2] Adding email with name custom schema format --- src/helpers/configValidator.js | 8 ++++++++ src/helpers/schemas/config.schema.json | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/helpers/configValidator.js b/src/helpers/configValidator.js index bf97cee1..920fbb12 100644 --- a/src/helpers/configValidator.js +++ b/src/helpers/configValidator.js @@ -14,6 +14,14 @@ ajv.addFormat('comma-separated-emails', { return emails.split(',').every((email) => emailRegex.test(email.trim())); }, }); +ajv.addFormat('email-with-name', { + type: 'string', + validate: (email) => { + // this is Ajv's regex for email format (https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts#L106) + const emailRegex = new RegExp(/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i); + return emailRegex.test(email.split(' ').pop()); + }, +}); const validator = ajv.addSchema(configSchema, 'config'); diff --git a/src/helpers/schemas/config.schema.json b/src/helpers/schemas/config.schema.json index fd66a709..660e9c28 100644 --- a/src/helpers/schemas/config.schema.json +++ b/src/helpers/schemas/config.schema.json @@ -44,7 +44,8 @@ "type": "integer" }, "from": { - "type": "string" + "type": "string", + "format": "email-with-name" }, "to": { "anyOf": [ From 3529dde2645c499306b1ce9ea25617bd5e1aeea1 Mon Sep 17 00:00:00 2001 From: Dylan Mendelowitz Date: Tue, 6 Jul 2021 13:26:34 -0400 Subject: [PATCH 2/2] adding trim() before split() --- src/helpers/configValidator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/configValidator.js b/src/helpers/configValidator.js index 920fbb12..3bac2236 100644 --- a/src/helpers/configValidator.js +++ b/src/helpers/configValidator.js @@ -19,7 +19,7 @@ ajv.addFormat('email-with-name', { validate: (email) => { // this is Ajv's regex for email format (https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts#L106) const emailRegex = new RegExp(/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i); - return emailRegex.test(email.split(' ').pop()); + return emailRegex.test(email.trim().split(' ').pop()); }, });