import { Interface, BaseClass, Property, CodeGenerator } from 'pont-engine'; export default class MyGenerator extends CodeGenerator { getInterfaceContentInDeclaration(inter: Interface) { const requestParams = inter.getRequestParams(); const paramsCode = inter.getParamsCode('Params'); return ` export ${paramsCode} export type Response = ${inter.responseType} export const init: Response; export function request(${requestParams}): Promise; `; } getBaseClassInDeclaration(base: BaseClass) { const originProps = base.properties; base.properties = base.properties.map((prop) => { return new Property({ ...prop, required: false, }); }); const result = super.getBaseClassInDeclaration(base); base.properties = originProps; return result; } getInterfaceContent(inter: Interface) { const method = inter.method.toUpperCase(); const requestParams = inter.getRequestParams(this.surrounding); const paramsCode = inter.getParamsCode('Params', this.surrounding); const bodyParamsCode = inter.getBodyParamsCode(); console.log(requestParams); return ` /** * @desc ${inter.description} */ import Request from '@/utils/request'; export ${paramsCode} export function request(${requestParams}) { return Request({ url:'${inter.path}', method: '${method}', data: ${method === 'GET' ? 'params' : bodyParamsCode ? 'body' : '{}'}, ...(options || {}), }); } `; } }