Skip to content

Commit 8c58c54

Browse files
authored
fix(eslint-plugin): ignore underscore-prefixed params in unresolvedProviderDependencies rule (#281)
Parameters prefixed with `_` are a TypeScript convention for intentionally unused parameters. The `unresolvedProviderDependencies` ESLint rule was incorrectly flagging these as unresolved dependencies. - Add `isDependencyPrefixedWithUnderscore` method to `Provider` DTO to detect `_`-prefixed params - Update `GraphHandler` to skip the unresolved dependency check for such parameters - Add fixture and test case for a graph with an underscore-prefixed provider param
1 parent ca971d3 commit 8c58c54

File tree

4 files changed

+21
-1
lines changed

4 files changed

+21
-1
lines changed

packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/graphHandler.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ export class GraphHandler {
1717
const graph = this.classAdapter.classToGraph(clazz.node, this.context.currentFilePath)!;
1818
const providers = graph.resolveProviders();
1919
for (const provider of graph.getProviders()) {
20-
const unresolvedDep = provider.dependencies.find(dep => dep.isNotProvided(providers));
20+
const unresolvedDep = provider.dependencies.find(dep => (
21+
dep.isNotProvided(providers) && !provider.isDependencyPrefixedWithUnderscore(dep)
22+
));
2123
if (unresolvedDep) return { provider, unresolvedDep };
2224
}
2325
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { graph, ObjectGraph, provides } from 'react-obsidian';
2+
3+
@graph()
4+
export default class GraphWithUnderscorePrefixedParam extends ObjectGraph {
5+
@provides()
6+
provider(_unusedParam: string): string {
7+
return 'value';
8+
}
9+
}

packages/eslint-plugin-obsidian/tests/unresolvedProviderDependencies/unresolvedDependencies.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ ruleTester.run(
7171
filename: 'validGraphWithExternalSubgraph.ts',
7272
skip: skipValid,
7373
},
74+
{
75+
code: loadFixture('validGraphWithUnderscorePrefixedParam.ts'),
76+
filename: 'validGraphWithUnderscorePrefixedParam.ts',
77+
skip: skipValid,
78+
},
7479
],
7580
invalid: [
7681
{

packages/ts-morph-extensions/src/dto/provider.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ export class Provider {
4646
};
4747
}
4848

49+
public isDependencyPrefixedWithUnderscore(dependency: Parameter) {
50+
return this.dependencies.some(dep => dep.node.getName() === `_${dependency.name}`);
51+
}
52+
4953
public get dependencies() {
5054
return this.node.getParameters().map(param => new Parameter(param));
5155
}

0 commit comments

Comments
 (0)