From ff92937c03cf1fe8b3e21a90e41a7def4ab1be40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz?= Date: Thu, 24 Feb 2022 16:33:36 +0000 Subject: [PATCH] Add sorting of require statements with autofix This commit also adds autofix for import statements. Please note that Node.js min version is now 14. --- .github/workflows/tests.yaml | 2 +- package.json | 4 ++-- src/index.js | 17 ++++++++++++----- test/fixtures/incorrect.js | 11 +++++++++-- test/index.js | 3 ++- yarn.lock | 11 +++++++---- 6 files changed, 33 insertions(+), 15 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 1477390..122a82c 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: [ '12', '14', '16' ] + node: [ '14', '16' ] container: image: node:${{ matrix.node }}-alpine diff --git a/package.json b/package.json index a739661..853c2a4 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "eslint-plugin-mocha": "^5.3.0", "eslint-plugin-prettier": "^3.3.1", "eslint-plugin-rulesdir": "^0.1.0", - "eslint-plugin-sort-imports-es6": "^0.0.3", + "eslint-plugin-sort-imports-requires": "^1.0.2", "eslint-plugin-sql-template": "^2.0.0" }, "devDependencies": { @@ -54,7 +54,7 @@ "lint" ], "engines": { - "node": ">=12.22" + "node": ">=14" }, "options": { "mocha": "-t 10000 --require should test" diff --git a/src/index.js b/src/index.js index 73d79fe..7f12d82 100644 --- a/src/index.js +++ b/src/index.js @@ -27,7 +27,7 @@ module.exports = { parserOptions: { requireConfigFile: false }, - plugins: ['mocha', 'rulesdir', 'sort-imports-es6', 'sql-template'], + plugins: ['mocha', 'rulesdir', 'sort-imports-requires', 'sql-template'], root: true, rules: { 'accessor-pairs': 'error', @@ -128,12 +128,19 @@ module.exports = { 'require-atomic-updates': 'off', 'require-await': 'error', 'rulesdir/explicit-sinon-use-fake-timers': 'error', - 'sort-imports-es6/sort-imports-es6': [ + 'sort-imports-requires/sort-imports': [ 'error', { - ignoreCase: false, - ignoreMemberSort: false, - memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'] + unsafeAutofix: true, + useOldSingleMemberSyntax: true + } + ], + 'sort-imports-requires/sort-requires': [ + 'error', + { + unsafeAutofix: true, + useAliases: false, + useOldSingleMemberSyntax: true } ], 'sort-keys': ['error', 'asc', { natural: true }], diff --git a/test/fixtures/incorrect.js b/test/fixtures/incorrect.js index 0411900..9f3a456 100644 --- a/test/fixtures/incorrect.js +++ b/test/fixtures/incorrect.js @@ -101,7 +101,7 @@ const noMultiStr = 'Line 1 \ noop(noMultiStr); // `no-this-before-super`. -const NoThisBeforeSuper = require('no-this-before-super'); +function NoThisBeforeSuper() {} class Child extends NoThisBeforeSuper { constructor() { @@ -161,13 +161,20 @@ const sinon = {}; sinon.useFakeTimers(); -// `sort-imports`. +// `sort-imports-requires/sort-imports`. import import1 from 'import-1'; import { import2 } from 'import-2'; noop(import1); noop(import2); +// `sort-imports-requires/sort-requires`. +const import3 = require('import-1'); +const { import4 } = require('import-2'); + +noop(import3); +noop(import4); + // `sort-keys`. const sortObjectProps = { var1: 'foo', diff --git a/test/index.js b/test/index.js index 7ae750a..5f45664 100644 --- a/test/index.js +++ b/test/index.js @@ -60,7 +60,8 @@ describe('eslint-config-uphold', () => { 'prettier/prettier', 'prettier/prettier', 'rulesdir/explicit-sinon-use-fake-timers', - 'sort-imports-es6/sort-imports-es6', + 'sort-imports-requires/sort-imports', + 'sort-imports-requires/sort-requires', 'sort-keys', 'spaced-comment', 'sql-template/no-unsafe-query', diff --git a/yarn.lock b/yarn.lock index 850f3e7..e4a4b3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -655,10 +655,13 @@ eslint-plugin-rulesdir@^0.1.0: resolved "https://registry.yarnpkg.com/eslint-plugin-rulesdir/-/eslint-plugin-rulesdir-0.1.0.tgz#ad144d7e98464fda82963eff3fab331aecb2bf08" integrity sha1-rRRNfphGT9qClj7/P6szGuyyvwg= -eslint-plugin-sort-imports-es6@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-sort-imports-es6/-/eslint-plugin-sort-imports-es6-0.0.3.tgz#959f391d459efbf971d3ebb696d79e1b567aeedc" - integrity sha1-lZ85HUWe+/lx0+u2lteeG1Z67tw= +eslint-plugin-sort-imports-requires@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-sort-imports-requires/-/eslint-plugin-sort-imports-requires-1.0.2.tgz#ba04fd40cd71da92d5d132b56f51da04916061d3" + integrity sha512-NVBvldKgVRrVQz+DFALAwcDUHUBF2fuZhWPrd7SylZvVeTyryaDGrL8lmm+xzaEw7tWz1HRLnk7REuVPwdvqZg== + dependencies: + eslint-utils "^3.0.0" + once "^1.4.0" eslint-plugin-sql-template@^2.0.0: version "2.0.0"