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