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