@api-helper/core
Version:
根据 Swagger 的接口定义生成 TypeScript/JavaScript 的接口类型及其请求函数代码。
113 lines (112 loc) • 3.45 kB
TypeScript
import type { OpenAPI } from 'openapi-types';
export declare type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
export declare namespace APIHelper {
type TemplateContent = {
title: string;
content: string;
};
type OpenAPIDocument = OpenAPI.Document & {
documentServerUrl?: string;
};
type CategoryList = Array<Category>;
type APIList = Array<API>;
type SchemaList = Array<Schema>;
type SchemaType = 'string' | 'number' | 'object' | 'array' | 'boolean' | 'null' | 'any' | 'File' | 'unknown';
interface Document {
id: string;
title: OpenAPI.Document['info']['title'];
description: OpenAPI.Document['info']['description'];
version: OpenAPI.Document['info']['version'];
documentVersion: string;
basePath: string;
documentServerUrl: string;
categoryList: CategoryList;
}
interface Category {
id: string;
name: string;
description: string;
apiList: APIList;
}
interface API {
id: string;
title: string;
description: string;
label: string;
docURL?: string;
path: string;
method: string;
formDataKeyNameList: Array<string>;
pathParamKeyNameList: Array<string>;
queryStringKeyNameList: Array<string>;
requestDataSchema: Schema | null;
requestExtraDataSchema: Schema | null;
responseDataSchema: Schema | null;
requestContentType: string[];
responseContentType: string[];
headers: Schema | null;
cookies: Schema | null;
}
type Schema = IStringSchema | INumberSchema | IObjectSchema | IArraySchema | IBooleanSchema | IFileSchema | INullSchema | IAnySchema | IUnknownSchema;
interface IAbstractSchema {
id: string;
type: SchemaType | string;
keyName: string;
title: string;
description: string;
label: string;
rules: {
required: boolean;
};
examples: string[];
params: Schema[];
enum: Array<string | number>;
}
interface IStringSchema extends IAbstractSchema {
type: 'string';
rules: {
required: boolean;
minLength?: number;
maxLength?: number;
pattern?: string;
};
}
interface INumberSchema extends IAbstractSchema {
type: 'number';
rules: {
required: boolean;
multipleOf?: number;
minimum?: number;
maximum?: number;
exclusiveMinimum?: number | boolean;
exclusiveMaximum?: number | boolean;
};
}
interface IObjectSchema extends IAbstractSchema {
type: 'object';
}
interface IArraySchema extends IAbstractSchema {
type: 'array';
rules: {
required: boolean;
minLength?: number;
maxLength?: number;
uniqueItems?: boolean;
};
}
interface IBooleanSchema extends IAbstractSchema {
type: 'boolean';
}
interface IFileSchema extends IAbstractSchema {
type: 'File';
}
interface INullSchema extends IAbstractSchema {
type: 'null';
}
interface IAnySchema extends IAbstractSchema {
type: 'any';
}
interface IUnknownSchema extends IAbstractSchema {
type: 'unknown';
}
}