@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
@@ -16,20 +16,28 @@ const ImportDependency = require("./dependencies/ImportDependency");
16
16
  const { coreModules } = require("./node/nodeBuiltins");
17
17
  const { cachedSetProperty, resolveByProperty } = require("./util/cleverMerge");
18
18
 
19
- /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
20
- /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
21
- /** @typedef {import("../declarations/WebpackOptions").ExternalsType} ExternalsType */
22
- /** @typedef {import("../declarations/WebpackOptions").ExternalItem} ExternalItem */
23
- /** @typedef {import("../declarations/WebpackOptions").ExternalItemValue} ExternalItemValue */
24
- /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectKnown} ExternalItemObjectKnown */
25
- /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectUnknown} ExternalItemObjectUnknown */
26
- /** @typedef {import("../declarations/WebpackOptions").ExternalItemInterop} ExternalItemInterop */
27
- /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
28
- /** @typedef {import("./Dependency")} Dependency */
29
- /** @typedef {import("./ExternalModule").DependencyMeta} DependencyMeta */
30
- /** @typedef {import("./ModuleFactory").IssuerLayer} IssuerLayer */
31
- /** @typedef {import("./ModuleFactory").ModuleFactoryCreateDataContextInfo} ModuleFactoryCreateDataContextInfo */
32
- /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
19
+ /** @import { ResolveContext } from "enhanced-resolve" */
20
+ /**
21
+ * @import {
22
+ * ResolveOptions,
23
+ * ExternalsType,
24
+ * ExternalItem,
25
+ * ExternalItemValue,
26
+ * ExternalItemObjectKnown,
27
+ * ExternalItemObjectUnknown,
28
+ * ExternalItemInterop,
29
+ * Externals
30
+ * } from "../declarations/WebpackOptions"
31
+ */
32
+ /** @import Dependency from "./Dependency" */
33
+ /** @import { DependencyMeta, ExternalModuleRequest } from "./ExternalModule" */
34
+ /**
35
+ * @import {
36
+ * IssuerLayer,
37
+ * ModuleFactoryCreateDataContextInfo
38
+ * } from "./ModuleFactory"
39
+ */
40
+ /** @import NormalModuleFactory from "./NormalModuleFactory" */
33
41
 
34
42
  /** @typedef {((context: string, request: string, callback: (err?: Error | null, result?: string | false, resolveRequest?: import("enhanced-resolve").ResolveRequest) => void) => void)} ExternalItemFunctionDataGetResolveCallbackResult */
35
43
  /** @typedef {((context: string, request: string) => Promise<string>)} ExternalItemFunctionDataGetResolveResult */
@@ -43,6 +51,7 @@ const { cachedSetProperty, resolveByProperty } = require("./util/cleverMerge");
43
51
  * @property {string} dependencyType the category of the referencing dependency
44
52
  * @property {ExternalItemFunctionDataGetResolve} getResolve get a resolve function with the current resolver options
45
53
  * @property {string} request the request as written by the user in the require/import expression/statement
54
+ * @property {string} originalRequest same as `request`, except for an element of a context module (a request containing an expression), where it is the request as written by the user instead of the one relative to the resolved context directory
46
55
  */
47
56
 
48
57
  /** @typedef {((data: ExternalItemFunctionData, callback: (err?: (Error | null), result?: ExternalItemValue) => void) => void)} ExternalItemFunctionCallback */
@@ -115,7 +124,12 @@ const resolveLayer = (obj, layer) => {
115
124
  return result;
116
125
  };
117
126
 
118
- /** @typedef {string | string[] | boolean | Record<string, string | string[]>} ExternalValue */
127
+ // the keys `ExternalItemValueWithOptions` allows, mirroring the schema
128
+ const OPTIONS_FORM_KEYS = new Set(["external", "sideEffects"]);
129
+
130
+ /** @typedef {string | string[] | boolean | Record<string, string | string[]>} ExternalTargetValue */
131
+ /** @typedef {{ external: ExternalTargetValue, sideEffects?: boolean }} ExternalValueWithOptions */
132
+ /** @typedef {ExternalTargetValue | ExternalValueWithOptions} ExternalValue */
119
133
 
120
134
  const PLUGIN_NAME = "ExternalModuleFactoryPlugin";
121
135
 
