webpack 4.1.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +719 -721
- package/bin/webpack.js +69 -10
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +75 -77
- package/lib/AsyncDependencyToInitialChunkError.js +21 -23
- package/lib/BannerPlugin.js +101 -101
- package/lib/Chunk.js +477 -469
- package/lib/ChunkTemplate.js +51 -53
- package/lib/Compilation.js +1858 -1851
- package/lib/Compiler.js +493 -478
- package/lib/ConcurrentCompilationError.js +19 -0
- package/lib/ContextModule.js +696 -685
- package/lib/ContextModuleFactory.js +245 -243
- package/lib/DefinePlugin.js +197 -197
- package/lib/DelegatedModule.js +101 -101
- package/lib/DependenciesBlockVariable.js +51 -52
- package/lib/Dependency.js +53 -52
- package/lib/DllModule.js +54 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/EnvironmentPlugin.js +65 -67
- package/lib/EvalDevToolModuleTemplatePlugin.js +60 -60
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +105 -105
- package/lib/ExportPropertyMainTemplatePlugin.js +40 -40
- package/lib/ExternalModule.js +159 -159
- package/lib/FunctionModuleTemplatePlugin.js +98 -98
- package/lib/HotModuleReplacement.runtime.js +631 -631
- package/lib/HotModuleReplacementPlugin.js +407 -406
- package/lib/HotUpdateChunkTemplate.js +78 -80
- package/lib/JavascriptGenerator.js +228 -229
- package/lib/JavascriptModulesPlugin.js +184 -158
- package/lib/JsonGenerator.js +42 -42
- package/lib/MainTemplate.js +406 -402
- package/lib/Module.js +343 -340
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleError.js +28 -28
- package/lib/ModuleFilenameHelpers.js +166 -166
- package/lib/ModuleTemplate.js +77 -79
- package/lib/ModuleWarning.js +30 -30
- package/lib/MultiCompiler.js +271 -259
- package/lib/MultiModule.js +78 -75
- package/lib/MultiModuleFactory.js +23 -23
- package/lib/MultiWatching.js +38 -37
- package/lib/NoModeWarning.js +23 -21
- package/lib/NormalModule.js +478 -470
- package/lib/NormalModuleFactory.js +483 -481
- package/lib/OptionsDefaulter.js +80 -86
- package/lib/Parser.js +2074 -2071
- package/lib/ProgressPlugin.js +231 -231
- package/lib/RawModule.js +54 -55
- package/lib/RecordIdsPlugin.js +160 -160
- package/lib/RemovedPluginError.js +13 -13
- package/lib/ResolverFactory.js +64 -67
- package/lib/RuntimeTemplate.js +267 -297
- package/lib/SetVarMainTemplatePlugin.js +57 -57
- package/lib/SourceMapDevToolPlugin.js +302 -308
- package/lib/Stats.js +1234 -1212
- package/lib/Template.js +205 -205
- package/lib/TemplatedPathPlugin.js +170 -143
- package/lib/UmdMainTemplatePlugin.js +264 -269
- package/lib/Watching.js +193 -193
- package/lib/WebAssemblyParser.js +50 -54
- package/lib/WebpackOptionsApply.js +401 -401
- package/lib/WebpackOptionsDefaulter.js +337 -317
- package/lib/WebpackOptionsValidationError.js +316 -319
- package/lib/debug/ProfilingPlugin.js +409 -405
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +328 -311
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +270 -241
- package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -23
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +620 -606
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +53 -53
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +214 -214
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +154 -156
- package/lib/dependencies/ImportDependenciesBlock.js +17 -17
- package/lib/dependencies/ImportDependency.js +34 -34
- package/lib/dependencies/ImportEagerDependency.js +32 -32
- package/lib/dependencies/ImportParserPlugin.js +175 -179
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/JsonExportsDependency.js +25 -25
- package/lib/dependencies/ModuleDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireIncludeDependency.js +40 -40
- package/lib/dependencies/WebpackMissingModule.js +20 -22
- package/lib/node/NodeChunkTemplatePlugin.js +31 -31
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -36
- package/lib/node/NodeMainTemplatePlugin.js +320 -273
- package/lib/node/ReadFileCompileWasmMainTemplatePlugin.js +113 -115
- package/lib/optimize/AggressiveSplittingPlugin.js +281 -281
- package/lib/optimize/ConcatenatedModule.js +1364 -1366
- package/lib/optimize/RemoveParentModulesPlugin.js +114 -114
- package/lib/optimize/SplitChunksPlugin.js +519 -491
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/objectToMap.js +10 -10
- package/lib/wasm/WasmModuleTemplatePlugin.js +106 -106
- package/lib/web/JsonpChunkTemplatePlugin.js +47 -47
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplatePlugin.js +425 -403
- package/lib/webpack.js +182 -179
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +177 -154
- package/package.json +9 -8
- package/schemas/WebpackOptions.json +1973 -1951
- package/schemas/ajv.absolutePath.js +55 -29
- package/schemas/plugins/BannerPlugin.json +85 -85
- package/schemas/plugins/DllPlugin.json +28 -28
- package/schemas/plugins/DllReferencePlugin.json +99 -99
- package/schemas/plugins/HashedModuleIdsPlugin.json +24 -24
- package/schemas/plugins/LoaderOptionsPlugin.json +26 -26
- package/schemas/plugins/SourceMapDevToolPlugin.json +187 -187
- package/schemas/plugins/WatchIgnorePlugin.json +16 -16
- package/schemas/plugins/debug/ProfilingPlugin.json +12 -12
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +22 -22
- package/schemas/plugins/optimize/LimitChunkCountPlugin.json +15 -15
- package/schemas/plugins/optimize/MinChunkSizePlugin.json +13 -13
package/lib/Template.js
CHANGED
@@ -1,205 +1,205 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const ConcatSource = require("webpack-sources")
|
8
|
-
|
9
|
-
const START_LOWERCASE_ALPHABET_CODE = "a".charCodeAt(0);
|
10
|
-
const START_UPPERCASE_ALPHABET_CODE = "A".charCodeAt(0);
|
11
|
-
const DELTA_A_TO_Z = "z".charCodeAt(0) - START_LOWERCASE_ALPHABET_CODE + 1;
|
12
|
-
const FUNCTION_CONTENT_REGEX = /^function\s?\(\)\s?\{\r?\n?|\r?\n?\}$/g;
|
13
|
-
const INDENT_MULTILINE_REGEX = /^\t/gm;
|
14
|
-
const LINE_SEPARATOR_REGEX = /\r?\n/g;
|
15
|
-
const IDENTIFIER_NAME_REPLACE_REGEX = /^([^a-zA-Z$_])/;
|
16
|
-
const IDENTIFIER_ALPHA_NUMERIC_NAME_REPLACE_REGEX = /[^a-zA-Z0-9$]+/g;
|
17
|
-
const COMMENT_END_REGEX = /\*\//g;
|
18
|
-
const PATH_NAME_NORMALIZE_REPLACE_REGEX = /[^a-zA-Z0-9_!§$()=\-^°]+/g;
|
19
|
-
const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
|
20
|
-
|
21
|
-
const stringifyIdSortPredicate = (a, b) => {
|
22
|
-
var aId = a.id + "";
|
23
|
-
var bId = b.id + "";
|
24
|
-
if (aId < bId) return -1;
|
25
|
-
if (aId > bId) return 1;
|
26
|
-
return 0;
|
27
|
-
};
|
28
|
-
|
29
|
-
const moduleIdIsNumber = module => {
|
30
|
-
return typeof module.id === "number";
|
31
|
-
};
|
32
|
-
|
33
|
-
module.exports = class Template {
|
34
|
-
static getFunctionContent(fn) {
|
35
|
-
return fn
|
36
|
-
.toString()
|
37
|
-
.replace(FUNCTION_CONTENT_REGEX, "")
|
38
|
-
.replace(INDENT_MULTILINE_REGEX, "")
|
39
|
-
.replace(LINE_SEPARATOR_REGEX, "\n");
|
40
|
-
}
|
41
|
-
|
42
|
-
static toIdentifier(str) {
|
43
|
-
if (typeof str !== "string") return "";
|
44
|
-
return str
|
45
|
-
.replace(IDENTIFIER_NAME_REPLACE_REGEX, "_$1")
|
46
|
-
.replace(IDENTIFIER_ALPHA_NUMERIC_NAME_REPLACE_REGEX, "_");
|
47
|
-
}
|
48
|
-
|
49
|
-
static toComment(str) {
|
50
|
-
if (!str) return "";
|
51
|
-
return `/*! ${str.replace(COMMENT_END_REGEX, "* /")} */`;
|
52
|
-
}
|
53
|
-
|
54
|
-
static toNormalComment(str) {
|
55
|
-
if (!str) return "";
|
56
|
-
return `/* ${str.replace(COMMENT_END_REGEX, "* /")} */`;
|
57
|
-
}
|
58
|
-
|
59
|
-
static toPath(str) {
|
60
|
-
if (typeof str !== "string") return "";
|
61
|
-
return str
|
62
|
-
.replace(PATH_NAME_NORMALIZE_REPLACE_REGEX, "-")
|
63
|
-
.replace(MATCH_PADDED_HYPHENS_REPLACE_REGEX, "");
|
64
|
-
}
|
65
|
-
|
66
|
-
// map number to a single character a-z, A-Z or <_ + number> if number is too big
|
67
|
-
static numberToIdentifer(n) {
|
68
|
-
// lower case
|
69
|
-
if (n < DELTA_A_TO_Z)
|
70
|
-
return String.fromCharCode(START_LOWERCASE_ALPHABET_CODE + n);
|
71
|
-
|
72
|
-
// upper case
|
73
|
-
n -= DELTA_A_TO_Z;
|
74
|
-
if (n < DELTA_A_TO_Z)
|
75
|
-
return String.fromCharCode(START_UPPERCASE_ALPHABET_CODE + n);
|
76
|
-
|
77
|
-
// use multiple letters
|
78
|
-
return (
|
79
|
-
Template.numberToIdentifer(n % (2 * DELTA_A_TO_Z)) +
|
80
|
-
Template.numberToIdentifer(Math.floor(n / (2 * DELTA_A_TO_Z)))
|
81
|
-
);
|
82
|
-
}
|
83
|
-
|
84
|
-
static indent(str) {
|
85
|
-
if (Array.isArray(str)) {
|
86
|
-
return str.map(Template.indent).join("\n");
|
87
|
-
} else {
|
88
|
-
str = str.trimRight();
|
89
|
-
if (!str) return "";
|
90
|
-
var ind = str[0] === "\n" ? "" : "\t";
|
91
|
-
return ind + str.replace(/\n([^\n])/g, "\n\t$1");
|
92
|
-
}
|
93
|
-
}
|
94
|
-
|
95
|
-
static prefix(str, prefix) {
|
96
|
-
if (Array.isArray(str)) {
|
97
|
-
str = str.join("\n");
|
98
|
-
}
|
99
|
-
str = str.trim();
|
100
|
-
if (!str) return "";
|
101
|
-
const ind = str[0] === "\n" ? "" : prefix;
|
102
|
-
return ind + str.replace(/\n([^\n])/g, "\n" + prefix + "$1");
|
103
|
-
}
|
104
|
-
|
105
|
-
static asString(str) {
|
106
|
-
if (Array.isArray(str)) {
|
107
|
-
return str.join("\n");
|
108
|
-
}
|
109
|
-
return str;
|
110
|
-
}
|
111
|
-
|
112
|
-
static getModulesArrayBounds(modules) {
|
113
|
-
if (!modules.every(moduleIdIsNumber)) return false;
|
114
|
-
var maxId = -Infinity;
|
115
|
-
var minId = Infinity;
|
116
|
-
for (const module of modules) {
|
117
|
-
if (maxId < module.id) maxId = module.id;
|
118
|
-
if (minId > module.id) minId = module.id;
|
119
|
-
}
|
120
|
-
if (minId < 16 + ("" + minId).length) {
|
121
|
-
// add minId x ',' instead of 'Array(minId).concat(
|
122
|
-
minId = 0;
|
123
|
-
}
|
124
|
-
var objectOverhead = modules
|
125
|
-
.map(module => {
|
126
|
-
var idLength = (module.id + "").length;
|
127
|
-
return idLength + 2;
|
128
|
-
})
|
129
|
-
.reduce((a, b) => {
|
130
|
-
return a + b;
|
131
|
-
}, -1);
|
132
|
-
var arrayOverhead = minId === 0 ? maxId : 16 + ("" + minId).length + maxId;
|
133
|
-
return arrayOverhead < objectOverhead ? [minId, maxId] : false;
|
134
|
-
}
|
135
|
-
|
136
|
-
static renderChunkModules(
|
137
|
-
chunk,
|
138
|
-
filterFn,
|
139
|
-
moduleTemplate,
|
140
|
-
dependencyTemplates,
|
141
|
-
prefix
|
142
|
-
) {
|
143
|
-
if (!prefix) prefix = "";
|
144
|
-
var source = new ConcatSource();
|
145
|
-
const modules = chunk.getModules().filter(filterFn);
|
146
|
-
var removedModules = chunk.removedModules;
|
147
|
-
if (
|
148
|
-
modules.length === 0 &&
|
149
|
-
(!removedModules || removedModules.length === 0)
|
150
|
-
) {
|
151
|
-
source.add("[]");
|
152
|
-
return source;
|
153
|
-
}
|
154
|
-
var allModules = modules.map(module => {
|
155
|
-
return {
|
156
|
-
id: module.id,
|
157
|
-
source: moduleTemplate.render(module, dependencyTemplates, {
|
158
|
-
chunk
|
159
|
-
})
|
160
|
-
};
|
161
|
-
});
|
162
|
-
if (removedModules && removedModules.length > 0) {
|
163
|
-
for (const id of removedModules) {
|
164
|
-
allModules.push({
|
165
|
-
id: id,
|
166
|
-
source: "false"
|
167
|
-
});
|
168
|
-
}
|
169
|
-
}
|
170
|
-
var bounds = Template.getModulesArrayBounds(allModules);
|
171
|
-
|
172
|
-
if (bounds) {
|
173
|
-
// Render a spare array
|
174
|
-
var minId = bounds[0];
|
175
|
-
var maxId = bounds[1];
|
176
|
-
if (minId !== 0) source.add("Array(" + minId + ").concat(");
|
177
|
-
source.add("[\n");
|
178
|
-
const modules = new Map();
|
179
|
-
for (const module of allModules) {
|
180
|
-
modules.set(module.id, module);
|
181
|
-
}
|
182
|
-
for (var idx = minId; idx <= maxId; idx++) {
|
183
|
-
var module = modules.get(idx);
|
184
|
-
if (idx !== minId) source.add(",\n");
|
185
|
-
source.add("/* " + idx + " */");
|
186
|
-
if (module) {
|
187
|
-
source.add("\n");
|
188
|
-
source.add(module.source);
|
189
|
-
}
|
190
|
-
}
|
191
|
-
source.add("\n" + prefix + "]");
|
192
|
-
if (minId !== 0) source.add(")");
|
193
|
-
} else {
|
194
|
-
// Render an object
|
195
|
-
source.add("{\n");
|
196
|
-
allModules.sort(stringifyIdSortPredicate).forEach((module, idx) => {
|
197
|
-
if (idx !== 0) source.add(",\n");
|
198
|
-
source.add(`\n/***/ ${JSON.stringify(module.id)}:\n`);
|
199
|
-
source.add(module.source);
|
200
|
-
});
|
201
|
-
source.add("\n\n" + prefix + "}");
|
202
|
-
}
|
203
|
-
return source;
|
204
|
-
}
|
205
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const { ConcatSource } = require("webpack-sources");
|
8
|
+
|
9
|
+
const START_LOWERCASE_ALPHABET_CODE = "a".charCodeAt(0);
|
10
|
+
const START_UPPERCASE_ALPHABET_CODE = "A".charCodeAt(0);
|
11
|
+
const DELTA_A_TO_Z = "z".charCodeAt(0) - START_LOWERCASE_ALPHABET_CODE + 1;
|
12
|
+
const FUNCTION_CONTENT_REGEX = /^function\s?\(\)\s?\{\r?\n?|\r?\n?\}$/g;
|
13
|
+
const INDENT_MULTILINE_REGEX = /^\t/gm;
|
14
|
+
const LINE_SEPARATOR_REGEX = /\r?\n/g;
|
15
|
+
const IDENTIFIER_NAME_REPLACE_REGEX = /^([^a-zA-Z$_])/;
|
16
|
+
const IDENTIFIER_ALPHA_NUMERIC_NAME_REPLACE_REGEX = /[^a-zA-Z0-9$]+/g;
|
17
|
+
const COMMENT_END_REGEX = /\*\//g;
|
18
|
+
const PATH_NAME_NORMALIZE_REPLACE_REGEX = /[^a-zA-Z0-9_!§$()=\-^°]+/g;
|
19
|
+
const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
|
20
|
+
|
21
|
+
const stringifyIdSortPredicate = (a, b) => {
|
22
|
+
var aId = a.id + "";
|
23
|
+
var bId = b.id + "";
|
24
|
+
if (aId < bId) return -1;
|
25
|
+
if (aId > bId) return 1;
|
26
|
+
return 0;
|
27
|
+
};
|
28
|
+
|
29
|
+
const moduleIdIsNumber = module => {
|
30
|
+
return typeof module.id === "number";
|
31
|
+
};
|
32
|
+
|
33
|
+
module.exports = class Template {
|
34
|
+
static getFunctionContent(fn) {
|
35
|
+
return fn
|
36
|
+
.toString()
|
37
|
+
.replace(FUNCTION_CONTENT_REGEX, "")
|
38
|
+
.replace(INDENT_MULTILINE_REGEX, "")
|
39
|
+
.replace(LINE_SEPARATOR_REGEX, "\n");
|
40
|
+
}
|
41
|
+
|
42
|
+
static toIdentifier(str) {
|
43
|
+
if (typeof str !== "string") return "";
|
44
|
+
return str
|
45
|
+
.replace(IDENTIFIER_NAME_REPLACE_REGEX, "_$1")
|
46
|
+
.replace(IDENTIFIER_ALPHA_NUMERIC_NAME_REPLACE_REGEX, "_");
|
47
|
+
}
|
48
|
+
|
49
|
+
static toComment(str) {
|
50
|
+
if (!str) return "";
|
51
|
+
return `/*! ${str.replace(COMMENT_END_REGEX, "* /")} */`;
|
52
|
+
}
|
53
|
+
|
54
|
+
static toNormalComment(str) {
|
55
|
+
if (!str) return "";
|
56
|
+
return `/* ${str.replace(COMMENT_END_REGEX, "* /")} */`;
|
57
|
+
}
|
58
|
+
|
59
|
+
static toPath(str) {
|
60
|
+
if (typeof str !== "string") return "";
|
61
|
+
return str
|
62
|
+
.replace(PATH_NAME_NORMALIZE_REPLACE_REGEX, "-")
|
63
|
+
.replace(MATCH_PADDED_HYPHENS_REPLACE_REGEX, "");
|
64
|
+
}
|
65
|
+
|
66
|
+
// map number to a single character a-z, A-Z or <_ + number> if number is too big
|
67
|
+
static numberToIdentifer(n) {
|
68
|
+
// lower case
|
69
|
+
if (n < DELTA_A_TO_Z)
|
70
|
+
return String.fromCharCode(START_LOWERCASE_ALPHABET_CODE + n);
|
71
|
+
|
72
|
+
// upper case
|
73
|
+
n -= DELTA_A_TO_Z;
|
74
|
+
if (n < DELTA_A_TO_Z)
|
75
|
+
return String.fromCharCode(START_UPPERCASE_ALPHABET_CODE + n);
|
76
|
+
|
77
|
+
// use multiple letters
|
78
|
+
return (
|
79
|
+
Template.numberToIdentifer(n % (2 * DELTA_A_TO_Z)) +
|
80
|
+
Template.numberToIdentifer(Math.floor(n / (2 * DELTA_A_TO_Z)))
|
81
|
+
);
|
82
|
+
}
|
83
|
+
|
84
|
+
static indent(str) {
|
85
|
+
if (Array.isArray(str)) {
|
86
|
+
return str.map(Template.indent).join("\n");
|
87
|
+
} else {
|
88
|
+
str = str.trimRight();
|
89
|
+
if (!str) return "";
|
90
|
+
var ind = str[0] === "\n" ? "" : "\t";
|
91
|
+
return ind + str.replace(/\n([^\n])/g, "\n\t$1");
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
95
|
+
static prefix(str, prefix) {
|
96
|
+
if (Array.isArray(str)) {
|
97
|
+
str = str.join("\n");
|
98
|
+
}
|
99
|
+
str = str.trim();
|
100
|
+
if (!str) return "";
|
101
|
+
const ind = str[0] === "\n" ? "" : prefix;
|
102
|
+
return ind + str.replace(/\n([^\n])/g, "\n" + prefix + "$1");
|
103
|
+
}
|
104
|
+
|
105
|
+
static asString(str) {
|
106
|
+
if (Array.isArray(str)) {
|
107
|
+
return str.join("\n");
|
108
|
+
}
|
109
|
+
return str;
|
110
|
+
}
|
111
|
+
|
112
|
+
static getModulesArrayBounds(modules) {
|
113
|
+
if (!modules.every(moduleIdIsNumber)) return false;
|
114
|
+
var maxId = -Infinity;
|
115
|
+
var minId = Infinity;
|
116
|
+
for (const module of modules) {
|
117
|
+
if (maxId < module.id) maxId = module.id;
|
118
|
+
if (minId > module.id) minId = module.id;
|
119
|
+
}
|
120
|
+
if (minId < 16 + ("" + minId).length) {
|
121
|
+
// add minId x ',' instead of 'Array(minId).concat(…)'
|
122
|
+
minId = 0;
|
123
|
+
}
|
124
|
+
var objectOverhead = modules
|
125
|
+
.map(module => {
|
126
|
+
var idLength = (module.id + "").length;
|
127
|
+
return idLength + 2;
|
128
|
+
})
|
129
|
+
.reduce((a, b) => {
|
130
|
+
return a + b;
|
131
|
+
}, -1);
|
132
|
+
var arrayOverhead = minId === 0 ? maxId : 16 + ("" + minId).length + maxId;
|
133
|
+
return arrayOverhead < objectOverhead ? [minId, maxId] : false;
|
134
|
+
}
|
135
|
+
|
136
|
+
static renderChunkModules(
|
137
|
+
chunk,
|
138
|
+
filterFn,
|
139
|
+
moduleTemplate,
|
140
|
+
dependencyTemplates,
|
141
|
+
prefix
|
142
|
+
) {
|
143
|
+
if (!prefix) prefix = "";
|
144
|
+
var source = new ConcatSource();
|
145
|
+
const modules = chunk.getModules().filter(filterFn);
|
146
|
+
var removedModules = chunk.removedModules;
|
147
|
+
if (
|
148
|
+
modules.length === 0 &&
|
149
|
+
(!removedModules || removedModules.length === 0)
|
150
|
+
) {
|
151
|
+
source.add("[]");
|
152
|
+
return source;
|
153
|
+
}
|
154
|
+
var allModules = modules.map(module => {
|
155
|
+
return {
|
156
|
+
id: module.id,
|
157
|
+
source: moduleTemplate.render(module, dependencyTemplates, {
|
158
|
+
chunk
|
159
|
+
})
|
160
|
+
};
|
161
|
+
});
|
162
|
+
if (removedModules && removedModules.length > 0) {
|
163
|
+
for (const id of removedModules) {
|
164
|
+
allModules.push({
|
165
|
+
id: id,
|
166
|
+
source: "false"
|
167
|
+
});
|
168
|
+
}
|
169
|
+
}
|
170
|
+
var bounds = Template.getModulesArrayBounds(allModules);
|
171
|
+
|
172
|
+
if (bounds) {
|
173
|
+
// Render a spare array
|
174
|
+
var minId = bounds[0];
|
175
|
+
var maxId = bounds[1];
|
176
|
+
if (minId !== 0) source.add("Array(" + minId + ").concat(");
|
177
|
+
source.add("[\n");
|
178
|
+
const modules = new Map();
|
179
|
+
for (const module of allModules) {
|
180
|
+
modules.set(module.id, module);
|
181
|
+
}
|
182
|
+
for (var idx = minId; idx <= maxId; idx++) {
|
183
|
+
var module = modules.get(idx);
|
184
|
+
if (idx !== minId) source.add(",\n");
|
185
|
+
source.add("/* " + idx + " */");
|
186
|
+
if (module) {
|
187
|
+
source.add("\n");
|
188
|
+
source.add(module.source);
|
189
|
+
}
|
190
|
+
}
|
191
|
+
source.add("\n" + prefix + "]");
|
192
|
+
if (minId !== 0) source.add(")");
|
193
|
+
} else {
|
194
|
+
// Render an object
|
195
|
+
source.add("{\n");
|
196
|
+
allModules.sort(stringifyIdSortPredicate).forEach((module, idx) => {
|
197
|
+
if (idx !== 0) source.add(",\n");
|
198
|
+
source.add(`\n/***/ ${JSON.stringify(module.id)}:\n`);
|
199
|
+
source.add(module.source);
|
200
|
+
});
|
201
|
+
source.add("\n\n" + prefix + "}");
|
202
|
+
}
|
203
|
+
return source;
|
204
|
+
}
|
205
|
+
};
|