@depup/webpack 5.109.0-depup.0 → 5.110.1-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -9,19 +9,29 @@ const InitFragment = require("../InitFragment");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const { propertyAccess } = require("../util/property");
11
11
  const {
12
- getConcatenatedExportAccess,
13
- handleDependencyBase
12
+ handleDependencyBase,
13
+ isThisBase,
14
+ isWorkerEntryThis
14
15
  } = require("./CommonJsDependencyHelpers");
15
16
  const NullDependency = require("./NullDependency");
16
17
 
17
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
18
- /** @typedef {import("../Dependency")} Dependency */
19
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
20
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
21
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
22
- /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
23
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
24
- /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
18
+ /** @import { ReplaceSource } from "webpack-sources" */
19
+ /**
20
+ * @import Dependency, {
21
+ * ExportsSpec,
22
+ * UpdateHashContext,
23
+ * ExportInfoName
24
+ * } from "../Dependency"
25
+ */
26
+ /** @import Hash from "../util/Hash" */
27
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
28
+ /** @import ModuleGraph from "../ModuleGraph" */
29
+ /** @import { Range } from "../javascript/JavascriptParser" */
30
+ /**
31
+ * @import {
32
+ * CommonJSDependencyBaseKeywords
33
+ * } from "./CommonJsDependencyHelpers"
34
+ */
25
35
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectDeserializerContext */
26
36
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectSerializerContext */
27
37
 
@@ -70,6 +80,26 @@ class CommonJsExportsDependency extends NullDependency {
70
80
  };
71
81
  }
72
82
 
83
+ /**
84
+ * Updates the hash with the data contributed by this instance.
85
+ * @param {Hash} hash hash to be updated
86
+ * @param {UpdateHashContext} context context
87
+ * @returns {void}
88
+ */
89
+ updateHash(hash, context) {
90
+ // a classic worker entry generates `this` as the global scope, so it must
91
+ // not share one code generation with a runtime that generates it as exports
92
+ if (!isThisBase(this.base)) return;
93
+ const { chunkGraph, runtime, runtimeTemplate } = context;
94
+ const module = chunkGraph.moduleGraph.getParentModule(this);
95
+ hash.update(
96
+ module !== undefined &&
97
+ isWorkerEntryThis(module, chunkGraph, runtime, runtimeTemplate)
98
+ ? "worker global"
99
+ : "exports"
100
+ );
101
+ }
102
+
73
103
  /**
74
104
  * Serializes this instance into the provided serializer context.
75
105
  * @param {ObjectSerializerContext} context context
@@ -120,57 +150,31 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
120
150
  {
121
151
  module,
122
152
  moduleGraph,
153
+ chunkGraph,
123
154
  initFragments,
124
155
  runtimeRequirements,
125
156
  runtime,
126
- concatenationScope
157
+ runtimeTemplate
127
158
  }
128
159
  ) {
129
160
  const dep = /** @type {CommonJsExportsDependency} */ (dependency);
161
+ // a classic worker entry writes to its global scope, not to an export, so
162
+ // the names stay as written and are never dropped as unused
163
+ const isWorkerEntry =
164
+ isThisBase(dep.base) &&
165
+ isWorkerEntryThis(module, chunkGraph, runtime, runtimeTemplate);
130
166
  // CJS exports are never inlined
