https://mattermost.atlassian.net/browse/MM-34932

```release-note
NONE
```
Этот коммит содержится в:
Agniva De Sarker
2021-06-03 12:59:05 +05:30
коммит произвёл GitHub
родитель fff09bf210
Коммит 3299a72adb
776 изменённых файлов: 40081 добавлений и 44702 удалений

4
vendor/github.com/vmihailenco/msgpack/v5/README.md сгенерированный поставляемый
Просмотреть файл

@@ -82,6 +82,4 @@ func ExampleMarshal() {
## See also
- [Fast and flexible HTTP router](https://github.com/vmihailenco/treemux)
- [Golang PostgreSQL ORM](https://github.com/go-pg/pg)
- [Golang message task queue](https://github.com/vmihailenco/taskq)
- [Fast and flexible ORM for sql.DB](https://bun.uptrace.dev)

2
vendor/github.com/vmihailenco/msgpack/v5/decode_map.go сгенерированный поставляемый
Просмотреть файл

@@ -288,7 +288,7 @@ func decodeStructValue(d *Decoder, v reflect.Value) error {
return err
}
if n == -1 {
if n <= 0 {
v.Set(reflect.Zero(v.Type()))
return nil
}

10
vendor/github.com/vmihailenco/msgpack/v5/encode.go сгенерированный поставляемый
Просмотреть файл

@@ -16,6 +16,7 @@ const (
useCompactIntsFlag
useCompactFloatsFlag
useInternedStringsFlag
omitEmptyFlag
)
type writer interface {
@@ -147,6 +148,15 @@ func (e *Encoder) SetCustomStructTag(tag string) {
e.structTag = tag
}
// SetOmitEmpty causes the Encoder to omit empty values by default.
func (e *Encoder) SetOmitEmpty(on bool) {
if on {
e.flags |= omitEmptyFlag
} else {
e.flags &= ^omitEmptyFlag
}
}
// UseArrayEncodedStructs causes the Encoder to encode Go structs as msgpack arrays.
func (e *Encoder) UseArrayEncodedStructs(on bool) {
if on {

2
vendor/github.com/vmihailenco/msgpack/v5/encode_map.go сгенерированный поставляемый
Просмотреть файл

@@ -147,7 +147,7 @@ func encodeStructValue(e *Encoder, strct reflect.Value) error {
if e.flags&arrayEncodedStructsFlag != 0 || structFields.AsArray {
return encodeStructValueAsArray(e, strct, structFields.List)
}
fields := structFields.OmitEmpty(strct)
fields := structFields.OmitEmpty(strct, e.flags&omitEmptyFlag != 0)
if err := e.EncodeMapLen(len(fields)); err != nil {
return err

32
vendor/github.com/vmihailenco/msgpack/v5/types.go сгенерированный поставляемый
Просмотреть файл

@@ -97,12 +97,12 @@ type field struct {
decoder decoderFunc
}
func (f *field) Omit(strct reflect.Value) bool {
func (f *field) Omit(strct reflect.Value, forced bool) bool {
v, ok := fieldByIndex(strct, f.index)
if !ok {
return true
}
return f.omitEmpty && isEmptyValue(v)
return (f.omitEmpty || forced) && isEmptyValue(v)
}
func (f *field) EncodeValue(e *Encoder, strct reflect.Value) error {
@@ -152,15 +152,15 @@ func (fs *fields) warnIfFieldExists(name string) {
}
}
func (fs *fields) OmitEmpty(strct reflect.Value) []*field {
if !fs.hasOmitEmpty {
func (fs *fields) OmitEmpty(strct reflect.Value, forced bool) []*field {
if !fs.hasOmitEmpty && !forced {
return fs.List
}
fields := make([]*field, 0, len(fs.List))
for _, f := range fs.List {
if !f.Omit(strct) {
if !f.Omit(strct, forced) {
fields = append(fields, f)
}
}
@@ -318,10 +318,21 @@ type isZeroer interface {
}
func isEmptyValue(v reflect.Value) bool {
if z, ok := v.Interface().(isZeroer); ok {
return z.IsZero()
kind := v.Kind()
for kind == reflect.Interface {
if v.IsNil() {
return true
}
v = v.Elem()
kind = v.Kind()
}
switch v.Kind() {
if z, ok := v.Interface().(isZeroer); ok {
return nilable(kind) && v.IsNil() || z.IsZero()
}
switch kind {
case reflect.Array, reflect.Map, reflect.Slice, reflect.String:
return v.Len() == 0
case reflect.Bool:
@@ -332,10 +343,11 @@ func isEmptyValue(v reflect.Value) bool {
return v.Uint() == 0
case reflect.Float32, reflect.Float64:
return v.Float() == 0
case reflect.Interface, reflect.Ptr:
case reflect.Ptr:
return v.IsNil()
default:
return false
}
return false
}
func fieldByIndex(v reflect.Value, index []int) (_ reflect.Value, ok bool) {