webpack 5.111.1 → 5.112.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/README.md +1 -1
  2. package/bin/webpack.js +13 -7
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +373 -163
  5. package/lib/Compiler.js +31 -44
  6. package/lib/Dependency.js +3 -551
  7. package/lib/DependencyTemplate.js +3 -70
  8. package/lib/EntryPlugin.js +3 -68
  9. package/lib/Entrypoint.js +3 -121
  10. package/lib/ExternalsPlugin.js +3 -92
  11. package/lib/FileSystemInfo.js +3 -4629
  12. package/lib/InitFragment.js +3 -204
  13. package/lib/LibraryTemplatePlugin.js +3 -46
  14. package/lib/ModuleFilenameHelpers.js +3 -400
  15. package/lib/ModuleNotFoundError.js +2 -2
  16. package/lib/MultiCompiler.js +37 -8
  17. package/lib/NormalModule.js +3 -2242
  18. package/lib/NullFactory.js +3 -22
  19. package/lib/ProgressPlugin.js +3 -908
  20. package/lib/RawModule.js +3 -197
  21. package/lib/RequestShortener.js +3 -37
  22. package/lib/SingleEntryPlugin.js +1 -1
  23. package/lib/WebpackError.js +2 -2
  24. package/lib/asset/AssetBytesGenerator.js +21 -13
  25. package/lib/asset/AssetBytesParser.js +12 -10
  26. package/lib/asset/AssetGenerator.js +71 -69
  27. package/lib/asset/AssetModule.js +13 -2
  28. package/lib/asset/AssetModulesPlugin.js +10 -12
  29. package/lib/asset/AssetParser.js +10 -10
  30. package/lib/asset/AssetSourceGenerator.js +23 -15
  31. package/lib/asset/AssetSourceParser.js +12 -10
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +17 -12
  34. package/lib/asset/WebManifestParser.js +8 -8
  35. package/lib/async-modules/AsyncModuleHelpers.js +12 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +9 -3
  38. package/lib/async-modules/isGeneratorLowered.js +3 -3
  39. package/lib/bun/BunTargetPlugin.js +1 -1
  40. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  41. package/lib/{Cache.js → cache/Cache.js} +1 -1
  42. package/lib/{CacheFacade.js → cache/CacheFacade.js} +6 -6
  43. package/lib/cache/IdleFileCachePlugin.js +2 -2
  44. package/lib/cache/MemoryCachePlugin.js +2 -2
  45. package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
  46. package/lib/cache/PackFileCacheStrategy.js +13 -19
  47. package/lib/cache/ResolverCachePlugin.js +65 -11
  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} +209 -212
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +1 -1
  54. package/lib/{cli.js → config/cli.js} +14 -164
  55. package/lib/config/defaults.js +166 -59
  56. package/lib/config/getClaimedAssetTypes.js +22 -14
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +11 -1
  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/context/ContextModule.js +37 -26
  76. package/lib/context/ContextModuleFactory.js +14 -11
  77. package/lib/context/ContextReplacementPlugin.js +6 -12
  78. package/lib/css/CssGenerator.js +78 -68
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +37 -29
  82. package/lib/css/CssModulesPlugin.js +129 -45
  83. package/lib/css/CssParser.js +714 -322
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/{util → css}/conventions.js +1 -1
  86. package/lib/css/cssMinify.js +110 -37
  87. package/lib/css/data.js +6990 -5125
  88. package/lib/css/syntax-parser.js +20734 -0
  89. package/lib/css/syntax-printer.js +6092 -0
  90. package/lib/css/syntax.js +37 -18686
  91. package/lib/debug/ProfilingPlugin.js +106 -51
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
  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 -11
  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} +14 -11
  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} +166 -36
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
  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} +17 -16
  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} +9 -6
  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} +31 -9
  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} +10 -11
  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} +7 -10
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
  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} +21 -17
  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 -99
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
  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} +25 -22
  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} +29 -21
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  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} +146 -133
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
  188. package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
  189. package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
  190. package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
  191. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  192. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
  193. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
  194. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  195. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  196. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  197. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  200. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  201. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +52 -151
  202. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
  203. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
  204. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
  205. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  206. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  207. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  208. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  209. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +22 -25
  210. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  211. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  212. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  213. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  214. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  215. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +122 -103
  216. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  217. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  218. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  219. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  220. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  221. package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
  222. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  223. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  224. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  225. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  226. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +82 -53
  227. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  228. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  229. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  230. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  231. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  232. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  233. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +155 -27
  234. package/lib/{util → devtool}/generateDebugId.js +1 -1
  235. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  236. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  237. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  238. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  239. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  240. package/lib/dll/DelegatedModule.js +23 -21
  241. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  242. package/lib/dll/DelegatedPlugin.js +1 -1
  243. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  244. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  245. package/lib/dll/DllEntryPlugin.js +3 -3
  246. package/lib/dll/DllModule.js +14 -10
  247. package/lib/dll/DllModuleFactory.js +3 -3
  248. package/lib/dll/DllPlugin.js +18 -6
  249. package/lib/dll/DllReferencePlugin.js +103 -30
  250. package/lib/dll/LibManifestPlugin.js +9 -7
  251. package/lib/electron/ElectronTargetPlugin.js +2 -2
  252. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  253. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  254. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  255. package/lib/entry/EntryPlugin.js +75 -0
  256. package/lib/errors/AbstractMethodError.js +1 -1
  257. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  258. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  259. package/lib/errors/BuildCycleError.js +1 -1
  260. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  261. package/lib/errors/ChunkRenderError.js +1 -1
  262. package/lib/errors/CodeGenerationError.js +1 -1
  263. package/lib/errors/CommentCompilationWarning.js +1 -1
  264. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  265. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  266. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  267. package/lib/errors/DllManifestError.js +26 -0
  268. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  269. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  270. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  271. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  272. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
  273. package/lib/errors/ExternalStarReexportError.js +2 -2
  274. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  275. package/lib/errors/HookWebpackError.js +6 -5
  276. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  277. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  278. package/lib/errors/JSONParseError.js +4 -4
  279. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  280. package/lib/errors/ModuleBuildError.js +1 -1
  281. package/lib/errors/ModuleDependencyError.js +2 -2
  282. package/lib/errors/ModuleDependencyWarning.js +2 -2
  283. package/lib/errors/ModuleError.js +1 -1
  284. package/lib/errors/ModuleHashingError.js +1 -1
  285. package/lib/errors/ModuleNotFoundError.js +3 -3
  286. package/lib/errors/ModuleParseError.js +1 -1
  287. package/lib/errors/ModuleRestoreError.js +1 -1
  288. package/lib/errors/ModuleStoreError.js +1 -1
  289. package/lib/errors/ModuleWarning.js +1 -1
  290. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  291. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  292. package/lib/errors/NodeStuffInWebError.js +7 -2
  293. package/lib/errors/PathVariableError.js +31 -0
  294. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  295. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  296. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  297. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  298. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  299. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  300. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  301. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  302. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  303. package/lib/errors/WebpackError.js +13 -3
  304. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  305. package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
  306. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  307. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  308. package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
  309. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
  310. package/lib/externals/ExternalsPlugin.js +99 -0
  311. package/lib/fs/FileSystemInfo.js +4642 -0
  312. package/lib/{util → fs}/fs.js +22 -9
  313. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  314. package/lib/graph/Chunk.js +985 -0
  315. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +192 -80
  316. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  317. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  318. package/lib/graph/Dependency.js +634 -0
  319. package/lib/graph/Entrypoint.js +136 -0
  320. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
  321. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  322. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
  323. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  324. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
  325. package/lib/{util → graph}/findGraphRoots.js +15 -9
  326. package/lib/graph/isDependencyKind.js +23 -0
  327. package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
  328. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
  329. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  330. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
  331. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  332. package/lib/hmr/LazyCompilationPlugin.js +32 -28
  333. package/lib/html/HtmlGenerator.js +132 -60
  334. package/lib/html/HtmlModule.js +16 -2
  335. package/lib/html/HtmlModulesPlugin.js +184 -87
  336. package/lib/html/HtmlParser.js +511 -160
  337. package/lib/html/builtinEmbeddedRenderer.js +70 -25
  338. package/lib/html/data.js +44 -22
  339. package/lib/html/htmlMinify.js +114 -41
  340. package/lib/html/syntax-parser.js +15795 -0
  341. package/lib/html/syntax-printer.js +1033 -0
  342. package/lib/html/syntax.js +37 -13952
  343. package/lib/html/xmlMinify.js +70 -0
  344. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  345. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  346. package/lib/ids/HashedModuleIdsPlugin.js +32 -5
  347. package/lib/ids/IdHelpers.js +4 -4
  348. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  349. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  350. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  351. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  352. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  353. package/lib/{util → ids}/numberHash.js +1 -1
  354. package/lib/index.js +312 -105
  355. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
  356. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  357. package/lib/javascript/BasicEvaluatedExpression.js +9 -9
  358. package/lib/javascript/ChunkHelpers.js +64 -4
  359. package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
  360. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  361. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
  362. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  363. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  364. package/lib/javascript/JavascriptGenerator.js +32 -27
  365. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
  366. package/lib/javascript/JavascriptModule.js +14 -3
  367. package/lib/javascript/JavascriptModulesPlugin.js +441 -214
  368. package/lib/javascript/JavascriptParser.js +318 -144
  369. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  370. package/lib/javascript/MergedEntryExports.js +196 -0
  371. package/lib/javascript/ScopeAnalyzer.js +3924 -13
  372. package/lib/javascript/StartupHelpers.js +6 -6
  373. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
  374. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  375. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  376. package/lib/javascript/data.js +533 -122
  377. package/lib/javascript/jsMinify.js +272 -0
  378. package/lib/javascript/regexp.js +67 -32
  379. package/lib/javascript/syntax-parser.js +19169 -0
  380. package/lib/javascript/syntax-printer-data.js +1099 -0
  381. package/lib/javascript/syntax-printer.js +53878 -0
  382. package/lib/javascript/syntax.js +20 -11274
  383. package/lib/json/JsonData.js +1 -1
  384. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  385. package/lib/json/JsonGenerator.js +24 -16
  386. package/lib/json/JsonModule.js +13 -2
  387. package/lib/json/JsonModulesPlugin.js +1 -1
  388. package/lib/json/JsonParser.js +11 -10
  389. package/lib/json/jsonMinify.js +69 -0
  390. package/lib/library/AbstractLibraryPlugin.js +28 -15
  391. package/lib/library/AmdLibraryPlugin.js +4 -4
  392. package/lib/library/AssignLibraryPlugin.js +28 -12
  393. package/lib/library/EnableLibraryPlugin.js +1 -1
  394. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  395. package/lib/library/JsonpLibraryPlugin.js +2 -2
  396. package/lib/library/LibraryTemplatePlugin.js +53 -0
  397. package/lib/library/ModuleLibraryPlugin.js +557 -187
  398. package/lib/library/SystemLibraryPlugin.js +6 -8
  399. package/lib/library/UmdLibraryPlugin.js +3 -4
  400. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  401. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  402. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  403. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  404. package/lib/loaders/LoaderRunner.js +94 -46
  405. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  406. package/lib/loaders/loadLoader.js +16 -10
  407. package/lib/logging/Logger.js +7 -9
  408. package/lib/logging/ProgressPlugin.js +957 -0
  409. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  410. package/lib/{Generator.js → module/Generator.js} +33 -23
  411. package/lib/{Module.js → module/Module.js} +121 -53
  412. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  413. package/lib/module/NormalModule.js +2350 -0
  414. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
  415. package/lib/module/NullFactory.js +29 -0
  416. package/lib/{Parser.js → module/Parser.js} +12 -5
  417. package/lib/module/RawModule.js +208 -0
  418. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  419. package/lib/{util → module}/extractSourceMap.js +71 -20
  420. package/lib/{util → module}/findCaseMismatch.js +4 -4
  421. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  422. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  423. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
  424. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  425. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  426. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  427. package/lib/node/NodeTargetPlugin.js +1 -1
  428. package/lib/node/NodeWatchFileSystem.js +58 -6
  429. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  430. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
  431. package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
  432. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  433. package/lib/node/nodeConsole.js +6 -7
  434. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  435. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  436. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
  437. package/lib/optimize/ConcatenatedModule.js +231 -220
  438. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  439. package/lib/optimize/ConstExportsPlugin.js +7 -7
  440. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  441. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  442. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +23 -28
  443. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
  444. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  445. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  446. package/lib/optimize/InlineExports.js +12 -7
  447. package/lib/optimize/InnerGraph.js +5 -13
  448. package/lib/optimize/InnerGraphPlugin.js +10 -10
  449. package/lib/optimize/LazyBarrels.js +620 -0
  450. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  451. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  452. package/lib/optimize/MangleExportsPlugin.js +5 -5
  453. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  454. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  455. package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
  456. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  457. package/lib/optimize/RealContentHashPlugin.js +18 -13
  458. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  459. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  460. package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
  461. package/lib/optimize/SplitChunksPlugin.js +719 -174
  462. package/lib/{util → optimize}/TupleQueue.js +9 -9
  463. package/lib/optimize/chunkSetIntersections.js +437 -0
  464. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  465. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  466. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
  467. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
  468. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  469. package/lib/output/SSRManifestPlugin.js +349 -0
  470. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  471. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  472. package/lib/performance/BroadContextsPlugin.js +4 -4
  473. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  474. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  475. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  476. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  477. package/lib/performance/DynamicExportsPlugin.js +2 -2
  478. package/lib/performance/EvalUsagePlugin.js +4 -6
  479. package/lib/performance/HotspotsPlugin.js +39 -14
  480. package/lib/performance/LargeModulesPlugin.js +2 -3
  481. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  482. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  483. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  484. package/lib/performance/PureAnnotationsPlugin.js +19 -13
  485. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  486. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  487. package/lib/performance/SizeLimitsPlugin.js +11 -12
  488. package/lib/performance/TopLevelThisPlugin.js +22 -13
  489. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  490. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  491. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  492. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  493. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  494. package/lib/performance/UnusedFederationPlugin.js +2 -4
  495. package/lib/performance/UnusedModulesPlugin.js +5 -4
  496. package/lib/performance/getModuleSize.js +1 -1
  497. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  498. package/lib/performance/isOnlyReexported.js +7 -6
  499. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  500. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  501. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  502. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  503. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  504. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  505. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  506. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  507. package/lib/prefetch/ResourceHintPlugin.js +66 -45
  508. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  509. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  510. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  511. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  512. package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
  513. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  514. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  515. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  516. package/lib/resolve/getResolveOptionsKey.js +59 -0
  517. package/lib/rules/BasicEffectRulePlugin.js +1 -1
  518. package/lib/rules/RuleSetCompiler.js +42 -51
  519. package/lib/rules/UseEffectRulePlugin.js +1 -3
  520. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  521. package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
  522. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  523. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  524. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  525. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  526. package/lib/runtime/CompatRuntimeModule.js +4 -4
  527. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  528. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  529. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  530. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  531. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  532. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  533. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  534. package/lib/runtime/GetChunkFilenameRuntimeModule.js +7 -11
  535. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  536. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  537. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  538. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  539. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  540. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  541. package/lib/runtime/HelperRuntimeModule.js +16 -1
  542. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  543. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  544. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  545. package/lib/runtime/NonceRuntimeModule.js +2 -2
  546. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  547. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  548. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  549. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +24 -1
  550. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  551. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  552. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -50
  553. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  554. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  555. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  556. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  557. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  558. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  559. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  560. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  561. package/lib/runtime/baseUri.js +1 -1
  562. package/lib/schemes/DataUriPlugin.js +1 -1
  563. package/lib/schemes/HttpUriPlugin.js +68 -13
  564. package/lib/schemes/VirtualUrlPlugin.js +52 -16
  565. package/lib/serialization/AggregateErrorSerializer.js +4 -4
  566. package/lib/serialization/BinaryMiddleware.js +4 -1
  567. package/lib/serialization/ErrorObjectSerializer.js +2 -5
  568. package/lib/serialization/FileMiddleware.js +3 -3
  569. package/lib/serialization/ObjectMiddleware.js +62 -29
  570. package/lib/serialization/PlainObjectSerializer.js +3 -7
  571. package/lib/serialization/Serializer.js +21 -11
  572. package/lib/serialization/SerializerMiddleware.js +10 -8
  573. package/lib/serialization/SingleItemMiddleware.js +4 -2
  574. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  575. package/lib/sharing/ConsumeSharedModule.js +18 -14
  576. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  577. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  578. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  579. package/lib/sharing/ProvideSharedDependency.js +1 -1
  580. package/lib/sharing/ProvideSharedModule.js +11 -9
  581. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  582. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  583. package/lib/sharing/SharePlugin.js +102 -9
  584. package/lib/sharing/ShareRuntimeModule.js +6 -6
  585. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  586. package/lib/{util → sharing}/semver.js +14 -16
  587. package/lib/sharing/utils.js +59 -2
  588. package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
  589. package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
  590. package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
  591. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  592. package/lib/{Stats.js → stats/Stats.js} +4 -4
  593. package/lib/stats/StatsFactory.js +208 -37
  594. package/lib/stats/StatsPrinter.js +126 -13
  595. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  596. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  597. package/lib/template/DependencyTemplate.js +77 -0
  598. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  599. package/lib/template/InitFragment.js +223 -0
  600. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  601. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  602. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  603. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +158 -95
  604. package/lib/{Template.js → template/Template.js} +14 -12
  605. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  606. package/lib/typescript/TypeScriptPlugin.js +3 -3
  607. package/lib/util/RequestShortener.js +44 -0
  608. package/lib/util/SortableSet.js +87 -22
  609. package/lib/util/SourceProcessor.js +439 -51
  610. package/lib/util/TupleSet.js +27 -27
  611. package/lib/util/WeakTupleMap.js +20 -16
  612. package/lib/util/buildDiagnostics.js +2 -2
  613. package/lib/util/cleverMerge.js +61 -33
  614. package/lib/util/comparators.js +19 -15
  615. package/lib/util/concatenate.js +28 -147
  616. package/lib/util/createMappings.js +111 -0
  617. package/lib/util/dataURL.js +96 -15
  618. package/lib/util/deprecation.js +5 -4
  619. package/lib/util/extractComments.js +118 -0
  620. package/lib/util/formatLocation.js +1 -1
  621. package/lib/util/globUtils.js +198 -20
  622. package/lib/util/haltVisitors.js +51 -0
  623. package/lib/util/handlerKeys.js +2 -2
  624. package/lib/util/identifier.js +117 -1
  625. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  626. package/lib/util/internalSerializables.js +296 -102
  627. package/lib/util/magicComment.js +12 -7
  628. package/lib/util/makeSerializable.js +28 -7
  629. package/lib/util/memoize.js +1 -1
  630. package/lib/util/parseJson.js +2 -2
  631. package/lib/util/preloadModuleType.js +5 -2
  632. package/lib/util/registerExternalSerializer.js +2 -2
  633. package/lib/util/removeBOM.js +1 -1
  634. package/lib/util/runtime.js +1 -1
  635. package/lib/util/serialization.js +35 -28
  636. package/lib/util/source.js +2 -2
  637. package/lib/util/terminalColors.js +161 -0
  638. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  639. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  640. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +19 -5
  641. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
  642. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
  643. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  644. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
  645. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  646. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
  647. package/lib/wasm/wasmModuleFilename.js +2 -2
  648. package/lib/wasm-sync/SyncWasmModule.js +18 -3
  649. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  650. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  651. package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
  652. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
  653. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  654. package/lib/wasm-sync/WebAssemblyParser.js +15 -17
  655. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  656. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  657. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  658. package/lib/{Watching.js → watch/Watching.js} +8 -8
  659. package/lib/web/FetchCompileAsyncWasmPlugin.js +12 -18
  660. package/lib/web/FetchCompileWasmPlugin.js +8 -10
  661. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  662. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  663. package/lib/web/JsonpTemplatePlugin.js +1 -1
  664. package/lib/webpack.js +27 -17
  665. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  666. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  667. package/package.json +57 -36
  668. package/schemas/WebpackOptions.check.js +4 -3
  669. package/schemas/WebpackOptions.d.json.ts +2 -0
  670. package/schemas/WebpackOptions.json +295 -75
  671. package/schemas/plugins/BannerPlugin.check.js +4 -3
  672. package/schemas/plugins/BannerPlugin.json +29 -2
  673. package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
  674. package/schemas/plugins/HtmlParserOptions.check.js +4 -3
  675. package/schemas/plugins/IgnorePlugin.check.js +4 -3
  676. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  677. package/schemas/plugins/IgnorePlugin.json +1 -1
  678. package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
  679. package/schemas/plugins/ManifestPlugin.check.js +4 -3
  680. package/schemas/plugins/ManifestPlugin.json +3 -3
  681. package/schemas/plugins/ProgressPlugin.check.js +4 -3
  682. package/schemas/plugins/ProgressPlugin.json +2 -7
  683. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  684. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  685. package/schemas/plugins/SourceMapDevToolPlugin.check.js +4 -3
  686. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  687. package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
  688. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  689. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
  690. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
  691. package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
  692. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
  693. package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
  694. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  695. package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
  696. package/schemas/plugins/container/ExternalsType.check.js +4 -3
  697. package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
  698. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  699. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
  700. package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
  701. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
  702. package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
  703. package/schemas/plugins/css/CssParserOptions.check.js +4 -3
  704. package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
  705. package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
  706. package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
  707. package/schemas/plugins/dll/DllPlugin.check.js +4 -3
  708. package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
  709. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  710. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
  711. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
  712. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
  713. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
  714. package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
  715. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
  716. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
  717. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
  718. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
  719. package/schemas/plugins/output/CleanOptions.check.js +7 -0
  720. package/schemas/plugins/output/CleanOptions.json +3 -0
  721. package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
  722. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
  723. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
  724. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  725. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
  726. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  727. package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
  728. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  729. package/types.d.ts +20780 -14174
  730. package/lib/LazyBarrel.js +0 -388
  731. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  732. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  733. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  734. package/lib/javascript/grammar.js +0 -5546
  735. package/lib/javascript/parser.js +0 -1500
  736. package/lib/javascript/regexpData.js +0 -51
  737. package/lib/performance/getSourceModules.js +0 -22
  738. package/lib/util/Semaphore.js +0 -65
  739. package/lib/util/objectToMap.js +0 -15
  740. package/schemas/WebpackOptions.check.d.ts +0 -7
  741. package/schemas/_container.json +0 -155
  742. package/schemas/_sharing.json +0 -118
  743. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  745. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  747. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  752. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  753. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  754. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  755. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  756. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  759. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  761. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  762. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  763. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  764. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  765. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  768. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  769. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  770. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  771. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  772. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  773. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  774. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  775. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  776. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  777. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  778. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  779. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  780. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  781. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  782. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  783. /package/lib/{util → css}/topologicalSort.js +0 -0
  784. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  785. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  786. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  787. /package/lib/{util → javascript}/StackedMap.js +0 -0
  788. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  789. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  790. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  791. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  792. /package/lib/{util → optimize}/Queue.js +0 -0
  793. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -11,26 +11,19 @@ const {
11
11
  ConcatSource,
12
12
  ReplaceSource
13
13
  } = require("webpack-sources");
