Skip to content

Commit 088ac95

Browse files
committed
regen schema
1 parent 74b5ec5 commit 088ac95

File tree

4 files changed

+100
-97
lines changed

4 files changed

+100
-97
lines changed

codegen.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ generates:
1313
schema: yup
1414
importFrom: ../types
1515
withObjectType: true
16+
validationSchemaExportType: const
1617
directives:
1718
required:
1819
msg: required
@@ -49,6 +50,7 @@ generates:
4950
schema: zod
5051
importFrom: ../types
5152
withObjectType: true
53+
validationSchemaExportType: const
5254
directives:
5355
# Write directives like
5456
#
@@ -72,6 +74,7 @@ generates:
7274
schema: myzod
7375
importFrom: ../types
7476
withObjectType: true
77+
validationSchemaExportType: const
7578
directives:
7679
constraint:
7780
minLength: min

example/myzod/schemas.ts

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,29 @@
11
import * as myzod from 'myzod'
2-
import { Admin, AttributeInput, ButtonComponentType, ComponentInput, DropDownComponentInput, EventArgumentInput, EventInput, EventOptionType, Guest, HttpInput, HttpMethod, LayoutInput, PageInput, PageType, User } from '../types'
2+
import { PageType, HttpMethod, HttpInput, EventOptionType, EventArgumentInput, EventInput, ComponentInput, DropDownComponentInput, LayoutInput, ButtonComponentType, AttributeInput, PageInput, Guest, Admin, User } from '../types'
33

44
export const definedNonNullAnySchema = myzod.object({});
55

6-
export const ButtonComponentTypeSchema = myzod.enum(ButtonComponentType);
6+
export const PageTypeSchema = myzod.enum(PageType);
7+
8+
export const HttpMethodSchema = myzod.enum(HttpMethod);
79

810
export const EventOptionTypeSchema = myzod.enum(EventOptionType);
911

10-
export const HttpMethodSchema = myzod.enum(HttpMethod);
12+
export const ButtonComponentTypeSchema = myzod.enum(ButtonComponentType);
1113

12-
export const PageTypeSchema = myzod.enum(PageType);
14+
export const HttpInputSchema: myzod.Type<HttpInput> = myzod.object({
15+
method: HttpMethodSchema.optional().nullable(),
16+
url: definedNonNullAnySchema
17+
});
1318

