1
1
import path from 'path'
2
2
import fs from 'fs-extra'
3
- import { pascalCase } from 'change-case'
4
- import { Config , ApiList , InterfaceType } from './types'
3
+ import * as changeCase from 'change-case'
4
+ import { Config , ApiList , InterfaceType , ExtendedApi } from './types'
5
5
import fetchApiCollection from './fetchApiCollection'
6
6
import generateRequestPayloadType from './generateRequestPayloadType'
7
7
import generateResponsePayloadType from './generateResponsePayloadType'
@@ -20,14 +20,19 @@ export default async (config: Config): Promise<void> => {
20
20
const { getRequestFunctionName, getInterfaceName } = config . categories [ categoryId ]
21
21
return Promise . all (
22
22
categoryIdToApiList [ categoryId ] . map ( async api => {
23
- const requestDataInterfaceName = pascalCase ( getInterfaceName ( api , InterfaceType . Request ) )
24
- const responseDataInterfaceName = pascalCase ( getInterfaceName ( api , InterfaceType . Response ) )
23
+ const extendedApi : ExtendedApi = {
24
+ ...api ,
25
+ parsedPath : path . parse ( api . path ) ,
26
+ changeCase : changeCase ,
27
+ }
28
+ const requestDataInterfaceName = changeCase . pascalCase ( getInterfaceName ( extendedApi , InterfaceType . Request ) )
29
+ const responseDataInterfaceName = changeCase . pascalCase ( getInterfaceName ( extendedApi , InterfaceType . Response ) )
25
30
const requestPayloadType = ( await generateRequestPayloadType ( api , requestDataInterfaceName ) ) . trim ( )
26
31
const responsePayloadType = ( await generateResponsePayloadType ( api , responseDataInterfaceName , config . dataKey ) ) . trim ( )
27
32
return [
28
33
`/**\n * **请求类型**:${ api . title } \n */\n${ requestPayloadType } ` ,
29
34
`/**\n * **响应类型**:${ api . title } \n */\n${ responsePayloadType } ` ,
30
- `/**\n * ${ api . title } \n */\nexport function ${ getRequestFunctionName ( api ) } (data${ / ( \{ \} | a n y ) $ / s. test ( requestPayloadType ) ? '?' : '' } : ${ requestDataInterfaceName } ): Promise<${ responseDataInterfaceName } > {\n${
35
+ `/**\n * ${ api . title } \n */\nexport function ${ getRequestFunctionName ( extendedApi ) } (data${ / ( \{ \} | a n y ) $ / s. test ( requestPayloadType ) ? '?' : '' } : ${ requestDataInterfaceName } ): Promise<${ responseDataInterfaceName } > {\n${
31
36
[
32
37
` return request({` ,
33
38
` path: '${ api . path } ',` ,
0 commit comments