dependabot[bot] 18490d8034 chore(deps): bump jdx/mise-action in the github-actions group
Bumps the github-actions group with 1 update: [jdx/mise-action](https://github.com/jdx/mise-action).


Updates `jdx/mise-action` from 3 to 4
- [Release notes](https://github.com/jdx/mise-action/releases)
- [Changelog](https://github.com/jdx/mise-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jdx/mise-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: jdx/mise-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-15 01:12:39 +00:00
2023-04-07 10:21:04 +02:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 23:33:33 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 23:28:26 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00
2026-02-26 22:51:04 +01:00

Build Status Go Report Card GoDoc

fender

fender

a piece of rope or a tyre that protects the side of a boat from knocks

Fender provides a unified way to validate data and on the backend & frontend side.

Usage

All

func ExampleAll() {
	err := fender.All(
		context.Background(),
		fend.Field("one", "", rule.RequiredString, rule.MinString(10)),
		fend.Field("two", "", rule.RequiredString, rule.MinString(10)),
	)
	// check for fender error
	if fendErr := fender.AsError(err); fendErr != nil {
		fmt.Println(err)
	} else if err != nil {
		panic(err)
	}
	// Output: one:required:min=10;two:required:min=10
}

AllFirst

func ExampleAllFirst() {
	err := fender.AllFirst(
		context.Background(),
		fend.Field("one", "", rule.RequiredString, rule.MinString(10)),
		fend.Field("two", "", rule.RequiredString, rule.MinString(10)),
	)

	// check for fender error
	if fendErr := fender.AsError(err); fendErr != nil {
		fmt.Println(err)
	} else if err != nil {
		panic(err)
	}
	// Output: one:required:min=10
}

First

func ExampleFirst() {
	err := fender.First(
		context.Background(),
		fend.Field("one", "", rule.RequiredString, rule.MinString(10)),
		fend.Field("two", "", rule.RequiredString, rule.MinString(10)),
	)

	// check for fender error
	if fendErr := fender.AsError(err); fendErr != nil {
		fmt.Println(err)
	} else if err != nil {
		panic(err)
	}
	// Output: one:required
}

Handle errors

func ExampleErrors() {
	err := fender.All(
		context.Background(),
		fend.Field("one", "", rule.RequiredString, rule.MinString(10)),
		fend.Field("two", "", rule.RequiredString, rule.MinString(10)),
	)

	// cast fender error
	if fenderErr := fender.AsError(err); fenderErr != nil {

		// iterate fend errors
		for _, err := range fenderErr.Errors() {

			// cast fend error
			if fendErr := fend.AsError(err); fendErr != nil {

				fmt.Println(fendErr.Name())

				// iterate rule errors
				for _, err := range fendErr.Errors() {

					// cast rule error
					if ruleErr := rule.AsError(err); ruleErr != nil {
						fmt.Println(ruleErr.Error())
					}
				}
			}
		}
	} else if err != nil {
		panic(err)
	}
	// Output:
	// one
	// required
	// min=10
	// two
	// required
	// min=10
}

Benchmarks

go test -bench=. | prettybench
goos: darwin
goarch: arm64
pkg: github.com/foomo/fender
PASS
benchmark                                      iter       time/iter
---------                                      ----       ---------
BenchmarkAll/invalid_reused/fender-10        282154   3771.00 ns/op
BenchmarkAll/invalid_reused/playground-10    678679   1741.00 ns/op
BenchmarkAll/success_new/fender-10          1000000   1026.00 ns/op
BenchmarkAll/success_new/playground-10      1308327    937.60 ns/op
ok  	github.com/foomo/fender	5.619s

References & alternatives

How to Contribute

Contributions are welcome! Please read the contributing guide.

Contributors

License

Distributed under MIT License, please read the license file for more details.

Made with ♥ foomo by bestbytes

Description
No description provided
Readme MIT 588 KiB
Languages
Go 93.9%
Makefile 6.1%