@ng-doc/builder
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
30 lines • 1.39 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOverriddenMember = getOverriddenMember;
const ts_morph_1 = require("ts-morph");
const class_1 = require("../class");
const interface_1 = require("../interface");
const find_member_1 = require("./find-member");
const get_member_parent_1 = require("./get-member-parent");
/**
* Returns member that was overridden by the provided one
* @param member - Target member
*/
function getOverriddenMember(member) {
const parent = (0, get_member_parent_1.getMemberParent)(member);
const name = member.getName();
if (ts_morph_1.Node.isClassDeclaration(parent)) {
const baseClass = (0, class_1.findBaseClass)(parent, (cls) => {
const member = (0, find_member_1.findMember)(cls, name);
const isAbstract = ts_morph_1.Node.isAbstractable(member) && member.isAbstract();
return !!member && !isAbstract;
});
return baseClass && (0, find_member_1.findMember)(baseClass, name);
}
if (ts_morph_1.Node.isInterfaceDeclaration(parent)) {
const baseInterface = (0, interface_1.findInterface)(parent, (int) => int !== parent && !!(0, find_member_1.findMember)(int, name));
return baseInterface && (0, find_member_1.findMember)(baseInterface, name);
}
return undefined;
}
//# sourceMappingURL=get-overridden-member.js.map
;