k-l-lambda's picture
updated node_modules
4cadbaf
/**
* @license
* Copyright 2018 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
function isAsync (chunk) {
if ('canBeInitial' in chunk) {
return !chunk.canBeInitial()
} else {
return !chunk.isInitial()
}
}
function getChunkEntryNames (chunk) {
if ('groupsIterable' in chunk) {
return Array.from(new Set(getNames(chunk.groupsIterable)))
} else {
return chunk.entrypoints.map(e => e.options.name)
}
}
function getNames (groups, processed = new Set()) {
const Entrypoint = require('webpack/lib/Entrypoint')
const names = []
for (const group of groups) {
if (group instanceof Entrypoint) {
// entrypoint
if (group.options.name) {
names.push(group.options.name)
}
} else if (!processed.has(group)) {
processed.add(group)
names.push(...getNames(group.parentsIterable, processed))
}
}
return names
}
function extractChunks ({ compilation, optionsInclude }) {
let includeChunks
let includeType
let includeEntryPoints
if (optionsInclude && typeof optionsInclude === 'object') {
includeType = optionsInclude.type
includeChunks = optionsInclude.chunks
includeEntryPoints = optionsInclude.entries
} else {
if (Array.isArray(optionsInclude)) {
includeChunks = optionsInclude
} else {
includeType = optionsInclude
}
}
let chunks = compilation.chunks
if (Array.isArray(includeChunks)) {
chunks = chunks.filter((chunk) => {
return chunk.name && includeChunks.includes(chunk.name)
})
}
if (Array.isArray(includeEntryPoints)) {
chunks = chunks.filter(chunk => {
const names = getChunkEntryNames(chunk)
return names.some(name => includeEntryPoints.includes(name))
})
}
// 'asyncChunks' are chunks intended for lazy/async loading usually generated as
// part of code-splitting with import() or require.ensure(). By default, asyncChunks
// get wired up using link rel=preload when using this plugin. This behaviour can be
// configured to preload all types of chunks or just prefetch chunks as needed.
if (includeType === undefined || includeType === 'asyncChunks') {
return chunks.filter(isAsync)
}
if (includeType === 'initial') {
return chunks.filter(chunk => !isAsync(chunk))
}
if (includeType === 'allChunks') {
// Async chunks, vendor chunks, normal chunks.
return chunks
}
if (includeType === 'allAssets') {
// Every asset, regardless of which chunk it's in.
// Wrap it in a single, "psuedo-chunk" return value.
return [{ files: Object.keys(compilation.assets) }]
}
return chunks
}
module.exports = extractChunks