package errors import "fmt" type UniverseErrorBuilder struct { t *UniverseErrorType message string cause error fields map[interface{}]any stack ErrorStack } func Builder() *UniverseErrorBuilder { return &UniverseErrorBuilder{ stack: CaptureStackIfEnabled(), } } func BuilderEmpty() *UniverseErrorBuilder { return &UniverseErrorBuilder{} } func (b *UniverseErrorBuilder) Message(message string) *UniverseErrorBuilder { b.message = message return b } func (b *UniverseErrorBuilder) Messagef(format string, args ...interface{}) *UniverseErrorBuilder { b.message = fmt.Sprintf(format, args...) return b } func (b *UniverseErrorBuilder) Type(typeName *UniverseErrorType) *UniverseErrorBuilder { b.t = typeName return b } func (b *UniverseErrorBuilder) Cause(cause error) *UniverseErrorBuilder { b.cause = cause return b } func (b *UniverseErrorBuilder) CaptureStackIfEnabled() *UniverseErrorBuilder { b.stack = CaptureStackIfEnabled() return b } func (b *UniverseErrorBuilder) CaptureStack() *UniverseErrorBuilder { b.stack = CaptureStack() return b } func (b *UniverseErrorBuilder) WithField(key interface{}, value interface{}) *UniverseErrorBuilder { if b.fields == nil { b.fields = make(map[interface{}]any) } b.fields[key] = value return b } func (b *UniverseErrorBuilder) Build() UniverseError { return &UniverseErrorImpl{ msg: b.message, cause: b.cause, fields: b.fields, stack: b.stack, t: b.t, } }