From fdc20078c1a9832dc3a7a96177b14a1d082734ed Mon Sep 17 00:00:00 2001 From: coderaiser Date: Tue, 17 Aug 2021 18:23:57 +0300 Subject: [PATCH] xx --- src/rules/no-unused-modules.js | 70 ++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/src/rules/no-unused-modules.js b/src/rules/no-unused-modules.js index 19b35c6ad4..92734de736 100644 --- a/src/rules/no-unused-modules.js +++ b/src/rules/no-unused-modules.js @@ -12,39 +12,43 @@ import { dirname, join } from 'path'; import readPkgUp from 'read-pkg-up'; import values from 'object.values'; import includes from 'array-includes'; - -// eslint/lib/util/glob-util has been moved to eslint/lib/util/glob-utils with version 5.3 -// and has been moved to eslint/lib/cli-engine/file-enumerator in version 6 -let listFilesToProcess; -try { - let { FileEnumerator } = require("eslint/use-at-your-own-risk"); -} catch {} - -try { - FileEnumerator = FileEnumerator || require('eslint/lib/cli-engine/file-enumerator').FileEnumerator; - listFilesToProcess = function (src, extensions) { - const e = new FileEnumerator({ - extensions: extensions, - }); - return Array.from(e.iterateFiles(src), ({ filePath, ignored }) => ({ - ignored, - filename: filePath, - })); - }; -} catch (e1) { - // Prevent passing invalid options (extensions array) to old versions of the function. - // https://github.com/eslint/eslint/blob/v5.16.0/lib/util/glob-utils.js#L178-L280 - // https://github.com/eslint/eslint/blob/v5.2.0/lib/util/glob-util.js#L174-L269 - let originalListFilesToProcess; - try { - originalListFilesToProcess = require('eslint/lib/util/glob-utils').listFilesToProcess; - listFilesToProcess = function (src, extensions) { - return originalListFilesToProcess(src, { - extensions: extensions, - }); - }; - } catch (e2) { - originalListFilesToProcess = require('eslint/lib/util/glob-util').listFilesToProcess; +import tryCatch from 'try-catch'; + +const [, eslint8] = tryCatch(require, 'eslint/use-at-your-own-risk'); +const [, eslint7] = tryCatch(require, 'eslint/lib/cli-engine/file-enumerator'); +const [, eslint6] = tryCatch(require, 'eslint/lib/util/glob-utils'); +const [, eslint5] = tryCatch(require, 'eslint/lib/util/glob-util'); + +const modernESLint = eslint8 || eslint7; + +if (modernESLint) { + // eslint/lib/util/glob-util has been moved to eslint/lib/util/glob-utils with version 5.3 + // and has been moved to eslint/lib/cli-engine/file-enumerator in version 6 + const {FileEnumerator} = modernESLint; + + listFilesToProcess = function (src, extensions) { + const e = new FileEnumerator({ + extensions: extensions, + }); + + return Array.from(e.iterateFiles(src), ({ filePath, ignored }) => ({ + ignored, + filename: filePath, + })); + }; +} + + if (eslin6) { + originalListFilesToProcess = eslin6.listFilesToProcess; + listFilesToProcess = function (src, extensions) { + return originalListFilesToProcess(src, { + extensions: extensions, + }); + }; + } + + if (eslin5) { + originalListFilesToProcess = eslint5.listFilesToProcess; listFilesToProcess = function (src, extensions) { const patterns = src.reduce((carry, pattern) => {