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

186 lines (185 loc) 5.37 kB
import type { OpenAPIV3 } from 'openapi-types'; import type { ArraySchemaObject, ISchemaObject, OpenAPIObject, ParameterObject, ReferenceObject, ResponseObject, ResponsesObject, SchemaObject } from '../type'; import type { IPropObject, ITypeItem } from './type'; /** * 解析对象类型参数 */ export interface ResolveObjectParams { schemaObject: ISchemaObject; openAPIData: OpenAPIObject; config: { namespace?: string; isSupportParseEnumDesc?: boolean; supportParseEnumDescByReg?: string | RegExp; }; getType: (schemaObject: ISchemaObject, namespace?: string) => string; resolveRefObject: <T>(refObject: ReferenceObject | T) => T; } /** * 解析数组类型 */ export declare function resolveArray(params: { schemaObject: ArraySchemaObject; namespace?: string; getType: (schemaObject: ISchemaObject, namespace?: string) => string; }): { type: string; }; /** * 解析属性 */ export declare function resolveProperties(params: { schemaObject: SchemaObject; getProps: (schemaObject: SchemaObject) => IPropObject[]; }): { props: IPropObject[][]; }; /** * 解析枚举对象 */ export declare function resolveEnumObject(params: { schemaObject: SchemaObject; config: { isSupportParseEnumDesc?: boolean; supportParseEnumDescByReg?: string | RegExp; }; }): { isEnum: boolean; type: string; enumLabelType: string; description?: string; }; /** * 解析 allOf 对象 */ export declare function resolveAllOfObject(params: { schemaObject: SchemaObject; getType: (schemaObject: ISchemaObject) => string; getProps: (schemaObject: SchemaObject) => IPropObject[]; }): { props: (IPropObject[] | { type: string; }[])[]; }; /** * 获取 TS 类型的属性列表 */ export declare function getProps(params: { schemaObject: SchemaObject; getType: (schema: SchemaObject) => string; openAPIData?: OpenAPIObject; }): IPropObject[]; /** * 解析参数引用 */ export declare function resolveParameterRef(params: { param: ParameterObject | ReferenceObject; openAPIData: OpenAPIObject; }): ParameterObject | null; /** * 解析引用对象 */ export declare function resolveRefObject<T>(params: { refObject: ReferenceObject | T; openAPIData: OpenAPIObject; resolveRefObjectFunc: (params: { refObject: ReferenceObject | T; openAPIData: OpenAPIObject; resolveRefObjectFunc: (params: { refObject: ReferenceObject | T; openAPIData: OpenAPIObject; resolveRefObjectFunc: any; }) => T; }) => T; }): T; /** * 生成多状态码响应类型定义 */ export declare function getResponsesType(params: { responses: ResponsesObject; functionName: string; interfaceTPConfigs: ITypeItem[]; components: OpenAPIV3.ComponentsObject; getResponseTypeFromContentFunc: (params: { response: ResponseObject; components: OpenAPIV3.ComponentsObject; }) => string; resolveRefObjectFunc: <T>(refObject: ReferenceObject | T) => T; }): string | null; /** * 解析响应条目 */ export declare function parseResponseEntries(params: { responses: ResponsesObject; components: OpenAPIV3.ComponentsObject; getResponseTypeFromContentFunc: (params: { response: ResponseObject; components: OpenAPIV3.ComponentsObject; }) => string; resolveRefObjectFunc: <T>(refObject: ReferenceObject | T) => T; }): Array<{ statusCode: string; type: string; description: string; }>; /** * 从响应内容中提取 TypeScript 类型 */ export declare function getResponseTypeFromContent(params: { response: ResponseObject; components: OpenAPIV3.ComponentsObject; config: { dataFields?: string[]; binaryMediaTypes?: string[]; }; getType: (schema: SchemaObject) => string; }): string; /** * 获取参数模板 */ export declare function getParamsTP(params: { parameters?: (ParameterObject | ReferenceObject)[]; path?: string; namespace?: string; openAPIData: OpenAPIObject; getType: (schema: ISchemaObject, namespace?: string) => string; resolveParameterRefFunc: (params: { param: ParameterObject | ReferenceObject; openAPIData: OpenAPIObject; }) => ParameterObject | null; }): Record<string, ParameterObject[]>; /** * 分析类型定义中使用的类型名称 */ export declare function analyzeTypeReferences(types: ITypeItem[]): Set<string>; /** * 获取模块需要导入的类型 */ export declare function getModuleImports(params: { moduleTypes: ITypeItem[]; commonTypes: ITypeItem[]; enumTypes: ITypeItem[]; }): { commonImports: string[]; enumImports: string[]; }; /** * 将公共类型依赖的类型从模块类型移到公共类型 * 同时检测跨模块引用,将被多个模块使用的类型移到公共类型 * @param moduleTypes 模块类型 * @param commonTypes 公共类型 */ export declare function moveCommonTypeDependenciesToCommon(params: { moduleTypes: Map<string, ITypeItem[]>; commonTypes: ITypeItem[]; }): void; /** * 解析文件模板 */ export declare function resolveFileTP(params: { obj: SchemaObject; resolveObjectFunc: (schemaObject: SchemaObject) => any; }): Array<{ title: string; multiple: boolean; }>;