webpack 5.111.0 → 5.112.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 (781) hide show
  1. package/README.md +1 -1
  2. package/lib/Chunk.js +3 -966
  3. package/lib/Compilation.js +237 -138
  4. package/lib/Compiler.js +23 -24
  5. package/lib/Dependency.js +3 -551
  6. package/lib/DependencyTemplate.js +3 -69
  7. package/lib/EntryPlugin.js +3 -68
  8. package/lib/Entrypoint.js +3 -121
  9. package/lib/ExternalsPlugin.js +3 -92
  10. package/lib/FileSystemInfo.js +3 -4629
  11. package/lib/InitFragment.js +3 -204
  12. package/lib/LibraryTemplatePlugin.js +3 -46
  13. package/lib/ModuleFilenameHelpers.js +3 -400
  14. package/lib/ModuleNotFoundError.js +2 -2
  15. package/lib/MultiCompiler.js +43 -24
  16. package/lib/NormalModule.js +3 -2190
  17. package/lib/NullFactory.js +3 -22
  18. package/lib/ProgressPlugin.js +3 -908
  19. package/lib/RawModule.js +3 -197
  20. package/lib/RequestShortener.js +3 -37
  21. package/lib/SingleEntryPlugin.js +1 -1
  22. package/lib/WebpackError.js +2 -2
  23. package/lib/asset/AssetBytesGenerator.js +15 -9
  24. package/lib/asset/AssetBytesParser.js +3 -3
  25. package/lib/asset/AssetGenerator.js +61 -38
  26. package/lib/asset/AssetModule.js +2 -2
  27. package/lib/asset/AssetModulesPlugin.js +6 -9
  28. package/lib/asset/AssetParser.js +3 -3
  29. package/lib/asset/AssetSourceGenerator.js +15 -9
  30. package/lib/asset/AssetSourceParser.js +3 -3
  31. package/lib/asset/RawDataUrlModule.js +17 -10
  32. package/lib/asset/WebManifestGenerator.js +7 -7
  33. package/lib/asset/WebManifestParser.js +5 -5
  34. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  35. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  36. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  37. package/lib/async-modules/isGeneratorLowered.js +3 -3
  38. package/lib/bun/BunTargetPlugin.js +1 -1
  39. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  40. package/lib/{Cache.js → cache/Cache.js} +1 -1
  41. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  42. package/lib/cache/IdleFileCachePlugin.js +2 -2
  43. package/lib/cache/MemoryCachePlugin.js +6 -6
  44. package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
  45. package/lib/cache/PackFileCacheStrategy.js +11 -28
  46. package/lib/cache/ResolverCachePlugin.js +8 -4
  47. package/lib/cache/getLazyHashedEtag.js +3 -5
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +3 -9
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +192 -122
  56. package/lib/config/getClaimedAssetTypes.js +28 -21
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +13 -4
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
  76. package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
  77. package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
  78. package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
  79. package/lib/css/CssGenerator.js +57 -42
  80. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  81. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  82. package/lib/css/CssModule.js +27 -29
  83. package/lib/css/CssModulesPlugin.js +128 -44
  84. package/lib/css/CssParser.js +700 -311
  85. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  86. package/lib/css/cssMinify.js +130 -54
  87. package/lib/css/data.js +7017 -4648
  88. package/lib/css/syntax-parser.js +19873 -0
  89. package/lib/css/syntax-printer.js +6037 -0
  90. package/lib/css/syntax.js +37 -17370
  91. package/lib/debug/ProfilingPlugin.js +55 -23
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  95. package/lib/deno/DenoTargetPlugin.js +1 -1
  96. package/lib/dependencies/ConstDependency.js +3 -120
  97. package/lib/dependencies/ContextElementDependency.js +5 -172
  98. package/lib/dependencies/NullDependency.js +3 -37
  99. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  100. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  101. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  102. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  103. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  104. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  105. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  106. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  107. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  108. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  109. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  110. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  111. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  112. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  113. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  114. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  115. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +176 -44
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  122. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  123. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  124. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +19 -20
  125. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  126. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  127. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  128. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  129. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  130. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  131. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  132. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  133. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  134. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  135. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  136. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  137. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  138. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  139. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  140. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +34 -18
  141. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  142. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  143. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  144. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  145. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  146. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  147. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  148. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  150. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  151. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  152. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  153. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  154. package/lib/dependencies/core/ConstDependency.js +131 -0
  155. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  156. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  157. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  158. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  159. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  160. package/lib/dependencies/core/NullDependency.js +44 -0
  161. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  162. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  163. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -100
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
  165. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  166. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  167. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +26 -21
  168. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  169. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  170. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  171. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +40 -41
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
  176. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  177. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  178. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +136 -122
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
  188. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  189. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  190. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  191. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  192. package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
  193. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  194. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  195. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  196. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +125 -243
  200. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  201. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
  202. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
  203. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  204. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  205. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  206. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  207. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  208. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  209. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  210. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  211. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  213. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +126 -107
  214. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  215. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  216. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  217. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  218. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +34 -25
  219. package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
  220. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  221. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  222. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  223. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  224. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +46 -54
  225. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
  226. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
  227. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  228. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  229. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  230. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  231. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +207 -129
  232. package/lib/{util → devtool}/generateDebugId.js +1 -1
  233. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  234. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  235. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  236. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  237. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  238. package/lib/dll/DelegatedModule.js +20 -18
  239. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  240. package/lib/dll/DelegatedPlugin.js +1 -1
  241. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  242. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  243. package/lib/dll/DllEntryPlugin.js +3 -3
  244. package/lib/dll/DllModule.js +11 -9
  245. package/lib/dll/DllModuleFactory.js +3 -3
  246. package/lib/dll/DllPlugin.js +18 -6
  247. package/lib/dll/DllReferencePlugin.js +102 -26
  248. package/lib/dll/LibManifestPlugin.js +9 -7
  249. package/lib/electron/ElectronTargetPlugin.js +2 -2
  250. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  251. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  252. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  253. package/lib/entry/EntryPlugin.js +75 -0
  254. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  255. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  256. package/lib/errors/BuildCycleError.js +1 -1
  257. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  258. package/lib/errors/ChunkRenderError.js +1 -1
  259. package/lib/errors/CodeGenerationError.js +1 -1
  260. package/lib/errors/CommentCompilationWarning.js +1 -1
  261. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  262. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  263. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  264. package/lib/errors/DllManifestError.js +26 -0
  265. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  266. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  267. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  268. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  269. package/lib/errors/ErrorHelpers.js +222 -0
  270. package/lib/errors/ExternalStarReexportError.js +2 -2
  271. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  272. package/lib/errors/HookWebpackError.js +6 -5
  273. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  274. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  275. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  276. package/lib/errors/ModuleBuildError.js +1 -1
  277. package/lib/errors/ModuleDependencyError.js +2 -2
  278. package/lib/errors/ModuleDependencyWarning.js +2 -2
  279. package/lib/errors/ModuleError.js +1 -1
  280. package/lib/errors/ModuleHashingError.js +1 -1
  281. package/lib/errors/ModuleNotFoundError.js +3 -3
  282. package/lib/errors/ModuleParseError.js +1 -1
  283. package/lib/errors/ModuleRestoreError.js +1 -1
  284. package/lib/errors/ModuleStoreError.js +1 -1
  285. package/lib/errors/ModuleWarning.js +1 -1
  286. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  287. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  288. package/lib/errors/NodeStuffInWebError.js +7 -2
  289. package/lib/errors/PathVariableError.js +31 -0
  290. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  291. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  292. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  293. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  294. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  295. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  296. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  297. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  298. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  299. package/lib/errors/WebpackError.js +12 -3
  300. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  301. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  302. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  303. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  304. package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
  305. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  306. package/lib/externals/ExternalsPlugin.js +99 -0
  307. package/lib/fs/FileSystemInfo.js +4642 -0
  308. package/lib/{util → fs}/fs.js +22 -9
  309. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  310. package/lib/graph/Chunk.js +985 -0
  311. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  312. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  313. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  314. package/lib/graph/Dependency.js +628 -0
  315. package/lib/graph/Entrypoint.js +136 -0
  316. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
  317. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  318. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
  319. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  320. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
  321. package/lib/{util → graph}/findGraphRoots.js +20 -21
  322. package/lib/graph/isDependencyKind.js +23 -0
  323. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  324. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  326. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  327. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  328. package/lib/hmr/LazyCompilationPlugin.js +34 -26
  329. package/lib/html/HtmlGenerator.js +168 -125
  330. package/lib/html/HtmlModule.js +6 -2
  331. package/lib/html/HtmlModulesPlugin.js +260 -215
  332. package/lib/html/HtmlParser.js +598 -292
  333. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  334. package/lib/html/data.js +23 -1
  335. package/lib/html/htmlMinify.js +120 -51
  336. package/lib/html/syntax-parser.js +15796 -0
  337. package/lib/html/syntax-printer.js +1034 -0
  338. package/lib/html/syntax.js +37 -14062
  339. package/lib/html/xmlMinify.js +67 -0
  340. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  341. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  342. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  343. package/lib/ids/IdHelpers.js +4 -4
  344. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  345. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  346. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  347. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  348. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  349. package/lib/{util → ids}/numberHash.js +1 -1
  350. package/lib/index.js +348 -99
  351. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
  352. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  353. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  354. package/lib/javascript/ChunkHelpers.js +64 -4
  355. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  356. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
  357. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
  358. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  359. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  360. package/lib/javascript/JavascriptGenerator.js +25 -18
  361. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  362. package/lib/javascript/JavascriptModule.js +4 -3
  363. package/lib/javascript/JavascriptModulesPlugin.js +458 -256
  364. package/lib/javascript/JavascriptParser.js +916 -287
  365. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  366. package/lib/javascript/MergedEntryExports.js +196 -0
  367. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  368. package/lib/javascript/StartupHelpers.js +6 -6
  369. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  370. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  371. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  372. package/lib/javascript/data.js +533 -122
  373. package/lib/javascript/jsMinify.js +272 -0
  374. package/lib/javascript/regexp.js +67 -32
  375. package/lib/javascript/syntax-parser.js +18561 -0
  376. package/lib/javascript/syntax-printer-data.js +933 -0
  377. package/lib/javascript/syntax-printer.js +47106 -0
  378. package/lib/javascript/syntax.js +20 -10946
  379. package/lib/json/JsonData.js +1 -1
  380. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  381. package/lib/json/JsonGenerator.js +17 -11
  382. package/lib/json/JsonModule.js +2 -2
  383. package/lib/json/JsonModulesPlugin.js +1 -1
  384. package/lib/json/JsonParser.js +5 -5
  385. package/lib/json/jsonMinify.js +69 -0
  386. package/lib/library/AbstractLibraryPlugin.js +28 -15
  387. package/lib/library/AmdLibraryPlugin.js +4 -4
  388. package/lib/library/AssignLibraryPlugin.js +27 -11
  389. package/lib/library/EnableLibraryPlugin.js +1 -1
  390. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  391. package/lib/library/JsonpLibraryPlugin.js +1 -1
  392. package/lib/library/LibraryTemplatePlugin.js +53 -0
  393. package/lib/library/ModuleLibraryPlugin.js +207 -285
  394. package/lib/library/SystemLibraryPlugin.js +6 -8
  395. package/lib/library/UmdLibraryPlugin.js +3 -4
  396. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  397. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  398. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  399. package/lib/{dependencies → loaders}/LoaderPlugin.js +27 -2
  400. package/lib/loaders/LoaderRunner.js +160 -22
  401. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  402. package/lib/logging/Logger.js +7 -9
  403. package/lib/logging/ProgressPlugin.js +957 -0
  404. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  405. package/lib/{Generator.js → module/Generator.js} +38 -14
  406. package/lib/{Module.js → module/Module.js} +122 -54
  407. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  408. package/lib/module/NormalModule.js +2348 -0
  409. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  410. package/lib/module/NullFactory.js +29 -0
  411. package/lib/{Parser.js → module/Parser.js} +3 -3
  412. package/lib/module/RawModule.js +208 -0
  413. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  414. package/lib/{util → module}/extractSourceMap.js +2 -2
  415. package/lib/{util → module}/findCaseMismatch.js +2 -2
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  417. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  418. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  419. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  420. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  421. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  422. package/lib/node/NodeTargetPlugin.js +1 -1
  423. package/lib/node/NodeWatchFileSystem.js +61 -15
  424. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  425. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  426. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  427. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  428. package/lib/node/nodeConsole.js +2 -4
  429. package/lib/optimize/AggressiveMergingPlugin.js +5 -7
  430. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  431. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  432. package/lib/optimize/ConcatenatedModule.js +305 -309
  433. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  434. package/lib/optimize/ConstExportsPlugin.js +7 -7
  435. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  436. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  437. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +25 -30
  438. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
  439. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  440. package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
  441. package/lib/optimize/InlineExports.js +11 -3
  442. package/lib/optimize/InnerGraph.js +5 -13
  443. package/lib/optimize/InnerGraphPlugin.js +17 -23
  444. package/lib/optimize/LazyBarrels.js +584 -0
  445. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  446. package/lib/optimize/LimitChunkCountPlugin.js +21 -15
  447. package/lib/optimize/MangleExportsPlugin.js +8 -9
  448. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  449. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  450. package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
  451. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  452. package/lib/optimize/RealContentHashPlugin.js +16 -7
  453. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  454. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  455. package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
  456. package/lib/optimize/SplitChunksPlugin.js +715 -159
  457. package/lib/{util → optimize}/TupleQueue.js +9 -9
  458. package/lib/optimize/chunkSetIntersections.js +437 -0
  459. package/lib/{util → optimize}/deterministicGrouping.js +25 -30
  460. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  461. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  462. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  463. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  464. package/lib/output/SSRManifestPlugin.js +349 -0
  465. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  466. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  467. package/lib/performance/BroadContextsPlugin.js +4 -4
  468. package/lib/performance/CacheEffectivenessPlugin.js +5 -7
  469. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  470. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  471. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  472. package/lib/performance/DynamicExportsPlugin.js +2 -2
  473. package/lib/performance/EvalUsagePlugin.js +3 -3
  474. package/lib/performance/HotspotsPlugin.js +11 -10
  475. package/lib/performance/LargeModulesPlugin.js +2 -3
  476. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  477. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  478. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  479. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  480. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  481. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  482. package/lib/performance/SizeLimitsPlugin.js +13 -16
  483. package/lib/performance/TopLevelThisPlugin.js +8 -7
  484. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  485. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  486. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  487. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  488. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  489. package/lib/performance/UnusedFederationPlugin.js +2 -4
  490. package/lib/performance/UnusedModulesPlugin.js +5 -4
  491. package/lib/performance/getModuleSize.js +1 -1
  492. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  493. package/lib/performance/isOnlyReexported.js +7 -6
  494. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  495. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  496. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +7 -9
  497. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  499. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  500. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  501. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  502. package/lib/prefetch/ResourceHintPlugin.js +82 -65
  503. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
  505. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  506. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  507. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  508. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  509. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  510. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  511. package/lib/resolve/getResolveOptionsKey.js +59 -0
  512. package/lib/rules/RuleSetCompiler.js +27 -46
  513. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  514. package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
  515. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  516. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  517. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  519. package/lib/runtime/CompatRuntimeModule.js +4 -4
  520. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  521. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  524. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  525. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  526. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  527. package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -10
  528. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  529. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  530. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  531. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  532. package/lib/runtime/GlobalRuntimeModule.js +5 -7
  533. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  534. package/lib/runtime/HelperRuntimeModule.js +16 -1
  535. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  536. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +135 -102
  537. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  538. package/lib/runtime/NonceRuntimeModule.js +2 -2
  539. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  540. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  541. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  542. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  543. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  544. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  545. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  546. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  547. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  549. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  550. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  551. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  552. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  553. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  554. package/lib/runtime/baseUri.js +1 -1
  555. package/lib/schemes/DataUriPlugin.js +4 -7
  556. package/lib/schemes/HttpUriPlugin.js +67 -11
  557. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  558. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  559. package/lib/serialization/BinaryMiddleware.js +9 -9
  560. package/lib/serialization/FileMiddleware.js +19 -19
  561. package/lib/serialization/ObjectMiddleware.js +77 -49
  562. package/lib/serialization/SerializerMiddleware.js +2 -2
  563. package/lib/serialization/SingleItemMiddleware.js +4 -2
  564. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  565. package/lib/sharing/ConsumeSharedModule.js +18 -14
  566. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  567. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  568. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  569. package/lib/sharing/ProvideSharedDependency.js +1 -1
  570. package/lib/sharing/ProvideSharedModule.js +11 -9
  571. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  572. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  573. package/lib/sharing/SharePlugin.js +102 -9
  574. package/lib/sharing/ShareRuntimeModule.js +6 -6
  575. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  576. package/lib/{util → sharing}/semver.js +19 -19
  577. package/lib/sharing/utils.js +59 -2
  578. package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
  579. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  580. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  581. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  582. package/lib/{Stats.js → stats/Stats.js} +4 -4
  583. package/lib/stats/StatsFactory.js +14 -13
  584. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  585. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  586. package/lib/template/DependencyTemplate.js +77 -0
  587. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  588. package/lib/template/InitFragment.js +223 -0
  589. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  590. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  591. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  592. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +178 -106
  593. package/lib/{Template.js → template/Template.js} +13 -11
  594. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
  595. package/lib/typescript/TypeScriptPlugin.js +5 -6
  596. package/lib/util/LocConverter.js +4 -7
  597. package/lib/util/RequestShortener.js +44 -0
  598. package/lib/util/SortableSet.js +87 -22
  599. package/lib/util/SourceProcessor.js +364 -66
  600. package/lib/util/TupleSet.js +27 -27
  601. package/lib/util/WeakTupleMap.js +10 -12
  602. package/lib/util/buildDiagnostics.js +2 -2
  603. package/lib/util/comparators.js +10 -10
  604. package/lib/util/concatenate.js +32 -151
  605. package/lib/util/createHooksRegistry.js +1 -2
  606. package/lib/util/createMappings.js +111 -0
  607. package/lib/util/dataURL.js +96 -18
  608. package/lib/util/deprecation.js +1 -1
  609. package/lib/util/extractComments.js +118 -0
  610. package/lib/util/formatLocation.js +1 -1
  611. package/lib/util/globUtils.js +197 -16
  612. package/lib/util/haltVisitors.js +51 -0
  613. package/lib/util/handlerKeys.js +2 -2
  614. package/lib/util/hash/wasm-hash.js +3 -4
  615. package/lib/util/identifier.js +117 -1
  616. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  617. package/lib/util/internalSerializables.js +295 -103
  618. package/lib/util/magicComment.js +12 -7
  619. package/lib/util/makeSerializable.js +23 -4
  620. package/lib/util/parseJson.js +1 -1
  621. package/lib/util/preloadModuleType.js +5 -2
  622. package/lib/util/registerExternalSerializer.js +2 -2
  623. package/lib/util/removeBOM.js +1 -1
  624. package/lib/util/runtime.js +1 -1
  625. package/lib/util/serialization.js +4 -1
  626. package/lib/util/source.js +2 -2
  627. package/lib/util/terminalColors.js +161 -0
  628. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  629. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  630. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  631. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
  632. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
  633. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  634. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  635. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  636. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  637. package/lib/wasm/wasmModuleFilename.js +2 -2
  638. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  639. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
  640. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  641. package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
  642. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
  643. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  644. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  645. package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
  646. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  647. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  648. package/lib/{Watching.js → watch/Watching.js} +8 -8
  649. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  650. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  651. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  652. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  653. package/lib/web/JsonpTemplatePlugin.js +1 -1
  654. package/lib/webpack.js +27 -17
  655. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  656. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  657. package/package.json +70 -40
  658. package/schemas/WebpackOptions.check.js +2 -1
  659. package/schemas/WebpackOptions.d.json.ts +2 -0
  660. package/schemas/WebpackOptions.json +294 -74
  661. package/schemas/plugins/BannerPlugin.check.js +2 -1
  662. package/schemas/plugins/BannerPlugin.json +29 -2
  663. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  664. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  665. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  666. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  667. package/schemas/plugins/IgnorePlugin.json +1 -1
  668. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  669. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  670. package/schemas/plugins/ManifestPlugin.json +3 -3
  671. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  672. package/schemas/plugins/ProgressPlugin.json +2 -7
  673. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  674. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  675. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  676. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  677. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  678. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  679. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  680. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  681. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  682. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  683. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  684. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  685. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  686. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  687. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  688. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  689. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  690. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  691. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  692. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  693. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  694. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  695. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  696. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  697. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  698. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  699. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  700. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  701. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  702. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  703. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  704. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  705. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  706. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  707. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  708. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  709. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  710. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  711. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  712. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  713. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  714. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  715. package/types.d.ts +13915 -8414
  716. package/lib/ErrorHelpers.js +0 -107
  717. package/lib/LazyBarrel.js +0 -388
  718. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  719. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  720. package/lib/javascript/ChunkFormatHelpers.js +0 -71
  721. package/lib/javascript/grammar.js +0 -5546
  722. package/lib/javascript/parser.js +0 -1494
  723. package/lib/javascript/regexpData.js +0 -51
  724. package/lib/performance/getSourceModules.js +0 -22
  725. package/lib/util/Semaphore.js +0 -65
  726. package/lib/util/objectToMap.js +0 -15
  727. package/schemas/WebpackOptions.check.d.ts +0 -7
  728. package/schemas/_container.json +0 -155
  729. package/schemas/_sharing.json +0 -118
  730. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  732. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  733. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  734. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  735. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  736. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  737. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  740. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  741. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  745. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  746. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  748. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  749. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  750. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  751. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  752. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  753. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  754. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  755. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  758. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  759. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  760. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  763. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  764. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  765. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  768. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  769. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  770. /package/lib/{util → css}/conventions.js +0 -0
  771. /package/lib/{util → css}/topologicalSort.js +0 -0
  772. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  773. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  774. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  775. /package/lib/{util → javascript}/StackedMap.js +0 -0
  776. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  777. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  778. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  779. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  780. /package/lib/{util → optimize}/Queue.js +0 -0
  781. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -6,54 +6,57 @@
