@depup/webpack 5.109.0-depup.0 → 5.110.1-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -8,10 +8,14 @@
8
8
  const { ConcatSource } = require("webpack-sources");
9
9
  const makeSerializable = require("./util/makeSerializable");
10
10
 
11
- /** @typedef {import("webpack-sources").Source} Source */
12
- /** @typedef {import("./Generator").GenerateContext} GenerateContext */
13
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
11
+ /** @import { Source } from "webpack-sources" */
12
+ /** @import { GenerateContext } from "./Generator" */
13
+ /**
14
+ * @import {
15
+ * ObjectDeserializerContext,
16
+ * ObjectSerializerContext
17
+ * } from "./serialization/ObjectMiddleware"
18
+ */
15
19
 
16
20
  /** @typedef {string} InitFragmentKey */
17
21
 
@@ -28,30 +32,6 @@ const makeSerializable = require("./util/makeSerializable");
28
32
  * @property {(fragments: MaybeMergeableInitFragment<GenerateContext>[]) => MaybeMergeableInitFragment<GenerateContext>[]=} mergeAll
29
33
  */
30
34
 
31
- /**
32
- * Extract fragment index.
33
- * @template T
34
- * @param {T} fragment the init fragment
35
- * @param {number} index index
36
- * @returns {[T, number]} tuple with both
37
- */
38
- const extractFragmentIndex = (fragment, index) => [fragment, index];
39
-
40
- /**
41
- * Sorts fragment with index.
42
- * @template T
43
- * @param {[MaybeMergeableInitFragment<T>, number]} a first pair
44
- * @param {[MaybeMergeableInitFragment<T>, number]} b second pair
45
- * @returns {number} sort value
46
- */
47
- const sortFragmentWithIndex = ([a, i], [b, j]) => {
48
- const stageCmp = a.stage - b.stage;
49
- if (stageCmp !== 0) return stageCmp;
50
- const positionCmp = a.position - b.position;
51
- if (positionCmp !== 0) return positionCmp;
52
- return i - j;
53
- };
54
-
55
35
  /**
56
36
  * Represents InitFragment.
57
37
  * @template GenerateContext
@@ -107,16 +87,28 @@ class InitFragment {
107
87
  */
