Generated-output differences

quicktype output changed between the PR base and tested PR merge revisions.
← Back to the pull request
67test cases
101files differ
101modified
0new
0deleted
326changed lines
+163 −163insertions / deletions
Base d328bccd7f4a02950204d328ad7be721523000c1 · PR merge a4b4a16f7f8d57edfc401d9bc13825194a4707ce · Head 2eeb64ddb6cbbceeee95562e387d6d97622cf6da · raw patch
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

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

2 generated files · +3 −3
Mpythondefault / quicktype.py+1 −1
@@ -13,7 +13,7 @@ def from_str(x: Any) -> str:
1313
1414
1515 def from_datetime(x: Any) -> datetime.datetime:
16- return dateutil.parser.parse(x)
16+ return dateutil.parser.isoparse(x)
1717
1818
1919 def from_int(x: Any) -> int:
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -3,10 +3,10 @@ import * as S from "effect/Schema";
33
44 export class Result extends S.Class<Result>("Result")({
55 "code": S.String,
6- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
6+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
77 "id": S.Int,
88 "name": S.String,
9- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
9+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
1010 "uri": S.String,
1111 }) {}
Test case

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

2 generated files · +9 −9
Mpythondefault / quicktype.py+1 −1
@@ -44,7 +44,7 @@ def to_class(c: Type[T], x: Any) -> dict:
4444
4545
4646 def from_datetime(x: Any) -> datetime.datetime:
47- return dateutil.parser.parse(x)
47+ return dateutil.parser.isoparse(x)
4848
4949
5050 def from_list(f: Callable[[Any], T], x: Any) -> list[T]:
Mtypescript-effect-schemadefault / TopLevel.ts+8 −8
@@ -63,7 +63,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
6363 "compare_url": S.String,
6464 "contents_url": S.String,
6565 "contributors_url": S.String,
66- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
66+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
6767 "default_branch": S.String,
6868 "deployments_url": S.String,
6969 "description": S.Null,
@@ -104,7 +104,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
104104 "owner": MergedBy,
105105 "private": S.Boolean,
106106 "pulls_url": S.String,
107- "pushed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
107+ "pushed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
108108 "releases_url": S.String,
109109 "size": S.Int,
110110 "ssh_url": S.String,
@@ -117,7 +117,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
117117 "tags_url": S.String,
118118 "teams_url": S.String,
119119 "trees_url": S.String,
120- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
120+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
121121 "url": S.String,
122122 "watchers": S.Int,
123123 "watchers_count": S.Int,
@@ -138,12 +138,12 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
138138 "base": Base,
139139 "body": S.String,
140140 "changed_files": S.Int,
141- "closed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
141+ "closed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
142142 "comments": S.Int,
143143 "comments_url": S.String,
144144 "commits": S.Int,
145145 "commits_url": S.String,
146- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
146+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
147147 "deletions": S.Int,
148148 "diff_url": S.String,
149149 "head": Base,
@@ -157,7 +157,7 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
157157 "mergeable": S.Null,
158158 "mergeable_state": S.String,
159159 "merged": S.Boolean,
160- "merged_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
160+ "merged_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
161161 "merged_by": MergedBy,
162162 "milestone": S.Null,
163163 "number": S.Int,
@@ -170,7 +170,7 @@ export class PullRequest extends S.Class<PullRequest>("PullRequest")({
170170 "state": S.String,
171171 "statuses_url": S.String,
172172 "title": S.String,
173- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
173+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
174174 "url": S.String,
175175 "user": MergedBy,
176176 }) {}
@@ -216,7 +216,7 @@ export class Actor extends S.Class<Actor>("Actor")({
216216
217217 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
218218 "actor": Actor,
219- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
219+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
220220 "id": S.String,
221221 "org": S.optional(Actor),
222222 "payload": Payload,
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -74,7 +74,7 @@ export class Result extends S.Class<Result>("Result")({
7474 "id": S.Int,
7575 "images": S.Array(Image),
7676 "language": ResultLanguage,
77- "release_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
77+ "release_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
7878 "stars": S.Int,
7979 "tags": S.NullOr(S.Array(S.Any)),
8080 "title": S.String,
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
3636
3737
3838 def from_datetime(x: Any) -> datetime.datetime:
39- return dateutil.parser.parse(x)
39+ return dateutil.parser.isoparse(x)
4040
4141
4242 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
9494
9595 export class Query extends S.Class<Query>("Query")({
9696 "count": S.Int,
97- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
97+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
9898 "lang": S.String,
9999 "results": Results,
100100 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

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

1 generated file · +3 −3
Mtypescript-effect-schemadefault / TopLevel.ts+3 −3
@@ -54,7 +54,7 @@ export type Title = S.Schema.Type<typeof Title>;
5454
5555 export class Person extends S.Class<Person>("Person")({
5656 "bioguideid": S.String,
57- "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
57+ "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
5858 "cspanid": S.Int,
5959 "firstname": S.String,
6060 "gender": Gender,
@@ -87,7 +87,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
8787 "current": S.Boolean,
8888 "description": S.String,
8989 "district": S.Int,
90- "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
90+ "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
9191 "extra": Extra,
9292 "id": S.Int,
9393 "leadership_title": S.NullOr(S.String),
@@ -98,7 +98,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
9898 "role_type_label": RoleTypeLabel,
9999 "senator_class": S.Null,
100100 "senator_rank": S.Null,
101- "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
101+ "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
102102 "state": S.String,
103103 "title": Title,
104104 "title_long": RoleTypeLabel,
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
4343
4444
4545 def from_datetime(x: Any) -> datetime.datetime:
46- return dateutil.parser.parse(x)
46+ return dateutil.parser.isoparse(x)
4747
4848
4949 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -101,7 +101,7 @@ export class Results extends S.Class<Results>("Results")({
101101
102102 export class Query extends S.Class<Query>("Query")({
103103 "count": S.Int,
104- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
104+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
105105 "lang": S.String,
106106 "results": Results,
107107 }) {}
Test case

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

1 generated file · +3 −3
Mtypescript-effect-schemadefault / TopLevel.ts+3 −3
@@ -80,7 +80,7 @@ export type Title = S.Schema.Type<typeof Title>;
8080
8181 export class Person extends S.Class<Person>("Person")({
8282 "bioguideid": S.String,
83- "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
83+ "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
8484 "cspanid": S.Int,
8585 "firstname": S.String,
8686 "gender": Gender,
@@ -113,7 +113,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
113113 "current": S.Boolean,
114114 "description": S.String,
115115 "district": S.Null,
116- "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
116+ "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
117117 "extra": Extra,
118118 "id": S.Int,
119119 "leadership_title": S.NullOr(S.String),
@@ -126,7 +126,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
126126 "senator_class_label": SenatorClassLabel,
127127 "senator_rank": SenatorRank,
128128 "senator_rank_label": SenatorRankLabel,
129- "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
129+ "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
130130 "state": S.String,
131131 "title": Title,
132132 "title_long": RoleTypeLabel,
Test case

test/inputs/json/misc/31189.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -16,7 +16,7 @@ export class Rates extends S.Class<Rates>("Rates")({
1616 }) {}
1717
1818 export class Period extends S.Class<Period>("Period")({
19- "effective_from": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), EffectiveFromEnum),
19+ "effective_from": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), EffectiveFromEnum),
2020 "rates": Rates,
2121 }) {}
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -23,7 +23,7 @@ def from_str(x: Any) -> str:
2323
2424
2525 def from_datetime(x: Any) -> datetime.datetime:
26- return dateutil.parser.parse(x)
26+ return dateutil.parser.isoparse(x)
2727
2828
2929 def from_none(x: Any) -> Any:
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
5- "BirthDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
5+ "BirthDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
66 "BirthDateIsProtected": S.Boolean,
77 "GenderTypeID": S.Int,
88 "Notes": S.String,
Test case

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

2 generated files · +7 −7
Mpythondefault / quicktype.py+1 −1
@@ -15,7 +15,7 @@ def from_int(x: Any) -> int:
1515
1616
1717 def from_datetime(x: Any) -> datetime.datetime:
18- return dateutil.parser.parse(x)
18+ return dateutil.parser.isoparse(x)
1919
2020
2121 def from_str(x: Any) -> str:
Mtypescript-effect-schemadefault / TopLevel.ts+6 −6
@@ -24,12 +24,12 @@ export type ResultType = S.Schema.Type<typeof ResultType>;
2424
2525 export class CustomIncome extends S.Class<CustomIncome>("CustomIncome")({
2626 "amount": S.Int,
27- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
27+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
2828 "id": S.String,
2929 "name": S.String,
3030 "status": Status,
3131 "type": CustomIncomeType,
32- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
32+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
3333 "uri": S.String,
3434 }) {}
3535
@@ -37,11 +37,11 @@ export class Result extends S.Class<Result>("Result")({
3737 "cost_absolute": S.NullOr(S.Int),
3838 "cost_max": S.NullOr(S.Int),
3939 "cost_min": S.NullOr(S.Int),
40- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
40+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
4141 "customIncomes": S.Array(CustomIncome),
4242 "direct_rep_costs_max": S.Null,
4343 "direct_rep_costs_min": S.Null,
44- "end_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
44+ "end_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
4545 "eur_sources_grants": S.Int,
4646 "eur_sources_grants_src": S.NullOr(S.String),
4747 "eur_sources_procurement": S.Int,
@@ -57,14 +57,14 @@ export class Result extends S.Class<Result>("Result")({
5757 "public_financing_national": S.NullOr(S.Int),
5858 "public_financing_total": S.NullOr(S.Int),
5959 "representative": S.String,
60- "start_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
60+ "start_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
6161 "status": Status,
6262 "total_budget": S.NullOr(S.Int),
6363 "turnover_absolute": S.NullOr(S.Int),
6464 "turnover_max": S.NullOr(S.Int),
6565 "turnover_min": S.NullOr(S.Int),
6666 "type": ResultType,
67- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
67+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
6868 "uri": S.String,
6969 }) {}
Test case

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

1 generated file · +2 −2
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -43,11 +43,11 @@ export class Prize extends S.Class<Prize>("Prize")({
4343 }) {}
4444
4545 export class Laureate extends S.Class<Laureate>("Laureate")({
46- "born": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), BornEnum),
46+ "born": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), BornEnum),
4747 "bornCity": S.optional(S.String),
4848 "bornCountry": S.optional(S.String),
4949 "bornCountryCode": S.optional(S.String),
50- "died": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), BornEnum),
50+ "died": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), BornEnum),
5151 "diedCity": S.optional(S.String),
5252 "diedCountry": S.optional(S.String),
5353 "diedCountryCode": S.optional(S.String),
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
4343
4444
4545 def from_datetime(x: Any) -> datetime.datetime:
46- return dateutil.parser.parse(x)
46+ return dateutil.parser.isoparse(x)
4747
4848
4949 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -99,7 +99,7 @@ export class Results extends S.Class<Results>("Results")({
9999
100100 export class Query extends S.Class<Query>("Query")({
101101 "count": S.Int,
102- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
102+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
103103 "lang": S.String,
104104 "results": Results,
105105 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
3636
3737
3838 def from_datetime(x: Any) -> datetime.datetime:
39- return dateutil.parser.parse(x)
39+ return dateutil.parser.isoparse(x)
4040
4141
4242 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
9494
9595 export class Query extends S.Class<Query>("Query")({
9696 "count": S.Int,
97- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
97+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
9898 "lang": S.String,
9999 "results": Results,
100100 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

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

2 generated files · +3 −3
Mpythondefault / quicktype.py+1 −1
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
1010
1111
1212 def from_datetime(x: Any) -> datetime.datetime:
13- return dateutil.parser.parse(x)
13+ return dateutil.parser.isoparse(x)
1414
1515
1616 def from_str(x: Any) -> str:
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -8,12 +8,12 @@ export const Status = S.Literal(
88 export type Status = S.Schema.Type<typeof Status>;
99
1010 export class Result extends S.Class<Result>("Result")({
11- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
11+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
1212 "id": S.String,
1313 "person_id": S.String,
1414 "representative_id": S.String,
1515 "status": Status,
16- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
16+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
1717 }) {}
1818
1919 export class Facets extends S.Class<Facets>("Facets")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -8,7 +8,7 @@ T = TypeVar("T")
88
99
1010 def from_datetime(x: Any) -> datetime.datetime:
11- return dateutil.parser.parse(x)
11+ return dateutil.parser.isoparse(x)
1212
1313
1414 def from_int(x: Any) -> int:
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
5- "Date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
5+ "Date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
66 "ID": S.Int,
77 "Sponsor": S.String,
88 "Title": S.String,
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

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

1 generated file · +2 −2
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -55,7 +55,7 @@ export const Type = S.Literal(
5555 export type Type = S.Schema.Type<typeof Type>;
5656
5757 export class Ruling extends S.Class<Ruling>("Ruling")({
58- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
58+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
5959 "text": S.String,
6060 }) {}
6161
@@ -105,6 +105,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
105105 "mkm_id": S.Int,
106106 "mkm_name": S.String,
107107 "name": S.String,
108- "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
108+ "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
109109 "type": S.String,
110110 }) {}
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
4343
4444
4545 def from_datetime(x: Any) -> datetime.datetime:
46- return dateutil.parser.parse(x)
46+ return dateutil.parser.isoparse(x)
4747
4848
4949 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -101,7 +101,7 @@ export class Results extends S.Class<Results>("Results")({
101101
102102 export class Query extends S.Class<Query>("Query")({
103103 "count": S.Int,
104- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
104+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
105105 "lang": S.String,
106106 "results": Results,
107107 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

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

2 generated files · +5 −5
Mpythondefault / quicktype.py+1 −1
@@ -20,7 +20,7 @@ def from_int(x: Any) -> int:
2020
2121
2222 def from_datetime(x: Any) -> datetime.datetime:
23- return dateutil.parser.parse(x)
23+ return dateutil.parser.isoparse(x)
2424
2525
2626 def from_float(x: Any) -> float:
Mtypescript-effect-schemadefault / TopLevel.ts+4 −4
@@ -27,7 +27,7 @@ export class Result extends S.Class<Result>("Result")({
2727 "be_office_town": S.optional(S.String),
2828 "code_of_conduct": S.String,
2929 "contact_country": S.Int,
30- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
30+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
3131 "entity": S.String,
3232 "goals": S.String,
3333 "head": S.String,
@@ -42,7 +42,7 @@ export class Result extends S.Class<Result>("Result")({
4242 "id": S.String,
4343 "identification_code": S.String,
4444 "info_members": S.String,
45- "last_update_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
45+ "last_update_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
4646 "legal": S.String,
4747 "legal_status": S.String,
4848 "main_category": S.Int,
@@ -58,12 +58,12 @@ export class Result extends S.Class<Result>("Result")({
5858 "networking": S.NullOr(S.String),
5959 "number_of_natural_persons": S.NullOr(S.Int),
6060 "other_code_of_conduct": S.NullOr(S.String),
61- "registration_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
61+ "registration_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
6262 "status": Status,
6363 "structure_members": S.String,
6464 "sub_category": S.Int,
6565 "sub_category_title": S.String,
66- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
66+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
6767 "uri": S.String,
6868 "web_site_url": S.NullOr(S.String),
6969 }) {}
Test case

test/inputs/json/misc/75912.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

test/inputs/json/misc/77392.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -15,7 +15,7 @@ def from_str(x: Any) -> str:
1515
1616
1717 def from_datetime(x: Any) -> datetime.datetime:
18- return dateutil.parser.parse(x)
18+ return dateutil.parser.isoparse(x)
1919
2020
2121 def from_none(x: Any) -> Any:
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -24,7 +24,7 @@ export type Pha = S.Schema.Type<typeof Pha>;
2424
2525 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
2626 "designation": S.String,
27- "discovery_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
27+ "discovery_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
2828 "h_mag": S.optional(S.String),
2929 "i_deg": S.String,
3030 "moid_au": S.String,
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

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

2 generated files · +3 −3
Mpythondefault / quicktype.py+1 −1
@@ -39,7 +39,7 @@ def to_enum(c: Type[EnumT], x: Any) -> EnumT:
3939
4040
4141 def from_datetime(x: Any) -> datetime.datetime:
42- return dateutil.parser.parse(x)
42+ return dateutil.parser.isoparse(x)
4343
4444
4545 def from_dict(f: Callable[[Any], T], x: Any) -> dict[str, T]:
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -24,7 +24,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
2424 "comments": S.Int,
2525 "comments_url": S.String,
2626 "commits_url": S.String,
27- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
27+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
2828 "description": S.NullOr(S.String),
2929 "files": S.Record({ key: S.String, value: File}),
3030 "forks_url": S.String,
@@ -34,7 +34,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
3434 "id": S.String,
3535 "public": S.Boolean,
3636 "truncated": S.Boolean,
37- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
37+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
3838 "url": S.String,
3939 "user": S.Null,
4040 }) {}
Test case

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

2 generated files · +3 −3
Mpythondefault / quicktype.py+1 −1
@@ -8,7 +8,7 @@ T = TypeVar("T")
88
99
1010 def from_datetime(x: Any) -> datetime.datetime:
11- return dateutil.parser.parse(x)
11+ return dateutil.parser.isoparse(x)
1212
1313
1414 def from_int(x: Any) -> int:
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -2,12 +2,12 @@ import * as S from "effect/Schema";
22
33
44 export class Result extends S.Class<Result>("Result")({
5- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
5+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
66 "id": S.Int,
77 "items": S.Int,
88 "name": S.String,
99 "parent": S.NullOr(S.Int),
10- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
10+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
1111 "uri": S.String,
1212 }) {}
Test case

test/inputs/json/misc/88130.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
3636
3737
3838 def from_datetime(x: Any) -> datetime.datetime:
39- return dateutil.parser.parse(x)
39+ return dateutil.parser.isoparse(x)
4040
4141
4242 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
9494
9595 export class Query extends S.Class<Query>("Query")({
9696 "count": S.Int,
97- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
97+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
9898 "lang": S.String,
9999 "results": Results,
100100 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

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

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
3636
3737
3838 def from_datetime(x: Any) -> datetime.datetime:
39- return dateutil.parser.parse(x)
39+ return dateutil.parser.isoparse(x)
4040
4141
4242 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
9494
9595 export class Query extends S.Class<Query>("Query")({
9696 "count": S.Int,
97- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
97+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
9898 "lang": S.String,
9999 "results": Results,
100100 }) {}
Test case

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

2 generated files · +3 −3
Mpythondefault / quicktype.py+1 −1
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
1010
1111
1212 def from_datetime(x: Any) -> datetime.datetime:
13- return dateutil.parser.parse(x)
13+ return dateutil.parser.isoparse(x)
1414
1515
1616 def from_str(x: Any) -> str:
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -15,7 +15,7 @@ export const Title = S.Literal(
1515 export type Title = S.Schema.Type<typeof Title>;
1616
1717 export class Result extends S.Class<Result>("Result")({
18- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
18+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
1919 "entity": S.String,
2020 "first_name": S.String,
2121 "id": S.String,
@@ -24,7 +24,7 @@ export class Result extends S.Class<Result>("Result")({
2424 "position": S.NullOr(S.String),
2525 "status": Status,
2626 "title": S.NullOr(Title),
27- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
27+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
2828 "uri": S.String,
2929 }) {}
Test case

test/inputs/json/misc/a0496.json

2 generated files · +5 −5
Mpythondefault / quicktype.py+1 −1
@@ -53,7 +53,7 @@ def from_bool(x: Any) -> bool:
5353
5454
5555 def from_datetime(x: Any) -> datetime.datetime:
56- return dateutil.parser.parse(x)
56+ return dateutil.parser.isoparse(x)
5757
5858
5959 def to_float(x: Any) -> float:
Mtypescript-effect-schemadefault / TopLevel.ts+4 −4
@@ -7,19 +7,19 @@ export class Errors extends S.Class<Errors>("Errors")(S.Struct({}).pipe(S.filter
77 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
88 "code": S.String,
99 "column_names": S.Array(S.String),
10- "data": S.Array(S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), S.Number, S.Null))),
10+ "data": S.Array(S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), S.Number, S.Null))),
1111 "description": S.String,
1212 "display_url": S.String,
1313 "errors": Errors,
1414 "frequency": S.String,
15- "from_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
15+ "from_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
1616 "id": S.Int,
1717 "name": S.String,
1818 "premium": S.Boolean,
1919 "source_code": S.String,
2020 "source_name": S.String,
21- "to_date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
21+ "to_date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
2222 "type": S.String,
23- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
23+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
2424 "urlize_name": S.String,
2525 }) {}
Test case

test/inputs/json/misc/a1eca.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
3636
3737
3838 def from_datetime(x: Any) -> datetime.datetime:
39- return dateutil.parser.parse(x)
39+ return dateutil.parser.isoparse(x)
4040
4141
4242 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
9494
9595 export class Query extends S.Class<Query>("Query")({
9696 "count": S.Int,
97- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
97+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
9898 "lang": S.String,
9999 "results": Results,
100100 }) {}
Test case

test/inputs/json/misc/a9691.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

test/inputs/json/misc/abb4b.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

test/inputs/json/misc/ac944.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

test/inputs/json/misc/b4865.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -49,7 +49,7 @@ def from_union(fs, x):
4949
5050
5151 def from_datetime(x: Any) -> datetime.datetime:
52- return dateutil.parser.parse(x)
52+ return dateutil.parser.isoparse(x)
5353
5454
5555 def is_type(t: Type[T], x: Any) -> T:
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -36,7 +36,7 @@ export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")
3636 "recclass": S.String,
3737 "reclat": S.optional(S.String),
3838 "reclong": S.optional(S.String),
39- "year": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
39+ "year": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
4040 }) {}
4141
4242 export const TopLevel = S.Array(TopLevelElement);
Test case

test/inputs/json/misc/b6f2c.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

test/inputs/json/misc/bb1ec.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

test/inputs/json/misc/cd463.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

test/inputs/json/misc/cf0d8.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
3636
3737
3838 def from_datetime(x: Any) -> datetime.datetime:
39- return dateutil.parser.parse(x)
39+ return dateutil.parser.isoparse(x)
4040
4141
4242 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
9494
9595 export class Query extends S.Class<Query>("Query")({
9696 "count": S.Int,
97- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
97+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
9898 "lang": S.String,
9999 "results": Results,
100100 }) {}
Test case

test/inputs/json/misc/cfbce.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -3,6 +3,6 @@ import * as S from "effect/Schema";
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
55 "base": S.String,
6- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
77 "rates": S.Record({ key: S.String, value: S.Number}),
88 }) {}
Test case

test/inputs/json/misc/d0908.json

1 generated file · +1 −1
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TotalPopulation extends S.Class<TotalPopulation>("TotalPopulation")({
5- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
5+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
66 "population": S.Int,
77 }) {}
Test case

test/inputs/json/misc/d23d5.json

2 generated files · +3 −3
Mpythondefault / quicktype.py+1 −1
@@ -8,7 +8,7 @@ T = TypeVar("T")
88
99
1010 def from_datetime(x: Any) -> datetime.datetime:
11- return dateutil.parser.parse(x)
11+ return dateutil.parser.isoparse(x)
1212
1313
1414 def from_str(x: Any) -> str:
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -3,10 +3,10 @@ import * as S from "effect/Schema";
33
44 export class Result extends S.Class<Result>("Result")({
55 "acronym": S.NullOr(S.String),
6- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
6+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
77 "id": S.String,
88 "name": S.String,
9- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
9+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
1010 "uri": S.String,
1111 }) {}
Test case

test/inputs/json/misc/dbfb3.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
4343
4444
4545 def from_datetime(x: Any) -> datetime.datetime:
46- return dateutil.parser.parse(x)
46+ return dateutil.parser.isoparse(x)
4747
4848
4949 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -100,7 +100,7 @@ export class Results extends S.Class<Results>("Results")({
100100
101101 export class Query extends S.Class<Query>("Query")({
102102 "count": S.Int,
103- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
103+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
104104 "lang": S.String,
105105 "results": Results,
106106 }) {}
Test case

test/inputs/json/misc/dc44f.json

1 generated file · +2 −2
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -104,7 +104,7 @@ export const Type = S.Literal(
104104 export type Type = S.Schema.Type<typeof Type>;
105105
106106 export class Ruling extends S.Class<Ruling>("Ruling")({
107- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
107+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
108108 "text": S.String,
109109 }) {}
110110
@@ -153,6 +153,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
153153 "mkm_id": S.Int,
154154 "mkm_name": S.String,
155155 "name": S.String,
156- "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
156+ "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
157157 "type": S.String,
158158 }) {}
Test case

test/inputs/json/misc/dd1ce.json

1 generated file · +2 −2
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -104,7 +104,7 @@ export const Type = S.Literal(
104104 export type Type = S.Schema.Type<typeof Type>;
105105
106106 export class Ruling extends S.Class<Ruling>("Ruling")({
107- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
107+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
108108 "text": S.String,
109109 }) {}
110110
@@ -153,6 +153,6 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
153153 "mkm_id": S.Int,
154154 "mkm_name": S.String,
155155 "name": S.String,
156- "releaseDate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
156+ "releaseDate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
157157 "type": S.String,
158158 }) {}
Test case

test/inputs/json/misc/df957.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -36,7 +36,7 @@ def from_int(x: Any) -> int:
3636
3737
3838 def from_datetime(x: Any) -> datetime.datetime:
39- return dateutil.parser.parse(x)
39+ return dateutil.parser.isoparse(x)
4040
4141
4242 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -94,7 +94,7 @@ export class Results extends S.Class<Results>("Results")({
9494
9595 export class Query extends S.Class<Query>("Query")({
9696 "count": S.Int,
97- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
97+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
9898 "lang": S.String,
9999 "results": Results,
100100 }) {}
Test case

test/inputs/json/misc/e2915.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -43,7 +43,7 @@ def from_int(x: Any) -> int:
4343
4444
4545 def from_datetime(x: Any) -> datetime.datetime:
46- return dateutil.parser.parse(x)
46+ return dateutil.parser.isoparse(x)
4747
4848
4949 @dataclass
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -99,7 +99,7 @@ export class Results extends S.Class<Results>("Results")({
9999
100100 export class Query extends S.Class<Query>("Query")({
101101 "count": S.Int,
102- "created": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
102+ "created": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
103103 "lang": S.String,
104104 "results": Results,
105105 }) {}
Test case

test/inputs/json/priority/bug2590.json

2 generated files · +3 −3
Mpythondefault / quicktype.py+1 −1
@@ -14,7 +14,7 @@ def from_str(x: Any) -> str:
1414
1515
1616 def from_datetime(x: Any) -> datetime.datetime:
17- return dateutil.parser.parse(x)
17+ return dateutil.parser.isoparse(x)
1818
1919
2020 def from_none(x: Any) -> Any:
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -2,8 +2,8 @@ import * as S from "effect/Schema";
22
33
44 export class Invoice extends S.Class<Invoice>("Invoice")({
5- "createdAt": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
6- "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))),
5+ "createdAt": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
6+ "dueDate": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value))),
77 "name": S.String,
88 }) {}
Test case

test/inputs/json/priority/bug2663.json

2 generated files · +3 −3
Mpythondefault / quicktype.py+1 −1
@@ -14,7 +14,7 @@ def from_date(x: Any) -> datetime.date:
1414
1515
1616 def from_datetime(x: Any) -> datetime.datetime:
17- return dateutil.parser.parse(x)
17+ return dateutil.parser.isoparse(x)
1818
1919
2020 def from_str(x: Any) -> str:
Mtypescript-effect-schemadefault / TopLevel.ts+2 −2
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
22
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
5- "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
6- "lastSeen": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
5+ "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
6+ "lastSeen": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
77 "name": S.String,
88 }) {}
Test case

test/inputs/json/priority/keywords.json

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -21,7 +21,7 @@ def to_class(c: Type[T], x: Any) -> dict:
2121
2222
2323 def from_datetime(x: Any) -> datetime.datetime:
24- return dateutil.parser.parse(x)
24+ return dateutil.parser.isoparse(x)
2525
2626
2727 def from_list(f: Callable[[Any], T], x: Any) -> list[T]:
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -1282,7 +1282,7 @@ export class DateTimeStyles extends S.Class<DateTimeStyles>("DateTimeStyles")({
12821282 }) {}
12831283
12841284 export class DateTime extends S.Class<DateTime>("DateTime")({
1285- "DateTime": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
1285+ "DateTime": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
12861286 }) {}
12871287
12881288 export class DateParseHandling extends S.Class<DateParseHandling>("DateParseHandling")({
Test case

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

2 generated files · +17 −17
Mpythondefault / quicktype.py+1 −1
@@ -44,7 +44,7 @@ def to_enum(c: Type[EnumT], x: Any) -> EnumT:
4444
4545
4646 def from_datetime(x: Any) -> datetime.datetime:
47- return dateutil.parser.parse(x)
47+ return dateutil.parser.isoparse(x)
4848
4949
5050 def to_class(c: Type[T], x: Any) -> dict:
Mtypescript-effect-schemadefault / TopLevel.ts+16 −16
@@ -88,7 +88,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
8888 "compare_url": S.String,
8989 "contents_url": S.String,
9090 "contributors_url": S.String,
91- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
91+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
9292 "default_branch": S.String,
9393 "deployments_url": S.String,
9494 "description": S.String,
@@ -129,7 +129,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
129129 "owner": User,
130130 "private": S.Boolean,
131131 "pulls_url": S.String,
132- "pushed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
132+ "pushed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
133133 "releases_url": S.String,
134134 "size": S.Int,
135135 "ssh_url": S.String,
@@ -142,7 +142,7 @@ export class BaseRepo extends S.Class<BaseRepo>("BaseRepo")({
142142 "tags_url": S.String,
143143 "teams_url": S.String,
144144 "trees_url": S.String,
145- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
145+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
146146 "url": S.String,
147147 "watchers": S.Int,
148148 "watchers_count": S.Int,
@@ -163,12 +163,12 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
163163 "base": Base,
164164 "body": S.String,
165165 "changed_files": S.Int,
166- "closed_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
166+ "closed_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
167167 "comments": S.Int,
168168 "comments_url": S.String,
169169 "commits": S.Int,
170170 "commits_url": S.String,
171- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
171+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
172172 "deletions": S.Int,
173173 "diff_url": S.String,
174174 "head": Base,
@@ -182,7 +182,7 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
182182 "mergeable": S.Null,
183183 "mergeable_state": S.String,
184184 "merged": S.Boolean,
185- "merged_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
185+ "merged_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
186186 "merged_by": User,
187187 "milestone": S.Null,
188188 "number": S.Int,
@@ -195,18 +195,18 @@ export class PayloadPullRequest extends S.Class<PayloadPullRequest>("PayloadPull
195195 "state": S.String,
196196 "statuses_url": S.String,
197197 "title": S.String,
198- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
198+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
199199 "url": S.String,
200200 "user": User,
201201 }) {}
202202
203203 export class Comment extends S.Class<Comment>("Comment")({
204204 "body": S.String,
205- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
205+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
206206 "html_url": S.String,
207207 "id": S.Int,
208208 "issue_url": S.String,
209- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
209+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
210210 "url": S.String,
211211 "user": User,
212212 }) {}
@@ -214,10 +214,10 @@ export class Comment extends S.Class<Comment>("Comment")({
214214 export class Milestone extends S.Class<Milestone>("Milestone")({
215215 "closed_at": S.Null,
216216 "closed_issues": S.Int,
217- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
217+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
218218 "creator": User,
219219 "description": S.String,
220- "due_on": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
220+ "due_on": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
221221 "html_url": S.String,
222222 "id": S.Int,
223223 "labels_url": S.String,
@@ -225,7 +225,7 @@ export class Milestone extends S.Class<Milestone>("Milestone")({
225225 "open_issues": S.Int,
226226 "state": S.String,
227227 "title": S.String,
228- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
228+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
229229 "url": S.String,
230230 }) {}
231231
@@ -252,10 +252,10 @@ export class Issue extends S.Class<Issue>("Issue")({
252252 "assignee": S.Null,
253253 "assignees": S.Array(S.Any),
254254 "body": S.String,
255- "closed_at": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
255+ "closed_at": S.NullOr(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
256256 "comments": S.Int,
257257 "comments_url": S.String,
258- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
258+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
259259 "events_url": S.String,
260260 "html_url": S.String,
261261 "id": S.Int,
@@ -268,7 +268,7 @@ export class Issue extends S.Class<Issue>("Issue")({
268268 "repository_url": S.String,
269269 "state": S.String,
270270 "title": S.String,
271- "updated_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
271+ "updated_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
272272 "url": S.String,
273273 "user": User,
274274 }) {}
@@ -284,7 +284,7 @@ export class Actor extends S.Class<Actor>("Actor")({
284284
285285 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
286286 "actor": Actor,
287- "created_at": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
287+ "created_at": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
288288 "id": S.String,
289289 "org": S.optional(Actor),
290290 "payload": Payload,
Test case

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

2 generated files · +2 −2
Mpythondefault / quicktype.py+1 −1
@@ -27,7 +27,7 @@ def from_union(fs, x):
2727
2828
2929 def from_datetime(x: Any) -> datetime.datetime:
30- return dateutil.parser.parse(x)
30+ return dateutil.parser.isoparse(x)
3131
3232
3333 def from_int(x: Any) -> int:
Mtypescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -9,7 +9,7 @@ export class Address extends S.Class<Address>("Address")({
99
1010 export class Item extends S.Class<Item>("Item")({
1111 "address": S.optional(Address),
12- "created_at": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
12+ "created_at": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
1313 "name": S.String,
1414 "sex": S.NullOr(S.Int),
1515 }) {}
Test case

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

1 generated file · +3 −3
Mtypescript-effect-schemadefault / TopLevel.ts+3 −3
@@ -80,7 +80,7 @@ export type Title = S.Schema.Type<typeof Title>;
8080
8181 export class Person extends S.Class<Person>("Person")({
8282 "bioguideid": S.String,
83- "birthday": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
83+ "birthday": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
8484 "cspanid": S.Int,
8585 "firstname": S.String,
8686 "gender": Gender,
@@ -112,7 +112,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
112112 "current": S.Boolean,
113113 "description": S.String,
114114 "district": S.Null,
115- "enddate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
115+ "enddate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
116116 "extra": Extra,
117117 "leadership_title": S.NullOr(S.String),
118118 "party": Party,
@@ -124,7 +124,7 @@ export class ObjectElement extends S.Class<ObjectElement>("ObjectElement")({
124124 "senator_class_label": SenatorClassLabel,
125125 "senator_rank": SenatorRank,
126126 "senator_rank_label": SenatorRankLabel,
127- "startdate": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
127+ "startdate": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
128128 "state": S.String,
129129 "title": Title,
130130 "title_long": RoleTypeLabel,
Test case

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

2 generated files · +2 −2
Mschema-pythondefault / quicktype.py+1 −1
@@ -10,7 +10,7 @@ EnumT = TypeVar("EnumT", bound=Enum)
1010
1111
1212 def from_datetime(x: Any) -> datetime.datetime:
13- return dateutil.parser.parse(x)
13+ return dateutil.parser.isoparse(x)
1414
1515
1616 def from_union(fs, x):
Mschema-typescript-effect-schemadefault / TopLevel.ts+1 −1
@@ -7,6 +7,6 @@ export const BarEnum = S.Literal(
77 export type BarEnum = S.Schema.Type<typeof BarEnum>;
88
99 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
10- "bar": S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), BarEnum),
10+ "bar": S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), BarEnum),
1111 "foo": S.String,
1212 }) {}
Test case

test/inputs/schema/date-time.schema

2 generated files · +7 −7
Mschema-pythondefault / quicktype.py+2 −2
@@ -21,7 +21,7 @@ def from_int(x: Any) -> int:
2121
2222
2323 def from_datetime(x: Any) -> datetime.datetime:
24- return dateutil.parser.parse(x)
24+ return dateutil.parser.isoparse(x)
2525
2626
2727 def from_union(fs, x):
@@ -39,7 +39,7 @@ def from_date(x: Any) -> datetime.date:
3939
4040
4141 def from_time(x: Any) -> datetime.time:
42- assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$", x)
42+ assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})?$", x)
4343 return dateutil.parser.parse(x).timetz()
Mschema-typescript-effect-schemadefault / TopLevel.ts+5 −5
@@ -8,9 +8,9 @@ export const ComplexUnionArrayEnum = S.Literal(
88 export type ComplexUnionArrayEnum = S.Schema.Type<typeof ComplexUnionArrayEnum>;
99
1010 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
11- "complex-union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), ComplexUnionArrayEnum, S.Int)),
12- "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
13- "date-time": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
14- "time": S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
15- "union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)))),
11+ "complex-union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), ComplexUnionArrayEnum, S.Int)),
12+ "date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
13+ "date-time": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
14+ "time": S.String.pipe(S.pattern(/^(?:[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": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)), S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))), S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)))),
1616 }) {}
Test case

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

2 generated files · +8 −8
Mschema-pythondefault / quicktype.py+2 −2
@@ -14,11 +14,11 @@ def from_date(x: Any) -> datetime.date:
1414
1515
1616 def from_datetime(x: Any) -> datetime.datetime:
17- return dateutil.parser.parse(x)
17+ return dateutil.parser.isoparse(x)
1818
1919
2020 def from_time(x: Any) -> datetime.time:
21- assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$", x)
21+ assert isinstance(x, str) and re.match(r"^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})?$", x)
2222 return dateutil.parser.parse(x).timetz()
Mschema-typescript-effect-schemadefault / TopLevel.ts+6 −6
@@ -2,10 +2,10 @@ import * as S from "effect/Schema";
22
33
44 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
5- "optional-date": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))),
6- "optional-date-time": S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
7- "optional-time": S.optional(S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/))),
8- "required-date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
9- "required-date-time": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
10- "required-time": S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
5+ "optional-date": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value))),
6+ "optional-date-time": S.optional(S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10)))),
7+ "optional-time": S.optional(S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i))),
8+ "required-date": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])$/), S.filter(value => (new Date(value + "T00:00:00Z").toJSON() || "").slice(0, 10) === value)),
9+ "required-date-time": S.String.pipe(S.pattern(/^\d{4}-(?:0[1-9]|1[0-2])-(?:[0-2]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i), S.filter(value => (new Date(value.slice(0, 10) + "T00:00:00Z").toJSON() || "").slice(0, 10) === value.slice(0, 10))),
10+ "required-time": S.String.pipe(S.pattern(/^(?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/i)),
1111 }) {}
No generated files match these filters.