14
- const ConcatenationScope = require("../ConcatenationScope");
15
- const Dependency = require("../Dependency");
16
- const { UsageState } = require("../ExportsInfo");
17
- const ExternalModule = require("../ExternalModule");
18
- const Module = require("../Module");
19
- const {
20
- JAVASCRIPT_TYPE,
21
- JAVASCRIPT_TYPES
22
- } = require("../ModuleSourceTypeConstants");
23
- const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
24
- const NormalModule = require("../NormalModule");
25
- const RuntimeGlobals = require("../RuntimeGlobals");
26
- const Template = require("../Template");
27
14
  const { DEFAULTS } = require("../config/defaults");
28
- const CommonJsExportRequireDependency = require("../dependencies/CommonJsExportRequireDependency");
29
- const CommonJsFullRequireDependency = require("../dependencies/CommonJsFullRequireDependency");
30
- const CommonJsRequireDependency = require("../dependencies/CommonJsRequireDependency");
31
- const { ImportPhaseUtils } = require("../dependencies/ImportPhase");
15
+ const { ImportPhaseUtils } = require("../dependencies/core/ImportPhase");
16
+ const Dependency = require("../graph/Dependency");
17
+ const { UsageState } = require("../graph/ExportsInfo");
18
+ const isDependencyKind = require("../graph/isDependencyKind");
32
19
  const JavascriptParser = require("../javascript/JavascriptParser");