108
88
  static addToSource(source, initFragments, context) {
109
89
  if (initFragments.length > 0) {
110
- // Sort fragments by position. If 2 fragments have the same position,
111
- // use their index.
112
- const sortedFragments = initFragments
113
- .map(extractFragmentIndex)
114
- .sort(sortFragmentWithIndex);
90
+ // Sort fragment indices by (stage, position), falling back to the
91
+ // original index — one flat number array instead of N [fragment, index]
92
+ // tuples for a stable-by-index order.
93
+ const sortedIndices = initFragments.map((_, index) => index);
94
+ sortedIndices.sort((a, b) => {
95
+ const fragmentA = initFragments[a];
96
+ const fragmentB = initFragments[b];
97
+ const stageCmp = fragmentA.stage - fragmentB.stage;
98
+ if (stageCmp !== 0) return stageCmp;
99
+ const positionCmp = fragmentA.position - fragmentB.position;
100
+ if (positionCmp !== 0) return positionCmp;
101
+ return a - b;
102
+ });
115
103
 
116
104
  // Deduplicate fragments. If a fragment has no key, it is always included.
117
- /** @type {Map<InitFragmentKey | symbol, MaybeMergeableInitFragment<Context> | MaybeMergeableInitFragment<Context>[]>} */
105
+ // Keyless fragments get a unique numeric key; number keys never collide
106
+ // with the string `InitFragmentKey`s used for keyed fragments.
107
+ /** @type {Map<InitFragmentKey | number, MaybeMergeableInitFragment<Context> | MaybeMergeableInitFragment<Context>[]>} */
118
108
  const keyedFragments = new Map();
119
- for (const [fragment] of sortedFragments) {
109
+ let keylessKey = 0;
110
+ for (const index of sortedIndices) {
111
+ const fragment = initFragments[index];
120
112
  if (typeof fragment.mergeAll === "function") {
121
113
  if (!fragment.key) {
122
114
  throw new Error(
@@ -142,7 +134,7 @@ class InitFragment {
142
134
  continue;
143
135
  }
144
136
  }
145
- keyedFragments.set(fragment.key || Symbol("fragment key"), fragment);
137
+ keyedFragments.set(fragment.key || keylessKey++, fragment);
146
138
  }
147
139
 
148
140
  const concatSource = new ConcatSource();
@@ -12,10 +12,14 @@ const {
12
12
  } = require("./ModuleTypeConstants");
13
13
  const { getInnerGraphUtils } = require("./optimize/InnerGraph");
14
14
 
15
- /** @typedef {import("./Compiler")} Compiler */
16
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
17
- /** @typedef {import("./javascript/JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
18
- /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
15
+ /** @import Compiler from "./Compiler" */
16
+ /** @import { BuildInfo } from "./Module" */
17
+ /**
18
+ * @import {
19
+ * JavascriptModuleBuildInfo
20
+ * } from "./javascript/JavascriptModule"
21
+ */
22
+ /** @import JavascriptParser from "./javascript/JavascriptParser" */
19
23
 
20
24
  const PLUGIN_NAME = "JavascriptMetaInfoPlugin";
21
25
 
@@ -36,6 +40,26 @@ class JavascriptMetaInfoPlugin {
36
40
  * @returns {void}
37
41
  */
38
42
  const handler = (parser) => {
43
+ parser.hooks.program.tap(PLUGIN_NAME, (ast) => {
44
+ // Nested blocks keep their own disposal scope, only a module-scope
45
+ // declaration ties disposal to the end of module evaluation.
46
+ if (
47
+ ast.body.some(
48
+ (statement) =>
49
+ statement.type === "VariableDeclaration" &&
50
+ (statement.kind === "using" ||
51
+ statement.kind === "await using")
52
+ )
53
+ ) {
54
+ const buildInfo =
55
+ /** @type {JavascriptModuleBuildInfo} */
56
+ (parser.state.module.buildInfo);
57
+ buildInfo.usesTopLevelUsingDeclaration = true;
58
+ // Concatenation would defer disposal to the enclosing scope.
59
+ buildInfo.moduleConcatenationBailout =
60
+ "a top-level using declaration";
61
+ }
62
+ });
39
63
  parser.hooks.call.for("eval").tap(PLUGIN_NAME, () => {
40
64
  const buildInfo =
41
65
  /** @type {JavascriptModuleBuildInfo} */
@@ -45,7 +69,14 @@ class JavascriptMetaInfoPlugin {
45
69
  if (currentSymbol) {
46
70
  innerGraph.addUsage(parser.state, null, currentSymbol);
47
71
  } else {
72
+ // Only worth reporting when the analysis was actually running
73
+ const wasEnabled = innerGraph.isEnabled(parser.state);
48
74
  innerGraph.bailout(parser.state);
75
+ if (wasEnabled) {
76
+ compilation.moduleGraph
77
+ .getOptimizationBailout(parser.state.module)
78
+ .push("Inner graph bailout: eval()");
79
+ }
49
80
  }
50
81
  });
51
82
  parser.hooks.finish.tap(PLUGIN_NAME, () => {
package/lib/LazyBarrel.js CHANGED
@@ -7,10 +7,9 @@
7
7
 
8
8
  const Dependency = require("./Dependency");
9
9
 
10
- /** @typedef {import("./Compilation")} Compilation */
11
- /** @typedef {import("./Compilation").DependencyConstructor} DependencyConstructor */
12
- /** @typedef {import("./Module")} Module */
13
- /** @typedef {import("./ModuleFactory")} ModuleFactory */
10
+ /** @import Compilation, { DependencyConstructor } from "./Compilation" */
11
+ /** @import Module from "./Module" */
12
+ /** @import ModuleFactory from "./ModuleFactory" */
14
13
 
15
14
  /**
16
15
  * Defines the deferred request group type used by this module.
@@ -7,12 +7,16 @@
7
7
 
8
8
  const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
9
9
 
10
- /** @typedef {import("../declarations/WebpackOptions").AuxiliaryComment} AuxiliaryComment */
11
- /** @typedef {import("../declarations/WebpackOptions").LibraryExport} LibraryExport */
12
- /** @typedef {import("../declarations/WebpackOptions").LibraryName} LibraryName */
13
- /** @typedef {import("../declarations/WebpackOptions").LibraryType} LibraryType */
14
- /** @typedef {import("../declarations/WebpackOptions").UmdNamedDefine} UmdNamedDefine */
15
- /** @typedef {import("./Compiler")} Compiler */
10
+ /**
11
+ * @import {
12
+ * AuxiliaryComment,
13
+ * LibraryExport,
14
+ * LibraryName,
15
+ * LibraryType,
16
+ * UmdNamedDefine
17
+ * } from "../declarations/WebpackOptions"
18
+ */
19
+ /** @import Compiler from "./Compiler" */
16
20
 
17
21
  // TODO webpack 6 remove
18
22
  class LibraryTemplatePlugin {
@@ -8,9 +8,13 @@
8
8
  const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
9
9
  const NormalModule = require("./NormalModule");
10
10
 
11
- /** @typedef {import("../declarations/plugins/LoaderOptionsPlugin").LoaderOptionsPluginOptions} LoaderOptionsPluginOptions */
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./ModuleFilenameHelpers").MatchObject} MatchObject */
11
+ /**
12
+ * @import {
13
+ * LoaderOptionsPluginOptions
14
+ * } from "../declarations/plugins/LoaderOptionsPlugin"
15
+ */
16
+ /** @import Compiler from "./Compiler" */
17
+ /** @import { MatchObject } from "./ModuleFilenameHelpers" */
14
18
 
15
19
  /**
16
20
  * Defines the loader context type used by this module.
@@ -7,7 +7,7 @@
7
7
 
8
8
  const NormalModule = require("./NormalModule");
9
9
 
10
- /** @typedef {import("./Compiler")} Compiler */
10
+ /** @import Compiler from "./Compiler" */
11
11
 
12
12
  const PLUGIN_NAME = "LoaderTargetPlugin";
13
13
 
@@ -8,39 +8,44 @@
8
8
  const util = require("util");
9
9
  const { SyncWaterfallHook } = require("tapable");
10
10
  const RuntimeGlobals = require("./RuntimeGlobals");
11
+ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
11
12
  const memoize = require("./util/memoize");
12
13
 
13
- /** @typedef {import("tapable").Tap} Tap */
14
- /** @typedef {import("webpack-sources").Source} Source */
15
- /** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
16
- /** @typedef {import("./ModuleTemplate")} ModuleTemplate */
17
- /** @typedef {import("./Chunk")} Chunk */
18
- /** @typedef {import("./Compilation")} Compilation */
19
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
20
- /** @typedef {import("./Compilation").InterpolatedPathAndAssetInfo} InterpolatedPathAndAssetInfo */
21
- /** @typedef {import("./util/Hash")} Hash */
22
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
23
- /** @typedef {import("./javascript/JavascriptModulesPlugin").RenderBootstrapContext} RenderBootstrapContext */
24
- /** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions */
25
- /** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry */
26
- /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
27
- /** @typedef {import("./TemplatedPathPlugin").PathData} PathData */
14
+ const getLoadScriptRuntimeModule = memoize(() =>
15
+ require("./runtime/LoadScriptRuntimeModule")
16
+ );
17
+
18
+ const getJsonpTemplatePlugin = memoize(() =>
19
+ require("./web/JsonpTemplatePlugin")
20
+ );
21
+
22
+ /** @import { Tap } from "tapable" */
23
+ /** @import { Source } from "webpack-sources" */
24
+ /** @import { Output as OutputOptions } from "../declarations/WebpackOptions" */
25
+ /** @import ModuleTemplate from "./ModuleTemplate" */
26
+ /** @import Chunk from "./Chunk" */
27
+ /**
28
+ * @import Compilation, {
29
+ * AssetInfo,
30
+ * InterpolatedPathAndAssetInfo,
31
+ * PathData
32
+ * } from "./Compilation"
33
+ */
34
+ /** @import Hash from "./util/Hash" */
35
+ /** @import DependencyTemplates from "./DependencyTemplates" */
36
+ /**
37
+ * @import {
38
+ * RenderBootstrapContext
39
+ * } from "./javascript/JavascriptModulesPlugin"
40
+ */
41
+ /** @import { RenderManifestOptions, RenderManifestEntry } from "./Template" */
42
+ /** @import { TemplatePath } from "./TemplatedPathPlugin" */
28
43
  /**
29
44
  * Defines the if set type used by this module.
30
45
  * @template T
31
46
  * @typedef {import("tapable").IfSet<T>} IfSet
32
47
  */
33
48
 
34
- const getJavascriptModulesPlugin = memoize(() =>
35
- require("./javascript/JavascriptModulesPlugin")
36
- );
37
- const getJsonpTemplatePlugin = memoize(() =>
38
- require("./web/JsonpTemplatePlugin")
39
- );
40
- const getLoadScriptRuntimeModule = memoize(() =>
41
- require("./runtime/LoadScriptRuntimeModule")
42
- );
43
-
44
49
  // TODO webpack 6 remove this class
45
50
  class MainTemplate {
46
51
  /**
@@ -96,9 +101,9 @@ class MainTemplate {
96
101
  * @param {(value: string, renderBootstrapContext: RenderBootstrapContext) => string} fn fn
97
102
  */
98
103
  (options, fn) => {
99
- getJavascriptModulesPlugin()
100
- .getCompilationHooks(compilation)
101
- .renderRequire.tap(options, fn);
104
+ JavascriptModulesPlugin.getCompilationHooks(
105
+ compilation
106
+ ).renderRequire.tap(options, fn);
102
107
  },
103
108
  "MainTemplate.hooks.require is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderRequire instead)",
104
109
  "DEP_WEBPACK_MAIN_TEMPLATE_REQUIRE"
@@ -134,9 +139,9 @@ class MainTemplate {
134
139
  * @param {(source: Source, chunk: Chunk, hash: string | undefined, moduleTemplate: ModuleTemplate, dependencyTemplates: DependencyTemplates) => Source} fn fn
135
140
  */
136
141
  (options, fn) => {
137
- getJavascriptModulesPlugin()
138
- .getCompilationHooks(compilation)
139
- .render.tap(options, (source, renderContext) => {
142
+ JavascriptModulesPlugin.getCompilationHooks(compilation).render.tap(
143
+ options,
144
+ (source, renderContext) => {
140
145
  if (
141
146
  renderContext.chunkGraph.getNumberOfEntryModules(
142
147
  renderContext.chunk
@@ -152,7 +157,8 @@ class MainTemplate {
152
157
  compilation.moduleTemplates.javascript,
153
158
  compilation.dependencyTemplates
154
159
  );
155
- });
160
+ }
161
+ );
156
162
  },
157
163
  "MainTemplate.hooks.render is deprecated (use JavascriptModulesPlugin.getCompilationHooks().render instead)",
158
164
  "DEP_WEBPACK_MAIN_TEMPLATE_RENDER"
@@ -167,9 +173,9 @@ class MainTemplate {
167
173
  * @param {(source: Source, chunk: Chunk, hash: string | undefined) => Source} fn fn
168
174
  */
169
175
  (options, fn) => {
170
- getJavascriptModulesPlugin()
171
- .getCompilationHooks(compilation)
172
- .render.tap(options, (source, renderContext) => {
176
+ JavascriptModulesPlugin.getCompilationHooks(compilation).render.tap(
177
+ options,
178
+ (source, renderContext) => {
173
179
  if (
174
180
  renderContext.chunkGraph.getNumberOfEntryModules(
175
181
  renderContext.chunk
@@ -179,7 +185,8 @@ class MainTemplate {
179
185
  return source;
180
186
  }
181
187
  return fn(source, renderContext.chunk, compilation.hash);
182
- });
188
+ }
189
+ );
183
190
  },
184
191
  "MainTemplate.hooks.renderWithEntry is deprecated (use JavascriptModulesPlugin.getCompilationHooks().render instead)",
185
192
  "DEP_WEBPACK_MAIN_TEMPLATE_RENDER_WITH_ENTRY"
@@ -235,12 +242,12 @@ class MainTemplate {
235
242
  * @param {(hash: Hash, chunk: Chunk) => void} fn fn
236
243
  */
237
244
  (options, fn) => {
238
- getJavascriptModulesPlugin()
239
- .getCompilationHooks(compilation)
240
- .chunkHash.tap(options, (chunk, hash) => {
241
- if (!chunk.hasRuntime()) return;
242
- return fn(hash, chunk);
243
- });
245
+ JavascriptModulesPlugin.getCompilationHooks(
246
+ compilation
247
+ ).chunkHash.tap(options, (chunk, hash) => {
248
+ if (!chunk.hasRuntime()) return;
249
+ return fn(hash, chunk);
250
+ });
244
251
  },
245
252
  "MainTemplate.hooks.hashForChunk is deprecated (use JavascriptModulesPlugin.getCompilationHooks().chunkHash instead)",
246
253
  "DEP_WEBPACK_MAIN_TEMPLATE_HASH_FOR_CHUNK"
@@ -9,17 +9,18 @@ const { RawSource } = require("webpack-sources");
9
9
  const Compilation = require("./Compilation");
10
10
  const HotUpdateChunk = require("./HotUpdateChunk");
11
11
 
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./Chunk")} Chunk */
14
- /** @typedef {import("./Chunk").ChunkName} ChunkName */
15
- /** @typedef {import("./Chunk").ChunkId} ChunkId */
16
- /** @typedef {import("./Compilation").Asset} Asset */
17
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
18
-
19
- /** @typedef {import("../declarations/plugins/ManifestPlugin").ManifestPluginOptions} ManifestPluginOptions */
20
- /** @typedef {import("../declarations/plugins/ManifestPlugin").ManifestObject} ManifestObject */
21
- /** @typedef {import("../declarations/plugins/ManifestPlugin").ManifestEntrypoint} ManifestEntrypoint */
22
- /** @typedef {import("../declarations/plugins/ManifestPlugin").ManifestItem} ManifestItem */
12
+ /** @import Compiler from "./Compiler" */
13
+ /** @import Chunk, { ChunkName, ChunkId } from "./Chunk" */
14
+ /** @import { AssetInfo } from "./Compilation" */
15
+
16
+ /**
17
+ * @import {
18
+ * ManifestPluginOptions,
19
+ * ManifestObject,
20
+ * ManifestEntrypoint,
21
+ * ManifestItem
22
+ * } from "../declarations/plugins/ManifestPlugin"
23
+ */
23
24
 
24
25
  /** @typedef {(item: ManifestItem) => boolean} Filter */
25
26
  /** @typedef {(manifest: ManifestObject) => ManifestObject} Generate */
package/lib/Module.js CHANGED
@@ -19,43 +19,53 @@ const { first } = require("./util/SetHelpers");
19
19
  const { compareChunksById } = require("./util/comparators");
20
20
  const makeSerializable = require("./util/makeSerializable");
21
21
 
22
- /** @typedef {import("webpack-sources").Source} Source */
23
- /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
24
- /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
25
- /** @typedef {import("./Chunk")} Chunk */
26
- /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
27
- /** @typedef {import("./ChunkGroup")} ChunkGroup */
28
- /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
29
- /** @typedef {import("./Compilation")} Compilation */
30
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
31
- /** @typedef {import("./Compilation").FileSystemDependencies} FileSystemDependencies */
32
- /** @typedef {import("./Compilation").UnsafeCacheData} UnsafeCacheData */
33
- /** @typedef {import("./ConcatenationScope")} ConcatenationScope */
34
- /** @typedef {import("./Dependency")} Dependency */
35
- /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
36
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
37
- /** @typedef {import("./ModuleSourceTypeConstants").AllTypes} AllTypes */
38
- /** @typedef {import("./FileSystemInfo")} FileSystemInfo */
39
- /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
40
- /** @typedef {import("./ModuleTypeConstants").ModuleTypes} ModuleTypes */
41
- /** @typedef {import("./ModuleGraph").OptimizationBailouts} OptimizationBailouts */
42
- /** @typedef {import("./ModuleProfile")} ModuleProfile */
43
- /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
44
- /** @typedef {import("./RequestShortener")} RequestShortener */
45
- /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
46
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
22
+ /** @import { Source } from "webpack-sources" */
23
+ /** @import { ResolveOptions } from "../declarations/WebpackOptions" */
24
+ /**
25
+ * @import {
26
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
27
+ * } from "./config/defaults"
28
+ */
29
+ /** @import Chunk from "./Chunk" */
30
+ /** @import { ModuleId } from "./ChunkGraph" */
31
+ /** @import ChunkGroup from "./ChunkGroup" */
32
+ /** @import CodeGenerationResults from "./CodeGenerationResults" */
33
+ /**
34
+ * @import Compilation, {
35
+ * AssetInfo,
36
+ * FileSystemDependencies,
37
+ * UnsafeCacheData
38
+ * } from "./Compilation"
39
+ */
40
+ /** @import ConcatenationScope from "./ConcatenationScope" */
41
+ /** @import Dependency, { UpdateHashContext } from "./Dependency" */
42
+ /** @import DependencyTemplates from "./DependencyTemplates" */
43
+ /** @import { AllTypes } from "./ModuleSourceTypeConstants" */
44
+ /** @import FileSystemInfo from "./FileSystemInfo" */
45
+ /** @import { ConnectionState } from "./ModuleGraphConnection" */
46
+ /** @import { ModuleTypes } from "./ModuleTypeConstants" */
47
+ /** @import { OptimizationBailouts } from "./ModuleGraph" */
48
+ /** @import ModuleProfile from "./ModuleProfile" */
49
+ /** @import NormalModuleFactory from "./NormalModuleFactory" */
50
+ /** @import RequestShortener from "./RequestShortener" */
51
+ /** @import { ResolverWithOptions } from "./ResolverFactory" */
52
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
47
53
  /**
48
54
  * Defines the init fragment type used by this module.
49
55
  * @template T
50
56
  * @typedef {import("./InitFragment")<T>} InitFragment
51
57
  */
52
- /** @typedef {import("./errors/WebpackError")} WebpackError */
53
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
54
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
55
- /** @typedef {import("./util/Hash")} Hash */
56
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
57
- /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
58
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
58
+ /** @import WebpackError from "./errors/WebpackError" */
59
+ /**
60
+ * @import {
61
+ * ObjectDeserializerContext,
62
+ * ObjectSerializerContext
63
+ * } from "./serialization/ObjectMiddleware"
64
+ */
65
+ /** @import Hash from "./util/Hash" */
66
+ /** @import { InputFileSystem } from "./util/fs" */
67
+ /** @import { AssociatedObjectForCache } from "./util/identifier" */
68
+ /** @import { RuntimeSpec } from "./util/runtime" */
59
69
  /**
60
70
  * @template T
61
71
  * @typedef {import("./util/SortableSet")<T>} SortableSet
@@ -173,6 +183,7 @@ const makeSerializable = require("./util/makeSerializable");
173
183
  * @property {boolean=} sideEffectFree
174
184
  * @property {Map<string, Record<string, string>>=} exportsFinalNameByRuntime using in ModuleLibraryPlugin
175
185
  * @property {Map<string, string>=} exportsSourceByRuntime using in ModuleLibraryPlugin
186
+ * @property {Map<string, string>=} exportsBindingSourceByRuntime export definitions `ModuleLibraryPlugin` took over, re-emitted only where the module is wrapped
176
187
  */
177
188
 
178
189
  /**
@@ -188,7 +199,10 @@ const makeSerializable = require("./util/makeSerializable");
188
199
  * @property {Map<string, AssetInfo | undefined>=} assetsInfo
189
200
  * @property {Set<string>=} topLevelDeclarations top level declaration names
190
201
  * @property {boolean=} isCircular true when the module is part of a circular dependency chain
191
- * @property {boolean=} usesTopLevelAwaitForOf module uses top-level `for await…of`, which can't be lowered to a generator
202
+ * @property {boolean=} usesEval true when the module calls `eval` directly
203
+ * @property {number=} ineffectivePureAnnotations how many `#__PURE__` annotations sit where the parser does not read them
204
+ * @property {number=} topLevelThis how many times the module reads `this` at its top level
205
+ * @property {boolean=} usesTopLevelAwaitForOf module uses top-level `for await…of` or `await using`, which can't be lowered to a generator
192
206
  */
193
207
 
194
208
  /** @typedef {string | Set<string>} ValueCacheVersion */
@@ -1250,6 +1264,21 @@ class Module extends DependenciesBlock {
1250
1264
  this.resolveOptions = undefined;
1251
1265
  }
1252
1266
 
1267
+ /**
1268
+ * Re-acquire factory-derived helpers (parser/generator) for an incremental
1269
+ * rebuild so this compilation's plugin hooks apply.
1270
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory
1271
+ * @returns {void}
1272
+ */
1273
+ _restoreParserAndGenerator(normalModuleFactory) {}
1274
+
1275
+ /**
1276
+ * Releases the cached parser between incremental rebuilds so it doesn't keep
1277
+ * the previous compilation alive.
1278
+ * @returns {void}
1279
+ */
1280
+ _cleanupParserForCache() {}
1281
+
1253
1282
  /**
1254
1283
  * Gets the original source.
1255
1284
  * @returns {Source | null} the original source for the module before webpack transformation
@@ -5,9 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
9
- /** @typedef {import("./Dependency")} Dependency */
10
- /** @typedef {import("./Module")} Module */
8
+ /** @import { ResolveOptions } from "../declarations/WebpackOptions" */
9
+ /** @import Dependency from "./Dependency" */
10
+ /** @import Module from "./Module" */
11
11
 
12
12
  /**
13
13
  * Defines the module factory result type used by this module.
@@ -10,10 +10,10 @@ const { DEFAULTS } = require("./config/defaults");
10
10
  const createHash = require("./util/createHash");
11
11
  const memoize = require("./util/memoize");
12
12
 
13
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
14
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
15
- /** @typedef {import("./Module")} Module */
16
- /** @typedef {import("./RequestShortener")} RequestShortener */
13
+ /** @import { HashFunction } from "../declarations/WebpackOptions" */
14
+ /** @import ChunkGraph from "./ChunkGraph" */
15
+ /** @import Module from "./Module" */
16
+ /** @import RequestShortener from "./RequestShortener" */
17
17
 
18
18
  /** @typedef {(str: string) => boolean} MatcherFn */
19
19
  /** @typedef {string | RegExp | MatcherFn | (string | RegExp | MatcherFn)[]} Matcher */
@@ -21,6 +21,11 @@ const memoize = require("./util/memoize");
21
21
 
22
22
  const ModuleFilenameHelpers = module.exports;
23
23
 
24
+ ModuleFilenameHelpers.DEFAULT_MODULE_FILENAME_TEMPLATE =
25
+ "webpack://[namespace]/[resourcePath]";
26
+ ModuleFilenameHelpers.DEFAULT_FALLBACK_MODULE_FILENAME_TEMPLATE =
27
+ "webpack://[namespace]/[resourcePath]?[hash]";
28
+
24
29
  // TODO webpack 6: consider removing these
25
30
  ModuleFilenameHelpers.ALL_LOADERS_RESOURCE = "[all-loaders][resource]";
26
31
  ModuleFilenameHelpers.REGEXP_ALL_LOADERS_RESOURCE =
@@ -169,11 +174,14 @@ ModuleFilenameHelpers.createFilename = (
169
174
  let moduleId;
170
175
  /** @type {ReturnStringCallback} */
171
176
  let shortIdentifier;
177
+ /** @type {ReturnStringCallback} */
178
+ let resourceIdentifier;
172
179
  if (typeof module === "string") {
173
180
  shortIdentifier =
174
181
  /** @type {ReturnStringCallback} */
175
182
  (memoize(() => requestShortener.shorten(module)));
176
183
  identifier = shortIdentifier;
184
+ resourceIdentifier = shortIdentifier;
177
185
  moduleId = () => "";
178
186
  absoluteResourcePath = () =>
179
187
  /** @type {string} */ (module.split("!").pop());
@@ -182,6 +190,14 @@ ModuleFilenameHelpers.createFilename = (
182
190
  shortIdentifier = memoize(() =>
183
191
  module.readableIdentifier(requestShortener)
184
192
  );
193
+ // `[resource]` and `[loaders]` must stay request paths: a subclass's
194
+ // readable identifier may carry display-only decorations (e.g. CssModule's
195
+ // `css ` prefix)
196
+ resourceIdentifier = memoize(() =>
197
+ module instanceof NormalModule
198
+ ? /** @type {string} */ (requestShortener.shorten(module.userRequest))
199
+ : module.readableIdentifier(requestShortener)
200
+ );
185
201
  identifier =
186
202
  /** @type {ReturnStringCallback} */
187
203
  (memoize(() => requestShortener.shorten(module.identifier())));
@@ -196,9 +212,9 @@ ModuleFilenameHelpers.createFilename = (
196
212
  }
197
213
  const resource =
198
214
  /** @type {ReturnStringCallback} */
199
- (memoize(() => shortIdentifier().split("!").pop()));
215
+ (memoize(() => resourceIdentifier().split("!").pop()));
200
216
 
201
- const loaders = getBefore(shortIdentifier, "!");
217
+ const loaders = getBefore(resourceIdentifier, "!");
202
218
  const allLoaders = getBefore(identifier, "!");
203
219
  const query = getAfter(resource, "?");
204
220
  const resourcePath = () => {