Skip to content

Commit 74b8651

Browse files
authored
Merge pull request webpack#3207 from Tushkiz/fix/eslint-no-loop-func-warnings
fix 'no-loop-func' warnings
2 parents 481752a + d85d165 commit 74b8651

5 files changed

Lines changed: 95 additions & 68 deletions

File tree

lib/Compilation.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -944,14 +944,16 @@ Compilation.prototype.modifyHash = function modifyHash(update) {
944944
};
945945

946946
Compilation.prototype.createModuleAssets = function createModuleAssets() {
947+
var cacheAssetsAndApplyPlugins = function cacheAssetsAndApplyPlugins(name) {
948+
var file = this.getPath(name);
949+
this.assets[file] = module.assets[name];
950+
this.applyPlugins("module-asset", module, file);
951+
}
952+
947953
for(var i = 0; i < this.modules.length; i++) {
948954
var module = this.modules[i];
949955
if(module.assets) {
950-
Object.keys(module.assets).forEach(function(name) {
951-
var file = this.getPath(name);
952-
this.assets[file] = module.assets[name];
953-
this.applyPlugins("module-asset", module, file);
954-
}, this);
956+
Object.keys(module.assets).forEach(cacheAssetsAndApplyPlugins, this);
955957
}
956958
}
957959
};

