Skip to content

Commit

Permalink
Eslint: upgrade to version 8.0.0
Browse files Browse the repository at this point in the history
See:

- https://eslint.org/blog/2021/10/eslint-v8.0.0-released
- https://eslint.org/docs/user-guide/migrating-to-8.0.0

Known unresolved issues (with low impact )that we decided to accept:

- mysticatea/eslint-plugin-node#301

Known issues that need to be fixed first:

- [x] wait for import-js/eslint-plugin-import#2191 to be released and merged here
- [x] wait for gajus/eslint-plugin-flowtype#496 to be released and merged here
- [x] wait for testing-library/eslint-plugin-testing-library#462 to be released and merged here
- [ ] ~wait for mysticatea/eslint-plugin-node#294 to be released and merged here~ replaced (probably temporarily) with `eslint-plugin-n` which supports Eslint 8
- [x] wait for facebook/react#22248 to be released and merged here
- [x] release minor/patch version of Adeira Eslint Config before merging this breaking change
- [x] switch `NEXT_VERSION_ERROR` to `ERROR` (adeira/universe#3625)

adeira-source-id: b194be7e4f2fc10d51a10ed8753c440414e36b4d
  • Loading branch information
mrtnzlml authored and adeira-github-bot committed Dec 30, 2021
1 parent 2a39c77 commit dd135f3
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 3 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

**Breaking changes ahead!**

- New rules enabled: `fb-flow/use-indexed-access-type` ([more info](https://flow.org/en/docs/types/indexed-access/)) and `ft-flow/enforce-suppression-code` (warnings or errors in strict mode).
- Eslint version 8 is now required (visit https://eslint.org/blog/2021/10/eslint-v8.0.0-released and other related blog posts for more info).
- New rules enabled: `fb-flow/use-indexed-access-type` ([more info](https://flow.org/en/docs/types/indexed-access/)), `ft-flow/enforce-suppression-code` and `no-unused-private-class-members`.
- Many rules that were showing warnings in normal mode but errors in strict mode were converted to normal errors (so there is no difference between normal and strict mode). The best way how to migrate is to temporarily switch to the strict mode and address all the errors before upgrading to this major version.
- Switched from [`eslint-plugin-flowtype`](https://github.com/gajus/eslint-plugin-flowtype/tree/449cb99f1b6d3bbbb66f5be55f497667f5b2cb31) to [`eslint-plugin-ft-flow`](https://github.com/flow-typed/eslint-plugin-ft-flow/tree/820e631ce491cdf45821744d4e29f348cf776392) which contains the same set of rules but should be more up to date and maintained. We are going to enable additional rules later. There is a possible minor breaking change (with very simple fix) when suppressing the rules manually, for example:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ class Bar {}
// Normally, Eslint would complain because of `consistent-return` error, however,
// rule `node/process-exit-as-throw` makes sure this is not the case.
// See: https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/process-exit-as-throw.md

// TODO: the following `consistent-return` error is incorrect and should be removed once the following
// issue is resolved: https://github.com/mysticatea/eslint-plugin-node/issues/301. We decided to
// accept the low risk for now to ease migration to Eslint 8.
// eslint-disable-next-line consistent-return
export function foo(a: boolean): ?Bar {
if (a) {
return new Bar();
Expand Down
2 changes: 2 additions & 0 deletions __tests__/__snapshots__/index.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -711,6 +711,7 @@ Object {
"no-unsafe-optional-chaining": 2,
"no-unused-expressions": 0,
"no-unused-labels": 1,
"no-unused-private-class-members": 2,
"no-unused-vars": Array [
2,
Object {
Expand Down Expand Up @@ -763,6 +764,7 @@ Object {
"prefer-exponentiation-operator": 2,
"prefer-named-capture-group": 2,
"prefer-numeric-literals": 0,
"prefer-object-has-own": 0,
"prefer-object-spread": 2,
"prefer-promise-reject-errors": 1,
"prefer-regex-literals": 2,
Expand Down
2 changes: 2 additions & 0 deletions __tests__/__snapshots__/presets.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,7 @@ Object {
"no-unsafe-optional-chaining": 2,
"no-unused-expressions": 0,
"no-unused-labels": 1,
"no-unused-private-class-members": 2,
"no-unused-vars": Array [
2,
Object {
Expand Down Expand Up @@ -459,6 +460,7 @@ Object {
"prefer-exponentiation-operator": 2,
"prefer-named-capture-group": 2,
"prefer-numeric-literals": 0,
"prefer-object-has-own": 0,
"prefer-object-spread": 2,
"prefer-promise-reject-errors": 1,
"prefer-regex-literals": 2,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,6 @@
"snapshot-diff": "^0.9.0"
},
"peerDependencies": {
"eslint": ">=7.24.0 <8.0.0"
"eslint": ">=8.0.0"
}
}
2 changes: 2 additions & 0 deletions src/presets/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ module.exports = ({
'no-unsafe-finally': ERROR,
'no-unsafe-negation': ERROR,
'no-unsafe-optional-chaining': ERROR,
'no-unused-private-class-members': ERROR,
'require-atomic-updates': ERROR,
'use-isnan': [ERROR, { enforceForSwitchCase: true }],
'valid-jsdoc': OFF,
Expand Down Expand Up @@ -268,6 +269,7 @@ module.exports = ({
'prefer-const': [ERROR, { destructuring: 'all' }],
'prefer-destructuring': OFF,
'prefer-numeric-literals': OFF,
'prefer-object-has-own': OFF, // TODO: NEXT_VERSION_ERROR (?) (https://eslint.org/docs/rules/prefer-object-has-own)
'prefer-rest-params': WARN,
'prefer-spread': WARN,
'prefer-template': ERROR,
Expand Down
4 changes: 3 additions & 1 deletion src/presets/flowtype.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ import type { EslintConfig } from '../EslintConfig.flow';
module.exports = ({
plugins: ['eslint-plugin-ft-flow', 'eslint-plugin-fb-flow'],
rules: {
// flowtype (https://github.com/gajus/eslint-plugin-flowtype)
// Flow:
// - https://github.com/flow-typed/eslint-plugin-ft-flow
// - https://github.com/gajus/eslint-plugin-flowtype
'ft-flow/array-style-complex-type': OFF,
'ft-flow/array-style-simple-type': OFF,
'ft-flow/arrow-parens': OFF,
Expand Down

0 comments on commit dd135f3

Please sign in to comment.