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
@@ -7,10 +7,12 @@
7
7
 
8
8
  const { basename, extname } = require("path");
9
9
  const util = require("util");
10
- const mime = require("mime-types");
11
10
  const Chunk = require("./Chunk");
12
11
  const Module = require("./Module");
13
12
  const { parseResource } = require("./util/identifier");
13
+ const memoize = require("./util/memoize");
14
+
15
+ const getMimeTypes = memoize(() => require("./util/mimeTypes"));
14
16
 
15
17
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
16
18
  /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
@@ -36,6 +38,7 @@ const prepareId = (id) => {
36
38
  };
37
39
 
38
40
  /**
41
+ * Defines the replacer function callback.
39
42
  * @callback ReplacerFunction
40
43
  * @param {string} match
41
44
  * @param {string | undefined} arg
@@ -43,6 +46,7 @@ const prepareId = (id) => {
43
46
  */
44
47
 
45
48
  /**
49
+ * Returns hash replacer function.
46
50
  * @param {ReplacerFunction} replacer replacer
47
51
  * @param {((arg0: number) => string) | undefined} handler handler
48
52
  * @param {AssetInfo | undefined} assetInfo asset info
@@ -82,6 +86,7 @@ const hashLength = (replacer, handler, assetInfo, hashName) => {
82
86
  /** @typedef {(match: string, arg: string | undefined, input: string) => string} Replacer */
83
87
 
84
88
  /**
89
+ * Returns replacer.
85
90
  * @param {string | number | null | undefined | (() => string | number | null | undefined)} value value
86
91
  * @param {boolean=} allowEmpty allow empty
87
92
  * @returns {Replacer} replacer
@@ -112,6 +117,7 @@ const replacer = (value, allowEmpty) => {
112
117
  const deprecationCache = new Map();
113
118
  const deprecatedFunction = (() => () => {})();
114
119
  /**
120
+ * Returns function with deprecation output.
115
121
  * @template {(...args: EXPECTED_ANY[]) => EXPECTED_ANY} T
116
122
  * @param {T} fn function
117
123
  * @param {string} message message
@@ -136,6 +142,7 @@ const deprecated = (fn, message, code) => {
136
142
  /** @typedef {string | TemplatePathFn} TemplatePath */
137
143
 
138
144
  /**
145
+ * Returns the interpolated path.
139
146
  * @param {TemplatePath} path the raw path
140
147
  * @param {PathData} data context data
141
148
  * @param {AssetInfo=} assetInfo extra info about the asset (will be written to)
@@ -163,7 +170,7 @@ const interpolate = (path, data, assetInfo) => {
163
170
  // check that filename is data uri
164
171
  const match = data.filename.match(/^data:([^;,]+)/);
165
172
  if (match) {
166
- const ext = mime.extension(match[1]);
173
+ const ext = getMimeTypes().extension(match[1]);
167
174
  const emptyReplacer = replacer("", true);
168
175
  // "XXXX" used for `updateHash`, so we don't need it here
169
176
  const contentHash =
@@ -386,7 +393,7 @@ const plugin = "TemplatedPathPlugin";
386
393
 
387
394
  class TemplatedPathPlugin {
388
395
  /**
389
- * Apply the plugin
396
+ * Applies the plugin by registering its hooks on the compiler.
390
397
  * @param {Compiler} compiler the compiler instance
391
398
  * @returns {void}
392
399
  */
@@ -23,7 +23,7 @@ const PLUGIN_NAME = "UseStrictPlugin";
23
23
 