6
6
  "use strict";
7
7
 
8
8
  const { CachedSource, ReplaceSource } = require("webpack-sources");
9
- const APIPlugin = require("./APIPlugin");
10
9
 
11
- const InitFragment = require("./InitFragment");
12
- const { CSS_TYPE, JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
13
- const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("./ModuleTypeConstants");
14
- const RuntimeGlobals = require("./RuntimeGlobals");
15
- const Template = require("./Template");
16
10
  const {
17
11
  getOutgoingAsyncModules
18
- } = require("./async-modules/AsyncModuleHelpers");
19
- const HarmonyImportDependency = require("./dependencies/HarmonyImportDependency");
20
- const ImportDependency = require("./dependencies/ImportDependency");
21
- const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
22
- const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
23
- const { InlinedUsedName } = require("./optimize/InlineExports");
12
+ } = require("../async-modules/AsyncModuleHelpers");
13
+ const { ImportPhaseUtils } = require("../dependencies/core/ImportPhase");
14
+ const isDependencyKind = require("../graph/isDependencyKind");
15
+ const APIPlugin = require("../javascript/APIPlugin");
16
+ const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
17
+ const {
18
+ CSS_TYPE,
19
+ JAVASCRIPT_TYPE
20
+ } = require("../module/ModuleSourceTypeConstants");
21
+ const {
22
+ WEBASSEMBLY_MODULE_TYPE_ASYNC
23
+ } = require("../module/ModuleTypeConstants");
24
+ const { isInlinedUsedName } = require("../optimize/InlineExports");
24
25
  const {
25
26
  getDeferredCycleModuleIds,
26
27
  getDeferredCycleModules,
27
28
  getKnownExportNames,
28
29
  getMakeDeferredNamespaceModeFromExportsType,
29
30
  getOptimizedDeferredModule
30
- } = require("./runtime/MakeDeferredNamespaceObjectRuntime");
31
+ } = require("../runtime/MakeDeferredNamespaceObjectRuntime");
32
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
31
33
  const {
32
34
  isAbsoluteBaseUri,
33
35
  isChunkRelativeBaseUri
34
- } = require("./runtime/baseUri");
35
- const { equals } = require("./util/ArrayHelpers");
36
- const { getScheme } = require("./util/URLAbsoluteSpecifier");
37
- const { compareIds } = require("./util/comparators");
38
- const compileBooleanMatcher = require("./util/compileBooleanMatcher");
36
+ } = require("../runtime/baseUri");
37
+ const { equals } = require("../util/ArrayHelpers");
38
+ const { getScheme } = require("../util/URLAbsoluteSpecifier");
39
+ const { compareIds } = require("../util/comparators");
40
+ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
39
41
  const {
40
42
  RESOLVABLE_SPECIFIER_REGEXP,
41
43
  getUndoPath,
42
44
  toJsStringLiteral
43
- } = require("./util/identifier");
44
- const memoize = require("./util/memoize");
45
- const { propertyAccess, propertyName } = require("./util/property");
45
+ } = require("../util/identifier");
46
+ const memoize = require("../util/memoize");
47
+ const { propertyAccess, propertyName } = require("../util/property");
46
48
  const {
47
49
  forEachRuntime,
48
50
  getRuntimeKey,
49
51
  intersectRuntime,
50
52
  subtractRuntime
51
- } = require("./util/runtime");
53
+ } = require("../util/runtime");
54
+ const InitFragment = require("./InitFragment");
55
+ const Template = require("./Template");
52
56
 
