Skip to content

Commit

Permalink
feat: support ESLint 8.x
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDeBoey committed Oct 12, 2021
1 parent 261d93a commit a06affd
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 19 deletions.
25 changes: 24 additions & 1 deletion .github/workflows/node-4+.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ jobs:
matrix:
node-version: ${{ fromJson(needs.matrix.outputs.latest) }}
eslint:
- '^8.0.0-0'
- 7
- 6
- 5
Expand All @@ -43,24 +44,46 @@ jobs:
babel-eslint: 10
- node-version: 4
babel-eslint: 9
- node-version: 15
eslint: '^8.0.0-0'
- node-version: 13
eslint: '^8.0.0-0'
- node-version: 11
eslint: '^8.0.0-0'
- node-version: 11
eslint: 7
- node-version: 10
eslint: '^8.0.0-0'
- node-version: 9
eslint: '^8.0.0-0'
- node-version: 9
eslint: 7
- node-version: 8
eslint: '^8.0.0-0'
- node-version: 8
eslint: 7
- node-version: 7
eslint: '^8.0.0-0'
- node-version: 7
eslint: 7
- node-version: 7
eslint: 6
- node-version: 6
eslint: '^8.0.0-0'
- node-version: 6
eslint: 7
- node-version: 6
eslint: 6
- node-version: 5
eslint: '^8.0.0-0'
- node-version: 5
eslint: 7
- node-version: 5
eslint: 6
- node-version: 5
eslint: 5
- node-version: 4
eslint: '^8.0.0-0'
- node-version: 4
eslint: 7
- node-version: 4
Expand All @@ -74,7 +97,7 @@ jobs:
name: 'nvm install ${{ matrix.node-version }} && npm install'
with:
node-version: ${{ matrix.node-version }}
after_install: npm install --no-save "eslint@${{ matrix.eslint }}" "@typescript-eslint/parser@${{ matrix.node-version >= 10 && '4.0' || (matrix.node-version >= 8 && '3' || '2') }}" "babel-eslint@${{ matrix.babel-eslint }}"
after_install: npm install --no-save "eslint@${{ matrix.eslint }}" "@typescript-eslint/parser@${{ matrix.node-version >= 10 && '^5.0.0-0' || (matrix.node-version >= 8 && '3' || '2') }}" "babel-eslint@${{ matrix.babel-eslint }}"
skip-ls-check: true
env:
NPM_CONFIG_LEGACY_PEER_DEPS: true
Expand Down
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,18 @@
"string.prototype.matchall": "^4.0.5"
},
"devDependencies": {
"@types/eslint": "=7.2.10",
"@types/estree": "^0.0.47",
"@types/node": "^14.14.37",
"@typescript-eslint/parser": "^2.34.0 || ^3.10.1 || ~4.0",
"@types/eslint": "^7.28.0",
"@types/estree": "^0.0.50",
"@types/node": "^14.17.12",
"@typescript-eslint/parser": "^2.34.0 || ^3.10.1 || ^4.0.0 || ^5.0.0-0",
"aud": "^1.1.5",
"babel-eslint": "^8 || ^9 || ^10.1.0",
"eslint": "^3 || ^4 || ^5 || ^6 || ^7",
"eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-eslint-plugin": "^2.3.0 || ^3.3.1",
"eslint-plugin-eslint-plugin": "^2.3.0 || ^3.5.3 || ^4.0.0-0",
"eslint-plugin-import": "^2.24.2",
"eslint-remote-tester": "^1.3.0",
"eslint-remote-tester-repositories": "^0.0.2",
"eslint-remote-tester-repositories": "^0.0.3",
"espree": "^3.5.4",
"istanbul": "^0.4.5",
"markdown-magic": "^2.5.2",
Expand All @@ -65,7 +65,7 @@
"typescript-eslint-parser": "^20.1.1"
},
"peerDependencies": {
"eslint": "^3 || ^4 || ^5 || ^6 || ^7"
"eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
},
"engines": {
"node": ">=4"
Expand Down
11 changes: 11 additions & 0 deletions tests/helpers/getESLintCoreRule.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
'use strict';

const version = require('eslint/package.json').version;
const semver = require('semver');

const isESLintV8 = semver.major(version) >= 8;

// eslint-disable-next-line global-require, import/no-dynamic-require, import/no-unresolved
const getESLintCoreRule = (ruleId) => (isESLintV8 ? require('eslint/use-at-your-own-risk').builtinRules.get(ruleId) : require(`eslint/lib/rules/${ruleId}`));

module.exports = getESLintCoreRule;
4 changes: 2 additions & 2 deletions tests/lib/rules/jsx-no-undef.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ const parserOptions = {
// -----------------------------------------------------------------------------

const ruleTester = new RuleTester({parserOptions});
const linter = ruleTester.linter || eslint.linter;
linter.defineRule('no-undef', require('eslint/lib/rules/no-undef'));
const linter = ruleTester.linter || eslint.linter || eslint.Linter;
linter.defineRule('no-undef', require('../../helpers/getESLintCoreRule')('no-undef'));

ruleTester.run('jsx-no-undef', rule, {
valid: [{
Expand Down
4 changes: 1 addition & 3 deletions tests/lib/rules/jsx-no-useless-fragment.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,10 @@
// Requirements
// -----------------------------------------------------------------------------

const eslint = require('eslint');
const RuleTester = require('eslint').RuleTester;
const rule = require('../../../lib/rules/jsx-no-useless-fragment');
const parsers = require('../../helpers/parsers');

const RuleTester = eslint.RuleTester;

const parserOptions = {
ecmaVersion: 2018,
ecmaFeatures: {
Expand Down
4 changes: 2 additions & 2 deletions tests/lib/rules/jsx-uses-react.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
// -----------------------------------------------------------------------------

const eslint = require('eslint');
const rule = require('eslint/lib/rules/no-unused-vars');
const rule = require('../../helpers/getESLintCoreRule')('no-unused-vars');

const RuleTester = eslint.RuleTester;

Expand All @@ -35,7 +35,7 @@ const settings = {
// -----------------------------------------------------------------------------

const ruleTester = new RuleTester({parserOptions});
const linter = ruleTester.linter || eslint.linter;
const linter = ruleTester.linter || eslint.linter || eslint.Linter;
linter.defineRule('jsx-uses-react', require('../../../lib/rules/jsx-uses-react'));

ruleTester.run('no-unused-vars', rule, {
Expand Down
6 changes: 3 additions & 3 deletions tests/lib/rules/jsx-uses-vars.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
// -----------------------------------------------------------------------------

const eslint = require('eslint');
const ruleNoUnusedVars = require('eslint/lib/rules/no-unused-vars');
const rulePreferConst = require('eslint/lib/rules/prefer-const');
const ruleNoUnusedVars = require('../../helpers/getESLintCoreRule')('no-unused-vars');
const rulePreferConst = require('../../helpers/getESLintCoreRule')('prefer-const');

const RuleTester = eslint.RuleTester;

Expand All @@ -30,7 +30,7 @@ const parserOptions = {
// -----------------------------------------------------------------------------

const ruleTester = new RuleTester({parserOptions});
const linter = ruleTester.linter || eslint.linter;
const linter = ruleTester.linter || eslint.linter || eslint.Linter;
linter.defineRule('jsx-uses-vars', require('../../../lib/rules/jsx-uses-vars'));

ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
Expand Down

0 comments on commit a06affd

Please sign in to comment.