UNPKG

3.41 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.transformFiles = exports.reduceChunk = exports.reduceAssets = exports.generateManifest = void 0;
4const path_1 = require("path");
5const generateManifest = (compilation, files, { generate, seed = {} }) => {
6 let result;
7 if (generate) {
8 const entrypointsArray = Array.from(compilation.entrypoints.entries());
9 const entrypoints = entrypointsArray.reduce((e, [name, entrypoint]) => Object.assign(e, { [name]: entrypoint.getFiles() }), {});
10 result = generate(seed, files, entrypoints);
11 }
12 else {
13 result = files.reduce((manifest, file) => Object.assign(manifest, { [file.name]: file.path }), seed);
14 }
15 return result;
16};
17exports.generateManifest = generateManifest;
18const getFileType = (fileName, { transformExtensions }) => {
19 const replaced = fileName.replace(/\?.*/, '');
20 const split = replaced.split('.');
21 const extension = split.pop();
22 return transformExtensions.test(extension) ? `${split.pop()}.${extension}` : extension;
23};
24const reduceAssets = (files, asset, moduleAssets) => {
25 let name;
26 if (moduleAssets[asset.name]) {
27 name = moduleAssets[asset.name];
28 }
29 else if (asset.info.sourceFilename) {
30 name = path_1.join(path_1.dirname(asset.name), path_1.basename(asset.info.sourceFilename));
31 }
32 if (name) {
33 return files.concat({
34 isAsset: true,
35 isChunk: false,
36 isInitial: false,
37 isModuleAsset: true,
38 name,
39 path: asset.name
40 });
41 }
42 const isEntryAsset = asset.chunks && asset.chunks.length > 0;
43 if (isEntryAsset) {
44 return files;
45 }
46 return files.concat({
47 isAsset: true,
48 isChunk: false,
49 isInitial: false,
50 isModuleAsset: false,
51 name: asset.name,
52 path: asset.name
53 });
54};
55exports.reduceAssets = reduceAssets;
56const reduceChunk = (files, chunk, options, auxiliaryFiles) => {
57 Array.from(chunk.auxiliaryFiles || []).forEach((auxiliaryFile) => {
58 auxiliaryFiles[auxiliaryFile] = {
59 isAsset: true,
60 isChunk: false,
61 isInitial: false,
62 isModuleAsset: true,
63 name: path_1.basename(auxiliaryFile),
64 path: auxiliaryFile
65 };
66 });
67 return Array.from(chunk.files).reduce((prev, path) => {
68 let name = chunk.name ? chunk.name : null;
69 name = name
70 ? options.useEntryKeys && !path.endsWith('.map')
71 ? name
72 : `${name}.${getFileType(path, options)}`
73 : path;
74 return prev.concat({
75 chunk,
76 isAsset: false,
77 isChunk: true,
78 isInitial: chunk.isOnlyInitial(),
79 isModuleAsset: false,
80 name,
81 path
82 });
83 }, files);
84};
85exports.reduceChunk = reduceChunk;
86const standardizeFilePaths = (file) => {
87 const result = Object.assign({}, file);
88 result.name = file.name.replace(/\\/g, '/');
89 result.path = file.path.replace(/\\/g, '/');
90 return result;
91};
92const transformFiles = (files, options) => ['filter', 'map', 'sort']
93 .filter((fname) => !!options[fname])
94 .reduce((prev, fname) => prev[fname](options[fname]), files)
95 .map(standardizeFilePaths);
96exports.transformFiles = transformFiles;
97//# sourceMappingURL=helpers.js.map
\No newline at end of file