@@ -8,64 +8,60 @@ const WebpackError = require("./WebpackError");
88
99/** @typedef {import("./Module") } Module */
1010
11+ /**
12+ * @param {Module[] } modules the modules to be sorted
13+ * @returns {Module[] } sorted version of original modules
14+ */
15+ const sortModules = modules => {
16+ return modules . slice ( ) . sort ( ( a , b ) => {
17+ a = a . identifier ( ) ;
18+ b = b . identifier ( ) ;
19+ /* istanbul ignore next */
20+ if ( a < b ) return - 1 ;
21+ /* istanbul ignore next */
22+ if ( a > b ) return 1 ;
23+ /* istanbul ignore next */
24+ return 0 ;
25+ } ) ;
26+ } ;
27+
28+ /**
29+ * @param {Module[] } modules each module from throw
30+ * @returns {string } each message from provided moduels
31+ */
32+ const createModulesListMessage = modules => {
33+ return modules
34+ . map ( m => {
35+ let message = `* ${ m . identifier ( ) } ` ;
36+ const validReasons = m . reasons . filter ( reason => reason . module ) ;
37+
38+ if ( validReasons . length > 0 ) {
39+ message += `\n Used by ${ validReasons . length } module(s), i. e.` ;
40+ message += `\n ${ validReasons [ 0 ] . module . identifier ( ) } ` ;
41+ }
42+ return message ;
43+ } )
44+ . join ( "\n" ) ;
45+ } ;
46+
1147class CaseSensitiveModulesWarning extends WebpackError {
1248 /**
1349 * Creates an instance of CaseSensitiveModulesWarning.
1450 * @param {Module[] } modules modules that were detected
1551 */
1652 constructor ( modules ) {
17- super ( ) ;
18-
19- this . name = "CaseSensitiveModulesWarning" ;
20- const sortedModules = this . _sort ( modules ) ;
21- const modulesList = this . _moduleMessages ( sortedModules ) ;
22- this . message = `There are multiple modules with names that only differ in casing.
53+ const sortedModules = sortModules ( modules ) ;
54+ const modulesList = createModulesListMessage ( sortedModules ) ;
55+ super ( `There are multiple modules with names that only differ in casing.
2356This can lead to unexpected behavior when compiling on a filesystem with other case-semantic.
2457Use equal casing. Compare these module identifiers:
25- ${ modulesList } `;
58+ ${ modulesList } `) ;
2659
60+ this . name = "CaseSensitiveModulesWarning" ;
2761 this . origin = this . module = sortedModules [ 0 ] ;
2862
2963 Error . captureStackTrace ( this , this . constructor ) ;
3064 }
31-
32- /**
33- * @private
34- * @param {Module[] } modules the modules to be sorted
35- * @returns {Module[] } sorted version of original modules
36- */
37- _sort ( modules ) {
38- return modules . slice ( ) . sort ( ( a , b ) => {
39- a = a . identifier ( ) ;
40- b = b . identifier ( ) ;
41- /* istanbul ignore next */
42- if ( a < b ) return - 1 ;
43- /* istanbul ignore next */
44- if ( a > b ) return 1 ;
45- /* istanbul ignore next */
46- return 0 ;
47- } ) ;
48- }
49-
50- /**
51- * @private
52- * @param {Module[] } modules each module from throw
53- * @returns {string } each message from provided moduels
54- */
55- _moduleMessages ( modules ) {
56- return modules
57- . map ( m => {
58- let message = `* ${ m . identifier ( ) } ` ;
59- const validReasons = m . reasons . filter ( reason => reason . module ) ;
60-
61- if ( validReasons . length > 0 ) {
62- message += `\n Used by ${ validReasons . length } module(s), i. e.` ;
63- message += `\n ${ validReasons [ 0 ] . module . identifier ( ) } ` ;
64- }
65- return message ;
66- } )
67- . join ( "\n" ) ;
68- }
6965}
7066
7167module . exports = CaseSensitiveModulesWarning ;
0 commit comments