131
- const used = /** @type {string | string[] | false} */ (
132
- moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
133
- );
134
-
135
- if (concatenationScope) {
136
- // eligibility is enforced by JavascriptGenerator.getConcatenationBailoutReason
137
- if (dep.base !== "exports" && dep.base !== "module.exports") {
138
- throw new Error(
139
- `Unsupported base ${dep.base} in concatenated CommonJS module`
167
+ const used = isWorkerEntry
168
+ ? dep.names
169
+ : /** @type {string | string[] | false} */ (
170
+ moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
140
171
  );
141
- }
142
- if (!used) {
143
- initFragments.push(
144
- new InitFragment(
145
- "var __webpack_unused_export__;\n",
146
- InitFragment.STAGE_CONSTANTS,
147
- 0,
148
- "__webpack_unused_export__"
149
- )
150
- );
151
- source.replace(
152
- dep.range[0],
153
- dep.range[1] - 1,
154
- "__webpack_unused_export__"
155
- );
156
- return;
157
- }
158
- source.replace(
159
- dep.range[0],
160
- dep.range[1] - 1,
161
- getConcatenatedExportAccess(
162
- concatenationScope,
163
- initFragments,
164
- dep.names
165
- )
166
- );
167
- return;
168
- }
169
172
 
170
173
  const [type, base] = handleDependencyBase(
171
174
  dep.base,
172
175
  module,
173
- runtimeRequirements
176
+ runtimeRequirements,
177
+ isWorkerEntry
174
178
  );
175
179
 
176
180
  switch (type) {
@@ -11,27 +11,57 @@ const formatLocation = require("../util/formatLocation");
11
11
  const { propertyAccess } = require("../util/property");
12
12
  const CommonJsExportRequireDependency = require("./CommonJsExportRequireDependency");
13
13
  const CommonJsExportsDependency = require("./CommonJsExportsDependency");
14
+ const CommonJsFullRequireDependency = require("./CommonJsFullRequireDependency");
15
+ const CommonJsObjectExportDependency = require("./CommonJsObjectExportDependency");
16
+ const CommonJsRequireDependency = require("./CommonJsRequireDependency");
14
17
  const CommonJsSelfReferenceDependency = require("./CommonJsSelfReferenceDependency");
15
18
  const DynamicExports = require("./DynamicExports");
16
19
  const HarmonyExports = require("./HarmonyExports");
17
20
  const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
21
+ const RuntimeRequirementsDependency = require("./RuntimeRequirementsDependency");
18
22
 
19
- /** @typedef {import("estree").AssignmentExpression} AssignmentExpression */
20
- /** @typedef {import("estree").CallExpression} CallExpression */
21
- /** @typedef {import("estree").Expression} Expression */
22
- /** @typedef {import("estree").Node} Node */
23
- /** @typedef {import("estree").Super} Super */
24
- /** @typedef {import("estree").ThisExpression} ThisExpression */
25
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
26
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
27
- /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
28
- /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
29
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
30
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
31
- /** @typedef {import("../javascript/JavascriptParser").Members} Members */
32
- /** @typedef {import("../javascript/JavascriptParser").StatementPath} StatementPath */
33
- /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
34
- /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
23
+ const FUNCTION_PROPERTY_DROP_HEAD =
24
+ CommonJsObjectExportDependency.FUNCTION_PROPERTY_DROP_HEAD;
25
+
26
+ /**
27
+ * @import {
28
+ * AssignmentExpression,
29
+ * CallExpression,
30
+ * Expression,
31
+ * FunctionExpression,
32
+ * Node,
33
+ * ObjectExpression,
34
+ * Property,
35
+ * SpreadElement,
36
+ * Super,
37
+ * ThisExpression
38
+ * } from "estree"
39
+ */
40
+ /** @import { ExportInfoName } from "../Dependency" */
41
+ /** @import ModuleGraph from "../ModuleGraph" */
42
+ /** @import BasicEvaluatedExpression from "../javascript/BasicEvaluatedExpression" */
43
+ /**
44
+ * @import JavascriptParser, {
45
+ * Range,
46
+ * Members,
47
+ * StatementPath
48
+ * } from "../javascript/JavascriptParser"
49
+ */
50
+ /**
51
+ * @import {
52
+ * CommonJSDependencyBaseKeywords
53
+ * } from "./CommonJsDependencyHelpers"
54
+ */
55
+ /**
56
+ * @import {
57
+ * CommonJsObjectExportKind
58
+ * } from "./CommonJsObjectExportDependency"
59
+ */
60
+ /**
61
+ * @import {
62
+ * JavascriptModuleBuildMeta
63
+ * } from "../javascript/JavascriptModule"
64
+ */
35
65
 
36
66
  /**
37
67
  * This function takes a generic expression and detects whether it is an ObjectExpression.
@@ -230,11 +260,15 @@ const getChildKeys = (node) => {
230
260
  * and `extends` clauses evaluate in the outer scope and are searched. The
231
261
  * `this`-scope boundary is enforced when a node is popped, so the generic
232
262
  * branch may enumerate any child without crossing it.
233
- * @param {Node[]} initialNodes nodes to search
263
+ * @param {Node} body function body
264
+ * @param {Node[]} params function params
234
265
  * @returns {ThisExpression | undefined} first own `this` expression
235
266
  */
236
- const findOwnThisExpression = (initialNodes) => {
237
- const stack = [...initialNodes];
267
+ const findOwnThisExpression = (body, params) => {
268
+ // the body is popped first, so its `this` wins over a default parameter's
269
+ const stack = [];
270
+ for (let i = 0; i < params.length; i++) stack.push(params[i]);
271
+ stack.push(body);
238
272
  let node;
239
273
  while ((node = stack.pop()) !== undefined) {
240
274
  switch (node.type) {
@@ -271,14 +305,55 @@ const findOwnThisExpression = (initialNodes) => {
271
305
  * Returns the own `this` of a function-expression export value. When such a
272
306
  * function is called as a method of the exports object, `this` is the exports
273
307
  * object and may reach any sibling export (#21178).
308
+ * @param {JavascriptParser} parser the parser
274
309
  * @param {Node} expr the exported value
275
310
  * @returns {ThisExpression | undefined} first own `this` expression
276
311
  */
277
- const getThisAccessInExportedValue = (expr) =>
278
- expr.type === "FunctionExpression"
279
- ? findOwnThisExpression([...expr.params, expr.body])
312
+ const getThisAccessInExportedValue = (parser, expr) =>
313
+ expr.type === "FunctionExpression" &&
314
+ // scanning the body of every exported function is expensive and most of them
315
+ // never mention `this`, so filter on the source text first
316
+ parser.sourceMayContainIdentifier(/** @type {Range} */ (expr.range), "this")
317
+ ? findOwnThisExpression(expr.body, expr.params)
280
318
  : undefined;
281
319
 
320
+ /**
321
+ * Returns the export name an object-literal property contributes, or
322
+ * `undefined` when it cannot contribute one: a spread, a computed or
323
+ * non-string key is unknown at compile time, and `__proto__` sets
324
+ * [[Prototype]] instead of an own property.
325
+ * @param {Property | SpreadElement} property property
326
+ * @returns {string | undefined} export name
327
+ */
328
+ const getStaticPropertyName = (property) => {
329
+ if (property.type === "SpreadElement" || property.computed) return;
330
+ const key = property.key;
331
+ /** @type {string | undefined} */
332
+ let name;
333
+ if (key.type === "Identifier") {
334
+ name = key.name;
335
+ } else if (key.type === "Literal" && typeof key.value === "string") {
336
+ name = key.value;
337
+ }
338
+ return name === "__proto__" ? undefined : name;
339
+ };
340
+
341
+ /**
342
+ * @param {Property} property property
343
+ * @returns {CommonJsObjectExportKind} property kind
344
+ */
345
+ const getObjectExportKind = (property) => {
346
+ if (property.kind === "get" || property.kind === "set") return property.kind;
347
+ if (property.method) {
348
+ const { async, generator } = /** @type {FunctionExpression} */ (
349
+ property.value
350
+ );
351
+ if (async) return generator ? "asyncGeneratorMethod" : "asyncMethod";
352
+ return generator ? "generatorMethod" : "method";
353
+ }
354
+ return property.shorthand ? "shorthand" : "keyValue";
355
+ };
356
+
282
357
  const PLUGIN_NAME = "CommonJsExportsParserPlugin";
283
358
 
284
359
  class CommonJsExportsParserPlugin {
@@ -348,7 +423,7 @@ class CommonJsExportsParserPlugin {
348
423
  const keepAllExportsOnThisAccess = (valueExpr, base) => {
349
424
  // One bailout per module is enough
350
425
  if (keptAllExportsForState === parser.state) return;
351
- const thisExpr = getThisAccessInExportedValue(valueExpr);
426
+ const thisExpr = getThisAccessInExportedValue(parser, valueExpr);
352
427
  if (thisExpr === undefined) return;
353
428
  keptAllExportsForState = parser.state;
354
429
  bailoutHint(
@@ -413,7 +488,10 @@ class CommonJsExportsParserPlugin {
413
488
 
414
489
  return true;
415
490
  }
416
- if (members.length === 0) return;
491
+ // `module.exports = { … }` — properties are the module's named exports.
492
+ if (members.length === 0) {
493
+ return handleObjectLiteralExport(expr, base);
494
+ }
417
495
  enableStructuredExports();
418
496
  const remainingMembers = members;
419
497
  checkNamespace(
@@ -438,6 +516,103 @@ class CommonJsExportsParserPlugin {
438
516
  parser.walkExpression(expr.right);
439
517
  return true;
440
518
  };
519
+ /**
520
+ * Handle top-level `module.exports = { … }` object-literal exports.
521
+ * @param {AssignmentExpression} expr expression
522
+ * @param {CommonJSDependencyBaseKeywords} base commonjs base keywords
523
+ * @returns {boolean | undefined} true, when the expression was handled
524
+ */
525
+ const handleObjectLiteralExport = (expr, base) => {
526
+ // Only `module.exports = { … }` replaces the whole exports object.
527
+ if (base !== "module.exports") return;
528
+ if (
529
+ /** @type {StatementPath} */ (parser.statementPath).length !== 1 ||
530
+ !parser.isStatementLevelExpression(expr)
531
+ ) {
532
+ return;
533
+ }
534
+ const object = expr.right;
535
+ if (object.type !== "ObjectExpression") return;
536
+
537
+ const module = parser.state.module;
538
+ /** @type {JavascriptModuleBuildMeta} */ (
539
+ module.buildMeta
540
+ ).treatAsCommonJs = true;
541
+ // LHS stays as the text `module.exports` (moduleArgument is "module"
542
+ // unless a top-level `module` binding shadows it, which prevents this hook).
543
+ module.addPresentationalDependency(
544
+ new RuntimeRequirementsDependency([RuntimeGlobals.module])
545
+ );
546
+
547
+ // one unknown key makes the whole object opaque, so name them all first
548
+ /** @type {string[]} */
549
+ const names = [];
550
+ for (const property of object.properties) {
551
+ const name = getStaticPropertyName(property);
552
+ if (name === undefined) {
553
+ bailout(
554
+ `module.exports = {…} cannot be statically analysed at ${formatLocation(
555
+ parser.getLocation(expr)
556
+ )}`
557
+ );
558
+ parser.walkExpression(object);
559
+ return true;
560
+ }
561
+ names.push(name);
562
+ }
563
+
564
+ enableStructuredExports();
565
+
566
+ for (let i = 0; i < object.properties.length; i++) {
567
+ const property = /** @type {Property} */ (object.properties[i]);
568
+ const name = names[i];
569
+ const value = /** @type {Expression} */ (property.value);
570
+ const kind = getObjectExportKind(property);
571
+ // a shorthand has no value text of its own to replace
572
+ const valueRange = /** @type {Range} */ (
573
+ kind === "shorthand" ? property.range : value.range
574
+ );
575
+ // scans the key/value gap, so `/*#__PURE__*/` is picked up here
576
+ const pure =
577
+ kind === "keyValue" &&
578
+ parser.isPure(value, /** @type {Range} */ (property.key.range)[1]);
579
+
580
+ if (name === "__esModule") {
581
+ checkNamespace(true, ["__esModule"], value);
582
+ }
583
+
584
+ const dep = new CommonJsObjectExportDependency(
585
+ /** @type {Range} */ (property.range),
586
+ /** @type {Range} */ (property.key.range),
587
+ valueRange,
588
+ name,
589
+ kind,
590
+ pure
591
+ );
592
+ dep.loc = parser.getLocation(property);
593
+ module.addDependency(dep);
594
+
595
+ keepAllExportsOnThisAccess(value, base);
596
+ // Tag nested requires so unused get/set/method can disconnect them.
597
+ const start = FUNCTION_PROPERTY_DROP_HEAD.has(kind)
598
+ ? module.dependencies.length
599
+ : -1;
600
+ parser.walkExpression(value);
601
+ if (start !== -1) {
602
+ const usedByExports = new Set([name]);
603
+ for (let j = start; j < module.dependencies.length; j++) {
604
+ const nested = module.dependencies[j];
605
+ if (
606
+ nested instanceof CommonJsRequireDependency ||
607
+ nested instanceof CommonJsFullRequireDependency
608
+ ) {
609
+ nested.usedByExports = usedByExports;
610
+ }
611
+ }
612
+ }
613
+ }
614
+ return true;
615
+ };
441
616
  parser.hooks.assignMemberChain
442
617
  .for("exports")
443
618
  .tap(PLUGIN_NAME, (expr, members) =>
@@ -638,8 +813,15 @@ class CommonJsExportsParserPlugin {
638
813
 
639
814
  // Bailouts //
640
815
  parser.hooks.expression.for("module").tap(PLUGIN_NAME, (expr) => {
641
- bailout();
642
816
  const isHarmony = HarmonyExports.isEnabled(parser.state);
817
+ // Silent under ESM, where `HarmonyExports` governs and nothing was lost.
818
+ bailout(
819
+ isHarmony
820
+ ? undefined
821
+ : `module is used directly at ${formatLocation(
822
+ parser.getLocation(expr)
823
+ )}`
824
+ );
643
825
  const dep = new ModuleDecoratorDependency(
644
826
  isHarmony
645
827
  ? RuntimeGlobals.harmonyModuleDecorator
@@ -6,6 +6,9 @@
6
6
  "use strict";
7
7
 
8
8
  const Template = require("../Template");
9
+ const {
10
+ getDependencyUsedByExportsCondition
11
+ } = require("../optimize/InnerGraph");
9
12
  const { equals } = require("../util/ArrayHelpers");
10
13
  const { getTrimmedIdsAndRange } = require("../util/chainedImports");
11
14
  const makeSerializable = require("../util/makeSerializable");
@@ -15,19 +18,26 @@ const {
15
18
  getRequireEsmModuleExportsAccess,
16
19
  isRequireEsmModuleExportsModule
17
20
  } = require("./CommonJsDependencyHelpers");
21
+ const HarmonyImportGuard = require("./HarmonyImportGuard");
18
22
  const ModuleDependency = require("./ModuleDependency");
19
23
 
20
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
21
- /** @typedef {import("../Dependency")} Dependency */
22
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
23
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
24
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
25
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
26
- /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
27
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
28
- /** @typedef {import("../util/chainedImports").IdRanges} IdRanges */
29
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExportInfoName[], IdRanges | undefined, boolean, undefined | boolean]>} ObjectDeserializerContext */
30
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExportInfoName[], IdRanges | undefined, boolean, undefined | boolean]>} ObjectSerializerContext */
24
+ /** @import { ReplaceSource } from "webpack-sources" */
25
+ /**
26
+ * @import Dependency, {
27
+ * GetConditionFn,
28
+ * ReferencedExports,
29
+ * ExportInfoName
30
+ * } from "../Dependency"
31
+ */
32
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
33
+ /** @import ModuleGraph from "../ModuleGraph" */
34
+ /** @import { Range } from "../javascript/JavascriptParser" */
35
+ /** @import { UsedByExports } from "../optimize/InnerGraph" */
36
+ /** @import { RuntimeSpec } from "../util/runtime" */
37
+ /** @import { IdRanges } from "../util/chainedImports" */
38
+ /** @import { DependencyGuard } from "./HarmonyImportGuard" */
39
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExportInfoName[], IdRanges | undefined, boolean, undefined | boolean, DependencyGuard[] | undefined, boolean, boolean, UsedByExports | undefined]>} ObjectDeserializerContext */
40
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExportInfoName[], IdRanges | undefined, boolean, undefined | boolean, DependencyGuard[] | undefined, boolean, boolean, UsedByExports | undefined]>} ObjectSerializerContext */
31
41
 
32
42
  class CommonJsFullRequireDependency extends ModuleDependency {
33
43
  /**
@@ -51,8 +61,52 @@ class CommonJsFullRequireDependency extends ModuleDependency {
51
61
  this.idRanges = idRanges;
52
62
  /** @type {boolean} */
53
63
  this.call = false;
64
+ /** @type {boolean} */
65
+ this.namespaceObjectAsContext = false;
54
66
  /** @type {undefined | boolean} */
55
67
  this.asiSafe = undefined;
68
+ /** @type {DependencyGuard[] | undefined} */
69
+ this.branchGuards = undefined;
70
+ /** @type {UsedByExports | undefined} */
71
+ this.usedByExports = undefined;
72
+ /** @type {boolean} */
73
+ this._canConcatenate = false;
74
+ }
75
+
76
+ /**
77
+ * Returns function to determine if the connection is active.
78
+ * @param {ModuleGraph} moduleGraph module graph
79
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
80
+ */
81
+ getCondition(moduleGraph) {
82
+ const usedByExportsCondition =
83
+ this.usedByExports !== undefined
84
+ ? getDependencyUsedByExportsCondition(this, moduleGraph)
85
+ : null;
86
+ if (usedByExportsCondition === false) return false;
87
+ const guards = this.branchGuards;
88
+ if (usedByExportsCondition === null && guards === undefined) return null;
89
+ return (connection, runtime) => {
90
+ if (
91
+ usedByExportsCondition !== null &&
92
+ usedByExportsCondition(connection, runtime) === false
93
+ ) {
94
+ return false;
95
+ }
96
+ return !(
97
+ guards !== undefined &&
98
+ HarmonyImportGuard.isDeadByGuards(guards, moduleGraph, runtime)
99
+ );
100
+ };
101
+ }
102
+
103
+ /**
104
+ * Returns true if this dependency can be concatenated
105
+ * @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
106
+ * @returns {boolean} true if this dependency can be concatenated
107
+ */
108
+ canConcatenate(concatenateCommonJsModules) {
109
+ return concatenateCommonJsModules && this._canConcatenate;
56
110
  }
57
111
 
58
112
  /**
@@ -76,6 +130,8 @@ class CommonJsFullRequireDependency extends ModuleDependency {
76
130
  if (
77
131
  this.call &&
78
132
  (!importedModule ||
133
+ // the namespace object of a required ESM module is the call receiver
134
+ this.namespaceObjectAsContext ||
79
135
  importedModule.getExportsType(moduleGraph, false) !== "namespace")
80
136
  ) {
81
137
  return [{ name: this.names.slice(0, -1), canInline: false }];
@@ -92,7 +148,11 @@ class CommonJsFullRequireDependency extends ModuleDependency {
92
148
  .write(this.names)
93
149
  .write(this.idRanges)
94
150
  .write(this.call)
95
- .write(this.asiSafe);
151
+ .write(this.asiSafe)
152
+ .write(this.branchGuards)
153
+ .write(this._canConcatenate)
154
+ .write(this.namespaceObjectAsContext)
155
+ .write(this.usedByExports);
96
156
  super.serialize(context);
97
157
  }
98
158
 
@@ -108,7 +168,15 @@ class CommonJsFullRequireDependency extends ModuleDependency {
108
168
  this.call = c2.read();
109
169
  const c3 = c2.rest;
110
170
  this.asiSafe = c3.read();
111
- super.deserialize(c3.rest);
171
+ const c4 = c3.rest;
172
+ this.branchGuards = c4.read();
173
+ const c5 = c4.rest;
174
+ this._canConcatenate = c5.read();
175
+ const c6 = c5.rest;
176
+ this.namespaceObjectAsContext = c6.read();
177
+ const c7 = c6.rest;
178
+ this.usedByExports = c7.read();
179
+ super.deserialize(c7.rest);
112
180
  }
113
181
 
114
182
  get type() {
@@ -133,22 +201,25 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
133
201
  apply(
134
202
  dependency,
135
203
  source,
136
- { runtimeTemplate, moduleGraph, chunkGraph, runtimeRequirements, runtime }
204
+ {
205
+ runtimeTemplate,
206
+ moduleGraph,
207
+ chunkGraph,
208
+ runtimeRequirements,
209
+ runtime,
210
+ concatenationScope
211
+ }
137
212
  ) {
138
213
  const dep = /** @type {CommonJsFullRequireDependency} */ (dependency);
139
214
  if (!dep.range) return;
215
+ const connection = moduleGraph.getConnection(dep);
216
+ // Dead branch: module is excluded and has no id; code is never executed.
217
+ if (connection && !connection.isTargetActive(runtime)) {
218
+ // Replaces the whole member chain, so no property access is left dangling
219
+ source.replace(dep.range[0], dep.range[1] - 1, "null /* dead branch */");
220
+ return;
221
+ }
140
222
  const importedModule = moduleGraph.getModule(dep);
141
- let requireExpr = runtimeTemplate.moduleExports({
142
- module: importedModule,
143
- chunkGraph,
144
- request: dep.request,
145
- weak: dep.weak,
146
- runtimeRequirements
147
- });
148
-
149
- const esmRequireAccess = importedModule
150
- ? getRequireEsmModuleExportsAccess(importedModule, moduleGraph, runtime)
151
- : null;
152
223
 
153
224
  const {
154
225
  trimmedRange: [trimmedRangeStart, trimmedRangeEnd],
@@ -161,6 +232,49 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
161
232
  dep
162
233
  );
163
234
 
235
+ if (concatenationScope) {
236
+ const connection = moduleGraph.getConnection(dep);
237
+ if (
238
+ connection &&
239
+ importedModule &&
240
+ concatenationScope.isModuleInScope(importedModule)
241
+ ) {
242
+ // `require(esm)` unwraps the "module.exports" export and the member
243
+ // chain hangs off it; without that prefix the ids name exports the
244
+ // module never declares.
245
+ const ids = isRequireEsmModuleExportsModule(
246
+ connection.module,
247
+ moduleGraph
248
+ )
249
+ ? [ESM_MODULE_EXPORTS_NAME, ...trimmedIds]
250
+ : trimmedIds;
251
+
252
+ source.replace(
253
+ trimmedRangeStart,
254
+ trimmedRangeEnd - 1,
255
+ concatenationScope.createModuleReference(connection.module, {
256
+ ids: ids.length > 0 ? ids : undefined,
257
+ call: dep.call,
258
+ asiSafe: dep.asiSafe,
259
+ moduleExportsAccess: true
260
+ })
261
+ );
262
+ return;
263
+ }
264
+ }
265
+
266
+ let requireExpr = runtimeTemplate.moduleExports({
267
+ module: importedModule,
268
+ chunkGraph,
269
+ request: dep.request,
270
+ weak: dep.weak,
271
+ runtimeRequirements
272
+ });
273
+
274
+ const esmRequireAccess = importedModule
275
+ ? getRequireEsmModuleExportsAccess(importedModule, moduleGraph, runtime)
276
+ : null;
277
+
164
278
  if (esmRequireAccess !== null) {
165
279
  const access = `${esmRequireAccess}${propertyAccess(trimmedIds)}`;
166
280
  requireExpr =
@@ -168,7 +282,7 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
168
282
  ? `(${requireExpr}${access})`
169
283
  : `${requireExpr}${access}`;
170
284
  } else if (importedModule) {
171
- // CJS exports are never inlined
285
+ // CJS required are never inlined
172
286
  const usedImported = /** @type {string | string[] | false} */ (
173
287
  moduleGraph
174
288
  .getExportsInfo(importedModule)