webpack 5.106.2 → 5.107.1

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.
Files changed (235) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +1 -1
  3. package/lib/BannerPlugin.js +3 -4
  4. package/lib/Cache.js +3 -6
  5. package/lib/Chunk.js +21 -25
  6. package/lib/ChunkGroup.js +57 -15
  7. package/lib/CompatibilityPlugin.js +8 -7
  8. package/lib/Compilation.js +67 -37
  9. package/lib/Compiler.js +4 -13
  10. package/lib/ContextModule.js +2 -2
  11. package/lib/DefinePlugin.js +2 -2
  12. package/lib/Dependency.js +22 -1
  13. package/lib/DependencyTemplate.js +2 -1
  14. package/lib/EnvironmentPlugin.js +1 -1
  15. package/lib/EvalSourceMapDevToolPlugin.js +8 -10
  16. package/lib/ExportsInfo.js +30 -34
  17. package/lib/ExternalModule.js +91 -26
  18. package/lib/ExternalModuleFactoryPlugin.js +7 -1
  19. package/lib/FileSystemInfo.js +187 -72
  20. package/lib/Generator.js +3 -3
  21. package/lib/HotModuleReplacementPlugin.js +26 -8
  22. package/lib/IgnorePlugin.js +2 -1
  23. package/lib/Module.js +20 -19
  24. package/lib/ModuleFactory.js +1 -1
  25. package/lib/ModuleNotFoundError.js +3 -84
  26. package/lib/ModuleSourceTypeConstants.js +51 -19
  27. package/lib/ModuleTypeConstants.js +12 -3
  28. package/lib/MultiCompiler.js +2 -2
  29. package/lib/NodeStuffPlugin.js +1 -1
  30. package/lib/NormalModule.js +119 -77
  31. package/lib/NormalModuleFactory.js +47 -27
  32. package/lib/Parser.js +1 -1
  33. package/lib/ProgressPlugin.js +129 -56
  34. package/lib/RuntimeGlobals.js +5 -5
  35. package/lib/RuntimeModule.js +9 -7
  36. package/lib/RuntimePlugin.js +12 -1
  37. package/lib/SourceMapDevToolPlugin.js +250 -49
  38. package/lib/Template.js +1 -1
  39. package/lib/TemplatedPathPlugin.js +22 -4
  40. package/lib/WarnCaseSensitiveModulesPlugin.js +70 -2
  41. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  42. package/lib/WarnNoModeSetPlugin.js +16 -1
  43. package/lib/Watching.js +2 -3
  44. package/lib/WebpackError.js +3 -77
  45. package/lib/WebpackIsIncludedPlugin.js +1 -1
  46. package/lib/WebpackOptionsApply.js +13 -1
  47. package/lib/asset/AssetBytesGenerator.js +12 -8
  48. package/lib/asset/AssetGenerator.js +36 -22
  49. package/lib/asset/AssetModulesPlugin.js +6 -8
  50. package/lib/asset/AssetSourceGenerator.js +12 -8
  51. package/lib/buildChunkGraph.js +4 -6
  52. package/lib/cache/PackFileCacheStrategy.js +4 -4
  53. package/lib/cli.js +3 -1
  54. package/lib/config/defaults.js +197 -10
  55. package/lib/config/normalization.js +3 -1
  56. package/lib/css/CssGenerator.js +320 -105
  57. package/lib/css/CssInjectStyleRuntimeModule.js +44 -42
  58. package/lib/css/CssLoadingRuntimeModule.js +22 -4
  59. package/lib/{CssModule.js → css/CssModule.js} +15 -15
  60. package/lib/css/CssModulesPlugin.js +168 -88
  61. package/lib/css/CssParser.js +566 -269
  62. package/lib/css/walkCssTokens.js +148 -2
  63. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -1
  64. package/lib/dependencies/CommonJsDependencyHelpers.js +63 -0
  65. package/lib/dependencies/CommonJsExportRequireDependency.js +54 -10
  66. package/lib/dependencies/CommonJsExportsParserPlugin.js +1 -1
  67. package/lib/dependencies/CommonJsFullRequireDependency.js +32 -9
  68. package/lib/dependencies/CommonJsImportsParserPlugin.js +112 -4
  69. package/lib/dependencies/CommonJsRequireDependency.js +67 -4
  70. package/lib/dependencies/ContextDependency.js +1 -1
  71. package/lib/dependencies/ContextDependencyHelpers.js +1 -1
  72. package/lib/dependencies/CreateRequireParserPlugin.js +1 -1
  73. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  74. package/lib/dependencies/CssIcssExportDependency.js +332 -67
  75. package/lib/dependencies/CssIcssImportDependency.js +49 -7
  76. package/lib/dependencies/CssIcssSymbolDependency.js +11 -3
  77. package/lib/dependencies/CssImportDependency.js +8 -0
  78. package/lib/dependencies/CssUrlDependency.js +28 -2
  79. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  80. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +8 -7
  81. package/lib/dependencies/HarmonyExportExpressionDependency.js +22 -14
  82. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +110 -3
  83. package/lib/dependencies/HarmonyImportDependency.js +10 -2
  84. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +22 -1
  85. package/lib/dependencies/HarmonyImportSpecifierDependency.js +1 -1
  86. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  87. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  88. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  89. package/lib/dependencies/HtmlScriptSrcDependency.js +557 -0
  90. package/lib/dependencies/HtmlSourceDependency.js +128 -0
  91. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
  92. package/lib/dependencies/ImportParserPlugin.js +2 -2
  93. package/lib/dependencies/ImportPhase.js +1 -1
  94. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +1 -1
  95. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +7 -7
  96. package/lib/dependencies/SystemPlugin.js +1 -1
  97. package/lib/dependencies/WebAssemblyImportDependency.js +1 -1
  98. package/lib/dependencies/WorkerPlugin.js +2 -2
  99. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +31 -31
  100. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +4 -4
  101. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +2 -2
  102. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +4 -4
  103. package/lib/{DllModule.js → dll/DllModule.js} +24 -24
  104. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +4 -4
  105. package/lib/{DllPlugin.js → dll/DllPlugin.js} +6 -5
  106. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +14 -14
  107. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +9 -9
  108. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +2 -2
  109. package/lib/errors/BuildCycleError.js +1 -1
  110. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  111. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  112. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +3 -3
  113. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  114. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  115. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +5 -5
  116. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +4 -4
  117. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +3 -3
  118. package/lib/errors/JSONParseError.js +114 -0
  119. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +5 -5
  120. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  121. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +4 -4
  122. package/lib/{ModuleError.js → errors/ModuleError.js} +5 -5
  123. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  124. package/lib/errors/ModuleNotFoundError.js +91 -0
  125. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +8 -6
  126. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +1 -1
  127. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +1 -1
  128. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +5 -5
  129. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +4 -4
  130. package/lib/errors/NonErrorEmittedError.js +28 -0
  131. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +2 -2
  132. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +3 -3
  133. package/lib/errors/WebpackError.js +84 -0
  134. package/lib/html/HtmlGenerator.js +379 -0
  135. package/lib/html/HtmlModulesPlugin.js +429 -0
  136. package/lib/html/HtmlParser.js +1489 -0
  137. package/lib/html/walkHtmlTokens.js +3249 -0
  138. package/lib/ids/IdHelpers.js +2 -1
  139. package/lib/index.js +36 -15
  140. package/lib/javascript/JavascriptModulesPlugin.js +91 -10
  141. package/lib/javascript/JavascriptParser.js +197 -16
  142. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  143. package/lib/json/JsonParser.js +7 -16
  144. package/lib/library/AbstractLibraryPlugin.js +1 -1
  145. package/lib/library/EnableLibraryPlugin.js +1 -1
  146. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  147. package/lib/library/ModuleLibraryPlugin.js +74 -0
  148. package/lib/node/NodeEnvironmentPlugin.js +4 -2
  149. package/lib/node/nodeConsole.js +113 -64
  150. package/lib/optimize/ConcatenatedModule.js +51 -6
  151. package/lib/optimize/InnerGraph.js +1 -1
  152. package/lib/optimize/InnerGraphPlugin.js +11 -1
  153. package/lib/optimize/MinMaxSizeWarning.js +4 -4
  154. package/lib/optimize/ModuleConcatenationPlugin.js +15 -7
  155. package/lib/optimize/RealContentHashPlugin.js +89 -26
  156. package/lib/optimize/SideEffectsFlagPlugin.js +112 -5
  157. package/lib/optimize/SplitChunksPlugin.js +5 -5
  158. package/lib/performance/AssetsOverSizeLimitWarning.js +2 -2
  159. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  160. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  161. package/lib/performance/SizeLimitsPlugin.js +1 -1
  162. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -1
  163. package/lib/rules/UseEffectRulePlugin.js +4 -3
  164. package/lib/runtime/AutoPublicPathRuntimeModule.js +3 -3
  165. package/lib/runtime/GetChunkFilenameRuntimeModule.js +5 -5
  166. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +119 -13
  167. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  168. package/lib/schemes/DataUriPlugin.js +13 -1
  169. package/lib/schemes/VirtualUrlPlugin.js +1 -1
  170. package/lib/serialization/SerializerMiddleware.js +2 -2
  171. package/lib/sharing/ConsumeSharedPlugin.js +4 -10
  172. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -4
  173. package/lib/sharing/ProvideSharedModule.js +1 -1
  174. package/lib/sharing/ProvideSharedPlugin.js +5 -5
  175. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  176. package/lib/stats/DefaultStatsFactoryPlugin.js +2 -2
  177. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  178. package/lib/stats/DefaultStatsPrinterPlugin.js +1 -1
  179. package/lib/stats/StatsFactory.js +1 -1
  180. package/lib/typescript/TypeScriptPlugin.js +210 -0
  181. package/lib/url/URLParserPlugin.js +2 -2
  182. package/lib/util/AsyncQueue.js +2 -2
  183. package/lib/util/Hash.js +2 -2
  184. package/lib/util/LocConverter.js +53 -0
  185. package/lib/util/SortableSet.js +1 -1
  186. package/lib/util/cleverMerge.js +2 -2
  187. package/lib/util/comparators.js +3 -3
  188. package/lib/util/concatenate.js +3 -3
  189. package/lib/util/conventions.js +42 -1
  190. package/lib/util/createMappings.js +118 -0
  191. package/lib/{formatLocation.js → util/formatLocation.js} +2 -2
  192. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +3 -1
  193. package/lib/util/fs.js +8 -8
  194. package/lib/util/hash/md4.js +1 -1
  195. package/lib/util/hash/xxhash64.js +1 -1
  196. package/lib/util/identifier.js +48 -0
  197. package/lib/util/internalSerializables.js +35 -19
  198. package/lib/util/magicComment.js +10 -7
  199. package/lib/util/parseJson.js +2 -73
  200. package/lib/util/source.js +21 -0
  201. package/lib/util/topologicalSort.js +69 -0
  202. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -4
  203. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
  204. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +5 -3
  205. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +1 -1
  206. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +5 -3
  207. package/lib/webpack.js +3 -1
  208. package/package.json +24 -22
  209. package/schemas/WebpackOptions.check.js +1 -1
  210. package/schemas/WebpackOptions.json +129 -12
  211. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  212. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  213. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  214. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  215. package/schemas/plugins/ProgressPlugin.json +22 -0
  216. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  217. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  218. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  219. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  220. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  221. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  222. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  223. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  224. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  225. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  226. package/types.d.ts +1153 -233
  227. package/lib/CaseSensitiveModulesWarning.js +0 -80
  228. package/lib/GraphHelpers.js +0 -49
  229. package/lib/NoModeWarning.js +0 -23
  230. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -57
  231. /package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +0 -0
  232. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  233. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  234. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  235. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -9,6 +9,17 @@ const Compiler = require("./Compiler");
