Skip to content

Commit 747d36e

Browse files
committed
feat: support ESLint 8.x
1 parent 95a45c9 commit 747d36e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+255
-329
lines changed

.eslintrc.js

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
const { version } = require('eslint/package.json');
4+
const semver = require('semver');
35
const globals = require('./src/globals.json');
46

57
module.exports = {
@@ -28,12 +30,18 @@ module.exports = {
2830
es6: true,
2931
},
3032
rules: {
33+
// eslint-plugin-prettier removed ESLint v6 support
34+
...(semver.gte(version, '^7.28.0') ? {} : { 'prettier/prettier': 'off' }),
3135
'@typescript-eslint/array-type': ['error', { default: 'array-simple' }],
3236
'@typescript-eslint/no-require-imports': 'error',
3337
'@typescript-eslint/ban-ts-comment': 'warn',
3438
'@typescript-eslint/ban-types': 'error',
3539
'@typescript-eslint/no-unused-vars': 'error',
3640
'eslint-comments/no-unused-disable': 'error',
41+
'eslint-plugin/require-meta-fixable': [
42+
'error',
43+
{ catchNoFixerButFixableProperty: true },
44+
],
3745
'eslint-plugin/test-case-property-ordering': 'error',
3846
'no-else-return': 'error',
3947
'no-negated-condition': 'error',

.github/workflows/nodejs.yml

+11-8
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020

2121
- uses: actions/setup-node@v2
2222
with:
23-
node-version: 14.x
23+
node-version: 16
2424
cache: yarn
2525

2626
- name: Validate cache
@@ -38,7 +38,7 @@ jobs:
3838
- uses: actions/checkout@v2
3939
- uses: actions/setup-node@v2
4040
with:
41-
node-version: 14.x
41+
node-version: 16
4242
cache: yarn
4343
- name: install
4444
run: yarn
@@ -52,7 +52,7 @@ jobs:
5252
- uses: actions/checkout@v2
5353
- uses: actions/setup-node@v2
5454
with:
55-
node-version: 14.x
55+
node-version: 16
5656
cache: yarn
5757
- name: install
5858
run: yarn
@@ -67,9 +67,12 @@ jobs:
6767
strategy:
6868
fail-fast: false
6969
matrix:
70-
node-version: [12.x, 14.x, 16.x]
71-
eslint-version: [6, 7]
70+
node-version: [12, 14, 16]
71+
eslint-version: [6, 7, 8]
7272
ts-eslint-plugin-version: [4, 5]
73+
exclude:
74+
- eslint-version: 8
75+
ts-eslint-plugin-version: 4
7376
runs-on: ubuntu-latest
7477

7578
steps:
@@ -104,7 +107,7 @@ jobs:
104107
- uses: actions/checkout@v2
105108
- uses: actions/setup-node@v2
106109
with:
107-
node-version: 14.x
110+
node-version: 16
108111
cache: yarn
109112
- name: install
110113
run: yarn
@@ -123,7 +126,7 @@ jobs:
123126
- uses: actions/checkout@v2
124127
- uses: actions/setup-node@v2
125128
with:
126-
node-version: 14.x
129+
node-version: 16
127130
cache: yarn
128131
- name: install
129132
run: yarn
@@ -146,7 +149,7 @@ jobs:
146149
- uses: actions/checkout@v2
147150
- uses: actions/setup-node@v2
148151
with:
149-
node-version: 14.x
152+
node-version: 16
150153
cache: yarn
151154
- name: install
152155
run: yarn

package.json

+13-7
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@
6060
"projects": [
6161
{
6262
"displayName": "test",
63+
"moduleNameMapper": {
64+
"@eslint/eslintrc/universal": "@eslint/eslintrc/dist/eslintrc-universal.cjs"
65+
},
6366
"testPathIgnorePatterns": [
6467
"<rootDir>/lib/.*",
6568
"<rootDir>/src/rules/__tests__/fixtures/*",
@@ -100,14 +103,14 @@
100103
"babel-jest": "^27.0.0",
101104
"babel-plugin-replace-ts-export-assignment": "^0.0.2",
102105
"dedent": "^0.7.0",
103-
"eslint": "^6.0.0 || ^7.0.0",
106+
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0",
104107
"eslint-config-prettier": "^8.3.0",
105-
"eslint-plugin-eslint-comments": "^3.1.2",
108+
"eslint-plugin-eslint-comments": "^3.2.0",
106109
"eslint-plugin-eslint-config": "^2.0.0",
107-
"eslint-plugin-eslint-plugin": "^3.5.3",
108-
"eslint-plugin-import": "^2.25.1",
109-
"eslint-plugin-node": "^11.0.0",
110-
"eslint-plugin-prettier": "^3.4.1",
110+
"eslint-plugin-eslint-plugin": "^4.0.0-0",
111+
"eslint-plugin-import": "^2.25.2",
112+
"eslint-plugin-node": "^11.1.0",
113+
"eslint-plugin-prettier": "^4.0.0",
111114
"husky": "^7.0.2",
112115
"is-ci": "^3.0.0",
113116
"jest": "^27.0.0",
@@ -123,7 +126,7 @@
123126
},
124127
"peerDependencies": {
125128
"@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0",
126-
"eslint": "^6.0.0 || ^7.0.0"
129+
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
127130
},
128131
"peerDependenciesMeta": {
129132
"@typescript-eslint/eslint-plugin": {
@@ -149,5 +152,8 @@
149152
"@semantic-release/git",
150153
"@semantic-release/github"
151154
]
155+
},
156+
"resolutions": {
157+
"@typescript-eslint/experimental-utils": "^5.0.0"
152158
}
153159
}

src/index.ts

-7
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,6 @@ type RuleModule = TSESLint.RuleModule<string, unknown[]> & {
88
meta: Required<Pick<TSESLint.RuleMetaData<string>, 'docs'>>;
99
};
1010

11-
// v5 of `@typescript-eslint/experimental-utils` removed this
12-
declare module '@typescript-eslint/experimental-utils/dist/ts-eslint/Rule' {
13-
export interface RuleMetaDataDocs {
14-
category: 'Best Practices' | 'Possible Errors';
15-
}
16-
}
17-
1811
// copied from https://github.com/babel/babel/blob/d8da63c929f2d28c401571e2a43166678c555bc4/packages/babel-helpers/src/helpers.js#L602-L606
1912
/* istanbul ignore next */
2013
const interopRequireDefault = (obj: any): { default: any } =>

src/rules/__tests__/no-jasmine-globals.test.ts

+14
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ ruleTester.run('no-jasmine-globals', rule, {
2121
invalid: [
2222
{
2323
code: 'spyOn(some, "object")',
24+
output: null,
2425
errors: [
2526
{
2627
messageId: 'illegalGlobal',
@@ -32,6 +33,7 @@ ruleTester.run('no-jasmine-globals', rule, {
3233
},
3334
{
3435
code: 'spyOnProperty(some, "object")',
36+
output: null,
3537
errors: [
3638
{
3739
messageId: 'illegalGlobal',
@@ -43,10 +45,12 @@ ruleTester.run('no-jasmine-globals', rule, {
4345
},
4446
{
4547
code: 'fail()',
48+
output: null,
4649
errors: [{ messageId: 'illegalFail', column: 1, line: 1 }],
4750
},
4851
{
4952
code: 'pending()',
53+
output: null,
5054
errors: [{ messageId: 'illegalPending', column: 1, line: 1 }],
5155
},
5256
{
@@ -56,10 +60,12 @@ ruleTester.run('no-jasmine-globals', rule, {
5660
},
5761
{
5862
code: 'jasmine.DEFAULT_TIMEOUT_INTERVAL = function() {}',
63+
output: null,
5964
errors: [{ messageId: 'illegalJasmine', column: 1, line: 1 }],
6065
},
6166
{
6267
code: 'jasmine.addMatchers(matchers)',
68+
output: null,
6369
errors: [
6470
{
6571
messageId: 'illegalMethod',
@@ -71,6 +77,7 @@ ruleTester.run('no-jasmine-globals', rule, {
7177
},
7278
{
7379
code: 'jasmine.createSpy()',
80+
output: null,
7481
errors: [
7582
{
7683
messageId: 'illegalMethod',
@@ -151,30 +158,37 @@ ruleTester.run('no-jasmine-globals', rule, {
151158
},
152159
{
153160
code: 'jasmine.getEnv()',
161+
output: null,
154162
errors: [{ messageId: 'illegalJasmine', column: 1, line: 1 }],
155163
},
156164
{
157165
code: 'jasmine.empty()',
166+
output: null,
158167
errors: [{ messageId: 'illegalJasmine', column: 1, line: 1 }],
159168
},
160169
{
161170
code: 'jasmine.falsy()',
171+
output: null,
162172
errors: [{ messageId: 'illegalJasmine', column: 1, line: 1 }],
163173
},
164174
{
165175
code: 'jasmine.truthy()',
176+
output: null,
166177
errors: [{ messageId: 'illegalJasmine', column: 1, line: 1 }],
167178
},
168179
{
169180
code: 'jasmine.arrayWithExactContents()',
181+
output: null,
170182
errors: [{ messageId: 'illegalJasmine', column: 1, line: 1 }],
171183
},
172184
{
173185
code: 'jasmine.clock()',
186+
output: null,
174187
errors: [{ messageId: 'illegalJasmine', column: 1, line: 1 }],
175188
},
176189
{
177190
code: 'jasmine.MAX_PRETTY_PRINT_ARRAY_LENGTH = 42',
191+
output: null,
178192
errors: [{ messageId: 'illegalJasmine', column: 1, line: 1 }],
179193
},
180194
],

src/rules/__tests__/utils.test.ts

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ const rule = createRule({
1818
name: __filename,
1919
meta: {
2020
docs: {
21-
category: 'Possible Errors',
2221
description: 'Fake rule for testing AST guards',
2322
recommended: false,
2423
},

src/rules/consistent-test-it.ts

-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ export default createRule<
3939
name: __filename,
4040
meta: {
4141
docs: {
42-
category: 'Best Practices',
4342
description: 'Have control over `test` and `it` usages',
4443
recommended: false,
4544
},

src/rules/expect-expect.ts

-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ export default createRule<
4747
name: __filename,
4848
meta: {
4949
docs: {
50-
category: 'Best Practices',
5150
description: 'Enforce assertion to be made in a test body',
5251
recommended: 'warn',
5352
},

src/rules/max-nested-describe.ts

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ export default createRule({
88
name: __filename,
99
meta: {
1010
docs: {
11-
category: 'Best Practices',
1211
description: 'Enforces a maximum depth to nested describe calls',
1312
recommended: false,
1413
},

src/rules/no-alias-methods.ts

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ export default createRule({
44
name: __filename,
55
meta: {
66
docs: {
7-
category: 'Best Practices',
87
description: 'Disallow alias methods',
98
recommended: false,
109
},

src/rules/no-commented-out-tests.ts

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export default createRule({
1111
name: __filename,
1212
meta: {
1313
docs: {
14-
category: 'Best Practices',
1514
description: 'Disallow commented out tests',
1615
recommended: 'warn',
1716
},

src/rules/no-conditional-expect.ts

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export default createRule({
2222
meta: {
2323
docs: {
2424
description: 'Prevent calling `expect` conditionally',
25-
category: 'Best Practices',
2625
recommended: 'error',
2726
},
2827
messages: {

src/rules/no-deprecated-functions.ts

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export default createRule({
2727
name: __filename,
2828
meta: {
2929
docs: {
30-
category: 'Best Practices',
3130
description: 'Disallow use of deprecated functions',
3231
recommended: 'error',
3332
},

src/rules/no-disabled-tests.ts

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ export default createRule({
44
name: __filename,
55
meta: {
66
docs: {
7-
category: 'Best Practices',
87
description: 'Disallow disabled tests',
98
recommended: 'warn',
109
},

src/rules/no-done-callback.ts

-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ export default createRule({
3333
name: __filename,
3434
meta: {
3535
docs: {
36-
category: 'Best Practices',
3736
description: 'Avoid using a callback in asynchronous tests and hooks',
3837
recommended: 'error',
3938
suggestion: true,

src/rules/no-duplicate-hooks.ts

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export default createRule({
1111
name: __filename,
1212
meta: {
1313
docs: {
14-
category: 'Best Practices',
1514
description: 'Disallow duplicate setup and teardown hooks',
1615
recommended: false,
1716
},

src/rules/no-export.ts

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ export default createRule({
88
name: __filename,
99
meta: {
1010
docs: {
11-
category: 'Best Practices',
1211
description: 'Disallow using `exports` in files containing tests',
1312
recommended: 'error',
1413
},

src/rules/no-focused-tests.ts

-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export default createRule({
3838
name: __filename,
3939
meta: {
4040
docs: {
41-
category: 'Best Practices',
4241
description: 'Disallow focused tests',
4342
recommended: 'error',
4443
suggestion: true,

src/rules/no-hooks.ts

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ export default createRule<
77
name: __filename,
88
meta: {
99
docs: {
10-
category: 'Best Practices',
1110
description: 'Disallow setup and teardown hooks',
1211
recommended: false,
1312
},

src/rules/no-identical-title.ts

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ export default createRule({
2121
name: __filename,
2222
meta: {
2323
docs: {
24-
category: 'Best Practices',
2524
description: 'Disallow identical titles',
2625
recommended: 'error',
2726
},

src/rules/no-if.ts

-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ export default createRule({
4141
meta: {
4242
docs: {
4343
description: 'Disallow conditional logic',
44-
category: 'Best Practices',
4544
recommended: false,
4645
},
4746
messages: {

src/rules/no-interpolation-in-snapshots.ts

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export default createRule({
55
name: __filename,
66
meta: {
77
docs: {
8-
category: 'Best Practices',
98
description: 'Disallow string interpolation inside snapshots',
109
recommended: 'error',
1110
},

src/rules/no-jasmine-globals.ts

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ export default createRule({
1010
name: __filename,
1111
meta: {
1212
docs: {
13-
category: 'Best Practices',
1413
description: 'Disallow Jasmine globals',
1514
recommended: 'error',
1615
},

src/rules/no-jest-import.ts

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ export default createRule({
77
type: 'problem',
88
docs: {
99
description: 'Disallow importing Jest',
10-
category: 'Best Practices',
1110
recommended: 'error',
1211
},
1312
messages: {

0 commit comments

Comments
 (0)