webpack/lib/Entrypoint.js

68 lines
1.4 KiB
JavaScript
Raw Normal View History

/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
class Entrypoint {
constructor(name) {
this.name = name;
this.chunks = [];
this.runtimeChunk = undefined;
}
unshiftChunk(chunk) {
2017-11-06 23:41:26 +08:00
const oldIdx = this.chunks.indexOf(chunk);
if(oldIdx > 0) {
this.chunks.splice(oldIdx, 1);
this.chunks.unshift(chunk);
} else if(oldIdx < 0 && chunk.addEntrypoint(this)) {
this.chunks.unshift(chunk);
}
}
insertChunk(chunk, before) {
const oldIdx = this.chunks.indexOf(chunk);
const idx = this.chunks.indexOf(before);
if(idx < 0) {
throw new Error("before chunk not found");
}
if(oldIdx >= 0 && oldIdx > idx) {
this.chunks.splice(oldIdx, 1);
this.chunks.splice(idx, 0, chunk);
} else if(oldIdx < 0) {
this.chunks.splice(idx, 0, chunk);
2017-11-06 23:41:26 +08:00
chunk.addEntrypoint(this);
}
}
2018-01-09 16:40:30 +08:00
remove() {
for(const chunk of this.chunks) {
chunk.removeEntrypoint(this);
}
this.chunks.length = 0;
}
getFiles() {
2017-11-06 23:41:26 +08:00
const files = new Set();
for(let chunkIdx = 0; chunkIdx < this.chunks.length; chunkIdx++) {
for(let fileIdx = 0; fileIdx < this.chunks[chunkIdx].files.length; fileIdx++) {
2017-11-06 23:41:26 +08:00
files.add(this.chunks[chunkIdx].files[fileIdx]);
}
}
2017-11-06 23:41:26 +08:00
return Array.from(files);
}
setRuntimeChunk(chunk) {
this.runtimeChunk = chunk;
}
getRuntimeChunk() {
return this.runtimeChunk || this.chunks[0];
}
}
module.exports = Entrypoint;