zod 3.25.4 → 3.25.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/v3/types.d.ts +1 -1
- package/dist/commonjs/v4/classic/errors.d.ts +1 -1
- package/dist/commonjs/v4/classic/errors.js +1 -0
- package/dist/commonjs/v4/classic/parse.d.ts +1 -1
- package/dist/commonjs/v4/classic/parse.js +2 -2
- package/dist/commonjs/v4/core/errors.d.ts +1 -1
- package/dist/commonjs/v4/core/errors.js +44 -0
- package/dist/commonjs/v4/core/parse.js +2 -2
- package/dist/esm/v3/types.d.ts +1 -1
- package/dist/esm/v4/classic/errors.d.ts +1 -1
- package/dist/esm/v4/classic/errors.js +1 -0
- package/dist/esm/v4/classic/parse.d.ts +1 -1
- package/dist/esm/v4/classic/parse.js +3 -3
- package/dist/esm/v4/core/errors.d.ts +1 -1
- package/dist/esm/v4/core/errors.js +11 -0
- package/dist/esm/v4/core/parse.js +2 -2
- package/package.json +1 -1
- package/src/v3/types.ts +1 -1
- package/src/v4/classic/errors.ts +2 -1
- package/src/v4/classic/parse.ts +3 -3
- package/src/v4/classic/tests/array.test.ts +42 -46
- package/src/v4/classic/tests/async-refinements.test.ts +14 -18
- package/src/v4/classic/tests/catch.test.ts +10 -12
- package/src/v4/classic/tests/discriminated-unions.test.ts +77 -87
- package/src/v4/classic/tests/enum.test.ts +33 -39
- package/src/v4/classic/tests/error-utils.test.ts +25 -27
- package/src/v4/classic/tests/error.test.ts +115 -128
- package/src/v4/classic/tests/literal.test.ts +10 -12
- package/src/v4/classic/tests/map.test.ts +60 -68
- package/src/v4/classic/tests/nested-refine.test.ts +68 -72
- package/src/v4/classic/tests/nonoptional.test.ts +36 -44
- package/src/v4/classic/tests/number.test.ts +36 -44
- package/src/v4/classic/tests/pipe.test.ts +18 -22
- package/src/v4/classic/tests/preprocess.test.ts +91 -107
- package/src/v4/classic/tests/primitive.test.ts +9 -11
- package/src/v4/classic/tests/record.test.ts +101 -121
- package/src/v4/classic/tests/set.test.ts +30 -36
- package/src/v4/classic/tests/string.test.ts +50 -60
- package/src/v4/classic/tests/template-literal.test.ts +45 -55
- package/src/v4/classic/tests/transform.test.ts +36 -46
- package/src/v4/classic/tests/tuple.test.ts +54 -66
- package/src/v4/core/errors.ts +12 -1
- package/src/v4/core/parse.ts +2 -2
- package/src/v4/core/tests/index.test.ts +42 -1
- package/src/v4/mini/tests/error.test.ts +1 -1
|
@@ -47,16 +47,14 @@ test("type error with custom error map", () => {
|
|
|
47
47
|
const result = z.string().safeParse(234, { error: errorMap });
|
|
48
48
|
expect(result.success).toBe(false);
|
|
49
49
|
expect(result.error).toMatchInlineSnapshot(`
|
|
50
|
-
ZodError
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
],
|
|
59
|
-
}
|
|
50
|
+
[ZodError: [
|
|
51
|
+
{
|
|
52
|
+
"expected": "string",
|
|
53
|
+
"code": "invalid_type",
|
|
54
|
+
"path": [],
|
|
55
|
+
"message": "bad type!"
|
|
56
|
+
}
|
|
57
|
+
]]
|
|
60
58
|
`);
|
|
61
59
|
});
|
|
62
60
|
|
|
@@ -69,18 +67,16 @@ test("refinement fail with params", () => {
|
|
|
69
67
|
.safeParse(2, { error: errorMap });
|
|
70
68
|
expect(result.success).toBe(false);
|
|
71
69
|
expect(result.error).toMatchInlineSnapshot(`
|
|
72
|
-
ZodError
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
"minimum": 3,
|
|
79
|
-
},
|
|
80
|
-
"path": [],
|
|
70
|
+
[ZodError: [
|
|
71
|
+
{
|
|
72
|
+
"code": "custom",
|
|
73
|
+
"path": [],
|
|
74
|
+
"params": {
|
|
75
|
+
"minimum": 3
|
|
81
76
|
},
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
"message": "less-than-3"
|
|
78
|
+
}
|
|
79
|
+
]]
|
|
84
80
|
`);
|
|
85
81
|
});
|
|
86
82
|
|
|
@@ -95,18 +91,16 @@ test("hard coded error with custom errormap", () => {
|
|
|
95
91
|
|
|
96
92
|
expect(result.success).toBe(false);
|
|
97
93
|
expect(result.error).toMatchInlineSnapshot(`
|
|
98
|
-
ZodError
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"
|
|
104
|
-
"minimum": 13,
|
|
105
|
-
},
|
|
106
|
-
"path": [],
|
|
94
|
+
[ZodError: [
|
|
95
|
+
{
|
|
96
|
+
"code": "custom",
|
|
97
|
+
"path": [],
|
|
98
|
+
"params": {
|
|
99
|
+
"minimum": 13
|
|
107
100
|
},
|
|
108
|
-
|
|
109
|
-
|
|
101
|
+
"message": "override"
|
|
102
|
+
}
|
|
103
|
+
]]
|
|
110
104
|
`);
|
|
111
105
|
});
|
|
112
106
|
|
|
@@ -118,15 +112,13 @@ test("default error message", () => {
|
|
|
118
112
|
|
|
119
113
|
expect(result.success).toBe(false);
|
|
120
114
|
expect(result.error).toMatchInlineSnapshot(`
|
|
121
|
-
ZodError
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
],
|
|
129
|
-
}
|
|
115
|
+
[ZodError: [
|
|
116
|
+
{
|
|
117
|
+
"code": "custom",
|
|
118
|
+
"path": [],
|
|
119
|
+
"message": "Invalid input"
|
|
120
|
+
}
|
|
121
|
+
]]
|
|
130
122
|
`);
|
|
131
123
|
});
|
|
132
124
|
|
|
@@ -138,15 +130,13 @@ test("override error in refine", () => {
|
|
|
138
130
|
expect(result.success).toBe(false);
|
|
139
131
|
expect(result.error!.issues.length).toEqual(1);
|
|
140
132
|
expect(result.error).toMatchInlineSnapshot(`
|
|
141
|
-
ZodError
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
],
|
|
149
|
-
}
|
|
133
|
+
[ZodError: [
|
|
134
|
+
{
|
|
135
|
+
"code": "custom",
|
|
136
|
+
"path": [],
|
|
137
|
+
"message": "override"
|
|
138
|
+
}
|
|
139
|
+
]]
|
|
150
140
|
`);
|
|
151
141
|
});
|
|
152
142
|
|
|
@@ -160,15 +150,13 @@ test("override error in refinement", () => {
|
|
|
160
150
|
expect(result.success).toBe(false);
|
|
161
151
|
expect(result.error!.issues.length).toEqual(1);
|
|
162
152
|
expect(result.error).toMatchInlineSnapshot(`
|
|
163
|
-
ZodError
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
],
|
|
171
|
-
}
|
|
153
|
+
[ZodError: [
|
|
154
|
+
{
|
|
155
|
+
"code": "custom",
|
|
156
|
+
"path": [],
|
|
157
|
+
"message": "override"
|
|
158
|
+
}
|
|
159
|
+
]]
|
|
172
160
|
`);
|
|
173
161
|
});
|
|
174
162
|
|
|
@@ -182,17 +170,15 @@ test("array minimum", () => {
|
|
|
182
170
|
expect(result.success).toBe(false);
|
|
183
171
|
expect(result.error!.issues[0].code).toEqual("too_small");
|
|
184
172
|
expect(result.error).toMatchInlineSnapshot(`
|
|
185
|
-
ZodError
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
],
|
|
195
|
-
}
|
|
173
|
+
[ZodError: [
|
|
174
|
+
{
|
|
175
|
+
"origin": "array",
|
|
176
|
+
"code": "too_small",
|
|
177
|
+
"minimum": 3,
|
|
178
|
+
"path": [],
|
|
179
|
+
"message": "Too small: expected array to have >3 items"
|
|
180
|
+
}
|
|
181
|
+
]]
|
|
196
182
|
`);
|
|
197
183
|
});
|
|
198
184
|
|
|
@@ -201,18 +187,16 @@ test("literal bigint default error message", () => {
|
|
|
201
187
|
expect(result.success).toBe(false);
|
|
202
188
|
expect(result.error!.issues.length).toEqual(1);
|
|
203
189
|
expect(result.error).toMatchInlineSnapshot(`
|
|
204
|
-
ZodError
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
"
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
],
|
|
215
|
-
}
|
|
190
|
+
[ZodError: [
|
|
191
|
+
{
|
|
192
|
+
"code": "invalid_value",
|
|
193
|
+
"values": [
|
|
194
|
+
"12"
|
|
195
|
+
],
|
|
196
|
+
"path": [],
|
|
197
|
+
"message": "Invalid input: expected 12n"
|
|
198
|
+
}
|
|
199
|
+
]]
|
|
216
200
|
`);
|
|
217
201
|
});
|
|
218
202
|
|
|
@@ -230,18 +214,16 @@ test("custom path in custom error map", () => {
|
|
|
230
214
|
const result = schema.safeParse({ items: ["first"] }, { error: errorMap });
|
|
231
215
|
expect(result.success).toBe(false);
|
|
232
216
|
expect(result.error).toMatchInlineSnapshot(`
|
|
233
|
-
ZodError
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
],
|
|
244
|
-
}
|
|
217
|
+
[ZodError: [
|
|
218
|
+
{
|
|
219
|
+
"code": "custom",
|
|
220
|
+
"path": [
|
|
221
|
+
"items",
|
|
222
|
+
"items-too-few"
|
|
223
|
+
],
|
|
224
|
+
"message": "doesnt matter"
|
|
225
|
+
}
|
|
226
|
+
]]
|
|
245
227
|
`);
|
|
246
228
|
});
|
|
247
229
|
|
|
@@ -542,17 +524,15 @@ test("z.config customError ", () => {
|
|
|
542
524
|
const result = stringWithCustomError.min(10).safeParse("tooshort");
|
|
543
525
|
expect(result.success).toBe(false);
|
|
544
526
|
expect(result.error).toMatchInlineSnapshot(`
|
|
545
|
-
ZodError
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
],
|
|
555
|
-
}
|
|
527
|
+
[ZodError: [
|
|
528
|
+
{
|
|
529
|
+
"origin": "string",
|
|
530
|
+
"code": "too_small",
|
|
531
|
+
"minimum": 10,
|
|
532
|
+
"path": [],
|
|
533
|
+
"message": "override"
|
|
534
|
+
}
|
|
535
|
+
]]
|
|
556
536
|
`);
|
|
557
537
|
expect(result.error!.issues[0].message).toEqual("override");
|
|
558
538
|
z.config({ customError: undefined });
|
|
@@ -628,26 +608,24 @@ test("dont short circuit on continuable errors", () => {
|
|
|
628
608
|
const result = user.safeParse({ password: "asdf", confirm: "qwer" });
|
|
629
609
|
expect(result.success).toBe(false);
|
|
630
610
|
expect(result.error).toMatchInlineSnapshot(`
|
|
631
|
-
ZodError
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
"
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
"
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
],
|
|
650
|
-
}
|
|
611
|
+
[ZodError: [
|
|
612
|
+
{
|
|
613
|
+
"origin": "string",
|
|
614
|
+
"code": "too_small",
|
|
615
|
+
"minimum": 6,
|
|
616
|
+
"path": [
|
|
617
|
+
"password"
|
|
618
|
+
],
|
|
619
|
+
"message": "Too small: expected string to have >6 characters"
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"code": "custom",
|
|
623
|
+
"path": [
|
|
624
|
+
"confirm"
|
|
625
|
+
],
|
|
626
|
+
"message": "Passwords don't match"
|
|
627
|
+
}
|
|
628
|
+
]]
|
|
651
629
|
`);
|
|
652
630
|
// expect(result.error!.issues.length).toEqual(2);
|
|
653
631
|
});
|
|
@@ -689,7 +667,7 @@ test("error inheritance", () => {
|
|
|
689
667
|
expect(e1).toBeInstanceOf(z.core.$ZodError);
|
|
690
668
|
expect(e1).toBeInstanceOf(z.ZodError);
|
|
691
669
|
expect(e1).toBeInstanceOf(z.ZodRealError);
|
|
692
|
-
expect(e1).not.toBeInstanceOf(Error);
|
|
670
|
+
// expect(e1).not.toBeInstanceOf(Error);
|
|
693
671
|
|
|
694
672
|
try {
|
|
695
673
|
z.string().parse(123);
|
|
@@ -697,7 +675,7 @@ test("error inheritance", () => {
|
|
|
697
675
|
expect(e1).toBeInstanceOf(z.core.$ZodError);
|
|
698
676
|
expect(e2).toBeInstanceOf(z.ZodError);
|
|
699
677
|
expect(e2).toBeInstanceOf(z.ZodRealError);
|
|
700
|
-
expect(e2).toBeInstanceOf(Error);
|
|
678
|
+
// expect(e2).toBeInstanceOf(Error);
|
|
701
679
|
}
|
|
702
680
|
});
|
|
703
681
|
|
|
@@ -706,6 +684,15 @@ test("error serialization", () => {
|
|
|
706
684
|
z.string().parse(123);
|
|
707
685
|
} catch (e) {
|
|
708
686
|
console.dir(e, { depth: null });
|
|
709
|
-
expect(e).toMatchInlineSnapshot(`
|
|
687
|
+
expect(e).toMatchInlineSnapshot(`
|
|
688
|
+
[ZodError: [
|
|
689
|
+
{
|
|
690
|
+
"expected": "string",
|
|
691
|
+
"code": "invalid_type",
|
|
692
|
+
"path": [],
|
|
693
|
+
"message": "Invalid input: expected string, received number"
|
|
694
|
+
}
|
|
695
|
+
]]
|
|
696
|
+
`);
|
|
710
697
|
}
|
|
711
698
|
});
|
|
@@ -60,18 +60,16 @@ test("literal default error message", () => {
|
|
|
60
60
|
expect(result.success).toEqual(false);
|
|
61
61
|
expect(result.error!.issues.length).toEqual(1);
|
|
62
62
|
expect(result.error).toMatchInlineSnapshot(`
|
|
63
|
-
ZodError
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
],
|
|
74
|
-
}
|
|
63
|
+
[ZodError: [
|
|
64
|
+
{
|
|
65
|
+
"code": "invalid_value",
|
|
66
|
+
"values": [
|
|
67
|
+
"Tuna"
|
|
68
|
+
],
|
|
69
|
+
"path": [],
|
|
70
|
+
"message": "Invalid input: expected \\"Tuna\\""
|
|
71
|
+
}
|
|
72
|
+
]]
|
|
75
73
|
`);
|
|
76
74
|
});
|
|
77
75
|
|
|
@@ -32,24 +32,22 @@ test("valid parse async", async () => {
|
|
|
32
32
|
const result = await asyncMap.safeParseAsync(new Map([["first", "foo"]]));
|
|
33
33
|
expect(result.success).toEqual(false);
|
|
34
34
|
expect(result.error).toMatchInlineSnapshot(`
|
|
35
|
-
ZodError
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
],
|
|
52
|
-
}
|
|
35
|
+
[ZodError: [
|
|
36
|
+
{
|
|
37
|
+
"code": "custom",
|
|
38
|
+
"path": [
|
|
39
|
+
"first"
|
|
40
|
+
],
|
|
41
|
+
"message": "bad key"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"code": "custom",
|
|
45
|
+
"path": [
|
|
46
|
+
"first"
|
|
47
|
+
],
|
|
48
|
+
"message": "bad value"
|
|
49
|
+
}
|
|
50
|
+
]]
|
|
53
51
|
`);
|
|
54
52
|
});
|
|
55
53
|
|
|
@@ -68,26 +66,24 @@ test("throws when the given map has invalid key and invalid input", () => {
|
|
|
68
66
|
if (result.success === false) {
|
|
69
67
|
expect(result.error.issues.length).toEqual(2);
|
|
70
68
|
expect(result.error).toMatchInlineSnapshot(`
|
|
71
|
-
ZodError
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
],
|
|
90
|
-
}
|
|
69
|
+
[ZodError: [
|
|
70
|
+
{
|
|
71
|
+
"expected": "string",
|
|
72
|
+
"code": "invalid_type",
|
|
73
|
+
"path": [
|
|
74
|
+
42
|
|
75
|
+
],
|
|
76
|
+
"message": "Invalid input: expected string, received number"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"expected": "string",
|
|
80
|
+
"code": "invalid_type",
|
|
81
|
+
"path": [
|
|
82
|
+
42
|
|
83
|
+
],
|
|
84
|
+
"message": "Invalid input: expected string, received symbol"
|
|
85
|
+
}
|
|
86
|
+
]]
|
|
91
87
|
`);
|
|
92
88
|
}
|
|
93
89
|
});
|
|
@@ -146,24 +142,22 @@ test("dirty", async () => {
|
|
|
146
142
|
if (!result.success) {
|
|
147
143
|
expect(result.error.issues.length).toEqual(2);
|
|
148
144
|
expect(result.error).toMatchInlineSnapshot(`
|
|
149
|
-
ZodError
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
"
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
"
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
],
|
|
166
|
-
}
|
|
145
|
+
[ZodError: [
|
|
146
|
+
{
|
|
147
|
+
"code": "custom",
|
|
148
|
+
"path": [
|
|
149
|
+
"first"
|
|
150
|
+
],
|
|
151
|
+
"message": "Keys must be uppercase"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"code": "custom",
|
|
155
|
+
"path": [
|
|
156
|
+
"second"
|
|
157
|
+
],
|
|
158
|
+
"message": "Keys must be uppercase"
|
|
159
|
+
}
|
|
160
|
+
]]
|
|
167
161
|
`);
|
|
168
162
|
}
|
|
169
163
|
});
|
|
@@ -188,17 +182,15 @@ test("map with object keys", () => {
|
|
|
188
182
|
const badResult = map.safeParse(badData);
|
|
189
183
|
expect(badResult.success).toEqual(false);
|
|
190
184
|
expect(badResult.error).toMatchInlineSnapshot(`
|
|
191
|
-
ZodError
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
"
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
],
|
|
202
|
-
}
|
|
185
|
+
[ZodError: [
|
|
186
|
+
{
|
|
187
|
+
"expected": "object",
|
|
188
|
+
"code": "invalid_type",
|
|
189
|
+
"path": [
|
|
190
|
+
"bad"
|
|
191
|
+
],
|
|
192
|
+
"message": "Invalid input: expected object, received string"
|
|
193
|
+
}
|
|
194
|
+
]]
|
|
203
195
|
`);
|
|
204
196
|
});
|
|
@@ -40,88 +40,84 @@ test("nested refinements", () => {
|
|
|
40
40
|
};
|
|
41
41
|
expect(zodSchema.safeParse(DATA)).toMatchInlineSnapshot(`
|
|
42
42
|
{
|
|
43
|
-
"error": ZodError
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"nested",
|
|
52
|
-
"confirm",
|
|
53
|
-
],
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"code": "custom",
|
|
57
|
-
"message": "Confirm length should be > 2",
|
|
58
|
-
"path": [
|
|
59
|
-
"nested",
|
|
60
|
-
"confirm",
|
|
61
|
-
],
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"code": "custom",
|
|
65
|
-
"message": "Value must be "bar"",
|
|
66
|
-
"path": [
|
|
67
|
-
"nested",
|
|
68
|
-
"confirm",
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"code": "custom",
|
|
73
|
-
"message": "Password and confirm must match",
|
|
74
|
-
"path": [
|
|
75
|
-
"nested",
|
|
76
|
-
"confirm",
|
|
77
|
-
],
|
|
78
|
-
},
|
|
43
|
+
"error": [ZodError: [
|
|
44
|
+
{
|
|
45
|
+
"origin": "string",
|
|
46
|
+
"code": "too_small",
|
|
47
|
+
"minimum": 1,
|
|
48
|
+
"path": [
|
|
49
|
+
"nested",
|
|
50
|
+
"confirm"
|
|
79
51
|
],
|
|
52
|
+
"message": "Too small: expected string to have >1 characters"
|
|
80
53
|
},
|
|
54
|
+
{
|
|
55
|
+
"code": "custom",
|
|
56
|
+
"path": [
|
|
57
|
+
"nested",
|
|
58
|
+
"confirm"
|
|
59
|
+
],
|
|
60
|
+
"message": "Confirm length should be > 2"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"code": "custom",
|
|
64
|
+
"path": [
|
|
65
|
+
"nested",
|
|
66
|
+
"confirm"
|
|
67
|
+
],
|
|
68
|
+
"message": "Value must be \\"bar\\""
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"code": "custom",
|
|
72
|
+
"path": [
|
|
73
|
+
"nested",
|
|
74
|
+
"confirm"
|
|
75
|
+
],
|
|
76
|
+
"message": "Password and confirm must match"
|
|
77
|
+
}
|
|
78
|
+
]],
|
|
81
79
|
"success": false,
|
|
82
80
|
}
|
|
83
81
|
`);
|
|
84
82
|
|
|
85
83
|
expect(zodSchema.safeParse(DATA, { jitless: true })).toMatchInlineSnapshot(`
|
|
86
84
|
{
|
|
87
|
-
"error": ZodError
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
"nested",
|
|
96
|
-
"confirm",
|
|
97
|
-
],
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"code": "custom",
|
|
101
|
-
"message": "Confirm length should be > 2",
|
|
102
|
-
"path": [
|
|
103
|
-
"nested",
|
|
104
|
-
"confirm",
|
|
105
|
-
],
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"code": "custom",
|
|
109
|
-
"message": "Value must be "bar"",
|
|
110
|
-
"path": [
|
|
111
|
-
"nested",
|
|
112
|
-
"confirm",
|
|
113
|
-
],
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"code": "custom",
|
|
117
|
-
"message": "Password and confirm must match",
|
|
118
|
-
"path": [
|
|
119
|
-
"nested",
|
|
120
|
-
"confirm",
|
|
121
|
-
],
|
|
122
|
-
},
|
|
85
|
+
"error": [ZodError: [
|
|
86
|
+
{
|
|
87
|
+
"origin": "string",
|
|
88
|
+
"code": "too_small",
|
|
89
|
+
"minimum": 1,
|
|
90
|
+
"path": [
|
|
91
|
+
"nested",
|
|
92
|
+
"confirm"
|
|
123
93
|
],
|
|
94
|
+
"message": "Too small: expected string to have >1 characters"
|
|
124
95
|
},
|
|
96
|
+
{
|
|
97
|
+
"code": "custom",
|
|
98
|
+
"path": [
|
|
99
|
+
"nested",
|
|
100
|
+
"confirm"
|
|
101
|
+
],
|
|
102
|
+
"message": "Confirm length should be > 2"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"code": "custom",
|
|
106
|
+
"path": [
|
|
107
|
+
"nested",
|
|
108
|
+
"confirm"
|
|
109
|
+
],
|
|
110
|
+
"message": "Value must be \\"bar\\""
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"code": "custom",
|
|
114
|
+
"path": [
|
|
115
|
+
"nested",
|
|
116
|
+
"confirm"
|
|
117
|
+
],
|
|
118
|
+
"message": "Password and confirm must match"
|
|
119
|
+
}
|
|
120
|
+
]],
|
|
125
121
|
"success": false,
|
|
126
122
|
}
|
|
127
123
|
`);
|