import { ValidateSchema } from '~/data/protocols'; import { JoiValidator } from '~/infra/joi/validators/use-cases/joi-common-validator'; export class JoiArrayValidator extends JoiValidator<'array'> implements ValidateSchema<'array'> { validate(model: ValidateSchema.Model<'array'>, value: unknown): string[] | null { const result = super.validate(model, value); if (value === null && !model.rules.required && result?.length) { /** * Joi doesnt allow ArraySchema to call [ schema.allow ], * so I don't know any other simple way to make our array schemas allow null as well */ return null; } return result; } }