webpack 5.106.1 → 5.107.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.
Files changed (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -9,9 +9,21 @@ 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
  /**
26
+ * Defines the hook type used by this module.
15
27
  * @template T, R, AdditionalOptions
16
28
  * @typedef {import("tapable").Hook<T, R, AdditionalOptions>} Hook
17
29
  */
@@ -23,19 +35,23 @@ const { contextify } = require("./util/identifier");
23
35
  /** @typedef {import("./Module")} Module */
24
36
  /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
25
37
  /** @typedef {import("./logging/Logger").Logger} Logger */
38
+ /** @typedef {import("./cli").Colors} Colors */
26
39
 
27
40
  /**
41
+ * Defines the async queue type used by this module.
28
42
  * @template T, K, R
29
43
  * @typedef {import("./util/AsyncQueue")<T, K, R>} AsyncQueue
30
44
  */
31
45
 
32
46
  /**
47
+ * Defines the counts data type used by this module.
33
48
  * @typedef {object} CountsData
34
49
  * @property {number} modulesCount modules count
35
50
  * @property {number} dependenciesCount dependencies count
36
51
  */
37
52
 
38
53
  /**
54
+ * Returns median.
39
55
  * @param {number} a a
40
56
  * @param {number} b b
41
57
  * @param {number} c c
@@ -46,72 +62,126 @@ const median3 = (a, b, c) => a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
46
62
  /** @typedef {(percentage: number, msg: string, ...args: string[]) => void} HandlerFn */
47
63
 
48
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
+
149
+ /**
150
+ * Creates a default handler.
49
151
  * @param {boolean | null | undefined} profile need profile
50
152
  * @param {Logger} logger logger
153
+ * @param {ProgressBarOptions | false} progressBar render bar
51
154
  * @returns {HandlerFn} default handler
52
155
  */
53
- const createDefaultHandler = (profile, logger) => {
156
+ const createDefaultHandler = (profile, logger, progressBar) => {
54
157
  /** @type {{ value: string | undefined, time: number }[]} */
55
158
  const lastStateInfo = [];
56
159
 
57
160
  /** @type {HandlerFn} */
58
161
  const defaultHandler = (percentage, msg, ...args) => {
59
162
  if (profile) {
60
- if (percentage === 0) {
61
- lastStateInfo.length = 0;
62
- }
63
- const fullState = [msg, ...args];
64
- const state = fullState.map((s) => s.replace(/\d+\/\d+ /g, ""));
65
- const now = Date.now();
66
- const len = Math.max(state.length, lastStateInfo.length);
67
- for (let i = len; i >= 0; i--) {
68
- const stateItem = i < state.length ? state[i] : undefined;
69
- const lastStateItem =
70
- i < lastStateInfo.length ? lastStateInfo[i] : undefined;
71
- if (lastStateItem) {
72
- if (stateItem !== lastStateItem.value) {
73
- const diff = now - lastStateItem.time;
74
- if (lastStateItem.value) {
75
- let reportState = lastStateItem.value;
76
- if (i > 0) {
77
- reportState = `${lastStateInfo[i - 1].value} > ${reportState}`;
78
- }
79
- const stateMsg = `${" | ".repeat(i)}${diff} ms ${reportState}`;
80
- const d = diff;
81
- // This depends on timing so we ignore it for coverage
82
- /* eslint-disable no-lone-blocks */
83
- /* istanbul ignore next */
84
- {
85
- if (d > 10000) {
86
- logger.error(stateMsg);
87
- } else if (d > 1000) {
88
- logger.warn(stateMsg);
89
- } else if (d > 10) {
90
- logger.info(stateMsg);
91
- } else if (d > 5) {
92
- logger.log(stateMsg);
93
- } else {
94
- logger.debug(stateMsg);
95
- }
96
- }
97
- /* eslint-enable no-lone-blocks */
98
- }
99
- if (stateItem === undefined) {
100
- lastStateInfo.length = i;
101
- } else {
102
- lastStateItem.value = stateItem;
103
- lastStateItem.time = now;
104
- lastStateInfo.length = i + 1;
105
- }
106
- }
107
- } else {
108
- lastStateInfo[i] = {
109
- value: stateItem,
110
- time: now
111
- };
112
- }
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)}%)`);
113
181
  }
182
+ return;
114
183
  }
184
+
115
185
  logger.status(`${Math.floor(percentage * 100)}%`, msg, ...args);
116
186
  if (percentage === 1 || (!msg && args.length === 0)) logger.status();
117
187
  };
@@ -122,6 +192,7 @@ const createDefaultHandler = (profile, logger) => {
122
192
  const SKIPPED_QUEUE_CONTEXTS = ["import-module", "load-module"];
123
193
 
124
194
  /**
195
+ * Defines the report progress callback.
125
196
  * @callback ReportProgress
126
197
  * @param {number} p percentage
127
198
  * @param {...string} args additional arguments
@@ -142,11 +213,13 @@ const DEFAULT_OPTIONS = {
142
213
  dependencies: true,
143
214
  activeModules: false,
144
215
  entries: true,
145
- percentBy: null
216
+ percentBy: null,
217
+ progressBar: false
146
218
  };
147
219
 
148
220
  class ProgressPlugin {
149
221
  /**
222
+ * Returns a progress reporter, if any.
150
223
  * @param {Compiler} compiler the current compiler
151
224
  * @returns {ReportProgress | undefined} a progress reporter, if any
152
225
  */
@@ -155,6 +228,7 @@ class ProgressPlugin {
155
228
  }
156
229
 
157
230
  /**
231
+ * Creates an instance of ProgressPlugin.
158
232
  * @param {ProgressPluginArgument} options options
159
233
  */
160
234
  constructor(options = {}) {
@@ -167,21 +241,26 @@ class ProgressPlugin {
167
241
  /** @type {ProgressPluginOptions} */
168
242
  this.options = options;
169
243
 
170
- this.profile = options.profile || DEFAULT_OPTIONS.profile;
171
- this.handler = options.handler;
172
- this.modulesCount = options.modulesCount || DEFAULT_OPTIONS.modulesCount;
173
- this.dependenciesCount =
174
- options.dependenciesCount || DEFAULT_OPTIONS.dependenciesCount;
175
- this.showEntries = options.entries || DEFAULT_OPTIONS.entries;
176
- this.showModules = options.modules || DEFAULT_OPTIONS.modules;
177
- this.showDependencies =
178
- options.dependencies || DEFAULT_OPTIONS.dependencies;
179
- this.showActiveModules =
180
- options.activeModules || DEFAULT_OPTIONS.activeModules;
181
- this.percentBy = options.percentBy || DEFAULT_OPTIONS.percentBy;
244
+ const merged = { ...DEFAULT_OPTIONS, ...options };
245
+ this.profile = merged.profile;
246
+ this.handler = merged.handler;
247
+ this.modulesCount = merged.modulesCount;
248
+ this.dependenciesCount = merged.dependenciesCount;
249
+ this.showEntries = merged.entries;
250
+ this.showModules = merged.modules;
251
+ this.showDependencies = merged.dependencies;
252
+ this.showActiveModules = merged.activeModules;
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;
182
260
  }
183
261
 
184
262
  /**
263
+ * Applies the plugin by registering its hooks on the compiler.
185
264
  * @param {Compiler | MultiCompiler} compiler webpack compiler
186
265
  * @returns {void}
187
266
  */
@@ -190,7 +269,8 @@ class ProgressPlugin {
190
269
  this.handler ||
191
270
  createDefaultHandler(
192
271
  this.profile,
193
- compiler.getInfrastructureLogger("webpack.Progress")
272
+ compiler.getInfrastructureLogger("webpack.Progress"),
273
+ this.progressBar
194
274
  );
195
275
  if (compiler instanceof MultiCompiler) {
196
276
  this._applyOnMultiCompiler(compiler, handler);
@@ -200,6 +280,7 @@ class ProgressPlugin {
200
280
  }
201
281
 
202
282
  /**
283
+ * Apply on multi compiler.
203
284
  * @param {MultiCompiler} compiler webpack multi-compiler
204
285
  * @param {HandlerFn} handler function that executes for every progress step
205
286
  * @returns {void}
@@ -219,6 +300,7 @@ class ProgressPlugin {
219
300
  }
220
301
 
221
302
  /**
303
+ * Processes the provided compiler.
222
304
  * @param {Compiler} compiler webpack compiler
223
305
  * @param {HandlerFn} handler function that executes for every progress step
224
306
  * @returns {void}
@@ -333,6 +415,7 @@ class ProgressPlugin {
333
415
  };
334
416
 
335
417
  /**
418
+ * Processes the provided factorize queue.
336
419
  * @template T
337
420
  * @param {AsyncQueue<FactorizeModuleOptions, string, Module | ModuleFactoryResult>} factorizeQueue async queue
338
421
  * @param {T} _item item
@@ -355,6 +438,7 @@ class ProgressPlugin {
355
438
  };
356
439
 
357
440
  /**
441
+ * Processes the provided add module queue.
358
442
  * @template T
359
443
  * @param {AsyncQueue<Module, string, Module>} addModuleQueue async queue
360
444
  * @param {T} _item item
@@ -369,6 +453,7 @@ class ProgressPlugin {
369
453
 
370
454
  // only used when showActiveModules is set
371
455
  /**
456
+ * Processes the provided module.
372
457
  * @param {Module} module the module
373
458
  */
374
459
  const moduleBuild = (module) => {
@@ -381,6 +466,7 @@ class ProgressPlugin {
381
466
  };
382
467
 
383
468
  /**
469
+ * Processes the provided entry.
384
470
  * @param {Dependency} entry entry dependency
385
471
  * @param {EntryOptions} options options object
386
472
  */
@@ -390,6 +476,7 @@ class ProgressPlugin {
390
476
  };
391
477
 
392
478
  /**
479
+ * Processes the provided module.
393
480
  * @param {Module} module the module
394
481
  */
395
482
  const moduleDone = (module) => {
@@ -412,6 +499,7 @@ class ProgressPlugin {
412
499
  };
413
500
 
414
501
  /**
502
+ * Processes the provided entry.
415
503
  * @param {Dependency} entry entry dependency
416
504
  * @param {EntryOptions} options options object
417
505
  */
@@ -606,6 +694,7 @@ class ProgressPlugin {
606
694
  }
607
695
  });
608
696
  /**
697
+ * Processes the provided hook.
609
698
  * @template {Hook<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>} T
610
699
  * @param {T} hook hook
611
700
  * @param {number} progress progress from 0 to 1
@@ -629,6 +718,7 @@ class ProgressPlugin {
629
718
  handler(progress, category, name);
630
719
  },
631
720
  /**
721
+ * Processes the provided tap.
632
722
  * @param {Tap} tap tap
633
723
  */
634
724
  tap(tap) {
@@ -24,6 +24,7 @@ const PLUGIN_NAME = "ProvidePlugin";
24
24
 
25
25
  class ProvidePlugin {
26
26
  /**
27
+ * Creates an instance of ProvidePlugin.
27
28
  * @param {Record<string, string | string[]>} definitions the provided identifiers
28
29
  */
29
30
  constructor(definitions) {
@@ -31,7 +32,7 @@ class ProvidePlugin {
31
32
  }
32
33
 
33
34
  /**
34
- * Apply the plugin
35
+ * Applies the plugin by registering its hooks on the compiler.
35
36
  * @param {Compiler} compiler the compiler instance
36
37
  * @returns {void}
37
38
  */
@@ -53,6 +54,7 @@ class ProvidePlugin {
53
54
  new ProvidedDependency.Template()
54
55
  );
55
56
  /**
57
+ * Handles the hook callback for this code path.
56
58
  * @param {JavascriptParser} parser the parser
57
59
  * @param {JavascriptParserOptions} parserOptions options
58
60
  * @returns {void}
package/lib/RawModule.js CHANGED
@@ -36,6 +36,7 @@ const makeSerializable = require("./util/makeSerializable");
36
36
 
37
37
  class RawModule extends Module {
38
38
  /**
39
+ * Creates an instance of RawModule.
39
40
  * @param {string} source source code
40
41
  * @param {string} identifier unique identifier
41
42
  * @param {string=} readableIdentifier readable identifier
@@ -50,6 +51,7 @@ class RawModule extends Module {
50
51
  }
51
52
 
52
53
  /**
54
+ * Returns the source types this module can generate.
53
55
  * @returns {SourceTypes} types available (do not mutate)
54
56
  */
55
57
  getSourceTypes() {
@@ -57,6 +59,7 @@ class RawModule extends Module {
57
59
  }
58
60
 
59
61
  /**
62
+ * Returns the unique identifier used to reference this module.
60
63
  * @returns {string} a unique identifier of the module
61
64
  */
62
65
  identifier() {
@@ -64,6 +67,7 @@ class RawModule extends Module {
64
67
  }
65
68
 
66
69
  /**
70
+ * Returns the estimated size for the requested source type.
67
71
  * @param {string=} type the source type for which the size should be estimated
68
72
  * @returns {number} the estimated size of the module (must be non-zero)
69
73
  */
@@ -72,6 +76,7 @@ class RawModule extends Module {
72
76
  }
73
77
 
74
78
  /**
79
+ * Returns a human-readable identifier for this module.
75
80
  * @param {RequestShortener} requestShortener the request shortener
76
81
  * @returns {string} a user readable identifier of the module
77
82
  */
@@ -82,6 +87,7 @@ class RawModule extends Module {
82
87
  }
83
88
 
84
89
  /**
90
+ * Checks whether the module needs to be rebuilt for the current build state.
85
91
  * @param {NeedBuildContext} context context info
86
92
  * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
87
93
  * @returns {void}
@@ -91,6 +97,7 @@ class RawModule extends Module {
91
97
  }
92
98
 
93
99
  /**
100
+ * Builds the module using the provided compilation context.
94
101
  * @param {WebpackOptions} options webpack options
95
102
  * @param {Compilation} compilation the compilation
96
103
  * @param {ResolverWithOptions} resolver the resolver
@@ -107,6 +114,7 @@ class RawModule extends Module {
107
114
  }
108
115
 
109
116
  /**
117
+ * Gets side effects connection state.
110
118
  * @param {ModuleGraph} moduleGraph the module graph
111
119
  * @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
112
120
  */
@@ -119,6 +127,7 @@ class RawModule extends Module {
119
127
  }
120
128
 
121
129
  /**
130
+ * Generates code and runtime requirements for this module.
122
131
  * @param {CodeGenerationContext} context context for code generation
123
132
  * @returns {CodeGenerationResult} result
124
133
  */
@@ -137,6 +146,7 @@ class RawModule extends Module {
137
146
  }
138
147
 
139
148
  /**
149
+ * Updates the hash with the data contributed by this instance.
140
150
  * @param {Hash} hash the hash used to track dependencies
141
151
  * @param {UpdateHashContext} context context
142
152
  * @returns {void}
@@ -147,6 +157,7 @@ class RawModule extends Module {
147
157
  }
148
158
 
149
159
  /**
160
+ * Serializes this instance into the provided serializer context.
150
161
  * @param {ObjectSerializerContext} context context
151
162
  */
152
163
  serialize(context) {
@@ -161,6 +172,7 @@ class RawModule extends Module {
161
172
  }
162
173
 
163
174
  /**
175
+ * Restores this instance from the provided deserializer context.
164
176
  * @param {ObjectDeserializerContext} context context
165
177
  */
166
178
  deserialize(context) {
@@ -13,6 +13,7 @@ const identifierUtils = require("./util/identifier");
13
13
  /** @typedef {import("./Module")} Module */
14
14
 
15
15
  /**
16
+ * Defines the records chunks type used by this module.
16
17
  * @typedef {object} RecordsChunks
17
18
  * @property {Record<string, number>=} byName
18
19
  * @property {Record<string, number>=} bySource
@@ -20,18 +21,21 @@ const identifierUtils = require("./util/identifier");
20
21
  */
21
22
 
22
23
  /**
24
+ * Defines the records modules type used by this module.
23
25
  * @typedef {object} RecordsModules
24
26
  * @property {Record<string, number>=} byIdentifier
25
27
  * @property {number[]=} usedIds
26
28
  */
27
29
 
28
30
  /**
31
+ * Defines the records type used by this module.
29
32
  * @typedef {object} Records
30
33
  * @property {RecordsChunks=} chunks
31
34
  * @property {RecordsModules=} modules
32
35
  */
33
36
 
34
37
  /**
38
+ * Defines the record ids plugin options type used by this module.
35
39
  * @typedef {object} RecordIdsPluginOptions
36
40
  * @property {boolean=} portableIds true, when ids need to be portable
37
41
  */
@@ -42,6 +46,7 @@ const PLUGIN_NAME = "RecordIdsPlugin";
42
46
 
43
47
  class RecordIdsPlugin {
44
48
  /**
49
+ * Creates an instance of RecordIdsPlugin.
45
50
  * @param {RecordIdsPluginOptions=} options object
46
51
  */
47
52
  constructor(options) {
@@ -49,6 +54,7 @@ class RecordIdsPlugin {
49
54
  }
50
55
 
51
56
  /**
57
+ * Applies the plugin by registering its hooks on the compiler.
52
58
  * @param {Compiler} compiler the Compiler
53
59
  * @returns {void}
54
60
  */
@@ -62,6 +68,7 @@ class RecordIdsPlugin {
62
68
  );
63
69
 
64
70
  /**
71
+ * Gets module identifier.
65
72
  * @param {Module} module the module
66
73
  * @returns {string} the (portable) identifier
67
74
  */
@@ -113,6 +120,7 @@ class RecordIdsPlugin {
113
120
  /** @typedef {string[]} ChunkSources */
114
121
 
115
122
  /**
123
+ * Gets chunk sources.
116
124
  * @param {Chunk} chunk the chunk
117
125
  * @returns {ChunkSources} sources of the chunk
118
126
  */
@@ -9,8 +9,14 @@ const { contextify } = require("./util/identifier");
9
9
 
10
10
  /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
11
11
 
12
+ /**
13
+ * Shortens absolute or verbose request strings so diagnostics and stats output
14
+ * can be rendered relative to a chosen base directory.
15
+ */
12
16
  class RequestShortener {
13
17
  /**
18
+ * Binds a context-aware shortening function to the provided directory and
19
+ * optional cache owner.
14
20
  * @param {string} dir the directory
15
21
  * @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
16
22
  */
@@ -22,6 +28,8 @@ class RequestShortener {
22
28
  }
23
29
 
24
30
  /**
31
+ * Returns a request string rewritten relative to the configured directory
32
+ * when one is provided.
25
33
  * @param {string | undefined | null} request the request to shorten
26
34
  * @returns {string | undefined | null} the shortened request
27
35
  */
@@ -20,6 +20,7 @@ const {
20
20
 
21
21
  /** @typedef {WebpackResolveOptions & { dependencyType?: string, resolveToContext?: boolean }} ResolveOptionsWithDependencyType */
22
22
  /**
23
+ * Defines the with options type used by this module.
23
24
  * @typedef {object} WithOptions
24
25
  * @property {(options: Partial<ResolveOptionsWithDependencyType>) => ResolverWithOptions} withOptions create a resolver with additional/different options
25
26
  */
@@ -31,6 +32,7 @@ const {
31
32
  const EMPTY_RESOLVE_OPTIONS = {};
32
33
 
33
34
  /**
35
+ * Convert to resolve options.
34
36
  * @param {ResolveOptionsWithDependencyType} resolveOptionsWithDepType enhanced options
35
37
  * @returns {ResolveOptions} merged options
36
38
  */
@@ -69,6 +71,7 @@ const convertToResolveOptions = (resolveOptionsWithDepType) => {
69
71
  };
70
72
 
71
73
  /**
74
+ * Represents the resolver factory runtime component.
72
75
  * @typedef {object} ResolverCache
73
76
  * @property {WeakMap<ResolveOptionsWithDependencyType, ResolverWithOptions>} direct
74
77
  * @property {Map<string, ResolverWithOptions>} stringified
@@ -91,6 +94,7 @@ module.exports = class ResolverFactory {
91
94
  }
92
95
 
93
96
  /**
97
+ * Returns the resolver.
94
98
  * @param {string} type type of resolver
95
99
  * @param {ResolveOptionsWithDependencyType=} resolveOptions options
96
100
  * @returns {ResolverWithOptions} the resolver
@@ -121,6 +125,7 @@ module.exports = class ResolverFactory {
121
125
  }
122
126
 
123
127
  /**
128
+ * Returns the resolver.
124
129
  * @param {string} type type of resolver
125
130
  * @param {ResolveOptionsWithDependencyType} resolveOptionsWithDepType options
126
131
  * @returns {ResolverWithOptions} the resolver
@@ -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
  */
@@ -410,6 +410,7 @@ module.exports.startup = "__webpack_require__.x";
410
410
  module.exports.startupEntrypoint = "__webpack_require__.X";
411
411
 
412
412
  /**
413
+ * Describes how this item operation behaves.
413
414
  * @deprecated
414
415
  * creating a default startup function with the entry modules
415
416
  */