Generated-output differences

quicktype output changed between the PR base and tested PR merge revisions.
← Back to the pull request
43test cases
47files differ
47modified
0new
0deleted
574changed lines
+428 −146insertions / deletions
Base c39af7d303b025280e2668a1b2d29913093593c9 · PR merge 496e2848301e2d605a12eac9c4ffaeb701543211 · Head df7e1659455882562e2da548ccde09768d85339a · raw patch
Test case

test/inputs/json/misc/00ec5.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TypeSchema = z.enum([
511 "string",
@@ -35,7 +41,7 @@ export const SchemaSchema = z.object({
3541 export type Schema = z.infer<typeof SchemaSchema>;
3642
3743 export const ProviderSchema = z.object({
38- "properties": z.record(z.string(), PropertySchema),
44+ "properties": mapSchema(PropertySchema),
3945 });
4046 export type Provider = z.infer<typeof ProviderSchema>;
Test case

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

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/09f54.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const DatumSchema = z.object({
511 "anomaly": z.string(),
@@ -16,7 +22,7 @@ export const DescriptionSchema = z.object({
1622 export type Description = z.infer<typeof DescriptionSchema>;
1723
1824 export const TopLevelSchema = z.object({
19- "data": z.record(z.string(), DatumSchema),
25+ "data": mapSchema(DatumSchema),
2026 "description": DescriptionSchema,
2127 });
2228 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

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

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

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

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

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

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

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

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

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

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/75912.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/76ae1.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const FormatEnumSchema = z.enum([
511 "string",
@@ -102,7 +108,7 @@ export const PurpleSchemaSchema = z.object({
102108 export type PurpleSchema = z.infer<typeof PurpleSchemaSchema>;
103109
104110 export const ArticleSchema = z.object({
105- "properties": z.record(z.string(), PropertySchema),
111+ "properties": mapSchema(PropertySchema),
106112 });
107113 export type Article = z.infer<typeof ArticleSchema>;
Test case

test/inputs/json/misc/7d397.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TypeSchema = z.enum([
511 "string",
@@ -41,7 +47,7 @@ export const ItemsSchema = z.object({
4147 export type Items = z.infer<typeof ItemsSchema>;
4248
4349 export const ListSchema = z.object({
44- "properties": z.record(z.string(), PropertySchema),
50+ "properties": mapSchema(PropertySchema),
4551 });
4652 export type List = z.infer<typeof ListSchema>;
Test case

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

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const LanguageSchema = z.enum([
511 "Markdown",
@@ -27,7 +33,7 @@ export const TopLevelElementSchema = z.object({
2733 "commits_url": z.string(),
2834 "created_at": z.string().pipe(z.coerce.date()),
2935 "description": z.union([z.null(), z.string()]),
30- "files": z.record(z.string(), FileSchema),
36+ "files": mapSchema(FileSchema),
3137 "forks_url": z.string(),
3238 "git_pull_url": z.string(),
3339 "git_push_url": z.string(),
Test case

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

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/a9691.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/ac944.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/c0356.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const DatumSchema = z.object({
511 "anomaly": z.string(),
@@ -15,7 +21,7 @@ export const DescriptionSchema = z.object({
1521 export type Description = z.infer<typeof DescriptionSchema>;
1622
1723 export const TopLevelSchema = z.object({
18- "data": z.record(z.string(), DatumSchema),
24+ "data": mapSchema(DatumSchema),
1925 "description": DescriptionSchema,
2026 });
2127 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/cb81e.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const DescriptionSchema = z.object({
511 "base_period": z.string(),
@@ -10,7 +16,7 @@ export const DescriptionSchema = z.object({
1016 export type Description = z.infer<typeof DescriptionSchema>;
1117
1218 export const TopLevelSchema = z.object({
13- "data": z.record(z.string(), z.string()),
19+ "data": mapSchema(z.string()),
1420 "description": DescriptionSchema,
1521 });
1622 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/cd463.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/cfbce.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,9 +1,15 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "base": z.string(),
612 "date": z.string(),
7- "rates": z.record(z.string(), z.number()),
13+ "rates": mapSchema(z.number()),
814 });
915 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/e324e.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TypeSchema = z.enum([
511 "string",
@@ -35,7 +41,7 @@ export const ItemsSchema = z.object({
3541 export type Items = z.infer<typeof ItemsSchema>;
3642
3743 export const RateSchema = z.object({
38- "properties": z.record(z.string(), PropertySchema),
44+ "properties": mapSchema(PropertySchema),
3945 });
4046 export type Rate = z.infer<typeof RateSchema>;
Test case

test/inputs/json/misc/ed095.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,4 +1,10 @@
11 import * as z from "zod";
22
3-export const TopLevelSchema = z.record(z.string(), z.string());
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
9+export const TopLevelSchema = mapSchema(z.string());
410 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/misc/fd329.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const DatumSchema = z.object({
511 "anomaly": z.string(),
@@ -16,7 +22,7 @@ export const DescriptionSchema = z.object({
1622 export type Description = z.infer<typeof DescriptionSchema>;
1723
1824 export const TopLevelSchema = z.object({
19- "data": z.record(z.string(), DatumSchema),
25+ "data": mapSchema(DatumSchema),
2026 "description": DescriptionSchema,
2127 });
2228 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/priority/bug2037.json

1 generated file · +9 −3
Mtypescript-zoddefault / TopLevel.ts+9 −3
@@ -1,21 +1,27 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const RewardSchema = z.object({
511 });
612 export type Reward = z.infer<typeof RewardSchema>;
713
814 export const ObjectiveSchema = z.object({
9- "rewards": z.record(z.string(), RewardSchema),
15+ "rewards": mapSchema(RewardSchema),
1016 });
1117 export type Objective = z.infer<typeof ObjectiveSchema>;
1218
1319 export const MissionSpecSchema = z.object({
14- "objectives": z.record(z.string(), ObjectiveSchema),
20+ "objectives": mapSchema(ObjectiveSchema),
1521 });
1622 export type MissionSpec = z.infer<typeof MissionSpecSchema>;
1723
1824 export const TopLevelSchema = z.object({
19- "mission_specs": z.record(z.string(), MissionSpecSchema),
25+ "mission_specs": mapSchema(MissionSpecSchema),
2026 });
2127 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/priority/bug855-short.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelValueSchema = z.object({
511 "channel_id": z.string().regex(/^-?\d+$/),
@@ -10,5 +16,5 @@ export const TopLevelValueSchema = z.object({
1016 });
1117 export type TopLevelValue = z.infer<typeof TopLevelValueSchema>;
1218
13-export const TopLevelSchema = z.record(z.string(), TopLevelValueSchema);
19+export const TopLevelSchema = mapSchema(TopLevelValueSchema);
1420 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/priority/coin-pairs.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const PairSchema = z.object({
511 "decimal_places": z.number().int(),
@@ -14,7 +20,7 @@ export const PairSchema = z.object({
1420 export type Pair = z.infer<typeof PairSchema>;
1521
1622 export const TopLevelSchema = z.object({
17- "pairs": z.record(z.string(), PairSchema),
23+ "pairs": mapSchema(PairSchema),
1824 "server_time": z.number().int(),
1925 });
2026 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/priority/combinations1.json

2 generated files · +30 −18
Mtypescript-zoddefault / TopLevel.ts+15 −9
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const CerographClassSchema = z.object({
511 "apotropaion": z.null(),
@@ -306,18 +312,18 @@ export const TopLevelSchema = z.object({
306312 "citrated": z.number().int(),
307313 "clinodome": z.array(z.union([z.number(), z.string()])),
308314 "coadjust": z.array(z.union([CoadjustClassSchema, z.number()])),
309- "consilience": z.array(z.union([z.number(), z.record(z.string(), z.number().int())])),
310- "constructor": z.array(z.union([z.boolean(), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
311- "continuative": z.array(z.union([z.record(z.string(), z.number().int()), z.string()])),
315+ "consilience": z.array(z.union([z.number(), mapSchema(z.number().int())])),
316+ "constructor": z.array(z.union([z.boolean(), mapSchema(z.union([z.null(), z.number().int()]))])),
317+ "continuative": z.array(z.union([mapSchema(z.number().int()), z.string()])),
312318 "credulity": z.array(z.union([CredulityClassSchema, z.number().int(), z.string()])),
313- "creviced": z.array(z.union([z.boolean(), z.record(z.string(), z.number().int()), z.string()])),
319+ "creviced": z.array(z.union([z.boolean(), mapSchema(z.number().int()), z.string()])),
314320 "cubiculum": z.array(z.array(z.union([z.null(), z.number().int()]))),
315321 "deruralize": z.array(z.union([z.array(z.null()), z.boolean(), DeruralizeClassSchema])),
316322 "diaereses": z.array(z.union([z.array(z.number().int()), z.boolean(), DiaereseClassSchema])),
317323 "dissolution": z.array(z.union([z.null(), z.array(z.null())])),
318324 "downstroke": z.array(z.union([z.array(z.null()), z.boolean(), z.string()])),
319325 "electrotautomerism": z.array(z.union([z.null(), z.number()])),
320- "eleutheromania": z.array(z.union([z.number(), z.record(z.string(), z.number().int()), z.string()])),
326+ "eleutheromania": z.array(z.union([z.number(), mapSchema(z.number().int()), z.string()])),
321327 "encrust": EncrustSchema,
322328 "entomoid": z.array(z.union([CimeliaClassSchema, z.number().int()])),
323329 "epipaleolithic": z.array(z.union([z.array(z.number().int()), z.number()])),
@@ -327,10 +333,10 @@ export const TopLevelSchema = z.object({
327333 "flagmaking": z.array(z.union([z.boolean(), FlagmakingClassSchema, z.number()])),
328334 "fluorometer": z.array(z.union([z.null(), z.number().int(), z.string()])),
329335 "fulsome": z.array(z.union([z.null(), z.number().int()])),
330- "fuzzy": z.array(z.union([z.number().int(), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
336+ "fuzzy": z.array(z.union([z.number().int(), mapSchema(z.union([z.null(), z.number().int()]))])),
331337 "gardenwards": z.array(z.union([z.array(z.number().int()), z.boolean(), z.string()])),
332- "generalissimo": z.array(z.union([z.null(), z.boolean(), z.record(z.string(), z.number().int())])),
333- "habeas": z.array(z.union([z.null(), z.record(z.string(), z.number().int())])),
338+ "generalissimo": z.array(z.union([z.null(), z.boolean(), mapSchema(z.number().int())])),
339+ "habeas": z.array(z.union([z.null(), mapSchema(z.number().int())])),
334340 "hemicrystalline": z.array(z.union([CimeliaClassSchema, z.string()])),
335341 "hemocoele": z.array(z.union([z.array(z.number().int()), HemocoeleClassSchema])),
336342 "hoister": z.array(z.union([z.null(), CimeliaClassSchema, z.string()])),
@@ -341,6 +347,6 @@ export const TopLevelSchema = z.object({
341347 "intentiveness": z.array(z.union([CimeliaClassSchema, z.number(), z.string()])),
342348 "interacinar": InteracinarSchema,
343349 "intercorrelation": z.array(z.union([z.null(), z.array(z.number().int())])),
344- "jacutinga": z.array(z.union([z.array(z.number().int()), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
350+ "jacutinga": z.array(z.union([z.array(z.number().int()), mapSchema(z.union([z.null(), z.number().int()]))])),
345351 });
346352 export type TopLevel = z.infer<typeof TopLevelSchema>;
Mtypescript-zodjust-schema-true--8c4ca457bcba / TopLevel.ts+15 −9
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const CerographClassSchema = z.object({
511 "apotropaion": z.null(),
@@ -293,18 +299,18 @@ export const TopLevelSchema = z.object({
293299 "citrated": z.number().int(),
294300 "clinodome": z.array(z.union([z.number(), z.string()])),
295301 "coadjust": z.array(z.union([CoadjustClassSchema, z.number()])),
296- "consilience": z.array(z.union([z.number(), z.record(z.string(), z.number().int())])),
297- "constructor": z.array(z.union([z.boolean(), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
298- "continuative": z.array(z.union([z.record(z.string(), z.number().int()), z.string()])),
302+ "consilience": z.array(z.union([z.number(), mapSchema(z.number().int())])),
303+ "constructor": z.array(z.union([z.boolean(), mapSchema(z.union([z.null(), z.number().int()]))])),
304+ "continuative": z.array(z.union([mapSchema(z.number().int()), z.string()])),
299305 "credulity": z.array(z.union([CredulityClassSchema, z.number().int(), z.string()])),
300- "creviced": z.array(z.union([z.boolean(), z.record(z.string(), z.number().int()), z.string()])),
306+ "creviced": z.array(z.union([z.boolean(), mapSchema(z.number().int()), z.string()])),
301307 "cubiculum": z.array(z.array(z.union([z.null(), z.number().int()]))),
302308 "deruralize": z.array(z.union([z.array(z.null()), z.boolean(), DeruralizeClassSchema])),
303309 "diaereses": z.array(z.union([z.array(z.number().int()), z.boolean(), DiaereseClassSchema])),
304310 "dissolution": z.array(z.union([z.null(), z.array(z.null())])),
305311 "downstroke": z.array(z.union([z.array(z.null()), z.boolean(), z.string()])),
306312 "electrotautomerism": z.array(z.union([z.null(), z.number()])),
307- "eleutheromania": z.array(z.union([z.number(), z.record(z.string(), z.number().int()), z.string()])),
313+ "eleutheromania": z.array(z.union([z.number(), mapSchema(z.number().int()), z.string()])),
308314 "encrust": EncrustSchema,
309315 "entomoid": z.array(z.union([CimeliaClassSchema, z.number().int()])),
310316 "epipaleolithic": z.array(z.union([z.array(z.number().int()), z.number()])),
@@ -314,10 +320,10 @@ export const TopLevelSchema = z.object({
314320 "flagmaking": z.array(z.union([z.boolean(), FlagmakingClassSchema, z.number()])),
315321 "fluorometer": z.array(z.union([z.null(), z.number().int(), z.string()])),
316322 "fulsome": z.array(z.union([z.null(), z.number().int()])),
317- "fuzzy": z.array(z.union([z.number().int(), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
323+ "fuzzy": z.array(z.union([z.number().int(), mapSchema(z.union([z.null(), z.number().int()]))])),
318324 "gardenwards": z.array(z.union([z.array(z.number().int()), z.boolean(), z.string()])),
319- "generalissimo": z.array(z.union([z.null(), z.boolean(), z.record(z.string(), z.number().int())])),
320- "habeas": z.array(z.union([z.null(), z.record(z.string(), z.number().int())])),
325+ "generalissimo": z.array(z.union([z.null(), z.boolean(), mapSchema(z.number().int())])),
326+ "habeas": z.array(z.union([z.null(), mapSchema(z.number().int())])),
321327 "hemicrystalline": z.array(z.union([CimeliaClassSchema, z.string()])),
322328 "hemocoele": z.array(z.union([z.array(z.number().int()), HemocoeleClassSchema])),
323329 "hoister": z.array(z.union([z.null(), CimeliaClassSchema, z.string()])),
@@ -328,5 +334,5 @@ export const TopLevelSchema = z.object({
328334 "intentiveness": z.array(z.union([CimeliaClassSchema, z.number(), z.string()])),
329335 "interacinar": InteracinarSchema,
330336 "intercorrelation": z.array(z.union([z.null(), z.array(z.number().int())])),
331- "jacutinga": z.array(z.union([z.array(z.number().int()), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
337+ "jacutinga": z.array(z.union([z.array(z.number().int()), mapSchema(z.union([z.null(), z.number().int()]))])),
332338 });
Test case

test/inputs/json/priority/combinations2.json

2 generated files · +36 −24
Mtypescript-zoddefault / TopLevel.ts+18 −12
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const AlleviateClassSchema = z.object({
511 "apriori": z.null(),
@@ -243,8 +249,8 @@ export type OskarClass = z.infer<typeof OskarClassSchema>;
243249
244250 export const TopLevelSchema = z.object({
245251 "Abranchiata": z.array(z.union([z.null(), z.array(z.number().int()), z.number().int()])),
246- "academe": z.array(z.union([z.array(z.number().int()), z.number().int(), z.record(z.string(), z.number().int())])),
247- "acquirable": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), z.record(z.string(), z.number().int())])),
252+ "academe": z.array(z.union([z.array(z.number().int()), z.number().int(), mapSchema(z.number().int())])),
253+ "acquirable": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), mapSchema(z.number().int())])),
248254 "aerometry": z.array(z.union([z.boolean(), z.number()])),
249255 "alexin": z.array(z.union([z.array(z.number().int()), z.boolean()])),
250256 "alleviate": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), AlleviateClassSchema])),
@@ -253,39 +259,39 @@ export const TopLevelSchema = z.object({
253259 "amphithyron": z.array(z.union([z.null(), AmphithyronSchema])),
254260 "Andriana": z.array(z.union([z.null(), z.string()])),
255261 "ankee": z.array(z.union([z.array(z.number().int()), AnkeeClassSchema, z.number().int()])),
256- "annihilator": z.array(z.union([z.null(), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
262+ "annihilator": z.array(z.union([z.null(), mapSchema(z.union([z.null(), z.number().int()]))])),
257263 "annulose": z.null(),
258264 "Ansarie": z.array(z.union([z.null(), z.array(z.number().int()), AnsarieClassSchema])),
259265 "aphasia": z.array(z.union([z.array(z.number().int()), z.number().int()])),
260266 "asprawl": z.array(z.union([z.number(), z.string()])),
261267 "attractive": z.array(z.union([z.null(), z.boolean()])),
262- "barksome": z.record(z.string(), z.number().int()),
268+ "barksome": mapSchema(z.number().int()),
263269 "bedesman": z.array(z.union([z.boolean(), z.number(), z.string()])),
264270 "belard": z.array(z.union([z.array(z.number().int()), RebeccaSchema, z.number()])),
265- "bocking": z.array(z.union([z.array(z.number().int()), z.boolean(), z.record(z.string(), z.number().int())])),
266- "brawlingly": z.array(z.union([z.array(z.null()), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
271+ "bocking": z.array(z.union([z.array(z.number().int()), z.boolean(), mapSchema(z.number().int())])),
272+ "brawlingly": z.array(z.union([z.array(z.null()), mapSchema(z.union([z.null(), z.number().int()]))])),
267273 "brookie": z.array(z.union([z.array(z.number().int()), RebeccaSchema])),
268274 "bumboatman": z.array(z.union([z.null(), z.array(z.null()), z.string()])),
269275 "bystreet": z.array(z.null()),
270276 "calaverite": z.array(z.union([z.array(z.number().int()), z.string()])),
271- "catallactic": z.array(z.union([z.array(z.null()), z.boolean(), z.record(z.string(), z.number().int())])),
272- "cemental": z.array(z.union([z.array(z.number().int()), z.number(), z.record(z.string(), z.number().int())])),
277+ "catallactic": z.array(z.union([z.array(z.null()), z.boolean(), mapSchema(z.number().int())])),
278+ "cemental": z.array(z.union([z.array(z.number().int()), z.number(), mapSchema(z.number().int())])),
273279 "Chytridiaceae": z.array(z.union([z.null(), z.boolean(), ChytridiaceaeClassSchema])),
274280 "Discordia": z.array(z.union([z.array(z.number().int()), DiscordiaClassSchema])),
275281 "Endomyces": z.array(z.union([z.number().int(), z.string()])),
276282 "Epinephelidae": z.array(z.union([z.boolean(), z.number().int(), z.string()])),
277- "Eupatorium": z.array(z.union([z.array(z.null()), z.record(z.string(), z.number().int())])),
283+ "Eupatorium": z.array(z.union([z.array(z.null()), mapSchema(z.number().int())])),
278284 "Gryphosaurus": z.array(z.union([z.array(z.number().int()), GryphosaurusClassSchema, z.string()])),
279- "Koryak": z.array(z.union([z.record(z.string(), z.union([z.null(), z.number().int()])), z.string()])),
285+ "Koryak": z.array(z.union([mapSchema(z.union([z.null(), z.number().int()])), z.string()])),
280286 "Lavinia": z.array(z.union([LaviniaClassSchema, z.string()])),
281287 "Oskar": z.array(z.union([z.array(z.number().int()), OskarClassSchema])),
282288 "Rebecca": z.array(z.union([RebeccaSchema, z.number().int(), z.string()])),
283289 "Rhomboganoidei": z.array(z.union([z.array(z.number().int()), RebeccaSchema, z.string()])),
284290 "Rigsmal": z.boolean(),
285291 "Ruellia": z.array(z.union([z.boolean(), RebeccaSchema, z.string()])),
286- "School": z.array(z.union([z.null(), z.number().int(), z.record(z.string(), z.number().int())])),
292+ "School": z.array(z.union([z.null(), z.number().int(), mapSchema(z.number().int())])),
287293 "Shakespearolater": z.array(z.union([z.array(z.number().int()), z.number(), z.string()])),
288294 "Svan": z.array(z.number()),
289- "Wayao": z.record(z.string(), z.number()),
295+ "Wayao": mapSchema(z.number()),
290296 });
291297 export type TopLevel = z.infer<typeof TopLevelSchema>;
Mtypescript-zodjust-schema-true--8c4ca457bcba / TopLevel.ts+18 −12
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const AlleviateClassSchema = z.object({
511 "apriori": z.null(),
@@ -233,8 +239,8 @@ export const OskarClassSchema = z.object({
233239
234240 export const TopLevelSchema = z.object({
235241 "Abranchiata": z.array(z.union([z.null(), z.array(z.number().int()), z.number().int()])),
236- "academe": z.array(z.union([z.array(z.number().int()), z.number().int(), z.record(z.string(), z.number().int())])),
237- "acquirable": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), z.record(z.string(), z.number().int())])),
242+ "academe": z.array(z.union([z.array(z.number().int()), z.number().int(), mapSchema(z.number().int())])),
243+ "acquirable": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), mapSchema(z.number().int())])),
238244 "aerometry": z.array(z.union([z.boolean(), z.number()])),
239245 "alexin": z.array(z.union([z.array(z.number().int()), z.boolean()])),
240246 "alleviate": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), AlleviateClassSchema])),
@@ -243,38 +249,38 @@ export const TopLevelSchema = z.object({
243249 "amphithyron": z.array(z.union([z.null(), AmphithyronSchema])),
244250 "Andriana": z.array(z.union([z.null(), z.string()])),
245251 "ankee": z.array(z.union([z.array(z.number().int()), AnkeeClassSchema, z.number().int()])),
246- "annihilator": z.array(z.union([z.null(), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
252+ "annihilator": z.array(z.union([z.null(), mapSchema(z.union([z.null(), z.number().int()]))])),
247253 "annulose": z.null(),
248254 "Ansarie": z.array(z.union([z.null(), z.array(z.number().int()), AnsarieClassSchema])),
249255 "aphasia": z.array(z.union([z.array(z.number().int()), z.number().int()])),
250256 "asprawl": z.array(z.union([z.number(), z.string()])),
251257 "attractive": z.array(z.union([z.null(), z.boolean()])),
252- "barksome": z.record(z.string(), z.number().int()),
258+ "barksome": mapSchema(z.number().int()),
253259 "bedesman": z.array(z.union([z.boolean(), z.number(), z.string()])),
254260 "belard": z.array(z.union([z.array(z.number().int()), RebeccaSchema, z.number()])),
255- "bocking": z.array(z.union([z.array(z.number().int()), z.boolean(), z.record(z.string(), z.number().int())])),
256- "brawlingly": z.array(z.union([z.array(z.null()), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
261+ "bocking": z.array(z.union([z.array(z.number().int()), z.boolean(), mapSchema(z.number().int())])),
262+ "brawlingly": z.array(z.union([z.array(z.null()), mapSchema(z.union([z.null(), z.number().int()]))])),
257263 "brookie": z.array(z.union([z.array(z.number().int()), RebeccaSchema])),
258264 "bumboatman": z.array(z.union([z.null(), z.array(z.null()), z.string()])),
259265 "bystreet": z.array(z.null()),
260266 "calaverite": z.array(z.union([z.array(z.number().int()), z.string()])),
261- "catallactic": z.array(z.union([z.array(z.null()), z.boolean(), z.record(z.string(), z.number().int())])),
262- "cemental": z.array(z.union([z.array(z.number().int()), z.number(), z.record(z.string(), z.number().int())])),
267+ "catallactic": z.array(z.union([z.array(z.null()), z.boolean(), mapSchema(z.number().int())])),
268+ "cemental": z.array(z.union([z.array(z.number().int()), z.number(), mapSchema(z.number().int())])),
263269 "Chytridiaceae": z.array(z.union([z.null(), z.boolean(), ChytridiaceaeClassSchema])),
264270 "Discordia": z.array(z.union([z.array(z.number().int()), DiscordiaClassSchema])),
265271 "Endomyces": z.array(z.union([z.number().int(), z.string()])),
266272 "Epinephelidae": z.array(z.union([z.boolean(), z.number().int(), z.string()])),
267- "Eupatorium": z.array(z.union([z.array(z.null()), z.record(z.string(), z.number().int())])),
273+ "Eupatorium": z.array(z.union([z.array(z.null()), mapSchema(z.number().int())])),
268274 "Gryphosaurus": z.array(z.union([z.array(z.number().int()), GryphosaurusClassSchema, z.string()])),
269- "Koryak": z.array(z.union([z.record(z.string(), z.union([z.null(), z.number().int()])), z.string()])),
275+ "Koryak": z.array(z.union([mapSchema(z.union([z.null(), z.number().int()])), z.string()])),
270276 "Lavinia": z.array(z.union([LaviniaClassSchema, z.string()])),
271277 "Oskar": z.array(z.union([z.array(z.number().int()), OskarClassSchema])),
272278 "Rebecca": z.array(z.union([RebeccaSchema, z.number().int(), z.string()])),
273279 "Rhomboganoidei": z.array(z.union([z.array(z.number().int()), RebeccaSchema, z.string()])),
274280 "Rigsmal": z.boolean(),
275281 "Ruellia": z.array(z.union([z.boolean(), RebeccaSchema, z.string()])),
276- "School": z.array(z.union([z.null(), z.number().int(), z.record(z.string(), z.number().int())])),
282+ "School": z.array(z.union([z.null(), z.number().int(), mapSchema(z.number().int())])),
277283 "Shakespearolater": z.array(z.union([z.array(z.number().int()), z.number(), z.string()])),
278284 "Svan": z.array(z.number()),
279- "Wayao": z.record(z.string(), z.number()),
285+ "Wayao": mapSchema(z.number()),
280286 });
Test case

test/inputs/json/priority/combinations3.json

2 generated files · +26 −14
Mtypescript-zoddefault / TopLevel.ts+13 −7
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const JurorClassSchema = z.object({
511 "adipsy": z.null(),
@@ -354,7 +360,7 @@ export type PrefreshmanClass = z.infer<typeof PrefreshmanClassSchema>;
354360
355361 export const TopLevelSchema = z.object({
356362 "juror": z.array(z.union([z.boolean(), JurorClassSchema])),
357- "kongoni": z.array(z.union([z.array(z.number().int()), z.record(z.string(), z.number().int())])),
363+ "kongoni": z.array(z.union([z.array(z.number().int()), mapSchema(z.number().int())])),
358364 "ladronism": z.array(z.union([LadronismClassSchema, z.number(), z.string()])),
359365 "landlubberly": z.array(z.union([z.boolean(), LandlubberlyClassSchema, z.number().int()])),
360366 "listener": z.array(z.union([z.array(z.null()), z.number().int()])),
@@ -375,25 +381,25 @@ export const TopLevelSchema = z.object({
375381 "nonvaluation": z.array(z.union([z.array(z.null()), z.boolean(), z.number()])),
376382 "occupationalist": z.array(z.union([z.null(), z.array(z.null()), OccupationalistClassSchema])),
377383 "outrival": z.array(z.union([z.null(), OutrivalClassSchema, z.number()])),
378- "paleographically": z.array(z.union([z.number(), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
379- "pamphletwise": z.array(z.union([z.number().int(), z.record(z.string(), z.number().int()), z.string()])),
384+ "paleographically": z.array(z.union([z.number(), mapSchema(z.union([z.null(), z.number().int()]))])),
385+ "pamphletwise": z.array(z.union([z.number().int(), mapSchema(z.number().int()), z.string()])),
380386 "pediatrics": z.array(z.union([z.null(), z.boolean(), z.number()])),
381387 "perceptive": z.array(z.boolean()),
382388 "piaculum": z.array(z.union([PiaculumClassSchema, z.number()])),
383389 "piccadilly": z.array(z.union([z.null(), z.number(), z.string()])),
384390 "piffler": z.array(z.union([z.array(z.null()), MonaziteClassSchema])),
385391 "pithful": z.array(z.union([z.null(), z.boolean(), z.number().int()])),
386- "placuntitis": z.array(z.union([z.number().int(), z.record(z.string(), z.number().int())])),
387- "plectopterous": z.array(z.union([z.number(), z.record(z.string(), z.number().int())])),
392+ "placuntitis": z.array(z.union([z.number().int(), mapSchema(z.number().int())])),
393+ "plectopterous": z.array(z.union([z.number(), mapSchema(z.number().int())])),
388394 "pneumocele": z.array(z.union([z.null(), PneumoceleSchema])),
389395 "poliorcetic": z.array(z.union([z.boolean(), MonaziteClassSchema])),
390- "poormaster": z.array(z.union([z.null(), z.array(z.number().int()), z.record(z.string(), z.number().int())])),
396+ "poormaster": z.array(z.union([z.null(), z.array(z.number().int()), mapSchema(z.number().int())])),
391397 "potwhisky": z.array(z.union([z.null(), PotwhiskyClassSchema, z.number().int()])),
392398 "practicalizer": z.array(z.union([z.array(z.null()), MonaziteClassSchema, z.string()])),
393399 "prefreshman": z.array(z.union([z.array(z.null()), PrefreshmanClassSchema, z.string()])),
394400 "prehensility": z.array(z.union([z.array(z.null()), z.boolean(), MonaziteClassSchema])),
395401 "prevoidance": z.array(z.union([z.array(z.number().int()), MonaziteClassSchema, z.number().int()])),
396- "probant": z.array(z.record(z.string(), z.union([z.null(), z.number().int()]))),
402+ "probant": z.array(mapSchema(z.union([z.null(), z.number().int()]))),
397403 "protext": z.array(z.union([z.array(z.number().int()), z.boolean(), MonaziteClassSchema])),
398404 });
399405 export type TopLevel = z.infer<typeof TopLevelSchema>;
Mtypescript-zodjust-schema-true--8c4ca457bcba / TopLevel.ts+13 −7
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const JurorClassSchema = z.object({
511 "adipsy": z.null(),
@@ -340,7 +346,7 @@ export const PrefreshmanClassSchema = z.object({
340346
341347 export const TopLevelSchema = z.object({
342348 "juror": z.array(z.union([z.boolean(), JurorClassSchema])),
343- "kongoni": z.array(z.union([z.array(z.number().int()), z.record(z.string(), z.number().int())])),
349+ "kongoni": z.array(z.union([z.array(z.number().int()), mapSchema(z.number().int())])),
344350 "ladronism": z.array(z.union([LadronismClassSchema, z.number(), z.string()])),
345351 "landlubberly": z.array(z.union([z.boolean(), LandlubberlyClassSchema, z.number().int()])),
346352 "listener": z.array(z.union([z.array(z.null()), z.number().int()])),
@@ -361,24 +367,24 @@ export const TopLevelSchema = z.object({
361367 "nonvaluation": z.array(z.union([z.array(z.null()), z.boolean(), z.number()])),
362368 "occupationalist": z.array(z.union([z.null(), z.array(z.null()), OccupationalistClassSchema])),
363369 "outrival": z.array(z.union([z.null(), OutrivalClassSchema, z.number()])),
364- "paleographically": z.array(z.union([z.number(), z.record(z.string(), z.union([z.null(), z.number().int()]))])),
365- "pamphletwise": z.array(z.union([z.number().int(), z.record(z.string(), z.number().int()), z.string()])),
370+ "paleographically": z.array(z.union([z.number(), mapSchema(z.union([z.null(), z.number().int()]))])),
371+ "pamphletwise": z.array(z.union([z.number().int(), mapSchema(z.number().int()), z.string()])),
366372 "pediatrics": z.array(z.union([z.null(), z.boolean(), z.number()])),
367373 "perceptive": z.array(z.boolean()),
368374 "piaculum": z.array(z.union([PiaculumClassSchema, z.number()])),
369375 "piccadilly": z.array(z.union([z.null(), z.number(), z.string()])),
370376 "piffler": z.array(z.union([z.array(z.null()), MonaziteClassSchema])),
371377 "pithful": z.array(z.union([z.null(), z.boolean(), z.number().int()])),
372- "placuntitis": z.array(z.union([z.number().int(), z.record(z.string(), z.number().int())])),
373- "plectopterous": z.array(z.union([z.number(), z.record(z.string(), z.number().int())])),
378+ "placuntitis": z.array(z.union([z.number().int(), mapSchema(z.number().int())])),
379+ "plectopterous": z.array(z.union([z.number(), mapSchema(z.number().int())])),
374380 "pneumocele": z.array(z.union([z.null(), PneumoceleSchema])),
375381 "poliorcetic": z.array(z.union([z.boolean(), MonaziteClassSchema])),
376- "poormaster": z.array(z.union([z.null(), z.array(z.number().int()), z.record(z.string(), z.number().int())])),
382+ "poormaster": z.array(z.union([z.null(), z.array(z.number().int()), mapSchema(z.number().int())])),
377383 "potwhisky": z.array(z.union([z.null(), PotwhiskyClassSchema, z.number().int()])),
378384 "practicalizer": z.array(z.union([z.array(z.null()), MonaziteClassSchema, z.string()])),
379385 "prefreshman": z.array(z.union([z.array(z.null()), PrefreshmanClassSchema, z.string()])),
380386 "prehensility": z.array(z.union([z.array(z.null()), z.boolean(), MonaziteClassSchema])),
381387 "prevoidance": z.array(z.union([z.array(z.number().int()), MonaziteClassSchema, z.number().int()])),
382- "probant": z.array(z.record(z.string(), z.union([z.null(), z.number().int()]))),
388+ "probant": z.array(mapSchema(z.union([z.null(), z.number().int()]))),
383389 "protext": z.array(z.union([z.array(z.number().int()), z.boolean(), MonaziteClassSchema])),
384390 });
Test case

test/inputs/json/priority/combinations4.json

2 generated files · +34 −22
Mtypescript-zoddefault / TopLevel.ts+17 −11
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const PulpitismClassSchema = z.object({
511 "abnet": z.null(),
@@ -405,7 +411,7 @@ export const TopLevelSchema = z.object({
405411 "pulpitism": z.array(z.union([z.array(z.number().int()), PulpitismClassSchema, z.number()])),
406412 "pyodermia": z.array(z.union([PyodermiaClassSchema, z.number().int()])),
407413 "quebrachine": z.array(z.union([z.null(), z.boolean(), QuebrachineClassSchema])),
408- "querier": z.array(z.union([z.boolean(), z.record(z.string(), z.number().int())])),
414+ "querier": z.array(z.union([z.boolean(), mapSchema(z.number().int())])),
409415 "rebarbative": z.array(z.union([z.array(z.number().int()), z.boolean(), z.number()])),
410416 "reimagine": z.array(ReimagineSchema),
411417 "ressaut": RessautSchema,
@@ -414,10 +420,10 @@ export const TopLevelSchema = z.object({
414420 "rewrite": z.array(z.union([z.array(z.null()), RewriteClassSchema, z.number()])),
415421 "saccoderm": z.array(z.union([z.null(), z.array(z.number().int()), z.string()])),
416422 "santir": z.array(z.union([SantirClassSchema, z.number()])),
417- "saprophilous": z.array(z.union([z.null(), z.record(z.string(), z.number().int()), z.string()])),
423+ "saprophilous": z.array(z.union([z.null(), mapSchema(z.number().int()), z.string()])),
418424 "saxten": z.array(z.union([SaxtenClassSchema, z.string()])),
419425 "scatty": z.array(z.union([z.null(), ScattySchema])),
420- "scoffer": z.array(z.union([z.null(), z.array(z.null()), z.record(z.string(), z.number().int())])),
426+ "scoffer": z.array(z.union([z.null(), z.array(z.null()), mapSchema(z.number().int())])),
421427 "scrampum": z.array(z.union([z.null(), z.array(z.number().int()), z.boolean()])),
422428 "semantic": z.number(),
423429 "serpentinic": z.array(z.union([z.array(z.number().int()), z.number()])),
@@ -425,7 +431,7 @@ export const TopLevelSchema = z.object({
425431 "sistering": z.array(z.union([z.array(z.null()), SisteringClassSchema, z.number().int()])),
426432 "staghunting": z.array(StaghuntingSchema),
427433 "stagmometer": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), z.string()])),
428- "stimulability": z.array(z.union([z.boolean(), z.number().int(), z.record(z.string(), z.number().int())])),
434+ "stimulability": z.array(z.union([z.boolean(), z.number().int(), mapSchema(z.number().int())])),
429435 "strangleable": z.array(z.union([z.array(z.null()), z.number()])),
430436 "strenuosity": z.array(z.union([z.array(z.null()), StrenuosityClassSchema])),
431437 "tabaxir": z.array(z.union([z.boolean(), z.number()])),
@@ -435,22 +441,22 @@ export const TopLevelSchema = z.object({
435441 "tortricine": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), QuebrachineClassSchema])),
436442 "truantcy": z.array(z.union([z.boolean(), TruantcyClassSchema])),
437443 "turgesce": z.array(z.string()),
438- "unbeginning": z.array(z.union([z.array(z.null()), z.record(z.string(), z.number().int()), z.string()])),
444+ "unbeginning": z.array(z.union([z.array(z.null()), mapSchema(z.number().int()), z.string()])),
439445 "underdunged": z.array(z.number()),
440- "undesirability": z.array(z.union([z.array(z.number().int()), z.record(z.string(), z.number().int()), z.string()])),
441- "unerasing": z.array(z.union([z.array(z.null()), z.number().int(), z.record(z.string(), z.number().int())])),
446+ "undesirability": z.array(z.union([z.array(z.number().int()), mapSchema(z.number().int()), z.string()])),
447+ "unerasing": z.array(z.union([z.array(z.null()), z.number().int(), mapSchema(z.number().int())])),
442448 "unguentarium": z.array(z.union([z.null(), z.array(z.null()), z.number().int()])),
443449 "unimpeachably": z.array(z.union([z.boolean(), UnimpeachablyClassSchema])),
444- "unmortgaged": z.array(z.union([z.null(), z.number(), z.record(z.string(), z.number().int())])),
450+ "unmortgaged": z.array(z.union([z.null(), z.number(), mapSchema(z.number().int())])),
445451 "unobstructed": z.array(z.union([z.null(), QuebrachineClassSchema, z.number().int()])),
446452 "unreceptivity": z.array(z.union([z.array(z.null()), z.number().int(), z.string()])),
447453 "unsatisfactoriness": z.array(z.union([z.array(z.number().int()), z.boolean(), z.number().int()])),
448454 "unsecurity": z.array(z.number().int()),
449455 "unstressed": z.array(z.union([z.boolean(), UnstressedClassSchema, z.string()])),
450- "untasked": z.array(z.union([z.array(z.null()), z.number(), z.record(z.string(), z.number().int())])),
451- "unvarying": z.array(z.union([z.boolean(), z.number(), z.record(z.string(), z.number().int())])),
456+ "untasked": z.array(z.union([z.array(z.null()), z.number(), mapSchema(z.number().int())])),
457+ "unvarying": z.array(z.union([z.boolean(), z.number(), mapSchema(z.number().int())])),
452458 "vehemently": z.array(z.union([z.null(), z.array(z.null()), z.boolean()])),
453- "warriorship": z.record(z.string(), z.boolean()),
459+ "warriorship": mapSchema(z.boolean()),
454460 "whitepot": z.array(z.union([QuebrachineClassSchema, z.number()])),
455461 "wrothy": z.array(z.union([z.array(z.null()), WrothyClassSchema])),
456462 });
Mtypescript-zodjust-schema-true--8c4ca457bcba / TopLevel.ts+17 −11
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const PulpitismClassSchema = z.object({
511 "abnet": z.null(),
@@ -389,7 +395,7 @@ export const TopLevelSchema = z.object({
389395 "pulpitism": z.array(z.union([z.array(z.number().int()), PulpitismClassSchema, z.number()])),
390396 "pyodermia": z.array(z.union([PyodermiaClassSchema, z.number().int()])),
391397 "quebrachine": z.array(z.union([z.null(), z.boolean(), QuebrachineClassSchema])),
392- "querier": z.array(z.union([z.boolean(), z.record(z.string(), z.number().int())])),
398+ "querier": z.array(z.union([z.boolean(), mapSchema(z.number().int())])),
393399 "rebarbative": z.array(z.union([z.array(z.number().int()), z.boolean(), z.number()])),
394400 "reimagine": z.array(ReimagineSchema),
395401 "ressaut": RessautSchema,
@@ -398,10 +404,10 @@ export const TopLevelSchema = z.object({
398404 "rewrite": z.array(z.union([z.array(z.null()), RewriteClassSchema, z.number()])),
399405 "saccoderm": z.array(z.union([z.null(), z.array(z.number().int()), z.string()])),
400406 "santir": z.array(z.union([SantirClassSchema, z.number()])),
401- "saprophilous": z.array(z.union([z.null(), z.record(z.string(), z.number().int()), z.string()])),
407+ "saprophilous": z.array(z.union([z.null(), mapSchema(z.number().int()), z.string()])),
402408 "saxten": z.array(z.union([SaxtenClassSchema, z.string()])),
403409 "scatty": z.array(z.union([z.null(), ScattySchema])),
404- "scoffer": z.array(z.union([z.null(), z.array(z.null()), z.record(z.string(), z.number().int())])),
410+ "scoffer": z.array(z.union([z.null(), z.array(z.null()), mapSchema(z.number().int())])),
405411 "scrampum": z.array(z.union([z.null(), z.array(z.number().int()), z.boolean()])),
406412 "semantic": z.number(),
407413 "serpentinic": z.array(z.union([z.array(z.number().int()), z.number()])),
@@ -409,7 +415,7 @@ export const TopLevelSchema = z.object({
409415 "sistering": z.array(z.union([z.array(z.null()), SisteringClassSchema, z.number().int()])),
410416 "staghunting": z.array(StaghuntingSchema),
411417 "stagmometer": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), z.string()])),
412- "stimulability": z.array(z.union([z.boolean(), z.number().int(), z.record(z.string(), z.number().int())])),
418+ "stimulability": z.array(z.union([z.boolean(), z.number().int(), mapSchema(z.number().int())])),
413419 "strangleable": z.array(z.union([z.array(z.null()), z.number()])),
414420 "strenuosity": z.array(z.union([z.array(z.null()), StrenuosityClassSchema])),
415421 "tabaxir": z.array(z.union([z.boolean(), z.number()])),
@@ -419,22 +425,22 @@ export const TopLevelSchema = z.object({
419425 "tortricine": z.array(z.union([z.array(z.union([z.null(), z.number().int()])), QuebrachineClassSchema])),
420426 "truantcy": z.array(z.union([z.boolean(), TruantcyClassSchema])),
421427 "turgesce": z.array(z.string()),
422- "unbeginning": z.array(z.union([z.array(z.null()), z.record(z.string(), z.number().int()), z.string()])),
428+ "unbeginning": z.array(z.union([z.array(z.null()), mapSchema(z.number().int()), z.string()])),
423429 "underdunged": z.array(z.number()),
424- "undesirability": z.array(z.union([z.array(z.number().int()), z.record(z.string(), z.number().int()), z.string()])),
425- "unerasing": z.array(z.union([z.array(z.null()), z.number().int(), z.record(z.string(), z.number().int())])),
430+ "undesirability": z.array(z.union([z.array(z.number().int()), mapSchema(z.number().int()), z.string()])),
431+ "unerasing": z.array(z.union([z.array(z.null()), z.number().int(), mapSchema(z.number().int())])),
426432 "unguentarium": z.array(z.union([z.null(), z.array(z.null()), z.number().int()])),
427433 "unimpeachably": z.array(z.union([z.boolean(), UnimpeachablyClassSchema])),
428- "unmortgaged": z.array(z.union([z.null(), z.number(), z.record(z.string(), z.number().int())])),
434+ "unmortgaged": z.array(z.union([z.null(), z.number(), mapSchema(z.number().int())])),
429435 "unobstructed": z.array(z.union([z.null(), QuebrachineClassSchema, z.number().int()])),
430436 "unreceptivity": z.array(z.union([z.array(z.null()), z.number().int(), z.string()])),
431437 "unsatisfactoriness": z.array(z.union([z.array(z.number().int()), z.boolean(), z.number().int()])),
432438 "unsecurity": z.array(z.number().int()),
433439 "unstressed": z.array(z.union([z.boolean(), UnstressedClassSchema, z.string()])),
434- "untasked": z.array(z.union([z.array(z.null()), z.number(), z.record(z.string(), z.number().int())])),
435- "unvarying": z.array(z.union([z.boolean(), z.number(), z.record(z.string(), z.number().int())])),
440+ "untasked": z.array(z.union([z.array(z.null()), z.number(), mapSchema(z.number().int())])),
441+ "unvarying": z.array(z.union([z.boolean(), z.number(), mapSchema(z.number().int())])),
436442 "vehemently": z.array(z.union([z.null(), z.array(z.null()), z.boolean()])),
437- "warriorship": z.record(z.string(), z.boolean()),
443+ "warriorship": mapSchema(z.boolean()),
438444 "whitepot": z.array(z.union([QuebrachineClassSchema, z.number()])),
439445 "wrothy": z.array(z.union([z.array(z.null()), WrothyClassSchema])),
440446 });
Test case

test/inputs/json/priority/nbl-stats.json

1 generated file · +18 −12
Mtypescript-zoddefault / TopLevel.ts+18 −12
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const LeaddatumEnumSchema = z.enum([
511 "",
@@ -256,20 +262,20 @@ export const PlSchema = z.object({
256262 export type Pl = z.infer<typeof PlSchema>;
257263
258264 export const TotalldsSchema = z.object({
259- "sAssists": z.record(z.string(), ScorerSchema),
260- "sBlocks": z.record(z.string(), ScorerSchema),
261- "sPoints": z.record(z.string(), ScorerSchema),
262- "sReboundsTotal": z.record(z.string(), ScorerSchema),
263- "sSteals": z.record(z.string(), ScorerSchema),
265+ "sAssists": mapSchema(ScorerSchema),
266+ "sBlocks": mapSchema(ScorerSchema),
267+ "sPoints": mapSchema(ScorerSchema),
268+ "sReboundsTotal": mapSchema(ScorerSchema),
269+ "sSteals": mapSchema(ScorerSchema),
264270 });
265271 export type Totallds = z.infer<typeof TotalldsSchema>;
266272
267273 export const LdsSchema = z.object({
268- "sAssists": z.record(z.string(), ScorerSchema),
274+ "sAssists": mapSchema(ScorerSchema),
269275 "sBlocks": SBlocksSchema,
270- "sPoints": z.record(z.string(), ScorerSchema),
271- "sReboundsTotal": z.record(z.string(), ScorerSchema),
272- "sSteals": z.record(z.string(), ScorerSchema),
276+ "sPoints": mapSchema(ScorerSchema),
277+ "sReboundsTotal": mapSchema(ScorerSchema),
278+ "sSteals": mapSchema(ScorerSchema),
273279 });
274280 export type Lds = z.infer<typeof LdsSchema>;
275281
@@ -286,7 +292,7 @@ export const TmSchema = z.object({
286292 "p2_score": z.number().int(),
287293 "p3_score": z.number().int(),
288294 "p4_score": z.number().int(),
289- "pl": z.record(z.string(), PlSchema),
295+ "pl": mapSchema(PlSchema),
290296 "score": z.number().int(),
291297 "scoring": z.array(ScorerSchema),
292298 "shortName": z.string(),
@@ -358,9 +364,9 @@ export const TopLevelSchema = z.object({
358364 "periodLengthREGULAR": z.number().int(),
359365 "periodType": PerTypeSchema,
360366 "periodsMax": z.number().int(),
361- "scorers": z.record(z.string(), z.array(ScorerSchema)),
367+ "scorers": mapSchema(z.array(ScorerSchema)),
362368 "timeline": z.array(z.any()),
363- "tm": z.record(z.string(), TmSchema),
369+ "tm": mapSchema(TmSchema),
364370 "totalTimeAdded": z.number().int(),
365371 "totallds": TotalldsSchema,
366372 });
Test case

test/inputs/json/priority/nested-objects.json

1 generated file · +8 −2
Mtypescript-zoddefault / TopLevel.ts+8 −2
@@ -1,8 +1,14 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
5- "a": z.record(z.string(), z.number().int()),
6- "b": z.record(z.string(), z.number().int()),
11+ "a": mapSchema(z.number().int()),
12+ "b": mapSchema(z.number().int()),
713 });
814 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/priority/number-map.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,7 +1,13 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
5- "foo": z.record(z.string(), z.number()),
11+ "foo": mapSchema(z.number()),
612 });
713 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/json/samples/kitchen-sink.json

1 generated file · +8 −2
Mtypescript-zoddefault / TopLevel.ts+8 −2
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const DifferentThingClassSchema = z.object({
511 "name": z.string(),
@@ -25,10 +31,10 @@ export const TopLevelSchema = z.object({
2531 "differentThings": z.array(z.union([DifferentThingClassSchema, z.number().int(), z.string().regex(/^-?\d+$/).transform(Number)])),
2632 "doubleValue": z.number(),
2733 "intValue": z.number().int(),
28- "mapValue": z.record(z.string(), z.union([z.null(), z.number().int()])),
34+ "mapValue": mapSchema(z.union([z.null(), z.number().int()])),
2935 "name with spaces": z.null(),
3036 "nullValue": z.null(),
31- "nullableMapValue": z.record(z.string(), z.union([z.null(), z.number().int()])),
37+ "nullableMapValue": mapSchema(z.union([z.null(), z.number().int()])),
3238 "people": z.array(PersonElementSchema),
3339 "person": PurplePersonSchema,
3440 "stringValue": z.string(),
Test case

test/inputs/json/samples/us-avg-temperatures.json

1 generated file · +7 −1
Mtypescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const DatumSchema = z.object({
511 "anomaly": z.string(),
@@ -16,7 +22,7 @@ export const DescriptionSchema = z.object({
1622 export type Description = z.infer<typeof DescriptionSchema>;
1723
1824 export const TopLevelSchema = z.object({
19- "data": z.record(z.string(), DatumSchema),
25+ "data": mapSchema(DatumSchema),
2026 "description": DescriptionSchema,
2127 });
2228 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/any.schema

1 generated file · +7 −1
Mschema-typescript-zoddefault / TopLevel.ts+7 −1
@@ -1,8 +1,14 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
511 "foo": z.any(),
6- "values": z.record(z.string(), z.any()),
12+ "values": mapSchema(z.any()),
713 });
814 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/class-map-union.schema

1 generated file · +7 −1
Mschema-typescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const UnionClassSchema = z.object({
511 "quux": z.number().int().optional(),
@@ -7,6 +13,6 @@ export const UnionClassSchema = z.object({
713 export type UnionClass = z.infer<typeof UnionClassSchema>;
814
915 export const TopLevelSchema = z.object({
10- "union": z.record(z.string(), z.union([z.boolean(), UnionClassSchema, z.number(), z.string()])).optional(),
16+ "union": mapSchema(z.union([z.boolean(), UnionClassSchema, z.number(), z.string()])).optional(),
1117 });
1218 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/class-with-additional.schema

1 generated file · +7 −1
Mschema-typescript-zoddefault / TopLevel.ts+7 −1
@@ -1,7 +1,13 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
5- "map": z.record(z.string(), z.union([z.boolean(), z.number()])).optional(),
11+ "map": mapSchema(z.union([z.boolean(), z.number()])).optional(),
612 });
713 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/direct-union.schema

1 generated file · +9 −3
Mschema-typescript-zoddefault / TopLevel.ts+9 −3
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const ArrayNodeSchema = z.object({
511 });
@@ -30,8 +36,8 @@ export const ObjectNodeSchema = z.object({
3036 export type ObjectNode = z.infer<typeof ObjectNodeSchema>;
3137
3238 export const ThingSchema = z.object({
33- "optional": z.union([z.null(), z.array(z.any()), z.boolean(), z.number(), z.number().int(), z.record(z.string(), z.any()), z.string()]).optional(),
34- "required": z.union([z.null(), z.array(z.any()), z.boolean(), z.number(), z.number().int(), z.record(z.string(), z.any()), z.string()]),
39+ "optional": z.union([z.null(), z.array(z.any()), z.boolean(), z.number(), z.number().int(), mapSchema(z.any()), z.string()]).optional(),
40+ "required": z.union([z.null(), z.array(z.any()), z.boolean(), z.number(), z.number().int(), mapSchema(z.any()), z.string()]),
3541 });
3642 export type Thing = z.infer<typeof ThingSchema>;
3743
@@ -47,7 +53,7 @@ export const TopLevelSchema = z.object({
4753 "longNode": LongNodeSchema.optional(),
4854 "nullNode": NullNodeSchema.optional(),
4955 "objectNode": ObjectNodeSchema.optional(),
50- "stuff": z.record(z.string(), ThingSchema),
56+ "stuff": mapSchema(ThingSchema),
5157 "textNode": TextNodeSchema.optional(),
5258 });
5359 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/empty-object.schema

1 generated file · +7 −1
Mschema-typescript-zoddefault / TopLevel.ts+7 −1
@@ -1,4 +1,10 @@
11 import * as z from "zod";
22
3-export const TopLevelSchema = z.record(z.string(), z.any());
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
9+export const TopLevelSchema = mapSchema(z.any());
410 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/go-schema-pattern-properties.schema

1 generated file · +7 −1
Mschema-typescript-zoddefault / TopLevel.ts+7 −1
@@ -1,7 +1,13 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const TopLevelSchema = z.object({
5- "map": z.record(z.string(), z.number().int()),
11+ "map": mapSchema(z.number().int()),
612 });
713 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/recursive-union-flattening.schema

1 generated file · +9 −3
Mschema-typescript-zoddefault / TopLevel.ts+9 −3
@@ -1,19 +1,25 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export type XClass = {
511 "x"?: Array<Array<any> | boolean | XClass | number | null | string> | boolean | number | Record<string, any> | null | string;
612 };
713 export const XClassSchema: z.ZodType<XClass> = z.lazy(() =>
814 z.object({
9- "x": z.union([z.null(), z.array(z.union([z.null(), z.array(z.any()), z.boolean(), XClassSchema, z.number(), z.string()])), z.boolean(), z.number(), z.record(z.string(), z.any()), z.string()]).optional(),
15+ "x": z.union([z.null(), z.array(z.union([z.null(), z.array(z.any()), z.boolean(), XClassSchema, z.number(), z.string()])), z.boolean(), z.number(), mapSchema(z.any()), z.string()]).optional(),
1016 })
1117 );
1218
1319 export const TopLevelClassSchema = z.object({
14- "x": z.union([z.null(), z.array(z.union([z.null(), z.array(z.any()), z.boolean(), XClassSchema, z.number(), z.string()])), z.boolean(), z.number(), z.record(z.string(), z.any()), z.string()]).optional(),
20+ "x": z.union([z.null(), z.array(z.union([z.null(), z.array(z.any()), z.boolean(), XClassSchema, z.number(), z.string()])), z.boolean(), z.number(), mapSchema(z.any()), z.string()]).optional(),
1521 });
1622 export type TopLevelClass = z.infer<typeof TopLevelClassSchema>;
1723
18-export const TopLevelSchema = z.union([z.null(), z.array(z.union([z.null(), z.array(z.any()), z.boolean(), TopLevelClassSchema, z.number(), z.string()])), z.boolean(), z.number(), z.number().int(), z.record(z.string(), z.any()), z.string()]);
24+export const TopLevelSchema = z.union([z.null(), z.array(z.union([z.null(), z.array(z.any()), z.boolean(), TopLevelClassSchema, z.number(), z.string()])), z.boolean(), z.number(), z.number().int(), mapSchema(z.any()), z.string()]);
1925 export type TopLevel = z.infer<typeof TopLevelSchema>;
Test case

test/inputs/schema/unevaluated-properties.schema

1 generated file · +7 −1
Mschema-typescript-zoddefault / TopLevel.ts+7 −1
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39
410 export const ClosedClassSchema = z.object({
511 });
@@ -14,7 +20,7 @@ export type Item = z.infer<typeof ItemSchema>;
1420 export const ConfigSchema = z.object({
1521 "closed": z.union([z.null(), z.array(z.any()), z.boolean(), ClosedClassSchema, z.number(), z.number().int(), z.string()]).optional(),
1622 "name": z.string().optional(),
17- "settings": z.record(z.string(), z.array(ItemSchema)).optional(),
23+ "settings": mapSchema(z.array(ItemSchema)).optional(),
1824 });
1925 export type Config = z.infer<typeof ConfigSchema>;
Test case

test/inputs/schema/vega-lite.schema

1 generated file · +17 −11
Mschema-typescript-zoddefault / TopLevel.ts+17 −11
@@ -1,5 +1,11 @@
11 import * as z from "zod";
22
3+const mapSchema = <T extends z.ZodTypeAny>(value: T) =>
4+ z.custom<Record<string, unknown>>(input => z.getParsedType(input) === z.ZodParsedType.object)
5+ .transform(Object.entries)
6+ .pipe(z.array(z.tuple([z.string(), value])))
7+ .transform((entries): Record<string, z.output<T>> => Object.fromEntries(entries));
8+
39 // Determines how size calculation should be performed, one of `"content"` or `"padding"`.
410 // The default setting (`"content"`) interprets the width and height settings as the data
511 // rectangle (plotting) dimensions, to which padding is then added. In contrast, the
@@ -659,7 +665,7 @@ export const SpecSchema: z.ZodType<Spec> = z.lazy(() =>
659665 "encoding": EncodingSchema.optional(),
660666 "mark": z.union([MarkDefSchema, MarkSchema]).optional(),
661667 "projection": ProjectionSchema.optional(),
662- "selection": z.record(z.string(), SelectionDefSchema).optional(),
668+ "selection": mapSchema(SelectionDefSchema).optional(),
663669 "facet": FacetMappingSchema.optional(),
664670 "spec": SpecSchema.optional(),
665671 "repeat": RepeatSchema.optional(),
@@ -697,7 +703,7 @@ export const LayerSpecSchema: z.ZodType<LayerSpec> = z.lazy(() =>
697703 "encoding": EncodingSchema.optional(),
698704 "mark": z.union([MarkDefSchema, MarkSchema]).optional(),
699705 "projection": ProjectionSchema.optional(),
700- "selection": z.record(z.string(), SelectionDefSchema).optional(),
706+ "selection": mapSchema(SelectionDefSchema).optional(),
701707 })
702708 );
703709
@@ -921,7 +927,7 @@ export const ProjectionConfigSchema = z.object({
921927 "fraction": z.number().optional(),
922928 "lobes": z.number().optional(),
923929 "parallel": z.number().optional(),
924- "precision": z.record(z.string(), z.union([z.number(), z.string()])).optional(),
930+ "precision": mapSchema(z.union([z.number(), z.string()])).optional(),
925931 "radius": z.number().optional(),
926932 "ratio": z.number().optional(),
927933 "rotate": z.array(z.number()).optional(),
@@ -1126,7 +1132,7 @@ export const ViewConfigSchema = z.object({
11261132 export type ViewConfig = z.infer<typeof ViewConfigSchema>;
11271133
11281134 export const DataFormatSchema = z.object({
1129- "parse": z.union([ParseEnumSchema, z.record(z.string(), z.any())]).optional(),
1135+ "parse": z.union([ParseEnumSchema, mapSchema(z.any())]).optional(),
11301136 "type": DataFormatTypeSchema.optional(),
11311137 "property": z.string().optional(),
11321138 "feature": z.string().optional(),
@@ -1351,7 +1357,7 @@ export const ProjectionSchema = z.object({
13511357 "fraction": z.number().optional(),
13521358 "lobes": z.number().optional(),
13531359 "parallel": z.number().optional(),
1354- "precision": z.record(z.string(), z.union([z.number(), z.string()])).optional(),
1360+ "precision": mapSchema(z.union([z.number(), z.string()])).optional(),
13551361 "radius": z.number().optional(),
13561362 "ratio": z.number().optional(),
13571363 "rotate": z.array(z.number()).optional(),
@@ -1386,7 +1392,7 @@ export const ScaleResolveMapSchema = z.object({
13861392 export type ScaleResolveMap = z.infer<typeof ScaleResolveMapSchema>;
13871393
13881394 export const SelectionDefSchema = z.object({
1389- "bind": z.union([BindEnumSchema, z.record(z.string(), VgBindingSchema)]).optional(),
1395+ "bind": z.union([BindEnumSchema, mapSchema(VgBindingSchema)]).optional(),
13901396 "empty": EmptySchema.optional(),
13911397 "encodings": z.array(SingleDefChannelSchema).optional(),
13921398 "fields": z.array(z.string()).optional(),
@@ -1437,7 +1443,7 @@ export const IntervalSelectionConfigSchema = z.object({
14371443 export type IntervalSelectionConfig = z.infer<typeof IntervalSelectionConfigSchema>;
14381444
14391445 export const SingleSelectionConfigSchema = z.object({
1440- "bind": z.record(z.string(), VgBindingSchema).optional(),
1446+ "bind": mapSchema(VgBindingSchema).optional(),
14411447 "empty": EmptySchema.optional(),
14421448 "encodings": z.array(SingleDefChannelSchema).optional(),
14431449 "fields": z.array(z.string()).optional(),
@@ -1450,7 +1456,7 @@ export type SingleSelectionConfig = z.infer<typeof SingleSelectionConfigSchema>;
14501456 export const DataSchema = z.object({
14511457 "format": DataFormatSchema.optional(),
14521458 "url": z.string().optional(),
1453- "values": z.union([z.array(z.union([z.boolean(), z.number(), z.record(z.string(), z.any()), z.string()])), z.record(z.string(), z.any()), z.string()]).optional(),
1459+ "values": z.union([z.array(z.union([z.boolean(), z.number(), mapSchema(z.any()), z.string()])), mapSchema(z.any()), z.string()]).optional(),
14541460 "name": z.string().optional(),
14551461 });
14561462 export type Data = z.infer<typeof DataSchema>;
@@ -1604,14 +1610,14 @@ export const ConfigSchema = z.object({
16041610 "padding": z.union([PaddingClassSchema, z.number()]).optional(),
16051611 "point": MarkConfigSchema.optional(),
16061612 "projection": ProjectionConfigSchema.optional(),
1607- "range": z.record(z.string(), z.union([z.array(z.union([z.number(), z.string()])), VgSchemeSchema])).optional(),
1613+ "range": mapSchema(z.union([z.array(z.union([z.number(), z.string()])), VgSchemeSchema])).optional(),
16081614 "rect": MarkConfigSchema.optional(),
16091615 "rule": MarkConfigSchema.optional(),
16101616 "scale": ScaleConfigSchema.optional(),
16111617 "selection": SelectionConfigSchema.optional(),
16121618 "square": MarkConfigSchema.optional(),
16131619 "stack": StackOffsetSchema.optional(),
1614- "style": z.record(z.string(), VgMarkConfigSchema).optional(),
1620+ "style": mapSchema(VgMarkConfigSchema).optional(),
16151621 "text": TextConfigSchema.optional(),
16161622 "tick": TickConfigSchema.optional(),
16171623 "timeFormat": z.string().optional(),
@@ -1683,7 +1689,7 @@ export const TopLevelSchema = z.object({
16831689 "name": z.string().optional(),
16841690 "padding": z.union([PaddingClassSchema, z.number()]).optional(),
16851691 "projection": ProjectionSchema.optional(),
1686- "selection": z.record(z.string(), SelectionDefSchema).optional(),
1692+ "selection": mapSchema(SelectionDefSchema).optional(),
16871693 "title": z.union([TitleParamsSchema, z.string()]).optional(),
16881694 "transform": z.array(TransformSchema).optional(),
16891695 "width": z.number().optional(),
No generated files match these filters.