@@ -89,6 +89,7 @@ function generateUniqueName(source: string, postfixes: string[], usedNames: Reco
89
89
interface OpenApiParameterFromArgument {
90
90
paramName : string ;
91
91
argumentName : string ;
92
+ destructuringName : string ;
92
93
defaultValue ?: Expression ;
93
94
optional ?: boolean ;
94
95
docs : string | null ;
@@ -110,14 +111,23 @@ function renderParameter(parameter: OpenApiParameterFromArgument | OpenApiParame
110
111
const { paramName} = parameter ;
111
112
const propertyName = objectPropertyKey ( paramName ) ;
112
113
if ( isOperationParameterFromArgument ( parameter ) ) {
113
- const { argumentName } = parameter ;
114
- return objectProperty ( propertyName , identifier ( argumentName ) , false , paramName === argumentName ) ;
114
+ const { destructuringName } = parameter ;
115
+ return objectProperty ( propertyName , identifier ( destructuringName ) , false , paramName === destructuringName ) ;
115
116
} else {
116
117
const { value} = parameter ;
117
118
return objectProperty ( propertyName , value , false , false ) ;
118
119
}
119
120
}
120
121
122
+ function generateDestructuringName ( paramName : string , postfixes : string [ ] , usedInputNames : Record < string , true > ) {
123
+ let destructuringName = paramName ;
124
+ if ( ! isValidIdentifier ( destructuringName , true ) ) {
125
+ destructuringName = generateUniqueName ( destructuringName , postfixes , usedInputNames ) ;
126
+ usedInputNames [ destructuringName ] = true ;
127
+ }
128
+ return destructuringName ;
129
+ }
130
+
121
131
export function generateOperationMethods ( {
122
132
paths,
123
133
serviceName,
@@ -286,6 +296,11 @@ export function generateOperationMethods({
286
296
inputParameters [ parameter . in ] . push ( {
287
297
paramName : parameter . name ,
288
298
argumentName : parameterName ,
299
+ destructuringName : generateDestructuringName (
300
+ parameterName ,
301
+ [ parameter . in , `${ parameter . in } param` ] ,
302
+ usedInputNames
303
+ ) ,
289
304
optional : ! parameter . required ,
290
305
type : extendDependenciesAndGetResult (
291
306
generateSchemaTypeAndImports ( {
@@ -469,12 +484,14 @@ export function generateOperationMethods({
469
484
inputParameters [ 'header' ] . push ( {
470
485
paramName : 'Content-Type' ,
471
486
argumentName : mediaTypeName ,
487
+ destructuringName : generateDestructuringName ( mediaTypeName , [ ] , usedInputNames ) ,
472
488
docs : null ,
473
489
defaultValue : defaultMediaType ? stringLiteral ( defaultMediaType ) : undefined
474
490
} ) ;
475
491
for ( const requestBodyName of allRequestBodyNames ) {
476
492
inputParameters [ 'body' ] . push ( {
477
493
argumentName : requestBodyName ,
494
+ destructuringName : generateDestructuringName ( requestBodyName , [ ] , usedInputNames ) ,
478
495
paramName : requestBodyName ,
479
496
docs : null
480
497
} ) ;
@@ -488,6 +505,7 @@ export function generateOperationMethods({
488
505
inputParameters [ 'header' ] . push ( {
489
506
paramName : 'Content-Type' ,
490
507
argumentName : mediaTypeName ,
508
+ destructuringName : generateDestructuringName ( mediaTypeName , [ ] , usedInputNames ) ,
491
509
docs : null ,
492
510
type : tsStringKeyword ( )
493
511
} ) ;
@@ -500,6 +518,7 @@ export function generateOperationMethods({
500
518
inputParameters [ 'body' ] . push ( {
501
519
paramName : requestBodyName ,
502
520
argumentName : requestBodyName ,
521
+ destructuringName : generateDestructuringName ( requestBodyName , [ ] , usedInputNames ) ,
503
522
type : extendDependenciesAndGetResult (
504
523
generateSchemaTypeAndImports ( {
505
524
schema,
@@ -556,17 +575,19 @@ export function generateOperationMethods({
556
575
557
576
const argument = objectPattern ( [ ] ) ;
558
577
const argumentType = tsTypeLiteral ( [ ] ) ;
559
- for ( const { argumentName, type, optional, docs, defaultValue} of Object . values ( inputParameters )
578
+ for ( const { argumentName, destructuringName, type, optional, docs, defaultValue} of Object . values (
579
+ inputParameters
580
+ )
560
581
. flatMap ( ( params ) => params )
561
582
. filter ( isOperationParameterFromArgument ) ) {
562
583
argument . properties . push (
563
584
objectProperty (
564
585
identifier ( argumentName ) ,
565
586
defaultValue
566
- ? assignmentPattern ( identifier ( argumentName ) , defaultValue )
567
- : identifier ( argumentName ) ,
587
+ ? assignmentPattern ( identifier ( destructuringName ) , defaultValue )
588
+ : identifier ( destructuringName ) ,
568
589
false ,
569
- true
590
+ argumentName === destructuringName
570
591
)
571
592
) ;
572
593
if ( type ) {
0 commit comments