diff --git a/src/helpers/configValidator.js b/src/helpers/configValidator.js index 6aca537b..bf97cee1 100644 --- a/src/helpers/configValidator.js +++ b/src/helpers/configValidator.js @@ -5,6 +5,16 @@ const configSchema = require('./schemas/config.schema.json'); const ajv = new Ajv({ logger: false, allErrors: true }); ajv.addMetaSchema(metaSchema); + +ajv.addFormat('comma-separated-emails', { + type: 'string', + validate: (emails) => { + // 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 emails.split(',').every((email) => emailRegex.test(email.trim())); + }, +}); + const validator = ajv.addSchema(configSchema, 'config'); function validateConfig(config) { diff --git a/src/helpers/schemas/config.schema.json b/src/helpers/schemas/config.schema.json index 8df6e9ff..fd66a709 100644 --- a/src/helpers/schemas/config.schema.json +++ b/src/helpers/schemas/config.schema.json @@ -49,12 +49,14 @@ "to": { "anyOf": [ { - "type": "string" + "type": "string", + "format": "comma-separated-emails" }, { "type": "array", "items": { - "type": "string" + "type": "string", + "format": "email" } } ]