@@ -145,6 +159,14 @@ class ExternalModuleFactoryPlugin {
145
159
  const contextInfo = data.contextInfo;
146
160
  const dependency = data.dependencies[0];
147
161
  const dependencyType = data.dependencyType;
162
+ const request = dependency.request;
163
+ // a context element's request is relative to the resolved directory
164
+ // (`./file.mjs`), externals are written against what the user wrote
165
+ const originalRequest =
166
+ dependency instanceof ContextElementDependency
167
+ ? dependency.originalRequest
168
+ : request;
169
+ const hasOriginalRequest = originalRequest !== request;
148
170
 
149
171
  /** @typedef {(err?: Error | null, externalModule?: ExternalModule) => void} HandleExternalCallback */
150
172
 
@@ -156,12 +178,33 @@ class ExternalModuleFactoryPlugin {
156
178
  * @returns {void}
157
179
  */
158
180
  const handleExternal = (value, type, callback) => {
159
- if (value === false) {
181
+ /** @type {boolean | undefined} */
182
+ let sideEffects;
183
+ /** @type {ExternalTargetValue} */
184
+ let target;
185
+ // the options form carries the target under `external`; a target
186
+ // map holding an `external` type key keeps its own meaning
187
+ if (
188
+ typeof value === "object" &&
189
+ value !== null &&
190
+ !Array.isArray(value) &&
191
+ Object.prototype.hasOwnProperty.call(value, "external") &&
192
+ Object.keys(value).every((key) => OPTIONS_FORM_KEYS.has(key))
193
+ ) {
194
+ const withOptions =
195
+ /** @type {ExternalValueWithOptions} */
196
+ (value);
197
+ sideEffects = withOptions.sideEffects;
198
+ target = withOptions.external;
199
+ } else {
200
+ target = /** @type {ExternalTargetValue} */ (value);
201
+ }
202
+ if (target === false) {
160
203
  // Not externals, fallback to original factory
161
204
  return callback();
162
205
  }
163
- /** @type {ExternalValue} */
164
- let externalConfig = value === true ? dependency.request : value;
206
+ /** @type {ExternalModuleRequest} */
207
+ let externalConfig = target === true ? originalRequest : target;
165
208
  // `interop` is a reserved key on the object form, not a target;
166
209
  // pull it out so the rest stays a pure externalsType->request map.
167
210
  /** @type {ExternalItemInterop | undefined} */
@@ -244,8 +287,12 @@ class ExternalModuleFactoryPlugin {
244
287
  };
245
288
  }
246
289
 
290
+ // a css `url()` reads the url out of the external: no js wrapper
291
+ // TODO webpack 6 drop "css-url" once the alias is removed
247
292
  if (
248
- resolvedType === "asset" &&
293
+ (resolvedType === "asset" ||
294
+ resolvedType === ASSET_URL_TYPE ||
295
+ resolvedType === "css-url") &&
249
296
  dependency instanceof CssUrlDependency
250
297
  ) {
251
298
  dependencyMeta = { sourceType: ASSET_URL_TYPE };
@@ -256,9 +303,10 @@ class ExternalModuleFactoryPlugin {
256
303
  new ExternalModule(
257
304
  externalConfig,
258
305
  resolvedType,
259
- dependency.request,
306
+ originalRequest,
260
307
  dependencyMeta,
261
- interop
308
+ interop,
309
+ sideEffects
262
310
  )
263
311
  );
264
312
  };
@@ -272,10 +320,11 @@ class ExternalModuleFactoryPlugin {
272
320
  const handleExternals = (externals, callback) => {
273
321
  if (typeof externals === "string") {
274
322
  if (
275
- externals === dependency.request ||
276
- externals === getAlternateCoreModuleRequest(dependency.request)
323
+ externals === request ||
324
+ (hasOriginalRequest && externals === originalRequest) ||
325
+ externals === getAlternateCoreModuleRequest(request)
277
326
  ) {
278
- return handleExternal(dependency.request, undefined, callback);
327
+ return handleExternal(originalRequest, undefined, callback);
279
328
  }
280
329
  } else if (Array.isArray(externals)) {
281
330
  let i = 0;
@@ -311,8 +360,11 @@ class ExternalModuleFactoryPlugin {
311
360
  next();
312
361
  return;
313
362
  } else if (externals instanceof RegExp) {
314
- if (externals.test(dependency.request)) {
315
- return handleExternal(dependency.request, undefined, callback);
363
+ if (
364
+ externals.test(request) ||
365
+ (hasOriginalRequest && externals.test(originalRequest))
366
+ ) {
367
+ return handleExternal(originalRequest, undefined, callback);
316
368
  }
317
369
  } else if (typeof externals === "function") {
318
370
  /**
@@ -332,17 +384,13 @@ class ExternalModuleFactoryPlugin {
332
384
  };
333
385
  if (externals.length === 3) {
334
386
  // TODO webpack 6 remove this
335
- callDeprecatedExternals(
336
- externals,
337
- context,
338
- dependency.request,
339
- cb
340
- );
387
+ callDeprecatedExternals(externals, context, request, cb);
341
388
  } else {
342
389
  const promise = externals(
343
390
  {
344
391
  context,
345
- request: dependency.request,
392
+ request,
393
+ originalRequest,
346
394
  dependencyType,
347
395
  contextInfo,
348
396
  getResolve: (options) => (context, request, callback) => {
@@ -401,21 +449,29 @@ class ExternalModuleFactoryPlugin {
401
449
  (contextInfo.issuerLayer)
402
450
  );
403
451
  if (
452
+ Object.prototype.hasOwnProperty.call(resolvedExternals, request)
453
+ ) {
454
+ return handleExternal(
455
+ resolvedExternals[request],
456
+ undefined,
457
+ callback
458
+ );
459
+ }
460
+ if (
461
+ hasOriginalRequest &&
404
462
  Object.prototype.hasOwnProperty.call(
405
463
  resolvedExternals,
406
- dependency.request
464
+ originalRequest
407
465
  )
408
466
  ) {
409
467
  return handleExternal(
410
- resolvedExternals[dependency.request],
468
+ resolvedExternals[originalRequest],
411
469
  undefined,
412
470
  callback
413
471
  );
414
472
  }
415
473
  // Fall back to the `node:`-prefixed/unprefixed core module form.
416
- const alternateRequest = getAlternateCoreModuleRequest(
417
- dependency.request
418
- );
474
+ const alternateRequest = getAlternateCoreModuleRequest(request);
419
475
  if (
420
476
  alternateRequest !== undefined &&
421
477
  Object.prototype.hasOwnProperty.call(
@@ -439,4 +495,7 @@ class ExternalModuleFactoryPlugin {
439
495
  }
440
496
  }
441
497
 
498
+ ExternalModuleFactoryPlugin.getAlternateCoreModuleRequest =
499
+ getAlternateCoreModuleRequest;
500
+
442
501
  module.exports = ExternalModuleFactoryPlugin;
@@ -9,11 +9,15 @@ const { ModuleExternalInitFragment } = require("./ExternalModule");
9
9
  const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
10
10
  const ConcatenatedModule = require("./optimize/ConcatenatedModule");
11
11
 
12
- /** @typedef {import("../declarations/WebpackOptions").ExternalsType} ExternalsType */
13
- /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
14
- /** @typedef {import("./Compiler")} Compiler */
15
- /** @typedef {import("./ExternalModule").Imported} Imported */
16
- /** @typedef {import("./Dependency")} Dependency */
12
+ /**
13
+ * @import {
14
+ * ExternalsType,
15
+ * Externals
16
+ * } from "../declarations/WebpackOptions"
17
+ */
18
+ /** @import Compiler from "./Compiler" */
19
+ /** @import { Imported } from "./ExternalModule" */
20
+ /** @import Dependency from "./Dependency" */
17
21
 
18
22
  const PLUGIN_NAME = "ExternalsPlugin";
19
23
 
@@ -53,7 +57,7 @@ class ExternalsPlugin {
53
57
 
54
58
  const chunkInitFragments = moduleInfo.chunkInitFragments;
55
59
  const moduleExternalInitFragments =
56
- /** @type {ModuleExternalInitFragment[]} */
60
+ /** @type {InstanceType<ModuleExternalInitFragment>[]} */
57
61
  (
58
62
  chunkInitFragments
59
63
  ? /** @type {unknown[]} */
@@ -10,6 +10,7 @@ const { isAbsolute } = require("path");
10
10
  const { create: createResolver } = require("enhanced-resolve");
11
11
  const asyncLib = require("neo-async");
12
12
  const { DEFAULTS } = require("./config/defaults");
13
+ const { collectCjsRequireSpecifiers } = require("./javascript/syntax");
13
14
  const AsyncQueue = require("./util/AsyncQueue");
14
15
  const StackedCacheMap = require("./util/StackedCacheMap");
15
16
  const createHash = require("./util/createHash");
@@ -18,16 +19,20 @@ const makeSerializable = require("./util/makeSerializable");
18
19
  const memoize = require("./util/memoize");
19
20
  const processAsyncTree = require("./util/processAsyncTree");
20
21
 
21
- /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
22
- /** @typedef {import("enhanced-resolve").ResolveFunctionAsync} ResolveFunctionAsync */
23
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
24
- /** @typedef {import("./logging/Logger").Logger} Logger */
25
- /** @typedef {import("./errors/WebpackError")} WebpackError */
26
- /** @typedef {import("./util/fs").JsonObject} JsonObject */
27
- /** @typedef {import("./util/fs").IStats} IStats */
28
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
29
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
30
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
22
+ // only the mjs build-dependency walk needs it
23
+ const getEsModuleLexer = memoize(() => require("es-module-lexer"));
24
+
25
+ /** @import { ResolveRequest, ResolveFunctionAsync } from "enhanced-resolve" */
26
+ /** @import { HashFunction } from "../declarations/WebpackOptions" */
27
+ /** @import { Logger } from "./logging/Logger" */
28
+ /** @import WebpackError from "./errors/WebpackError" */
29
+ /** @import { JsonObject, IStats, InputFileSystem } from "./util/fs" */
30
+ /**
31
+ * @import {
32
+ * ObjectDeserializerContext,
33
+ * ObjectSerializerContext
34
+ * } from "./serialization/ObjectMiddleware"
35
+ */
31
36
  /**
32
37
  * Defines the processor callback type used by this module.
33
38
  * @template T
@@ -297,6 +302,22 @@ class SnapshotIterable {
297
302
  /** @typedef {Set<string>} ManagedMissing */
298
303
  /** @typedef {Set<Snapshot>} Children */
299
304
 
305
+ // `Snapshot._flags` bit for each optional field. Serialized as a whole integer,
306
+ // so these values are a persisted-cache format contract — never renumber them.
307
+ const SNAPSHOT_FLAG_START_TIME = 1;
308
+ const SNAPSHOT_FLAG_FILE_TIMESTAMPS = 2;
309
+ const SNAPSHOT_FLAG_FILE_HASHES = 4;
310
+ const SNAPSHOT_FLAG_FILE_TSHS = 8;
311
+ const SNAPSHOT_FLAG_CONTEXT_TIMESTAMPS = 0x10;
312
+ const SNAPSHOT_FLAG_CONTEXT_HASHES = 0x20;
313
+ const SNAPSHOT_FLAG_CONTEXT_TSHS = 0x40;
314
+ const SNAPSHOT_FLAG_MISSING_EXISTENCE = 0x80;
315
+ const SNAPSHOT_FLAG_MANAGED_ITEM_INFO = 0x100;
316
+ const SNAPSHOT_FLAG_MANAGED_FILES = 0x200;
317
+ const SNAPSHOT_FLAG_MANAGED_CONTEXTS = 0x400;
318
+ const SNAPSHOT_FLAG_MANAGED_MISSING = 0x800;
319
+ const SNAPSHOT_FLAG_CHILDREN = 0x1000;
320
+
300
321
  class Snapshot {
301
322
  constructor() {
302
323
  /** @type {number} */
@@ -336,7 +357,7 @@ class Snapshot {
336
357
  }
337
358
 
338
359
  hasStartTime() {
339
- return (this._flags & 1) !== 0;
360
+ return (this._flags & SNAPSHOT_FLAG_START_TIME) !== 0;
340
361
  }
341
362
 
342
363
  /**
@@ -344,7 +365,7 @@ class Snapshot {
344
365
  * @param {number} value start value
345
366
  */
346
367
  setStartTime(value) {
347
- this._flags |= 1;
368
+ this._flags |= SNAPSHOT_FLAG_START_TIME;
348
369
  this.startTime = value;
349
370
  }
350
371
 
@@ -375,7 +396,7 @@ class Snapshot {
375
396
  }
376
397
 
377
398
  hasFileTimestamps() {
378
- return (this._flags & 2) !== 0;
399
+ return (this._flags & SNAPSHOT_FLAG_FILE_TIMESTAMPS) !== 0;
379
400
  }
380
401
 
381
402
  /**
@@ -383,12 +404,12 @@ class Snapshot {
383
404
  * @param {FileTimestamps} value file timestamps
384
405
  */
385
406
  setFileTimestamps(value) {
386
- this._flags |= 2;
407
+ this._flags |= SNAPSHOT_FLAG_FILE_TIMESTAMPS;
387
408
  this.fileTimestamps = value;
388
409
  }
389
410
 
390
411
  hasFileHashes() {
391
- return (this._flags & 4) !== 0;
412
+ return (this._flags & SNAPSHOT_FLAG_FILE_HASHES) !== 0;
392
413
  }
393
414
 
394
415
  /**
@@ -396,12 +417,12 @@ class Snapshot {
396
417
  * @param {FileHashes} value file hashes
397
418
  */
398
419
  setFileHashes(value) {
399
- this._flags |= 4;
420
+ this._flags |= SNAPSHOT_FLAG_FILE_HASHES;
400
421
  this.fileHashes = value;
401
422
  }
402
423
 
403
424
  hasFileTshs() {
404
- return (this._flags & 8) !== 0;
425
+ return (this._flags & SNAPSHOT_FLAG_FILE_TSHS) !== 0;
405
426
  }
406
427
 
407
428
  /**
@@ -409,12 +430,12 @@ class Snapshot {
409
430
  * @param {FileTshs} value file tshs
410
431
  */
411
432
  setFileTshs(value) {
412
- this._flags |= 8;
433
+ this._flags |= SNAPSHOT_FLAG_FILE_TSHS;
413
434
  this.fileTshs = value;
414
435
  }
415
436
 
416
437
  hasContextTimestamps() {
417
- return (this._flags & 0x10) !== 0;
438
+ return (this._flags & SNAPSHOT_FLAG_CONTEXT_TIMESTAMPS) !== 0;
418
439
  }
419
440
 
420
441
  /**
@@ -422,12 +443,12 @@ class Snapshot {
422
443
  * @param {ContextTimestamps} value context timestamps
423
444
  */
424
445
  setContextTimestamps(value) {
425
- this._flags |= 0x10;
446
+ this._flags |= SNAPSHOT_FLAG_CONTEXT_TIMESTAMPS;
426
447
  this.contextTimestamps = value;
427
448
  }
428
449
 
429
450
  hasContextHashes() {
430
- return (this._flags & 0x20) !== 0;
451
+ return (this._flags & SNAPSHOT_FLAG_CONTEXT_HASHES) !== 0;
431
452
  }
432
453
 
433
454
  /**
@@ -435,12 +456,12 @@ class Snapshot {
435
456
  * @param {ContextHashes} value context hashes
436
457
  */
437
458
  setContextHashes(value) {
438
- this._flags |= 0x20;
459
+ this._flags |= SNAPSHOT_FLAG_CONTEXT_HASHES;
439
460
  this.contextHashes = value;
440
461
  }
441
462
 
442
463
  hasContextTshs() {
443
- return (this._flags & 0x40) !== 0;
464
+ return (this._flags & SNAPSHOT_FLAG_CONTEXT_TSHS) !== 0;
444
465
  }
445
466
 
446
467
  /**
@@ -448,12 +469,12 @@ class Snapshot {
448
469
  * @param {ContextTshs} value context tshs
449
470
  */
450
471
  setContextTshs(value) {
451
- this._flags |= 0x40;
472
+ this._flags |= SNAPSHOT_FLAG_CONTEXT_TSHS;
452
473
  this.contextTshs = value;
453
474
  }
454
475
 
455
476
  hasMissingExistence() {
456
- return (this._flags & 0x80) !== 0;
477
+ return (this._flags & SNAPSHOT_FLAG_MISSING_EXISTENCE) !== 0;
457
478
  }
458
479
 
459
480
  /**
@@ -461,12 +482,12 @@ class Snapshot {
461
482
  * @param {MissingExistence} value context tshs
462
483
  */
463
484
  setMissingExistence(value) {
464
- this._flags |= 0x80;
485
+ this._flags |= SNAPSHOT_FLAG_MISSING_EXISTENCE;
465
486
  this.missingExistence = value;
466
487
  }
467
488
 
468
489
  hasManagedItemInfo() {
469
- return (this._flags & 0x100) !== 0;
490
+ return (this._flags & SNAPSHOT_FLAG_MANAGED_ITEM_INFO) !== 0;
470
491
  }
471
492
 
472
493
  /**
@@ -474,12 +495,12 @@ class Snapshot {
474
495
  * @param {ManagedItemInfo} value managed item info
475
496
  */
476
497
  setManagedItemInfo(value) {
477
- this._flags |= 0x100;
498
+ this._flags |= SNAPSHOT_FLAG_MANAGED_ITEM_INFO;
478
499
  this.managedItemInfo = value;
479
500
  }
480
501
 
481
502
  hasManagedFiles() {
482
- return (this._flags & 0x200) !== 0;
503
+ return (this._flags & SNAPSHOT_FLAG_MANAGED_FILES) !== 0;
483
504
  }
484
505
 
485
506
  /**
@@ -487,12 +508,12 @@ class Snapshot {
487
508
  * @param {ManagedFiles} value managed files
488
509
  */
489
510
  setManagedFiles(value) {
490
- this._flags |= 0x200;
511
+ this._flags |= SNAPSHOT_FLAG_MANAGED_FILES;
491
512
  this.managedFiles = value;
492
513
  }
493
514
 
494
515
  hasManagedContexts() {
495
- return (this._flags & 0x400) !== 0;
516
+ return (this._flags & SNAPSHOT_FLAG_MANAGED_CONTEXTS) !== 0;
496
517
  }
497
518
 
498
519
  /**
@@ -500,12 +521,12 @@ class Snapshot {
500
521
  * @param {ManagedContexts} value managed contexts
501
522
  */
502
523
  setManagedContexts(value) {
503
- this._flags |= 0x400;
524
+ this._flags |= SNAPSHOT_FLAG_MANAGED_CONTEXTS;
504
525
  this.managedContexts = value;
505
526
  }
506
527
 
507
528
  hasManagedMissing() {
508
- return (this._flags & 0x800) !== 0;
529
+ return (this._flags & SNAPSHOT_FLAG_MANAGED_MISSING) !== 0;
509
530
  }
510
531
 
511
532
  /**
@@ -513,12 +534,12 @@ class Snapshot {
513
534
  * @param {ManagedMissing} value managed missing
514
535
  */
515
536
  setManagedMissing(value) {
516
- this._flags |= 0x800;
537
+ this._flags |= SNAPSHOT_FLAG_MANAGED_MISSING;
517
538
  this.managedMissing = value;
518
539
  }
519
540
 
520
541
  hasChildren() {
521
- return (this._flags & 0x1000) !== 0;
542
+ return (this._flags & SNAPSHOT_FLAG_CHILDREN) !== 0;
522
543
  }
523
544
 
524
545
  /**
@@ -526,7 +547,7 @@ class Snapshot {
526
547
  * @param {Children} value children
527
548
  */
528
549
  setChildren(value) {
529
- this._flags |= 0x1000;
550
+ this._flags |= SNAPSHOT_FLAG_CHILDREN;
530
551
  this.children = value;
531
552
  }
532
553
 
@@ -1186,6 +1207,15 @@ const getManagedItem = (managedPath, path) => {
1186
1207
  return path.slice(0, i);
1187
1208
  };
1188
1209
 
1210
+ /**
1211
+ * The managed directory a `snapshot.managedPaths` RegExp matched. The schema
1212
+ * documents it as matching that directory, so a capture-less pattern is it.
1213
+ * @param {RegExpExecArray} match a match of a managed path RegExp
1214
+ * @returns {string} the managed directory
1215
+ */
1216
+ const getManagedPathFromMatch = (match) =>
1217
+ match[1] === undefined ? match[0] : match[1];
1218
+
1189
1219
  /**
1190
1220
  * Gets resolved timestamp.
1191
1221
  * @template {ContextFileSystemInfoEntry | ContextTimestampAndHash} T
@@ -1219,7 +1249,9 @@ const addAll = (source, target) => {
1219
1249
  for (const key of source) target.add(key);
1220
1250
  };
1221
1251
 
1222
- const getEsModuleLexer = memoize(() => require("es-module-lexer"));
1252
+ // Bun doesn't populate `require.cache` `module.children`, so the CJS build-dependency
1253
+ // walk needs a source-parsing fallback there. Node/Deno populate it — never pay for it.
1254
+ const IS_BUN = Boolean(process.versions.bun);
1223
1255
 
1224
1256
  /** @typedef {Set<string>} LoggedPaths */
1225
1257
 
@@ -2213,6 +2245,36 @@ class FileSystemInfo {
2213
2245
  });
2214
2246
  }
2215
2247
  }
2248
+ // On Bun the children array is empty (unpopulated), so recover the
2249
+ // static require() specifiers by parsing the source; Node/Deno don't.
2250
+ /* istanbul ignore next */
2251
+ if (IS_BUN && module.children.length === 0) {
2252
+ this.fs.readFile(path, (err, content) => {
2253
+ if (err) return callback(err);
2254
+ try {
2255
+ const context = dirname(this.fs, path);
2256
+ const source = /** @type {Buffer} */ (content).toString();
2257
+ for (const dependency of collectCjsRequireSpecifiers(
2258
+ source
2259
+ )) {
2260
+ if (dependency.startsWith("node:")) continue;
2261
+ if (builtinModules.has(dependency)) continue;
2262
+ push({
2263
+ type: RBDT_RESOLVE_CJS_FILE,
2264
+ context,
2265
+ path: dependency,
2266
+ // Best effort: tolerate specifiers that don't resolve.
2267
+ expected: false,
2268
+ issuer: job
2269
+ });
2270
+ }
2271
+ } catch (_err) {
2272
+ // Source we can't parse as CommonJS — ignore its dependencies.
2273
+ }
2274
+ process.nextTick(callback);
2275
+ });
2276
+ break;
2277
+ }
2216
2278
  } else if (supportsEsm && /\.m?js$/.test(path)) {
2217
2279
  if (!this._warnAboutExperimentalEsmTracking) {
2218
2280
  logger.log(
@@ -2610,7 +2672,10 @@ class FileSystemInfo {
2610
2672
  for (const managedPath of this.managedPathsRegExps) {
2611
2673
  const match = managedPath.exec(path);
2612
2674
  if (match) {
2613
- const managedItem = getManagedItem(match[1], path);
2675
+ const managedItem = getManagedItem(
2676
+ getManagedPathFromMatch(match),
2677
+ path
2678
+ );
2614
2679
  if (managedItem) {
2615
2680
  classificationCache.set(path, managedItem);
2616
2681
  managedItems.add(managedItem);
@@ -3868,7 +3933,10 @@ class FileSystemInfo {
3868
3933
  for (const managedPath of this.managedPathsRegExps) {
3869
3934
  const match = managedPath.exec(path);
3870
3935
  if (match) {
3871
- const managedItem = getManagedItem(match[1], path);
3936
+ const managedItem = getManagedItem(
3937
+ getManagedPathFromMatch(match),
3938
+ path
3939
+ );
3872
3940
  if (managedItem) {
3873
3941
  // construct timestampHash from managed info
3874
3942
  return this.managedItemQueue.add(managedItem, (err, info) => {
@@ -4232,12 +4300,17 @@ class FileSystemInfo {
4232
4300
  /**
4233
4301
  * Processes the provided timestamp.
4234
4302
  * @param {ContextTimestamp} timestamp timestamp
4235
- * @param {ContextHash} hash hash
4303
+ * @param {ContextHash | null} hash hash
4236
4304
  */
4237
4305
  const finalize = (timestamp, hash) => {
4306
+ // Merging two `null` reads yields `{}`, which reads as "exists, no hash" (#21636)
4238
4307
  const result =
4239
4308
  /** @type {ContextTimestampAndHash} */
4240
- (timestamp === "ignore" ? hash : { ...timestamp, ...hash });
4309
+ (
4310
+ hash === null || timestamp === "ignore"
4311
+ ? hash
4312
+ : { ...timestamp, ...hash }
4313
+ );
4241
4314
  this._contextTshs.set(path, result);
4242
4315
  callback(null, result);
4243
4316
  };
@@ -4555,5 +4628,6 @@ class FileSystemInfo {
4555
4628
  }
4556
4629
  }
4557
4630
 
4631
+ FileSystemInfo.Snapshot = Snapshot;
4632
+
4558
4633
  module.exports = FileSystemInfo;
4559
- module.exports.Snapshot = Snapshot;
@@ -7,9 +7,8 @@
7
7
 
8
8
  const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
9
9
 
10
- /** @typedef {import("./Compiler")} Compiler */
11
- /** @typedef {import("./Module").FactoryMeta} FactoryMeta */
12
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
10
+ /** @import Compiler from "./Compiler" */
11
+ /** @import { RuntimeSpec } from "./util/runtime" */
13
12
 
14
13
  const PLUGIN_NAME = "FlagAllModulesAsUsedPlugin";
15
14
  class FlagAllModulesAsUsedPlugin {