@@ -48,28 +48,35 @@ export default function transformComponentsObject(components: ComponentsObject,
48
48
49
49
// parameters
50
50
if ( components . parameters ) {
51
- output . push ( indent ( " parameters: {" , indentLv ) ) ;
51
+ const parameters : string [ ] = [ ] ;
52
52
indentLv ++ ;
53
+
54
+ let isEveryParameterOptional = true ;
55
+
53
56
for ( const [ name , parameterObject ] of getEntries ( components . parameters , ctx . alphabetize , ctx . excludeDeprecated ) ) {
54
57
const c = getSchemaObjectComment ( parameterObject , indentLv ) ;
55
- if ( c ) output . push ( indent ( c , indentLv ) ) ;
58
+ if ( c ) parameters . push ( indent ( c , indentLv ) ) ;
56
59
let key = escObjKey ( name ) ;
57
60
if ( ctx . immutableTypes ) key = tsReadonly ( key ) ;
58
61
if ( "$ref" in parameterObject ) {
59
- output . push ( indent ( `${ key } : ${ transformSchemaObject ( parameterObject , { path : `#/components/parameters/${ name } ` , ctx } ) } ;` , indentLv ) ) ;
62
+ parameters . push ( indent ( `${ key } : ${ transformSchemaObject ( parameterObject , { path : `#/components/parameters/${ name } ` , ctx } ) } ;` , indentLv ) ) ;
63
+ isEveryParameterOptional = false ;
60
64
} else {
61
65
if ( parameterObject . in !== "path" && ! parameterObject . required ) {
62
66
key = tsOptionalProperty ( key ) ;
67
+ } else {
68
+ isEveryParameterOptional = false ;
63
69
}
64
70
const parameterType = transformParameterObject ( parameterObject , {
65
71
path : `#/components/parameters/${ name } ` ,
66
72
ctx : { ...ctx , indentLv } ,
67
73
} ) ;
68
- output . push ( indent ( `${ key } : ${ parameterType } ;` , indentLv ) ) ;
74
+ parameters . push ( indent ( `${ key } : ${ parameterType } ;` , indentLv ) ) ;
69
75
}
70
76
}
71
77
indentLv -- ;
72
- output . push ( indent ( "};" , indentLv ) ) ;
78
+ const parametersKey = isEveryParameterOptional ? tsOptionalProperty ( "parameters" ) : "parameters" ;
79
+ output . push ( indent ( `${ parametersKey } : {` , indentLv ) , ...parameters , indent ( "};" , indentLv ) ) ;
73
80
} else {
74
81
output . push ( indent ( "parameters: never;" , indentLv ) ) ;
75
82
}
0 commit comments