24
24
  class UseStrictPlugin {
25
25
  /**
26
- * Apply the plugin
26
+ * Applies the plugin by registering its hooks on the compiler.
27
27
  * @param {Compiler} compiler the compiler instance
28
28
  * @returns {void}
29
29
  */
@@ -32,6 +32,7 @@ class UseStrictPlugin {
32
32
  PLUGIN_NAME,
33
33
  (compilation, { normalModuleFactory }) => {
34
34
  /**
35
+ * Handles the hook callback for this code path.
35
36
  * @param {JavascriptParser} parser the parser
36
37
  * @param {JavascriptParserOptions} parserOptions the javascript parser options
37
38
  */
@@ -5,17 +5,85 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const CaseSensitiveModulesWarning = require("./CaseSensitiveModulesWarning");
9
-
10
8
  /** @typedef {import("./Compiler")} Compiler */
11
9
  /** @typedef {import("./Module")} Module */
10
+ /** @typedef {import("./ModuleGraph")} ModuleGraph */
12
11
  /** @typedef {import("./NormalModule")} NormalModule */
13
12
 
13
+ const WebpackError = require("./errors/WebpackError");
14
+
15
+ /**
16
+ * Sorts the conflicting modules by identifier to keep warning output stable.
17
+ * @param {Module[]} modules the modules to be sorted
18
+ * @returns {Module[]} sorted version of original modules
19
+ */
20
+ const sortModules = (modules) =>
21
+ modules.sort((a, b) => {
22
+ const aIdent = a.identifier();
23
+ const bIdent = b.identifier();
24
+ /* istanbul ignore next */
25
+ if (aIdent < bIdent) return -1;
26
+ /* istanbul ignore next */
27
+ if (aIdent > bIdent) return 1;
28
+ /* istanbul ignore next */
29
+ return 0;
30
+ });
31
+
32
+ /**
33
+ * Formats the conflicting modules and one representative incoming reason for
34
+ * each module into the warning body.
35
+ * @param {Module[]} modules each module from throw
36
+ * @param {ModuleGraph} moduleGraph the module graph
37
+ * @returns {string} each message from provided modules
38
+ */
39
+ const createModulesListMessage = (modules, moduleGraph) =>
40
+ modules
41
+ .map((m) => {
42
+ let message = `* ${m.identifier()}`;
43
+ const validReasons = [
44
+ ...moduleGraph.getIncomingConnectionsByOriginModule(m).keys()
45
+ ].filter(Boolean);
46
+
47
+ if (validReasons.length > 0) {
48
+ message += `\n Used by ${validReasons.length} module(s), i. e.`;
49
+ message += `\n ${
50
+ /** @type {Module[]} */ (validReasons)[0].identifier()
51
+ }`;
52
+ }
53
+ return message;
54
+ })
55
+ .join("\n");
56
+
57
+ /**
58
+ * Warning emitted when webpack finds modules whose identifiers differ only by
59
+ * letter casing, which can behave inconsistently across filesystems.
60
+ */
61
+ class CaseSensitiveModulesWarning extends WebpackError {
62
+ /**
63
+ * Builds a warning message that lists the case-conflicting modules and
64
+ * representative importers that caused them to be included.
65
+ * @param {Iterable<Module>} modules modules that were detected
66
+ * @param {ModuleGraph} moduleGraph the module graph
67
+ */
68
+ constructor(modules, moduleGraph) {
69
+ const sortedModules = sortModules([...modules]);
70
+ const modulesList = createModulesListMessage(sortedModules, moduleGraph);
71
+ super(`There are multiple modules with names that only differ in casing.
72
+ This can lead to unexpected behavior when compiling on a filesystem with other case-semantic.
73
+ Use equal casing. Compare these module identifiers:
74
+ ${modulesList}`);
75
+
76
+ /** @type {string} */
77
+ this.name = "CaseSensitiveModulesWarning";
78
+ this.module = sortedModules[0];
79
+ }
80
+ }
81
+
14
82
  const PLUGIN_NAME = "WarnCaseSensitiveModulesPlugin";
15
83
 
16
84
  class WarnCaseSensitiveModulesPlugin {
17
85
  /**
18
- * Apply the plugin
86
+ * Applies the plugin by registering its hooks on the compiler.
19
87
  * @param {Compiler} compiler the compiler instance
20
88
  * @returns {void}
21
89
  */
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const WebpackError = require("./WebpackError");
8
+ const WebpackError = require("./errors/WebpackError");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
11
 
@@ -25,7 +25,7 @@ class WarnDeprecatedOptionPlugin {
25
25
  }
26
26
 
27
27
  /**
28
- * Apply the plugin
28
+ * Applies the plugin by registering its hooks on the compiler.
29
29
  * @param {Compiler} compiler the compiler instance
30
30
  * @returns {void}
31
31
  */
@@ -5,7 +5,22 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const NoModeWarning = require("./NoModeWarning");
8
+ const WebpackError = require("./errors/WebpackError");
9
+
10
+ class NoModeWarning extends WebpackError {
11
+ constructor() {
12
+ super();
13
+
14
+ /** @type {string} */
15
+ this.name = "NoModeWarning";
16
+ this.message =
17
+ "configuration\n" +
18
+ "The 'mode' option has not been set, webpack will fallback to 'production' for this value.\n" +
19
+ "Set 'mode' option to 'development' or 'production' to enable defaults for each environment.\n" +
20
+ "You can also set it to 'none' to disable any default behavior. " +
21
+ "Learn more: https://webpack.js.org/configuration/mode/";
22
+ }
23
+ }
9
24
 
10
25
  /** @typedef {import("./Compiler")} Compiler */
11
26
 
@@ -13,7 +28,7 @@ const PLUGIN_NAME = "WarnNoModeSetPlugin";
13
28
 
14
29
  class WarnNoModeSetPlugin {
15
30
  /**
16
- * Apply the plugin
31
+ * Applies the plugin by registering its hooks on the compiler.
17
32
  * @param {Compiler} compiler the compiler instance
18
33
  * @returns {void}
19
34
  */
@@ -18,6 +18,7 @@ const IGNORE_TIME_ENTRY = "ignore";
18
18
 
19
19
  class IgnoringWatchFileSystem {
20
20
  /**
21
+ * Creates an instance of IgnoringWatchFileSystem.
21
22
  * @param {WatchFileSystem} wfs original file system
22
23
  * @param {WatchIgnorePluginOptions["paths"]} paths ignored paths
23
24
  */
@@ -31,6 +32,7 @@ class IgnoringWatchFileSystem {
31
32
  files = [...files];
32
33
  dirs = [...dirs];
33
34
  /**
35
+ * Returns true, if path is ignored.
34
36
  * @param {string} path path to check
35
37
  * @returns {boolean} true, if path is ignored
36
38
  */
@@ -119,6 +121,7 @@ const PLUGIN_NAME = "WatchIgnorePlugin";
119
121
 
120
122
  class WatchIgnorePlugin {
121
123
  /**
124
+ * Creates an instance of WatchIgnorePlugin.
122
125
  * @param {WatchIgnorePluginOptions} options options
123
126
  */
124
127
  constructor(options) {
@@ -127,7 +130,7 @@ class WatchIgnorePlugin {
127
130
  }
128
131
 
129
132
  /**
130
- * Apply the plugin
133
+ * Applies the plugin by registering its hooks on the compiler.
131
134
  * @param {Compiler} compiler the compiler instance
132
135
  * @returns {void}
133
136
  */
package/lib/Watching.js CHANGED
@@ -11,13 +11,13 @@ const Stats = require("./Stats");
11
11
  /** @typedef {import("./Compilation")} Compilation */
12
12
  /** @typedef {import("./Compiler")} Compiler */
13
13
  /** @typedef {import("./Compiler").ErrorCallback} ErrorCallback */
14
- /** @typedef {import("./WebpackError")} WebpackError */
15
14
  /** @typedef {import("./logging/Logger").Logger} Logger */
16
15
  /** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
17
16
  /** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
18
17
  /** @typedef {import("./util/fs").Watcher} Watcher */
19
18
 
20
19
  /**
20
+ * Defines the callback type used by this module.
21
21
  * @template T
22
22
  * @template [R=void]
23
23
  * @typedef {import("./webpack").Callback<T, R>} Callback
@@ -27,6 +27,7 @@ const Stats = require("./Stats");
27
27
 
28
28
  class Watching {
29
29
  /**
30
+ * Creates an instance of Watching.
30
31
  * @param {Compiler} compiler the compiler
31
32
  * @param {WatchOptions} watchOptions options
32
33
  * @param {Callback<Stats>} handler completion handler
@@ -82,6 +83,7 @@ class Watching {
82
83
  }
83
84
 
84
85
  /**
86
+ * Merge with collected.
85
87
  * @param {ReadonlySet<string> | undefined | null} changedFiles changed files
86
88
  * @param {ReadonlySet<string> | undefined | null} removedFiles removed files
87
89
  */
@@ -105,6 +107,7 @@ class Watching {
105
107
  }
106
108
 
107
109
  /**
110
+ * Processes the provided file time info entries.
108
111
  * @param {TimeInfoEntries=} fileTimeInfoEntries info for files
109
112
  * @param {TimeInfoEntries=} contextTimeInfoEntries info for directories
110
113
  * @param {ReadonlySet<string>=} changedFiles changed files
@@ -183,6 +186,7 @@ class Watching {
183
186
  this.compiler.hooks.watchRun.callAsync(this.compiler, (err) => {
184
187
  if (err) return this._done(err);
185
188
  /**
189
+ * Processes the provided err.
186
190
  * @param {Error | null} err error
187
191
  * @param {Compilation=} _compilation compilation
188
192
  * @returns {void}
@@ -242,6 +246,7 @@ class Watching {
242
246
  }
243
247
 
244
248
  /**
249
+ * Returns the compilation stats.
245
250
  * @param {Compilation} compilation the compilation
246
251
  * @returns {Stats} the compilation stats
247
252
  */
@@ -251,6 +256,7 @@ class Watching {
251
256
  }
252
257
 
253
258
  /**
259
+ * Processes the provided err.
254
260
  * @param {(Error | null)=} err an optional error
255
261
  * @param {Compilation=} compilation the compilation
256
262
  * @returns {void}
@@ -266,6 +272,7 @@ class Watching {
266
272
  let stats;
267
273
 
268
274
  /**
275
+ * Processes the provided err.
269
276
  * @param {Error} err error
270
277
  * @param {ErrorCallback[]=} cbs callbacks
271
278
  */
@@ -349,6 +356,7 @@ class Watching {
349
356
  }
350
357
 
351
358
  /**
359
+ * Processes the provided file.
352
360
  * @param {Iterable<string>} files watched files
353
361
  * @param {Iterable<string>} dirs watched directories
354
362
  * @param {Iterable<string>} missing watched existence entries
@@ -398,6 +406,7 @@ class Watching {
398
406
  }
399
407
 
400
408
  /**
409
+ * Processes the provided error callback.
401
410
  * @param {ErrorCallback=} callback signals when the build has completed again
402
411
  * @returns {void}
403
412
  */
@@ -414,6 +423,7 @@ class Watching {
414
423
  }
415
424
 
416
425
  /**
426
+ * Processes the provided file time info entries.
417
427
  * @param {TimeInfoEntries=} fileTimeInfoEntries info for files
418
428
  * @param {TimeInfoEntries=} contextTimeInfoEntries info for directories
419
429
  * @param {ReadonlySet<string>=} changedFiles changed files
@@ -456,6 +466,7 @@ class Watching {
456
466
  }
457
467
 
458
468
  /**
469
+ * Processes the provided error callback.
459
470
  * @param {ErrorCallback} callback signals when the watcher is closed
460
471
  * @returns {void}
461
472
  */
@@ -467,7 +478,8 @@ class Watching {
467
478
  return;
468
479
  }
469
480
  /**
470
- * @param {WebpackError | null} err error if any
481
+ * Processes the provided err.
482
+ * @param {Error | null} err error if any
471
483
  * @param {Compilation=} compilation compilation if any
472
484
  */
473
485
  const finalCallback = (err, compilation) => {
@@ -481,7 +493,8 @@ class Watching {
481
493
  this.compiler.contextTimestamps = undefined;
482
494
  this.compiler.fsStartTime = undefined;
483
495
  /**
484
- * @param {WebpackError | null} err error if any
496
+ * Processes the provided err.
497
+ * @param {Error | null} err error if any
485
498
  */
486
499
  const shutdown = (err) => {
487
500
  this.compiler.hooks.watchClose.call();
@@ -5,77 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const inspect = require("util").inspect.custom;
9
- const makeSerializable = require("./util/makeSerializable");
10
-
11
- /** @typedef {import("./Chunk")} Chunk */
12
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
13
- /** @typedef {import("./Module")} Module */
14
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
-
17
- class WebpackError extends Error {
18
- /**
19
- * Creates an instance of WebpackError.
20
- * @param {string=} message error message
21
- * @param {{ cause?: unknown }} options error options
22
- */
23
- constructor(message, options = {}) {
24
- super(message, options);
25
-
26
- /** @type {string=} */
27
- this.details = undefined;
28
- /** @type {(Module | null)=} */
29
- this.module = undefined;
30
- /** @type {DependencyLocation=} */
31
- this.loc = undefined;
32
- /** @type {boolean=} */
33
- this.hideStack = undefined;
34
- /** @type {Chunk=} */
35
- this.chunk = undefined;
36
- /** @type {string=} */
37
- this.file = undefined;
38
- }
39
-
40
- /**
41
- * @returns {string} inspect message
42
- */
43
- [inspect]() {
44
- return (
45
- this.stack +
46
- (this.details ? `\n${this.details}` : "") +
47
- (this.cause ? `\n${this.cause}` : "")
48
- );
49
- }
50
-
51
- /**
52
- * @param {ObjectSerializerContext} context context
53
- */
54
- serialize({ write }) {
55
- write(this.name);
56
- write(this.message);
57
- write(this.stack);
58
- write(this.cause);
59
- write(this.details);
60
- write(this.loc);
61
- write(this.hideStack);
62
- }
63
-
64
- /**
65
- * @param {ObjectDeserializerContext} context context
66
- */
67
- deserialize({ read }) {
68
- this.name = read();
69
- this.message = read();
70
- this.stack = read();
71
- this.cause = read();
72
- this.details = read();
73
- this.loc = read();
74
- this.hideStack = read();
75
- }
76
- }
77
-
78
- makeSerializable(WebpackError, "webpack/lib/WebpackError");
79
-
80
- /** @type {typeof WebpackError} */
81
- module.exports = WebpackError;
8
+ // TODO remove in webpack 6
9
+ // Some old plugins use `require("webpack/lib/WebpackError")`, in webpack@6 developer should migrate to `compiler.webpack.WebpackError`
10
+ module.exports = require("./errors/WebpackError");
@@ -5,13 +5,13 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const IgnoreErrorModuleFactory = require("./IgnoreErrorModuleFactory");
9
8
  const {
10
9
  JAVASCRIPT_MODULE_TYPE_AUTO,
11
10
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
12
11
  JAVASCRIPT_MODULE_TYPE_ESM
13
12
  } = require("./ModuleTypeConstants");
14
13
  const WebpackIsIncludedDependency = require("./dependencies/WebpackIsIncludedDependency");
14
+ const IgnoreErrorModuleFactory = require("./errors/IgnoreErrorModuleFactory");
15
15
  const {
16
16
  toConstantDependency
17
17
  } = require("./javascript/JavascriptParserHelpers");
@@ -25,6 +25,7 @@ const PLUGIN_NAME = "WebpackIsIncludedPlugin";
25
25
 
26
26
  class WebpackIsIncludedPlugin {
27
27
  /**
28
+ * Applies the plugin by registering its hooks on the compiler.
28
29
  * @param {Compiler} compiler the compiler instance
29
30
  * @returns {void}
30
31
  */
@@ -42,6 +43,7 @@ class WebpackIsIncludedPlugin {
42
43
  );
43
44
 
44
45
  /**
46
+ * Handles the hook callback for this code path.
45
47
  * @param {JavascriptParser} parser the parser
46
48
  * @returns {void}
47
49
  */
@@ -90,6 +90,7 @@ class WebpackOptionsApply extends OptionsApply {
90
90
  }
91
91
 
92
92
  /**
93
+ * Returns options object.
93
94
  * @param {WebpackOptions} options options object
94
95
  * @param {Compiler} compiler compiler object
95
96
  * @param {WebpackOptionsInterception=} interception intercepted options
@@ -424,6 +425,18 @@ class WebpackOptionsApply extends OptionsApply {
424
425
  new CssModulesPlugin().apply(compiler);
425
426
  }
426
427
 
428
+ if (options.experiments.html) {
429
+ const HtmlModulesPlugin = require("./html/HtmlModulesPlugin");
430
+
431
+ new HtmlModulesPlugin().apply(compiler);
432
+ }
433
+
434
+ if (options.experiments.typescript) {
435
+ const TypeScriptPlugin = require("./typescript/TypeScriptPlugin");
436
+
437
+ new TypeScriptPlugin().apply(compiler);
438
+ }
439
+
427
440
  if (options.experiments.lazyCompilation) {
428
441
  const LazyCompilationPlugin = require("./hmr/LazyCompilationPlugin");
429
442
 
@@ -516,7 +529,7 @@ class WebpackOptionsApply extends OptionsApply {
516
529
  }).apply(compiler);
517
530
  if (options.amd !== false) {
518
531
  const AMDPlugin = require("./dependencies/AMDPlugin");
519
- const RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
532
+ const RequireJsStuffPlugin = require("./dependencies/RequireJsStuffPlugin");
520
533
 
521
534
  new AMDPlugin(options.amd || {}).apply(compiler);
522
535
  new RequireJsStuffPlugin().apply(compiler);
@@ -13,6 +13,7 @@ const { getNormalizedWebpackOptions } = require("./config/normalization");
13
13
 
14
14
  class WebpackOptionsDefaulter {
15
15
  /**
16
+ * Returns normalized webpack options.
16
17
  * @param {WebpackOptions} options webpack options
17
18
  * @returns {WebpackOptionsNormalized} normalized webpack options
18
19
  */
@@ -12,6 +12,7 @@ const {
12
12
  CSS_TYPE,
13
13
  CSS_URL_TYPE,
14
14
  CSS_URL_TYPES,
15
+ HTML_TYPE,
15
16
  JAVASCRIPT_AND_CSS_URL_TYPES,
16
17
  JAVASCRIPT_TYPE,
17
18
  JAVASCRIPT_TYPES,
@@ -29,6 +30,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
29
30
 
30
31
  class AssetSourceGenerator extends Generator {
31
32
  /**
33
+ * Creates an instance of AssetSourceGenerator.
32
34
  * @param {ModuleGraph} moduleGraph the module graph
33
35
  */
34
36
  constructor(moduleGraph) {
@@ -38,6 +40,7 @@ class AssetSourceGenerator extends Generator {
38
40
  }
39
41
 
40
42
  /**
43
+ * Generates generated code for this runtime module.
41
44
  * @param {NormalModule} module module for which the code should be generated
42
45
  * @param {GenerateContext} generateContext context for generate
43
46
  * @returns {Source | null} generated code
@@ -97,6 +100,7 @@ class AssetSourceGenerator extends Generator {
97
100
  }
98
101
 
99
102
  /**
103
+ * Generates fallback output for the provided error condition.
100
104
  * @param {Error} error the error
101
105
  * @param {NormalModule} module module for which the code should be generated
102
106
  * @param {GenerateContext} generateContext context for generate
@@ -115,6 +119,7 @@ class AssetSourceGenerator extends Generator {
115
119
  }
116
120
 
117
121
  /**
122
+ * Returns the reason this module cannot be concatenated, when one exists.
118
123
  * @param {NormalModule} module module for which the bailout reason should be determined
119
124
  * @param {ConcatenationBailoutReasonContext} context context
120
125
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
@@ -124,6 +129,7 @@ class AssetSourceGenerator extends Generator {
124
129
  }
125
130
 
126
131
  /**
132
+ * Returns the source types available for this module.
127
133
  * @param {NormalModule} module fresh module
128
134
  * @returns {SourceTypes} available types (do not mutate)
129
135
  */
@@ -141,9 +147,12 @@ class AssetSourceGenerator extends Generator {
141
147
  }
142
148
 
143
149
  if (sourceTypes.size > 0) {
144
- if (sourceTypes.has(JAVASCRIPT_TYPE) && sourceTypes.has(CSS_TYPE)) {
150
+ if (
151
+ sourceTypes.has(JAVASCRIPT_TYPE) &&
152
+ (sourceTypes.has(CSS_TYPE) || sourceTypes.has(HTML_TYPE))
153
+ ) {
145
154
  return JAVASCRIPT_AND_CSS_URL_TYPES;
146
- } else if (sourceTypes.has(CSS_TYPE)) {
155
+ } else if (sourceTypes.has(CSS_TYPE) || sourceTypes.has(HTML_TYPE)) {
147
156
  return CSS_URL_TYPES;
148
157
  }
149
158
  return JAVASCRIPT_TYPES;
@@ -153,6 +162,7 @@ class AssetSourceGenerator extends Generator {
153
162
  }
154
163
 
155
164
  /**
165
+ * Returns the estimated size for the requested source type.
156
166
  * @param {NormalModule} module the module
157
167
  * @param {SourceType=} type source type
158
168
  * @returns {number} estimate size of the module
@@ -14,6 +14,7 @@ const Parser = require("../Parser");
14
14
 
15
15
  class AssetBytesParser extends Parser {
16
16
  /**
17
+ * Parses the provided source and updates the parser state.
17
18
  * @param {string | Buffer | PreparsedAst} source the source to parse
18
19
  * @param {ParserState} state the parser state
19
20
  * @returns {ParserState} the parser state