@depup/webpack 5.109.2-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 (640) 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 +26 -17
  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 +117 -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 +50 -13
  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 +101 -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 +32 -47
  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 +141 -85
  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 +332 -169
  89. package/lib/RuntimeTemplate.js +2792 -352
  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 +2 -2
  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 +261 -79
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +36 -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 +57 -24
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +168 -88
  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 +5324 -0
  160. package/lib/css/syntax.js +9579 -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 +156 -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 +4 -4
  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 +13 -10
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  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 +27 -19
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -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 +37 -29
  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 +2 -2
  230. package/lib/dependencies/ImportDependency.js +24 -20
  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 +49 -35
  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 +51 -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 +46 -28
  290. package/lib/dependencies/WorkerDependency.js +28 -22
  291. package/lib/dependencies/WorkletDependency.js +15 -14
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/processExportInfo.js +5 -5
  294. package/lib/dll/DelegatedModule.js +34 -22
  295. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  296. package/lib/dll/DelegatedPlugin.js +2 -2
  297. package/lib/dll/DllEntryPlugin.js +2 -2
  298. package/lib/dll/DllModule.js +22 -15
  299. package/lib/dll/DllModuleFactory.js +7 -3
  300. package/lib/dll/DllPlugin.js +7 -5
  301. package/lib/dll/DllReferencePlugin.js +10 -7
  302. package/lib/dll/LibManifestPlugin.js +5 -5
  303. package/lib/electron/ElectronTargetPlugin.js +53 -49
  304. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  305. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  306. package/lib/errors/BroadContextsWarning.js +43 -0
  307. package/lib/errors/BuildCycleError.js +1 -1
  308. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  309. package/lib/errors/ChunkRenderError.js +1 -1
  310. package/lib/errors/CircularDependenciesWarning.js +38 -0
  311. package/lib/errors/CodeGenerationError.js +1 -1
  312. package/lib/errors/CommentCompilationWarning.js +1 -1
  313. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  314. package/lib/errors/DuplicateModulesWarning.js +45 -0
  315. package/lib/errors/DynamicExportsWarning.js +30 -0
  316. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  317. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  318. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  319. package/lib/errors/EvalUsageWarning.js +28 -0
  320. package/lib/errors/HookWebpackError.js +5 -5
  321. package/lib/errors/HotspotsWarning.js +57 -0
  322. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  323. package/lib/errors/InlinedAssetsWarning.js +36 -0
  324. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  325. package/lib/errors/LargeModulesWarning.js +45 -0
  326. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  327. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  328. package/lib/errors/MixedExportsWarning.js +41 -0
  329. package/lib/errors/ModuleDependencyError.js +13 -16
  330. package/lib/errors/ModuleDependencyWarning.js +5 -15
  331. package/lib/errors/ModuleHashingError.js +1 -1
  332. package/lib/errors/ModuleNotFoundError.js +2 -2
  333. package/lib/errors/ModuleParseError.js +1 -2
  334. package/lib/errors/ModuleRestoreError.js +1 -1
  335. package/lib/errors/ModuleStoreError.js +1 -1
  336. package/lib/errors/NodeStuffInWebError.js +1 -1
  337. package/lib/errors/OsDependentRuleWarning.js +31 -0
  338. package/lib/errors/PureAnnotationsWarning.js +36 -0
  339. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  340. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  341. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  342. package/lib/errors/TinyChunksWarning.js +40 -0
  343. package/lib/errors/TopLevelThisWarning.js +34 -0
  344. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  345. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  346. package/lib/errors/UnusedAliasesWarning.js +29 -0
  347. package/lib/errors/UnusedDefinesWarning.js +29 -0
  348. package/lib/errors/UnusedExternalsWarning.js +29 -0
  349. package/lib/errors/UnusedReexportsWarning.js +42 -0
  350. package/lib/errors/UnusedRuleWarning.js +29 -0
  351. package/lib/errors/WebpackError.js +9 -5
  352. package/lib/errors/deriveStackFromNestedError.js +90 -0
  353. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  354. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  355. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  356. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  357. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  358. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  359. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  360. package/lib/hmr/lazyCompilationBackend.js +9 -6
  361. package/lib/hmr/parserHooks.js +56 -0
  362. package/lib/html/HtmlGenerator.js +277 -77
  363. package/lib/html/HtmlModule.js +7 -3
  364. package/lib/html/HtmlModulesPlugin.js +282 -162
  365. package/lib/html/HtmlParser.js +31 -86
  366. package/lib/html/data.js +1928 -0
  367. package/lib/html/htmlMinify.js +288 -0
  368. package/lib/html/syntax.js +5557 -1155
  369. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  370. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  371. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  372. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  373. package/lib/ids/IdHelpers.js +7 -8
  374. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  375. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  376. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  377. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  378. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  379. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  380. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  381. package/lib/index.js +10 -0
  382. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  383. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  384. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  385. package/lib/javascript/ChunkHelpers.js +1 -1
  386. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  387. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  388. package/lib/javascript/JavascriptGenerator.js +65 -165
  389. package/lib/javascript/JavascriptModule.js +9 -3
  390. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  391. package/lib/javascript/JavascriptParser.js +242 -99
  392. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  393. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  394. package/lib/javascript/StartupHelpers.js +55 -9
  395. package/lib/javascript/syntax.js +2678 -232
  396. package/lib/json/JsonData.js +8 -4
  397. package/lib/json/JsonGenerator.js +38 -16
  398. package/lib/json/JsonModule.js +7 -3
  399. package/lib/json/JsonModulesPlugin.js +1 -1
  400. package/lib/json/JsonParser.js +5 -6
  401. package/lib/library/AbstractLibraryPlugin.js +20 -14
  402. package/lib/library/AmdLibraryPlugin.js +11 -7
  403. package/lib/library/AssignLibraryPlugin.js +19 -13
  404. package/lib/library/EnableLibraryPlugin.js +2 -2
  405. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  406. package/lib/library/JsonpLibraryPlugin.js +11 -7
  407. package/lib/library/ModuleLibraryPlugin.js +256 -64
  408. package/lib/library/SystemLibraryPlugin.js +12 -8
  409. package/lib/library/UmdLibraryPlugin.js +62 -25
  410. package/lib/loaders/LoaderRunner.js +14 -1
  411. package/lib/loaders/loadLoader.js +8 -4
  412. package/lib/logging/createConsoleLogger.js +7 -4
  413. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  414. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  415. package/lib/node/NodeSourcePlugin.js +1 -1
  416. package/lib/node/NodeTargetPlugin.js +4 -3
  417. package/lib/node/NodeTemplatePlugin.js +1 -1
  418. package/lib/node/NodeWatchFileSystem.js +70 -9
  419. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  420. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  421. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  422. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/nodeConsole.js +7 -3
  424. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  425. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  426. package/lib/optimize/ConcatenatedModule.js +985 -470
  427. package/lib/optimize/ConstExportsPlugin.js +11 -7
  428. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  429. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  430. package/lib/optimize/InlineExports.js +9 -5
  431. package/lib/optimize/InnerGraph.js +28 -12
  432. package/lib/optimize/InnerGraphPlugin.js +23 -18
  433. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  434. package/lib/optimize/MangleExportsPlugin.js +7 -8
  435. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  436. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  437. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  438. package/lib/optimize/RealContentHashPlugin.js +10 -6
  439. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  440. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  441. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  442. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  443. package/lib/optimize/SplitChunksPlugin.js +86 -24
  444. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  445. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  446. package/lib/performance/BroadContextsPlugin.js +142 -0
  447. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  448. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  449. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  450. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  451. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  452. package/lib/performance/DynamicExportsPlugin.js +120 -0
  453. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  454. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  455. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  456. package/lib/performance/EvalUsagePlugin.js +115 -0
  457. package/lib/performance/HotspotsPlugin.js +296 -0
  458. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  459. package/lib/performance/LargeModulesPlugin.js +126 -0
  460. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  461. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  462. package/lib/performance/MixedExportsPlugin.js +136 -0
  463. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  464. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  465. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  466. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  467. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  468. package/lib/performance/SizeLimitsPlugin.js +139 -7
  469. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  470. package/lib/performance/TinyChunksPlugin.js +128 -0
  471. package/lib/performance/TopLevelThisPlugin.js +208 -0
  472. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  473. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  474. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  475. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  476. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  477. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  478. package/lib/performance/getModuleSize.js +22 -0
  479. package/lib/performance/getSourceModules.js +22 -0
  480. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  481. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  482. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  483. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  484. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  487. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  488. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  489. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  490. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  491. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  492. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  493. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  494. package/lib/rules/RuleSetCompiler.js +146 -12
  495. package/lib/rules/UseEffectRulePlugin.js +18 -11
  496. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  497. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  498. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  499. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  500. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  501. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  502. package/lib/runtime/CompatRuntimeModule.js +5 -3
  503. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  504. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  505. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  506. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  507. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  508. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  509. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  510. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  511. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  512. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  513. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  514. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  515. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  516. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  517. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  518. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  519. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  520. package/lib/runtime/NonceRuntimeModule.js +10 -0
  521. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  522. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  523. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  524. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  525. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  526. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  527. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  528. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  529. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  530. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  531. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  532. package/lib/runtime/baseUri.js +63 -0
  533. package/lib/schemes/DataUriPlugin.js +1 -1
  534. package/lib/schemes/FileUriPlugin.js +1 -1
  535. package/lib/schemes/HttpUriPlugin.js +24 -15
  536. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  537. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  538. package/lib/serialization/BinaryMiddleware.js +4 -4
  539. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  540. package/lib/serialization/FileMiddleware.js +7 -7
  541. package/lib/serialization/ObjectMiddleware.js +139 -114
  542. package/lib/serialization/PlainObjectSerializer.js +19 -16
  543. package/lib/sharing/ConsumeSharedModule.js +30 -21
  544. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  545. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  546. package/lib/sharing/ProvideSharedModule.js +25 -16
  547. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  548. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  549. package/lib/sharing/SharePlugin.js +17 -5
  550. package/lib/sharing/ShareRuntimeModule.js +4 -4
  551. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  552. package/lib/sharing/utils.js +1 -3
  553. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  554. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  555. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  556. package/lib/stats/StatsFactory.js +25 -26
  557. package/lib/stats/StatsPrinter.js +16 -12
  558. package/lib/typescript/TypeScriptPlugin.js +12 -14
  559. package/lib/url/URLParserPlugin.js +26 -13
  560. package/lib/util/AsyncQueue.js +4 -3
  561. package/lib/util/Hash.js +5 -1
  562. package/lib/util/LazySet.js +35 -22
  563. package/lib/util/LocConverter.js +36 -13
  564. package/lib/util/SourceProcessor.js +1050 -24
  565. package/lib/util/StringXor.js +1 -1
  566. package/lib/util/chainedImports.js +9 -5
  567. package/lib/util/cleverMerge.js +1 -1
  568. package/lib/util/comparators.js +45 -14
  569. package/lib/util/concatenate.js +203 -77
  570. package/lib/util/conventions.js +5 -1
  571. package/lib/util/createHash.js +2 -2
  572. package/lib/util/createHooksRegistry.js +8 -10
  573. package/lib/util/dataURL.js +225 -1
  574. package/lib/util/extractSourceMap.js +4 -3
  575. package/lib/util/findCaseMismatch.js +139 -0
  576. package/lib/util/formatLocation.js +1 -2
  577. package/lib/util/fs.js +22 -5
  578. package/lib/util/globUtils.js +298 -24
  579. package/lib/util/hash/BatchedHash.js +5 -1
  580. package/lib/util/hash/BulkUpdateHash.js +5 -1
  581. package/lib/util/hash/DebugHash.js +5 -1
  582. package/lib/util/hash/hash-digest.js +6 -2
  583. package/lib/util/identifier.js +4 -0
  584. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  585. package/lib/util/internalSerializables.js +6 -0
  586. package/lib/util/lazyModule.js +56 -0
  587. package/lib/util/makeSerializable.js +7 -3
  588. package/lib/util/matchAlias.js +25 -0
  589. package/lib/util/mimeTypes.js +11 -5
  590. package/lib/util/nonNumericOnlyHash.js +4 -3
  591. package/lib/util/parseJson.js +5 -3
  592. package/lib/util/preloadModuleType.js +32 -0
  593. package/lib/util/registerExternalSerializer.js +7 -5
  594. package/lib/util/runtime.js +2 -2
  595. package/lib/util/semver.js +1 -1
  596. package/lib/util/serialization.js +28 -28
  597. package/lib/util/source.js +2 -2
  598. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  599. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  600. package/lib/wasm/wasmModuleFilename.js +54 -0
  601. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  602. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  603. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  604. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  605. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  606. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  607. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  608. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  609. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  610. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  611. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  612. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  613. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  614. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  615. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  616. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  617. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  618. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  619. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  620. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  621. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  622. package/lib/web/JsonpTemplatePlugin.js +2 -2
  623. package/lib/webpack.js +22 -11
  624. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  625. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  626. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  627. package/module.d.ts +1 -0
  628. package/package.json +32 -25
  629. package/schemas/WebpackOptions.check.js +1 -1
  630. package/schemas/WebpackOptions.json +670 -36
  631. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  634. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  635. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  636. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  639. package/types.d.ts +3144 -454
  640. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -6,29 +6,36 @@
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
+ /**
24
+ * @import {
25
+ * GetConditionFn,
26
+ * RawReferencedExports,
27
+ * ReferencedExports
28
+ * } from "../Dependency"
29
+ */
30
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
31
+ /** @import Module from "../Module" */
32
+ /** @import ModuleGraph from "../ModuleGraph" */
33
+ /** @import { Range } from "../javascript/JavascriptParser" */
34
+ /** @import { UsedByExports } from "../optimize/InnerGraph" */
35
+ /** @import { RuntimeSpec } from "../util/runtime" */
36
+ /** @import { DependencyGuard } from "./HarmonyImportGuard" */
37
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[RawReferencedExports | null, Range | undefined, DependencyGuard[] | undefined, boolean, boolean, UsedByExports | undefined]>} ObjectDeserializerContext */
38
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[RawReferencedExports | null, Range | undefined, DependencyGuard[] | undefined, boolean, boolean, UsedByExports | undefined]>} ObjectSerializerContext */
32
39
 
