-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
feat(eslint-plugin): expose rule name via RuleModule interface #11616
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(eslint-plugin): expose rule name via RuleModule interface #11616
Conversation
|
Thanks for the PR, @y-hsgw! typescript-eslint is a 100% community driven project, and we are incredibly grateful that you are contributing to that community. The core maintainers work on this in their personal time, so please understand that it may not be possible for them to review your work immediately. Thanks again! 🙏 Please, if you or your company is finding typescript-eslint valuable, help us sustain the project by sponsoring it transparently on https://opencollective.com/typescript-eslint. |
✅ Deploy Preview for typescript-eslint ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
View your CI Pipeline Execution ↗ for commit cc82d44
☁️ Nx Cloud last updated this comment at |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #11616 +/- ##
=======================================
Coverage 90.93% 90.93%
=======================================
Files 506 506
Lines 51394 51397 +3
Branches 8482 8482
=======================================
+ Hits 46735 46738 +3
Misses 4646 4646
Partials 13 13
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
JoshuaKGoldberg
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(just leaving some drive-by comments, not a full review for now)
| schema: [], | ||
| type: 'problem', | ||
| }, | ||
| name: 'rule', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Testing] For consistency with the rest of the block:
| name: 'rule', | |
| name: 'use-every-a', |
🤔 I wonder if we should write a lint rule for this...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That makes sense.
By the way, instead of adding a separate lint rule, do you think we could change the defineRule logic itself so that it automatically keeps the name consistent, like in the following example?
typescript-eslint/packages/rule-tester/src/RuleTester.ts
Lines 447 to 448 in c198052
| defineRule(name: string, rule: AnyRuleModule): void { | |
| this.#rules[name] = { |
defineRule(rule: AnyRuleModule): void {
this.#rules[rule.name] = {There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, that's an interesting idea. I like it. But I think it'd be a behavioral change that differs from the ESLint core RuleTester. We're restricted from doing those too much. It'll have to be something we talk about separately 😞.
Co-authored-by: Josh Goldberg ✨ <git@joshuakgoldberg.com>
…rs-eslint.test.ts Co-authored-by: Josh Goldberg ✨ <git@joshuakgoldberg.com>
JoshuaKGoldberg
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks! I'm glad this ended up being a clean diff. 🙂
Can you update the PR's description to reflect the changes?
JoshuaKGoldberg
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(wrong button)
|
Thanks for the review! I’ve updated the description ✅ |
|
Swell! We might have docs work to do later on to more prominently mention this. But for now I think "soft launching" with just the types change is best. 🚀 |
f2eeb9d
into
typescript-eslint:main
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.44.1 | 8.45.0 | | npm | @typescript-eslint/parser | 8.44.1 | 8.45.0 | ## [v8.45.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8450-2025-09-29) ##### 🚀 Features - **eslint-plugin:** expose rule name via RuleModule interface ([#11616](typescript-eslint/typescript-eslint#11616)) ##### 🩹 Fixes - **eslint-plugin:** \[prefer-nullish-coalescing] ignoreBooleanCoercion should not apply to top-level ternary expressions ([#11614](typescript-eslint/typescript-eslint#11614)) - **eslint-plugin:** \[no-base-to-string] check if superclass is ignored ([#11617](typescript-eslint/typescript-eslint#11617)) ##### ❤️ Thank You - mdm317 - Moses Odutusin [@thebolarin](https://github.com/thebolarin) - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.44.1 | 8.45.0 | | npm | @typescript-eslint/parser | 8.44.1 | 8.45.0 | ## [v8.45.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8450-2025-09-29) ##### 🚀 Features - **eslint-plugin:** expose rule name via RuleModule interface ([#11616](typescript-eslint/typescript-eslint#11616)) ##### 🩹 Fixes - **eslint-plugin:** \[prefer-nullish-coalescing] ignoreBooleanCoercion should not apply to top-level ternary expressions ([#11614](typescript-eslint/typescript-eslint#11614)) - **eslint-plugin:** \[no-base-to-string] check if superclass is ignored ([#11617](typescript-eslint/typescript-eslint#11617)) ##### ❤️ Thank You - mdm317 - Moses Odutusin [@thebolarin](https://github.com/thebolarin) - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.44.1 | 8.45.0 | | npm | @typescript-eslint/parser | 8.44.1 | 8.45.0 | ## [v8.45.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8450-2025-09-29) ##### 🚀 Features - **eslint-plugin:** expose rule name via RuleModule interface ([#11616](typescript-eslint/typescript-eslint#11616)) ##### 🩹 Fixes - **eslint-plugin:** \[prefer-nullish-coalescing] ignoreBooleanCoercion should not apply to top-level ternary expressions ([#11614](typescript-eslint/typescript-eslint#11614)) - **eslint-plugin:** \[no-base-to-string] check if superclass is ignored ([#11617](typescript-eslint/typescript-eslint#11617)) ##### ❤️ Thank You - mdm317 - Moses Odutusin [@thebolarin](https://github.com/thebolarin) - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.
| datasource | package | from | to | | ---------- | -------------------------------- | ------ | ------ | | npm | @typescript-eslint/eslint-plugin | 8.44.1 | 8.45.0 | | npm | @typescript-eslint/parser | 8.44.1 | 8.45.0 | ## [v8.45.0](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8450-2025-09-29) ##### 🚀 Features - **eslint-plugin:** expose rule name via RuleModule interface ([#11616](typescript-eslint/typescript-eslint#11616)) ##### 🩹 Fixes - **eslint-plugin:** \[prefer-nullish-coalescing] ignoreBooleanCoercion should not apply to top-level ternary expressions ([#11614](typescript-eslint/typescript-eslint#11614)) - **eslint-plugin:** \[no-base-to-string] check if superclass is ignored ([#11617](typescript-eslint/typescript-eslint#11617)) ##### ❤️ Thank You - mdm317 - Moses Odutusin [@thebolarin](https://github.com/thebolarin) - Yukihiro Hasegawa [@y-hsgw](https://github.com/y-hsgw) You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

PR Checklist
Overview
This PR introduces an
nameproperty to theRuleModuleinterface.🚀