;
diff --git a/packages/utils/src/ts-eslint/Rule.ts b/packages/utils/src/ts-eslint/Rule.ts
index a8df03d681eb..b0705cc5c473 100644
--- a/packages/utils/src/ts-eslint/Rule.ts
+++ b/packages/utils/src/ts-eslint/Rule.ts
@@ -5,7 +5,7 @@ import type { Linter } from './Linter';
import type { Scope } from './Scope';
import type { SourceCode } from './SourceCode';
-export type RuleRecommendation = 'error' | 'strict' | 'warn' | false;
+export type RuleRecommendation = 'recommended' | 'strict' | 'stylistic';
interface RuleMetaDataDocs {
/**
@@ -17,7 +17,7 @@ interface RuleMetaDataDocs {
* Used by the build tools to generate the recommended and strict configs.
* Set to false to not include it as a recommendation
*/
- recommended: 'error' | 'strict' | 'warn' | false;
+ recommended?: RuleRecommendation;
/**
* The URL of the rule's docs
*/
diff --git a/packages/utils/tests/eslint-utils/RuleCreator.test.ts b/packages/utils/tests/eslint-utils/RuleCreator.test.ts
index 5e1c14d68c48..652aa2f12518 100644
--- a/packages/utils/tests/eslint-utils/RuleCreator.test.ts
+++ b/packages/utils/tests/eslint-utils/RuleCreator.test.ts
@@ -13,7 +13,7 @@ describe('RuleCreator', () => {
meta: {
docs: {
description: 'some description',
- recommended: 'error',
+ recommended: 'recommended',
requiresTypeChecking: true,
},
messages: {
@@ -31,7 +31,7 @@ describe('RuleCreator', () => {
docs: {
description: 'some description',
url: 'test/test',
- recommended: 'error',
+ recommended: 'recommended',
requiresTypeChecking: true,
},
messages: {
diff --git a/packages/website/plugins/generated-rule-docs.ts b/packages/website/plugins/generated-rule-docs.ts
index d29d240c91fc..d5b9e06335e4 100644
--- a/packages/website/plugins/generated-rule-docs.ts
+++ b/packages/website/plugins/generated-rule-docs.ts
@@ -158,7 +158,6 @@ export const generatedRuleDocs: Plugin = () => {
})();
// 5. Add a description of how to use / options for the rule
- const optionLevel = meta.docs.recommended === 'error' ? 'error' : 'warn';
if (meta.docs.extendsBaseRule) {
const extendsBaseRuleName =
@@ -206,7 +205,7 @@ export const generatedRuleDocs: Plugin = () => {
: ''
}
"${extendsBaseRuleName}": "off",
- "@typescript-eslint/${file.stem}": "${optionLevel}"
+ "@typescript-eslint/${file.stem}": "error"
}
}`;
};
@@ -233,7 +232,7 @@ export const generatedRuleDocs: Plugin = () => {
const getEslintrcString = `{
"rules": {
- "@typescript-eslint/${file.stem}": "${optionLevel}"
+ "@typescript-eslint/${file.stem}": "error"
}
}`;
root.children.splice(firstH2Index, 0, {
diff --git a/packages/website/src/components/RulesTable/index.tsx b/packages/website/src/components/RulesTable/index.tsx
index 7b7033abe926..58e9eb6e55c6 100644
--- a/packages/website/src/components/RulesTable/index.tsx
+++ b/packages/website/src/components/RulesTable/index.tsx
@@ -29,17 +29,14 @@ function RuleRow({ rule }: { rule: RulesMeta[number] }): JSX.Element | null {
{interpolateCode(rule.docs.description)}
-
- {recommended === 'strict' ? 'š' : recommended ? 'ā
' : ''}
+ |
+ {recommended === 'recommended'
+ ? 'ā
'
+ : recommended === 'strict'
+ ? 'š'
+ : recommended
+ ? 'šØ'
+ : ''}
|
('neutral');
const [showStrict, setShowStrict] = useState('neutral');
+ const [showStylistic, setShowStylistic] = useState('neutral');
const [showFixable, setShowFixable] = useState('neutral');
const [showHasSuggestions, setShowHasSuggestion] =
useState('neutral');
@@ -135,11 +133,13 @@ export default function RulesTable({
.filter(r => !!extensionRules === !!r.docs?.extendsBaseRule)
.filter(r => {
const opinions = [
+ match(showRecommended, r.docs?.recommended === 'recommended'),
match(
- showRecommended,
- r.docs?.recommended === 'error' || r.docs?.recommended === 'warn',
+ showStrict,
+ r.docs?.recommended === 'recommended' ||
+ r.docs?.recommended === 'strict',
),
- match(showStrict, r.docs?.recommended === 'strict'),
+ match(showStylistic, r.docs?.recommended === 'stylistic'),
match(showFixable, !!r.fixable),
match(showHasSuggestions, !!r.hasSuggestions),
match(showTypeCheck, !!r.docs?.requiresTypeChecking),
@@ -151,6 +151,7 @@ export default function RulesTable({
extensionRules,
showRecommended,
showStrict,
+ showStylistic,
showFixable,
showHasSuggestions,
showTypeCheck,
@@ -158,61 +159,53 @@ export default function RulesTable({
);
return (
<>
-
- {
- setShowRecommended(newMode);
-
- if (newMode === 'include' && showStrict === 'include') {
- setShowStrict('exclude');
- }
- }}
- label="ā
recommended"
- />
- {
- setShowStrict(newMode);
-
- if (newMode === 'include' && showRecommended === 'include') {
- setShowRecommended('exclude');
- }
- }}
- label="š strict"
- />
-
-
-
-
+
+
Rule |
-
- ā
{'\n'}š
- |
-
- š§{'\n'}š”
- |
-
- š
- |
+ Config |
+ Fixer |
+ Typed |
diff --git a/packages/website/src/components/RulesTable/styles.module.css b/packages/website/src/components/RulesTable/styles.module.css
index 4b0d2cd6b630..6f998e88e6a5 100644
--- a/packages/website/src/components/RulesTable/styles.module.css
+++ b/packages/website/src/components/RulesTable/styles.module.css
@@ -17,6 +17,17 @@
--red-border-shadow: rgb(235, 107, 107);
}
+.checkboxListArea {
+ display: flex;
+ align-items: baseline;
+ gap: 0.5rem;
+}
+
+.checkboxListArea + .checkboxListArea {
+ margin-top: -0.5rem;
+ margin-bottom: 0.5rem;
+}
+
.checkboxList {
flex-wrap: wrap;
}
diff --git a/packages/website/src/components/editor/createProvideCodeActions.ts b/packages/website/src/components/editor/createProvideCodeActions.ts
index 242d52e3d1e9..b537b55a4a59 100644
--- a/packages/website/src/components/editor/createProvideCodeActions.ts
+++ b/packages/website/src/components/editor/createProvideCodeActions.ts
@@ -11,7 +11,6 @@ export function createProvideCodeActions(
model,
_range,
context,
- _token,
): Monaco.languages.ProviderResult {
if (context.only !== 'quickfix') {
return {
diff --git a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx
index 572ab28dad8a..9094d8a980fc 100644
--- a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx
+++ b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx
@@ -7,12 +7,18 @@ import type { FeatureProps } from './Feature';
import { Feature } from './Feature';
import styles from './RuleAttributes.module.css';
-const getRecommendation = (docs: RuleMetaDataDocs): [string, string] => {
- return docs.recommended === 'strict'
- ? ['š', 'strict']
- : docs.requiresTypeChecking
- ? ['š§ ', 'recommended-requiring-type-checking']
- : ['ā
', 'recommended'];
+const recommendations = {
+ recommended: ['ā
', 'recommended'],
+ strict: ['š', 'strict'],
+ stylistic: ['šØ', 'stylistic'],
+};
+
+const getRecommendation = (docs: RuleMetaDataDocs): string[] => {
+ const recommendation = recommendations[docs.recommended!];
+
+ return docs.requiresTypeChecking
+ ? [recommendation[0], `${recommendation[1]}-type-checked`]
+ : recommendation;
};
export function RuleAttributes({ name }: { name: string }): React.ReactNode {
diff --git a/tests/integration/tests/__snapshots__/recommended-does-not-require-program.test.ts.snap b/tests/integration/tests/__snapshots__/recommended-does-not-require-program.test.ts.snap
index 40e5fd8d3da9..db6b4a806442 100644
--- a/tests/integration/tests/__snapshots__/recommended-does-not-require-program.test.ts.snap
+++ b/tests/integration/tests/__snapshots__/recommended-does-not-require-program.test.ts.snap
@@ -3,7 +3,7 @@
exports[`recommended-does-not-require-program should lint successfully 1`] = `
[
{
- "errorCount": 0,
+ "errorCount": 1,
"fatalErrorCount": 0,
"filePath": "/index.ts",
"fixableErrorCount": 0,
@@ -18,49 +18,14 @@ exports[`recommended-does-not-require-program should lint successfully 1`] = `
"messageId": "unusedVar",
"nodeType": "Identifier",
"ruleId": "@typescript-eslint/no-unused-vars",
- "severity": 1,
- },
- {
- "column": 12,
- "endColumn": 15,
- "endLine": 1,
- "line": 1,
- "message": "Unexpected any. Specify a different type.",
- "messageId": "unexpectedAny",
- "nodeType": "TSAnyKeyword",
- "ruleId": "@typescript-eslint/no-explicit-any",
- "severity": 1,
- "suggestions": [
- {
- "desc": "Use \`unknown\` instead, this will force you to explicitly, and safely assert the type is correct.",
- "fix": {
- "range": [
- 11,
- 14,
- ],
- "text": "unknown",
- },
- "messageId": "suggestUnknown",
- },
- {
- "desc": "Use \`never\` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",
- "fix": {
- "range": [
- 11,
- 14,
- ],
- "text": "never",
- },
- "messageId": "suggestNever",
- },
- ],
+ "severity": 2,
},
],
"output": "const foo: any = true;
",
"suppressedMessages": [],
"usedDeprecatedRules": [],
- "warningCount": 2,
+ "warningCount": 0,
},
]
`;
diff --git a/yarn.lock b/yarn.lock
index a1b168e17d54..4ab54a03fc5c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -14133,9 +14133,9 @@ uuid@^8.3.2:
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v8-compile-cache-lib@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8"
- integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
+ integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3:
version "2.3.0"
|