7
7
SerializedType ,
8
8
} from '../../common/data/serialized-type' ;
9
9
import { pipe } from 'fp-ts/lib/pipeable' ;
10
- import { exists , getOrElse , map , none , Option , some } from 'fp-ts/lib/Option' ;
10
+ import { getOrElse , map , Option } from 'fp-ts/lib/Option' ;
11
11
import { flatten } from 'fp-ts/lib/Array' ;
12
12
import { serializeOperationResponses } from './responses-object' ;
13
13
import { fromArray , head , NonEmptyArray } from 'fp-ts/lib/NonEmptyArray' ;
@@ -22,7 +22,6 @@ import {
22
22
getSerializedKindDependency ,
23
23
serializedDependency ,
24
24
} from '../../common/data/serialized-dependency' ;
25
- import { identity } from 'fp-ts/lib/function' ;
26
25
import { concatIf , concatIfL } from '../../../../utils/array' ;
27
26
import { unless , when } from '../../../../utils/string' ;
28
27
import { Context , getJSDoc , getURL , HTTPMethod , getKindValue } from '../../common/utils' ;
@@ -150,6 +149,7 @@ const getParameters = combineReader(
150
149
}
151
150
}
152
151
} else {
152
+ // if parameter has already been processed then skip it
153
153
if ( contains ( parameter , processedParameters ) ) {
154
154
continue ;
155
155
}
@@ -169,7 +169,11 @@ const getParameters = combineReader(
169
169
break ;
170
170
}
171
171
case 'query' : {
172
- const serialized = serializeQueryParameter ( from , parameter ) ;
172
+ const serialized = pipe (
173
+ serializeParameterObject ( from , parameter ) ,
174
+ either . map ( getSerializedPropertyType ( parameter . name , isRequired ( parameter ) ) ) ,
175
+ either . map ( fromSerializedType ( isRequired ( parameter ) ) ) ,
176
+ ) ;
173
177
if ( isLeft ( serialized ) ) {
174
178
return serialized ;
175
179
}
@@ -231,6 +235,7 @@ export const serializeOperationObject = combineReader(
231
235
pathItem : PathItemObject ,
232
236
) : Either < Error , SerializedType > => {
233
237
const parameters = getParameters ( from , operation , pathItem ) ;
238
+ const operationName = getOperationName ( operation , method ) ;
234
239
235
240
const serializedResponses = serializeOperationResponses ( from , operation . responses ) ;
236
241
@@ -274,33 +279,26 @@ export const serializeOperationObject = combineReader(
274
279
const hasBodyParameters = parameters . bodyParameters . length > 0 ;
275
280
const hasParameters = hasQueryParameters || hasBodyParameters ;
276
281
277
- const argsName = concatIf ( hasParameters , parameters . pathParameters . map ( p => p . name ) , [
278
- 'parameters' ,
279
- ] ) . join ( ',' ) ;
280
282
const argsType = concatIfL ( hasParameters , parameters . serializedPathParameters . map ( p => p . type ) , ( ) => [
281
283
`parameters: { ${ serializedParameters . type } }` ,
282
284
] ) . join ( ',' ) ;
283
285
284
- const paramsSummary = serializeParametersDescription ( [
285
- ...parameters . queryParameters ,
286
- ...parameters . bodyParameters ,
287
- ] ) ;
288
- const operationName = getOperationName ( operation , method ) ;
289
-
290
286
const type = `
291
- ${ getJSDoc ( array . compact ( [ deprecated , operation . summary , paramsSummary ] ) ) }
287
+ ${ getJSDoc ( array . compact ( [ deprecated , operation . summary ] ) ) }
292
288
readonly ${ operationName } : (${ argsType } ) => ${ getKindValue ( kind , serializedResponses . type ) } ;
293
289
` ;
294
290
295
- const serializedUrl = getURL ( url , parameters . serializedPathParameters ) ;
291
+ const argsName = concatIf ( hasParameters , parameters . pathParameters . map ( p => p . name ) , [
292
+ 'parameters' ,
293
+ ] ) . join ( ',' ) ;
296
294
297
295
const io = `
298
296
${ operationName } : (${ argsName } ) => {
299
297
${ when ( hasParameters , `const encoded = partial({ ${ serializedParameters . io } }).encode(parameters);` ) }
300
298
301
299
return e.httpClient.chain(
302
300
e.httpClient.request({
303
- url: ${ serializedUrl } ,
301
+ url: ${ getURL ( url , parameters . serializedPathParameters ) } ,
304
302
method: '${ method } ',
305
303
${ when ( hasQueryParameters , 'query: encoded.query,' ) }
306
304
${ when ( hasBodyParameters , 'body: encoded.body,' ) }
@@ -341,27 +339,6 @@ const getOperationName = (operation: OperationObject, httpMethod: string) =>
341
339
getOrElse ( ( ) => httpMethod ) ,
342
340
) ;
343
341
344
- const serializeParametersDescription = (
345
- parameters : Array < QueryParameterObject | BodyParameterObject > ,
346
- ) : Option < string > => {
347
- const hasRequiredParameters = parameters . some ( p =>
348
- pipe (
349
- p . required ,
350
- exists ( identity ) ,
351
- ) ,
352
- ) ;
353
- return parameters . length === 0
354
- ? none
355
- : some ( hasRequiredParameters ? '@param { object } parameters' : '@param { object } [parameters]' ) ;
356
- } ;
357
-
358
- const serializeQueryParameter = ( from : Ref , parameter : QueryParameterObject ) : Either < Error , SerializedParameter > =>
359
- pipe (
360
- serializeParameterObject ( from , parameter ) ,
361
- either . map ( getSerializedPropertyType ( parameter . name , isRequired ( parameter ) ) ) ,
362
- either . map ( fromSerializedType ( isRequired ( parameter ) ) ) ,
363
- ) ;
364
-
365
342
const serializeBodyParameterObjects = (
366
343
from : Ref ,
367
344
parameters : NonEmptyArray < BodyParameterObject > ,
0 commit comments