import Joi from 'joi' import domains from './tlds-alpha-by-domain.js' const answerValidator = { name: Joi.string().min(2).max(50).required(), email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: domains }, }), // TODO: password validation is a moving target with regex, // consider using a more robust library? password: Joi.string() .min(14) .max(30) .pattern( new RegExp( '^(?=.*[!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?])(?=.*[!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?])[a-zA-Z0-9!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?]{10,}$', ), ), // TODO: Change if going international (only works in usa) zipcode: Joi.string().min(5).max(5).pattern(new RegExp('^[0-9]{5}$')), seeking: Joi.string(), urgency: Joi.string(), presence: Joi.string(), duration: Joi.string(), pronouns: Joi.string(), language: Joi.string(), image: Joi.any(), // NOTE: Allows 1 to 3 digits and then distance metric distance: Joi.string() .min(4) .max(15) .pattern(new RegExp('^\\d{1,3}(\\.\\d{1,2})?\\s?(mi|km|mile|miles|kilometer|kilometers)$')), blurb: Joi.string().max(200), value: Joi.string(), aspect: Joi.number(), } export { answerValidator }