/** * 主要实现流程: * 1. 生成共享对象、生成公共类型 * 2. 递归处理 parameters 上的数据,主要包含 query 和 param(path 参数),生成类型,有公用类型则指向公用类型名称,否则生成类型字符串 * 3. 递归处理 request body 数据,生成类型,有公用类型则指向公用类型名称,否则生成类型字符串 * 4. 递归处理 response 数据,生成类型,有公用类型则指向公用类型名称,否则生成类型字符串 * 5. 遍历 paths 生成 api 描述数据数据 */ import { API } from '../interface/common'; import { Docs } from 'src/interface/swagger3/doc'; export interface FieldRecord { field: string; type: string; required: boolean; nullable: boolean; description: string; } export interface SchemaParserOptions { isoStringTypeName: string; /** 处理 path,该 path 用于接口(interface)名称 */ getPath: (patch: string) => string; } export declare class SchemaParser { #private; /** 所有类型名字 -> 类型字符串 */ types: Record; /** 所有 api 列表 */ apis: API[]; constructor(docs: Docs, options?: SchemaParserOptions); /** 创建 interface 字符串 */ private createInterfaceString; /** 生成带有继承关系的类型字符串 */ private createExtendsInterfaceString; /** 创建 type 类型个别名字符串 */ private createTypeAliasString; /** 将 api path 和 请求方式组合生成 api 名称 */ private mapApiPathToApiName; /** 过滤得到合法的 schema */ private getLegalSchema; private getTypeNameFromSchema; private createInterfaceStringFormObjectSchema; /** 创建所有的类型相关信息 */ private createAllTypeData; /** 解析 components/schema 下的公共数据生成类型 */ private createCommonTypes; /** 解析 query 和 param 的类型 */ private createQueryAndParamTypes; /** 解析 body 类型 */ private createBodyTypes; /** 解析 response 类型 */ private createResponseTypes; /** 生成接口并添加到 this.APIList */ private createAPIs; /** 开始解析 */ parse(): void; }