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(); return ` /** * @desc ${inter.description} */ import { request as Request } from '@umijs/max'; export ${paramsCode} export function request(${requestParams}) { return Request('${inter.path}', { method: '${method}', params: { ...params, }, data: ${bodyParamsCode ? '{ ...body }' : '{}'}, ...(options || {}), }); } `; } }