33
40
  /**
34
41
  * Trims a member-access path at the first segment that is definitively not a
@@ -77,6 +84,13 @@ class CommonJsRequireDependency extends ModuleDependency {
77
84
  this.valueRange = valueRange;
78
85
  /** @type {DependencyGuard[] | undefined} */
79
86
  this.branchGuards = undefined;
87
+ /** @type {UsedByExports | undefined} */
88
+ this.usedByExports = undefined;
89
+ /** @type {boolean} */
90
+ this._canConcatenate = false;
91
+ // `new require(...)`; see the template for the return-value rule
92
+ /** @type {boolean} */
93
+ this.callNew = false;
80
94
  }
81
95
 
82
96
  get type() {
@@ -87,16 +101,57 @@ class CommonJsRequireDependency extends ModuleDependency {
87
101
  return "commonjs";
88
102
  }
89
103
 
104
+ /**
105
+ * Whether this require only evaluates the module (no exports read).
106
+ * @returns {boolean} true when referencedExports is an empty list
107
+ */
108
+ isEvaluationOnly() {
109
+ return (
110
+ Array.isArray(this.referencedExports) &&
111
+ this.referencedExports.length === 0
112
+ );
113
+ }
114
+
90
115
  /**
91
116
  * Returns function to determine if the connection is active.
92
117
  * @param {ModuleGraph} moduleGraph module graph
93
118
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
94
119
  */
95
120
  getCondition(moduleGraph) {
121
+ const usedByExportsCondition =
122
+ this.usedByExports !== undefined
123
+ ? getDependencyUsedByExportsCondition(this, moduleGraph)
124
+ : null;
125
+ if (usedByExportsCondition === false) return false;
96
126
  const guards = this.branchGuards;
97
- if (guards === undefined) return null;
98
- return (connection, runtime) =>
99
- !getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime);
127
+ const evaluationOnly = this.isEvaluationOnly();
128
+ if (
129
+ usedByExportsCondition === null &&
130
+ guards === undefined &&
131
+ !evaluationOnly
132
+ ) {
133
+ return null;
134
+ }
135
+ return (connection, runtime) => {
136
+ if (
137
+ usedByExportsCondition !== null &&
138
+ usedByExportsCondition(connection, runtime) === false
139
+ ) {
140
+ return false;
141
+ }
142
+ if (
143
+ guards !== undefined &&
144
+ HarmonyImportGuard.isDeadByGuards(guards, moduleGraph, runtime)
145
+ ) {
146
+ return false;
147
+ }
148
+ if (evaluationOnly) {
149
+ const refModule = connection.resolvedModule;
150
+ if (!refModule) return true;
151
+ return refModule.getSideEffectsConnectionState(moduleGraph);
152
+ }
153
+ return true;
154
+ };
100
155
  }