9
9
  const MultiCompiler = require("./MultiCompiler");
10
10
  const NormalModule = require("./NormalModule");
11
11
  const { contextify } = require("./util/identifier");
12
+ const memoize = require("./util/memoize");
13
+
14
+ const getColors = memoize(() => {
15
+ const cli = require("./cli");
16
+
17
+ return cli.createColors({ useColor: cli.isColorSupported() });
18
+ });
19
+
20
+ const BAR_LENGTH = 25;
21
+ const BLOCK_CHAR = "━";
22
+ const BULLET_ICON = "●";
12
23
 
13
24
  /** @typedef {import("tapable").Tap} Tap */
14
25
  /**
@@ -24,6 +35,7 @@ const { contextify } = require("./util/identifier");
24
35
  /** @typedef {import("./Module")} Module */
25
36
  /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
26
37
  /** @typedef {import("./logging/Logger").Logger} Logger */
38
+ /** @typedef {import("./cli").Colors} Colors */
27
39
 
28
40
  /**
29
41
  * Defines the async queue type used by this module.
@@ -49,74 +61,127 @@ const median3 = (a, b, c) => a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
49
61
 
50
62
  /** @typedef {(percentage: number, msg: string, ...args: string[]) => void} HandlerFn */
51
63
 
64
+ /**
65
+ * @param {Logger} logger logger
66
+ * @param {{ value: string | undefined, time: number }[]} lastStateInfo mutable state
67
+ * @param {number} percentage percentage
68
+ * @param {string} msg msg
69
+ * @param {string[]} args args
70
+ */
71
+ const reportProfile = (logger, lastStateInfo, percentage, msg, args) => {
72
+ if (percentage === 0) {
73
+ lastStateInfo.length = 0;
74
+ }
75
+ const fullState = [msg, ...args];
76
+ const state = fullState.map((s) => s.replace(/\d+\/\d+ /g, ""));
77
+ const now = Date.now();
78
+ const len = Math.max(state.length, lastStateInfo.length);
79
+ for (let i = len; i >= 0; i--) {
80
+ const stateItem = i < state.length ? state[i] : undefined;
81
+ const lastStateItem =
82
+ i < lastStateInfo.length ? lastStateInfo[i] : undefined;
83
+ if (lastStateItem) {
84
+ if (stateItem !== lastStateItem.value) {
85
+ const diff = now - lastStateItem.time;
86
+ if (lastStateItem.value) {
87
+ let reportState = lastStateItem.value;
88
+ if (i > 0) {
89
+ reportState = `${lastStateInfo[i - 1].value} > ${reportState}`;
90
+ }
91
+ const stateMsg = `${" | ".repeat(i)}${diff} ms ${reportState}`;
92
+ const d = diff;
93
+ // This depends on timing so we ignore it for coverage
94
+ /* eslint-disable no-lone-blocks */
95
+ /* istanbul ignore next */
96
+ {
97
+ if (d > 10000) {
98
+ logger.error(stateMsg);
99
+ } else if (d > 1000) {
100
+ logger.warn(stateMsg);
101
+ } else if (d > 10) {
102
+ logger.info(stateMsg);
103
+ } else if (d > 5) {
104
+ logger.log(stateMsg);
105
+ } else {
106
+ logger.debug(stateMsg);
107
+ }
108
+ }
109
+ /* eslint-enable no-lone-blocks */
110
+ }
111
+ if (stateItem === undefined) {
112
+ lastStateInfo.length = i;
113
+ } else {
114
+ lastStateItem.value = stateItem;
115
+ lastStateItem.time = now;
116
+ lastStateInfo.length = i + 1;
117
+ }
118
+ }
119
+ } else {
120
+ lastStateInfo[i] = {
121
+ value: stateItem,
122
+ time: now
123
+ };
124
+ }
125
+ }
126
+ };
127
+
128
+ /**
129
+ * @param {string} name progress bar name
130
+ * @param {string} color progress bar color
131
+ * @returns {(percentage: number) => string} bar renderer
132
+ */
133
+ const createReportBar = (name, color) => {
134
+ const c = getColors();
135
+
136
+ return (percentage) => {
137
+ const w = Math.round(percentage * BAR_LENGTH);
138
+ const filled = BLOCK_CHAR.repeat(w);
139
+ const empty = BLOCK_CHAR.repeat(BAR_LENGTH - w);
140
+ const colorFn =
141
+ color in c ? c[/** @type {keyof Colors} */ (color)] : c.green;
142
+
143
+ return `${[BULLET_ICON, name, filled].map(colorFn).join(" ")}${c.white(empty)}`;
144
+ };
145
+ };
146
+
147
+ /** @typedef {Required<Exclude<NonNullable<ProgressPluginOptions["progressBar"]>, boolean>>} ProgressBarOptions */
148
+
52
149
  /**
53
150
  * Creates a default handler.
54
151
  * @param {boolean | null | undefined} profile need profile
55
152
  * @param {Logger} logger logger
153
+ * @param {ProgressBarOptions | false} progressBar render bar
56
154
  * @returns {HandlerFn} default handler
57
155
  */
