Skip to content

Commit 46e4dc0

Browse files
authored
Upgrade ESLint, rework config (#2577)
1 parent c0e2f99 commit 46e4dc0

21 files changed

+735
-629
lines changed

.eslintrc.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

dependency-lint.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,16 @@ ignoreErrors:
2323
unused:
2424
- '@cucumber/compatibility-kit' # files dynamically loaded in cck test, not required
2525
- '@cucumber/junit-xml-formatter' # formatter dynamically imported at runtime
26+
- '@eslint/compat' # used by eslint
27+
- '@eslint/eslintrc' # used by eslint
28+
- '@eslint/js' # used by eslint
2629
- '@typescript-eslint/eslint-plugin' # peer dependency of standard-with-typescript
2730
- '@typescript-eslint/parser' # peer dependency of @typescript-eslint/eslint-plugin
2831
- '@types/*' # type definitions
2932
- bluebird # features/generator_step_definitions.feature
3033
- coffeescript # features/compiler.feature
31-
- eslint-config-prettier # .eslintrc.yml - extends - prettier
32-
- eslint-config-standard-with-typescript # .eslintrc.yml - extends - standard-with-typescript
3334
- eslint-plugin-import # peer dependency of eslint-config-standard-with-typescript
3435
- eslint-plugin-n # peer dependency of eslint-config-standard-with-typescript
35-
- eslint-plugin-prettier # .eslintrc.yml - extends - prettier
36-
- eslint-plugin-promise # peer dependency of eslint-config-standard-with-typescript
37-
- eslint-plugin-standard # peer dependency of eslint-config-standard-with-typescript
3836
- eslint-plugin-unicorn # used in eslint config
3937
- prettier # peer dependency of eslint-plugin-prettier
4038
- ts-node # .mocharc.yml / cucumber.js

eslint.config.mjs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { fileURLToPath } from 'node:url'
2+
import path from 'node:path'
3+
import { defineConfig, globalIgnores } from 'eslint/config'
4+
import { fixupConfigRules, fixupPluginRules } from '@eslint/compat'
5+
import _import from 'eslint-plugin-import'
6+
import n from 'eslint-plugin-n'
7+
import unicorn from 'eslint-plugin-unicorn'
8+
import typescriptEslint from '@typescript-eslint/eslint-plugin'
9+
import tsParser from '@typescript-eslint/parser'
10+
import js from '@eslint/js'
11+
import { FlatCompat } from '@eslint/eslintrc'
12+
13+
const __filename = fileURLToPath(import.meta.url)
14+
const __dirname = path.dirname(__filename)
15+
const compat = new FlatCompat({
16+
baseDirectory: __dirname,
17+
recommendedConfig: js.configs.recommended,
18+
allConfig: js.configs.all,
19+
})
20+
21+
export default defineConfig([
22+
globalIgnores(['**/tmp']),
23+
{
24+
extends: fixupConfigRules(
25+
compat.extends(
26+
'eslint:recommended',
27+
'plugin:import/typescript',
28+
'plugin:@typescript-eslint/eslint-recommended',
29+
'plugin:@typescript-eslint/recommended'
30+
)
31+
),
32+
33+
plugins: {
34+
import: fixupPluginRules(_import),
35+
n,
36+
unicorn,
37+
'@typescript-eslint': fixupPluginRules(typescriptEslint),
38+
},
39+
40+
languageOptions: {
41+
parser: tsParser,
42+
ecmaVersion: 5,
43+
sourceType: 'script',
44+
45+
parserOptions: {
46+
project: './tsconfig.json',
47+
},
48+
},
49+
50+
rules: {
51+
'no-console': 'error',
52+
'import/order': 'error',
53+
'unicorn/prefer-node-protocol': 'error',
54+
'@typescript-eslint/strict-boolean-expressions': 'off',
55+
'@typescript-eslint/no-explicit-any': 'off',
56+
'@typescript-eslint/no-inferrable-types': 'off',
57+
'@typescript-eslint/no-unsafe-function-type': 'off',
58+
'@typescript-eslint/no-unused-expressions': 'off',
59+
'@typescript-eslint/ban-types': 'off',
60+
61+
'@typescript-eslint/no-unused-vars': [
62+
'error',
63+
{
64+
argsIgnorePattern: '^_',
65+
},
66+
],
67+
},
68+
},
69+
])

features/step_definitions/cli_steps.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ When(
7676
}
7777
)
7878

79-
Then('it passes', () => {}) // eslint-disable-line @typescript-eslint/no-empty-function
79+
Then('it passes', () => {})
8080

8181
Then('it fails', function (this: World) {
8282
const actualCode: number = doesHaveValue(this.lastRun.error)

features/step_definitions/formatter_steps.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Then(
2020
actual = normalizeMessageOutput(actual, this.tmpDir)
2121
actual = stripMetaMessages(actual)
2222
const fixturePath = path.join(__dirname, '..', 'fixtures', filePath)
23-
const expected = require(fixturePath) // eslint-disable-line @typescript-eslint/no-var-requires
23+
const expected = require(fixturePath) // eslint-disable-line @typescript-eslint/no-require-imports
2424
try {
2525
expect(actual).excludingEvery(ignorableKeys).to.deep.eq(expected)
2626
} catch (e) {
@@ -44,7 +44,7 @@ Then(
4444
const actualJson = await fs.readFile(actualPath, 'utf8')
4545
const actual = normalizeJsonOutput(actualJson, this.tmpDir)
4646
const fixturePath = path.join(__dirname, '..', 'fixtures', filePath)
47-
const expected = require(fixturePath) // eslint-disable-line @typescript-eslint/no-var-requires
47+
const expected = require(fixturePath) // eslint-disable-line @typescript-eslint/no-require-imports
4848
try {
4949
expect(actual).to.eql(expected)
5050
} catch (e) {
@@ -55,7 +55,6 @@ Then(
5555
'utf-8'
5656
)
5757
} else {
58-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
5958
e.message = `${e.message}\n\nTry running again with GOLDEN=1 if you believe the fixtures need to be overwritten with actual results`
6059
throw e
6160
}

0 commit comments

Comments
 (0)