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
@@ -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
 
@@ -558,12 +558,13 @@ const getFinalBinding = (
558
558
  case "default":
559
559
  exportName = exportName.slice(1);
560
560
  if (deferred) {
561
- // `ns.default` for a deferred default-with-named external
562
- // module must read through the optimized `.a` getter
563
- // (which lazily evaluates the module and returns its
564
- // exports), not the proxy namespace itself — otherwise
565
- // `typeof ns.default` / `ns.default instanceof X`
566
- // observe the proxy instead of the actual default.
561
+ // WHY: `ns.default` for a deferred default-with-named external
562
+ // module must read through the optimized `.a` getter, which
563
+ // evaluates the
564
+ // module lazily and returns its exports, rather than through the
565
+ // proxy namespace — otherwise `typeof ns.default` and
566
+ // `ns.default instanceof X` observe the proxy, not the actual
567
+ // default.
567
568
  return {
568
569
  info,
569
570
  rawName: `${info.deferredName}.a`,
@@ -602,10 +603,9 @@ const getFinalBinding = (
602
603
  };
603
604
  }
604
605
  if (deferred) {
605
- // As with default-with-named above, `ns.default` for a
606
- // deferred default-only external must read through the
607
- // optimized `.a` getter so that `typeof` / `instanceof`
608
- // observe the actual default value rather than the proxy.
606
+ // As with default-with-named above, a deferred default-only
607
+ // external reads through the `.a` getter, so `typeof` and
608
+ // `instanceof` see the value rather than the proxy.
609
609
  return {
610
610
  info,
611
611
  rawName: `${info.deferredName}.a`,
@@ -756,13 +756,12 @@ 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
- // Render the inlined literal only (e.g. `"str"`), not its property
763
- // suffix: that suffix is returned in `ids` and appended once by
764
- // getFinalName. Using `usedName.render()` would emit it here too,
765
- // duplicating the access (e.g. `"str".a.a`).
762
+ // Render the inlined literal only, not its property suffix: that
763
+ // comes back in `ids` and getFinalName appends it once, so emitting
764
+ // it here too would duplicate the access.
766
765
  rawName: usedName.render(
767
766
  Template.toNormalComment(
768
767
  `inlined export ${propertyAccess(exportName)}`
@@ -799,7 +798,7 @@ const getFinalBinding = (
799
798
  const usedName = moduleGraph
800
799
  .getExportsInfo(target.module)
801
800
  .getUsedName([...target.export, ...exportName.slice(1)], runtime);
802
- if (usedName instanceof InlinedUsedName) {
801
+ if (isInlinedUsedName(usedName)) {
803
802
  return {
804
803
  info,
805
804
  // Literal only; suffix is appended once via `ids` (see directExport branch).
@@ -822,9 +821,16 @@ const getFinalBinding = (
822
821
  ` * ${info.type} ${m.readableIdentifier(requestShortener)}`
823
822
  ).join("\n")}`
824
823
  );
825
- }
826
- if (reexport) {
824
+ } else if (reexport) {
827
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
+
828
834
  return getFinalBinding(
829
835
  moduleGraph,
830
836
  /** @type {ModuleInfo} */ (refInfo),
@@ -841,7 +847,7 @@ const getFinalBinding = (
841
847
  /** @type {BuildMeta} */
842
848
  (info.module.buildMeta).strictHarmonyModule,
843
849
  asiSafe,
844
- false,
850
+ moduleExportsAccess,
845
851
  alreadyVisited
846
852
  );
847
853
  }
@@ -859,7 +865,7 @@ const getFinalBinding = (
859
865
  }
860
866
  // an inlined export never reaches the exports object, so render the
861
867
  // literal instead of reading the namespace
862
- if (usedName instanceof InlinedUsedName) {
868
+ if (isInlinedUsedName(usedName)) {
863
869
  return {
864
870
  info,
865
871
  // Literal only; suffix is appended once via `ids` (see directExport branch).
@@ -896,7 +902,7 @@ const getFinalBinding = (
896
902
  exportName
897
903
  };
898
904
  }
899
- if (used instanceof InlinedUsedName) {
905
+ if (isInlinedUsedName(used)) {
900
906
  return {
901
907
  info,
902
908
  // Literal only; suffix is appended once via `ids` (see directExport branch).
@@ -1027,7 +1033,6 @@ const getFinalName = (
1027
1033
 
1028
1034
  /**
1029
1035
  * @typedef {object} ConcatenateModuleHooks
1030
- * @property {SyncBailHook<[ConcatenatedModule, RuntimeSpec[], string, Record<string, string>], boolean>} onDemandExportsGeneration
1031
1036
  * @property {SyncBailHook<[Partial<ConcatenatedModuleInfo>, ConcatenatedModuleInfo], boolean | void>} concatenatedModuleInfo
1032
1037
  */
1033
1038
 
@@ -1132,6 +1137,22 @@ class ConcatenatedModule extends Module {
1132
1137
  return [...this._modules];
1133
1138
  }
1134
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
+
1135
1156
  /**
1136
1157
  * Returns the unique identifier used to reference this module.
1137
1158
  * @returns {string} a unique identifier of the module
@@ -1244,10 +1265,9 @@ class ConcatenatedModule extends Module {
1244
1265
  this.dependencies.push(d);
1245
1266
  }
1246
1267
  }
1247
- // populate codeGenerationDependencies — the inner modules'
1248
- // templates are applied during ConcatenatedModule.codeGeneration,
1249
- // so the referenced modules must have been code-generated by then.
1250
- // Skip references that point back into the concat set itself.
1268
+ // populate codeGenerationDependencies: the inner templates are applied
1269
+ // during this module's own codeGeneration, so what they reference must be
1270
+ // generated by then. References back into the concat set are skipped.
1251
1271
  if (m.codeGenerationDependencies !== undefined) {
1252
1272
  for (const d of m.codeGenerationDependencies) {
1253
1273
  const referenced =
@@ -1371,8 +1391,13 @@ class ConcatenatedModule extends Module {
1371
1391
  connections.push(c);
1372
1392
  }
1373
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
+ }
1374
1399
  /**
1375
- * @type {{ connection: ModuleGraphConnection, sourceOrder: number, rangeStart: number | undefined, defer?: boolean }[]}
1400
+ * @type {{ connection: ModuleGraphConnection, sourceOrder: number, rangeStart: number | undefined, dependencyIndex: number, defer?: boolean }[]}
1376
1401
  */
1377
1402
  const references = connections
1378
1403
  .filter((connection) => {
@@ -1399,17 +1424,19 @@ class ConcatenatedModule extends Module {
1399
1424
  })
1400
1425
  .map((connection) => {
1401
1426
  const dep =
1402
- /** @type {HarmonyImportDependency} */
1427
+ /** @type {ESMImportDependency} */
1403
1428
  (connection.dependency);
1429
+ const dependencyIndex = dependencyIndices.get(dep);
1404
1430
  return {
1405
1431
  connection,
1406
- // A require() edge carries no sourceOrder; Infinity sorts it last,
1407
- // matching the low-priority sentinel. NaN must not be used here:
1408
- // compareNumbers returns 0 against every number, which makes the
1409
- // comparator non-transitive and the order depend on insertion order.
1432
+ // A require() edge carries no sourceOrder, and Infinity sorts it
1433
+ // last. Not NaN: `compareNumbers` returns 0 against every number,
1434
+ // which makes the comparator non-transitive.
1410
1435
  sourceOrder:
1411
1436
  typeof dep.sourceOrder === "number" ? dep.sourceOrder : Infinity,
1412
1437
  rangeStart: dep.range && dep.range[0],
1438
+ dependencyIndex:
1439
+ dependencyIndex === undefined ? Infinity : dependencyIndex,
1413
1440
  defer: ImportPhaseUtils.isDefer(dep.phase)
1414
1441
  };
1415
1442
  });
@@ -1428,8 +1455,11 @@ class ConcatenatedModule extends Module {
1428
1455
  * If there is no reexport, we have the same source.
1429
1456
  * If there is reexport, but module has side effects, this will lead to reexport module only.
1430
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.
1431
1459
  */
1432
- references.sort(concatComparators(bySourceOrder, byRangeStart));
1460
+ references.sort(
1461
+ concatComparators(bySourceOrder, byRangeStart, byDependencyIndex)
1462
+ );
1433
1463
  /** @type {Map<Module, { connection: ModuleGraphConnection, runtimeCondition: RuntimeSpec | true, nonDeferAccess: NonDeferAccess }>} */
1434
1464
  const referencesMap = new Map();
1435
1465
  /** @type {Module[] | undefined} */
@@ -1443,12 +1473,11 @@ class ConcatenatedModule extends Module {
1443
1473
  const module = connection.module;
1444
1474
  if (targets === undefined) targets = [module];
1445
1475
  else if (!targets.includes(module)) targets.push(module);
1476
+ const dependency = connection.dependency;
1446
1477
  if (
1447
- [
1448
- CommonJsRequireDependency,
1449
- CommonJsFullRequireDependency,
1450
- CommonJsExportRequireDependency
1451
- ].some((Dep) => connection.dependency instanceof Dep)
1478
+ dependency !== null &&
1479
+ (isDependencyKind(dependency, "commonjs-require") ||
1480
+ isDependencyKind(dependency, "commonjs-export-require"))
1452
1481
  ) {
1453
1482
  wrappedModules.add(module);
1454
1483
  }
@@ -1704,40 +1733,38 @@ class ConcatenatedModule extends Module {
1704
1733
  }
1705
1734
  }
1706
1735
 
1707
- /*
1708
- * How the inner modules become one flat source. Stages [1]-[5] only mutate the
1709
- * per-module info records (names, ReplaceSource patches); stages [6]-[9] append
1710
- * to the single output ConcatSource, in exactly the order shown.
1711
- *
1712
- * _getModulesWithInfo() — ordered concatenation list + one info per module
1713
- * | (concatenated [+wrapped] | external | reference)
1714
- * v
1715
- * [1] ANALYSE — inner codeGeneration() per module, into a ConcatenationScope
1716
- * | plain -> ReplaceSource + ast + scope analysis
1717
- * | wrapped -> ReplaceSource only, body kept verbatim
1718
- * | external -> nothing yet, rendered as a require() below
1719
- * [2] RESERVE — free globals of the analysed bodies enter allUsedNames, so
1720
- * | renaming in [3] can't shadow them (a wrapped body is not analysed;
1721
- * | the reserved `__webpack_` prefix protects it)
1722
- * [3] RENAME — module-scope variables renamed inside the ReplaceSource, then
1723
- * | the generated names allocated: wrapper accessor, namespace object,
1724
- * | interop helpers, external import variable
1725
- * [4] LINK — __WEBPACK_MODULE_REFERENCE__ tokens replaced by their final
1726
- * | binding; through the ast for analysed bodies, textually for wrapped
1727
- * [5] COLLECT EXPORTS — root exports split into used / unused / inlined
1728
- * v
1729
- * ---- from here on everything is appended to the result ConcatSource ----
1730
- * |
1731
- * [6] EMIT EXPORTS — __esModule flag + exports getters, UNUSED/INLINED lists
1732
- * [7] BUILD NS — namespace object sources built as strings (not emitted yet)
1733
- * [8] DEFINE — everything that must exist before any body runs: namespace
1734
- * | objects, wrapper accessors (wrapped modules and wrapped externals),
1735
- * | deferred external loaders
1736
- * [9] EVALUATE — bodies in concatenation order: plain bodies inline, externals
1737
- * | as require(); a wrapped body stays behind its accessor
1738
- * v
1739
- * [10] RESULT — CodeGenerationResult { sources, data, runtimeRequirements }
1740
- */
1736
+ // WHY: how the inner modules become one flat source. Stages [1]-[5] only mutate
1737
+ // the per-module info records (names, ReplaceSource patches); stages [6]-[9]
1738
+ // append to the single output ConcatSource, in exactly the order shown.
1739
+ //
1740
+ // _getModulesWithInfo() — ordered concatenation list + one info per module
1741
+ // | (concatenated [+wrapped] | external | reference)
1742
+ // v
1743
+ // [1] ANALYSE — inner codeGeneration() per module, into a ConcatenationScope
1744
+ // | plain -> ReplaceSource + scope analysis
1745
+ // | wrapped -> ReplaceSource only, body kept verbatim
1746
+ // | external -> nothing yet, rendered as a require() below
1747
+ // [2] RESERVE — free globals of the analysed bodies enter allUsedNames, so
1748
+ // | renaming in [3] can't shadow them (a wrapped body is not analysed;
1749
+ // | the reserved `__webpack_` prefix protects it)
1750
+ // [3] RENAME — module-scope variables renamed inside the ReplaceSource, then
1751
+ // | the generated names allocated: wrapper accessor, namespace object,
1752
+ // | interop helpers, external import variable
1753
+ // [4] LINK — __WEBPACK_MODULE_REFERENCE__ tokens replaced by their final
1754
+ // | binding; through the scopes for analysed bodies, textually for wrapped
1755
+ // [5] COLLECT EXPORTS — root exports split into used / unused / inlined
1756
+ // v
1757
+ // ---- from here on everything is appended to the result ConcatSource ----
1758
+ // |
1759
+ // [6] EMIT EXPORTS — __esModule flag + exports getters, UNUSED/INLINED lists
1760
+ // [7] BUILD NS — namespace object sources built as strings (not emitted yet)
1761
+ // [8] DEFINE — everything that must exist before any body runs: namespace
1762
+ // | objects, wrapper accessors (wrapped modules and wrapped externals),
1763
+ // | deferred external loaders
1764
+ // [9] EVALUATE — bodies in concatenation order: plain bodies inline, externals
1765
+ // | as require(); a wrapped body stays behind its accessor
1766
+ // v
1767
+ // [10] RESULT — CodeGenerationResult { sources, data, runtimeRequirements }
1741
1768
  /**
1742
1769
  * Generates code and runtime requirements for this module.
1743
1770
  * @param {CodeGenerationContext} context context for code generation
@@ -1803,8 +1830,8 @@ class ConcatenatedModule extends Module {
1803
1830
  /** @type {Set<ConcatenatedModuleInfo | ExternalModuleInfo>} */
1804
1831
  const neededEscapeNamespaceObjects = new Set();
1805
1832
 
1806
- // #region [1] ANALYSE: run each inner module's own codeGeneration; a
1807
- // 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]
1808
1835
  for (const info of moduleToInfoMap.values()) {
1809
1836
  this._analyseModule(
1810
1837
  moduleToInfoMap,
@@ -1868,7 +1895,7 @@ class ConcatenatedModule extends Module {
1868
1895
  for (const exportInfo of exportsInfo.orderedExports) {
1869
1896
  if (exportInfo.provided === false) continue;
1870
1897
  const usedName = exportInfo.getUsedName(undefined, runtime);
1871
- if (!usedName || usedName instanceof InlinedUsedName) continue;
1898
+ if (!usedName || isInlinedUsedName(usedName)) continue;
1872
1899
  if (usedName[usedName.length - 1] !== exportInfo.name) {
1873
1900
  mangled = true;
1874
1901
  break;
@@ -1901,8 +1928,18 @@ class ConcatenatedModule extends Module {
1901
1928
  )) {
1902
1929
  allUsedNames.add(name);
1903
1930
  }
1904
- // A wrapped body has no scope analysis, so its references are found
1905
- // 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
1906
1943
  // flags the interop objects it needs, and [3] allocates their names.
1907
1944
  /** @type {Set<string>} */
1908
1945
  const visitedReferences = new Set();
@@ -2108,10 +2145,9 @@ class ConcatenatedModule extends Module {
2108
2145
  switch (info.type) {
2109
2146
  case "concatenated": {
2110
2147
  if (info.wrapped) {
2111
- // A wrapped module declares exactly one shared-scope name: the
2112
- // lazy wrapper accessor holding its body. [2] claimed every
2113
- // identifier of that body, so findNewName avoids the ones that
2114
- // would shadow the accessor from inside it.
2148
+ // A wrapped module declares one shared-scope name, the lazy accessor
2149
+ // holding its body. Stage 2 claimed that body's identifiers, so
2150
+ // findNewName avoids the ones that would shadow it from inside.
2115
2151
  const namespaceFnName = findNewName(
2116
2152
  "namespaceFn",
2117
2153
  allUsedNames,
@@ -2139,26 +2175,14 @@ class ConcatenatedModule extends Module {
2139
2175
  for (const identifier of variable.identifiers) {
2140
2176
  allIdentifiers.add(identifier);
2141
2177
  }
2178
+ const shorthandStarts =
2179
+ /** @type {NonNullable<ConcatenatedModuleInfo["shorthandIdentifierStarts"]>} */
2180
+ (info.shorthandIdentifierStarts);
2142
2181
  for (const identifier of allIdentifiers) {
2143
2182
  const r = /** @type {Range} */ (identifier.range);
2144
- const path = getPathInAst(
2145
- /** @type {NonNullable<ConcatenatedModuleInfo["ast"]>} */
2146
- (info.ast),
2147
- identifier
2148
- );
2149
- if (path && path.length > 1) {
2150
- const maybeProperty =
2151
- path[1].type === "AssignmentPattern" &&
2152
- path[1].left === path[0]
2153
- ? path[2]
2154
- : path[1];
2155
- if (
2156
- maybeProperty.type === "Property" &&
2157
- maybeProperty.shorthand
2158
- ) {
2159
- source.insert(r[1], `: ${newName}`);
2160
- continue;
2161
- }
2183
+ if (shorthandStarts.has(r[0])) {
2184
+ source.insert(r[1], `: ${newName}`);
2185
+ continue;
2162
2186
  }
2163
2187
  source.replace(r[0], r[1] - 1, newName);
2164
2188
  }
@@ -2365,8 +2389,8 @@ class ConcatenatedModule extends Module {
2365
2389
  }
2366
2390
  }
2367
2391
  } else {
2368
- // Wrapped bodies are not re-parsed: find their reference tokens
2369
- // textually. [2] scanned the same source, so this reuses its result.
2392
+ // A wrapped body's reference tokens are found textually rather than
2393
+ // in its AST. [2] scanned the same source, so this reuses its result.
2370
2394
  /** @type {Map<string, string>} */
2371
2395
  const finalNames = new Map();
2372
2396
  const source = /** @type {ReplaceSource} */ (info.source);
@@ -2419,10 +2443,9 @@ class ConcatenatedModule extends Module {
2419
2443
  }
2420
2444
  // #endregion
2421
2445
 
2422
- // #region [5] COLLECT EXPORTS: split the root module's exports into used /
2423
- // unused / inlined. Used ones stay thunks — resolving one can still
2424
- // register a namespace object, which [7] must see
2425
- // Map with all root exposed used exports
2446
+ // #region [5] COLLECT EXPORTS: split the root module's exports into used,
2447
+ // unused and inlined. Used ones stay thunks, since resolving one can still
2448
+ // register a namespace object that stage 7 must see.
2426
2449
  /** @type {Map<string, (requestShortener: RequestShortener) => string>} */
2427
2450
  const exportsMap = new Map();
2428
2451
 
@@ -2450,7 +2473,7 @@ class ConcatenatedModule extends Module {
2450
2473
  unusedExports.add(name);
2451
2474
  continue;
2452
2475
  }
2453
- if (used instanceof InlinedUsedName) {
2476
+ if (isInlinedUsedName(used)) {
2454
2477
  inlinedExports.add(name);
2455
2478
  continue;
2456
2479
  }
@@ -2500,6 +2523,8 @@ class ConcatenatedModule extends Module {
2500
2523
  shouldAddHarmonyFlag = true;
2501
2524
  }
2502
2525
 
2526
+ /** @type {string | undefined} */
2527
+ let onDemandExportsSource;
2503
2528
  // define exports
2504
2529
  if (exportsMap.size > 0) {
2505
2530
  /** @type {string[]} */
@@ -2530,17 +2555,10 @@ class ConcatenatedModule extends Module {
2530
2555
  this.exportsArgument
2531
2556
  }, {${definitions.join(",")}\n});\n`;
2532
2557
 
2533
- const { onDemandExportsGeneration } =
2534
- ConcatenatedModule.getCompilationHooks(this.compilation);
2535
-
2536
- if (
2537
- !onDemandExportsGeneration.call(
2538
- this,
2539
- runtimes,
2540
- `${harmonyFlagSource}${exportsSource}`,
2541
- exportsFinalName
2542
- )
2543
- ) {
2558
+ const meta = moduleGraph.getMetaIfExisting(this);
2559
+ if (meta !== undefined && meta.onDemandExports === true) {
2560
+ onDemandExportsSource = `${harmonyFlagSource}${exportsSource}`;
2561
+ } else {
2544
2562
  result.add(harmonyFlagSource);
2545
2563
  result.add(exportsSource);
2546
2564
  }
@@ -2562,13 +2580,12 @@ class ConcatenatedModule extends Module {
2562
2580
  // #endregion
2563
2581
 
2564
2582
  // #region [7] BUILD NS: namespace object sources are built as strings here
2565
- // and emitted by [8]; an external's is emitted next to its import variable
2566
- // or accessor instead, which is defined later.
2567
- //
2568
- // generate decoupled namespace objects for escaping mangled namespaces:
2569
- // same getters as the regular namespace object, but keyed by the original
2570
- // export names so untracked access by name keeps working. Done before the
2571
- // regular namespace objects so any nested namespace they pull in is built.
2583
+ // and emitted by stage 8; an external's goes next to its import variable or
2584
+ // accessor instead, defined later.
2585
+
2586
+ // Decoupled namespace objects for escaping mangled namespaces carry the same
2587
+ // getters keyed by the original export names, so untracked access by name
2588
+ // keeps working. Built first, so any nested namespace they pull in exists.
2572
2589
  /** @type {Map<ConcatenatedModuleInfo | ExternalModuleInfo, string>} */
2573
2590
  const escapeNamespaceObjectSources = new Map();
2574
2591
  for (const info of neededEscapeNamespaceObjects) {
@@ -2579,7 +2596,7 @@ class ConcatenatedModule extends Module {
2579
2596
  if (exportInfo.provided === false) continue;
2580
2597
  const usedName = exportInfo.getUsedName(undefined, runtime);
2581
2598
  if (!usedName) continue;
2582
- if (usedName instanceof InlinedUsedName) {
2599
+ if (isInlinedUsedName(usedName)) {
2583
2600
  nsObj.push(
2584
2601
  `\n ${propertyName(
2585
2602
  exportInfo.name
@@ -2660,7 +2677,7 @@ ${defineGetters}`
2660
2677
  for (const exportInfo of exportsInfo.orderedExports) {
2661
2678
  if (exportInfo.provided === false) continue;
2662
2679
  const usedName = exportInfo.getUsedName(undefined, runtime);
2663
- if (usedName && !(usedName instanceof InlinedUsedName)) {
2680
+ if (usedName && !isInlinedUsedName(usedName)) {
2664
2681
  const finalName = getFinalName(
2665
2682
  moduleGraph,
2666
2683
  info,
@@ -2730,20 +2747,31 @@ ${defineGetters}`
2730
2747
  for (const info of wrappedInfos) {
2731
2748
  if (info.type === "concatenated") {
2732
2749
  runtimeRequirements.add(RuntimeGlobals.concatenationWrap);
2750
+ const bodyRuntimeRequirements =
2751
+ /** @type {ReadOnlyRuntimeRequirements} */
2752
+ (info.runtimeRequirements);
2733
2753
  result.add(
2734
2754
  `\n// MODULE: ${info.module.readableIdentifier(
2735
2755
  requestShortener
2736
2756
  )}\nvar ${info.namespaceFnName} = /*#__PURE__*/${
2737
2757
  RuntimeGlobals.concatenationWrap
2738
- }(function(${info.module.moduleArgument}, ${
2739
- info.module.exportsArgument
2740
- }) {\n`
2758
+ }(${runtimeTemplate.moduleFactoryFnHeader({
2759
+ module: info.module,
2760
+ // the trailing `module.exports` assignment below reads it
2761
+ needModule:
2762
+ Boolean(info.namespaceExportSymbol) ||
2763
+ bodyRuntimeRequirements.has(RuntimeGlobals.module),
2764
+ needExports: bodyRuntimeRequirements.has(RuntimeGlobals.exports),
2765
+ needRequire: false,
2766
+ needThisAsExports: bodyRuntimeRequirements.has(
2767
+ RuntimeGlobals.thisAsExports
2768
+ )
2769
+ })}\n`
2741
2770
  );
2742
2771
  result.add(/** @type {ReplaceSource} */ (info.source));
2743
- // A generated body (json, asset, html) binds its value to a local
2744
- // instead of writing exports; hand that local to the accessor. The
2745
- // name is verbatim: a wrapped body is not scope-analysed, so it keeps
2746
- // the reserved symbol the generator registered.
2772
+ // A generated body binds its value to a local rather than writing
2773
+ // exports, so hand that local to the accessor. The name is verbatim: a
2774
+ // wrapped body is not scope-analysed and keeps the reserved symbol.
2747
2775
  result.add(
2748
2776
  info.namespaceExportSymbol
2749
2777
  ? `\n${info.module.moduleArgument}.exports = ${info.namespaceExportSymbol};\n});\n`
@@ -2825,7 +2853,7 @@ ${defineGetters}`
2825
2853
  result.add(
2826
2854
  `\n// DEFERRED EXTERNAL MODULE: ${info.module.readableIdentifier(
2827
2855
  requestShortener
2828
- )}\nvar ${info.deferredName} = ${loader};`
2856
+ )}\nvar ${info.deferredName} = ${runtimeTemplate.sideEffectsAnnotation()}${loader};`
2829
2857
  );
2830
2858
  if (info.deferredNamespaceObjectUsed) {
2831
2859
  runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
@@ -2939,7 +2967,10 @@ ${defineGetters}`
2939
2967
  // External module bindings may be wrapped in
2940
2968
  // runtime-condition `if` blocks but referenced outside,
2941
2969
  // so they must remain function-scoped (`var`).
2942
- const required = `__webpack_require__(${moduleId})`;
2970
+ const required = `${runtimeTemplate.moduleSideEffectsAnnotation(
2971
+ info.module,
2972
+ moduleGraph
2973
+ )}__webpack_require__(${moduleId})`;
2943
2974
 
2944
2975
  // The wrapping happens per reference, so only the helper has
2945
2976
  // to be declared here.
@@ -2980,9 +3011,8 @@ ${defineGetters}`
2980
3011
  throw new Error(`Unsupported concatenation entry type ${info.type}`);
2981
3012
  }
2982
3013
  // Building a wrapped module's interop object here would evaluate its body
2983
- // at the top level and break require() cycles, so defer it behind a
2984
- // hoisted function. The memo lives on the function object: it keeps the
2985
- // identity stable without claiming a second top-level name.
3014
+ // at the top level and break require() cycles, so it is deferred behind a
3015
+ // hoisted function, memoized on the function object itself.
2986
3016
  /**
2987
3017
  * @param {string} interopName interop variable name
2988
3018
  * @param {string} expr interop object expression
@@ -3034,6 +3064,10 @@ ${defineGetters}`
3034
3064
  }
3035
3065
  data.set("topLevelDeclarations", topLevelDeclarations);
3036
3066
  data.set("freeNames", freeNames);
3067
+ if (onDemandExportsSource !== undefined) {
3068
+ data.set("exportsSource", onDemandExportsSource);
3069
+ data.set("exportsFinalName", exportsFinalName);
3070
+ }
3037
3071
 
3038
3072
  /** @type {CodeGenerationResult} */
3039
3073
  const resultEntry = {
@@ -3070,124 +3104,92 @@ ${defineGetters}`
3070
3104
  codeGenerationResults,
3071
3105
  usedNames
3072
3106
  ) {
3073
- if (info.type === "concatenated") {
3074
- const m = info.module;
3075
- if (info.wrapped) {
3076
- // the wrapper isolates the body's top-level declarations, so no
3077
- // renaming is needed -- only a concatenation scope, to rewrite in-scope
3078
- // `require()` targets to accessor references. [2] claims its identifiers
3079
- // textually in place of the scope analysis skipped here.
3080
- const concatenationScope = new ConcatenationScope(
3081
- modulesMap,
3082
- info,
3083
- usedNames
3084
- );
3085
- info.concatenationScope = concatenationScope;
3086
- const codeGenResult = m.codeGeneration({
3087
- dependencyTemplates,
3088
- runtimeTemplate,
3089
- moduleGraph,
3090
- chunkGraph,
3091
- runtime,
3092
- runtimes,
3093
- concatenationScope,
3094
- codeGenerationResults,
3095
- sourceTypes: JAVASCRIPT_TYPES
3096
- });
3097
- const source =
3098
- /** @type {Source} */
3099
- (codeGenResult.sources.get(JAVASCRIPT_TYPE));
3100
- const data = codeGenResult.data;
3101
- info.runtimeRequirements =
3102
- /** @type {ReadOnlyRuntimeRequirements} */
3103
- (codeGenResult.runtimeRequirements);
3104
- info.internalSource = source;
3105
- info.source = new ReplaceSource(source);
3106
- info.chunkInitFragments = data && data.get("chunkInitFragments");
3107
- } else {
3108
- try {
3109
- // Create a concatenation scope to track and capture information
3110
- const concatenationScope = new ConcatenationScope(
3111
- modulesMap,
3112
- info,
3113
- usedNames
3114
- );
3107
+ if (info.type !== "concatenated") return;
3108
+ const m = info.module;
3109
+ try {
3110
+ // Create a concatenation scope to track and capture information
3111
+ const concatenationScope = new ConcatenationScope(
3112
+ modulesMap,
3113
+ info,
3114
+ usedNames
3115
+ );
3115
3116
 
3116
- // Not cached: Compilation memoizes the outer codeGeneration per
3117
- // (module, runtime), so inner generation never recomputes usefully.
3118
- const codeGenResult = m.codeGeneration({
3119
- dependencyTemplates,
3120
- runtimeTemplate,
3121
- moduleGraph,
3122
- chunkGraph,
3123
- runtime,
3124
- runtimes,
3125
- concatenationScope,
3126
- codeGenerationResults,
3127
- sourceTypes: JAVASCRIPT_TYPES
3128
- });
3129
- const source =
3130
- /** @type {Source} */
3131
- (codeGenResult.sources.get(JAVASCRIPT_TYPE));
3132
- const data = codeGenResult.data;
3133
- const chunkInitFragments = data && data.get("chunkInitFragments");
3134
- const code = source.source().toString();
3135
-
3136
- /** @type {Program} */
3137
- let ast;
3138
-
3139
- try {
3140
- const { experiments } = this.compilation.options;
3141
-
3142
- ({ ast } = JavascriptParser._parse(
3143
- code,
3144
- {
3145
- sourceType: "module",
3146
- ranges: true,
3147
- // generated code contains phase imports when the experiments are on
3148
- importPhases: Boolean(
3149
- experiments.deferImport || experiments.sourceImport
3150
- )
3151
- },
3152
- JavascriptParser._getModuleParseFunction(this.compilation, m)
3153
- ));
3154
- } catch (_err) {
3155
- const err =
3156
- /** @type {Error & { loc?: { line: number, column: number } }} */
3157
- (_err);
3158
- if (
3159
- err.loc &&
3160
- typeof err.loc === "object" &&
3161
- typeof err.loc.line === "number"
3162
- ) {
3163
- const lineNumber = err.loc.line;
3164
- const lines = code.split("\n");
3165
- err.message += `\n| ${lines
3166
- .slice(Math.max(0, lineNumber - 3), lineNumber + 2)
3167
- .join("\n| ")}`;
3168
- }
3169
- throw err;
3170
- }
3171
- const analysis = analyzeScope(ast);
3172
- const resultSource = new ReplaceSource(source);
3173
- info.runtimeRequirements =
3174
- /** @type {ReadOnlyRuntimeRequirements} */
3175
- (codeGenResult.runtimeRequirements);
3176
- info.ast = ast;
3177
- info.internalSource = source;
3178
- info.source = resultSource;
3179
- info.chunkInitFragments = chunkInitFragments;
3180
- info.globalScope = analysis.globalScope;
3181
- info.moduleScope = analysis.moduleScope;
3182
- info.unresolvedReferences = analysis.unresolvedReferences;
3183
- info.concatenationScope = concatenationScope;
3184
- } catch (err) {
3185
- /** @type {Error} */
3186
- (err).message +=
3187
- `\nwhile analyzing module ${m.identifier()} for concatenation`;
3188
- throw err;
3117
+ // Not cached: Compilation memoizes the outer codeGeneration per
3118
+ // (module, runtime), so inner generation never recomputes usefully.
3119
+ const codeGenResult = m.codeGeneration({
3120
+ dependencyTemplates,
3121
+ runtimeTemplate,
3122
+ moduleGraph,
3123
+ chunkGraph,
3124
+ runtime,
3125
+ runtimes,
3126
+ concatenationScope,
3127
+ codeGenerationResults,
3128
+ sourceTypes: JAVASCRIPT_TYPES
3129
+ });
3130
+ const source =
3131
+ /** @type {Source} */
3132
+ (codeGenResult.sources.get(JAVASCRIPT_TYPE));
3133
+ const data = codeGenResult.data;
3134
+ const chunkInitFragments = data && data.get("chunkInitFragments");
3135
+ const code = source.source().toString();
3136
+
3137
+ /** @type {Program} */
3138
+ let ast;
3139
+
3140
+ try {
3141
+ const { experiments } = this.compilation.options;
3142
+
3143
+ ({ ast } = JavascriptParser._parse(
3144
+ code,
3145
+ {
3146
+ // a wrapped CommonJS body may `return` at its top level
3147
+ sourceType: info.wrapped ? "auto" : "module",
3148
+ ranges: true,
3149
+ // generated code contains phase imports when the experiments are on
3150
+ importPhases: Boolean(
3151
+ experiments.deferImport || experiments.sourceImport
3152
+ )
3153
+ },
3154
+ JavascriptParser._getModuleParseFunction(this.compilation, m)
3155
+ ));
3156
+ } catch (_err) {
3157
+ const err =
3158
+ /** @type {Error & { loc?: { line: number, column: number } }} */
3159
+ (_err);
3160
+ if (
3161
+ err.loc &&
3162
+ typeof err.loc === "object" &&
3163
+ typeof err.loc.line === "number"
3164
+ ) {
3165
+ const lineNumber = err.loc.line;
3166
+ const lines = code.split("\n");
3167
+ err.message += `\n| ${lines
3168
+ .slice(Math.max(0, lineNumber - 3), lineNumber + 2)
3169
+ .join("\n| ")}`;
3189
3170
  }
3171
+ throw err;
3190
3172
  }
3173
+ const analysis = analyzeScope(ast);
3174
+ info.runtimeRequirements =
3175
+ /** @type {ReadOnlyRuntimeRequirements} */
3176
+ (codeGenResult.runtimeRequirements);
3177
+ info.internalSource = source;
3178
+ info.source = new ReplaceSource(source);
3179
+ info.chunkInitFragments = chunkInitFragments;
3180
+ info.unresolvedReferences = analysis.unresolvedReferences;
3181
+ info.concatenationScope = concatenationScope;
3182
+ // the wrapper isolates the body's declarations, so [3] renames nothing in
3183
+ // it and its scopes are not kept; [2] claims its identifiers textually
3184
+ if (info.wrapped) return;
3185
+ info.shorthandIdentifierStarts = analysis.shorthandIdentifierStarts;
3186
+ info.globalScope = analysis.globalScope;
3187
+ info.moduleScope = analysis.moduleScope;
3188
+ } catch (err) {
3189
+ /** @type {Error} */
3190
+ (err).message +=
3191
+ `\nwhile analyzing module ${m.identifier()} for concatenation`;
3192
+ throw err;
3191
3193
  }
3192
3194
  }
3193
3195
 
@@ -3217,7 +3219,7 @@ ${defineGetters}`
3217
3219
  module: info.module,
3218
3220
  index,
3219
3221
  namespaceFnName: undefined,
3220
- ast: undefined,
3222
+ shorthandIdentifierStarts: undefined,
3221
3223
  chunkInitFragments: undefined,
3222
3224
  internalSource: undefined,
3223
3225
  runtimeRequirements: undefined,
@@ -3334,13 +3336,10 @@ ${defineGetters}`
3334
3336
  * @returns {ConcatenatedModule} ConcatenatedModule
3335
3337
  */
3336
3338
  static deserialize(context) {
3337
- const obj = new ConcatenatedModule({
3338
- identifier: /** @type {EXPECTED_ANY} */ (undefined),
3339
- rootModule: /** @type {EXPECTED_ANY} */ (undefined),
3340
- modules: /** @type {EXPECTED_ANY} */ (undefined),
3341
- runtime: undefined,
3342
- compilation: /** @type {EXPECTED_ANY} */ (undefined)
3343
- });
3339
+ const obj = new ConcatenatedModule(
3340
+ // every field is restored by `deserialize` and `updateCacheModule`
3341
+ /** @type {ConstructorParameters<typeof ConcatenatedModule>[0]} */ ({})
3342
+ );
3344
3343
  obj.deserialize(context);
3345
3344
  return obj;
3346
3345
  }
@@ -3349,12 +3348,6 @@ ${defineGetters}`
3349
3348
  ConcatenatedModule.getCompilationHooks = createHooksRegistry(
3350
3349
  () =>
3351
3350
  /** @type {ConcatenateModuleHooks} */ ({
3352
- onDemandExportsGeneration: new SyncBailHook([
3353
- "module",
3354
- "runtimes",
3355
- "exportsFinalName",
3356
- "exportsSource"
3357
- ]),
3358
3351
  concatenatedModuleInfo: new SyncBailHook([
3359
3352
  "updatedInfo",
3360
3353
  "concatenatedModuleInfo"
@@ -3364,6 +3357,9 @@ ConcatenatedModule.getCompilationHooks = createHooksRegistry(
3364
3357
 
3365
3358
  makeSerializable(ConcatenatedModule, "webpack/lib/optimize/ConcatenatedModule");
3366
3359
 
3360
+ /** @type {Set<keyof ModuleKinds>} */
3361
+ ConcatenatedModule.KINDS = new Set([...Module.KINDS, "concatenated"]);
3362
+
3367
3363
  /** @type {WeakMap<Compilation, WeakMap<Module, ConcatenatedModule>>} */
3368
3364
  const absorbedBy = new WeakMap();
3369
3365
 
@@ -3380,7 +3376,7 @@ ConcatenatedModule.getChunkGraphModule = (compilation, module) => {
3380
3376
  if (map === undefined) {
3381
3377
  map = new WeakMap();
3382
3378
  for (const candidate of compilation.modules) {
3383
- if (candidate instanceof ConcatenatedModule) {
3379
+ if (candidate.is("concatenated")) {
3384
3380
  for (const inner of candidate._modules) {
3385
3381
  map.set(inner, candidate);
3386
3382
  }