lib/ExternalModuleFactoryPlugin.js

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,22 @@ ExternalModuleFactoryPlugin.prototype.apply = function(normalModuleFactory) {
4040
} else if(Array.isArray(externals)) {
4141
var i = 0;
4242
(function next() {
43+
var handleExternalsAndCallback = function handleExternalsAndCallback(err, module) {
44+
if(err) return callback(err);
45+
if(!module) {
46+
if(async) {
47+
async = false;
48+
return;
49+
}
50+
return next();
51+
}
52+
callback(null, module);
53+
}
54+
4355
do {
4456
var async = true;
4557
if(i >= externals.length) return callback();
46-
handleExternals(externals[i++], function(err, module) {
47-
if(err) return callback(err);
48-
if(!module) {
49-
if(async) {
50-
async = false;
51-
return;
52-
}
53-
return next();
54-
}
55-
callback(null, module);
56-
});
58+
handleExternals(externals[i++], handleExternalsAndCallback);
5759
} while (!async);
5860
async = false;
5961
}());

lib/HotModuleReplacement.runtime.js

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,21 @@ module.exports = function() {
3030
hotMainModule = false;
3131
return $require$(request);
3232
};
33+
var ObjectFactory = function ObjectFactory(name) {
34+
return {
35+
configurable: true,
36+
enumerable: true,
37+
get: function() {
38+
return $require$[name];
39+
},
40+
set: function(value) {
41+
$require$[name] = value;
42+
}
43+
};
44+
}
3345
for(var name in $require$) {
3446
if(Object.prototype.hasOwnProperty.call($require$, name)) {
35-
Object.defineProperty(fn, name, (function(name) {
36-
return {
37-
configurable: true,
38-
enumerable: true,
39-
get: function() {
40-
return $require$[name];
41-
},
42-
set: function(value) {
43-
$require$[name] = value;
44-
}
45-
};
46-
}(name)));
47+
Object.defineProperty(fn, name, ObjectFactory(name));
4748
}
4849
}
4950
Object.defineProperty(fn, "e", {
@@ -334,6 +335,11 @@ module.exports = function() {
334335
var outdatedDependencies = {};
335336
var outdatedModules = [];
336337
var appliedUpdate = {};
338+
339+
var warnUnexpectedRequire = function warnUnexpectedRequire() {
340+
console.warn("[HMR] unexpected require(" + result.moduleId + ") to disposed module");
341+
};
342+
337343
for(var id in hotUpdate) {
338344
if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
339345
moduleId = toModuleId(id);
@@ -402,9 +408,7 @@ module.exports = function() {
402408
}
403409
if(doDispose) {
404410
addAllToSet(outdatedModules, [result.moduleId]);
405-
appliedUpdate[moduleId] = function() {
406-
console.warn("[HMR] unexpected require(" + result.moduleId + ") to disposed module");
407-
};
411+
appliedUpdate[moduleId] = warnUnexpectedRequire;
408412
}
409413
}
410414
}

lib/OptionsDefaulter.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ function hasProperty(obj, name, value) {
3636
}
3737

3838
OptionsDefaulter.prototype.process = function(options) {
39+
var addItemTo = function addItemTo(list) {
40+
return function(item) {
41+
list.push(item);
42+
}
43+
}
44+
3945
for(var name in this.defaults) {
4046
switch(this.config[name]) {
4147
case undefined:
@@ -52,9 +58,7 @@ OptionsDefaulter.prototype.process = function(options) {
5258
case "append":
5359
var oldValue = getProperty(options, name);
5460
if(!Array.isArray(oldValue)) oldValue = [];
55-
this.defaults[name].forEach(function(item) {
56-
oldValue.push(item);
57-
});
61+
this.defaults[name].forEach(addItemTo(oldValue));
5862
setProperty(options, name, oldValue);
5963
break;
6064
default:

lib/optimize/AggressiveSplittingPlugin.js

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,39 @@ function AggressiveSplittingPlugin(options) {
1313
}
1414
module.exports = AggressiveSplittingPlugin;
1515

16-
function makeRelative(compiler, identifier) {
17-
var context = compiler.context;
18-
return identifier.split("|").map(function(str) {
19-
return str.split("!").map(function(str) {
20-
return path.relative(context, str);
21-
}).join("!");
22-
}).join("|");
16+
function makeRelative(context) {
17+
return function(module) {
18+
var identifier = module.identifier();
19+
return identifier.split("|").map(function(str) {
20+
return str.split("!").map(function(str) {
21+
return path.relative(context, str);
22+
}).join("!");
23+
}).join("|");
24+
}
25+
}
26+
27+
function toIndexOf(list) {
28+
return function(item) {
29+
return list.indexOf(item);
30+
}
31+
}
32+
33+
function toChunkModuleIndices(modules) {
34+
return function(idx) {
35+
return modules[idx];
36+
}
37+
}
38+
39+
function moveModuleBetween(oldChunk, newChunk) {
40+
return function(module) {
41+
oldChunk.moveModule(module, newChunk);
42+
}
43+
}
44+
45+
function isNotAEntryModule(entryModule) {
46+
return function(module) {
47+
return entryModule !== module;
48+
}
2349
}
2450

2551
function copyWithReason(obj) {
@@ -48,26 +74,19 @@ AggressiveSplittingPlugin.prototype.apply = function(compiler) {
4874
var splitData = usedSplits[j];
4975
for(i = 0; i < chunks.length; i++) {
5076
chunk = chunks[i];
51-
var chunkModuleNames = chunk.modules.map(function(m) {
52-
return makeRelative(compiler, m.identifier());
53-
});
77+
var chunkModuleNames = chunk.modules.map(makeRelative(compiler.context));
78+
5479
if(chunkModuleNames.length < splitData.modules)
5580
continue;
56-
var moduleIndicies = splitData.modules.map(function(m) {
57-
return chunkModuleNames.indexOf(m);
58-
});
81+
var moduleIndicies = splitData.modules.map(toIndexOf(chunkModuleNames));
5982
var hasAllModules = moduleIndicies.every(function(idx) {
6083
return idx >= 0;
6184
});
6285
if(hasAllModules) {
6386
if(chunkModuleNames.length > splitData.modules.length) {
64-
var selectedModules = moduleIndicies.map(function(idx) {
65-
return chunk.modules[idx];
66-
});
87+
var selectedModules = moduleIndicies.map(toChunkModuleIndices(chunk.modules));
6788
newChunk = compilation.addChunk();
68-
selectedModules.forEach(function(m) {
69-
chunk.moveModule(m, newChunk);
70-
});
89+
selectedModules.forEach(moveModuleBetween(chunk, newChunk));
7190
chunk.split(newChunk);
7291
chunk.name = null;
7392
newChunk._fromAggressiveSplitting = true;
@@ -92,15 +111,15 @@ AggressiveSplittingPlugin.prototype.apply = function(compiler) {
92111
var size = chunk.size(_this.options);
93112
if(size > maxSize && chunk.modules.length > 1) {
94113
newChunk = compilation.addChunk();
95-
var modules = chunk.modules.filter(function(m) {
96-
return chunk.entryModule !== m;
97-
}).sort(function(a, b) {
98-
a = a.identifier();
99-
b = b.identifier();
100-
if(a > b) return 1;
101-
if(a < b) return -1;
102-
return 0;
103-
});
114+
var modules = chunk.modules
115+
.filter(isNotAEntryModule(chunk.entryModule))
116+
.sort(function(a, b) {
117+
a = a.identifier();
118+
b = b.identifier();
119+
if(a > b) return 1;
120+
if(a < b) return -1;
121+
return 0;
122+
});
104123
for(var k = 0; k < modules.length; k++) {
105124
chunk.moveModule(modules[k], newChunk);
106125
var newSize = newChunk.size(_this.options);
@@ -126,9 +145,7 @@ AggressiveSplittingPlugin.prototype.apply = function(compiler) {
126145
newChunk.origins = chunk.origins.map(copyWithReason);
127146
chunk.origins = chunk.origins.map(copyWithReason);
128147
compilation._aggressiveSplittingSplits = (compilation._aggressiveSplittingSplits || []).concat({
129-
modules: newChunk.modules.map(function(m) {
130-
return makeRelative(compiler, m.identifier());
131-
})
148+
modules: newChunk.modules.map(makeRelative(compiler.context))
132149
});
133150
return true;
134151
} else {
@@ -146,9 +163,7 @@ AggressiveSplittingPlugin.prototype.apply = function(compiler) {
146163
if(chunk.hasEntryModule()) return;
147164
var size = chunk.size(_this.options);
148165
var incorrectSize = size < minSize;
149-
var modules = chunk.modules.map(function(m) {
150-
return makeRelative(compiler, m.identifier());
151-
});
166+
var modules = chunk.modules.map(makeRelative(compiler.context));
152167
if(typeof chunk._fromAggressiveSplittingIndex === "undefined") {
153168
if(incorrectSize) return;
154169
chunk.recorded = true;

0 commit comments

Comments
 (0)