| 123456789101112131415161718192021222324252627282930313233343536373839 |
- 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 }
|