Parsing a value to match the schema. This is different to validation because it returns a new value.
import * as v from "valibot";
import { personSchema } from "./schemas";
const person = v.parse(personSchema, data);
// person is of type Person
| Library | Version | Optimizations | Error type | Mean | Compare | |||
|---|---|---|---|---|---|---|---|---|
arktype | Code snippet | 2.1.25 | None | All errors | 7 μs | |||
zod (mini, jitless) | Code snippet | 4.1.12 | None | All errors | 11 μs | 1.52x | ||
zod (jitless) | Code snippet | 4.1.12 | None | All errors | 12 μs | 1.6x | ||
valibot (abortPipeEarly only) | Code snippet | 1.1.0 | None | Abort early | 12 μs | 1.68x | ||
valibot | Code snippet | 1.1.0 | None | Abort early | 12 μs | 1.69x | ||
valibot | Code snippet | 1.1.0 | None | All errors | 12 μs | 1.71x | ||
effect | Code snippet(Commented code is not benchmarked) | 3.19.3 | None | Abort early | 18 μs | 2.52x | ||
effect | Code snippet(Commented code is not benchmarked) | 3.19.3 | None | All errors | 18 μs | 2.53x | ||
joi | Code snippet | 18.0.1 | None | All errors | 36 μs | 5x | ||
joi | Code snippet | 18.0.1 | None | Abort early | 36 μs | 5.02x | ||
yup | Code snippet | 1.7.1 | None | Abort early | 143 μs | 19.72x | ||
yup | Code snippet | 1.7.1 | None | All errors | 143 μs | 19.74x | ||
typebox | Code snippet | 1.0.51 | None | All errors | 261 μs | 36.03x |