2016-07-13 17:03:14 +08:00
|
|
|
/*
|
|
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
|
|
Author Tobias Koppers @sokra
|
|
|
|
*/
|
2016-12-01 12:37:14 +08:00
|
|
|
function Entrypoint(name) {
|
2016-07-13 17:03:14 +08:00
|
|
|
this.name = name;
|
|
|
|
this.chunks = [];
|
|
|
|
}
|
|
|
|
module.exports = Entrypoint;
|
|
|
|
|
|
|
|
Entrypoint.prototype.unshiftChunk = function(chunk) {
|
|
|
|
this.chunks.unshift(chunk);
|
|
|
|
chunk.entrypoints.push(this);
|
|
|
|
};
|
|
|
|
|
|
|
|
Entrypoint.prototype.insertChunk = function(chunk, before) {
|
|
|
|
var idx = this.chunks.indexOf(before);
|
|
|
|
if(idx >= 0) {
|
|
|
|
this.chunks.splice(idx, 0, chunk);
|
|
|
|
} else {
|
|
|
|
throw new Error("before chunk not found");
|
|
|
|
}
|
|
|
|
chunk.entrypoints.push(this);
|
|
|
|
};
|
2016-11-29 08:38:17 +08:00
|
|
|
|
2016-12-14 00:25:32 +08:00
|
|
|
Entrypoint.prototype.getFiles = function(filterPredicate) {
|
2016-12-01 12:37:14 +08:00
|
|
|
var files = [];
|
|
|
|
|
2016-12-05 06:47:19 +08:00
|
|
|
for(var chunkIdx = 0; chunkIdx < this.chunks.length; chunkIdx++) {
|
|
|
|
for(var fileIdx = 0; fileIdx < this.chunks[chunkIdx].files.length; fileIdx++) {
|
|
|
|
if(files.indexOf(this.chunks[chunkIdx].files[fileIdx]) === -1) {
|
2016-11-29 08:38:17 +08:00
|
|
|
files.push(this.chunks[chunkIdx].files[fileIdx]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-12-14 00:25:32 +08:00
|
|
|
if (typeof filterFn !== 'undefined') {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2016-11-29 08:38:17 +08:00
|
|
|
return files;
|
|
|
|
}
|
|
|
|
|
2016-12-01 12:37:14 +08:00
|
|
|
Entrypoint.prototype.getSize = function(compilation) {
|
2016-11-29 08:38:17 +08:00
|
|
|
var files = this.getFiles();
|
|
|
|
|
|
|
|
return files
|
2016-12-14 00:25:32 +08:00
|
|
|
.filter(function(asset) { return !(/\.map$/.test(asset)) })
|
2016-12-05 06:47:19 +08:00
|
|
|
.map(function(file) {
|
|
|
|
return compilation.assets[file].size()
|
|
|
|
})
|
|
|
|
.reduce(function(currentSize, nextSize) {
|
|
|
|
return currentSize + nextSize
|
|
|
|
}, 0);
|
2016-11-29 08:38:17 +08:00
|
|
|
}
|