eslint-plugin-obsidian
Version:
ESLint rules for Obsidian
44 lines • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GraphHandler = void 0;
class GraphHandler {
constructor(context, classAdapter) {
this.context = context;
this.classAdapter = classAdapter;
}
handle(clazz) {
var _a, _b;
try {
if (clazz.isGraph) {
const unresolvedDependency = this.findUnresolvedDependency(clazz);
this.reportError(this.context, clazz, unresolvedDependency);
}
}
catch (error) {
const className = (_b = (_a = clazz.node.id) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '<anonymous>';
console.error(`[obsidian/unresolved-provider-dependencies] Unexpected error while checking graph "${className}":`, error);
}
}
findUnresolvedDependency(clazz) {
const graph = this.classAdapter.classToGraph(clazz.node, this.context.currentFilePath);
if (!graph)
return;
const providers = graph.resolveProviders();
for (const provider of graph.getProviders()) {
const unresolvedDep = provider.dependencies.find(dep => (dep.isNotProvided(providers) && !provider.isDependencyPrefixedWithUnderscore(dep)));
if (unresolvedDep)
return { provider, unresolvedDep };
}
}
reportError(context, clazz, providerToUnresolvedDependency) {
if (providerToUnresolvedDependency) {
const { provider, unresolvedDep } = providerToUnresolvedDependency;
const parameter = clazz.requireMethodParameter(provider.name, unresolvedDep.name);
if (!parameter)
return;
context.reportError(parameter.node, 'unresolved-provider-dependencies', { dependencyName: unresolvedDep.name });
}
}
}
exports.GraphHandler = GraphHandler;
//# sourceMappingURL=graphHandler.js.map