Skip to content

Commit

Permalink
fix: 生成的代码使用 import type 引入类型
Browse files Browse the repository at this point in the history
  • Loading branch information
fjc0k committed Mar 18, 2022
1 parent 2ceb20a commit 8af92e6
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 34 deletions.
11 changes: 7 additions & 4 deletions src/Generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ export class Generator {
await fs.outputFile(
requestFunctionFilePath,
dedent`
import { RequestFunctionParams } from 'yapi-to-typescript'
import type { RequestFunctionParams } from 'yapi-to-typescript'
export interface RequestOptions {
/**
Expand Down Expand Up @@ -420,8 +420,8 @@ export class Generator {
requestHookMakerFilePath,
dedent`
import { useState, useEffect } from 'react'
import { RequestConfig } from 'yapi-to-typescript'
import { Request } from ${JSON.stringify(
import type { RequestConfig } from 'yapi-to-typescript'
import type { Request } from ${JSON.stringify(
getNormalizedRelativePath(
requestHookMakerFilePath,
outputFilePath,
Expand Down Expand Up @@ -480,7 +480,10 @@ export class Generator {
: dedent`
// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from ${JSON.stringify(
getNormalizedRelativePath(
Expand Down
113 changes: 85 additions & 28 deletions tests/__snapshots__/Generator.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -4477,7 +4477,10 @@ exports[`Generator 只生成请求数据的 JSON Schema: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -8097,7 +8100,10 @@ exports[`Generator 只生成返回数据的 JSON Schema: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -12215,7 +12221,10 @@ exports[`Generator 排除接口: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -12427,7 +12436,10 @@ exports[`Generator 支持将 token 设为数组: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -15867,7 +15879,7 @@ onlyPostFormDataTest.requestConfig = onlyPostFormDataTestRequestConfig
`;

exports[`Generator 支持将 token 设为数组: 请求文件 1`] = `
"import { RequestFunctionParams } from 'yapi-to-typescript'
"import type { RequestFunctionParams } from 'yapi-to-typescript'

export interface RequestOptions {
/**
Expand Down Expand Up @@ -19450,7 +19462,10 @@ exports[`Generator 支持项目设置里的接口基本路径: 接口文件 1`]

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -21181,7 +21196,7 @@ onlyPostFormDataTest.requestConfig = onlyPostFormDataTestRequestConfig
`;

exports[`Generator 支持项目设置里的接口基本路径: 请求文件 1`] = `
"import { RequestFunctionParams } from 'yapi-to-typescript'
"import type { RequestFunctionParams } from 'yapi-to-typescript'

export interface RequestOptions {
/**
Expand Down Expand Up @@ -22998,7 +23013,10 @@ exports[`Generator 无分类注释: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -26318,7 +26336,10 @@ exports[`Generator 无更新时间注释: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -29638,7 +29659,10 @@ exports[`Generator 无标签注释: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -33148,7 +33172,10 @@ exports[`Generator 无标题注释: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -36278,7 +36305,10 @@ exports[`Generator 无注释: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -38515,7 +38545,10 @@ exports[`Generator 无请求头注释: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -41835,7 +41868,10 @@ exports[`Generator 无链接注释: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -45345,7 +45381,10 @@ exports[`Generator 正确生成代码并写入文件 - 全部分类: 接口文

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -47935,7 +47974,7 @@ jsonTest.requestConfig = jsonTestRequestConfig
`;

exports[`Generator 正确生成代码并写入文件 - 全部分类: 请求文件 1`] = `
"import { RequestFunctionParams } from 'yapi-to-typescript'
"import type { RequestFunctionParams } from 'yapi-to-typescript'

export interface RequestOptions {
/**
Expand Down Expand Up @@ -50642,7 +50681,10 @@ exports[`Generator 正确生成代码并写入文件 - 单分类: 接口文件 1

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -52373,7 +52415,7 @@ onlyPostFormDataTest.requestConfig = onlyPostFormDataTestRequestConfig
`;

exports[`Generator 正确生成代码并写入文件 - 单分类: 请求文件 1`] = `
"import { RequestFunctionParams } from 'yapi-to-typescript'
"import type { RequestFunctionParams } from 'yapi-to-typescript'

export interface RequestOptions {
/**
Expand Down Expand Up @@ -54190,7 +54232,10 @@ exports[`Generator 正确生成代码并写入文件 - 多分类: 接口文件 1

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -56438,7 +56483,7 @@ refTypeTest.requestConfig = refTypeTestRequestConfig
`;

exports[`Generator 正确生成代码并写入文件 - 多分类: 请求文件 1`] = `
"import { RequestFunctionParams } from 'yapi-to-typescript'
"import type { RequestFunctionParams } from 'yapi-to-typescript'

export interface RequestOptions {
/**
Expand Down Expand Up @@ -58791,7 +58836,10 @@ exports[`Generator 正确生成代码并写入文件 - 排除分类: 接口文

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -59672,7 +59720,7 @@ jsonTest.requestConfig = jsonTestRequestConfig
`;

exports[`Generator 正确生成代码并写入文件 - 排除分类: 请求文件 1`] = `
"import { RequestFunctionParams } from 'yapi-to-typescript'
"import type { RequestFunctionParams } from 'yapi-to-typescript'

export interface RequestOptions {
/**
Expand Down Expand Up @@ -64322,8 +64370,8 @@ jsonTest.requestConfig = jsonTestRequestConfig",

exports[`Generator 生成 React Hooks 代码: Hook 生成文件 1`] = `
"import { useState, useEffect } from 'react'
import { RequestConfig } from 'yapi-to-typescript'
import { Request } from \\"./index\\"
import type { RequestConfig } from 'yapi-to-typescript'
import type { Request } from \\"./index\\"
import baseRequest from \\"./request\\"

export default function makeRequestHook<TRequestData, TRequestConfig extends RequestConfig, TRequestResult extends ReturnType<typeof baseRequest>>(request: Request<TRequestData, TRequestConfig, TRequestResult>) {
Expand Down Expand Up @@ -64360,7 +64408,10 @@ exports[`Generator 生成 React Hooks 代码: 接口文件 1`] = `

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'
// @ts-ignore
Expand Down Expand Up @@ -66340,7 +66391,7 @@ export const useOnlyPostFormDataTest = /*#__PURE__*/ makeRequestHook<
`;

exports[`Generator 生成 React Hooks 代码: 请求文件 1`] = `
"import { RequestFunctionParams } from 'yapi-to-typescript'
"import type { RequestFunctionParams } from 'yapi-to-typescript'

export interface RequestOptions {
/**
Expand Down Expand Up @@ -68328,7 +68379,10 @@ exports[`Generator 生成的 JSON Schema 应包含默认值: 接口文件 1`] =

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down Expand Up @@ -69511,7 +69565,10 @@ exports[`Generator 生成请求数据和返回数据的 JSON Schema: 接口文

// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'

Expand Down
7 changes: 5 additions & 2 deletions tests/__snapshots__/cli.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,10 @@ exports[`cli 正确初始化配置文件 & 生成结果: 接口文件 1`] = `
// @ts-ignore
// prettier-ignore
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, FileData, prepare } from 'yapi-to-typescript'
import { Method, RequestBodyType, ResponseBodyType, FileData, prepare } from 'yapi-to-typescript'
// @ts-ignore
// prettier-ignore
import type { RequestConfig, RequestFunctionRestArgs } from 'yapi-to-typescript'
// @ts-ignore
import request from './request'
Expand Down Expand Up @@ -2716,7 +2719,7 @@ hello_28PostJson.requestConfig = hello_28PostJsonRequestConfig
`;
exports[`cli 正确初始化配置文件 & 生成结果: 请求文件 1`] = `
"import { RequestFunctionParams } from 'yapi-to-typescript'
"import type { RequestFunctionParams } from 'yapi-to-typescript'
export interface RequestOptions {
/**
Expand Down

0 comments on commit 8af92e6

Please sign in to comment.