code: function required (val, arg) {
    var isRequired = arg === undefined ? true : arg;
    if (Array.isArray(val)) {
      if (val.length !== 0) {
        var valid = true;
        for (var i = 0, l = val.length; i < l; i++) {
          valid = required(val[i], isRequired);
          if ((isRequired && !valid) || (!isRequired && valid)) {
            break
          }
        }
        return valid
      } else {
        return !isRequired
      }
    } else if (typeof val === 'number' || typeof val === 'function') {
      return isRequired
    } else if (typeof val === 'boolean') {
      return val === isRequired
    } else if (typeof val === 'string') {
      return isRequired ? (val.length > 0) : (val.length <= 0)
    } else if (val !== null && typeof val === 'object') {
      return isRequired ? (Object.keys(val).length > 0) : (Object.keys(val).length <= 0)
    } else if (val === null || val === undefined) {
      return !isRequired
    } else {
      return !isRequired
    }
  }
docs: /* 
  build-in validators
   
  required
  This function validate whether the value has been filled out.