53
- const getCssModulesPlugin = memoize(() => require("./css/CssModulesPlugin"));
57
+ const getCssModulesPlugin = memoize(() => require("../css/CssModulesPlugin"));
54
58
  // `Compilation` requires this module, so its stage constants are read lazily.
55
- const getCompilation = memoize(() => require("./Compilation"));
56
- const getExternalModule = memoize(() => require("./ExternalModule"));
59
+ const getCompilation = memoize(() => require("../Compilation"));
57
60
 
58
61
  /**
59
62
  * @typedef {object} ChunkAssetNaming
@@ -88,10 +91,8 @@ const CHUNK_ASSET_NAMING = new Map([
88
91
  ]);
89
92
  const getTemplatedPathPlugin = memoize(() => require("./TemplatedPathPlugin"));
90
93
  const getConcatenatedModule = memoize(() =>
91
- require("./optimize/ConcatenatedModule")
94
+ require("../optimize/ConcatenatedModule")
92
95
  );
93
- const getNormalModule = memoize(() => require("./NormalModule"));
94
-
95
96
  /**
96
97
  * Whether a hot update can re-run the module a reference is emitted into: the HMR
97
98
  * plugin marks every normal module, and a concatenated one is read through its root.
@@ -100,9 +101,8 @@ const getNormalModule = memoize(() => require("./NormalModule"));
100
101
  */