14-
export const AdminSchema: myzod.Type<Admin> = myzod.object({
15-
__typename: myzod.literal('Admin').optional(),
16-
lastModifiedAt: definedNonNullAnySchema.optional().nullable()
19+
export const EventArgumentInputSchema: myzod.Type<EventArgumentInput> = myzod.object({
20+
name: myzod.string().min(5),
21+
value: myzod.string().pattern(/^foo/)
1722
});
1823

19-
export const AttributeInputSchema: myzod.Type<AttributeInput> = myzod.object({
20-
key: myzod.string().optional().nullable(),
21-
val: myzod.string().optional().nullable()
24+
export const EventInputSchema: myzod.Type<EventInput> = myzod.object({
25+
arguments: myzod.array(myzod.lazy(() => EventArgumentInputSchema)),
26+
options: myzod.array(EventOptionTypeSchema).optional().nullable()
2227
});
2328

2429
export const ComponentInputSchema: myzod.Type<ComponentInput> = myzod.object({
@@ -34,30 +39,15 @@ export const DropDownComponentInputSchema: myzod.Type<DropDownComponentInput> =
3439
getEvent: myzod.lazy(() => EventInputSchema)
3540
});
3641

37-
export const EventArgumentInputSchema: myzod.Type<EventArgumentInput> = myzod.object({
38-
name: myzod.string().min(5),
39-
value: myzod.string().pattern(/^foo/)
40-
});
41-
42-
export const EventInputSchema: myzod.Type<EventInput> = myzod.object({
43-
arguments: myzod.array(myzod.lazy(() => EventArgumentInputSchema)),
44-
options: myzod.array(EventOptionTypeSchema).optional().nullable()
45-
});
46-
47-
export const GuestSchema: myzod.Type<Guest> = myzod.object({
48-
__typename: myzod.literal('Guest').optional(),
49-
lastLoggedIn: definedNonNullAnySchema.optional().nullable()
50-
});
51-
52-
export const HttpInputSchema: myzod.Type<HttpInput> = myzod.object({
53-
method: HttpMethodSchema.optional().nullable(),
54-
url: definedNonNullAnySchema
55-
});
56-
5742
export const LayoutInputSchema: myzod.Type<LayoutInput> = myzod.object({
5843
dropdown: myzod.lazy(() => DropDownComponentInputSchema.optional().nullable())
5944
});
6045

46+
export const AttributeInputSchema: myzod.Type<AttributeInput> = myzod.object({
47+
key: myzod.string().optional().nullable(),
48+
val: myzod.string().optional().nullable()
49+
});
50+
6151
export const PageInputSchema: myzod.Type<PageInput> = myzod.object({
6252
attributes: myzod.array(myzod.lazy(() => AttributeInputSchema)).optional().nullable(),
6353
date: definedNonNullAnySchema.optional().nullable(),
@@ -72,6 +62,18 @@ export const PageInputSchema: myzod.Type<PageInput> = myzod.object({
7262
width: myzod.number()
7363
});
7464

65+
export const GuestSchema: myzod.Type<Guest> = myzod.object({
66+
__typename: myzod.literal('Guest').optional(),
67+
lastLoggedIn: definedNonNullAnySchema.optional().nullable()
68+
});
69+
70+
export const AdminSchema: myzod.Type<Admin> = myzod.object({
71+
__typename: myzod.literal('Admin').optional(),
72+
lastModifiedAt: definedNonNullAnySchema.optional().nullable()
73+
});
74+
75+
export const UserKindSchema = myzod.union([AdminSchema, GuestSchema]);
76+
7577
export const UserSchema: myzod.Type<User> = myzod.object({
7678
__typename: myzod.literal('User').optional(),
7779
createdAt: definedNonNullAnySchema.optional().nullable(),
@@ -82,5 +84,3 @@ export const UserSchema: myzod.Type<User> = myzod.object({
8284
password: myzod.string().optional().nullable(),
8385
updatedAt: definedNonNullAnySchema.optional().nullable()
8486
});
85-
86-
export const UserKindSchema = myzod.union([AdminSchema, GuestSchema]);

example/yup/schemas.ts

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,33 @@
11
import * as yup from 'yup'
2-
import { Admin, AttributeInput, ButtonComponentType, ComponentInput, DropDownComponentInput, EventArgumentInput, EventInput, EventOptionType, Guest, HttpInput, HttpMethod, LayoutInput, PageInput, PageType, User, UserKind } from '../types'
2+
import { PageType, HttpMethod, HttpInput, EventOptionType, EventArgumentInput, EventInput, ComponentInput, DropDownComponentInput, LayoutInput, ButtonComponentType, AttributeInput, PageInput, Guest, Admin, UserKind, User } from '../types'
33

4-
export const ButtonComponentTypeSchema = yup.string<ButtonComponentType>().oneOf([ButtonComponentType.Button, ButtonComponentType.Submit]).defined();
5-
6-
export const EventOptionTypeSchema = yup.string<EventOptionType>().oneOf([EventOptionType.Reload, EventOptionType.Retry]).defined();
4+
export const PageTypeSchema = yup.string<PageType>().oneOf([PageType.BasicAuth, PageType.Lp, PageType.Restricted, PageType.Service]).defined();
75

86
export const HttpMethodSchema = yup.string<HttpMethod>().oneOf([HttpMethod.Get, HttpMethod.Post]).defined();
97

10-
export const PageTypeSchema = yup.string<PageType>().oneOf([PageType.BasicAuth, PageType.Lp, PageType.Restricted, PageType.Service]).defined();
8+
export const EventOptionTypeSchema = yup.string<EventOptionType>().oneOf([EventOptionType.Reload, EventOptionType.Retry]).defined();
9+
10+
export const ButtonComponentTypeSchema = yup.string<ButtonComponentType>().oneOf([ButtonComponentType.Button, ButtonComponentType.Submit]).defined();
1111

1212
function union<T extends {}>(...schemas: ReadonlyArray<yup.Schema<T>>): yup.MixedSchema<T> {
1313
return yup.mixed<T>().test({
1414
test: (value) => schemas.some((schema) => schema.isValidSync(value))
1515
}).defined()
1616
}
1717

18-
export const AdminSchema: yup.ObjectSchema<Admin> = yup.object({
19-
__typename: yup.string<'Admin'>().optional(),
20-
lastModifiedAt: yup.mixed().nullable().optional()
18+
export const HttpInputSchema: yup.ObjectSchema<HttpInput> = yup.object({
19+
method: HttpMethodSchema.nullable().optional(),
20+
url: yup.mixed().nonNullable()
2121
});
2222

23-
export const AttributeInputSchema: yup.ObjectSchema<AttributeInput> = yup.object({
24-
key: yup.string().defined().nullable().optional(),
25-
val: yup.string().defined().nullable().optional()
23+
export const EventArgumentInputSchema: yup.ObjectSchema<EventArgumentInput> = yup.object({
24+
name: yup.string().defined().nonNullable().min(5),
25+
value: yup.string().defined().nonNullable().matches(/^foo/)
26+
});
27+
28+
export const EventInputSchema: yup.ObjectSchema<EventInput> = yup.object({
29+
arguments: yup.array(yup.lazy(() => EventArgumentInputSchema.nonNullable())).defined(),
30+
options: yup.array(EventOptionTypeSchema.nonNullable()).defined().nullable().optional()
2631
});
2732

2833
export const ComponentInputSchema: yup.ObjectSchema<ComponentInput> = yup.object({
@@ -38,30 +43,15 @@ export const DropDownComponentInputSchema: yup.ObjectSchema<DropDownComponentInp
3843
getEvent: yup.lazy(() => EventInputSchema.nonNullable())
3944
});
4045

41-
export const EventArgumentInputSchema: yup.ObjectSchema<EventArgumentInput> = yup.object({
42-
name: yup.string().defined().nonNullable().min(5),
43-
value: yup.string().defined().nonNullable().matches(/^foo/)
44-
});
45-
46-
export const EventInputSchema: yup.ObjectSchema<EventInput> = yup.object({
47-
arguments: yup.array(yup.lazy(() => EventArgumentInputSchema.nonNullable())).defined(),
48-
options: yup.array(EventOptionTypeSchema.nonNullable()).defined().nullable().optional()
49-
});
50-
51-
export const GuestSchema: yup.ObjectSchema<Guest> = yup.object({
52-
__typename: yup.string<'Guest'>().optional(),
53-
lastLoggedIn: yup.mixed().nullable().optional()
54-
});
55-
56-
export const HttpInputSchema: yup.ObjectSchema<HttpInput> = yup.object({
57-
method: HttpMethodSchema.nullable().optional(),
58-
url: yup.mixed().nonNullable()
59-
});
60-
6146
export const LayoutInputSchema: yup.ObjectSchema<LayoutInput> = yup.object({
6247
dropdown: yup.lazy(() => DropDownComponentInputSchema).optional()
6348
});
6449

50+
export const AttributeInputSchema: yup.ObjectSchema<AttributeInput> = yup.object({
51+
key: yup.string().defined().nullable().optional(),
52+
val: yup.string().defined().nullable().optional()
53+
});
54+
6555
export const PageInputSchema: yup.ObjectSchema<PageInput> = yup.object({
6656
attributes: yup.array(yup.lazy(() => AttributeInputSchema.nonNullable())).defined().nullable().optional(),
6757
date: yup.mixed().nullable().optional(),
@@ -76,6 +66,18 @@ export const PageInputSchema: yup.ObjectSchema<PageInput> = yup.object({
7666
width: yup.number().defined().nonNullable()
7767
});
7868

69+
export const GuestSchema: yup.ObjectSchema<Guest> = yup.object({
70+
__typename: yup.string<'Guest'>().optional(),
71+
lastLoggedIn: yup.mixed().nullable().optional()
72+
});
73+
74+
export const AdminSchema: yup.ObjectSchema<Admin> = yup.object({
75+
__typename: yup.string<'Admin'>().optional(),
76+
lastModifiedAt: yup.mixed().nullable().optional()
77+
});
78+
79+
export const UserKindSchema: yup.MixedSchema<UserKind> = union<UserKind>(AdminSchema, GuestSchema);
80+
7981
export const UserSchema: yup.ObjectSchema<User> = yup.object({
8082
__typename: yup.string<'User'>().optional(),
8183
createdAt: yup.mixed().nullable().optional(),
@@ -86,5 +88,3 @@ export const UserSchema: yup.ObjectSchema<User> = yup.object({
8688
password: yup.string().defined().nullable().optional(),
8789
updatedAt: yup.mixed().nullable().optional()
8890
});
89-
90-
export const UserKindSchema: yup.MixedSchema<UserKind> = union<UserKind>(AdminSchema, GuestSchema);

example/zod/schemas.ts

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { z } from 'zod'
2-
import { Admin, AttributeInput, ButtonComponentType, ComponentInput, DropDownComponentInput, EventArgumentInput, EventInput, EventOptionType, Guest, HttpInput, HttpMethod, LayoutInput, PageInput, PageType, User } from '../types'
2+
import { PageType, HttpMethod, HttpInput, EventOptionType, EventArgumentInput, EventInput, ComponentInput, DropDownComponentInput, LayoutInput, ButtonComponentType, AttributeInput, PageInput, Guest, Admin, User } from '../types'
33

44
type Properties<T> = Required<{
55
[K in keyof T]: z.ZodType<T[K], any, T[K]>;
@@ -11,22 +11,27 @@ export const isDefinedNonNullAny = (v: any): v is definedNonNullAny => v !== und
1111

1212
export const definedNonNullAnySchema = z.any().refine((v) => isDefinedNonNullAny(v));
1313

14-
export const ButtonComponentTypeSchema = z.nativeEnum(ButtonComponentType);
14+
export const PageTypeSchema = z.nativeEnum(PageType);
15+
16+
export const HttpMethodSchema = z.nativeEnum(HttpMethod);
1517

1618
export const EventOptionTypeSchema = z.nativeEnum(EventOptionType);
1719

18-
export const HttpMethodSchema = z.nativeEnum(HttpMethod);
20+
export const ButtonComponentTypeSchema = z.nativeEnum(ButtonComponentType);
1921

20-
export const PageTypeSchema = z.nativeEnum(PageType);
22+
export const HttpInputSchema: z.ZodObject<Properties<HttpInput>> = z.object({
23+
method: HttpMethodSchema.nullish(),
24+
url: definedNonNullAnySchema
25+
});
2126

22-
export const AdminSchema: z.ZodObject<Properties<Admin>> = z.object({
23-
__typename: z.literal('Admin').optional(),
24-
lastModifiedAt: definedNonNullAnySchema.nullish()
27+
export const EventArgumentInputSchema: z.ZodObject<Properties<EventArgumentInput>> = z.object({
28+
name: z.string().min(5),
29+
value: z.string().regex(/^foo/, "message")
2530
});
2631

27-
export const AttributeInputSchema: z.ZodObject<Properties<AttributeInput>> = z.object({
28-
key: z.string().nullish(),
29-
val: z.string().nullish()
32+
export const EventInputSchema: z.ZodObject<Properties<EventInput>> = z.object({
33+
arguments: z.array(z.lazy(() => EventArgumentInputSchema)),
34+
options: z.array(EventOptionTypeSchema).nullish()
3035
});
3136

3237
export const ComponentInputSchema: z.ZodObject<Properties<ComponentInput>> = z.object({
@@ -42,30 +47,15 @@ export const DropDownComponentInputSchema: z.ZodObject<Properties<DropDownCompon
4247
getEvent: z.lazy(() => EventInputSchema)
4348
});
4449

45-
export const EventArgumentInputSchema: z.ZodObject<Properties<EventArgumentInput>> = z.object({
46-
name: z.string().min(5),
47-
value: z.string().regex(/^foo/, "message")
48-
});
49-
50-
export const EventInputSchema: z.ZodObject<Properties<EventInput>> = z.object({
51-
arguments: z.array(z.lazy(() => EventArgumentInputSchema)),
52-
options: z.array(EventOptionTypeSchema).nullish()
53-
});
54-
55-
export const GuestSchema: z.ZodObject<Properties<Guest>> = z.object({
56-
__typename: z.literal('Guest').optional(),
57-
lastLoggedIn: definedNonNullAnySchema.nullish()
58-
});
59-
60-
export const HttpInputSchema: z.ZodObject<Properties<HttpInput>> = z.object({
61-
method: HttpMethodSchema.nullish(),
62-
url: definedNonNullAnySchema
63-
});
64-
6550
export const LayoutInputSchema: z.ZodObject<Properties<LayoutInput>> = z.object({
6651
dropdown: z.lazy(() => DropDownComponentInputSchema.nullish())
6752
});
6853

54+
export const AttributeInputSchema: z.ZodObject<Properties<AttributeInput>> = z.object({
55+
key: z.string().nullish(),
56+
val: z.string().nullish()
57+
});
58+
6959
export const PageInputSchema: z.ZodObject<Properties<PageInput>> = z.object({
7060
attributes: z.array(z.lazy(() => AttributeInputSchema)).nullish(),
7161
date: definedNonNullAnySchema.nullish(),
@@ -80,6 +70,18 @@ export const PageInputSchema: z.ZodObject<Properties<PageInput>> = z.object({
8070
width: z.number()
8171
});
8272

73+
export const GuestSchema: z.ZodObject<Properties<Guest>> = z.object({
74+
__typename: z.literal('Guest').optional(),
75+
lastLoggedIn: definedNonNullAnySchema.nullish()
76+
});
77+
78+
export const AdminSchema: z.ZodObject<Properties<Admin>> = z.object({
79+
__typename: z.literal('Admin').optional(),
80+
lastModifiedAt: definedNonNullAnySchema.nullish()
81+
});
82+
83+
export const UserKindSchema = z.union([AdminSchema, GuestSchema]);
84+
8385
export const UserSchema: z.ZodObject<Properties<User>> = z.object({
8486
__typename: z.literal('User').optional(),
8587
createdAt: definedNonNullAnySchema.nullish(),
@@ -90,5 +92,3 @@ export const UserSchema: z.ZodObject<Properties<User>> = z.object({
9092
password: z.string().nullish(),
9193
updatedAt: definedNonNullAnySchema.nullish()
9294
});
93-
94-
export const UserKindSchema = z.union([AdminSchema, GuestSchema]);

0 commit comments

Comments
 (0)