Skip to content

Commit 49ada27

Browse files
coderaiserljharb
authored andcommitted
[New] no-unused-modules: add eslint v8 support
- https://eslint.org/docs/8.0.0/user-guide/migrating-to-8.0.0
1 parent 4a9be63 commit 49ada27

File tree

2 files changed

+42
-28
lines changed

2 files changed

+42
-28
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
66

77
## [Unreleased]
88

9+
### Added
10+
- [`no-unused-modules`]: add eslint v8 support ([#2194], thanks [@coderaiser])
11+
912
## [2.24.2] - 2021-08-24
1013

1114
### Fixed
@@ -901,6 +904,7 @@ for info on changes for earlier releases.
901904
[`memo-parser`]: ./memo-parser/README.md
902905

903906
[#2196]: https://github.com/import-js/eslint-plugin-import/pull/2196
907+
[#2194]: https://github.com/import-js/eslint-plugin-import/pull/2194
904908
[#2184]: https://github.com/import-js/eslint-plugin-import/pull/2184
905909
[#2179]: https://github.com/import-js/eslint-plugin-import/pull/2179
906910
[#2160]: https://github.com/import-js/eslint-plugin-import/pull/2160

src/rules/no-unused-modules.js

+38-28
Original file line numberDiff line numberDiff line change
@@ -13,45 +13,55 @@ import readPkgUp from 'read-pkg-up';
1313
import values from 'object.values';
1414
import includes from 'array-includes';
1515

16-
// eslint/lib/util/glob-util has been moved to eslint/lib/util/glob-utils with version 5.3
17-
// and has been moved to eslint/lib/cli-engine/file-enumerator in version 6
16+
let FileEnumerator;
1817
let listFilesToProcess;
18+
1919
try {
20-
const FileEnumerator = require('eslint/lib/cli-engine/file-enumerator').FileEnumerator;
20+
({ FileEnumerator } = require('eslint/use-at-your-own-risk'));
21+
} catch (e) {
22+
try {
23+
// has been moved to eslint/lib/cli-engine/file-enumerator in version 6
24+
({ FileEnumerator } = require('eslint/lib/cli-engine/file-enumerator'));
25+
} catch (e) {
26+
try {
27+
// eslint/lib/util/glob-util has been moved to eslint/lib/util/glob-utils with version 5.3
28+
const { listFilesToProcess: originalListFilesToProcess } = require('eslint/lib/util/glob-utils');
29+
30+
// Prevent passing invalid options (extensions array) to old versions of the function.
31+
// https://github.com/eslint/eslint/blob/v5.16.0/lib/util/glob-utils.js#L178-L280
32+
// https://github.com/eslint/eslint/blob/v5.2.0/lib/util/glob-util.js#L174-L269
33+
listFilesToProcess = function (src, extensions) {
34+
return originalListFilesToProcess(src, {
35+
extensions: extensions,
36+
});
37+
};
38+
} catch (e) {
39+
const { listFilesToProcess: originalListFilesToProcess } = require('eslint/lib/util/glob-util');
40+
41+
listFilesToProcess = function (src, extensions) {
42+
const patterns = src.reduce((carry, pattern) => {
43+
return carry.concat(extensions.map((extension) => {
44+
return /\*\*|\*\./.test(pattern) ? pattern : `${pattern}/**/*${extension}`;
45+
}));
46+
}, src.slice());
47+
48+
return originalListFilesToProcess(patterns);
49+
};
50+
}
51+
}
52+
}
53+
54+
if (FileEnumerator) {
2155
listFilesToProcess = function (src, extensions) {
2256
const e = new FileEnumerator({
2357
extensions: extensions,
2458
});
59+
2560
return Array.from(e.iterateFiles(src), ({ filePath, ignored }) => ({
2661
ignored,
2762
filename: filePath,
2863
}));
2964
};
30-
} catch (e1) {
31-
// Prevent passing invalid options (extensions array) to old versions of the function.
32-
// https://github.com/eslint/eslint/blob/v5.16.0/lib/util/glob-utils.js#L178-L280
33-
// https://github.com/eslint/eslint/blob/v5.2.0/lib/util/glob-util.js#L174-L269
34-
let originalListFilesToProcess;
35-
try {
36-
originalListFilesToProcess = require('eslint/lib/util/glob-utils').listFilesToProcess;
37-
listFilesToProcess = function (src, extensions) {
38-
return originalListFilesToProcess(src, {
39-
extensions: extensions,
40-
});
41-
};
42-
} catch (e2) {
43-
originalListFilesToProcess = require('eslint/lib/util/glob-util').listFilesToProcess;
44-
45-
listFilesToProcess = function (src, extensions) {
46-
const patterns = src.reduce((carry, pattern) => {
47-
return carry.concat(extensions.map((extension) => {
48-
return /\*\*|\*\./.test(pattern) ? pattern : `${pattern}/**/*${extension}`;
49-
}));
50-
}, src.slice());
51-
52-
return originalListFilesToProcess(patterns);
53-
};
54-
}
5565
}
5666

5767
const EXPORT_DEFAULT_DECLARATION = 'ExportDefaultDeclaration';

0 commit comments

Comments
 (0)