@@ -175,13 +175,13 @@ export async function generateApi(
175175 ...apiGen . enumAliases ,
176176 ...( hooks
177177 ? [
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+ ]
185185 : [ ] ) ,
186186 ] ,
187187 factory . createToken ( ts . SyntaxKind . EndOfFileToken ) ,
@@ -259,10 +259,12 @@ export async function generateApi(
259259 ) . name
260260 ) ;
261261
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 ] ) ;
266268
267269 const allNames = parameters . map ( ( p ) => p . name ) ;
268270 const queryArg : QueryArgDefinitions = { } ;
@@ -301,7 +303,9 @@ export async function generateApi(
301303 const body = apiGen . resolve ( requestBody ) ;
302304 const schema = apiGen . getSchemaFromContent ( body . content ) ;
303305 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+ ) ;
305309 const name = generateName ( schemaName in queryArg ? 'body' : schemaName , 'body' ) ;
306310
307311 queryArg [ name ] = {
@@ -335,19 +339,19 @@ export async function generateApi(
335339 ? isFlatArg
336340 ? withQueryComment ( { ...queryArgValues [ 0 ] . type } , queryArgValues [ 0 ] , false )
337341 : 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+ )
348353 )
349354 )
350- )
351355 : factory . createKeywordTypeNode ( ts . SyntaxKind . VoidKeyword )
352356 )
353357 ) . name
@@ -391,18 +395,18 @@ export async function generateApi(
391395 return parameters . length === 0
392396 ? undefined
393397 : 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+ )
403408 )
404- )
405- ) ;
409+ ) ;
406410 }
407411
408412 return factory . createArrowFunction (
@@ -423,17 +427,17 @@ export async function generateApi(
423427 isQuery && verb . toUpperCase ( ) === 'GET'
424428 ? undefined
425429 : factory . createPropertyAssignment (
426- factory . createIdentifier ( 'method' ) ,
427- factory . createStringLiteral ( verb . toUpperCase ( ) )
428- ) ,
430+ factory . createIdentifier ( 'method' ) ,
431+ factory . createStringLiteral ( verb . toUpperCase ( ) )
432+ ) ,
429433 bodyParameter === undefined
430434 ? undefined
431435 : 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+ ) ,
437441 createObjectLiteralProperty ( pickParams ( 'cookie' ) , 'cookies' ) ,
438442 createObjectLiteralProperty ( pickParams ( 'header' ) , 'headers' ) ,
439443 createObjectLiteralProperty ( pickParams ( 'query' ) , 'params' ) ,
@@ -445,12 +449,12 @@ export async function generateApi(
445449 }
446450
447451 // eslint-disable-next-line no-empty-pattern
448- function generateQueryEndpointProps ( { } : { operationDefinition : OperationDefinition } ) : ObjectPropertyDefinitions {
452+ function generateQueryEndpointProps ( { } : { operationDefinition : OperationDefinition } ) : ObjectPropertyDefinitions {
449453 return { } ; /* TODO needs implementation - skip for now */
450454 }
451455
452456 // eslint-disable-next-line no-empty-pattern
453- function generateMutationEndpointProps ( { } : { operationDefinition : OperationDefinition } ) : ObjectPropertyDefinitions {
457+ function generateMutationEndpointProps ( { } : { operationDefinition : OperationDefinition } ) : ObjectPropertyDefinitions {
454458 return { } ; /* TODO needs implementation - skip for now */
455459 }
456460}
@@ -480,16 +484,16 @@ function generatePathExpression(
480484
481485 return expressions . length
482486 ? 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+ )
490495 )
491496 )
492- )
493497 : factory . createNoSubstitutionTemplateLiteral ( head ) ;
494498}
495499
@@ -500,13 +504,13 @@ type QueryArgDefinition = {
500504 required ?: boolean ;
501505 param ?: OpenAPIV3 . ParameterObject ;
502506} & (
503- | {
507+ | {
504508 origin : 'param' ;
505509 param : OpenAPIV3 . ParameterObject ;
506510 }
507- | {
511+ | {
508512 origin : 'body' ;
509513 body : OpenAPIV3 . RequestBodyObject ;
510514 }
511- ) ;
515+ ) ;
512516type QueryArgDefinitions = Record < string , QueryArgDefinition > ;
0 commit comments