Skip to content

Commit

Permalink
Relax ESLint peerDependency constraint to allow v9 (#16414)
Browse files Browse the repository at this point in the history
  • Loading branch information
liuxingbaoyu committed Apr 29, 2024
1 parent 20cbda1 commit 0128984
Show file tree
Hide file tree
Showing 11 changed files with 239 additions and 25 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/ci.yml
Expand Up @@ -530,6 +530,31 @@ jobs:
- name: Run babel/eslint tests
run: node ./node_modules/.bin/jest eslint

eslint8-test:
name: Test @babel/eslint-* with ESLint 8.0.0
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Use Node.js latest
uses: actions/setup-node@v4
with:
node-version: latest
check-latest: true
cache: "yarn"
- name: Install
run: yarn install
- uses: actions/download-artifact@v3
with:
name: babel-artifact
- name: Extract artifacts
run: tar -xf babel-artifact.tar; rm babel-artifact.tar
- name: Downgrade ESLint to 8.0.0
run: yarn up eslint@8.0.0
- name: Run babel/eslint tests
run: node ./node_modules/.bin/jest eslint

test262-prepare:
name: test262 - Prepare for running in parallel
runs-on: ubuntu-latest
Expand Down
6 changes: 3 additions & 3 deletions eslint/babel-eslint-parser/package.json
Expand Up @@ -28,7 +28,7 @@
},
"peerDependencies": {
"@babel/core": "^7.11.0",
"eslint": "^7.5.0 || ^8.0.0"
"eslint": "^7.5.0 || ^8.0.0 || ^9.0.0"
},
"dependencies": {
"@nicolo-ribaudo/eslint-scope-5-internals": "condition:BABEL_8_BREAKING ? : 5.1.1-v1",
Expand All @@ -42,7 +42,7 @@
"@types/estree": "^1.0.5",
"@typescript-eslint/scope-manager": "^6.19.0",
"dedent": "^0.7.0",
"eslint": "^8.22.0"
"eslint": "^9.0.0"
},
"conditions": {
"BABEL_8_BREAKING": [
Expand All @@ -52,7 +52,7 @@
},
"peerDependencies": {
"@babel/core": ">=7.11.0",
"eslint": "^8.9.0"
"eslint": "^8.9.0 || ^9.0.0"
}
},
{}
Expand Down
6 changes: 3 additions & 3 deletions eslint/babel-eslint-plugin/package.json
Expand Up @@ -34,14 +34,14 @@
"homepage": "https://babel.dev/",
"peerDependencies": {
"@babel/eslint-parser": "^7.11.0",
"eslint": "^7.5.0 || ^8.0.0"
"eslint": "^7.5.0 || ^8.0.0 || ^9.0.0"
},
"dependencies": {
"eslint-rule-composer": "^0.3.0"
},
"devDependencies": {
"clone-deep": "^4.0.1",
"eslint": "^8.22.0"
"eslint": "^9.0.0"
},
"conditions": {
"BABEL_8_BREAKING": [
Expand All @@ -51,7 +51,7 @@
},
"peerDependencies": {
"@babel/eslint-parser": "^7.11.0",
"eslint": "^8.9.0"
"eslint": "^8.9.0 || ^9.0.0"
}
},
{}
Expand Down
7 changes: 6 additions & 1 deletion eslint/babel-eslint-plugin/src/rules/new-cap.cjs
@@ -1,7 +1,12 @@
const ruleComposer = require("eslint-rule-composer");
const eslint = require("eslint");
const eslintVersion = eslint.ESLint.version;

const rule = new eslint.Linter().getRules().get("new-cap");
const rule = (
parseInt(eslintVersion, 10) >= 9
? require("eslint/use-at-your-own-risk").builtinRules
: new eslint.Linter().getRules()
).get("new-cap");

/**
* Returns whether a node is under a decorator or not.
Expand Down
6 changes: 5 additions & 1 deletion eslint/babel-eslint-plugin/src/rules/no-invalid-this.cjs
Expand Up @@ -2,7 +2,11 @@ const ruleComposer = require("eslint-rule-composer");
const eslint = require("eslint");
const eslintVersion = eslint.ESLint.version;

const noInvalidThisRule = new eslint.Linter().getRules().get("no-invalid-this");
const noInvalidThisRule = (
parseInt(eslintVersion, 10) >= 9
? require("eslint/use-at-your-own-risk").builtinRules
: new eslint.Linter().getRules()
).get("no-invalid-this");

if (parseInt(eslintVersion, 10) >= 8) {
// ESLint 8 supports class properties / private methods natively
Expand Down
7 changes: 6 additions & 1 deletion eslint/babel-eslint-plugin/src/rules/no-undef.cjs
@@ -1,7 +1,12 @@
const ruleComposer = require("eslint-rule-composer");
const eslint = require("eslint");
const eslintVersion = eslint.ESLint.version;

const rule = new eslint.Linter().getRules().get("no-undef");
const rule = (
parseInt(eslintVersion, 10) >= 9
? require("eslint/use-at-your-own-risk").builtinRules
: new eslint.Linter().getRules()
).get("no-undef");

/**
* Returns whether a node is under a decorator or not.
Expand Down
@@ -1,7 +1,12 @@
const ruleComposer = require("eslint-rule-composer");
const eslint = require("eslint");
const eslintVersion = eslint.ESLint.version;

const rule = new eslint.Linter().getRules().get("no-unused-expressions");
const rule = (
parseInt(eslintVersion, 10) >= 9
? require("eslint/use-at-your-own-risk").builtinRules
: new eslint.Linter().getRules()
).get("no-unused-expressions");

/**
* @param {ASTNode} node - any node
Expand Down
@@ -1,7 +1,12 @@
const ruleComposer = require("eslint-rule-composer");
const eslint = require("eslint");
const eslintVersion = eslint.ESLint.version;

const rule = new eslint.Linter().getRules().get("object-curly-spacing");
const rule = (
parseInt(eslintVersion, 10) >= 9
? require("eslint/use-at-your-own-risk").builtinRules
: new eslint.Linter().getRules()
).get("object-curly-spacing");

module.exports = ruleComposer.filterReports(rule, problem => {
const node = problem.node;
Expand Down
6 changes: 5 additions & 1 deletion eslint/babel-eslint-plugin/src/rules/semi.cjs
Expand Up @@ -4,7 +4,11 @@ const eslintVersion = eslint.ESLint.version;

const OPT_OUT_PATTERN = /^[-[(/+`]/; // One of [(/+-`

const rule = new eslint.Linter().getRules().get("semi");
const rule = (
parseInt(eslintVersion, 10) >= 9
? require("eslint/use-at-your-own-risk").builtinRules
: new eslint.Linter().getRules()
).get("semi");

function isSemicolon(token) {
return token.type === "Punctuator" && token.value === ";";
Expand Down
3 changes: 3 additions & 0 deletions jest.config.js
Expand Up @@ -65,6 +65,9 @@ module.exports = {
...(process.version === "v20.6.0"
? ["/babel-preset-env/test/regressions.js"]
: []),
...(!semver.satisfies(nodeVersion, "^18.18.0 || >=20.0")
? ["<rootDir>/eslint/"]
: []),
],
testEnvironment: "node",
transformIgnorePatterns: [
Expand Down

0 comments on commit 0128984

Please sign in to comment.