@@ -300,7 +300,6 @@ export const serializeOperationObject = combineReader(
300
300
const hasBodyParameter = isSome ( parameters . serializedBodyParameter ) ;
301
301
const hasHeaderParameters = isSome ( parameters . serializedHeadersParameter ) ;
302
302
const hasParameters = hasQueryParameters || hasBodyParameter || hasHeaderParameters ;
303
- const hasResponseMap = either . isRight ( serializedResponses ) ;
304
303
305
304
const bodyType = pipe (
306
305
parameters . serializedBodyParameter ,
@@ -335,36 +334,53 @@ export const serializeOperationObject = combineReader(
335
334
option . map ( headers => `const headers = ${ headers . io } .encode(parameters.headers)` ) ,
336
335
option . getOrElse ( ( ) => '' ) ,
337
336
) ;
338
- const accepArg = hasResponseMap ? 'accept?: A;' : '' ;
339
-
340
337
const argsType = concatIf (
341
- hasParameters || hasResponseMap ,
338
+ hasParameters ,
342
339
parameters . serializedPathParameters . map ( p => p . type ) ,
343
- [ `parameters${ hasParameters ? '' : '?' } : { ${ queryType } ${ bodyType } ${ headersType } ${ accepArg } }` ] ,
340
+ [ `parameters${ hasParameters ? '' : '?' } : { ${ queryType } ${ bodyType } ${ headersType } }` ] ,
341
+ ) . join ( ',' ) ;
342
+
343
+ const argsTypeWithAccept = concatIf (
344
+ true ,
345
+ parameters . serializedPathParameters . map ( p => p . type ) ,
346
+ [ `parameters${ hasParameters ? '' : '?' } : { ${ queryType } ${ bodyType } ${ headersType } accept: A; }` ] ,
344
347
) . join ( ',' ) ;
345
348
346
349
const type = pipe (
347
350
serializedResponses ,
348
351
either . fold (
349
352
sr => `
350
- ${ getJSDoc ( array . compact ( [ deprecated , operation . summary ] ) ) }
351
- readonly ${ operationName } : (${ argsType } ) => ${ getKindValue ( kind , sr . schema . type ) } ;
352
- ` ,
353
+ ${ getJSDoc ( array . compact ( [ deprecated , operation . summary ] ) ) }
354
+ readonly ${ operationName } : (${ argsType } ) => ${ getKindValue ( kind , sr . schema . type ) } ;
355
+ ` ,
353
356
sr => `
354
- ${ getJSDoc ( array . compact ( [ deprecated , operation . summary ] ) ) }
355
- readonly ${ operationName } : <A extends keyof MapToResponse${ operationName } = '${
356
- sr [ 0 ] . mediaType
357
- } '>(${ argsType } ) => ${ getKindValue ( kind , `MapToResponse${ operationName } [A]` ) } ;
358
- ` ,
357
+ ${ getJSDoc ( array . compact ( [ deprecated , operation . summary ] ) ) }
358
+ ${ operationName } (${ argsType } ): ${ getKindValue ( kind , `MapToResponse${ operationName } ['${ sr [ 0 ] . mediaType } ']` ) } ;
359
+ ${ operationName } <A extends keyof MapToResponse${ operationName } >(${ argsTypeWithAccept } ): ${ getKindValue (
360
+ kind ,
361
+ `MapToResponse${ operationName } [A]` ,
362
+ ) } ;`,
359
363
) ,
360
364
) ;
361
365
362
366
const argsIO = concatIf (
363
- hasParameters || hasResponseMap ,
367
+ hasParameters ,
364
368
parameters . pathParameters . map ( p => p . name ) ,
365
369
[ 'parameters' ] ,
366
370
) . join ( ',' ) ;
367
371
372
+ const methodTypeIO = pipe (
373
+ serializedResponses ,
374
+ either . fold (
375
+ ( ) => `(${ argsIO } )` ,
376
+ ( ) => `
377
+ <A extends keyof MapToResponse${ operationName } >(${ argsTypeWithAccept } ): ${ getKindValue (
378
+ kind ,
379
+ `MapToResponse${ operationName } [A]` ,
380
+ ) } `,
381
+ ) ,
382
+ ) ;
383
+
368
384
const decode = pipe (
369
385
serializedResponses ,
370
386
either . fold (
@@ -376,9 +392,7 @@ export const serializeOperationObject = combineReader(
376
392
serializedResponses ,
377
393
either . fold (
378
394
sr => `const accept = '${ sr . mediaType } ';` ,
379
- sr =>
380
- `const rawAccept = (parameters && parameters.accept)!;
381
- const accept = (rawAccept || '${ sr [ 0 ] . mediaType } ') as typeof rawAccept;` ,
395
+ sr => `const accept = (parameters && parameters.accept || '${ sr [ 0 ] . mediaType } ') as A` ,
382
396
) ,
383
397
) ;
384
398
@@ -409,7 +423,7 @@ export const serializeOperationObject = combineReader(
409
423
}` ;
410
424
411
425
const io = `
412
- ${ operationName } : ( ${ argsIO } ) => {
426
+ ${ operationName } : ${ methodTypeIO } => {
413
427
${ bodyIO }
414
428
${ queryIO }
415
429
${ headersIO }
0 commit comments