101
102
  const isHotModule = (module) => {
102
103
  if (module === undefined) return false;
103
- const normal =
104
- module instanceof getConcatenatedModule() ? module.rootModule : module;
105
- return normal instanceof getNormalModule() && normal.hot;
104
+ const normal = module.getRootModule();
105
+ return normal.is("normal") && normal.hot;
106
106
  };
107
107
 
108
108
  // Any `[hash]`/`[fullhash]`/`[chunkhash]`/`[contenthash]` token, incl. a `:<length>`
@@ -220,16 +220,16 @@ const HOT_NAME_BAILOUT =
220
220
  /**
221
221
  * @import {
222
222
  * OutputNormalizedWithDefaults as OutputOptions
223
- * } from "./config/defaults"
223
+ * } from "../config/defaults"
224
224
  */
225
- /** @import { PublicPath, WasmLoading } from "../declarations/WebpackOptions" */
226
- /** @import ModuleDependency from "./dependencies/ModuleDependency" */
225
+ /** @import { PublicPath, WasmLoading } from "../../declarations/WebpackOptions.d.ts" */
226
+ /** @import ModuleDependency from "../dependencies/core/ModuleDependency" */
227
227
  /**
228
228
  * @import Module, {
229
229
  * ReadOnlyRuntimeRequirements,
230
230
  * BuildMeta,
231
231
  * RuntimeRequirements
232
- * } from "./Module"
232
+ * } from "../module/Module"
233
233
  */
