You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.3 KiB
97 lines
3.3 KiB
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.transformFiles = exports.reduceChunk = exports.reduceAssets = exports.generateManifest = void 0; |
|
const path_1 = require("path"); |
|
const generateManifest = (compilation, files, { generate, seed = {} }) => { |
|
let result; |
|
if (generate) { |
|
const entrypointsArray = Array.from(compilation.entrypoints.entries()); |
|
const entrypoints = entrypointsArray.reduce((e, [name, entrypoint]) => Object.assign(e, { [name]: entrypoint.getFiles() }), {}); |
|
result = generate(seed, files, entrypoints); |
|
} |
|
else { |
|
result = files.reduce((manifest, file) => Object.assign(manifest, { [file.name]: file.path }), seed); |
|
} |
|
return result; |
|
}; |
|
exports.generateManifest = generateManifest; |
|
const getFileType = (fileName, { transformExtensions }) => { |
|
const replaced = fileName.replace(/\?.*/, ''); |
|
const split = replaced.split('.'); |
|
const extension = split.pop(); |
|
return transformExtensions.test(extension) ? `${split.pop()}.${extension}` : extension; |
|
}; |
|
const reduceAssets = (files, asset, moduleAssets) => { |
|
let name; |
|
if (moduleAssets[asset.name]) { |
|
name = moduleAssets[asset.name]; |
|
} |
|
else if (asset.info.sourceFilename) { |
|
name = path_1.join(path_1.dirname(asset.name), path_1.basename(asset.info.sourceFilename)); |
|
} |
|
if (name) { |
|
return files.concat({ |
|
isAsset: true, |
|
isChunk: false, |
|
isInitial: false, |
|
isModuleAsset: true, |
|
name, |
|
path: asset.name |
|
}); |
|
} |
|
const isEntryAsset = asset.chunks && asset.chunks.length > 0; |
|
if (isEntryAsset) { |
|
return files; |
|
} |
|
return files.concat({ |
|
isAsset: true, |
|
isChunk: false, |
|
isInitial: false, |
|
isModuleAsset: false, |
|
name: asset.name, |
|
path: asset.name |
|
}); |
|
}; |
|
exports.reduceAssets = reduceAssets; |
|
const reduceChunk = (files, chunk, options, auxiliaryFiles) => { |
|
Array.from(chunk.auxiliaryFiles || []).forEach((auxiliaryFile) => { |
|
auxiliaryFiles[auxiliaryFile] = { |
|
isAsset: true, |
|
isChunk: false, |
|
isInitial: false, |
|
isModuleAsset: true, |
|
name: path_1.basename(auxiliaryFile), |
|
path: auxiliaryFile |
|
}; |
|
}); |
|
return Array.from(chunk.files).reduce((prev, path) => { |
|
let name = chunk.name ? chunk.name : null; |
|
name = name |
|
? options.useEntryKeys && !path.endsWith('.map') |
|
? name |
|
: `${name}.${getFileType(path, options)}` |
|
: path; |
|
return prev.concat({ |
|
chunk, |
|
isAsset: false, |
|
isChunk: true, |
|
isInitial: chunk.isOnlyInitial(), |
|
isModuleAsset: false, |
|
name, |
|
path |
|
}); |
|
}, files); |
|
}; |
|
exports.reduceChunk = reduceChunk; |
|
const standardizeFilePaths = (file) => { |
|
const result = Object.assign({}, file); |
|
result.name = file.name.replace(/\\/g, '/'); |
|
result.path = file.path.replace(/\\/g, '/'); |
|
return result; |
|
}; |
|
const transformFiles = (files, options) => ['filter', 'map', 'sort'] |
|
.filter((fname) => !!options[fname]) |
|
.reduce((prev, fname) => prev[fname](options[fname]), files) |
|
.map(standardizeFilePaths); |
|
exports.transformFiles = transformFiles; |
|
//# sourceMappingURL=helpers.js.map
|