Skip to content

Commit ca5517e

Browse files
authored
Merge pull request #3766 from hey-api/fix/zod-types-input-output
feat: add z.input and z.output
2 parents 148ed86 + 1305c13 commit ca5517e

File tree

74 files changed

+1604
-301
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1604
-301
lines changed

.changeset/odd-plums-tell.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
"@hey-api/openapi-ts": patch
33
---
44

5-
**plugin(zod)**: fix: move `.default()` after `.optional()` to avoid `z.infer` producing required fields
5+
**plugin(zod)**: support generating `z.input` and `z.output` types

packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/default/zod.gen.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ export const zPost = z.object({
3636
export const zCreatePostInput = z.object({
3737
title: z.string(),
3838
content: z.string(),
39-
status: z.enum(['draft', 'published']).default('draft').optional()
39+
status: z.enum(['draft', 'published']).optional().default('draft')
4040
});
4141

4242
export const zGetUsersQuery = z.object({
43-
limit: z.int().default(10).optional(),
44-
offset: z.int().default(0).optional()
43+
limit: z.int().optional().default(10),
44+
offset: z.int().optional().default(0)
4545
});
4646

4747
/**
@@ -119,7 +119,7 @@ export const zGetPostByIdPath = z.object({
119119
});
120120

121121
export const zGetPostByIdQuery = z.object({
122-
includeComments: z.boolean().default(false).optional()
122+
includeComments: z.boolean().optional().default(false)
123123
});
124124

125125
/**

packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-custom-naming/zod.gen.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ export const zPost = z.object({
3636
export const zCreatePostInput = z.object({
3737
title: z.string(),
3838
content: z.string(),
39-
status: z.enum(['draft', 'published']).default('draft').optional()
39+
status: z.enum(['draft', 'published']).optional().default('draft')
4040
});
4141

4242
export const zGetUsersQuery = z.object({
43-
limit: z.int().default(10).optional(),
44-
offset: z.int().default(0).optional()
43+
limit: z.int().optional().default(10),
44+
offset: z.int().optional().default(0)
4545
});
4646

4747
/**
@@ -119,7 +119,7 @@ export const zGetPostByIdPath = z.object({
119119
});
120120

121121
export const zGetPostByIdQuery = z.object({
122-
includeComments: z.boolean().default(false).optional()
122+
includeComments: z.boolean().optional().default(false)
123123
});
124124

125125
/**

packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-nesting-id/zod.gen.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ export const zPost = z.object({
3636
export const zCreatePostInput = z.object({
3737
title: z.string(),
3838
content: z.string(),
39-
status: z.enum(['draft', 'published']).default('draft').optional()
39+
status: z.enum(['draft', 'published']).optional().default('draft')
4040
});
4141

4242
export const zGetUsersQuery = z.object({
43-
limit: z.int().default(10).optional(),
44-
offset: z.int().default(0).optional()
43+
limit: z.int().optional().default(10),
44+
offset: z.int().optional().default(0)
4545
});
4646

4747
/**
@@ -119,7 +119,7 @@ export const zGetPostByIdPath = z.object({
119119
});
120120

121121
export const zGetPostByIdQuery = z.object({
122-
includeComments: z.boolean().default(false).optional()
122+
includeComments: z.boolean().optional().default(false)
123123
});
124124

125125
/**

packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-by-tags/zod.gen.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ export const zPost = z.object({
3636
export const zCreatePostInput = z.object({
3737
title: z.string(),
3838
content: z.string(),
39-
status: z.enum(['draft', 'published']).default('draft').optional()
39+
status: z.enum(['draft', 'published']).optional().default('draft')
4040
});
4141

4242
export const zGetUsersQuery = z.object({
43-
limit: z.int().default(10).optional(),
44-
offset: z.int().default(0).optional()
43+
limit: z.int().optional().default(10),
44+
offset: z.int().optional().default(0)
4545
});
4646

4747
/**
@@ -119,7 +119,7 @@ export const zGetPostByIdPath = z.object({
119119
});
120120

121121
export const zGetPostByIdQuery = z.object({
122-
includeComments: z.boolean().default(false).optional()
122+
includeComments: z.boolean().optional().default(false)
123123
});
124124

125125
/**

packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-single/zod.gen.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ export const zPost = z.object({
3636
export const zCreatePostInput = z.object({
3737
title: z.string(),
3838
content: z.string(),
39-
status: z.enum(['draft', 'published']).default('draft').optional()
39+
status: z.enum(['draft', 'published']).optional().default('draft')
4040
});
4141

4242
export const zGetUsersQuery = z.object({
43-
limit: z.int().default(10).optional(),
44-
offset: z.int().default(0).optional()
43+
limit: z.int().optional().default(10),
44+
offset: z.int().optional().default(0)
4545
});
4646

4747
/**
@@ -119,7 +119,7 @@ export const zGetPostByIdPath = z.object({
119119
});
120120

121121
export const zGetPostByIdQuery = z.object({
122-
includeComments: z.boolean().default(false).optional()
122+
includeComments: z.boolean().optional().default(false)
123123
});
124124

125125
/**

packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/default/zod.gen.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ export const zPost = z.object({
3636
export const zCreatePostInput = z.object({
3737
title: z.string(),
3838
content: z.string(),
39-
status: z.enum(['draft', 'published']).default('draft').optional()
39+
status: z.enum(['draft', 'published']).optional().default('draft')
4040
});
4141

4242
export const zGetUsersQuery = z.object({
43-
limit: z.int().default(10).optional(),
44-
offset: z.int().default(0).optional()
43+
limit: z.int().optional().default(10),
44+
offset: z.int().optional().default(0)
4545
});
4646

4747
/**
@@ -119,7 +119,7 @@ export const zGetPostByIdPath = z.object({
119119
});
120120

121121
export const zGetPostByIdQuery = z.object({
122-
includeComments: z.boolean().default(false).optional()
122+
includeComments: z.boolean().optional().default(false)
123123
});
124124

125125
/**

packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/mini/default/zod.gen.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -510,19 +510,19 @@ export const zCallWithDefaultParametersQuery = z.object({
510510
});
511511

512512
export const zCallWithDefaultOptionalParametersQuery = z.object({
513-
parameterString: z.optional(z._default(z.string(), 'Hello World!')),
514-
parameterNumber: z.optional(z._default(z.number(), 123)),
515-
parameterBoolean: z.optional(z._default(z.boolean(), true)),
516-
parameterEnum: z.optional(z._default(z.enum([
513+
parameterString: z._default(z.optional(z.string()), 'Hello World!'),
514+
parameterNumber: z._default(z.optional(z.number()), 123),
515+
parameterBoolean: z._default(z.optional(z.boolean()), true),
516+
parameterEnum: z._default(z.optional(z.enum([
517517
'Success',
518518
'Warning',
519519
'Error'
520-
]), 'Success'))
520+
])), 'Success')
521521
});
522522

523523
export const zCallToTestOrderOfParamsQuery = z.object({
524-
parameterOptionalStringWithDefault: z.optional(z._default(z.string(), 'Hello World!')),
525-
parameterOptionalStringWithEmptyDefault: z.optional(z._default(z.string(), '')),
524+
parameterOptionalStringWithDefault: z._default(z.optional(z.string()), 'Hello World!'),
525+
parameterOptionalStringWithEmptyDefault: z._default(z.optional(z.string()), ''),
526526
parameterOptionalStringWithNoDefault: z.optional(z.string()),
527527
parameterStringWithDefault: z._default(z.string(), 'Hello World!'),
528528
parameterStringWithEmptyDefault: z._default(z.string(), ''),

packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v3/default/zod.gen.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -510,19 +510,19 @@ export const zCallWithDefaultParametersQuery = z.object({
510510
});
511511

512512
export const zCallWithDefaultOptionalParametersQuery = z.object({
513-
parameterString: z.string().default('Hello World!').optional(),
514-
parameterNumber: z.number().default(123).optional(),
515-
parameterBoolean: z.boolean().default(true).optional(),
513+
parameterString: z.string().optional().default('Hello World!'),
514+
parameterNumber: z.number().optional().default(123),
515+
parameterBoolean: z.boolean().optional().default(true),
516516
parameterEnum: z.enum([
517517
'Success',
518518
'Warning',
519519
'Error'
520-
]).default('Success').optional()
520+
]).optional().default('Success')
521521
});
522522

523523
export const zCallToTestOrderOfParamsQuery = z.object({
524-
parameterOptionalStringWithDefault: z.string().default('Hello World!').optional(),
525-
parameterOptionalStringWithEmptyDefault: z.string().default('').optional(),
524+
parameterOptionalStringWithDefault: z.string().optional().default('Hello World!'),
525+
parameterOptionalStringWithEmptyDefault: z.string().optional().default(''),
526526
parameterOptionalStringWithNoDefault: z.string().optional(),
527527
parameterStringWithDefault: z.string().default('Hello World!'),
528528
parameterStringWithEmptyDefault: z.string().default(''),

packages/openapi-ts-tests/zod/v3/__snapshots__/2.0.x/v4/default/zod.gen.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -510,19 +510,19 @@ export const zCallWithDefaultParametersQuery = z.object({
510510
});
511511

512512
export const zCallWithDefaultOptionalParametersQuery = z.object({
513-
parameterString: z.string().default('Hello World!').optional(),
514-
parameterNumber: z.number().default(123).optional(),
515-
parameterBoolean: z.boolean().default(true).optional(),
513+
parameterString: z.string().optional().default('Hello World!'),
514+
parameterNumber: z.number().optional().default(123),
515+
parameterBoolean: z.boolean().optional().default(true),
516516
parameterEnum: z.enum([
517517
'Success',
518518
'Warning',
519519
'Error'
520-
]).default('Success').optional()
520+
]).optional().default('Success')
521521
});
522522

523523
export const zCallToTestOrderOfParamsQuery = z.object({
524-
parameterOptionalStringWithDefault: z.string().default('Hello World!').optional(),
525-
parameterOptionalStringWithEmptyDefault: z.string().default('').optional(),
524+
parameterOptionalStringWithDefault: z.string().optional().default('Hello World!'),
525+
parameterOptionalStringWithEmptyDefault: z.string().optional().default(''),
526526
parameterOptionalStringWithNoDefault: z.string().optional(),
527527
parameterStringWithDefault: z.string().default('Hello World!'),
528528
parameterStringWithEmptyDefault: z.string().default(''),

0 commit comments

Comments
 (0)