UNPKG

@defra-fish/gafl-webapp-service

Version:

The websales frontend for the GAFL service

64 lines (59 loc) 1.65 kB
'use strict' import Joi from 'joi' export const dateSchemaInput = (unparsedDay, unparsedMonth, unparsedYear) => { const day = unparsedDay === '' ? undefined : unparsedDay const month = unparsedMonth === '' ? undefined : unparsedMonth const year = unparsedYear === '' ? undefined : unparsedYear return { 'full-date': { day, month, year }, 'day-and-month': { day, month }, 'day-and-year': { day, year }, 'month-and-year': { month, year }, day, month, year, 'non-numeric': { day, month, year }, 'invalid-date': `${year}-${(month || '').padStart(2, '0')}-${(day || '').padStart(2, '0')}` } } export const dateSchema = Joi.object({ 'full-date': Joi.object() .keys({ day: Joi.any(), month: Joi.any(), year: Joi.any() }) .or('day', 'month', 'year'), 'day-and-month': Joi.object() .keys({ day: Joi.any(), month: Joi.any() }) .or('day', 'month'), 'day-and-year': Joi.object() .keys({ day: Joi.any(), year: Joi.any() }) .or('day', 'year'), 'month-and-year': Joi.object() .keys({ month: Joi.any(), year: Joi.any() }) .or('month', 'year'), day: Joi.any().required(), month: Joi.any().required(), year: Joi.any().required(), 'non-numeric': Joi.object().keys({ day: Joi.number(), month: Joi.number(), year: Joi.number() }), 'invalid-date': Joi.custom((dateToValidate, helpers) => { if (new Date(dateToValidate).toISOString() !== `${dateToValidate}T00:00:00.000Z`) { throw helpers.error('invalid-date') } return dateToValidate }) }).options({ abortEarly: true })