234
234
  /** @typedef {"import" | "url" | "url-runtime" | "url-inline" | "wasm" | "wasm-relative"} AnalyzableForm */
235
235
  /**
@@ -304,18 +304,19 @@ const CHUNK_ASSET_NAMING_BY_STAND_IN = new Map(
304
304
 
305
305
  const PASS_NAME = "analyzableChunkNaming";
306
306
 
307
- /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
307
+ /** @import AsyncDependenciesBlock from "../graph/AsyncDependenciesBlock" */
308
308
  /** @import { Source } from "webpack-sources" */
309
- /** @import Compiler from "./Compiler" */
310
- /** @import Chunk, { ChunkFilenameTemplate, ChunkId } from "./Chunk" */
311
- /** @import ChunkGraph, { ModuleId } from "./ChunkGraph" */
312
- /** @import Compilation from "./Compilation" */
313
- /** @import Dependency from "./Dependency" */
314
- /** @import ModuleGraph from "./ModuleGraph" */
315
- /** @import RequestShortener from "./RequestShortener" */
316
- /** @import Hash from "./util/Hash" */
317
- /** @import CodeGenerationResults from "./CodeGenerationResults" */
318
- /** @import { RuntimeSpec } from "./util/runtime" */
309
+ /** @import Compiler from "../Compiler" */
310
+ /** @import Chunk, { ChunkFilenameTemplate, ChunkId } from "../graph/Chunk" */
311
+ /** @import ChunkGraph, { ModuleId } from "../graph/ChunkGraph" */
312
+ /** @import Compilation from "../Compilation" */
313
+ /** @import Dependency from "../graph/Dependency" */
314
+ /** @import ModuleGraph from "../graph/ModuleGraph" */
315
+ /** @import RequestShortener from "../util/RequestShortener" */
316
+ /** @import Hash from "../util/Hash" */
317
+ /** @import CodeGenerationResults from "../module/CodeGenerationResults" */
318
+ /** @import { RuntimeSpec } from "../util/runtime" */
319
+ /** @import { JsonValue } from "../fs/fs" */
319
320
 
320
321
  /**
321
322
  * A stand-in whose every hash reads back as `hash`. Which content hashes a chunk
@@ -428,7 +429,7 @@ function getGlobalObject(definition) {
428
429
  // An async external is a promise, not a module record with an evaluating state.
429
430
  const isAsyncExternal = (/** @type {Module} */ module) =>
430
431
  Boolean(/** @type {BuildMeta} */ (module.buildMeta).async) &&
431
- module instanceof getExternalModule();
432
+ module.is("external");
432
433
 
433
434
  // `createFakeNamespaceObject`'s "merge all properties" bit, the only one that
434
435
  // changes which names the namespace it builds carries.
