type Error … var _ … // Error implements the error interface. func (v *Error) Error() string { … } type OmitValueType … var omitValue … // ErrorBody returns the error message without the field name. This is useful // for building nice-looking higher-level error reporting. func (v *Error) ErrorBody() string { … } type ErrorType … const ErrorTypeNotFound … const ErrorTypeRequired … const ErrorTypeDuplicate … const ErrorTypeInvalid … const ErrorTypeNotSupported … const ErrorTypeForbidden … const ErrorTypeTooLong … const ErrorTypeTooMany … const ErrorTypeInternal … const ErrorTypeTypeInvalid … // String converts a ErrorType into its corresponding canonical error message. func (t ErrorType) String() string { … } // TypeInvalid returns a *Error indicating "type is invalid" func TypeInvalid(field *Path, value interface{ … } // NotFound returns a *Error indicating "value not found". This is // used to report failure to find a requested value (e.g. looking up an ID). func NotFound(field *Path, value interface{ … } // Required returns a *Error indicating "value required". This is used // to report required values that are not provided (e.g. empty strings, null // values, or empty arrays). func Required(field *Path, detail string) *Error { … } // Duplicate returns a *Error indicating "duplicate value". This is // used to report collisions of values that must be unique (e.g. names or IDs). func Duplicate(field *Path, value interface{ … } // Invalid returns a *Error indicating "invalid value". This is used // to report malformed values (e.g. failed regex match, too long, out of bounds). func Invalid(field *Path, value interface{ … } // NotSupported returns a *Error indicating "unsupported value". // This is used to report unknown values for enumerated fields (e.g. a list of // valid values). func NotSupported[T ~string](field *Path, value interface{ … } // Forbidden returns a *Error indicating "forbidden". This is used to // report valid (as per formatting rules) values which would be accepted under // some conditions, but which are not permitted by current conditions (e.g. // security policy). func Forbidden(field *Path, detail string) *Error { … } // TooLong returns a *Error indicating "too long". This is used to // report that the given value is too long. This is similar to // Invalid, but the returned error will not include the too-long // value. func TooLong(field *Path, value interface{ … } // TooLongMaxLength returns a *Error indicating "too long". This is used to // report that the given value is too long. This is similar to // Invalid, but the returned error will not include the too-long // value. If maxLength is negative, no max length will be included in the message. func TooLongMaxLength(field *Path, value interface{ … } // TooMany returns a *Error indicating "too many". This is used to // report that a given list has too many items. This is similar to TooLong, // but the returned error indicates quantity instead of length. func TooMany(field *Path, actualQuantity, maxQuantity int) *Error { … } // InternalError returns a *Error indicating "internal error". This is used // to signal that an error was found that was not directly related to user // input. The err argument must be non-nil. func InternalError(field *Path, err error) *Error { … } type ErrorList … // NewErrorTypeMatcher returns an errors.Matcher that returns true // if the provided error is a Error and has the provided ErrorType. func NewErrorTypeMatcher(t ErrorType) utilerrors.Matcher { … } // ToAggregate converts the ErrorList into an errors.Aggregate. func (list ErrorList) ToAggregate() utilerrors.Aggregate { … } func fromAggregate(agg utilerrors.Aggregate) ErrorList { … } // Filter removes items from the ErrorList that match the provided fns. func (list ErrorList) Filter(fns ...utilerrors.Matcher) ErrorList { … }