Skip to content

Commit

Permalink
[New] support eslint 8.x
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDeBoey authored and ljharb committed Aug 30, 2021
1 parent d06f27b commit 7a901f2
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 15 deletions.
25 changes: 24 additions & 1 deletion .github/workflows/node-4+.yml
Expand Up @@ -26,6 +26,7 @@ jobs:
matrix:
node-version: ${{ fromJson(needs.matrix.outputs.latest) }}
eslint:
- 8
- 7
- 6
- 5
Expand All @@ -45,24 +46,46 @@ jobs:
babel-eslint: 10
- node-version: 4
babel-eslint: 9
- node-version: 15
eslint: 8
- node-version: 13
eslint: 8
- node-version: 11
eslint: 8
- node-version: 11
eslint: 7
- node-version: 10
eslint: 8
- node-version: 9
eslint: 8
- node-version: 9
eslint: 7
- node-version: 8
eslint: 8
- node-version: 8
eslint: 7
- node-version: 7
eslint: 8
- node-version: 7
eslint: 7
- node-version: 7
eslint: 6
- node-version: 6
eslint: 8
- node-version: 6
eslint: 7
- node-version: 6
eslint: 6
- node-version: 5
eslint: 8
- node-version: 5
eslint: 7
- node-version: 5
eslint: 6
- node-version: 5
eslint: 5
- node-version: 4
eslint: 8
- node-version: 4
eslint: 7
- node-version: 4
Expand All @@ -76,7 +99,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' || (matrix.node-version >= 8 && '3' || '2') }}" "babel-eslint@${{ matrix.babel-eslint }}"
skip-ls-check: true
env:
NPM_CONFIG_LEGACY_PEER_DEPS: true
Expand Down
8 changes: 4 additions & 4 deletions package.json
Expand Up @@ -44,13 +44,13 @@
"string.prototype.matchall": "^4.0.6"
},
"devDependencies": {
"@types/eslint": "=7.2.10",
"@types/eslint": "^7.28.0",
"@types/estree": "^0.0.50",
"@types/node": "^14.17.27",
"@typescript-eslint/parser": "^2.34.0 || ^3.10.1 || ~4.0",
"@typescript-eslint/parser": "^2.34.0 || ^3.10.1 || ~4.0 || ^5.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.5.3 || ^4.0.1",
"eslint-plugin-import": "^2.25.2",
Expand All @@ -66,7 +66,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
@@ -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
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
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
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
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 7a901f2

Please sign in to comment.