Skip to content

Commit

Permalink
feat(ytt.config.ts): 令 getRequestDataTypeName 和 getResponseDataTypeNa…
Browse files Browse the repository at this point in the history
…me 可选
  • Loading branch information
fjc0k committed Apr 18, 2019
1 parent cecab49 commit be83d17
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 17 deletions.
27 changes: 18 additions & 9 deletions src/Generator.ts
Expand Up @@ -57,9 +57,9 @@ export class Generator {
const categoryUID = `_${serverIndex}_${projectIndex}_${categoryIndex}`
const categoryCode = [
[
`const mockUrl${categoryUID} = ${JSON.stringify(syntheticalConfig.mockUrl)}`,
`const prodUrl${categoryUID} = ${JSON.stringify(syntheticalConfig.prodUrl)}`,
`const dataKey${categoryUID} = ${JSON.stringify(syntheticalConfig.dataKey)}`,
`const mockUrl${categoryUID} = ${JSON.stringify(syntheticalConfig.mockUrl)} as any`,
`const prodUrl${categoryUID} = ${JSON.stringify(syntheticalConfig.prodUrl)} as any`,
`const dataKey${categoryUID} = ${JSON.stringify(syntheticalConfig.dataKey)} as any`,
].join('\n'),
...(await Promise.all(
interfaceList.map(
Expand Down Expand Up @@ -335,12 +335,22 @@ export class Generator {
...interfaceInfo,
parsedPath: path.parse(interfaceInfo.path),
}
const requestDataTypeName = changeCase.pascalCase(
await syntheticalConfig.getRequestDataTypeName!(extendedInterfaceInfo, changeCase),
)
const responseDataTypeName = changeCase.pascalCase(
await syntheticalConfig.getResponseDataTypeName!(extendedInterfaceInfo, changeCase),
const requestFunctionName = await syntheticalConfig.getRequestFunctionName!(
extendedInterfaceInfo,
changeCase,
)
const requestDataTypeName = isFunction(syntheticalConfig.getRequestDataTypeName)
? await syntheticalConfig.getRequestDataTypeName(
extendedInterfaceInfo,
changeCase,
)
: changeCase.pascalCase(`${requestFunctionName}Request`)
const responseDataTypeName = isFunction(syntheticalConfig.getResponseDataTypeName)
? await syntheticalConfig.getResponseDataTypeName(
extendedInterfaceInfo,
changeCase,
)
: changeCase.pascalCase(`${requestFunctionName}Response`)
const requestDataType = await Generator.generateRequestDataType({
interfaceInfo: interfaceInfo,
typeName: requestDataTypeName,
Expand All @@ -350,7 +360,6 @@ export class Generator {
typeName: responseDataTypeName,
dataKey: syntheticalConfig.dataKey,
})
const requestFunctionName = await syntheticalConfig.getRequestFunctionName!(extendedInterfaceInfo, changeCase)
const isRequestDataRequired = /(\{\}|any)$/s.test(requestDataType)
return [
`\n/**\n * 接口 **${interfaceInfo.title}** 的 **请求类型**\n */`,
Expand Down
4 changes: 2 additions & 2 deletions src/types.ts
Expand Up @@ -315,15 +315,15 @@ export interface ServerConfig {
* @param changeCase 常用的大小写转换函数集合对象
* @returns 请求数据类型的名称
*/
getRequestDataTypeName(interfaceInfo: ExtendedInterface, changeCase: ChangeCase): string,
getRequestDataTypeName?(interfaceInfo: ExtendedInterface, changeCase: ChangeCase): string,
/**
* 获取响应数据类型的名称。
*
* @param interfaceInfo 接口信息
* @param changeCase 常用的大小写转换函数集合对象
* @returns 响应数据类型的名称
*/
getResponseDataTypeName(interfaceInfo: ExtendedInterface, changeCase: ChangeCase): string,
getResponseDataTypeName?(interfaceInfo: ExtendedInterface, changeCase: ChangeCase): string,
}
>,
}
Expand Down
12 changes: 6 additions & 6 deletions tests/__snapshots__/Generator.test.ts.snap
Expand Up @@ -2,9 +2,9 @@

exports[`Generator 正确生成代码并写入文件 1`] = `
Array [
"const mockUrl_0_0_0 = \\"http://foo.bar/mock/32\\"
const prodUrl_0_0_0 = \\"http://prod.com/\\"
const dataKey_0_0_0 = undefined
"const mockUrl_0_0_0 = \\"http://foo.bar/mock/32\\" as any
const prodUrl_0_0_0 = \\"http://prod.com/\\" as any
const dataKey_0_0_0 = undefined as any
/**
Expand Down Expand Up @@ -329,9 +329,9 @@ import request from \\"./request\\"
// @ts-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, FileData, parseRequestData } from 'yapi-to-typescript'
const mockUrl_0_0_0 = \\"http://foo.bar/mock/32\\"
const prodUrl_0_0_0 = \\"http://prod.com/\\"
const dataKey_0_0_0 = undefined
const mockUrl_0_0_0 = \\"http://foo.bar/mock/32\\" as any
const prodUrl_0_0_0 = \\"http://prod.com/\\" as any
const dataKey_0_0_0 = undefined as any
/**
Expand Down

0 comments on commit be83d17

Please sign in to comment.