eslint-plugin-obsidian
Version:
ESLint rules for Obsidian
36 lines • 1.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DependencyResolver = void 0;
const classFile_1 = require("../../dto/classFile");
class DependencyResolver {
constructor(subgraphResolver, classResolver) {
this.subgraphResolver = subgraphResolver;
this.classResolver = classResolver;
}
resolve(context, clazz, imports) {
const classWithImports = new classFile_1.ClassFile(clazz, imports, context.currentFilePath);
return [
...this.getGraphDependencies(classWithImports),
...this.getDependenciesFromSubgraphs(classWithImports),
...this.getDependenciesFromSuperClass(classWithImports),
];
}
getDependenciesFromSubgraphs(clazz) {
return this.subgraphResolver
.resolve(clazz)
.flatMap(this.getGraphDependencies);
}
getGraphDependencies({ clazz }) {
var _a;
return (_a = clazz.mapDecoratedMethods('Provides', (method) => method.name)) !== null && _a !== void 0 ? _a : [];
}
getDependenciesFromSuperClass(clazz) {
var _a, _b, _c;
if (!clazz.superClass || clazz.superClass === 'ObjectGraph')
return [];
return (_c = (_b = (_a = this.classResolver
.resolve(clazz.superClass, clazz)) === null || _a === void 0 ? void 0 : _a.clazz) === null || _b === void 0 ? void 0 : _b.mapDecoratedMethods('Provides', (method) => method.name)) !== null && _c !== void 0 ? _c : [];
}
}
exports.DependencyResolver = DependencyResolver;
//# sourceMappingURL=dependencyResolver.js.map