101
156
 
102
157
  /**
@@ -107,6 +162,16 @@ class CommonJsRequireDependency extends ModuleDependency {
107
162
  */
108
163
  getReferencedExports(moduleGraph, runtime) {
109
164
  const importedModule = moduleGraph.getModule(this);
165
+ if (this.isEvaluationOnly()) {
166
+ // Active `require(esm)` with side effects still unwraps `module.exports`.
167
+ if (
168
+ importedModule &&
169
+ isRequireEsmModuleExportsModule(importedModule, moduleGraph)
170
+ ) {
171
+ return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
172
+ }
173
+ return Dependency.NO_EXPORTS_REFERENCED;
174
+ }
110
175
  if (
111
176
  importedModule &&
112
177
  isRequireEsmModuleExportsModule(importedModule, moduleGraph)
@@ -126,6 +191,15 @@ class CommonJsRequireDependency extends ModuleDependency {
126
191
  }));
127
192
  }
128
193
 
194
+ /**
195
+ * Returns true if this dependency can be concatenated
196
+ * @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
197
+ * @returns {boolean} true if this dependency can be concatenated
198
+ */
199
+ canConcatenate(concatenateCommonJsModules) {
200
+ return concatenateCommonJsModules && this._canConcatenate;
201
+ }
202
+
129
203
  /**
130
204
  * Serializes this instance into the provided serializer context.
131
205
  * @param {ObjectSerializerContext} context context
@@ -134,7 +208,10 @@ class CommonJsRequireDependency extends ModuleDependency {
134
208
  context
135
209
  .write(this.referencedExports)
136
210
  .write(this.valueRange)
137
- .write(this.branchGuards);
211
+ .write(this.branchGuards)
212
+ .write(this._canConcatenate)
213
+ .write(this.callNew)
214
+ .write(this.usedByExports);
138
215
  super.serialize(context);
139
216
  }
140
217
 
@@ -148,7 +225,13 @@ class CommonJsRequireDependency extends ModuleDependency {
148
225
  this.valueRange = c1.read();
149
226
  const c2 = c1.rest;
150
227
  this.branchGuards = c2.read();
151
- super.deserialize(c2.rest);
228
+ const c3 = c2.rest;
229
+ this._canConcatenate = c3.read();
230
+ const c4 = c3.rest;
231
+ this.callNew = c4.read();
232
+ const c5 = c4.rest;
233
+ this.usedByExports = c5.read();
234
+ super.deserialize(c5.rest);
152
235
  }
153
236
  }
154
237
 
@@ -162,17 +245,63 @@ CommonJsRequireDependency.Template = class CommonJsRequireDependencyTemplate ext
162
245
  * @param {DependencyTemplateContext} templateContext the context object
163
246
  * @returns {void}
164
247
  */
