@@ -175,13 +175,13 @@ export async function generateApi(
175
175
...apiGen . enumAliases ,
176
176
...( hooks
177
177
? [
178
- generateReactHooks ( {
179
- exportName : generatedApiName ,
180
- operationDefinitions,
181
- endpointOverrides,
182
- config : hooks ,
183
- } ) ,
184
- ]
178
+ generateReactHooks ( {
179
+ exportName : generatedApiName ,
180
+ operationDefinitions,
181
+ endpointOverrides,
182
+ config : hooks ,
183
+ } ) ,
184
+ ]
185
185
: [ ] ) ,
186
186
] ,
187
187
factory . createToken ( ts . SyntaxKind . EndOfFileToken ) ,
@@ -259,10 +259,12 @@ export async function generateApi(
259
259
) . name
260
260
) ;
261
261
262
- const parameters = supportDeepObjects ( [
263
- ...apiGen . resolveArray ( pathItem . parameters ) ,
264
- ...apiGen . resolveArray ( operation . parameters ) ,
265
- ] ) ;
262
+ const operationParameters = apiGen . resolveArray ( operation . parameters ) ;
263
+ const pathItemParameters = apiGen
264
+ . resolveArray ( pathItem . parameters )
265
+ . filter ( ( pp ) => ! operationParameters . some ( ( op ) => op . name === pp . name ) ) ;
266
+
267
+ const parameters = supportDeepObjects ( [ ...pathItemParameters , ...operationParameters ] ) ;
266
268
267
269
const allNames = parameters . map ( ( p ) => p . name ) ;
268
270
const queryArg : QueryArgDefinitions = { } ;
@@ -301,7 +303,9 @@ export async function generateApi(
301
303
const body = apiGen . resolve ( requestBody ) ;
302
304
const schema = apiGen . getSchemaFromContent ( body . content ) ;
303
305
const type = apiGen . getTypeFromSchema ( schema ) ;
304
- const schemaName = camelCase ( ( type as any ) . name || getReferenceName ( schema ) || ( "title" in schema && schema . title ) || 'body' ) ;
306
+ const schemaName = camelCase (
307
+ ( type as any ) . name || getReferenceName ( schema ) || ( 'title' in schema && schema . title ) || 'body'
308
+ ) ;
305
309
const name = generateName ( schemaName in queryArg ? 'body' : schemaName , 'body' ) ;
306
310
307
311
queryArg [ name ] = {
@@ -335,19 +339,19 @@ export async function generateApi(
335
339
? isFlatArg
336
340
? withQueryComment ( { ...queryArgValues [ 0 ] . type } , queryArgValues [ 0 ] , false )
337
341
: factory . createTypeLiteralNode (
338
- queryArgValues . map ( ( def ) =>
339
- withQueryComment (
340
- factory . createPropertySignature (
341
- undefined ,
342
- propertyName ( def . name ) ,
343
- createQuestionToken ( ! def . required ) ,
344
- def . type
345
- ) ,
346
- def ,
347
- true
342
+ queryArgValues . map ( ( def ) =>
343
+ withQueryComment (
344
+ factory . createPropertySignature (
345
+ undefined ,
346
+ propertyName ( def . name ) ,
347
+ createQuestionToken ( ! def . required ) ,
348
+ def . type
349
+ ) ,
350
+ def ,
351
+ true
352
+ )
348
353
)
349
354
)
350
- )
351
355
: factory . createKeywordTypeNode ( ts . SyntaxKind . VoidKeyword )
352
356
)
353
357
) . name
@@ -391,18 +395,18 @@ export async function generateApi(
391
395
return parameters . length === 0
392
396
? undefined
393
397
: factory . createPropertyAssignment (
394
- factory . createIdentifier ( propertyName ) ,
395
- factory . createObjectLiteralExpression (
396
- parameters . map (
397
- ( param ) =>
398
- createPropertyAssignment (
399
- param . originalName ,
400
- isFlatArg ? rootObject : accessProperty ( rootObject , param . name )
401
- ) ,
402
- true
398
+ factory . createIdentifier ( propertyName ) ,
399
+ factory . createObjectLiteralExpression (
400
+ parameters . map (
401
+ ( param ) =>
402
+ createPropertyAssignment (
403
+ param . originalName ,
404
+ isFlatArg ? rootObject : accessProperty ( rootObject , param . name )
405
+ ) ,
406
+ true
407
+ )
403
408
)
404
- )
405
- ) ;
409
+ ) ;
406
410
}
407
411
408
412
return factory . createArrowFunction (
@@ -423,17 +427,17 @@ export async function generateApi(
423
427
isQuery && verb . toUpperCase ( ) === 'GET'
424
428
? undefined
425
429
: factory . createPropertyAssignment (
426
- factory . createIdentifier ( 'method' ) ,
427
- factory . createStringLiteral ( verb . toUpperCase ( ) )
428
- ) ,
430
+ factory . createIdentifier ( 'method' ) ,
431
+ factory . createStringLiteral ( verb . toUpperCase ( ) )
432
+ ) ,
429
433
bodyParameter === undefined
430
434
? undefined
431
435
: factory . createPropertyAssignment (
432
- factory . createIdentifier ( 'body' ) ,
433
- isFlatArg
434
- ? rootObject
435
- : factory . createPropertyAccessExpression ( rootObject , factory . createIdentifier ( bodyParameter . name ) )
436
- ) ,
436
+ factory . createIdentifier ( 'body' ) ,
437
+ isFlatArg
438
+ ? rootObject
439
+ : factory . createPropertyAccessExpression ( rootObject , factory . createIdentifier ( bodyParameter . name ) )
440
+ ) ,
437
441
createObjectLiteralProperty ( pickParams ( 'cookie' ) , 'cookies' ) ,
438
442
createObjectLiteralProperty ( pickParams ( 'header' ) , 'headers' ) ,
439
443
createObjectLiteralProperty ( pickParams ( 'query' ) , 'params' ) ,
@@ -445,12 +449,12 @@ export async function generateApi(
445
449
}
446
450
447
451
// eslint-disable-next-line no-empty-pattern
448
- function generateQueryEndpointProps ( { } : { operationDefinition : OperationDefinition } ) : ObjectPropertyDefinitions {
452
+ function generateQueryEndpointProps ( { } : { operationDefinition : OperationDefinition } ) : ObjectPropertyDefinitions {
449
453
return { } ; /* TODO needs implementation - skip for now */
450
454
}
451
455
452
456
// eslint-disable-next-line no-empty-pattern
453
- function generateMutationEndpointProps ( { } : { operationDefinition : OperationDefinition } ) : ObjectPropertyDefinitions {
457
+ function generateMutationEndpointProps ( { } : { operationDefinition : OperationDefinition } ) : ObjectPropertyDefinitions {
454
458
return { } ; /* TODO needs implementation - skip for now */
455
459
}
456
460
}
@@ -480,16 +484,16 @@ function generatePathExpression(
480
484
481
485
return expressions . length
482
486
? factory . createTemplateExpression (
483
- factory . createTemplateHead ( head ) ,
484
- expressions . map ( ( [ prop , literal ] , index ) =>
485
- factory . createTemplateSpan (
486
- isFlatArg ? rootObject : accessProperty ( rootObject , prop ) ,
487
- index === expressions . length - 1
488
- ? factory . createTemplateTail ( literal )
489
- : factory . createTemplateMiddle ( literal )
487
+ factory . createTemplateHead ( head ) ,
488
+ expressions . map ( ( [ prop , literal ] , index ) =>
489
+ factory . createTemplateSpan (
490
+ isFlatArg ? rootObject : accessProperty ( rootObject , prop ) ,
491
+ index === expressions . length - 1
492
+ ? factory . createTemplateTail ( literal )
493
+ : factory . createTemplateMiddle ( literal )
494
+ )
490
495
)
491
496
)
492
- )
493
497
: factory . createNoSubstitutionTemplateLiteral ( head ) ;
494
498
}
495
499
@@ -500,13 +504,13 @@ type QueryArgDefinition = {
500
504
required ?: boolean ;
501
505
param ?: OpenAPIV3 . ParameterObject ;
502
506
} & (
503
- | {
507
+ | {
504
508
origin : 'param' ;
505
509
param : OpenAPIV3 . ParameterObject ;
506
510
}
507
- | {
511
+ | {
508
512
origin : 'body' ;
509
513
body : OpenAPIV3 . RequestBodyObject ;
510
514
}
511
- ) ;
515
+ ) ;
512
516
type QueryArgDefinitions = Record < string , QueryArgDefinition > ;
0 commit comments