@@ -745,8 +746,7 @@ class RuntimeTemplate {
745
746
  : undefined;
746
747
  // A reassigned `__webpack_public_path__` cannot reach a baked literal, and `.p`
747
748
  // belongs to a runtime, so only the runtimes it reaches keep the runtime form.
748
- // `url-inline` is unaffected: that form falls back to `.p + <file>`, which reads
749
- // the reassigned value at the call site rather than through the wrapper.
749
+ // `url-inline` is unaffected: it reads the value at the call site.
750
750
  if (
751
751
  form !== "url-inline" &&
752
752
  APIPlugin.runtimeUsesPublicPathOverride(
@@ -774,12 +774,13 @@ class RuntimeTemplate {
774
774
  return true;
775
775
  }
776
776
 
777
- // `url-inline` asks whether the file can be named at the call site at all, and
778
- // its `.p + <file>` fallback spells that without `import.meta` — so the gate
779
- // below does not rule it out, and the asset's javascript wrapper stays dropped.
777
+ // `url-inline` asks only whether the file can be named at the call site, and
778
+ // its `.p + <file>` fallback spells that without `import.meta`, so the gate
779
+ // below does not rule it out.
780
+
780
781
  // `environment.module` is deliberately not consulted: ESM output writes
781
- // `import.meta` regardless (the public path, the chunk loader), so the url forms
782
- // only match what the rest of the bundle already assumes the target reads.
782
+ // `import.meta` regardless, so the url forms match what the rest of the
783
+ // bundle already assumes the target reads.
783
784
  if (form === "url-inline") return true;
784
785
  // `eval` devtool wraps each module in `eval(...)`, where `import.meta` is a
785
786
  // syntax error. Runtime modules are emitted beside them, never wrapped.
@@ -830,6 +831,16 @@ class RuntimeTemplate {
830
831
  return true;
831
832
  }
832
833
 
834
+ /**
835
+ * Reports an analyzable-ESM bailout from outside this class.
836
+ * @param {Module | undefined} module the module the reference is emitted into
837
+ * @param {string} reason why no literal could be baked
838
+ * @returns {void}
839
+ */
840
+ analyzableBailout(module, reason) {
841
+ this._analyzableBailout(module, reason, null);
842
+ }
843
+
833
844
  /**
834
845
  * Records why a reference kept the runtime form, on the module that wrote it —
835
846
  * the channel `ModuleConcatenationPlugin` already reports through, so it reaches
@@ -1124,10 +1135,9 @@ class RuntimeTemplate {
1124
1135
  const chunks = this._moduleChunks(module, chunkGraph);
1125
1136
  const parts = this._resolvePublicPathPrefix(publicPath);
1126
1137
  if (parts === null) return null;
1127
- // A protocol-relative base names a host but no scheme, and the runtime reads it
1128
- // against the chunk's own url to get one — the very url this literal is
1129
- // resolved against — so it may stay protocol-relative instead of being settled
1130
- // here. Nothing walks back to the output root first: the base replaces it.
1138
+ // A protocol-relative base names a host but no scheme, and the runtime reads
1139
+ // it against the very url this literal resolves against, so it may stay that
1140
+ // way. Nothing walks back to the output root: the base replaces it.
1131
1141
  if (base.startsWith("//")) {
1132
1142
  return this._specifierOf(
1133
1143
  [["literal", base], ...rootedParts(parts), ["literal", filename]],
@@ -1192,10 +1202,9 @@ class RuntimeTemplate {
1192
1202
  let base;
1193
1203
  let found = false;
1194
1204
  for (const chunk of this.compilation.chunks) {
1195
- // What a literal has to agree with is the one value `BaseUriRuntimeModule`
1196
- // writes out, and it reads the entry options off the chunk it is emitted into
1197
- // — so only a chunk carrying a runtime has a say. Entries sharing one runtime
1198
- // chunk already share the base it sets, however their descriptors differ.
1205
+ // A literal must agree with the one value `BaseUriRuntimeModule` writes, and
1206
+ // that reads the entry options off the chunk it is emitted into, so only a
1207
+ // chunk carrying a runtime has a say.
1199
1208
  if (!chunk.hasRuntime()) continue;
1200
1209
  const entryOptions = chunk.getEntryOptions();
1201
1210
  // An entry this code cannot run under has no say in the base it resolves to.
@@ -1483,14 +1492,13 @@ class RuntimeTemplate {
1483
1492
  }
1484
1493
  if (!this.supportTemplateLiteral()) return this._es5Concatenation(args);
1485
1494
 
1486
- // cost comparison between template literal and concatenation:
1487
- // both need equal surroundings: `xxx` vs "xxx"
1488
- // template literal has constant cost of 3 chars for each expression
1489
- // es5 concatenation has cost of 3 + n chars for n expressions in row
1490
- // when a es5 concatenation ends with an expression it reduces cost by 3
1491
- // when a es5 concatenation starts with an single expression it reduces cost by 3
1492
- // e. g. `${a}${b}${c}` (3*3 = 9) is longer than ""+a+b+c ((3+3)-3 = 3)
1493
- // e. g. `x${a}x${b}x${c}x` (3*3 = 9) is shorter than "x"+a+"x"+b+"x"+c+"x" (4+4+4 = 12)
1495
+ // WHY: cost comparison between a template literal and a concatenation, both
1496
+ // needing equal surroundings (`xxx` against "xxx"). A template literal costs
1497
+ // a constant 3 chars per expression; an es5 concatenation costs 3 + n chars
1498
+ // for n expressions in a row, and reduces by 3 where it ends with an
1499
+ // expression or starts with a single one. So `${a}${b}${c}` (3*3 = 9) is
1500
+ // longer than ""+a+b+c ((3+3)-3 = 3), while `x${a}x${b}x${c}x` (3*3 = 9) is
1501
+ // shorter than "x"+a+"x"+b+"x"+c+"x" (4+4+4 = 12).
1494
1502
 
1495
1503
  let templateCost = 0;
1496
1504
  let concatenationCost = 0;
@@ -1853,6 +1861,28 @@ class RuntimeTemplate {
1853
1861
  return `${this.comment({ request })}${JSON.stringify(moduleId)}`;
1854
1862
  }
1855
1863
 
1864
+ /**
1865
+ * The side-effect annotation for output another build reads back, which is the
1866
+ * only output it can pay for — elsewhere it is bytes with no consumer.
1867
+ * @returns {string} the annotation, or an empty string
1868
+ */
1869
+ sideEffectsAnnotation() {
1870
+ return this.outputOptions.module ? "/*#__PURE__*/" : "";
1871
+ }
1872
+
1873
+ /**
1874
+ * A module instantiation's side-effect annotation. Write it only where the
1875
+ * statement ends the call: a minifier reads `f(id)(x)` as one and drops it.
1876
+ * @param {Module} module the instantiated module
1877
+ * @param {ModuleGraph} moduleGraph the module graph
1878
+ * @returns {string} the annotation, or an empty string when it may have side effects
1879
+ */
1880
+ moduleSideEffectsAnnotation(module, moduleGraph) {
1881
+ return module.getSideEffectsConnectionState(moduleGraph) === false
1882
+ ? this.sideEffectsAnnotation()
1883
+ : "";
1884
+ }
1885
+
1856
1886
  /**
1857
1887
  * Returns the expression.
1858
1888
  * @param {object} options options object
@@ -2080,8 +2110,8 @@ class RuntimeTemplate {
2080
2110
  const exportsType = module.getExportsType(chunkGraph.moduleGraph, strict);
2081
2111
 
2082
2112
  const isModuleDeferred =
2083
- (dependency instanceof HarmonyImportDependency ||
2084
- dependency instanceof ImportDependency) &&
2113
+ (isDependencyKind(dependency, "esm-import") ||
2114
+ isDependencyKind(dependency, "dynamic-import")) &&
2085
2115
  ImportPhaseUtils.isDefer(dependency.phase) &&
2086
2116
  !(/** @type {BuildMeta} */ (module.buildMeta).async);
2087
2117
 
@@ -2353,10 +2383,9 @@ class RuntimeTemplate {
2353
2383
  request,
2354
2384
  weak
2355
2385
  });
2356
- // Harmony imports may be wrapped in runtime-condition `if` blocks
2357
- // but referenced outside those blocks (e.g. by harmony reexport),
2358
- // so they must remain function-scoped (`var`) rather than
2359
- // block-scoped (`let`/`const`).
2386
+ // A harmony import may sit inside a runtime-condition `if` block yet be
2387
+ // referenced outside it, so it stays function-scoped with `var` rather than
2388
+ // block-scoped.
2360
2389
  const optDeclaration = update ? "" : "var ";
2361
2390
 
2362
2391
  const exportsType = module.getExportsType(
@@ -2370,8 +2399,9 @@ class RuntimeTemplate {
2370
2399
  let importContent;
2371
2400
 
2372
2401
  const isModuleDeferred =
2373
- (dependency instanceof HarmonyImportDependency ||
2374
- dependency instanceof ImportDependency) &&
2402
+ dependency !== undefined &&
2403
+ (isDependencyKind(dependency, "esm-import") ||
2404
+ isDependencyKind(dependency, "dynamic-import")) &&
2375
2405
  ImportPhaseUtils.isDefer(dependency.phase) &&
2376
2406
  !isAsyncExternal(module);
2377
2407
 
@@ -2382,7 +2412,7 @@ class RuntimeTemplate {
2382
2412
  // would deadlock; forcing the namespace throws instead.
2383
2413
  outgoingAsyncModules.delete(originModule);
2384
2414
 
2385
- importContent = `/* deferred harmony import */ ${optDeclaration}${importVar} = ${getOptimizedDeferredModule(
2415
+ importContent = `/* deferred harmony import */ ${optDeclaration}${importVar} = ${this.sideEffectsAnnotation()}${getOptimizedDeferredModule(
2386
2416
  moduleId,
2387
2417
  exportsType,
2388
2418
  Array.from(outgoingAsyncModules, (mod) => chunkGraph.getModuleId(mod)),
@@ -2395,7 +2425,10 @@ class RuntimeTemplate {
2395
2425
 
2396
2426
  return [importContent, ""];
2397
2427
  }
2398
- importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${RuntimeGlobals.require}(${moduleId});\n`;
2428
+ importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${this.moduleSideEffectsAnnotation(
2429
+ module,
2430
+ moduleGraph
2431
+ )}${RuntimeGlobals.require}(${moduleId});\n`;
2399
2432
 
2400
2433
  if (exportsType === "dynamic") {
2401
2434
  runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
@@ -2462,8 +2495,8 @@ class RuntimeTemplate {
2462
2495
  );
2463
2496
 
2464
2497
  const isModuleDeferred =
2465
- (dependency instanceof HarmonyImportDependency ||
2466
- dependency instanceof ImportDependency) &&
2498
+ (isDependencyKind(dependency, "esm-import") ||
2499
+ isDependencyKind(dependency, "dynamic-import")) &&
2467
2500
  ImportPhaseUtils.isDefer(dependency.phase) &&
2468
2501
  !isAsyncExternal(module);
2469
2502
 
@@ -2480,7 +2513,7 @@ class RuntimeTemplate {
2480
2513
  );
2481
2514
  return `${comment} undefined`;
2482
2515
  }
2483
- if (used instanceof InlinedUsedName) {
2516
+ if (isInlinedUsedName(used)) {
2484
2517
  throw new Error(
2485
2518
  "Can't inline the exports of defer imported module"
2486
2519
  );
@@ -2495,10 +2528,8 @@ class RuntimeTemplate {
2495
2528
  }
2496
2529
  // accessing the .default property is same thing as `require()` the module.
2497
2530
 
2498
- // For example:
2499
- // import mod from "cjs"; mod.default.x;
2500
- // is translated to
2501
- // var mod = require("cjs"); mod.x;
2531
+ // So `import mod from "cjs"; mod.default.x` translates to
2532
+ // `var mod = require("cjs"); mod.x`.
2502
2533
  switch (exportsType) {
2503
2534
  case "dynamic":
2504
2535
  if (isCall) {
@@ -2538,10 +2569,9 @@ class RuntimeTemplate {
2538
2569
  exportsType === "default-only" ||
2539
2570
  exportsType === "default-with-named"
2540
2571
  ) {
2541
- // now exportName.length is 0, which means the namespace object is used in an unknown way
2542
- // for example:
2543
- // import * as ns from "cjs"; console.log(ns);
2544
- // we will need to createFakeNamespaceObject that simulates ES Module namespace object
2572
+ // `exportName.length` is 0, so the namespace object is used in an unknown
2573
+ // way — `import * as ns from "cjs"; console.log(ns)` — and needs
2574
+ // `createFakeNamespaceObject` to simulate an ES module namespace.
2545
2575
  runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
2546
2576
  initFragments.push(
2547
2577
  new InitFragment(
@@ -2592,7 +2622,7 @@ class RuntimeTemplate {
2592
2622
  );
2593
2623
  return `${comment} undefined`;
2594
2624
  }
2595
- if (used instanceof InlinedUsedName) {
2625
+ if (isInlinedUsedName(used)) {
2596
2626
  return used.render(
2597
2627
  Template.toNormalComment(
2598
2628
  `inlined export ${propertyAccess(exportName)}`
@@ -2709,7 +2739,7 @@ class RuntimeTemplate {
2709
2739
  if (exportInfo.provided === false) continue;
2710
2740
  const used = exportsInfo.getUsedName([exportInfo.name], runtime);
2711
2741
  if (!used) continue;
2712
- if (used instanceof InlinedUsedName) {
2742
+ if (isInlinedUsedName(used)) {
2713
2743
  // An inlined export isn't reachable by name on the raw exports object,
2714
2744
  // so the decoupled object must expose the inlined value directly.
2715
2745
  mangled = true;
@@ -3443,9 +3473,8 @@ class RuntimeTemplate {
3443
3473
  // emitted and filled in once the hash exists.
3444
3474
  const deferred = template === undefined || HASH_IN_FILENAME.test(template);
3445
3475
  // An id names the chunk in the stand-in, and one nothing could resolve would
3446
- // reach the bundle verbatim. The whole name is re-resolved later rather than
3447
- // carrying a stand-in of its own, so any hash spelling is fine here.
3448
- // One of the two always names where the reference goes.
3476
+ // reach the bundle verbatim. The whole name is re-resolved later, so any hash
3477
+ // spelling is fine here; one of the two always names the destination.
3449
3478
  const chunks =
3450
3479
  consumingChunks ||
3451
3480
  this._moduleChunks(/** @type {Module} */ (consumingModule), chunkGraph);
@@ -3658,7 +3687,7 @@ class RuntimeTemplate {
3658
3687
  /**
3659
3688
  * A path built by a function, resolved to the value it will have — or `null` when
3660
3689
  * it moves with the compilation hash, which code generation does not know.
3661
- * @param {import("./TemplatedPathPlugin").TemplatePathFn<EXPECTED_ANY>} fn the function
3690
+ * @param {import("./TemplatedPathPlugin").TemplatePathFn} fn the function
3662
3691
  * @param {string | undefined} value its answer to the first probe, or `undefined`
3663
3692
  * when it answered nothing
3664
3693
  * @returns {string | null} the settled value, or `null` when it is hash-dependent
@@ -4272,6 +4301,49 @@ class RuntimeTemplate {
4272
4301
  return this.returningFunction(factory);
4273
4302
  }
4274
4303
 
4304
+ /**
4305
+ * @param {object} options options
4306
+ * @param {Module} options.module the module the body belongs to
4307
+ * @param {boolean} options.needModule whether the body reads `module`
4308
+ * @param {boolean} options.needExports whether the body reads `exports`
4309
+ * @param {boolean} options.needRequire whether the body reads `__webpack_require__`
4310
+ * @param {boolean} options.needThisAsExports whether the body reads `this` as exports
4311
+ * @param {boolean=} options.shorthand render as a method shorthand, without the `function` keyword
4312
+ * @returns {string} the header, ending with the opening brace
4313
+ */
4314
+ moduleFactoryFnHeader({
4315
+ module,
4316
+ needModule,
4317
+ needExports,
4318
+ needRequire,
4319
+ needThisAsExports,
4320
+ shorthand = false
4321
+ }) {
4322
+ /** @type {string[]} */
4323
+ const args = [];
4324
+ if (needExports || needRequire || needModule) {
4325
+ args.push(
4326
+ needModule
4327
+ ? module.moduleArgument
4328
+ : `__unused_webpack_${module.moduleArgument}`
4329
+ );
4330
+ }
4331
+ if (needExports || needRequire) {
4332
+ args.push(
4333
+ needExports
4334
+ ? module.exportsArgument
4335
+ : `__unused_webpack_${module.exportsArgument}`
4336
+ );
4337
+ }
4338
+ if (needRequire) args.push(RuntimeGlobals.require);
4339
+ const parameters = args.join(", ");
4340
+ if (shorthand) return `(${parameters}) {`;
4341
+ if (!needThisAsExports && this.supportsArrowFunction()) {
4342
+ return `(${parameters}) => {`;
4343
+ }
4344
+ return `function(${parameters}) {`;
4345
+ }
4346
+
4275
4347
  /**
4276
4348
  * Define es module flag statement.
4277
4349
  * @param {object} options options
@@ -4355,11 +4427,9 @@ class RuntimeTemplate {
4355
4427
  compilation.hooks.processAssets.tapPromise(
4356
4428
  {
4357
4429
  name: PASS_NAME,
4358
- // Before source maps are written and before a minifier runs: both read
4359
- // the asset, and a stand-in is a different length than what replaces it.
4360
- // Every hash it reads is already settled — `createHash` runs ahead of
4361
- // every `processAssets` stage — and `RealContentHashPlugin` still repairs
4362
- // the names afterwards.
4430
+ // Before source maps are written and before a minifier runs, since both
4431
+ // read the asset and a stand-in differs in length from what replaces it.
4432
+ // Every hash it reads is settled: `createHash` precedes every stage.
4363
4433
  stage: getCompilation().PROCESS_ASSETS_STAGE_DERIVED
4364
4434
  },
4365
4435
  async () => {
@@ -4585,7 +4655,7 @@ class RuntimeTemplate {
4585
4655
  * @returns {SpecifierPart[] | null} what it resolves to, or `null` if unreadable
4586
4656
  */
4587
4657
  static _readAnalyzableSpecifier(payload) {
4588
- /** @type {EXPECTED_ANY} */
4658
+ /** @type {JsonValue} */
4589
4659
  let decoded;
4590
4660
  try {
4591
4661
  decoded = JSON.parse(
@@ -4600,17 +4670,19 @@ class RuntimeTemplate {
4600
4670
  if (!Array.isArray(decoded)) return null;
4601
4671
  for (const part of decoded) {
4602
4672
  if (!Array.isArray(part) || part.length !== 2) return null;
4603
- if (!SPECIFIER_PART_KINDS.has(part[0])) return null;
4673
+ if (!SPECIFIER_PART_KINDS.has(/** @type {string} */ (part[0]))) {
4674
+ return null;
4675
+ }
4604
4676
  // Only a chunk id may be a number; the rest are read as text.
4605
4677
  if (
4606
4678
  typeof part[1] !== "string" &&
4607
- (!CHUNK_SPECIFIER_PART_KINDS.has(part[0]) ||
4679
+ (!CHUNK_SPECIFIER_PART_KINDS.has(/** @type {string} */ (part[0])) ||
4608
4680
  typeof part[1] !== "number")
4609
4681
  ) {
4610
4682
  return null;
4611
4683
  }
4612
4684
  }
4613
- return decoded;
4685
+ return /** @type {SpecifierPart[]} */ (decoded);
4614
4686
  }
4615
4687
  }
4616
4688
 
@@ -6,30 +6,32 @@
6
6
  "use strict";
7
7
 
8
8
  const { ConcatSource, PrefixSource } = require("webpack-sources");
9
- const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
10
- const RuntimeGlobals = require("./RuntimeGlobals");
9
+ const {
10
+ WEBPACK_MODULE_TYPE_RUNTIME
11
+ } = require("../module/ModuleTypeConstants");
12
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
11
13
 
12
14
  /** @import { Source } from "webpack-sources" */
13
15
  /**
14
16
  * @import {
15
17
  * OutputNormalizedWithDefaults as OutputOptions
16
- * } from "./config/defaults"
18
+ * } from "../config/defaults"
17
19
  */
18
- /** @import Chunk from "./Chunk" */
19
- /** @import ChunkGraph, { ModuleId } from "./ChunkGraph" */
20
- /** @import CodeGenerationResults from "./CodeGenerationResults" */
21
- /** @import { AssetInfo, PathData } from "./Compilation" */
20
+ /** @import Chunk from "../graph/Chunk" */
21
+ /** @import ChunkGraph, { ModuleId } from "../graph/ChunkGraph" */
22
+ /** @import CodeGenerationResults from "../module/CodeGenerationResults" */
23
+ /** @import { AssetInfo, PathData } from "../Compilation" */
22
24
  /** @import DependencyTemplates from "./DependencyTemplates" */
23
- /** @import Module from "./Module" */
24
- /** @import ModuleGraph from "./ModuleGraph" */
25
+ /** @import Module from "../module/Module" */
26
+ /** @import ModuleGraph from "../graph/ModuleGraph" */
25
27
  /** @import ModuleTemplate from "./ModuleTemplate" */
26
- /** @import RuntimeModule from "./RuntimeModule" */
28
+ /** @import RuntimeModule from "../runtime/RuntimeModule" */
27
29
  /** @import RuntimeTemplate from "./RuntimeTemplate" */
28
30
  /**
29
31
  * @import {
30
32
  * ChunkRenderContext,
31
33
  * RenderContext
32
- * } from "./javascript/JavascriptModulesPlugin"
34
+ * } from "../javascript/JavascriptModulesPlugin"
33
35
  */
34
36
 
35
37
  const START_LOWERCASE_ALPHABET_CODE = "a".charCodeAt(0);