From 5f316fe80417ab8d68284c6712a95a24695b3692 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 31 Jan 2020 08:41:33 +0000 Subject: [PATCH 1/2] fix(deps): update dependency eslint-plugin-import to v2.20.0 --- package.json | 2 +- yarn.lock | 35 ++++++++++++++++++++++------------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 7712a23da..5cbf32441 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "eslint-config-airbnb-base": "14.0.0", "eslint-config-prettier": "6.9.0", "eslint-import-resolver-typescript": "2.0.0", - "eslint-plugin-import": "2.18.2", + "eslint-plugin-import": "2.20.0", "eslint-plugin-jsx-a11y": "6.2.3", "eslint-plugin-prettier": "3.1.2", "eslint-plugin-react": "7.18.0", diff --git a/yarn.lock b/yarn.lock index 232932c2b..23af83015 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1112,6 +1112,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -2099,7 +2107,7 @@ debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2490,30 +2498,31 @@ eslint-import-resolver-typescript@2.0.0: tiny-glob "^0.2.6" tsconfig-paths "^3.9.0" -eslint-module-utils@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" - integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== +eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== dependencies: - debug "^2.6.8" + debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-import@2.18.2: - version "2.18.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" - integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== +eslint-plugin-import@2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz#d749a7263fb6c29980def8e960d380a6aa6aecaa" + integrity sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ== dependencies: array-includes "^3.0.3" + array.prototype.flat "^1.2.1" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.0" + eslint-module-utils "^2.4.1" has "^1.0.3" minimatch "^3.0.4" object.values "^1.1.0" read-pkg-up "^2.0.0" - resolve "^1.11.0" + resolve "^1.12.0" eslint-plugin-jest@23.6.0: version "23.6.0" @@ -6878,7 +6887,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.5.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.5.0: version "1.15.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== From 74402e6f0b0a6b789da786a0a58c3e1f12151fd4 Mon Sep 17 00:00:00 2001 From: Ricardo Amaral Date: Fri, 31 Jan 2020 16:08:19 +0000 Subject: [PATCH 2/2] test(airbnb): fix TypeScript import extensions --- airbnb-react.js | 22 ++++++++++++++++++++++ airbnb.js | 15 +++++++++++++++ tests/airbnb-react-hooks-semantics.test.js | 22 ++++++++++++++++++++-- tests/airbnb-react-hooks.test.js | 22 ++++++++++++++++++++-- tests/airbnb-react-semantics.test.js | 22 ++++++++++++++++++++-- tests/airbnb-react.test.js | 22 ++++++++++++++++++++-- tests/airbnb-semantics.test.js | 20 ++++++++++++++++++-- tests/airbnb.test.js | 20 ++++++++++++++++++-- 8 files changed, 153 insertions(+), 12 deletions(-) diff --git a/airbnb-react.js b/airbnb-react.js index 4883b2be6..076faf1a6 100644 --- a/airbnb-react.js +++ b/airbnb-react.js @@ -5,11 +5,33 @@ const airbnbConfiguration = require('./airbnb'); module.exports = { ...airbnbConfiguration, extends: ['airbnb', ...airbnbConfiguration.extends.splice(1, 3), 'prettier/react'], + rules: { + ...airbnbConfiguration.rules, + 'import/extensions': [ + ...airbnbConfiguration.rules['import/extensions'].splice(0, 2), + { + ...airbnbConfiguration.rules['import/extensions'][0], + jsx: 'never', + tsx: 'never', + }, + ], + }, settings: { ...airbnbConfiguration.settings, 'import/extensions': [ ...airbnbConfiguration.settings['import/extensions'], ...['.jsx', '.tsx'], ], + 'import/resolver': { + ...airbnbConfiguration.settings['import/resolver'], + node: { + ...airbnbConfiguration.settings['import/resolver'].node, + extensions: [ + ...airbnbConfiguration.settings['import/resolver'].node.extensions, + '.jsx', + '.tsx', + ], + }, + }, }, }; diff --git a/airbnb.js b/airbnb.js index 3f11b109b..e1e21ba10 100644 --- a/airbnb.js +++ b/airbnb.js @@ -9,9 +9,24 @@ module.exports = { 'import/extensions': ['.js', '.mjs', '.ts'], 'import/ignore': ['node_modules', '\\.d\\.ts$', '\\.(coffee|scss|css|less|hbs|svg|json)$'], 'import/resolver': { + node: { + extensions: ['.mjs', '.js', '.json', '.ts'], + }, typescript: { alwaysTryTypes: false, }, }, }, + rules: { + ...defaultConfiguration.rules, + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + mjs: 'never', + ts: 'never', + }, + ], + }, }; diff --git a/tests/airbnb-react-hooks-semantics.test.js b/tests/airbnb-react-hooks-semantics.test.js index dcd76cc81..413905c97 100644 --- a/tests/airbnb-react-hooks-semantics.test.js +++ b/tests/airbnb-react-hooks-semantics.test.js @@ -15,7 +15,20 @@ describe('Airbnb (React + Hooks)', () => { ], parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json' }, - rules: { 'no-undef': 'off' }, + rules: { + 'no-undef': 'off', + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + mjs: 'never', + ts: 'never', + jsx: 'never', + tsx: 'never', + }, + ], + }, settings: { 'import/extensions': ['.js', '.mjs', '.ts', '.jsx', '.tsx'], 'import/ignore': [ @@ -23,7 +36,12 @@ describe('Airbnb (React + Hooks)', () => { '\\.d\\.ts$', '\\.(coffee|scss|css|less|hbs|svg|json)$', ], - 'import/resolver': { typescript: { alwaysTryTypes: false } }, + 'import/resolver': { + node: { + extensions: ['.mjs', '.js', '.json', '.ts', '.jsx', '.tsx'], + }, + typescript: { alwaysTryTypes: false }, + }, }, }); }); diff --git a/tests/airbnb-react-hooks.test.js b/tests/airbnb-react-hooks.test.js index 4d10c6782..91caa8864 100644 --- a/tests/airbnb-react-hooks.test.js +++ b/tests/airbnb-react-hooks.test.js @@ -13,7 +13,20 @@ describe('Airbnb (React + Hooks)', () => { ], parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json' }, - rules: { 'no-undef': 'off' }, + rules: { + 'no-undef': 'off', + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + mjs: 'never', + ts: 'never', + jsx: 'never', + tsx: 'never', + }, + ], + }, settings: { 'import/extensions': ['.js', '.mjs', '.ts', '.jsx', '.tsx'], 'import/ignore': [ @@ -21,7 +34,12 @@ describe('Airbnb (React + Hooks)', () => { '\\.d\\.ts$', '\\.(coffee|scss|css|less|hbs|svg|json)$', ], - 'import/resolver': { typescript: { alwaysTryTypes: false } }, + 'import/resolver': { + node: { + extensions: ['.mjs', '.js', '.json', '.ts', '.jsx', '.tsx'], + }, + typescript: { alwaysTryTypes: false }, + }, }, }); }); diff --git a/tests/airbnb-react-semantics.test.js b/tests/airbnb-react-semantics.test.js index d7825b705..4a9e6b689 100644 --- a/tests/airbnb-react-semantics.test.js +++ b/tests/airbnb-react-semantics.test.js @@ -14,7 +14,20 @@ describe('Airbnb (React)', () => { ], parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json' }, - rules: { 'no-undef': 'off' }, + rules: { + 'no-undef': 'off', + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + mjs: 'never', + ts: 'never', + jsx: 'never', + tsx: 'never', + }, + ], + }, settings: { 'import/extensions': ['.js', '.mjs', '.ts', '.jsx', '.tsx'], 'import/ignore': [ @@ -22,7 +35,12 @@ describe('Airbnb (React)', () => { '\\.d\\.ts$', '\\.(coffee|scss|css|less|hbs|svg|json)$', ], - 'import/resolver': { typescript: { alwaysTryTypes: false } }, + 'import/resolver': { + node: { + extensions: ['.mjs', '.js', '.json', '.ts', '.jsx', '.tsx'], + }, + typescript: { alwaysTryTypes: false }, + }, }, }); }); diff --git a/tests/airbnb-react.test.js b/tests/airbnb-react.test.js index 28504e0ee..5f419017f 100644 --- a/tests/airbnb-react.test.js +++ b/tests/airbnb-react.test.js @@ -12,7 +12,20 @@ describe('Airbnb (React)', () => { ], parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json' }, - rules: { 'no-undef': 'off' }, + rules: { + 'no-undef': 'off', + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + mjs: 'never', + ts: 'never', + jsx: 'never', + tsx: 'never', + }, + ], + }, settings: { 'import/extensions': ['.js', '.mjs', '.ts', '.jsx', '.tsx'], 'import/ignore': [ @@ -20,7 +33,12 @@ describe('Airbnb (React)', () => { '\\.d\\.ts$', '\\.(coffee|scss|css|less|hbs|svg|json)$', ], - 'import/resolver': { typescript: { alwaysTryTypes: false } }, + 'import/resolver': { + node: { + extensions: ['.mjs', '.js', '.json', '.ts', '.jsx', '.tsx'], + }, + typescript: { alwaysTryTypes: false }, + }, }, }); }); diff --git a/tests/airbnb-semantics.test.js b/tests/airbnb-semantics.test.js index cecff3be3..fe7854828 100644 --- a/tests/airbnb-semantics.test.js +++ b/tests/airbnb-semantics.test.js @@ -13,7 +13,18 @@ describe('Airbnb', () => { ], parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json' }, - rules: { 'no-undef': 'off' }, + rules: { + 'no-undef': 'off', + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + mjs: 'never', + ts: 'never', + }, + ], + }, settings: { 'import/extensions': ['.js', '.mjs', '.ts'], 'import/ignore': [ @@ -21,7 +32,12 @@ describe('Airbnb', () => { '\\.d\\.ts$', '\\.(coffee|scss|css|less|hbs|svg|json)$', ], - 'import/resolver': { typescript: { alwaysTryTypes: false } }, + 'import/resolver': { + node: { + extensions: ['.mjs', '.js', '.json', '.ts'], + }, + typescript: { alwaysTryTypes: false }, + }, }, }); }); diff --git a/tests/airbnb.test.js b/tests/airbnb.test.js index 409c81c52..d33bedf4a 100644 --- a/tests/airbnb.test.js +++ b/tests/airbnb.test.js @@ -11,7 +11,18 @@ describe('Airbnb', () => { ], parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json' }, - rules: { 'no-undef': 'off' }, + rules: { + 'no-undef': 'off', + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + mjs: 'never', + ts: 'never', + }, + ], + }, settings: { 'import/extensions': ['.js', '.mjs', '.ts'], 'import/ignore': [ @@ -19,7 +30,12 @@ describe('Airbnb', () => { '\\.d\\.ts$', '\\.(coffee|scss|css|less|hbs|svg|json)$', ], - 'import/resolver': { typescript: { alwaysTryTypes: false } }, + 'import/resolver': { + node: { + extensions: ['.mjs', '.js', '.json', '.ts'], + }, + typescript: { alwaysTryTypes: false }, + }, }, }); });