UNPKG

openapi-ts-request

Version:

Swagger2/OpenAPI3/Apifox to TypeScript/JavaScript, request client(support any client), request mock service, enum and enum translation, react-query/vue-query, type field label, JSON Schemas

75 lines (74 loc) 2.51 kB
import type { GenerateServiceProps } from '../index'; import type { OpenAPIObject } from '../type'; import type { ControllerType, ISchemaItem, ITypeItem, TagAPIDataType } from './type'; export default class ServiceGenerator { protected apiData: TagAPIDataType; protected classNameList: ControllerType[]; protected config: GenerateServiceProps; protected openAPIData: OpenAPIObject; protected schemaList: ISchemaItem[]; protected interfaceTPConfigs: ITypeItem[]; constructor(config: GenerateServiceProps, openAPIData: OpenAPIObject); genFile(): void; private getInterfaceTPConfigs; private getServiceTPConfigs; private genFileFromTemplate; private getTemplate; private getFunctionName; private getType; private getFunctionParamsTypeName; private getBodyTP; private getFileTP; private resolveFileTP; private getResponseTP; /** * 生成多状态码响应类型定义 * 将 OpenAPI 的 responses 对象转换为 TypeScript 类型定义 * 例如:{ 200: ResponseType, 400: unknown, 404: unknown } * * @param responses OpenAPI 响应对象 * @param functionName 函数名称,用于生成主响应类型名称 * @returns 多状态码响应类型定义字符串,如果没有响应则返回 null */ private getResponsesType; /** * 解析响应条目,提取每个状态码对应的类型和描述信息 * * @param responses OpenAPI 响应对象 * @param components OpenAPI 组件对象,用于解析引用类型 * @returns 响应条目数组,包含状态码、类型和描述 */ private parseResponseEntries; /** * 从响应内容中提取 TypeScript 类型 * 处理不同的媒体类型和 schema 类型 * * @param response 响应对象 * @param components OpenAPI 组件对象 * @returns TypeScript 类型字符串 */ private getResponseTypeFromContent; private getParamsTP; private resolveObject; private resolveArray; private resolveProperties; private resolveEnumObject; private resolveAllOfObject; private getProps; private resolveParameterRef; private resolveRefObject; log(message: string): void; private generateInfoLog; /** * 校验规则 * @param regexp 正则数组 * @param data 数据 */ private validateRegexp; /** * * @param item 数组数据 * @param reg 规则 */ private matches; }