File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 6868* [ valita] ( https://github.com/badrap/valita )
6969* [ Vality] ( https://github.com/jeengbe/vality )
7070* [ yup] ( https://github.com/jquense/yup )
71- * [ zod] ( https://github.com/vriad/zod )
71+ * [ zod] ( https://github.com/colinhacks/zod )
72+ * [ zod (v4)] ( https://github.com/colinhacks/zod/tree/v4 )
7273
7374## Criteria
7475
Original file line number Diff line number Diff line change @@ -54,6 +54,7 @@ export const cases = [
5454 'vality' ,
5555 'yup' ,
5656 'zod' ,
57+ 'zod4' ,
5758 'deepkit' ,
5859 'effect-schema' ,
5960 'ts-auto-guard' ,
Original file line number Diff line number Diff line change 1+ import * as z from 'zod4' ;
2+ import { createCase } from '../benchmarks' ;
3+
4+ createCase ( 'zod4' , 'parseSafe' , ( ) => {
5+ const dataType = z . interface ( {
6+ number : z . number ( ) ,
7+ negNumber : z . number ( ) ,
8+ maxNumber : z . number ( ) ,
9+ string : z . string ( ) ,
10+ longString : z . string ( ) ,
11+ boolean : z . boolean ( ) ,
12+ deeplyNested : z . interface ( {
13+ foo : z . string ( ) ,
14+ num : z . number ( ) ,
15+ bool : z . boolean ( ) ,
16+ } ) ,
17+ } ) ;
18+
19+ return data => {
20+ return dataType . parse ( data ) ;
21+ } ;
22+ } ) ;
23+
24+ createCase ( 'zod4' , 'parseStrict' , ( ) => {
25+ const dataType = z
26+ . interface ( {
27+ number : z . number ( ) ,
28+ negNumber : z . number ( ) ,
29+ maxNumber : z . number ( ) ,
30+ string : z . string ( ) ,
31+ longString : z . string ( ) ,
32+ boolean : z . boolean ( ) ,
33+ deeplyNested : z
34+ . interface ( {
35+ foo : z . string ( ) ,
36+ num : z . number ( ) ,
37+ bool : z . boolean ( ) ,
38+ } )
39+ . strict ( ) ,
40+ } )
41+ . strict ( ) ;
42+
43+ return data => {
44+ return dataType . parse ( data ) ;
45+ } ;
46+ } ) ;
47+
48+ createCase ( 'zod4' , 'assertLoose' , ( ) => {
49+ const dataType = z . looseInterface ( {
50+ number : z . number ( ) ,
51+ negNumber : z . number ( ) ,
52+ maxNumber : z . number ( ) ,
53+ string : z . string ( ) ,
54+ longString : z . string ( ) ,
55+ boolean : z . boolean ( ) ,
56+ deeplyNested : z . looseInterface ( {
57+ foo : z . string ( ) ,
58+ num : z . number ( ) ,
59+ bool : z . boolean ( ) ,
60+ } ) ,
61+ } ) ;
62+
63+ return data => {
64+ dataType . parse ( data ) ;
65+
66+ return true ;
67+ } ;
68+ } ) ;
69+
70+ createCase ( 'zod4' , 'assertStrict' , ( ) => {
71+ const dataType = z . strictInterface ( {
72+ number : z . number ( ) ,
73+ negNumber : z . number ( ) ,
74+ maxNumber : z . number ( ) ,
75+ string : z . string ( ) ,
76+ longString : z . string ( ) ,
77+ boolean : z . boolean ( ) ,
78+ deeplyNested : z . strictInterface ( {
79+ foo : z . string ( ) ,
80+ num : z . number ( ) ,
81+ bool : z . boolean ( ) ,
82+ } ) ,
83+ } ) ;
84+
85+ return data => {
86+ dataType . parse ( data ) ;
87+
88+ return true ;
89+ } ;
90+ } ) ;
You can’t perform that action at this time.
0 commit comments