165
- apply(
166
- dependency,
167
- source,
168
- { runtimeTemplate, moduleGraph, chunkGraph, runtime }
169
- ) {
248
+ apply(dependency, source, templateContext) {
249
+ const {
250
+ runtimeTemplate,
251
+ moduleGraph,
252
+ chunkGraph,
253
+ runtime,
254
+ concatenationScope
255
+ } = templateContext;
170
256
  const dep = /** @type {CommonJsRequireDependency} */ (dependency);
171
257
  if (!dep.range) return;
172
258
  const connection = moduleGraph.getConnection(dep);
173
- // Dead branch: module is excluded and has no id; code is never executed.
174
259
  if (connection && !connection.isTargetActive(runtime)) {
175
- source.replace(dep.range[0], dep.range[1] - 1, "null /* dead branch */");
260
+ const guards = dep.branchGuards;
261
+ if (
262
+ guards !== undefined &&
263
+ HarmonyImportGuard.isDeadByGuards(guards, moduleGraph, runtime)
264
+ ) {
265
+ // Dead branch: module is excluded and has no id; code is never executed.
266
+ source.replace(
267
+ dep.range[0],
268
+ dep.range[1] - 1,
269
+ "null /* dead branch */"
270
+ );
271
+ return;
272
+ }
273
+ // Unused side-effect-free require: drop the whole call expression.
274
+ if (!dep.valueRange) return;
275
+ source.replace(dep.valueRange[0], dep.valueRange[1] - 1, "0");
276
+ return;
277
+ }
278
+ if (
279
+ connection &&
280
+ concatenationScope !== undefined &&
281
+ dep.valueRange !== undefined &&
282
+ concatenationScope.isModuleInScope(connection.module)
283
+ ) {
284
+ let content = concatenationScope.createModuleReference(
285
+ connection.module,
286
+ {
287
+ // `require(esm)` unwraps the "module.exports" export
288
+ ids: isRequireEsmModuleExportsModule(connection.module, moduleGraph)
289
+ ? [ESM_MODULE_EXPORTS_NAME]
290
+ : undefined,
291
+ asiSafe: true,
292
+ moduleExportsAccess: true
293
+ }
294
+ );
295
+ // replacing the call drops the `new`, so apply the `new` return-value rule
296
+ // here: object or function passes through, anything else gets a fresh instance
297
+ if (dep.callNew) {
298
+ templateContext.runtimeRequirements.add(
299
+ RuntimeGlobals.constructRequire
300
+ );
301
+ content = `${RuntimeGlobals.constructRequire}(${content})`;
302
+ }
303
+ source.replace(dep.valueRange[0], dep.valueRange[1] - 1, content);
304
+ concatenationScope.registerReplacedRequire(dep.valueRange);
176
305
  return;
177
306
  }
178
307
  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
@@ -9,15 +9,14 @@ const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const ModuleDependency = require("./ModuleDependency");
11
11
 
12
- /** @typedef {import("../ContextModule")} ContextModule */
13
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
14
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
15
- /** @typedef {import("../Module")} Module */
16
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
18
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined]>} ObjectDeserializerContext */
20
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined]>} ObjectSerializerContext */
12
+ /** @import ContextModule from "../ContextModule" */
13
+ /** @import { RawReferencedExports, ReferencedExports } from "../Dependency" */
14
+ /** @import Module from "../Module" */
15
+ /** @import ModuleGraph from "../ModuleGraph" */
16
+ /** @import { ImportAttributes } from "../javascript/JavascriptParser" */
17
+ /** @import { RuntimeSpec } from "../util/runtime" */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined, string | undefined]>} ObjectDeserializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined, string | undefined]>} ObjectSerializerContext */
21
20
 