33
20
  const analyzeScope = require("../javascript/ScopeAnalyzer");
21
+ const Module = require("../module/Module");
22
+ const {
23
+ JAVASCRIPT_TYPE,
24
+ JAVASCRIPT_TYPES
25
+ } = require("../module/ModuleSourceTypeConstants");
26
+ const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../module/ModuleTypeConstants");
34
27
  const {
35
28
  getDeferredCycleModuleIds,
36
29
  getDeferredCycleModules,
@@ -38,6 +31,8 @@ const {
38
31
  getMakeDeferredNamespaceModeFromExportsType,
39
32
  getOptimizedDeferredModule
40
33
  } = require("../runtime/MakeDeferredNamespaceObjectRuntime");
34
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
35
+ const Template = require("../template/Template");
41
36
  const { equals } = require("../util/ArrayHelpers");
42
37
  const LazySet = require("../util/LazySet");
43
38
  const { getBuildDiagnostics } = require("../util/buildDiagnostics");
@@ -50,7 +45,6 @@ const {
50
45
  addScopeSymbols,
51
46
  findNewName,
52
47
  getAllReferences,
53
- getPathInAst,
54
48
  getUsedNamesInScopeInfo,
55
49
  isCommonJsConcatenationEnabled
56
50
  } = require("../util/concatenate");
@@ -67,7 +61,8 @@ const {
67
61
  runtimeConditionToString,
68
62
  subtractRuntimeCondition
69
63
  } = require("../util/runtime");
70
- const { InlinedUsedName } = require("./InlineExports");
64
+ const ConcatenationScope = require("./ConcatenationScope");
65
+ const { isInlinedUsedName } = require("./InlineExports");
71
66
 
72
67
  /** @import { Source } from "webpack-sources" */
73
68
  /**
@@ -75,13 +70,13 @@ const { InlinedUsedName } = require("./InlineExports");
75
70
  * WebpackOptionsNormalizedWithDefaults as WebpackOptions
76
71
  * } from "../config/defaults"
77
72
  */
78
- /** @import ChunkGraph from "../ChunkGraph" */
79
- /** @import CodeGenerationResults from "../CodeGenerationResults" */
73
+ /** @import ChunkGraph from "../graph/ChunkGraph" */
74
+ /** @import CodeGenerationResults from "../module/CodeGenerationResults" */
80
75
  /** @import Compilation, { FileSystemDependencies } from "../Compilation" */
81
- /** @import { UpdateHashContext } from "../Dependency" */
82
- /** @import HarmonyImportDependency from "../dependencies/HarmonyImportDependency" */
83
- /** @import DependencyTemplates from "../DependencyTemplates" */
84
- /** @import { ExportInfo } from "../ExportsInfo" */
76
+ /** @import { UpdateHashContext } from "../graph/Dependency" */
77
+ /** @import ESMImportDependency from "../dependencies/esm/ESMImportDependency" */
78
+ /** @import DependencyTemplates from "../template/DependencyTemplates" */
79
+ /** @import { ExportInfo } from "../graph/ExportsInfo" */
85
80
  /**
86
81
  * @import {
87
82
  * BuildCallback,
@@ -96,18 +91,19 @@ const { InlinedUsedName } = require("./InlineExports");
96
91
  * NameForCondition,
97
92
  * ReadOnlyRuntimeRequirements,
98
93
  * RuntimeRequirements,
99
- * SourceTypes
100
- * } from "../Module"
94
+ * SourceTypes,
95
+ * ModuleKinds
96
+ * } from "../module/Module"
101
97
  */
102
- /** @import ModuleGraph from "../ModuleGraph" */
98
+ /** @import ModuleGraph from "../graph/ModuleGraph" */
103
99
  /**
104
100
  * @import ModuleGraphConnection, {
105
101
  * ConnectionState
106
- * } from "../ModuleGraphConnection"
102
+ * } from "../graph/ModuleGraphConnection"
107
103
  */
108
- /** @import RequestShortener from "../RequestShortener" */
109
- /** @import { ResolverWithOptions } from "../ResolverFactory" */
110
- /** @import RuntimeTemplate from "../RuntimeTemplate" */
104
+ /** @import RequestShortener from "../util/RequestShortener" */
105
+ /** @import { ResolverWithOptions } from "../resolve/ResolverFactory" */
106
+ /** @import RuntimeTemplate from "../template/RuntimeTemplate" */
111
107
  /**
112
108
  * @import {
113
109
  * JavascriptModuleBuildInfo,
@@ -130,12 +126,12 @@ const { InlinedUsedName } = require("./InlineExports");
130
126
  */
131
127
  /** @import Hash, { HashFunction } from "../util/Hash" */
132
128
  /** @import { UsedNames, UsedNamesInScopeInfo } from "../util/concatenate" */
133
- /** @import { InputFileSystem } from "../util/fs" */
129
+ /** @import { InputFileSystem } from "../fs/fs" */
134
130
  /** @import { AssociatedObjectForCache } from "../util/identifier" */
135
131
  /** @import { RuntimeSpec } from "../util/runtime" */
136
132
  /**
137
133
  * @template T
138
- * @typedef {import("../InitFragment")<T>} InitFragment
134
+ * @typedef {import("../template/InitFragment")<T>} InitFragment
139
135
  */
140
136
 
141
137
  /**
@@ -206,7 +202,7 @@ const findIdentifiers = (source) => {
206
202
  * @property {boolean} eager a wrapped body reached by an eager import edge, so its accessor is called at its own slot in evaluation order
207
203
  * @property {Module} module
208
204
  * @property {number} index
209
- * @property {Program | undefined} ast
205
+ * @property {Set<number> | undefined} shorthandIdentifierStarts where each shorthand property's identifier starts
210
206
  * @property {Source | undefined} internalSource
211
207
  * @property {ReplaceSource | undefined} source
212
208
  * @property {InitFragment<ChunkRenderContext>[]=} chunkInitFragments
@@ -303,6 +299,7 @@ const compareNumbers = (a, b) => {
303
299
 
304
300
  const bySourceOrder = createComparator("sourceOrder", compareNumbers);
305
301
  const byRangeStart = createComparator("rangeStart", compareNumbers);
302
+ const byDependencyIndex = createComparator("dependencyIndex", compareNumbers);
306
303
 
307
304
  /**
308
305
  * @param {Iterable<string>} iterable iterable object
@@ -357,7 +354,7 @@ const subtractNonDeferAccess = (a, b) => a && !b;
357
354
  * @returns {boolean} true, when the module renders wrapped
358
355
  */
359
356
  const needWrapped = (module) =>
360
- module instanceof NormalModule &&
357
+ module.is("normal") &&
361
358
  module.type.startsWith("javascript/") &&
362
359
  module.buildMeta !== undefined &&
363
360
  module.buildMeta.exportsType !== "namespace";
@@ -367,11 +364,14 @@ const needWrapped = (module) =>
367
364
  * @param {ConcatenationEntry} entry a member of the concatenation
368
365
  * @returns {boolean} true, when it may be wrapped
369
366
  */
370
- const entryCanBeWrapped = (entry) =>
371
- (entry.module instanceof NormalModule &&
372
- !entry.module.type.startsWith("css/")) ||
373
- (entry.module instanceof ExternalModule &&
374
- entry.module.canBeWrappedInConcatenation());
367
+ const entryCanBeWrapped = (entry) => {
368
+ // TODO in the next major release: call it directly. A module built against an older webpack
369
+ // extends a base class without it, so fall back to the check this replaced.
370
+ if (typeof entry.module.canBeWrappedInConcatenation !== "function") {
371
+ return !entry.module.type.startsWith("css/");
372
+ }
373
+ return entry.module.canBeWrappedInConcatenation();
374
+ };
375
375
 
376
376
  /** @typedef {Set<ConcatenatedModuleInfo>} NeededNamespaceObjects */
377
377
 
@@ -756,7 +756,7 @@ const getFinalBinding = (
756
756
  exportName
757
757
  };
758
758
  }
