UNPKG

@lonu/stc

Version:

A tool for converting OpenApi/Swagger/Apifox into code.

118 lines 3.06 kB
import type { DefaultConfigOptions, IDefinitionVirtualProperty, IPathVirtualProperty, ISwaggerResult } from "../swagger.js"; interface IPluginEvent { /** * 加载完成事件 * @param data - 原始数据 */ onLoad?: (data: ISwaggerResult, options: IPluginOptions) => void; /** * 类型定义事件 * @param data - 类型定义 */ onDefinition?: (data: Map<string, IDefinitionVirtualProperty | IDefinitionVirtualProperty[]>, options: IPluginOptions) => void; /** * 接口数据事件 * @param data - 接口数据 */ onAction?: (data: Map<string, IPathVirtualProperty>, options: IPluginOptions) => void; /** * 转换事件 * @param def - 类型定义 * @param action - 接口数据 */ onTransform: (def: Map<string, IDefinitionVirtualProperty | IDefinitionVirtualProperty[]>, action: Map<string, IPathVirtualProperty>, options: IPluginOptions) => Promise<IPluginTransform> | IPluginTransform; /** * 结束事件 */ onEnd?: (options: IPluginOptions) => Promise<void> | void; } export interface IPluginContext extends Partial<IPluginEvent> { /** * 选项 */ readonly options: IPluginOptions; } export interface IPluginTransformDefinition { /** * 文件名 */ filename: string; /** * 文件内容 */ content: string; } export interface IPluginTransform { /** * 类型定义 */ definition?: IPluginTransformDefinition; /** * 接口数据 */ action?: Map<string, string>; } export interface IPlugin extends IPluginEvent { /** * 插件名称 */ readonly name: string; /** * 插件生成的语言,与选项的 `lang` 一致 */ readonly lang: string; /** * 插件入口 */ setup: (context: IPluginContext) => Promise<IPluginSetup> | IPluginSetup; } export interface IPluginSetup { /** * 未知类型 */ unknownType?: string; /** * 类型映射 */ typeMap: (convertFunc: (type: string, ref?: string, pluginOptions?: IPluginSetup) => string, type?: string) => Record<string, string>; template: IPluginTemplate; /** * 语言插件目录名称 * @default `options.lang` */ langDirectoryName?: string; /** * 模板文件路径 * @default `./src/plugins/{{langDirectoryName}}/template` */ templatePath?: string; } export type IPluginOptions = DefaultConfigOptions & Partial<IPluginSetup>; interface IPluginTemplate { /** * 枚举 */ readonly enum: string; /** * 定义文件头 */ readonly definitionHeader: string; /** * 定义文件主体部分 */ readonly definitionBody: string; /** * 定义文件尾 */ readonly definitionFooter: string; /** * 接口文件导入 */ readonly actionImport: string; /** * 接口文件方法 */ readonly actionMethod: string; } export {}; //# sourceMappingURL=typeDeclaration.d.ts.map