// @ts-nocheck
import type { ExecuteRule } from '../interface'
import { format, isEmptyValue } from '../util'

const required: ExecuteRule = (rule, value, source, errors, options, type) => {
  if (
    rule.required &&
    (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))
  ) {
    errors.push(format(options.messages.required, rule.fullField))
  }
}

export default required
