Skip to content

Commit f2eeb9d

Browse files
feat(eslint-plugin): expose rule name via RuleModule interface (#11616)
* feat: expose rule name on RuleModule interface * fix: resolve type errors after adding name to RuleModule * Update packages/utils/src/ts-eslint/Rule.ts Co-authored-by: Josh Goldberg ✨ <[email protected]> * Update packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts Co-authored-by: Josh Goldberg ✨ <[email protected]> * fix: update rule name in no-unused-vars test to match definition * refactor: add name property to RuleWithMeta --------- Co-authored-by: Josh Goldberg ✨ <[email protected]>
1 parent 9aebdaf commit f2eeb9d

File tree

6 files changed

+18
-0
lines changed

6 files changed

+18
-0
lines changed

packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars-eslint.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ ruleTester.defineRule('use-every-a', {
4040
schema: [],
4141
type: 'problem',
4242
},
43+
name: 'use-every-a',
4344
});
4445

4546
/**

packages/eslint-plugin/tests/rules/no-unused-vars/no-unused-vars.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ ruleTester.defineRule('collect-unused-vars', {
3232
schema: [],
3333
type: 'problem',
3434
},
35+
name: 'collect-unused-vars',
3536
});
3637

3738
ruleTester.run('no-unused-vars', rule, {

packages/rule-tester/tests/RuleTester.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ const NOOP_RULE: RuleModule<'error'> = {
9494
schema: [],
9595
type: 'problem',
9696
},
97+
name: 'rule',
9798
};
9899

99100
function windowsToPosixPath(p: string): string {
@@ -1108,6 +1109,7 @@ describe('RuleTester - hooks', () => {
11081109
schema: [],
11091110
type: 'problem',
11101111
},
1112+
name: 'rule',
11111113
};
11121114

11131115
const ruleTester = new RuleTester();
@@ -1331,6 +1333,7 @@ describe('RuleTester - multipass fixer', () => {
13311333
schema: [],
13321334
type: 'problem',
13331335
},
1336+
name: 'rule',
13341337
};
13351338

13361339
it('passes with no output', () => {
@@ -1416,6 +1419,7 @@ describe('RuleTester - multipass fixer', () => {
14161419
schema: [],
14171420
type: 'problem',
14181421
},
1422+
name: 'rule',
14191423
};
14201424

14211425
it('passes with correct string output', () => {
@@ -1538,6 +1542,7 @@ describe('RuleTester - multipass fixer', () => {
15381542
schema: [],
15391543
type: 'problem',
15401544
},
1545+
name: 'rule',
15411546
};
15421547

15431548
it('passes with correct array output', () => {
@@ -1644,6 +1649,7 @@ describe('RuleTester - run types', () => {
16441649
],
16451650
type: 'suggestion',
16461651
},
1652+
name: 'rule',
16471653
};
16481654

16491655
describe('infer from `rule` parameter', () => {

packages/rule-tester/tests/filename.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const rule = ESLintUtils.RuleCreator.withoutDocs({
1919
type: 'problem',
2020
hasSuggestions: true,
2121
},
22+
name: 'rule',
2223
defaultOptions: [],
2324
create: context => ({
2425
Program(node): void {

packages/utils/src/eslint-utils/RuleCreator.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export interface RuleWithMeta<
3636
Docs = unknown,
3737
> extends RuleCreateAndOptions<Options, MessageIds> {
3838
meta: RuleMetaData<MessageIds, Docs, Options>;
39+
name: string;
3940
}
4041

4142
export interface RuleWithMetaAndName<
@@ -76,6 +77,7 @@ export function RuleCreator<PluginDocs = unknown>(
7677
url: urlCreator(name),
7778
},
7879
},
80+
name,
7981
...rule,
8082
});
8183
};
@@ -89,6 +91,7 @@ function createRule<
8991
create,
9092
defaultOptions,
9193
meta,
94+
name,
9295
}: Readonly<RuleWithMeta<Options, MessageIds, PluginDocs>>): RuleModule<
9396
MessageIds,
9497
Options,
@@ -101,6 +104,7 @@ function createRule<
101104
},
102105
defaultOptions,
103106
meta,
107+
name,
104108
};
105109
}
106110

packages/utils/src/ts-eslint/Rule.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,11 @@ export interface RuleModule<
735735
* Metadata about the rule
736736
*/
737737
meta: RuleMetaData<MessageIds, Docs, Options>;
738+
739+
/**
740+
* Rule name
741+
*/
742+
name: string;
738743
}
739744

740745
export type AnyRuleModule = RuleModule<string, readonly unknown[]>;

0 commit comments

Comments
 (0)