in src/resolver/client.js [76:138]
resolve() {
const object = this.object;
const combinator = this.combinator;
const config = this.config;
const ast = this.ast;
combinator.config.emitType = 'client';
object.name = config.clientName || 'Client';
// resolve props
this.resolveProps(ast);
// resolve global annotation
if (ast.annotation) {
this.initAnnotation(ast.annotation);
}
object.topAnnotation.push(new AnnotationItem(
object.index,
'single',
config.generateFileInfo
));
// resolve extends
if (ast.extends) {
object.extends.push(`^${ast.extends.lexeme}`);
} else if (config.baseClient) {
let extendsClass = [];
if (Array.isArray(config.baseClient)) {
config.baseClient.forEach(item => extendsClass.push(`^${item}`));
} else {
extendsClass = [`^${config.baseClient}`];
}
object.extends = extendsClass;
}
// resolve construct body
const [init] = ast.moduleBody.nodes.filter((item) => {
return item.type === 'init';
});
if (init) {
this.resolveInitBody(init);
}
// resolve api
ast.moduleBody.nodes.filter((item) => {
return item.type === 'api';
}).forEach(item => {
const func = new FuncItem();
func.name = item.apiName.lexeme;
this.resolveFunc(func, item, item.apiBody);
});
// resolve function
ast.moduleBody.nodes.filter((item) => {
return item.type === 'function';
}).forEach(item => {
const func = new FuncItem();
func.name = item.functionName.lexeme;
this.resolveFunc(func, item, item.functionBody);
});
return object;
}