required (value, schema, opts) {
    opts || (opts = {})
    const required = schema.required
    const errors = []
    if (!opts.existingOnly) {
      required.forEach(function (prop) {
        if (utils.get(value, prop) === undefined) {
          const prevProp = opts.prop
          opts.prop = prop
          addError(undefined, 'a value', opts, errors)
          opts.prop = prevProp
        }
      })
    }
    return errors.length ? errors : undefined
  }
Validates the provided object's has all properties listed in the Schema's `properties` keyword array.
Validation succeeds if the object contains all properties provided in the array value of this keyword.
see http://json-schema.org/latest/json-schema-validation.html#anchor61

@name Schema.validationKeywords.required
@method
@param {*} value Object to be validated.
@param {object} schema Schema containing the `required` keyword.
@param {object} [opts] Configuration options.
@returns {(array|undefined)} Array of errors or `undefined` if valid.