22
21
  class ContextElementDependency extends ModuleDependency {
23
22
  /**
@@ -29,6 +28,7 @@ class ContextElementDependency extends ModuleDependency {
29
28
  * @param {RawReferencedExports | null=} referencedExports referenced exports
30
29
  * @param {string=} context context
31
30
  * @param {ImportAttributes=} attributes import assertions
31
+ * @param {string=} contextRequest the request of the context as written by the user, without query and fragment
32
32
  */
33
33
  constructor(
34
34
  request,
@@ -37,7 +37,8 @@ class ContextElementDependency extends ModuleDependency {
37
37
  category,
38
38
  referencedExports,
39
39
  context,
40
- attributes
40
+ attributes,
41
+ contextRequest
41
42
  ) {
42
43
  super(request);
43
44
 
@@ -56,6 +57,21 @@ class ContextElementDependency extends ModuleDependency {
56
57
  this._context = context || undefined;
57
58
  /** @type {ImportAttributes | undefined} */
58
59
  this.attributes = attributes;
60
+ /** @type {string | undefined} */
61
+ this._contextRequest = contextRequest || undefined;
62
+ }
63
+
64
+ /**
65
+ * The request as the user wrote it, e.g. `#configs/file.mjs` where `request`
66
+ * is the `./file.mjs` relative to the resolved `#configs` directory.
67
+ * @returns {string} the original request
68
+ */
69
+ get originalRequest() {
70
+ const request = this.request;
71
+ if (this._contextRequest === undefined || !request.startsWith("./")) {
72
+ return request;
73
+ }
74
+ return this._contextRequest + request.slice(1);
59
75
  }
60
76
 
61
77
  get type() {
@@ -132,7 +148,8 @@ class ContextElementDependency extends ModuleDependency {
132
148
  .write(this._typePrefix)
133
149
  .write(this._category)
134
150
  .write(this.referencedExports)
135
- .write(this.attributes);
151
+ .write(this.attributes)
152
+ .write(this._contextRequest);
136
153
  super.serialize(context);
137
154
  }
138
155
 
@@ -148,7 +165,9 @@ class ContextElementDependency extends ModuleDependency {
148
165
  this.referencedExports = c2.read();
149
166
  const c3 = c2.rest;
150
167
  this.attributes = c3.read();
151
- super.deserialize(c3.rest);
168
+ const c4 = c3.rest;
169
+ this._contextRequest = c4.read();
170
+ super.deserialize(c4.rest);
152
171
  }
153
172
  }
154
173
 
@@ -17,13 +17,18 @@ const {
17
17
  const CommonJsImportsParserPlugin = require("./CommonJsImportsParserPlugin");
18
18
  const ConstDependency = require("./ConstDependency");
19
19
 
20
- /** @typedef {import("estree").CallExpression} CallExpression */
21
- /** @typedef {import("estree").Expression} Expression */
22
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
23
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
24
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
25
- /** @typedef {import("../javascript/JavascriptParser").ImportSource} ImportSource */
26
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
20
+ /** @import { CallExpression, Expression } from "estree" */
21
+ /**
22
+ * @import {
23
+ * JavascriptParserOptions
24
+ * } from "../../declarations/WebpackOptions"
25
+ */
26
+ /**
27
+ * @import JavascriptParser, {
28
+ * ImportSource,
29
+ * Range
30
+ * } from "../javascript/JavascriptParser"
31
+ */
27
32
 
28
33
  /**
29
34
  * Defines the common js import settings type used by this module.
@@ -9,10 +9,10 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
- /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
+ /** @import { ReplaceSource } from "webpack-sources" */
13
+ /** @import Dependency from "../Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
+ /** @import { Range } from "../javascript/JavascriptParser" */
16
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range]>} ObjectDeserializerContext */
17
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range]>} ObjectSerializerContext */
18
18