package errors

import (
	stderrors "errors"
	"fmt"
)

func New(text string) error {
	return stderrors.New(text)
}

func Annotate(err error, msg string) error {
	if err == nil {
		return nil
	}
	return fmt.Errorf("%s: %w", msg, err)
}

func Annotatef(err error, format string, args ...interface{}) error {
	if err == nil {
		return nil
	}
	return fmt.Errorf("%s: %w", fmt.Sprintf(format, args...), err)
}

func Errorf(format string, args ...interface{}) error {
	return fmt.Errorf(format, args...)
}

func Is(err, target error) bool {
	return stderrors.Is(err, target)
}

func As(err error, target interface{}) bool {
	return stderrors.As(err, target)
}

func Wrap(err error, msg string) error {
	return Annotate(err, msg)
}

func Wrapf(err error, format string, args ...interface{}) error {
	return Annotatef(err, format, args...)
}
