1package interceptor
2
3import (
4	"errors"
5	"strings"
6)
7
8func flattenErrs(errs []error) error {
9	errs2 := []error{}
10	for _, e := range errs {
11		if e != nil {
12			errs2 = append(errs2, e)
13		}
14	}
15	if len(errs2) == 0 {
16		return nil
17	}
18	return multiError(errs2)
19}
20
21type multiError []error
22
23func (me multiError) Error() string {
24	var errstrings []string
25
26	for _, err := range me {
27		if err != nil {
28			errstrings = append(errstrings, err.Error())
29		}
30	}
31
32	if len(errstrings) == 0 {
33		return "multiError must contain multiple error but is empty"
34	}
35
36	return strings.Join(errstrings, "\n")
37}
38
39func (me multiError) Is(err error) bool {
40	for _, e := range me {
41		if errors.Is(e, err) {
42			return true
43		}
44		if me2, ok := e.(multiError); ok {
45			if me2.Is(err) {
46				return true
47			}
48		}
49	}
50	return false
51}
52