Generated-output differences

quicktype output changed between the PR base and tested PR merge revisions.
← Back to the pull request
67test cases
67files differ
67modified
0new
0deleted
267changed lines
+140 −127insertions / deletions
Base aab3dc830b86eac690342c6ac818c7d0d7c8951f · PR merge c1f49dd6dbae3acd47580d3f76a5283a403b1b93 · Head d328bccd7f4a02950204d328ad7be721523000c1 · raw patch
Test case

test/inputs/json/misc/016af.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/033b1.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/0a358.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -7,10 +7,10 @@ export type Facets = z.infer<typeof FacetsSchema>;
77
88 export const ResultSchema = z.object({
99 "code": z.string(),
10- "created_at": z.string().pipe(z.coerce.date()),
10+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
1111 "id": z.number().int(),
1212 "name": z.string(),
13- "updated_at": z.string().pipe(z.coerce.date()),
13+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
1414 "uri": z.string(),
1515 });
1616 export type Result = z.infer<typeof ResultSchema>;
Test case

test/inputs/json/misc/0a91a.json

1 generated file · +8 −8
Mtypescript-zoddefault / TopLevel.ts+8 −8
@@ -80,7 +80,7 @@ export const BaseRepoSchema = z.object({
8080 "compare_url": z.string(),
8181 "contents_url": z.string(),
8282 "contributors_url": z.string(),
83- "created_at": z.string().pipe(z.coerce.date()),
83+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
8484 "default_branch": z.string(),
8585 "deployments_url": z.string(),
8686 "description": z.null(),
@@ -121,7 +121,7 @@ export const BaseRepoSchema = z.object({
121121 "owner": MergedBySchema,
122122 "private": z.boolean(),
123123 "pulls_url": z.string(),
124- "pushed_at": z.string().pipe(z.coerce.date()),
124+ "pushed_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
125125 "releases_url": z.string(),
126126 "size": z.number().int(),
127127 "ssh_url": z.string(),
@@ -134,7 +134,7 @@ export const BaseRepoSchema = z.object({
134134 "tags_url": z.string(),
135135 "teams_url": z.string(),
136136 "trees_url": z.string(),
137- "updated_at": z.string().pipe(z.coerce.date()),
137+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
138138 "url": z.string(),
139139 "watchers": z.number().int(),
140140 "watchers_count": z.number().int(),
@@ -169,12 +169,12 @@ export const PullRequestSchema = z.object({
169169 "base": BaseSchema,
170170 "body": z.string(),
171171 "changed_files": z.number().int(),
172- "closed_at": z.string().pipe(z.coerce.date()),
172+ "closed_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
173173 "comments": z.number().int(),
174174 "comments_url": z.string(),
175175 "commits": z.number().int(),
176176 "commits_url": z.string(),
177- "created_at": z.string().pipe(z.coerce.date()),
177+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
178178 "deletions": z.number().int(),
179179 "diff_url": z.string(),
180180 "head": BaseSchema,
@@ -188,7 +188,7 @@ export const PullRequestSchema = z.object({
188188 "mergeable": z.null(),
189189 "mergeable_state": z.string(),
190190 "merged": z.boolean(),
191- "merged_at": z.string().pipe(z.coerce.date()),
191+ "merged_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
192192 "merged_by": MergedBySchema,
193193 "milestone": z.null(),
194194 "number": z.number().int(),
@@ -201,7 +201,7 @@ export const PullRequestSchema = z.object({
201201 "state": z.string(),
202202 "statuses_url": z.string(),
203203 "title": z.string(),
204- "updated_at": z.string().pipe(z.coerce.date()),
204+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
205205 "url": z.string(),
206206 "user": MergedBySchema,
207207 });
@@ -227,7 +227,7 @@ export type Payload = z.infer<typeof PayloadSchema>;
227227
228228 export const TopLevelElementSchema = z.object({
229229 "actor": ActorSchema,
230- "created_at": z.string().pipe(z.coerce.date()),
230+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
231231 "id": z.string(),
232232 "org": ActorSchema.optional(),
233233 "payload": PayloadSchema,
Test case

test/inputs/json/misc/0e0c2.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -80,7 +80,7 @@ export const ResultSchema = z.object({
8080 "id": z.number().int(),
8181 "images": z.array(ImageSchema),
8282 "language": ResultLanguageSchema,
83- "release_date": z.string(),
83+ "release_date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
8484 "stars": z.number().int(),
8585 "tags": z.union([z.null(), z.array(z.any())]),
8686 "title": z.string(),
Test case

test/inputs/json/misc/167d6.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/16bc5.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
106106
107107 export const QuerySchema = z.object({
108108 "count": z.number().int(),
109- "created": z.string().pipe(z.coerce.date()),
109+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
110110 "lang": z.string(),
111111 "results": ResultsSchema,
112112 });
Test case

test/inputs/json/misc/1b28c.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/1b409.json

1 generated file · +3 −3
Mtypescript-zoddefault / TopLevel.ts+3 −3
@@ -70,7 +70,7 @@ export type Extra = z.infer<typeof ExtraSchema>;
7070
7171 export const PersonSchema = z.object({
7272 "bioguideid": z.string(),
73- "birthday": z.string(),
73+ "birthday": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
7474 "cspanid": z.number().int(),
7575 "firstname": z.string(),
7676 "gender": GenderSchema,
@@ -96,7 +96,7 @@ export const ObjectElementSchema = z.object({
9696 "current": z.boolean(),
9797 "description": z.string(),
9898 "district": z.number().int(),
99- "enddate": z.string(),
99+ "enddate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
100100 "extra": ExtraSchema,
101101 "id": z.number().int(),
102102 "leadership_title": z.union([z.null(), z.string()]),
@@ -107,7 +107,7 @@ export const ObjectElementSchema = z.object({
107107 "role_type_label": RoleTypeLabelSchema,
108108 "senator_class": z.null(),
109109 "senator_rank": z.null(),
110- "startdate": z.string(),
110+ "startdate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
111111 "state": z.string(),
112112 "title": TitleSchema,
113113 "title_long": RoleTypeLabelSchema,
Test case

test/inputs/json/misc/262f0.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -113,7 +113,7 @@ export type Results = z.infer<typeof ResultsSchema>;
113113
114114 export const QuerySchema = z.object({
115115 "count": z.number().int(),
116- "created": z.string().pipe(z.coerce.date()),
116+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
117117 "lang": z.string(),
118118 "results": ResultsSchema,
119119 });
Test case

test/inputs/json/misc/2d4e2.json

1 generated file · +3 −3
Mtypescript-zoddefault / TopLevel.ts+3 −3
@@ -96,7 +96,7 @@ export type Extra = z.infer<typeof ExtraSchema>;
9696
9797 export const PersonSchema = z.object({
9898 "bioguideid": z.string(),
99- "birthday": z.string(),
99+ "birthday": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
100100 "cspanid": z.number().int(),
101101 "firstname": z.string(),
102102 "gender": GenderSchema,
@@ -122,7 +122,7 @@ export const ObjectElementSchema = z.object({
122122 "current": z.boolean(),
123123 "description": z.string(),
124124 "district": z.null(),
125- "enddate": z.string(),
125+ "enddate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
126126 "extra": ExtraSchema,
127127 "id": z.number().int(),
128128 "leadership_title": z.union([z.null(), z.string()]),
@@ -135,7 +135,7 @@ export const ObjectElementSchema = z.object({
135135 "senator_class_label": SenatorClassLabelSchema,
136136 "senator_rank": SenatorRankSchema,
137137 "senator_rank_label": SenatorRankLabelSchema,
138- "startdate": z.string(),
138+ "startdate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
139139 "state": z.string(),
140140 "title": TitleSchema,
141141 "title_long": RoleTypeLabelSchema,
Test case

test/inputs/json/misc/31189.json

1 generated file · +6 −1
Mtypescript-zoddefault / TopLevel.ts+6 −1
@@ -1,6 +1,11 @@
11 import * as z from "zod";
22
33
4+export const EffectiveFromEnumSchema = z.enum([
5+ "0000-01-01",
6+]);
7+export type EffectiveFromEnum = z.infer<typeof EffectiveFromEnumSchema>;
8+
49 export const RatesSchema = z.object({
510 "parking": z.number().optional(),
611 "reduced": z.number().optional(),
@@ -12,7 +17,7 @@ export const RatesSchema = z.object({
1217 export type Rates = z.infer<typeof RatesSchema>;
1318
1419 export const PeriodSchema = z.object({
15- "effective_from": z.string(),
20+ "effective_from": z.union([z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value), EffectiveFromEnumSchema]),
1621 "rates": RatesSchema,
1722 });
1823 export type Period = z.infer<typeof PeriodSchema>;
Test case

test/inputs/json/misc/32d5c.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TopLevelElementSchema = z.object({
5- "BirthDate": z.union([z.null(), z.string().pipe(z.coerce.date())]),
5+ "BirthDate": z.union([z.null(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date())]),
66 "BirthDateIsProtected": z.boolean(),
77 "GenderTypeID": z.number().int(),
88 "Notes": z.string(),
Test case

test/inputs/json/misc/337ed.json

1 generated file · +6 −6
Mtypescript-zoddefault / TopLevel.ts+6 −6
@@ -28,12 +28,12 @@ export type Facets = z.infer<typeof FacetsSchema>;
2828
2929 export const CustomIncomeSchema = z.object({
3030 "amount": z.number().int(),
31- "created_at": z.string().pipe(z.coerce.date()),
31+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
3232 "id": z.string(),
3333 "name": z.string(),
3434 "status": StatusSchema,
3535 "type": CustomIncomeTypeSchema,
36- "updated_at": z.string().pipe(z.coerce.date()),
36+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
3737 "uri": z.string(),
3838 });
3939 export type CustomIncome = z.infer<typeof CustomIncomeSchema>;
@@ -42,11 +42,11 @@ export const ResultSchema = z.object({
4242 "cost_absolute": z.union([z.null(), z.number().int()]),
4343 "cost_max": z.union([z.null(), z.number().int()]),
4444 "cost_min": z.union([z.null(), z.number().int()]),
45- "created_at": z.string().pipe(z.coerce.date()),
45+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
4646 "customIncomes": z.array(CustomIncomeSchema),
4747 "direct_rep_costs_max": z.null(),
4848 "direct_rep_costs_min": z.null(),
49- "end_date": z.string().pipe(z.coerce.date()),
49+ "end_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
5050 "eur_sources_grants": z.number().int(),
5151 "eur_sources_grants_src": z.union([z.null(), z.string()]),
5252 "eur_sources_procurement": z.number().int(),
@@ -62,14 +62,14 @@ export const ResultSchema = z.object({
6262 "public_financing_national": z.union([z.null(), z.number().int()]),
6363 "public_financing_total": z.union([z.null(), z.number().int()]),
6464 "representative": z.string(),
65- "start_date": z.string().pipe(z.coerce.date()),
65+ "start_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
6666 "status": StatusSchema,
6767 "total_budget": z.union([z.null(), z.number().int()]),
6868 "turnover_absolute": z.union([z.null(), z.number().int()]),
6969 "turnover_max": z.union([z.null(), z.number().int()]),
7070 "turnover_min": z.union([z.null(), z.number().int()]),
7171 "type": ResultTypeSchema,
72- "updated_at": z.string().pipe(z.coerce.date()),
72+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
7373 "uri": z.string(),
7474 });
7575 export type Result = z.infer<typeof ResultSchema>;
Test case

test/inputs/json/misc/33d2e.json

1 generated file · +10 −2
Mtypescript-zoddefault / TopLevel.ts+10 −2
@@ -1,6 +1,14 @@
11 import * as z from "zod";
22
33
4+export const BornEnumSchema = z.enum([
5+ "0000-00-00",
6+ "1898-00-00",
7+ "1943-00-00",
8+]);
9+export type BornEnum = z.infer<typeof BornEnumSchema>;
10+
11+
412 export const GenderSchema = z.enum([
513 "male",
614 "female",
@@ -37,11 +45,11 @@ export const PrizeSchema = z.object({
3745 export type Prize = z.infer<typeof PrizeSchema>;
3846
3947 export const LaureateSchema = z.object({
40- "born": z.string(),
48+ "born": z.union([z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value), BornEnumSchema]),
4149 "bornCity": z.string().optional(),
4250 "bornCountry": z.string().optional(),
4351 "bornCountryCode": z.string().optional(),
44- "died": z.string(),
52+ "died": z.union([z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value), BornEnumSchema]),
4553 "diedCity": z.string().optional(),
4654 "diedCountry": z.string().optional(),
4755 "diedCountryCode": z.string().optional(),
Test case

test/inputs/json/misc/3659d.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/3f1ce.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -111,7 +111,7 @@ export type Results = z.infer<typeof ResultsSchema>;
111111
112112 export const QuerySchema = z.object({
113113 "count": z.number().int(),
114- "created": z.string().pipe(z.coerce.date()),
114+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
115115 "lang": z.string(),
116116 "results": ResultsSchema,
117117 });
Test case

test/inputs/json/misc/43eaf.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/4961a.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/4a0d7.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/4c547.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
106106
107107 export const QuerySchema = z.object({
108108 "count": z.number().int(),
109- "created": z.string().pipe(z.coerce.date()),
109+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
110110 "lang": z.string(),
111111 "results": ResultsSchema,
112112 });
Test case

test/inputs/json/misc/4e336.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/54d32.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -12,12 +12,12 @@ export const FacetsSchema = z.object({
1212 export type Facets = z.infer<typeof FacetsSchema>;
1313
1414 export const ResultSchema = z.object({
15- "created_at": z.string().pipe(z.coerce.date()),
15+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
1616 "id": z.string(),
1717 "person_id": z.string(),
1818 "representative_id": z.string(),
1919 "status": StatusSchema,
20- "updated_at": z.string().pipe(z.coerce.date()),
20+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
2121 });
2222 export type Result = z.infer<typeof ResultSchema>;
Test case

test/inputs/json/misc/5eae5.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TopLevelElementSchema = z.object({
5- "Date": z.string().pipe(z.coerce.date()),
5+ "Date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
66 "ID": z.number().int(),
77 "Sponsor": z.string(),
88 "Title": z.string(),
Test case

test/inputs/json/misc/5f3a1.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/6260a.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/65dec.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -61,7 +61,7 @@ export const LegalityElementSchema = z.object({
6161 export type LegalityElement = z.infer<typeof LegalityElementSchema>;
6262
6363 export const RulingSchema = z.object({
64- "date": z.string(),
64+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
6565 "text": z.string(),
6666 });
6767 export type Ruling = z.infer<typeof RulingSchema>;
@@ -108,7 +108,7 @@ export const TopLevelSchema = z.object({
108108 "mkm_id": z.number().int(),
109109 "mkm_name": z.string(),
110110 "name": z.string(),
111- "releaseDate": z.string(),
111+ "releaseDate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
112112 "type": z.string(),
113113 });
114114 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/6dec6.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -113,7 +113,7 @@ export type Results = z.infer<typeof ResultsSchema>;
113113
114114 export const QuerySchema = z.object({
115115 "count": z.number().int(),
116- "created": z.string().pipe(z.coerce.date()),
116+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
117117 "lang": z.string(),
118118 "results": ResultsSchema,
119119 });
Test case

test/inputs/json/misc/70c77.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/734ad.json

1 generated file · +4 −4
Mtypescript-zoddefault / TopLevel.ts+4 −4
@@ -31,7 +31,7 @@ export const ResultSchema = z.object({
3131 "be_office_town": z.string().optional(),
3232 "code_of_conduct": z.string(),
3333 "contact_country": z.number().int(),
34- "created_at": z.string().pipe(z.coerce.date()),
34+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
3535 "entity": z.string(),
3636 "goals": z.string(),
3737 "head": z.string(),
@@ -46,7 +46,7 @@ export const ResultSchema = z.object({
4646 "id": z.string(),
4747 "identification_code": z.string(),
4848 "info_members": z.string(),
49- "last_update_date": z.string().pipe(z.coerce.date()),
49+ "last_update_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
5050 "legal": z.string(),
5151 "legal_status": z.string(),
5252 "main_category": z.number().int(),
@@ -62,12 +62,12 @@ export const ResultSchema = z.object({
6262 "networking": z.union([z.null(), z.string()]),
6363 "number_of_natural_persons": z.union([z.null(), z.number().int()]),
6464 "other_code_of_conduct": z.union([z.null(), z.string()]),
65- "registration_date": z.string().pipe(z.coerce.date()),
65+ "registration_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
6666 "status": StatusSchema,
6767 "structure_members": z.string(),
6868 "sub_category": z.number().int(),
6969 "sub_category_title": z.string(),
70- "updated_at": z.string().pipe(z.coerce.date()),
70+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
7171 "uri": z.string(),
7272 "web_site_url": z.union([z.null(), z.string()]),
7373 });
Test case

test/inputs/json/misc/75912.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/77392.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -24,7 +24,7 @@ export type Pha = z.infer<typeof PhaSchema>;
2424
2525 export const TopLevelElementSchema = z.object({
2626 "designation": z.string(),
27- "discovery_date": z.string().pipe(z.coerce.date()),
27+ "discovery_date": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
2828 "h_mag": z.string().optional(),
2929 "i_deg": z.string(),
3030 "moid_au": z.string(),
Test case

test/inputs/json/misc/7dfa6.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/7f568.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -25,7 +25,7 @@ export const TopLevelElementSchema = z.object({
2525 "comments": z.number().int(),
2626 "comments_url": z.string(),
2727 "commits_url": z.string(),
28- "created_at": z.string().pipe(z.coerce.date()),
28+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
2929 "description": z.union([z.null(), z.string()]),
3030 "files": z.record(z.string(), FileSchema),
3131 "forks_url": z.string(),
@@ -35,7 +35,7 @@ export const TopLevelElementSchema = z.object({
3535 "id": z.string(),
3636 "public": z.boolean(),
3737 "truncated": z.boolean(),
38- "updated_at": z.string().pipe(z.coerce.date()),
38+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
3939 "url": z.string(),
4040 "user": z.null(),
4141 });
Test case

test/inputs/json/misc/80aff.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -6,12 +6,12 @@ export const FacetsSchema = z.object({
66 export type Facets = z.infer<typeof FacetsSchema>;
77
88 export const ResultSchema = z.object({
9- "created_at": z.string().pipe(z.coerce.date()),
9+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
1010 "id": z.number().int(),
1111 "items": z.number().int(),
1212 "name": z.string(),
1313 "parent": z.union([z.null(), z.number().int()]),
14- "updated_at": z.string().pipe(z.coerce.date()),
14+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
1515 "uri": z.string(),
1616 });
1717 export type Result = z.infer<typeof ResultSchema>;
Test case

test/inputs/json/misc/88130.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
106106
107107 export const QuerySchema = z.object({
108108 "count": z.number().int(),
109- "created": z.string().pipe(z.coerce.date()),
109+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
110110 "lang": z.string(),
111111 "results": ResultsSchema,
112112 });
Test case

test/inputs/json/misc/8a62c.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/9617f.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/9929c.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
106106
107107 export const QuerySchema = z.object({
108108 "count": z.number().int(),
109- "created": z.string().pipe(z.coerce.date()),
109+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
110110 "lang": z.string(),
111111 "results": ResultsSchema,
112112 });
Test case

test/inputs/json/misc/9ac3b.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -19,7 +19,7 @@ export const FacetsSchema = z.object({
1919 export type Facets = z.infer<typeof FacetsSchema>;
2020
2121 export const ResultSchema = z.object({
22- "created_at": z.string().pipe(z.coerce.date()),
22+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
2323 "entity": z.string(),
2424 "first_name": z.string(),
2525 "id": z.string(),
@@ -28,7 +28,7 @@ export const ResultSchema = z.object({
2828 "position": z.union([z.null(), z.string()]),
2929 "status": StatusSchema,
3030 "title": z.union([z.null(), TitleSchema]),
31- "updated_at": z.string().pipe(z.coerce.date()),
31+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
3232 "uri": z.string(),
3333 });
3434 export type Result = z.infer<typeof ResultSchema>;
Test case

test/inputs/json/misc/a0496.json

1 generated file · +4 −4
Mtypescript-zoddefault / TopLevel.ts+4 −4
@@ -8,20 +8,20 @@ export type Errors = z.infer<typeof ErrorsSchema>;
88 export const TopLevelSchema = z.object({
99 "code": z.string(),
1010 "column_names": z.array(z.string()),
11- "data": z.array(z.array(z.union([z.null(), z.number(), z.string()]))),
11+ "data": z.array(z.array(z.union([z.null(), z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value), z.number()]))),
1212 "description": z.string(),
1313 "display_url": z.string(),
1414 "errors": ErrorsSchema,
1515 "frequency": z.string(),
16- "from_date": z.string(),
16+ "from_date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
1717 "id": z.number().int(),
1818 "name": z.string(),
1919 "premium": z.boolean(),
2020 "source_code": z.string(),
2121 "source_name": z.string(),
22- "to_date": z.string(),
22+ "to_date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
2323 "type": z.string(),
24- "updated_at": z.string().pipe(z.coerce.date()),
24+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
2525 "urlize_name": z.string(),
2626 });
2727 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/a1eca.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
106106
107107 export const QuerySchema = z.object({
108108 "count": z.number().int(),
109- "created": z.string().pipe(z.coerce.date()),
109+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
110110 "lang": z.string(),
111111 "results": ResultsSchema,
112112 });
Test case

test/inputs/json/misc/a9691.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/abb4b.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/ac944.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/b4865.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -37,7 +37,7 @@ export const TopLevelElementSchema = z.object({
3737 "recclass": z.string(),
3838 "reclat": z.string().optional(),
3939 "reclong": z.string().optional(),
40- "year": z.string().pipe(z.coerce.date()).optional(),
40+ "year": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()).optional(),
4141 });
4242 export type TopLevelElement = z.infer<typeof TopLevelElementSchema>;
Test case

test/inputs/json/misc/b6f2c.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/bb1ec.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/cd463.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/cf0d8.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
106106
107107 export const QuerySchema = z.object({
108108 "count": z.number().int(),
109- "created": z.string().pipe(z.coerce.date()),
109+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
110110 "lang": z.string(),
111111 "results": ResultsSchema,
112112 });
Test case

test/inputs/json/misc/cfbce.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -3,7 +3,7 @@ import * as z from "zod";
33
44 export const TopLevelSchema = z.object({
55 "base": z.string(),
6- "date": z.string(),
6+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
77 "rates": z.record(z.string(), z.number()),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/d0908.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as z from "zod";
22
33
44 export const TotalPopulationSchema = z.object({
5- "date": z.string(),
5+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
66 "population": z.number().int(),
77 });
88 export type TotalPopulation = z.infer<typeof TotalPopulationSchema>;
Test case

test/inputs/json/misc/d23d5.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -7,10 +7,10 @@ export type Facets = z.infer<typeof FacetsSchema>;
77
88 export const ResultSchema = z.object({
99 "acronym": z.union([z.null(), z.string()]),
10- "created_at": z.string().pipe(z.coerce.date()),
10+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
1111 "id": z.string(),
1212 "name": z.string(),
13- "updated_at": z.string().pipe(z.coerce.date()),
13+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
1414 "uri": z.string(),
1515 });
1616 export type Result = z.infer<typeof ResultSchema>;
Test case

test/inputs/json/misc/dbfb3.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -112,7 +112,7 @@ export type Results = z.infer<typeof ResultsSchema>;
112112
113113 export const QuerySchema = z.object({
114114 "count": z.number().int(),
115- "created": z.string().pipe(z.coerce.date()),
115+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
116116 "lang": z.string(),
117117 "results": ResultsSchema,
118118 });
Test case

test/inputs/json/misc/dc44f.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -110,7 +110,7 @@ export const LegalityElementSchema = z.object({
110110 export type LegalityElement = z.infer<typeof LegalityElementSchema>;
111111
112112 export const RulingSchema = z.object({
113- "date": z.string(),
113+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
114114 "text": z.string(),
115115 });
116116 export type Ruling = z.infer<typeof RulingSchema>;
@@ -156,7 +156,7 @@ export const TopLevelSchema = z.object({
156156 "mkm_id": z.number().int(),
157157 "mkm_name": z.string(),
158158 "name": z.string(),
159- "releaseDate": z.string(),
159+ "releaseDate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
160160 "type": z.string(),
161161 });
162162 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/dd1ce.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -110,7 +110,7 @@ export const LegalityElementSchema = z.object({
110110 export type LegalityElement = z.infer<typeof LegalityElementSchema>;
111111
112112 export const RulingSchema = z.object({
113- "date": z.string(),
113+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
114114 "text": z.string(),
115115 });
116116 export type Ruling = z.infer<typeof RulingSchema>;
@@ -156,7 +156,7 @@ export const TopLevelSchema = z.object({
156156 "mkm_id": z.number().int(),
157157 "mkm_name": z.string(),
158158 "name": z.string(),
159- "releaseDate": z.string(),
159+ "releaseDate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
160160 "type": z.string(),
161161 });
162162 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/df957.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -106,7 +106,7 @@ export type Results = z.infer<typeof ResultsSchema>;
106106
107107 export const QuerySchema = z.object({
108108 "count": z.number().int(),
109- "created": z.string().pipe(z.coerce.date()),
109+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
110110 "lang": z.string(),
111111 "results": ResultsSchema,
112112 });
Test case

test/inputs/json/misc/e2915.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -111,7 +111,7 @@ export type Results = z.infer<typeof ResultsSchema>;
111111
112112 export const QuerySchema = z.object({
113113 "count": z.number().int(),
114- "created": z.string().pipe(z.coerce.date()),
114+ "created": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
115115 "lang": z.string(),
116116 "results": ResultsSchema,
117117 });
Test case

test/inputs/json/priority/bug2590.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -2,8 +2,8 @@ import * as z from "zod";
22
33
44 export const InvoiceSchema = z.object({
5- "createdAt": z.union([z.null(), z.string().pipe(z.coerce.date())]),
6- "dueDate": z.union([z.null(), z.string()]),
5+ "createdAt": z.union([z.null(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date())]),
6+ "dueDate": z.union([z.null(), z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)]),
77 "name": z.string(),
88 });
99 export type Invoice = z.infer<typeof InvoiceSchema>;
Test case

test/inputs/json/priority/bug2663.json

1 generated file · +2 −2
Mtypescript-zoddefault / TopLevel.ts+2 −2
@@ -2,8 +2,8 @@ import * as z from "zod";
22
33
44 export const TopLevelSchema = z.object({
5- "birthday": z.string(),
6- "lastSeen": z.string().pipe(z.coerce.date()),
5+ "birthday": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
6+ "lastSeen": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
77 "name": z.string(),
88 });
99 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/priority/keywords.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -348,7 +348,7 @@ export const DateParseHandlingSchema = z.object({
348348 export type DateParseHandling = z.infer<typeof DateParseHandlingSchema>;
349349
350350 export const DateTimeSchema = z.object({
351- "DateTime": z.string().pipe(z.coerce.date()),
351+ "DateTime": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
352352 });
353353 export type DateTime = z.infer<typeof DateTimeSchema>;
Test case

test/inputs/json/samples/github-events.json

1 generated file · +16 −16
Mtypescript-zoddefault / TopLevel.ts+16 −16
@@ -56,10 +56,10 @@ export type Label = z.infer<typeof LabelSchema>;
5656 export const MilestoneSchema = z.object({
5757 "closed_at": z.null(),
5858 "closed_issues": z.number().int(),
59- "created_at": z.string().pipe(z.coerce.date()),
59+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
6060 "creator": UserSchema,
6161 "description": z.string(),
62- "due_on": z.union([z.null(), z.string().pipe(z.coerce.date())]),
62+ "due_on": z.union([z.null(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date())]),
6363 "html_url": z.string(),
6464 "id": z.number().int(),
6565 "labels_url": z.string(),
@@ -67,7 +67,7 @@ export const MilestoneSchema = z.object({
6767 "open_issues": z.number().int(),
6868 "state": z.string(),
6969 "title": z.string(),
70- "updated_at": z.string().pipe(z.coerce.date()),
70+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
7171 "url": z.string(),
7272 });
7373 export type Milestone = z.infer<typeof MilestoneSchema>;
@@ -92,7 +92,7 @@ export const BaseRepoSchema = z.object({
9292 "compare_url": z.string(),
9393 "contents_url": z.string(),
9494 "contributors_url": z.string(),
95- "created_at": z.string().pipe(z.coerce.date()),
95+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
9696 "default_branch": z.string(),
9797 "deployments_url": z.string(),
9898 "description": z.string(),
@@ -133,7 +133,7 @@ export const BaseRepoSchema = z.object({
133133 "owner": UserSchema,
134134 "private": z.boolean(),
135135 "pulls_url": z.string(),
136- "pushed_at": z.string().pipe(z.coerce.date()),
136+ "pushed_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
137137 "releases_url": z.string(),
138138 "size": z.number().int(),
139139 "ssh_url": z.string(),
@@ -146,7 +146,7 @@ export const BaseRepoSchema = z.object({
146146 "tags_url": z.string(),
147147 "teams_url": z.string(),
148148 "trees_url": z.string(),
149- "updated_at": z.string().pipe(z.coerce.date()),
149+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
150150 "url": z.string(),
151151 "watchers": z.number().int(),
152152 "watchers_count": z.number().int(),
@@ -167,11 +167,11 @@ export type TopLevelRepo = z.infer<typeof TopLevelRepoSchema>;
167167
168168 export const CommentSchema = z.object({
169169 "body": z.string(),
170- "created_at": z.string().pipe(z.coerce.date()),
170+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
171171 "html_url": z.string(),
172172 "id": z.number().int(),
173173 "issue_url": z.string(),
174- "updated_at": z.string().pipe(z.coerce.date()),
174+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
175175 "url": z.string(),
176176 "user": UserSchema,
177177 });
@@ -190,10 +190,10 @@ export const IssueSchema = z.object({
190190 "assignee": z.null(),
191191 "assignees": z.array(z.any()),
192192 "body": z.string(),
193- "closed_at": z.union([z.null(), z.string().pipe(z.coerce.date())]),
193+ "closed_at": z.union([z.null(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date())]),
194194 "comments": z.number().int(),
195195 "comments_url": z.string(),
196- "created_at": z.string().pipe(z.coerce.date()),
196+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
197197 "events_url": z.string(),
198198 "html_url": z.string(),
199199 "id": z.number().int(),
@@ -206,7 +206,7 @@ export const IssueSchema = z.object({
206206 "repository_url": z.string(),
207207 "state": z.string(),
208208 "title": z.string(),
209- "updated_at": z.string().pipe(z.coerce.date()),
209+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
210210 "url": z.string(),
211211 "user": UserSchema,
212212 });
@@ -240,12 +240,12 @@ export const PayloadPullRequestSchema = z.object({
240240 "base": BaseSchema,
241241 "body": z.string(),
242242 "changed_files": z.number().int(),
243- "closed_at": z.string().pipe(z.coerce.date()),
243+ "closed_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
244244 "comments": z.number().int(),
245245 "comments_url": z.string(),
246246 "commits": z.number().int(),
247247 "commits_url": z.string(),
248- "created_at": z.string().pipe(z.coerce.date()),
248+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
249249 "deletions": z.number().int(),
250250 "diff_url": z.string(),
251251 "head": BaseSchema,
@@ -259,7 +259,7 @@ export const PayloadPullRequestSchema = z.object({
259259 "mergeable": z.null(),
260260 "mergeable_state": z.string(),
261261 "merged": z.boolean(),
262- "merged_at": z.string().pipe(z.coerce.date()),
262+ "merged_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
263263 "merged_by": UserSchema,
264264 "milestone": z.null(),
265265 "number": z.number().int(),
@@ -272,7 +272,7 @@ export const PayloadPullRequestSchema = z.object({
272272 "state": z.string(),
273273 "statuses_url": z.string(),
274274 "title": z.string(),
275- "updated_at": z.string().pipe(z.coerce.date()),
275+ "updated_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
276276 "url": z.string(),
277277 "user": UserSchema,
278278 });
@@ -300,7 +300,7 @@ export type Payload = z.infer<typeof PayloadSchema>;
300300
301301 export const TopLevelElementSchema = z.object({
302302 "actor": ActorSchema,
303- "created_at": z.string().pipe(z.coerce.date()),
303+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
304304 "id": z.string(),
305305 "org": ActorSchema.optional(),
306306 "payload": PayloadSchema,
Test case

test/inputs/json/samples/null-safe.json

1 generated file · +1 −1
Mtypescript-zoddefault / TopLevel.ts+1 −1
@@ -10,7 +10,7 @@ export type Address = z.infer<typeof AddressSchema>;
1010
1111 export const ItemSchema = z.object({
1212 "address": AddressSchema.optional(),
13- "created_at": z.string().pipe(z.coerce.date()).optional(),
13+ "created_at": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()).optional(),
1414 "name": z.string(),
1515 "sex": z.union([z.null(), z.number().int()]),
1616 });
Test case

test/inputs/json/samples/us-senators.json

1 generated file · +3 −3
Mtypescript-zoddefault / TopLevel.ts+3 −3
@@ -96,7 +96,7 @@ export type Extra = z.infer<typeof ExtraSchema>;
9696
9797 export const PersonSchema = z.object({
9898 "bioguideid": z.string(),
99- "birthday": z.string(),
99+ "birthday": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
100100 "cspanid": z.number().int(),
101101 "firstname": z.string(),
102102 "gender": GenderSchema,
@@ -121,7 +121,7 @@ export const ObjectElementSchema = z.object({
121121 "current": z.boolean(),
122122 "description": z.string(),
123123 "district": z.null(),
124- "enddate": z.string(),
124+ "enddate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
125125 "extra": ExtraSchema,
126126 "leadership_title": z.union([z.null(), z.string()]),
127127 "party": PartySchema,
@@ -133,7 +133,7 @@ export const ObjectElementSchema = z.object({
133133 "senator_class_label": SenatorClassLabelSchema,
134134 "senator_rank": SenatorRankSchema,
135135 "senator_rank_label": SenatorRankLabelSchema,
136- "startdate": z.string(),
136+ "startdate": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
137137 "state": z.string(),
138138 "title": TitleSchema,
139139 "title_long": RoleTypeLabelSchema,
Test case

test/inputs/schema/date-time-or-string.schema

1 generated file · +1 −1
Mschema-typescript-zoddefault / TopLevel.ts+1 −1
@@ -7,7 +7,7 @@ export const BarEnumSchema = z.enum([
77 export type BarEnum = z.infer<typeof BarEnumSchema>;
88
99 export const TopLevelSchema = z.object({
10- "bar": z.union([BarEnumSchema, z.string().pipe(z.coerce.date())]),
10+ "bar": z.union([BarEnumSchema, z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date())]),
1111 "foo": z.string(),
1212 });
1313 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/date-time.schema

1 generated file · +5 −5
Mschema-typescript-zoddefault / TopLevel.ts+5 −5
@@ -8,10 +8,10 @@ export const ComplexUnionArrayEnumSchema = z.enum([
88 export type ComplexUnionArrayEnum = z.infer<typeof ComplexUnionArrayEnumSchema>;
99
1010 export const TopLevelSchema = z.object({
11- "complex-union-array": z.array(z.union([ComplexUnionArrayEnumSchema, z.number().int(), z.string().pipe(z.coerce.date())])),
12- "date": z.string(),
13- "date-time": z.string().pipe(z.coerce.date()),
14- "time": z.string(),
15- "union-array": z.array(z.string()),
11+ "complex-union-array": z.array(z.union([ComplexUnionArrayEnumSchema, z.number().int(), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date())])),
12+ "date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
13+ "date-time": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
14+ "time": z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i),
15+ "union-array": z.array(z.union([z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value), z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date())])),
1616 });
1717 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/optional-date-time.schema

1 generated file · +6 −6
Mschema-typescript-zoddefault / TopLevel.ts+6 −6
@@ -2,11 +2,11 @@ import * as z from "zod";
22
33
44 export const TopLevelSchema = z.object({
5- "optional-date": z.string().optional(),
6- "optional-date-time": z.string().pipe(z.coerce.date()).optional(),
7- "optional-time": z.string().optional(),
8- "required-date": z.string(),
9- "required-date-time": z.string().pipe(z.coerce.date()),
10- "required-time": z.string(),
5+ "optional-date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value).optional(),
6+ "optional-date-time": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()).optional(),
7+ "optional-time": z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i).optional(),
8+ "required-date": z.string().regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/).refine(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value),
9+ "required-date-time": z.string().refine(value => z.string().datetime({ offset: true }).safeParse(value.toUpperCase()).success && (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)).pipe(z.coerce.date()),
10+ "required-time": z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i),
1111 });
1212 export type TopLevel = z.infer<typeof TopLevelSchema>;
No generated files match these filters.