759
- if (usedName instanceof InlinedUsedName) {
759
+ if (isInlinedUsedName(usedName)) {
760
760
  return {
761
761
  info,
762
762
  // Render the inlined literal only, not its property suffix: that
@@ -798,7 +798,7 @@ const getFinalBinding = (
798
798
  const usedName = moduleGraph
799
799
  .getExportsInfo(target.module)
800
800
  .getUsedName([...target.export, ...exportName.slice(1)], runtime);
801
- if (usedName instanceof InlinedUsedName) {
801
+ if (isInlinedUsedName(usedName)) {
802
802
  return {
803
803
  info,
804
804
  // Literal only; suffix is appended once via `ids` (see directExport branch).
@@ -821,9 +821,16 @@ const getFinalBinding = (
821
821
  ` * ${info.type} ${m.readableIdentifier(requestShortener)}`
822
822
  ).join("\n")}`
823
823
  );
824
- }
825
- if (reexport) {
824
+ } else if (reexport) {
826
825
  const refInfo = moduleToInfoMap.get(reexport.module);
826
+ // a CommonJS `exports.x = require()` re-export keeps raw exports semantics
827
+ const moduleExportsAccess =
828
+ reexport.connection.dependency !== null &&
829
+ isDependencyKind(
830
+ reexport.connection.dependency,
831
+ "commonjs-export-require"
832
+ );
833
+
827
834
  return getFinalBinding(
828
835
  moduleGraph,
829
836
  /** @type {ModuleInfo} */ (refInfo),
@@ -840,7 +847,7 @@ const getFinalBinding = (
840
847
  /** @type {BuildMeta} */
841
848
  (info.module.buildMeta).strictHarmonyModule,
842
849
  asiSafe,
843
- false,
850
+ moduleExportsAccess,
844
851
  alreadyVisited
845
852
  );
846
853
  }
@@ -858,7 +865,7 @@ const getFinalBinding = (
858
865
  }
859
866
  // an inlined export never reaches the exports object, so render the
860
867
  // literal instead of reading the namespace
861
- if (usedName instanceof InlinedUsedName) {
868
+ if (isInlinedUsedName(usedName)) {
862
869
  return {
863
870
  info,
864
871
  // Literal only; suffix is appended once via `ids` (see directExport branch).
@@ -895,7 +902,7 @@ const getFinalBinding = (
895
902
  exportName
896
903
  };
897
904
  }
898
- if (used instanceof InlinedUsedName) {
905
+ if (isInlinedUsedName(used)) {
899
906
  return {
900
907
  info,
901
908
  // Literal only; suffix is appended once via `ids` (see directExport branch).
@@ -1130,6 +1137,22 @@ class ConcatenatedModule extends Module {
1130
1137
  return [...this._modules];
1131
1138
  }
1132
1139
 
1140
+ /**
1141
+ * Returns the module this one was built around: itself, or the root of a scope-hoisted concatenation.
1142
+ * @returns {Module} the root module
1143
+ */
1144
+ getRootModule() {
1145
+ return this.rootModule;
1146
+ }
1147
+
1148
+ /**
1149
+ * Returns the modules this one was built from: itself, or every module merged by scope hoisting.
1150
+ * @returns {Iterable<Module>} the source modules (do not mutate)
1151
+ */
1152
+ getSourceModules() {
1153
+ return this._modules;
1154
+ }
1155
+
1133
1156
  /**
1134
1157
  * Returns the unique identifier used to reference this module.
1135
1158
  * @returns {string} a unique identifier of the module
@@ -1368,8 +1391,13 @@ class ConcatenatedModule extends Module {
1368
1391
  connections.push(c);
1369
1392
  }
1370
1393
  }
1394
+ /** @type {Map<Dependency, number>} */
1395
+ const dependencyIndices = new Map();
1396
+ for (let i = 0; i < module.dependencies.length; i++) {
1397
+ dependencyIndices.set(module.dependencies[i], i);
1398
+ }
1371
1399
  /**
1372
- * @type {{ connection: ModuleGraphConnection, sourceOrder: number, rangeStart: number | undefined, defer?: boolean }[]}
1400
+ * @type {{ connection: ModuleGraphConnection, sourceOrder: number, rangeStart: number | undefined, dependencyIndex: number, defer?: boolean }[]}
1373
1401
  */
1374
1402
  const references = connections
1375
1403
  .filter((connection) => {
@@ -1396,8 +1424,9 @@ class ConcatenatedModule extends Module {
1396
1424
  })
1397
1425
  .map((connection) => {
1398
1426
  const dep =
1399
- /** @type {HarmonyImportDependency} */
1427
+ /** @type {ESMImportDependency} */
1400
1428
  (connection.dependency);
1429
+ const dependencyIndex = dependencyIndices.get(dep);
1401
1430
  return {
1402
1431
  connection,
1403
1432
  // A require() edge carries no sourceOrder, and Infinity sorts it
@@ -1406,6 +1435,8 @@ class ConcatenatedModule extends Module {
1406
1435
  sourceOrder:
1407
1436
  typeof dep.sourceOrder === "number" ? dep.sourceOrder : Infinity,
1408
1437
  rangeStart: dep.range && dep.range[0],
1438
+ dependencyIndex:
1439
+ dependencyIndex === undefined ? Infinity : dependencyIndex,
1409
1440
  defer: ImportPhaseUtils.isDefer(dep.phase)
1410
1441
  };
1411
1442
  });
@@ -1424,8 +1455,11 @@ class ConcatenatedModule extends Module {
1424
1455
  * If there is no reexport, we have the same source.
1425
1456
  * If there is reexport, but module has side effects, this will lead to reexport module only.
1426
1457
  * If there is side-effects-free reexport, we can get simple deterministic result with range start comparison.
1458
+ * Re-exports of one statement share sourceOrder and have no range, so the dependency index breaks the tie.
1427
1459
  */
1428
- references.sort(concatComparators(bySourceOrder, byRangeStart));
1460
+ references.sort(
1461
+ concatComparators(bySourceOrder, byRangeStart, byDependencyIndex)
1462
+ );
1429
1463
  /** @type {Map<Module, { connection: ModuleGraphConnection, runtimeCondition: RuntimeSpec | true, nonDeferAccess: NonDeferAccess }>} */
1430
1464
  const referencesMap = new Map();
1431
1465
  /** @type {Module[] | undefined} */
@@ -1439,12 +1473,11 @@ class ConcatenatedModule extends Module {
1439
1473
  const module = connection.module;
1440
1474
  if (targets === undefined) targets = [module];
1441
1475
  else if (!targets.includes(module)) targets.push(module);
1476
+ const dependency = connection.dependency;
1442
1477
  if (
1443
- [
1444
- CommonJsRequireDependency,
1445
- CommonJsFullRequireDependency,
1446
- CommonJsExportRequireDependency
1447
- ].some((Dep) => connection.dependency instanceof Dep)
1478
+ dependency !== null &&
1479
+ (isDependencyKind(dependency, "commonjs-require") ||
1480
+ isDependencyKind(dependency, "commonjs-export-require"))
1448
1481
  ) {
1449
1482
  wrappedModules.add(module);
1450
1483
  }
@@ -1708,7 +1741,7 @@ class ConcatenatedModule extends Module {
1708
1741
  // | (concatenated [+wrapped] | external | reference)
1709
1742
  // v
1710
1743
  // [1] ANALYSE — inner codeGeneration() per module, into a ConcatenationScope
1711
- // | plain -> ReplaceSource + ast + scope analysis
1744
+ // | plain -> ReplaceSource + scope analysis
1712
1745
  // | wrapped -> ReplaceSource only, body kept verbatim
1713
1746
  // | external -> nothing yet, rendered as a require() below
1714
1747
  // [2] RESERVE — free globals of the analysed bodies enter allUsedNames, so
@@ -1718,7 +1751,7 @@ class ConcatenatedModule extends Module {
1718
1751
  // | the generated names allocated: wrapper accessor, namespace object,
1719
1752
  // | interop helpers, external import variable
1720
1753
  // [4] LINK — __WEBPACK_MODULE_REFERENCE__ tokens replaced by their final
1721
- // | binding; through the ast for analysed bodies, textually for wrapped
1754
+ // | binding; through the scopes for analysed bodies, textually for wrapped
1722
1755
  // [5] COLLECT EXPORTS — root exports split into used / unused / inlined
1723
1756
  // v
1724
1757
  // ---- from here on everything is appended to the result ConcatSource ----
@@ -1797,8 +1830,8 @@ class ConcatenatedModule extends Module {
1797
1830
  /** @type {Set<ConcatenatedModuleInfo | ExternalModuleInfo>} */
1798
1831
  const neededEscapeNamespaceObjects = new Set();
1799
1832
 
1800
- // #region [1] ANALYSE: run each inner module's own codeGeneration; a
1801
- // non-wrapped body is parsed and scope-analysed so [3] can rename its locals
1833
+ // #region [1] ANALYSE: run each inner module's own codeGeneration and
1834
+ // scope-analyse the body; a non-wrapped one keeps its scopes for [3]
1802
1835
  for (const info of moduleToInfoMap.values()) {
1803
1836
  this._analyseModule(
1804
1837
  moduleToInfoMap,
@@ -1862,7 +1895,7 @@ class ConcatenatedModule extends Module {
1862
1895
  for (const exportInfo of exportsInfo.orderedExports) {
1863
1896
  if (exportInfo.provided === false) continue;
1864
1897
  const usedName = exportInfo.getUsedName(undefined, runtime);
1865
- if (!usedName || usedName instanceof InlinedUsedName) continue;
1898
+ if (!usedName || isInlinedUsedName(usedName)) continue;
1866
1899
  if (usedName[usedName.length - 1] !== exportInfo.name) {
1867
1900
  mangled = true;
1868
1901
  break;
@@ -1895,8 +1928,18 @@ class ConcatenatedModule extends Module {
1895
1928
  )) {
1896
1929
  allUsedNames.add(name);
1897
1930
  }
1898
- // A wrapped body has no scope analysis, so its references are found
1899
- // textually. They still have to be resolved here: binding one is what
1931
+ // only its free globals reach freeNames; the reference tokens among
1932
+ // them are resolved textually below and patched the same way in [4]
1933
+ for (const reference of /** @type {Reference[]} */ (
1934
+ info.unresolvedReferences
1935
+ )) {
1936
+ const name = reference.identifier.name;
1937
+ if (!ConcatenationScope.isModuleReference(name)) {
1938
+ freeNames.add(name);
1939
+ }
1940
+ }
1941
+ // A wrapped body's references are found textually, as [4] patches
1942
+ // them. They still have to be resolved here: binding one is what
1900
1943
  // flags the interop objects it needs, and [3] allocates their names.
1901
1944
  /** @type {Set<string>} */
1902
1945
  const visitedReferences = new Set();
@@ -2132,26 +2175,14 @@ class ConcatenatedModule extends Module {
2132
2175
  for (const identifier of variable.identifiers) {
2133
2176
  allIdentifiers.add(identifier);
2134
2177
  }
2178
+ const shorthandStarts =
2179
+ /** @type {NonNullable<ConcatenatedModuleInfo["shorthandIdentifierStarts"]>} */
2180
+ (info.shorthandIdentifierStarts);
2135
2181
  for (const identifier of allIdentifiers) {
2136
2182
  const r = /** @type {Range} */ (identifier.range);
2137
- const path = getPathInAst(
2138
- /** @type {NonNullable<ConcatenatedModuleInfo["ast"]>} */
2139
- (info.ast),
2140
- identifier
2141
- );
2142
- if (path && path.length > 1) {
2143
- const maybeProperty =
2144
- path[1].type === "AssignmentPattern" &&
2145
- path[1].left === path[0]
2146
- ? path[2]
2147
- : path[1];
2148
- if (
2149
- maybeProperty.type === "Property" &&
2150
- maybeProperty.shorthand
2151
- ) {
2152
- source.insert(r[1], `: ${newName}`);
2153
- continue;
2154
- }
2183
+ if (shorthandStarts.has(r[0])) {
2184
+ source.insert(r[1], `: ${newName}`);
2185
+ continue;
2155
2186
  }
2156
2187
  source.replace(r[0], r[1] - 1, newName);
2157
2188
  }
@@ -2311,9 +2342,7 @@ class ConcatenatedModule extends Module {
2311
2342
  newName &&
2312
2343
  concatenatedModuleInfo.call(
2313
2344
  {
2314
- rawExportMap: new Map([
2315
- [exportId, /** @type {string} */ (newName)]
2316
- ])
2345
+ rawExportMap: new Map([[exportId, newName]])
2317
2346
  },
2318
2347
  /** @type {ConcatenatedModuleInfo} */ (referencedInfo)
2319
2348
  );
@@ -2358,8 +2387,8 @@ class ConcatenatedModule extends Module {
2358
2387
  }
2359
2388
  }
2360
2389
  } else {
2361
- // Wrapped bodies are not re-parsed: find their reference tokens
2362
- // textually. [2] scanned the same source, so this reuses its result.
2390
+ // A wrapped body's reference tokens are found textually rather than
2391
+ // in its AST. [2] scanned the same source, so this reuses its result.
2363
2392
  /** @type {Map<string, string>} */
2364
2393
  const finalNames = new Map();
2365
2394
  const source = /** @type {ReplaceSource} */ (info.source);
@@ -2442,7 +2471,7 @@ class ConcatenatedModule extends Module {
2442
2471
  unusedExports.add(name);
2443
2472
  continue;
2444
2473
  }
2445
- if (used instanceof InlinedUsedName) {
2474
+ if (isInlinedUsedName(used)) {
2446
2475
  inlinedExports.add(name);
2447
2476
  continue;
2448
2477
  }
@@ -2565,7 +2594,7 @@ class ConcatenatedModule extends Module {
2565
2594
  if (exportInfo.provided === false) continue;
2566
2595
  const usedName = exportInfo.getUsedName(undefined, runtime);
2567
2596
  if (!usedName) continue;
2568
- if (usedName instanceof InlinedUsedName) {
2597
+ if (isInlinedUsedName(usedName)) {
2569
2598
  nsObj.push(
2570
2599
  `\n ${propertyName(
2571
2600
  exportInfo.name
@@ -2646,7 +2675,7 @@ ${defineGetters}`
2646
2675
  for (const exportInfo of exportsInfo.orderedExports) {
2647
2676
  if (exportInfo.provided === false) continue;
2648
2677
  const usedName = exportInfo.getUsedName(undefined, runtime);
2649
- if (usedName && !(usedName instanceof InlinedUsedName)) {
2678
+ if (usedName && !isInlinedUsedName(usedName)) {
2650
2679
  const finalName = getFinalName(
2651
2680
  moduleGraph,
2652
2681
  info,
@@ -2716,14 +2745,26 @@ ${defineGetters}`
2716
2745
  for (const info of wrappedInfos) {
2717
2746
  if (info.type === "concatenated") {
2718
2747
  runtimeRequirements.add(RuntimeGlobals.concatenationWrap);
2748
+ const bodyRuntimeRequirements =
2749
+ /** @type {ReadOnlyRuntimeRequirements} */
2750
+ (info.runtimeRequirements);
2719
2751
  result.add(
2720
2752
  `\n// MODULE: ${info.module.readableIdentifier(
2721
2753
  requestShortener
2722
2754
  )}\nvar ${info.namespaceFnName} = /*#__PURE__*/${
2723
2755
  RuntimeGlobals.concatenationWrap
2724
- }(function(${info.module.moduleArgument}, ${
2725
- info.module.exportsArgument
2726
- }) {\n`
2756
+ }(${runtimeTemplate.moduleFactoryFnHeader({
2757
+ module: info.module,
2758
+ // the trailing `module.exports` assignment below reads it
2759
+ needModule:
2760
+ Boolean(info.namespaceExportSymbol) ||
2761
+ bodyRuntimeRequirements.has(RuntimeGlobals.module),
2762
+ needExports: bodyRuntimeRequirements.has(RuntimeGlobals.exports),
2763
+ needRequire: false,
2764
+ needThisAsExports: bodyRuntimeRequirements.has(
2765
+ RuntimeGlobals.thisAsExports
2766
+ )
2767
+ })}\n`
2727
2768
  );
2728
2769
  result.add(/** @type {ReplaceSource} */ (info.source));
2729
2770
  // A generated body binds its value to a local rather than writing
@@ -2777,9 +2818,7 @@ ${defineGetters}`
2777
2818
  if (!info.wrapped) {
2778
2819
  const source = namespaceObjectSources.get(info);
2779
2820
  if (source) result.add(source);
2780
- const escapeSource = escapeNamespaceObjectSources.get(
2781
- /** @type {ConcatenatedModuleInfo} */ (info)
2782
- );
2821
+ const escapeSource = escapeNamespaceObjectSources.get(info);
2783
2822
  if (escapeSource) result.add(escapeSource);
2784
2823
  }
2785
2824
  } else if (info.type === "external" && info.deferred) {
@@ -2810,7 +2849,7 @@ ${defineGetters}`
2810
2849
  result.add(
2811
2850
  `\n// DEFERRED EXTERNAL MODULE: ${info.module.readableIdentifier(
2812
2851
  requestShortener
2813
- )}\nvar ${info.deferredName} = ${loader};`
2852
+ )}\nvar ${info.deferredName} = ${runtimeTemplate.sideEffectsAnnotation()}${loader};`
2814
2853
  );
2815
2854
  if (info.deferredNamespaceObjectUsed) {
2816
2855
  runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
@@ -2924,7 +2963,10 @@ ${defineGetters}`
2924
2963
  // External module bindings may be wrapped in
2925
2964
  // runtime-condition `if` blocks but referenced outside,
2926
2965
  // so they must remain function-scoped (`var`).
2927
- const required = `__webpack_require__(${moduleId})`;
2966
+ const required = `${runtimeTemplate.moduleSideEffectsAnnotation(
2967
+ info.module,
2968
+ moduleGraph
2969
+ )}__webpack_require__(${moduleId})`;
2928
2970
 
2929
2971
  // The wrapping happens per reference, so only the helper has
2930
2972
  // to be declared here.
@@ -3058,123 +3100,92 @@ ${defineGetters}`
3058
3100
  codeGenerationResults,
3059
3101
  usedNames
3060
3102
  ) {
3061
- if (info.type === "concatenated") {
3062
- const m = info.module;
3063
- if (info.wrapped) {
3064
- // the wrapper isolates the body's top-level declarations, so only a
3065
- // concatenation scope is needed, rewriting in-scope `require()` targets.
3066
- // Stage 2 claims its identifiers textually, in place of that analysis.
3067
- const concatenationScope = new ConcatenationScope(
3068
- modulesMap,
3069
- info,
3070
- usedNames
3071
- );
3072
- info.concatenationScope = concatenationScope;
3073
- const codeGenResult = m.codeGeneration({
3074
- dependencyTemplates,
3075
- runtimeTemplate,
3076
- moduleGraph,
3077
- chunkGraph,
3078
- runtime,
3079
- runtimes,
3080
- concatenationScope,
3081
- codeGenerationResults,
3082
- sourceTypes: JAVASCRIPT_TYPES
3083
- });
3084
- const source =
3085
- /** @type {Source} */
3086
- (codeGenResult.sources.get(JAVASCRIPT_TYPE));
3087
- const data = codeGenResult.data;
3088
- info.runtimeRequirements =
3089
- /** @type {ReadOnlyRuntimeRequirements} */
3090
- (codeGenResult.runtimeRequirements);
3091
- info.internalSource = source;
3092
- info.source = new ReplaceSource(source);
3093
- info.chunkInitFragments = data && data.get("chunkInitFragments");
3094
- } else {
3095
- try {
3096
- // Create a concatenation scope to track and capture information
3097
- const concatenationScope = new ConcatenationScope(
3098
- modulesMap,
3099
- info,
3100
- usedNames
3101
- );
3103
+ if (info.type !== "concatenated") return;
3104
+ const m = info.module;
3105
+ try {
3106
+ // Create a concatenation scope to track and capture information
3107
+ const concatenationScope = new ConcatenationScope(
3108
+ modulesMap,
3109
+ info,
3110
+ usedNames
3111
+ );
3102
3112
 
3103
- // Not cached: Compilation memoizes the outer codeGeneration per
3104
- // (module, runtime), so inner generation never recomputes usefully.
3105
- const codeGenResult = m.codeGeneration({
3106
- dependencyTemplates,
3107
- runtimeTemplate,
3108
- moduleGraph,
3109
- chunkGraph,
3110
- runtime,
3111
- runtimes,
3112
- concatenationScope,
3113
- codeGenerationResults,
3114
- sourceTypes: JAVASCRIPT_TYPES
3115
- });
3116
- const source =
3117
- /** @type {Source} */
3118
- (codeGenResult.sources.get(JAVASCRIPT_TYPE));
3119
- const data = codeGenResult.data;
3120
- const chunkInitFragments = data && data.get("chunkInitFragments");
3121
- const code = source.source().toString();
3122
-
3123
- /** @type {Program} */
3124
- let ast;
3125
-
3126
- try {
3127
- const { experiments } = this.compilation.options;
3128
-
3129
- ({ ast } = JavascriptParser._parse(
3130
- code,
3131
- {
3132
- sourceType: "module",
3133
- ranges: true,
3134
- // generated code contains phase imports when the experiments are on
3135
- importPhases: Boolean(
3136
- experiments.deferImport || experiments.sourceImport
3137
- )
3138
- },
3139
- JavascriptParser._getModuleParseFunction(this.compilation, m)
3140
- ));
3141
- } catch (_err) {
3142
- const err =
3143
- /** @type {Error & { loc?: { line: number, column: number } }} */
3144
- (_err);
3145
- if (
3146
- err.loc &&
3147
- typeof err.loc === "object" &&
3148
- typeof err.loc.line === "number"
3149
- ) {
3150
- const lineNumber = err.loc.line;
3151
- const lines = code.split("\n");
3152
- err.message += `\n| ${lines
3153
- .slice(Math.max(0, lineNumber - 3), lineNumber + 2)
3154
- .join("\n| ")}`;
3155
- }
3156
- throw err;
3157
- }
3158
- const analysis = analyzeScope(ast);
3159
- const resultSource = new ReplaceSource(source);
3160
- info.runtimeRequirements =
3161
- /** @type {ReadOnlyRuntimeRequirements} */
3162
- (codeGenResult.runtimeRequirements);
3163
- info.ast = ast;
3164
- info.internalSource = source;
3165
- info.source = resultSource;
3166
- info.chunkInitFragments = chunkInitFragments;
3167
- info.globalScope = analysis.globalScope;
3168
- info.moduleScope = analysis.moduleScope;
3169
- info.unresolvedReferences = analysis.unresolvedReferences;
3170
- info.concatenationScope = concatenationScope;
3171
- } catch (err) {
3172
- /** @type {Error} */
3173
- (err).message +=
3174
- `\nwhile analyzing module ${m.identifier()} for concatenation`;
3175
- throw err;
3113
+ // Not cached: Compilation memoizes the outer codeGeneration per
3114
+ // (module, runtime), so inner generation never recomputes usefully.
3115
+ const codeGenResult = m.codeGeneration({
3116
+ dependencyTemplates,
3117
+ runtimeTemplate,
3118
+ moduleGraph,
3119
+ chunkGraph,
3120
+ runtime,
3121
+ runtimes,
3122
+ concatenationScope,
3123
+ codeGenerationResults,
3124
+ sourceTypes: JAVASCRIPT_TYPES
3125
+ });
3126
+ const source =
3127
+ /** @type {Source} */
3128
+ (codeGenResult.sources.get(JAVASCRIPT_TYPE));
3129
+ const data = codeGenResult.data;
3130
+ const chunkInitFragments = data && data.get("chunkInitFragments");
3131
+ const code = source.source().toString();
3132
+
3133
+ /** @type {Program} */
3134
+ let ast;
3135
+
3136
+ try {
3137
+ const { experiments } = this.compilation.options;
3138
+
3139
+ ({ ast } = JavascriptParser._parse(
3140
+ code,
3141
+ {
3142
+ // a wrapped CommonJS body may `return` at its top level
3143
+ sourceType: info.wrapped ? "auto" : "module",
3144
+ ranges: true,
3145
+ // generated code contains phase imports when the experiments are on
3146
+ importPhases: Boolean(
3147
+ experiments.deferImport || experiments.sourceImport
3148
+ )
3149
+ },
3150
+ JavascriptParser._getModuleParseFunction(this.compilation, m)
3151
+ ));
3152
+ } catch (_err) {
3153
+ const err =
3154
+ /** @type {Error & { loc?: { line: number, column: number } }} */
3155
+ (_err);
3156
+ if (
3157
+ err.loc &&
3158
+ typeof err.loc === "object" &&
3159
+ typeof err.loc.line === "number"
3160
+ ) {
3161
+ const lineNumber = err.loc.line;
3162
+ const lines = code.split("\n");
3163
+ err.message += `\n| ${lines
3164
+ .slice(Math.max(0, lineNumber - 3), lineNumber + 2)
3165
+ .join("\n| ")}`;
3176
3166
  }
3167
+ throw err;
3177
3168
  }
3169
+ const analysis = analyzeScope(ast);
3170
+ info.runtimeRequirements =
3171
+ /** @type {ReadOnlyRuntimeRequirements} */
3172
+ (codeGenResult.runtimeRequirements);
3173
+ info.internalSource = source;
3174
+ info.source = new ReplaceSource(source);
3175
+ info.chunkInitFragments = chunkInitFragments;
3176
+ info.unresolvedReferences = analysis.unresolvedReferences;
3177
+ info.concatenationScope = concatenationScope;
3178
+ // the wrapper isolates the body's declarations, so [3] renames nothing in
3179
+ // it and its scopes are not kept; [2] claims its identifiers textually
3180
+ if (info.wrapped) return;
3181
+ info.shorthandIdentifierStarts = analysis.shorthandIdentifierStarts;
3182
+ info.globalScope = analysis.globalScope;
3183
+ info.moduleScope = analysis.moduleScope;
3184
+ } catch (err) {
3185
+ /** @type {Error} */
3186
+ (err).message +=
3187
+ `\nwhile analyzing module ${m.identifier()} for concatenation`;
3188
+ throw err;
3178
3189
  }
3179
3190
  }
3180
3191
 
@@ -3204,7 +3215,7 @@ ${defineGetters}`
3204
3215
  module: info.module,
3205
3216
  index,
3206
3217
  namespaceFnName: undefined,
3207
- ast: undefined,
3218
+ shorthandIdentifierStarts: undefined,
3208
3219
  chunkInitFragments: undefined,
3209
3220
  internalSource: undefined,
3210
3221
  runtimeRequirements: undefined,
@@ -3321,13 +3332,10 @@ ${defineGetters}`
3321
3332
  * @returns {ConcatenatedModule} ConcatenatedModule
3322
3333
  */
3323
3334
  static deserialize(context) {
3324
- const obj = new ConcatenatedModule({
3325
- identifier: /** @type {EXPECTED_ANY} */ (undefined),
3326
- rootModule: /** @type {EXPECTED_ANY} */ (undefined),
3327
- modules: /** @type {EXPECTED_ANY} */ (undefined),
3328
- runtime: undefined,
3329
- compilation: /** @type {EXPECTED_ANY} */ (undefined)
3330
- });
3335
+ const obj = new ConcatenatedModule(
3336
+ // every field is restored by `deserialize` and `updateCacheModule`
3337
+ /** @type {ConstructorParameters<typeof ConcatenatedModule>[0]} */ ({})
3338
+ );
3331
3339
  obj.deserialize(context);
3332
3340
  return obj;
3333
3341
  }
@@ -3345,6 +3353,9 @@ ConcatenatedModule.getCompilationHooks = createHooksRegistry(
3345
3353
 
3346
3354
  makeSerializable(ConcatenatedModule, "webpack/lib/optimize/ConcatenatedModule");
3347
3355
 
3356
+ /** @type {Set<keyof ModuleKinds>} */
3357
+ ConcatenatedModule.KINDS = new Set([...Module.KINDS, "concatenated"]);
3358
+
3348
3359
  /** @type {WeakMap<Compilation, WeakMap<Module, ConcatenatedModule>>} */
3349
3360
  const absorbedBy = new WeakMap();
3350
3361
 
@@ -3361,7 +3372,7 @@ ConcatenatedModule.getChunkGraphModule = (compilation, module) => {
3361
3372
  if (map === undefined) {
3362
3373
  map = new WeakMap();
3363
3374
  for (const candidate of compilation.modules) {
3364
- if (candidate instanceof ConcatenatedModule) {
3375
+ if (candidate.is("concatenated")) {
3365
3376
  for (const inner of candidate._modules) {
3366
3377
  map.set(inner, candidate);
3367
3378
  }