58
- const createDefaultHandler = (profile, logger) => {
156
+ const createDefaultHandler = (profile, logger, progressBar) => {
59
157
  /** @type {{ value: string | undefined, time: number }[]} */
60
158
  const lastStateInfo = [];
61
159
 
62
160
  /** @type {HandlerFn} */
63
161
  const defaultHandler = (percentage, msg, ...args) => {
64
162
  if (profile) {
65
- if (percentage === 0) {
66
- lastStateInfo.length = 0;
67
- }
68
- const fullState = [msg, ...args];
69
- const state = fullState.map((s) => s.replace(/\d+\/\d+ /g, ""));
70
- const now = Date.now();
71
- const len = Math.max(state.length, lastStateInfo.length);
72
- for (let i = len; i >= 0; i--) {
73
- const stateItem = i < state.length ? state[i] : undefined;
74
- const lastStateItem =
75
- i < lastStateInfo.length ? lastStateInfo[i] : undefined;
76
- if (lastStateItem) {
77
- if (stateItem !== lastStateItem.value) {
78
- const diff = now - lastStateItem.time;
79
- if (lastStateItem.value) {
80
- let reportState = lastStateItem.value;
81
- if (i > 0) {
82
- reportState = `${lastStateInfo[i - 1].value} > ${reportState}`;
83
- }
84
- const stateMsg = `${" | ".repeat(i)}${diff} ms ${reportState}`;
85
- const d = diff;
86
- // This depends on timing so we ignore it for coverage
87
- /* eslint-disable no-lone-blocks */
88
- /* istanbul ignore next */
89
- {
90
- if (d > 10000) {
91
- logger.error(stateMsg);
92
- } else if (d > 1000) {
93
- logger.warn(stateMsg);
94
- } else if (d > 10) {
95
- logger.info(stateMsg);
96
- } else if (d > 5) {
97
- logger.log(stateMsg);
98
- } else {
99
- logger.debug(stateMsg);
100
- }
101
- }
102
- /* eslint-enable no-lone-blocks */
103
- }
104
- if (stateItem === undefined) {
105
- lastStateInfo.length = i;
106
- } else {
107
- lastStateItem.value = stateItem;
108
- lastStateItem.time = now;
109
- lastStateInfo.length = i + 1;
110
- }
111
- }
112
- } else {
113
- lastStateInfo[i] = {
114
- value: stateItem,
115
- time: now
116
- };
117
- }
163
+ reportProfile(logger, lastStateInfo, percentage, msg, args);
164
+ }
165
+
166
+ if (progressBar) {
167
+ const reportBar = createReportBar(progressBar.name, progressBar.color);
168
+ const c = getColors();
169
+ /** @type {string} */
170
+ const currentBar = reportBar(percentage);
171
+
172
+ if (percentage === 1) {
173
+ logger.status();
174
+ } else if (msg) {
175
+ logger.status(
176
+ `${currentBar} (${Math.floor(percentage * 100)}%)`,
177
+ `\n${[msg, ...args].map(c.gray).join(" ")}`
178
+ );
179
+ } else {
180
+ logger.status(`${currentBar} (${Math.floor(percentage * 100)}%)`);
118
181
  }
182
+ return;
119
183
  }
184
+
120
185
  logger.status(`${Math.floor(percentage * 100)}%`, msg, ...args);
121
186
  if (percentage === 1 || (!msg && args.length === 0)) logger.status();
122
187
  };
@@ -148,7 +213,8 @@ const DEFAULT_OPTIONS = {
148
213
  dependencies: true,
149
214
  activeModules: false,
150
215
  entries: true,
151
- percentBy: null
216
+ percentBy: null,
217
+ progressBar: false
152
218
  };
153
219
 
154
220
  class ProgressPlugin {
@@ -185,6 +251,12 @@ class ProgressPlugin {
185
251
  this.showDependencies = merged.dependencies;
186
252
  this.showActiveModules = merged.activeModules;
187
253
  this.percentBy = merged.percentBy;
254
+
255
+ const progressBar = merged.progressBar === true ? {} : merged.progressBar;
256
+ /** @type {ProgressBarOptions | false} */
257
+ this.progressBar = progressBar
258
+ ? { name: "Build", color: "green", ...progressBar }
259
+ : false;
188
260
  }
189
261
 
190
262
  /**
@@ -197,7 +269,8 @@ class ProgressPlugin {
197
269
  this.handler ||
198
270
  createDefaultHandler(
199
271
  this.profile,
200
- compiler.getInfrastructureLogger("webpack.Progress")
272
+ compiler.getInfrastructureLogger("webpack.Progress"),
273
+ this.progressBar
201
274
  );
202
275
  if (compiler instanceof MultiCompiler) {
203
276
  this._applyOnMultiCompiler(compiler, handler);
@@ -83,12 +83,7 @@ module.exports.createScript = "__webpack_require__.ts";
83
83
  */
84
84
  module.exports.createScriptUrl = "__webpack_require__.tu";
85
85
 
86
- /**
87
- * merge multiple CSS stylesheets (CSSStyleSheet or string) into one CSS text string
88
- * Arguments: (sheets: Array<CSSStyleSheet | string> | CSSStyleSheet | string) => string
89
- */
90
86
  module.exports.cssInjectStyle = "__webpack_require__.is";
91
- module.exports.cssMergeStyleSheets = "__webpack_require__.mcs";
92
87
 
93
88
  /**
94
89
  * The current scope when getting a module from a remote
@@ -391,6 +386,11 @@ module.exports.runtimeId = "__webpack_require__.j";
391
386
  */
392
387
  module.exports.scriptNonce = "__webpack_require__.nc";
393
388
 
389
+ /**
390
+ * set .name to "default" for anonymous default exports per ES spec
391
+ */
392
+ module.exports.setAnonymousDefaultName = "__webpack_require__.dn";
393
+
394
394
  /**
395
395
  * an object with all share scopes
396
396
  */
@@ -129,12 +129,14 @@ class RuntimeModule extends Module {
129
129
  hash.update(this.name);
130
130
  hash.update(`${this.stage}`);
131
131
  try {
132
- if (this.fullHash || this.dependentHash) {
133
- // Do not use getGeneratedCode here, because i. e. compilation hash might be not
134
- // ready at this point. We will cache it later instead.
135
- hash.update(/** @type {string} */ (this.generate()));
136
- } else {
137
- hash.update(/** @type {string} */ (this.getGeneratedCode()));
132
+ const code =
133
+ this.fullHash || this.dependentHash
134
+ ? // Do not use getGeneratedCode here, because i. e. compilation hash might be not
135
+ // ready at this point. We will cache it later instead.
136
+ this.generate()
137
+ : this.getGeneratedCode();
138
+ if (code !== null && code !== undefined) {
139
+ hash.update(code);
138
140
  }
139
141
  } catch (err) {
140
142
  hash.update(/** @type {Error} */ (err).message);
@@ -207,7 +209,7 @@ class RuntimeModule extends Module {
207
209
  * @returns {string | null} runtime code
208
210
  */
209
211
  generate() {
210
- const AbstractMethodError = require("./AbstractMethodError");
212
+ const AbstractMethodError = require("./errors/AbstractMethodError");
211
213
 
212
214
  throw new AbstractMethodError();
213
215
  }
@@ -34,6 +34,7 @@ const OnChunksLoadedRuntimeModule = require("./runtime/OnChunksLoadedRuntimeModu
34
34
  const PublicPathRuntimeModule = require("./runtime/PublicPathRuntimeModule");
35
35
  const RelativeUrlRuntimeModule = require("./runtime/RelativeUrlRuntimeModule");
36
36
  const RuntimeIdRuntimeModule = require("./runtime/RuntimeIdRuntimeModule");
37
+ const SetAnonymousDefaultNameRuntimeModule = require("./runtime/SetAnonymousDefaultNameRuntimeModule");
37
38
  const SystemContextRuntimeModule = require("./runtime/SystemContextRuntimeModule");
38
39
  const ToBinaryRuntimeModule = require("./runtime/ToBinaryRuntimeModule");
39
40
  const ShareRuntimeModule = require("./sharing/ShareRuntimeModule");
@@ -79,6 +80,7 @@ const GLOBALS_ON_REQUIRE = [
79
80
  RuntimeGlobals.shareScopeMap,
80
81
  RuntimeGlobals.initializeSharing,
81
82
  RuntimeGlobals.loadScript,
83
+ RuntimeGlobals.setAnonymousDefaultName,
82
84
  RuntimeGlobals.systemContext,
83
85
  RuntimeGlobals.onChunksLoaded,
84
86
  RuntimeGlobals.makeOptimizedDeferredNamespaceObject,
@@ -238,6 +240,15 @@ class RuntimePlugin {
238
240
  );
239
241
  return true;
240
242
  });
243
+ compilation.hooks.runtimeRequirementInTree
244
+ .for(RuntimeGlobals.setAnonymousDefaultName)
245
+ .tap(PLUGIN_NAME, (chunk) => {
246
+ compilation.addRuntimeModule(
247
+ chunk,
248
+ new SetAnonymousDefaultNameRuntimeModule()
249
+ );
250
+ return true;
251
+ });
241
252
  compilation.hooks.runtimeRequirementInTree
242
253
  .for(RuntimeGlobals.runtimeId)
243
254
  .tap(PLUGIN_NAME, (chunk) => {
@@ -270,7 +281,7 @@ class RuntimePlugin {
270
281
 
271
282
  if (
272
283
  typeof publicPath !== "string" ||
273
- /\[(?:full)?hash\]/.test(publicPath)
284
+ FULLHASH_REGEXP.test(publicPath)
274
285
  ) {
275
286
  module.fullHash = true;
276
287
  }