@@ -3,6 +3,7 @@ import path from 'node:path';
33import {
44 type ContextSpec ,
55 conventionName ,
6+ type GeneratorVerbOptions ,
67 type NamingConvention ,
78 type NormalizedOutputOptions ,
89 type OpenApiParameterObject ,
@@ -65,19 +66,10 @@ interface WriteZodVerbResponseType {
6566
6667type WriteZodSchemasFromVerbsInput = Record <
6768 string ,
68- {
69- operationName : string ;
70- originalOperation : {
71- requestBody ?: OpenApiRequestBodyObject | OpenApiReferenceObject ;
72- parameters ?: ( OpenApiParameterObject | OpenApiReferenceObject ) [ ] ;
73- } ;
74- response : {
75- types : {
76- success : WriteZodVerbResponseType [ ] ;
77- errors : WriteZodVerbResponseType [ ] ;
78- } ;
79- } ;
80- }
69+ Pick <
70+ GeneratorVerbOptions ,
71+ 'operationName' | 'originalOperation' | 'response' | 'override'
72+ >
8173> ;
8274
8375interface WriteZodSchemasFromVerbsContext {
@@ -365,6 +357,8 @@ export async function writeZodSchemasFromVerbs(
365357
366358 const generateVerbsSchemas = verbOptionsArray . flatMap ( ( verbOption ) => {
367359 const operation = verbOption . originalOperation ;
360+ const shouldGenerate =
361+ verbOption . override ?. zod . generate ?? output . override . zod . generate ;
368362
369363 const requestBody = operation . requestBody ;
370364 const requestBodyContent =
@@ -392,16 +386,17 @@ export async function writeZodSchemasFromVerbs(
392386 : [ undefined , undefined ] ;
393387 const bodySchema = bodyMedia ?. schema as OpenApiSchemaObject | undefined ;
394388
395- const bodySchemas = bodySchema
396- ? [
397- {
398- name : `${ pascal ( verbOption . operationName ) } Body` ,
399- schema : dereference ( bodySchema , zodContext ) ,
400- bodyContentType,
401- encoding : bodyMedia ?. encoding ,
402- } ,
403- ]
404- : [ ] ;
389+ const bodySchemas =
390+ shouldGenerate . body && bodySchema
391+ ? [
392+ {
393+ name : `${ pascal ( verbOption . operationName ) } Body` ,
394+ schema : dereference ( bodySchema , zodContext ) ,
395+ bodyContentType,
396+ encoding : bodyMedia ?. encoding ,
397+ } ,
398+ ]
399+ : [ ] ;
405400
406401 const parameters = operation . parameters ;
407402
@@ -410,7 +405,7 @@ export async function writeZodSchemasFromVerbs(
410405 ) ;
411406
412407 const queryParamsSchemas =
413- queryParams && queryParams . length > 0
408+ shouldGenerate . query && queryParams && queryParams . length > 0
414409 ? [
415410 {
416411 name : `${ pascal ( verbOption . operationName ) } Params` ,
@@ -438,7 +433,7 @@ export async function writeZodSchemasFromVerbs(
438433 ) ;
439434
440435 const headerParamsSchemas =
441- headerParams && headerParams . length > 0
436+ shouldGenerate . header && headerParams && headerParams . length > 0
442437 ? [
443438 {
444439 name : `${ pascal ( verbOption . operationName ) } Headers` ,
@@ -461,25 +456,27 @@ export async function writeZodSchemasFromVerbs(
461456 ]
462457 : [ ] ;
463458
464- const responseSchemas = [
465- ...verbOption . response . types . success ,
466- ...verbOption . response . types . errors ,
467- ]
468- . filter (
469- (
470- responseType ,
471- ) : responseType is typeof responseType & {
472- originalSchema : OpenApiSchemaObject ;
473- } =>
474- ! ! responseType . originalSchema &&
475- ! responseType . isRef &&
476- isValidSchemaIdentifier ( responseType . value ) &&
477- ! isPrimitiveSchemaName ( responseType . value ) ,
478- )
479- . map ( ( responseType ) => ( {
480- name : responseType . value ,
481- schema : dereference ( responseType . originalSchema , zodContext ) ,
482- } ) ) ;
459+ const responseSchemas = shouldGenerate . response
460+ ? [
461+ ...verbOption . response . types . success ,
462+ ...verbOption . response . types . errors ,
463+ ]
464+ . filter (
465+ (
466+ responseType ,
467+ ) : responseType is typeof responseType & {
468+ originalSchema : OpenApiSchemaObject ;
469+ } =>
470+ ! ! responseType . originalSchema &&
471+ ! responseType . isRef &&
472+ isValidSchemaIdentifier ( responseType . value ) &&
473+ ! isPrimitiveSchemaName ( responseType . value ) ,
474+ )
475+ . map ( ( responseType ) => ( {
476+ name : responseType . value ,
477+ schema : dereference ( responseType . originalSchema , zodContext ) ,
478+ } ) )
479+ : [ ] ;
483480
484481 return dedupeSchemasByName ( [
485482 ...bodySchemas ,
0 commit comments