From 70fc2e75eafa7f18f17f87312669b712a1a2e8d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 1 Dec 2021 00:30:02 +0100 Subject: [PATCH] Add ESLint rule `node/no-unsupported-features` for tests --- .eslintrc.cjs | 42 ++++++++++++++++++++++++------------------ package.json | 1 + yarn.lock | 39 ++++++++++++++++++++++++++++++++++----- 3 files changed, 59 insertions(+), 23 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 47cf9dbdc629..c7f92f01e003 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -4,10 +4,22 @@ const path = require("path"); const cjsGlobals = ["__dirname", "__filename", "require", "module", "exports"]; +const testFiles = [ + "packages/*/test/**/*.js", + "codemods/*/test/**/*.js", + "eslint/*/test/**/*.js", +]; +const sourceFiles = exts => [ + `packages/*/src/**/*.{${exts}}`, + `codemods/*/src/**/*.{${exts}}`, + `eslint/*/src/**/*.{${exts}}`, +]; + module.exports = { root: true, plugins: [ "import", + "node", "jest", "prettier", "@babel/development", @@ -36,11 +48,7 @@ module.exports = { }, }, { - files: [ - "packages/*/src/**/*.{js,ts,cjs}", - "codemods/*/src/**/*.{js,ts,cjs}", - "eslint/*/src/**/*.{js,ts,cjs}", - ], + files: sourceFiles("js,ts,cjs,mjs"), rules: { "@babel/development/no-undefined-identifier": "error", "@babel/development/no-deprecated-clone": "error", @@ -51,9 +59,7 @@ module.exports = { }, { files: [ - "packages/*/test/**/*.js", - "codemods/*/test/**/*.js", - "eslint/*/test/**/*.js", + ...testFiles, "packages/babel-helper-transform-fixture-test-runner/src/helpers.{ts,js}", "test/**/*.js", ], @@ -73,16 +79,16 @@ module.exports = { }, }, { - files: [ - "packages/*/src/**/*.{js,ts}", - "codemods/*/src/**/*.{js,ts}", - "eslint/*/src/**/*.{js,ts}", - "packages/*/test/**/*.js", - "codemods/*/test/**/*.js", - "eslint/*/test/**/*.js", - "packages/babel-helper-transform-fixture-test-runner/src/helpers.{ts,js}", - "test/**/*.js", - ], + files: testFiles, + rules: { + "node/no-unsupported-features": [ + "error", + { version: "12.17.0", ignores: ["modules"] }, + ], + }, + }, + { + files: [...sourceFiles("js,ts,mjs"), ...testFiles, "test/**/*.js"], excludedFiles: [ // @babel/register is the require() hook, so it will always be CJS-based "packages/babel-register/**/*.{js,ts}", diff --git a/package.json b/package.json index 2cba5a06cef7..8832ce97388b 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "eslint-plugin-flowtype": "^8.0.3", "eslint-plugin-import": "^2.25.2", "eslint-plugin-jest": "^25.2.2", + "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.4.0", "fancy-log": "^1.3.3", "flow-bin": "^0.123.0", diff --git a/yarn.lock b/yarn.lock index d5f491e1a5a7..827579c98d4c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5830,6 +5830,7 @@ __metadata: eslint-plugin-flowtype: ^8.0.3 eslint-plugin-import: ^2.25.2 eslint-plugin-jest: ^25.2.2 + eslint-plugin-node: ^11.1.0 eslint-plugin-prettier: ^3.4.0 fancy-log: ^1.3.3 flow-bin: ^0.123.0 @@ -7821,6 +7822,18 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-es@npm:^3.0.0": + version: 3.0.1 + resolution: "eslint-plugin-es@npm:3.0.1" + dependencies: + eslint-utils: ^2.0.0 + regexpp: ^3.0.0 + peerDependencies: + eslint: ">=4.19.1" + checksum: e57592c52301ee8ddc296ae44216df007f3a870bcb3be8d1fbdb909a1d3a3efe3fa3785de02066f9eba1d6466b722d3eb3cc3f8b75b3cf6a1cbded31ac6298e4 + languageName: node + linkType: hard + "eslint-plugin-flowtype@npm:^8.0.3": version: 8.0.3 resolution: "eslint-plugin-flowtype@npm:8.0.3" @@ -7873,6 +7886,22 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-node@npm:^11.1.0": + version: 11.1.0 + resolution: "eslint-plugin-node@npm:11.1.0" + dependencies: + eslint-plugin-es: ^3.0.0 + eslint-utils: ^2.0.0 + ignore: ^5.1.1 + minimatch: ^3.0.4 + resolve: ^1.10.1 + semver: ^6.1.0 + peerDependencies: + eslint: ">=5.16.0" + checksum: 5804c4f8a6e721f183ef31d46fbe3b4e1265832f352810060e0502aeac7de034df83352fc88643b19641bb2163f2587f1bd4119aff0fd21e8d98c57c450e013b + languageName: node + linkType: hard + "eslint-plugin-prettier@npm:^3.4.0": version: 3.4.0 resolution: "eslint-plugin-prettier@npm:3.4.0" @@ -7925,7 +7954,7 @@ __metadata: languageName: node linkType: hard -"eslint-utils@npm:^2.1.0": +"eslint-utils@npm:^2.0.0, eslint-utils@npm:^2.1.0": version: 2.1.0 resolution: "eslint-utils@npm:2.1.0" dependencies: @@ -13238,7 +13267,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"regexpp@npm:^3.1.0, regexpp@npm:^3.2.0": +"regexpp@npm:^3.0.0, regexpp@npm:^3.1.0, regexpp@npm:^3.2.0": version: 3.2.0 resolution: "regexpp@npm:3.2.0" checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 @@ -13449,7 +13478,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.9.0": +"resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.9.0, resolve@npm:^1.10.1": version: 1.20.0 resolution: "resolve@npm:1.20.0" dependencies: @@ -13459,7 +13488,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.4#~builtin, resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.3.2#~builtin, resolve@patch:resolve@^1.4.0#~builtin, resolve@patch:resolve@^1.9.0#~builtin": +"resolve@patch:resolve@^1.1.4#~builtin, resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.3.2#~builtin, resolve@patch:resolve@^1.4.0#~builtin, resolve@patch:resolve@^1.9.0#~builtin": version: 1.20.0 resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" dependencies: @@ -13693,7 +13722,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"semver-BABEL_8_BREAKING-false@npm:semver@^6.3.0, semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": +"semver-BABEL_8_BREAKING-false@npm:semver@^6.3.0, semver@npm:^6.0.0, semver@npm:^6.1.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: