Skip to content

Commit 1641a13

Browse files
authored
break(eslint-plugin): Add ESLint flag configs, require ESLint >= 8.57 (#12025)
* Add support for ESLint flag config * eslint plugin docs update * eslint plugin docs update
1 parent 057ab88 commit 1641a13

14 files changed

Lines changed: 217 additions & 167 deletions

packages/eslint-plugin/package.json

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,20 @@
1818
},
1919
"license": "MIT",
2020
"scripts": {
21-
"build": "tsc"
21+
"build": "tsc",
22+
"watch": "tsc --watch"
2223
},
2324
"dependencies": {
24-
"@typescript-eslint/utils": "^5.62.0",
25+
"@typescript-eslint/utils": "^8.59.3",
26+
"@typescript-eslint/types": "^8.59.3",
2527
"tslib": "^2.6.0"
2628
},
2729
"devDependencies": {
28-
"eslint-plugin-eslint-plugin": "^5.1.0"
30+
"@typescript-eslint/rule-tester": "^8.59.3",
31+
"eslint-plugin-eslint-plugin": "^6.5.0"
2932
},
3033
"peerDependencies": {
31-
"eslint": ">=6"
34+
"eslint": ">=8.57.0"
3235
},
3336
"engines": {
3437
"node": ">=24.14"

packages/eslint-plugin/src/index.ts

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,57 @@
55
* LICENSE file in the root directory of this source tree.
66
*/
77

8+
import {name, version} from '../package.json';
9+
810
import rules from './rules';
911

10-
// @ts-expect-error: TODO try to remove later
11-
export = {
12+
const plugin = {
13+
meta: {name, version, namespace: '@docusaurus'},
1214
rules,
15+
};
16+
17+
const rulesRecommended = {
18+
'@docusaurus/string-literal-i18n-messages': 'error',
19+
'@docusaurus/no-html-links': 'warn',
20+
'@docusaurus/prefer-docusaurus-heading': 'warn',
21+
};
22+
23+
const rulesAll = {
24+
'@docusaurus/string-literal-i18n-messages': 'error',
25+
'@docusaurus/no-untranslated-text': 'warn',
26+
'@docusaurus/no-html-links': 'warn',
27+
'@docusaurus/prefer-docusaurus-heading': 'warn',
28+
};
29+
30+
// Supports both legacy/flat configs:
31+
// https://eslint.org/docs/latest/extend/plugins#backwards-compatibility-for-legacy-configs
32+
const compatPlugin = {
33+
...plugin,
1334
configs: {
1435
recommended: {
1536
plugins: ['@docusaurus'],
16-
rules: {
17-
'@docusaurus/string-literal-i18n-messages': 'error',
18-
'@docusaurus/no-html-links': 'warn',
19-
'@docusaurus/prefer-docusaurus-heading': 'warn',
20-
},
37+
rules: rulesRecommended,
2138
},
2239
all: {
2340
plugins: ['@docusaurus'],
24-
rules: {
25-
'@docusaurus/string-literal-i18n-messages': 'error',
26-
'@docusaurus/no-untranslated-text': 'warn',
27-
'@docusaurus/no-html-links': 'warn',
28-
'@docusaurus/prefer-docusaurus-heading': 'warn',
41+
rules: rulesAll,
42+
},
43+
flat: {
44+
recommended: {
45+
plugins: {
46+
'@docusaurus': plugin,
47+
},
48+
rules: rulesRecommended,
49+
},
50+
all: {
51+
plugins: {
52+
'@docusaurus': plugin,
53+
},
54+
rules: rulesAll,
2955
},
3056
},
3157
},
3258
};
59+
60+
// @ts-expect-error: TODO try to remove later
61+
export = compatPlugin;

packages/eslint-plugin/src/rules/__tests__/no-html-links.test.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,10 @@
66
*/
77

88
import rule from '../no-html-links';
9-
import {RuleTester} from './testUtils';
9+
import {ruleTester} from './testUtils';
1010

1111
const errorsJSX = [{messageId: 'link'}] as const;
1212

13-
const ruleTester = new RuleTester({
14-
parser: '@typescript-eslint/parser',
15-
parserOptions: {
16-
ecmaFeatures: {
17-
jsx: true,
18-
},
19-
},
20-
});
21-
2213
ruleTester.run('prefer-docusaurus-link', rule, {
2314
valid: [
2415
{

packages/eslint-plugin/src/rules/__tests__/no-untranslated-text.test.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,10 @@
66
*/
77

88
import rule from '../no-untranslated-text';
9-
import {getCommonValidTests, RuleTester} from './testUtils';
9+
import {getCommonValidTests, ruleTester} from './testUtils';
1010

1111
const errorsJSX = [{messageId: 'translateChildren'}] as const;
1212

13-
const ruleTester = new RuleTester({
14-
parser: '@typescript-eslint/parser',
15-
parserOptions: {
16-
ecmaFeatures: {
17-
jsx: true,
18-
},
19-
},
20-
});
21-
2213
ruleTester.run('no-untranslated-text', rule, {
2314
valid: [
2415
...getCommonValidTests(),

packages/eslint-plugin/src/rules/__tests__/prefer-docusaurus-heading.test.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,10 @@
66
*/
77

88
import rule from '../prefer-docusaurus-heading';
9-
import {RuleTester} from './testUtils';
9+
import {ruleTester} from './testUtils';
1010

1111
const errorsJSX = [{messageId: 'headings'}] as const;
1212

13-
const ruleTester = new RuleTester({
14-
parser: '@typescript-eslint/parser',
15-
parserOptions: {
16-
ecmaFeatures: {
17-
jsx: true,
18-
},
19-
},
20-
});
21-
2213
ruleTester.run('prefer-docusaurus-heading', rule, {
2314
valid: [
2415
{

packages/eslint-plugin/src/rules/__tests__/string-literal-i18n-messages.test.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,11 @@
66
*/
77

88
import rule from '../string-literal-i18n-messages';
9-
import {getCommonValidTests, RuleTester} from './testUtils';
9+
import {getCommonValidTests, ruleTester} from './testUtils';
1010

1111
const errorsJSX = [{messageId: 'translateChildren'}] as const;
1212
const errorsFunc = [{messageId: 'translateArg'}] as const;
1313

14-
const ruleTester = new RuleTester({
15-
parser: '@typescript-eslint/parser',
16-
parserOptions: {
17-
ecmaFeatures: {
18-
jsx: true,
19-
},
20-
},
21-
});
22-
2314
ruleTester.run('string-literal-i18n-messages', rule, {
2415
valid: [...getCommonValidTests()],
2516

packages/eslint-plugin/src/rules/__tests__/testUtils.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
*/
77

88
import {afterAll, describe, it} from 'vitest';
9-
import {ESLintUtils} from '@typescript-eslint/utils';
10-
11-
const {RuleTester} = ESLintUtils;
9+
import {RuleTester} from '@typescript-eslint/rule-tester';
1210

1311
// `RuleTester` defers to globals when these are unset; we run with
1412
// `globals: false`, so wire it to Vitest's test-framework functions instead.
@@ -17,7 +15,15 @@ RuleTester.describe = describe;
1715
RuleTester.it = it;
1816
RuleTester.itOnly = it.only;
1917

20-
export {RuleTester};
18+
export const ruleTester = new RuleTester({
19+
languageOptions: {
20+
parserOptions: {
21+
ecmaFeatures: {
22+
jsx: true,
23+
},
24+
},
25+
},
26+
});
2127

2228
export const getCommonValidTests = (): {code: string}[] => [
2329
{

packages/eslint-plugin/src/rules/no-html-links.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
import {createRule} from '../util';
9-
import type {TSESTree} from '@typescript-eslint/types/dist/ts-estree';
9+
import type {TSESTree} from '@typescript-eslint/types';
1010

1111
const docsUrl = 'https://docusaurus.io/docs/docusaurus-core#link';
1212

packages/eslint-plugin/src/rules/no-untranslated-text.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
import {isTextLabelChild, createRule} from '../util';
9-
import type {TSESTree} from '@typescript-eslint/types/dist/ts-estree';
9+
import type {TSESTree} from '@typescript-eslint/types';
1010

1111
type Options = [
1212
{

packages/eslint-plugin/src/rules/prefer-docusaurus-heading.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
import {createRule} from '../util';
9-
import type {TSESTree} from '@typescript-eslint/types/dist/ts-estree';
9+
import type {TSESTree} from '@typescript-eslint/types';
1010

1111
type Options = [];
1212
type MessageIds = 'headings';

0 commit comments

Comments
 (0)