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
TypeScript
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;
}>;