@@ -350,18 +350,28 @@ export async function generateApi(
350
350
} ) {
351
351
const { path, verb } = operationDefinition ;
352
352
353
- const pathParameters = Object . values ( queryArg ) . filter ( ( def ) => def . origin === 'param' && def . param . in === 'path' ) ;
354
- const queryParameters = Object . values ( queryArg ) . filter ( ( def ) => def . origin === 'param' && def . param . in === 'query' ) ;
355
- const headerParameters = Object . values ( queryArg ) . filter (
356
- ( def ) => def . origin === 'param' && def . param . in === 'header'
357
- ) ;
358
- const cookieParameters = Object . values ( queryArg ) . filter (
359
- ( def ) => def . origin === 'param' && def . param . in === 'cookie'
360
- ) ;
361
353
const bodyParameter = Object . values ( queryArg ) . find ( ( def ) => def . origin === 'body' ) ;
362
354
363
355
const rootObject = factory . createIdentifier ( 'queryArg' ) ;
364
356
357
+ function pickParams ( paramIn : string ) {
358
+ return Object . values ( queryArg ) . filter ( ( def ) => def . origin === 'param' && def . param . in === paramIn ) ;
359
+ }
360
+
361
+ function createObjectLiteralProperty ( parameters : QueryArgDefinition [ ] , propertyName : string ) {
362
+ return parameters . length === 0
363
+ ? undefined
364
+ : factory . createPropertyAssignment (
365
+ factory . createIdentifier ( propertyName ) ,
366
+ factory . createObjectLiteralExpression (
367
+ parameters . map (
368
+ ( param ) => createPropertyAssignment ( param . originalName , accessProperty ( rootObject , param . name ) ) ,
369
+ true
370
+ )
371
+ )
372
+ ) ;
373
+ }
374
+
365
375
return factory . createArrowFunction (
366
376
undefined ,
367
377
undefined ,
@@ -385,7 +395,7 @@ export async function generateApi(
385
395
[
386
396
factory . createPropertyAssignment (
387
397
factory . createIdentifier ( 'url' ) ,
388
- generatePathExpression ( path , pathParameters , rootObject )
398
+ generatePathExpression ( path , pickParams ( 'path' ) , rootObject )
389
399
) ,
390
400
isQuery && verb . toUpperCase ( ) === 'GET'
391
401
? undefined
@@ -399,24 +409,9 @@ export async function generateApi(
399
409
factory . createIdentifier ( 'body' ) ,
400
410
factory . createPropertyAccessExpression ( rootObject , factory . createIdentifier ( bodyParameter . name ) )
401
411
) ,
402
- cookieParameters . length === 0
403
- ? undefined
404
- : factory . createPropertyAssignment (
405
- factory . createIdentifier ( 'cookies' ) ,
406
- generateQuerArgObjectLiteralExpression ( cookieParameters , rootObject )
407
- ) ,
408
- headerParameters . length === 0
409
- ? undefined
410
- : factory . createPropertyAssignment (
411
- factory . createIdentifier ( 'headers' ) ,
412
- generateQuerArgObjectLiteralExpression ( headerParameters , rootObject )
413
- ) ,
414
- queryParameters . length === 0
415
- ? undefined
416
- : factory . createPropertyAssignment (
417
- factory . createIdentifier ( 'params' ) ,
418
- generateQuerArgObjectLiteralExpression ( queryParameters , rootObject )
419
- ) ,
412
+ createObjectLiteralProperty ( pickParams ( 'cookie' ) , 'cookies' ) ,
413
+ createObjectLiteralProperty ( pickParams ( 'header' ) , 'headers' ) ,
414
+ createObjectLiteralProperty ( pickParams ( 'query' ) , 'params' ) ,
420
415
] . filter ( removeUndefined ) ,
421
416
false
422
417
)
@@ -468,12 +463,6 @@ function generatePathExpression(path: string, pathParameters: QueryArgDefinition
468
463
: factory . createNoSubstitutionTemplateLiteral ( head ) ;
469
464
}
470
465
471
- function generateQuerArgObjectLiteralExpression ( queryArgs : QueryArgDefinition [ ] , rootObject : ts . Identifier ) {
472
- return factory . createObjectLiteralExpression (
473
- queryArgs . map ( ( param ) => createPropertyAssignment ( param . originalName , accessProperty ( rootObject , param . name ) ) , true )
474
- ) ;
475
- }
476
-
477
466
type QueryArgDefinition = {
478
467
name : string ;
479
468
originalName : string ;
0 commit comments